<?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>217162</bug_id>
          
          <creation_ts>2020-09-30 19:37:32 -0700</creation_ts>
          <short_desc>[WebIDL] Add support for non-nullable optional wrapper type arguments to operations</short_desc>
          <delta_ts>2020-11-19 09:06:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <dependson>219165</dependson>
          <blocked>171589</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1693627</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-30 19:37:32 -0700</bug_when>
    <thetext>[WebIDL] Add support for non-nullable optional wrapper type arguments to operations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693633</commentid>
    <comment_count>1</comment_count>
      <attachid>410197</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-30 19:54:16 -0700</bug_when>
    <thetext>Created attachment 410197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693774</commentid>
    <comment_count>2</comment_count>
      <attachid>410241</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-01 09:53:25 -0700</bug_when>
    <thetext>Created attachment 410241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693775</commentid>
    <comment_count>3</comment_count>
      <attachid>410241</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-01 09:54:27 -0700</bug_when>
    <thetext>Comment on attachment 410241
Patch

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

&gt; LayoutTests/ChangeLog:12
&gt; +2020-09-30  Sam Weinig  &lt;weinig@apple.com&gt;

double changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693801</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-01 11:24:11 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; Comment on attachment 410241 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=410241&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:12
&gt; &gt; +2020-09-30  Sam Weinig  &lt;weinig@apple.com&gt;
&gt; 
&gt; double changelog.

No really close to ready for review yet. Just using the bots to build things for me while my computer is busy :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693803</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-01 11:25:08 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #4)
&gt; (In reply to Chris Dumez from comment #3)
&gt; &gt; Comment on attachment 410241 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=410241&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; LayoutTests/ChangeLog:12
&gt; &gt; &gt; +2020-09-30  Sam Weinig  &lt;weinig@apple.com&gt;
&gt; &gt; 
&gt; &gt; double changelog.
&gt; 
&gt; No really close to ready for review yet. Just using the bots to build things
&gt; for me while my computer is busy :).

Yeah but I got curious and could not help but look :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693806</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-01 11:29:28 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; (In reply to Sam Weinig from comment #4)
&gt; &gt; (In reply to Chris Dumez from comment #3)
&gt; &gt; &gt; Comment on attachment 410241 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=410241&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; LayoutTests/ChangeLog:12
&gt; &gt; &gt; &gt; +2020-09-30  Sam Weinig  &lt;weinig@apple.com&gt;
&gt; &gt; &gt; 
&gt; &gt; &gt; double changelog.
&gt; &gt; 
&gt; &gt; No really close to ready for review yet. Just using the bots to build things
&gt; &gt; for me while my computer is busy :).
&gt; 
&gt; Yeah but I got curious and could not help but look :P

It was good, I probably would have missed it :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693807</commentid>
    <comment_count>7</comment_count>
      <attachid>410246</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-01 11:29:36 -0700</bug_when>
    <thetext>Created attachment 410246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693823</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-01 12:06:03 -0700</bug_when>
    <thetext>I think it should be ready for review now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693831</commentid>
    <comment_count>9</comment_count>
      <attachid>410246</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-01 12:21:52 -0700</bug_when>
    <thetext>Comment on attachment 410246
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693918</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-01 16:22:04 -0700</bug_when>
    <thetext>Re-running Mac-wk2 EWS since I think the failing test is unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693951</commentid>
    <comment_count>11</comment_count>
      <attachid>410293</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-01 17:57:06 -0700</bug_when>
    <thetext>Created attachment 410293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693963</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-01 18:42:20 -0700</bug_when>
    <thetext>Committed r267865: &lt;https://trac.webkit.org/changeset/267865&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410293.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709129</commentid>
    <comment_count>13</comment_count>
      <attachid>410293</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-11-19 08:56:08 -0800</bug_when>
    <thetext>Comment on attachment 410293
Patch

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

&gt; Source/WebCore/Modules/geolocation/Geolocation.idl:-35
&gt; -                            optional PositionErrorCallback? errorCallback,

I don&apos;t think we should have made those changes. Those parameters are nullable in both Firefox and Chrome. Also, there are WPT tests that fail unless this parameter is nullable. I am planning on reverting the changes to Geolocation.idl as a result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709130</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-19 08:56:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/71588509&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410197</attachid>
            <date>2020-09-30 19:54:16 -0700</date>
            <delta_ts>2020-10-01 09:53:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217162-20200930195415.patch</filename>
            <type>text/plain</type>
            <size>13174</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzgxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDIwLTA5LTMwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBBZGQgc3VwcG9ydCBm
b3Igbm9uLW51bGxhYmxlIG9wdGlvbmFsIHdyYXBwZXIgdHlwZSBhcmd1bWVudHMgdG8gb3BlcmF0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3
MTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAg
ICAgICBUaGUgYmluZGluZ3MgY3VycmVudGx5IHRyZWF0IGJvdGggbnVsbGFibGUgYW5kIG9wdGlv
bmFsIHdyYXBwZXIgdHlwZXMgYXMKKyAgICAgICAgaGF2aW5nIHR5cGUgV3JhcHBlclR5cGUqLCB3
aGVyZWFzIG5vbi1udWxsYWJsZSwgbm9uLW9wdGlvbmFsIHdyYXBwZXIgdHlwZXMKKyAgICAgICAg
YXJlIHRyZWF0ZWQgYXMgaGF2aW5nIHR5cGUgV3JhcHBlclR5cGUmLiBUaGlzIHBhcmFsbGVscyBu
b24gd3JhcHBlciB0eXBlcworICAgICAgICB3aGljaCB1c2UgT3B0aW9uYWw8VHlwZT4gZm9yIGJv
dGggbnVsbGFibGUgYW5kIG9wdGlvbmFsIHZzIFR5cGUgZm9yIHRoZQorICAgICAgICBub24tbnVs
bGFibGUgbm9uLW9wdGlvbmFsIHZhcmlhbnQuIEluIGJvdGggdGhlc2UgY2FzZXMsIHRoZXJlIGlz
IHBvc3NpYmlsaXR5CisgICAgICAgIGZvciBhbWJpZ3VpdHksIHNob3VsZCB3ZSBldmVyIG5lZWQg
dG8gZGlzYW1iaWd1YXRlIGJldHdlZW4gbnVsbGFibGUgYW5kIAorICAgICAgICBvcHRpb25hbCwg
YnV0IHRodXMgZmFyIGl0IGhhc24ndCBjb21lIHVwLgorICAgICAgICAKKyAgICAgICAgVGhpcyBj
aGFuZ2UgYWRkcyBhIG1pc3NpbmcgY2FzZSB3aGVyZSB3ZSB3ZXJlbid0IHN1cHBvcnRpbmcgbm9u
LW51bGxhYmxlIAorICAgICAgICBvcHRpb25hbCB3cmFwcGVyIHR5cGUgYXJndW1lbnRzIHRvIG9w
ZXJhdGlvbnMuIFdlIHNvbHZlIHRoaXMgYnkgZXhwZWN0aW5nCisgICAgICAgIHRoZSB3cmFwcGVk
IGltcGxlbWVudGF0aW9uIHRvIHRha2UgdGhlIG9wdGlvbmFsIHdyYXBwZXIgdHlwZSBhcmd1bWVu
dCB0aGUKKyAgICAgICAgc2FtZSB3YXkgaXQgd291bGQgdGFrZSBhbiBvcHRpb25hbCB3cmFwcGVy
IHR5cGUgYXJndW1lbnQsIHdpdGggYSBXcmFwcGVyVHlwZSosCisgICAgICAgIHRoYXQgZ2V0cyBw
YXNzZWQgYSBudWxscHRyIGlmIHRoZSBwYXJhbWV0ZXIgd2FzIG9tbWl0ZWQuCisgICAgICAgIAor
ICAgICAgICBBZG9wdCB0aGlzIGluIEdlb2xvY2F0aW9uLmlkbCwgd2hpY2ggaGFzIGhhZCBhIEZJ
WE1FIGZvciB0aGlzIGZvciBhIGxvbmcKKyAgICAgICAgdGltZS4KKworICAgICAgICAqIE1vZHVs
ZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoUGFzc0FyZ3VtZW50RXhwcmVzc2lvbik6
CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RP
YmpDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsV3JhcHBlckJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisKIDIwMjAtMDktMzAgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJJRExdIE1ha2UgRXhwb3NlZCBtYW5kYXRvcnkg
Zm9yIElETCBpbnRlcmZhY2VzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmlkbAkocmV2aXNpb24gMjY3ODE1KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDE0ICszMCwxMiBAQAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9UmVhY2hhYmxl
RnJvbU5hdmlnYXRvciwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgR2VvbG9jYXRp
b24gewotICAgIC8vIEZJWE1FOiBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgc2hvdWxkIG5vdCBiZSBu
dWxsYWJsZQogICAgIHVuZGVmaW5lZCBnZXRDdXJyZW50UG9zaXRpb24oUG9zaXRpb25DYWxsYmFj
ayBzdWNjZXNzQ2FsbGJhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwg
UG9zaXRpb25FcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wdGlvbmFsIFBvc2l0aW9uRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFBvc2l0aW9uT3B0aW9ucyBvcHRp
b25zKTsKIAotICAgIC8vIEZJWE1FOiBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgc2hvdWxkIG5vdCBi
ZSBudWxsYWJsZQogICAgIGxvbmcgd2F0Y2hQb3NpdGlvbihQb3NpdGlvbkNhbGxiYWNrIHN1Y2Nl
c3NDYWxsYmFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgUG9zaXRpb25FcnJv
ckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25h
bCBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjaywKICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9uYWwgUG9zaXRpb25PcHRpb25zIG9wdGlvbnMpOwogCiAgICAgdW5kZWZpbmVk
IGNsZWFyV2F0Y2gobG9uZyB3YXRjaElkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyNjc4MTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29y
a2luZyBjb3B5KQpAQCAtMTgyNCw4ICsxODI0LDE1IEBAIHN1YiBQYXNzQXJndW1lbnRFeHByZXNz
aW9uCiAgICAgICAgIHJldHVybiAiJHtuYW1lfS5yZWxlYXNlTm9uTnVsbCgpIjsKICAgICB9CiAK
LSAgICByZXR1cm4gIiR7bmFtZX0ucmVsZWFzZU5vbk51bGwoKSIgaWYgJGNvZGVHZW5lcmF0b3It
PklzQ2FsbGJhY2tJbnRlcmZhY2UoJHR5cGUpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNr
RnVuY3Rpb24oJHR5cGUpIHx8ICgkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkdHlwZSkg
JiYgKHJlZigkY29udGV4dCkgbmUgIklETEFyZ3VtZW50IiB8fCAhJGNvbnRleHQtPmlzT3B0aW9u
YWwpKTsKLSAgICByZXR1cm4gIioke25hbWV9IiBpZiAkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVy
VHlwZSgkdHlwZSk7CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNrSW50ZXJmYWNl
KCR0eXBlKSB8fCAkY29kZUdlbmVyYXRvci0+SXNDYWxsYmFja0Z1bmN0aW9uKCR0eXBlKSB8fCAo
JGNvZGVHZW5lcmF0b3ItPklzUHJvbWlzZVR5cGUoJHR5cGUpICYmIChyZWYoJGNvbnRleHQpIG5l
ICJJRExBcmd1bWVudCIgfHwgISRjb250ZXh0LT5pc09wdGlvbmFsKSkpIHsKKyAgICAgICAgcmV0
dXJuICIke25hbWV9LnJlbGVhc2VOb25OdWxsKCkiOworICAgIH0KKworICAgIGlmICgkY29kZUdl
bmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSkpIHsKKyAgICAgICAgcmV0dXJuICIke25hbWV9
IiBpZiByZWYoJGNvbnRleHQpIGVxICJJRExBcmd1bWVudCIgJiYgJGNvbnRleHQtPmlzT3B0aW9u
YWw7CisgICAgICAgIHJldHVybiAiKiR7bmFtZX0iOworICAgIH0KKwogICAgIHJldHVybiAiV1RG
TW92ZSgke25hbWV9KSI7CiB9CiAKQEAgLTYxOTEsOCArNjE5OCw2IEBAIHN1YiBHZW5lcmF0ZVBh
cmFtZXRlcnNDaGVjawogICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRvcGVyYXRpb24tPmFy
Z3VtZW50c30pIHsKICAgICAgICAgbXkgJHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7CiAKLSAgICAg
ICAgYXNzZXJ0ICJPcHRpb25hbCBhcmd1bWVudHMgb2Ygbm9uLW51bGxhYmxlIHdyYXBwZXIgdHlw
ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgKCIgLiAkb3BlcmF0aW9uLT5uYW1lIC4gIikiIGlmICRhcmd1
bWVudC0+aXNPcHRpb25hbCAmJiAhJHR5cGUtPmlzTnVsbGFibGUgJiYgJGNvZGVHZW5lcmF0b3It
PklzV3JhcHBlclR5cGUoJHR5cGUpOwotCiAgICAgICAgIGlmICgkYXJndW1lbnQtPmlzT3B0aW9u
YWwgJiYgIWRlZmluZWQoJGFyZ3VtZW50LT5kZWZhdWx0KSkgewogICAgICAgICAgICAgIyBBcyBw
ZXIgV2ViIElETCwgb3B0aW9uYWwgZGljdGlvbmFyeSBhcmd1bWVudHMgYXJlIGFsd2F5cyBjb25z
aWRlcmVkIHRvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIG9mIGFuIGVtcHR5IGRpY3Rpb25hcnksIHVu
bGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLgogICAgICAgICAgICAgJGFyZ3VtZW50LT5kZWZhdWx0
KCJbXSIpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0RpY3Rpb25hcnlUeXBlKCR0eXBlKTsKQEAgLTYy
NDYsNyArNjI1MSw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAg
ICAgICAgICBteSAkYXJndW1lbnRJRExUeXBlID0gR2V0SURMVHlwZSgkaW50ZXJmYWNlLCAkYXJn
dW1lbnQtPnR5cGUpOwogCiAgICAgICAgICAgICAgICAgICAgIG15ICRkZWZhdWx0VmFsdWU7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkYXJn
dW1lbnQtPnR5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+
SXNQcm9taXNlVHlwZSgkYXJndW1lbnQtPnR5cGUpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBw
ZXJUeXBlKCR0eXBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgJGRlZmF1bHRWYWx1ZSA9
ICJudWxscHRyIjsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICRkZWZhdWx0VmFsdWUgPSAiT3B0aW9uYWw8Q29udmVydGVyPCRhcmd1bWVudElE
TFR5cGU+OjpSZXR1cm5UeXBlPigpIjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0T2JqLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHJldmlzaW9uIDI2NzgxNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjQxLDYgKzI0MSw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5k
YS1sb3cKICAgICB1bmRlZmluZWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2Uo
b3B0aW9uYWwgYm9vbGVhbiBiID0gZmFsc2UpOwogICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRo
T3B0aW9uYWxBbnkob3B0aW9uYWwgYW55IGEpOwogICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRo
T3B0aW9uYWxPYmplY3Qob3B0aW9uYWwgb2JqZWN0IGEpOworICAgIHVuZGVmaW5lZCAgICBtZXRo
b2RXaXRoT3B0aW9uYWxXcmFwcGVyKG9wdGlvbmFsIFRlc3RPYmogb2JqKTsKICAgICB1bmRlZmlu
ZWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyKG9wdGlvbmFsIFRlc3RPYmo/
IG9iaik7CiAgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBl
cklzTnVsbChvcHRpb25hbCBUZXN0T2JqPyBvYmogPSBudWxsKTsKICAgICB1bmRlZmluZWQgICAg
bWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZl
cj8gcmVzb2x2ZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9uIDI2NzgxNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTEwLDYgKzE1MTAsNyBAQCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpz
VGVzdE9ialByb3RvCiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UpOwogSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEFueSk7CiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0KTsKK0pTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxXcmFwcGVyKTsKIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIpOwogSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBl
cklzTnVsbCk7CiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKTsKQEAgLTIyMjAsNiArMjIy
MSw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm8KICAgICB7ICJt
ZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZSksIChpbnRwdHJfdCkgKDApIH0gfSwK
ICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxBbnkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQW55KSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm1ldGhv
ZFdpdGhPcHRpb25hbE9iamVjdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxPYmplY3QpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWV0aG9kV2l0aE9w
dGlvbmFsV3JhcHBlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdO
YXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxXcmFwcGVyKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25h
bE51bGxhYmxlV3JhcHBlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxS
YXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxOdWxsYWJsZVdyYXBwZXIpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAibWV0aG9k
V2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbCksIChpbnRwdHJfdCkg
KDApIH0gfSwKICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKSwg
KGludHB0cl90KSAoMCkgfSB9LApAQCAtNzAyNiw2ICs3MDI4LDI2IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3QKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxP
YmplY3RCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhP
cHRpb25hbE9iamVjdCIpOwogfQogCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxXcmFwcGVyQm9keShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSog
Y2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJh
bWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgRW5zdXJl
U3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAg
YXV0byBvYmogPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gbnVsbHB0ciA6IGNv
bnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1l
bnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgIm9iaiIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhP
cHRpb25hbFdyYXBwZXIiLCAiVGVzdE9iaiIpOyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIHRocm93U2NvcGUucmVsZWFzZSgp
OworICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsV3JhcHBlcihvYmopOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFdyYXBwZXIs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFdyYXBwZXJCb2R5PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhPcHRpb25hbFdyYXBwZXIiKTsK
K30KKwogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyQm9keShKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1l
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNjc4MTUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAyMC0wOS0zMCAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYklETF0gQWRkIHN1cHBvcnQgZm9yIG5vbi1u
dWxsYWJsZSBvcHRpb25hbCB3cmFwcGVyIHR5cGUgYXJndW1lbnRzIHRvIG9wZXJhdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzE2MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20v
R2VvbG9jYXRpb24vYXJndW1lbnQtdHlwZXMuaHRtbDoKKyAgICAgICAgVXBkYXRlIHRlc3RzIG5v
dyB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gR2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0
aW9uCisgICAgICAgIGFuZCBHZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uIGFyZSBub24tbnVsbGFi
bGUuCisKKzIwMjAtMDktMzAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAg
ICAgIFJlbW92ZSBjb2RlIGJlaGluZCBFTkFCTEUoTUVESUFfU0VTU0lPTiksIG5vIHBvcnRzIGVu
YWJsZSBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE2ODMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAg
ICBSZW1vdmUgYWx3YXlzIHNraXBwZWQgTWVkaWEgU2Vzc2lvbiB0ZXN0cy4KKworICAgICAgICAq
IFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9u
czoKKyAgICAgICAgKiBtZWRpYS9zZXNzaW9uOiBSZW1vdmVkLgorCiAyMDIwLTA5LTMwICBSb3Nz
IEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBbSlNDXSBJbXBs
ZW1lbnQgaXRlbSBtZXRob2QgcHJvcG9zYWwKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL2FyZ3VtZW50LXR5cGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vR2VvbG9jYXRpb24vYXJndW1lbnQtdHlwZXMuaHRtbAkocmV2aXNpb24gMjY3ODE1
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vYXJndW1lbnQtdHlwZXMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9j
YXRpb24uZ2V0Q3VycmVudFBvCiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVu
dFBvc2l0aW9uKCJzdHJpbmciKScsIHRydWUsICJUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdzdWNj
ZXNzQ2FsbGJhY2snKSB0byBHZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24gbXVzdCBiZSBh
IGZ1bmN0aW9uIik7CiAKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9z
aXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkKScsIGZhbHNlKTsKLXRlc3QoJ25hdmlnYXRv
ci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgbnVsbCknLCBm
YWxzZSk7Cit0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVt
cHR5RnVuY3Rpb24sIG51bGwpJywgdHJ1ZSwgIlR5cGVFcnJvcjogQXJndW1lbnQgMiAoJ2Vycm9y
Q2FsbGJhY2snKSB0byBHZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24gbXVzdCBiZSBhIGZ1
bmN0aW9uIik7CiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9u
KGVtcHR5RnVuY3Rpb24sIHt9KScsIHRydWUsICJUeXBlRXJyb3I6IEFyZ3VtZW50IDIgKCdlcnJv
ckNhbGxiYWNrJykgdG8gR2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uIG11c3QgYmUgYSBm
dW5jdGlvbiIpOwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlv
bihlbXB0eUZ1bmN0aW9uLCBvYmplY3RUaHJvd2luZ0V4Y2VwdGlvbiknLCB0cnVlLCAiVHlwZUVy
cm9yOiBBcmd1bWVudCAyICgnZXJyb3JDYWxsYmFjaycpIHRvIEdlb2xvY2F0aW9uLmdldEN1cnJl
bnRQb3NpdGlvbiBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2Nh
dGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgZW1wdHlGdW5jdGlvbiknLCBm
YWxzZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410241</attachid>
            <date>2020-10-01 09:53:25 -0700</date>
            <delta_ts>2020-10-01 11:29:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217162-20201001095324.patch</filename>
            <type>text/plain</type>
            <size>39496</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzgxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDIwLTA5LTMwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBBZGQgc3VwcG9ydCBm
b3Igbm9uLW51bGxhYmxlIG9wdGlvbmFsIHdyYXBwZXIgdHlwZSBhcmd1bWVudHMgdG8gb3BlcmF0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3
MTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAg
ICAgICBUaGUgYmluZGluZ3MgY3VycmVudGx5IHRyZWF0IGJvdGggbnVsbGFibGUgYW5kIG9wdGlv
bmFsIHdyYXBwZXIgdHlwZXMgYXMKKyAgICAgICAgaGF2aW5nIHR5cGUgV3JhcHBlclR5cGUqLCB3
aGVyZWFzIG5vbi1udWxsYWJsZSwgbm9uLW9wdGlvbmFsIHdyYXBwZXIgdHlwZXMKKyAgICAgICAg
YXJlIHRyZWF0ZWQgYXMgaGF2aW5nIHR5cGUgV3JhcHBlclR5cGUmLiBUaGlzIHBhcmFsbGVscyBu
b24gd3JhcHBlciB0eXBlcworICAgICAgICB3aGljaCB1c2UgT3B0aW9uYWw8VHlwZT4gZm9yIGJv
dGggbnVsbGFibGUgYW5kIG9wdGlvbmFsIHZzIFR5cGUgZm9yIHRoZQorICAgICAgICBub24tbnVs
bGFibGUgbm9uLW9wdGlvbmFsIHZhcmlhbnQuIEluIGJvdGggdGhlc2UgY2FzZXMsIHRoZXJlIGlz
IHBvc3NpYmlsaXR5CisgICAgICAgIGZvciBhbWJpZ3VpdHksIHNob3VsZCB3ZSBldmVyIG5lZWQg
dG8gZGlzYW1iaWd1YXRlIGJldHdlZW4gbnVsbGFibGUgYW5kIAorICAgICAgICBvcHRpb25hbCwg
YnV0IHRodXMgZmFyIGl0IGhhc24ndCBjb21lIHVwLgorICAgICAgICAKKyAgICAgICAgVGhpcyBj
aGFuZ2UgYWRkcyBhIG1pc3NpbmcgY2FzZSB3aGVyZSB3ZSB3ZXJlbid0IHN1cHBvcnRpbmcgbm9u
LW51bGxhYmxlIAorICAgICAgICBvcHRpb25hbCB3cmFwcGVyIHR5cGUgYXJndW1lbnRzIHRvIG9w
ZXJhdGlvbnMuIFdlIHNvbHZlIHRoaXMgYnkgZXhwZWN0aW5nCisgICAgICAgIHRoZSB3cmFwcGVk
IGltcGxlbWVudGF0aW9uIHRvIHRha2UgdGhlIG9wdGlvbmFsIHdyYXBwZXIgdHlwZSBhcmd1bWVu
dCB0aGUKKyAgICAgICAgc2FtZSB3YXkgaXQgd291bGQgdGFrZSBhbiBvcHRpb25hbCB3cmFwcGVy
IHR5cGUgYXJndW1lbnQsIHdpdGggYSBXcmFwcGVyVHlwZSosCisgICAgICAgIHRoYXQgZ2V0cyBw
YXNzZWQgYSBudWxscHRyIGlmIHRoZSBwYXJhbWV0ZXIgd2FzIG9tbWl0ZWQuCisgICAgICAgIAor
ICAgICAgICBBZG9wdCB0aGlzIGluIEdlb2xvY2F0aW9uLmlkbCwgd2hpY2ggaGFzIGhhZCBhIEZJ
WE1FIGZvciB0aGlzIGZvciBhIGxvbmcKKyAgICAgICAgdGltZS4KKworICAgICAgICAqIE1vZHVs
ZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoUGFzc0FyZ3VtZW50RXhwcmVzc2lvbik6
CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RP
YmpDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsV3JhcHBlckJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisKIDIwMjAtMDktMzAgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJJRExdIE1ha2UgRXhwb3NlZCBtYW5kYXRvcnkg
Zm9yIElETCBpbnRlcmZhY2VzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmlkbAkocmV2aXNpb24gMjY3ODE1KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDE0ICszMCwxMiBAQAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9UmVhY2hhYmxl
RnJvbU5hdmlnYXRvciwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgR2VvbG9jYXRp
b24gewotICAgIC8vIEZJWE1FOiBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgc2hvdWxkIG5vdCBiZSBu
dWxsYWJsZQogICAgIHVuZGVmaW5lZCBnZXRDdXJyZW50UG9zaXRpb24oUG9zaXRpb25DYWxsYmFj
ayBzdWNjZXNzQ2FsbGJhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwg
UG9zaXRpb25FcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wdGlvbmFsIFBvc2l0aW9uRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFBvc2l0aW9uT3B0aW9ucyBvcHRp
b25zKTsKIAotICAgIC8vIEZJWE1FOiBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgc2hvdWxkIG5vdCBi
ZSBudWxsYWJsZQogICAgIGxvbmcgd2F0Y2hQb3NpdGlvbihQb3NpdGlvbkNhbGxiYWNrIHN1Y2Nl
c3NDYWxsYmFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgUG9zaXRpb25FcnJv
ckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25h
bCBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjaywKICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9uYWwgUG9zaXRpb25PcHRpb25zIG9wdGlvbnMpOwogCiAgICAgdW5kZWZpbmVk
IGNsZWFyV2F0Y2gobG9uZyB3YXRjaElkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyNjc4MTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29y
a2luZyBjb3B5KQpAQCAtMTgyNCw4ICsxODI0LDIxIEBAIHN1YiBQYXNzQXJndW1lbnRFeHByZXNz
aW9uCiAgICAgICAgIHJldHVybiAiJHtuYW1lfS5yZWxlYXNlTm9uTnVsbCgpIjsKICAgICB9CiAK
LSAgICByZXR1cm4gIiR7bmFtZX0ucmVsZWFzZU5vbk51bGwoKSIgaWYgJGNvZGVHZW5lcmF0b3It
PklzQ2FsbGJhY2tJbnRlcmZhY2UoJHR5cGUpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNr
RnVuY3Rpb24oJHR5cGUpIHx8ICgkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkdHlwZSkg
JiYgKHJlZigkY29udGV4dCkgbmUgIklETEFyZ3VtZW50IiB8fCAhJGNvbnRleHQtPmlzT3B0aW9u
YWwpKTsKLSAgICByZXR1cm4gIioke25hbWV9IiBpZiAkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVy
VHlwZSgkdHlwZSk7CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VUeXBlKCR0eXBl
KSkgeworICAgICAgICByZXR1cm4gIldURk1vdmUoJHtuYW1lfSkiIGlmIHJlZigkY29udGV4dCkg
ZXEgIklETEFyZ3VtZW50IiAmJiAkY29udGV4dC0+aXNPcHRpb25hbDsKKyAgICAgICAgcmV0dXJu
ICIke25hbWV9LnJlbGVhc2VOb25OdWxsKCkiOworICAgIH0KKworICAgIGlmICgkY29kZUdlbmVy
YXRvci0+SXNDYWxsYmFja0ludGVyZmFjZSgkdHlwZSkgfHwgJGNvZGVHZW5lcmF0b3ItPklzQ2Fs
bGJhY2tGdW5jdGlvbigkdHlwZSkpIHsKKyAgICAgICAgcmV0dXJuICJXVEZNb3ZlKCR7bmFtZX0p
IiBpZiByZWYoJGNvbnRleHQpIGVxICJJRExBcmd1bWVudCIgJiYgJGNvbnRleHQtPmlzT3B0aW9u
YWw7CisgICAgICAgIHJldHVybiAiJHtuYW1lfS5yZWxlYXNlTm9uTnVsbCgpIjsKKyAgICB9CisK
KyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJHR5cGUpKSB7CisgICAgICAg
IHJldHVybiAiJHtuYW1lfSIgaWYgcmVmKCRjb250ZXh0KSBlcSAiSURMQXJndW1lbnQiICYmICRj
b250ZXh0LT5pc09wdGlvbmFsOworICAgICAgICByZXR1cm4gIioke25hbWV9IjsKKyAgICB9CisK
ICAgICByZXR1cm4gIldURk1vdmUoJHtuYW1lfSkiOwogfQogCkBAIC02MTkxLDggKzYyMDQsNiBA
QCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAo
QHskb3BlcmF0aW9uLT5hcmd1bWVudHN9KSB7CiAgICAgICAgIG15ICR0eXBlID0gJGFyZ3VtZW50
LT50eXBlOwogCi0gICAgICAgIGFzc2VydCAiT3B0aW9uYWwgYXJndW1lbnRzIG9mIG5vbi1udWxs
YWJsZSB3cmFwcGVyIHR5cGVzIGFyZSBub3Qgc3VwcG9ydGVkICgiIC4gJG9wZXJhdGlvbi0+bmFt
ZSAuICIpIiBpZiAkYXJndW1lbnQtPmlzT3B0aW9uYWwgJiYgISR0eXBlLT5pc051bGxhYmxlICYm
ICRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKTsKLQogICAgICAgICBpZiAoJGFy
Z3VtZW50LT5pc09wdGlvbmFsICYmICFkZWZpbmVkKCRhcmd1bWVudC0+ZGVmYXVsdCkpIHsKICAg
ICAgICAgICAgICMgQXMgcGVyIFdlYiBJREwsIG9wdGlvbmFsIGRpY3Rpb25hcnkgYXJndW1lbnRz
IGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBoYXZlIGEgZGVmYXVsdCB2YWx1ZSBvZiBhbiBlbXB0
eSBkaWN0aW9uYXJ5LCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZC4KICAgICAgICAgICAgICRh
cmd1bWVudC0+ZGVmYXVsdCgiW10iKSBpZiAkY29kZUdlbmVyYXRvci0+SXNEaWN0aW9uYXJ5VHlw
ZSgkdHlwZSk7CkBAIC02MjA5LDkgKzYyMjAsNiBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2sKICAgICAgICAgICAgICMgQXMgcGVyIFdlYiBJREwsIHBhc3NpbmcgdW5kZWZpbmVkIGZvciBh
IG51bGxhYmxlIGFyZ3VtZW50IGlzIHRyZWF0ZWQgYXMgbnVsbC4gVGhlcmVmb3JlLCB1c2UgbnVs
bCBhcwogICAgICAgICAgICAgIyBkZWZhdWx0IHZhbHVlIGZvciBudWxsYWJsZSBhcmd1bWVudHMg
dW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuCiAgICAgICAgICAgICAkYXJndW1lbnQtPmRlZmF1
bHQoIm51bGwiKSBpZiAkdHlwZS0+aXNOdWxsYWJsZTsKLQotICAgICAgICAgICAgIyBGb3IgY2Fs
bGJhY2sgYXJndW1lbnRzLCB0aGUgZ2VuZXJhdGVkIGJpbmRpbmdzIHRyZWF0IHVuZGVmaW5lZCBh
cyBudWxsLCBzbyB1c2UgbnVsbCBhcyBpbXBsaWNpdCBkZWZhdWx0IHZhbHVlLgotICAgICAgICAg
ICAgJGFyZ3VtZW50LT5kZWZhdWx0KCJudWxsIikgaWYgJGNvZGVHZW5lcmF0b3ItPklzQ2FsbGJh
Y2tJbnRlcmZhY2UoJHR5cGUpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNrRnVuY3Rpb24o
JHR5cGUpOwogICAgICAgICB9CiAKICAgICAgICAgbXkgJG5hbWUgPSAkYXJndW1lbnQtPm5hbWU7
CkBAIC02MjQ2LDcgKzYyNTQsOSBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAg
ICAgICAgICAgICAgICAgbXkgJGFyZ3VtZW50SURMVHlwZSA9IEdldElETFR5cGUoJGludGVyZmFj
ZSwgJGFyZ3VtZW50LT50eXBlKTsKIAogICAgICAgICAgICAgICAgICAgICBteSAkZGVmYXVsdFZh
bHVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzUHJvbWlzZVR5
cGUoJGFyZ3VtZW50LT50eXBlKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5l
cmF0b3ItPklzQ2FsbGJhY2tJbnRlcmZhY2UoJHR5cGUpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc0Nh
bGxiYWNrRnVuY3Rpb24oJHR5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkZGVmYXVs
dFZhbHVlID0gIkNvbnZlcnRlcjwkYXJndW1lbnRJRExUeXBlPjo6UmV0dXJuVHlwZSgpIjsKKyAg
ICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzUHJvbWlzZVR5cGUo
JGFyZ3VtZW50LT50eXBlKSB8fCAkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICRkZWZhdWx0VmFsdWUgPSAibnVsbHB0ciI7CiAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAkZGVm
YXVsdFZhbHVlID0gIk9wdGlvbmFsPENvbnZlcnRlcjwkYXJndW1lbnRJRExUeXBlPjo6UmV0dXJu
VHlwZT4oKSI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsCShyZXZpc2lvbiAyNjc4MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0MSw2ICsy
NDEsNyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAgdW5k
ZWZpbmVkICAgIG1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlKG9wdGlvbmFsIGJvb2xl
YW4gYiA9IGZhbHNlKTsKICAgICB1bmRlZmluZWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsQW55KG9w
dGlvbmFsIGFueSBhKTsKICAgICB1bmRlZmluZWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0
KG9wdGlvbmFsIG9iamVjdCBhKTsKKyAgICB1bmRlZmluZWQgICAgbWV0aG9kV2l0aE9wdGlvbmFs
V3JhcHBlcihvcHRpb25hbCBUZXN0T2JqIG9iaik7CiAgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdp
dGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcihvcHRpb25hbCBUZXN0T2JqPyBvYmopOwogICAgIHVu
ZGVmaW5lZCAgICBtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwob3B0aW9u
YWwgVGVzdE9iaj8gb2JqID0gbnVsbCk7CiAgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhPcHRp
b25hbFhQYXRoTlNSZXNvbHZlcihvcHRpb25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29sdmVyKTsK
QEAgLTI0OCwxNCArMjQ5LDE4IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5k
YS1sb3cKICAgICB1bmRlZmluZWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsUHJvbWlzZShvcHRpb25h
bCBQcm9taXNlPHVuZGVmaW5lZD4gcHJvbWlzZSk7CiAKICAgICAvLyBDYWxsYmFjayBpbnRlcmZh
Y2UgcGFyYW1ldGVycy4KLSAgICB1bmRlZmluZWQgICAgbWV0aG9kV2l0aENhbGxiYWNrQXJnKFRl
c3RDYWxsYmFja0ludGVyZmFjZSBjYWxsYmFjayk7Ci0gICAgdW5kZWZpbmVkICAgIG1ldGhvZFdp
dGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnKGxvbmcgbm9uQ2FsbGJhY2ssIFRlc3RDYWxs
YmFja0ludGVyZmFjZSBjYWxsYmFjayk7Ci0gICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhDYWxs
YmFja0FuZE9wdGlvbmFsQXJnKG9wdGlvbmFsIFRlc3RDYWxsYmFja0ludGVyZmFjZT8gY2FsbGJh
Y2spOworICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoQ2FsbGJhY2tJbnRlcmZhY2VBcmcoVGVz
dENhbGxiYWNrSW50ZXJmYWNlIGNhbGxiYWNrKTsKKyAgICB1bmRlZmluZWQgICAgbWV0aG9kV2l0
aE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmcoVGVzdENhbGxiYWNrSW50ZXJmYWNlPyBjYWxs
YmFjayk7CisgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhOb25DYWxsYmFja0ludGVyZmFjZUFy
Z0FuZENhbGxiYWNrSW50ZXJmYWNlQXJnKGxvbmcgbm9uQ2FsbGJhY2ssIFRlc3RDYWxsYmFja0lu
dGVyZmFjZSBjYWxsYmFjayk7CisgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhPcHRpb25hbENh
bGxiYWNrSW50ZXJmYWNlQXJnKG9wdGlvbmFsIFRlc3RDYWxsYmFja0ludGVyZmFjZSBjYWxsYmFj
ayk7CisgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJhY2tJ
bnRlcmZhY2VBcmcob3B0aW9uYWwgVGVzdENhbGxiYWNrSW50ZXJmYWNlPyBjYWxsYmFjayk7CiAK
ICAgICAvLyBDYWxsYmFjayBmdW5jdGlvbiBwYXJhbWV0ZXJzLgogICAgIHVuZGVmaW5lZCAgICBt
ZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyhUZXN0Q2FsbGJhY2tGdW5jdGlvbiBjYWxsYmFj
ayk7CisgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25B
cmcoVGVzdENhbGxiYWNrRnVuY3Rpb24/IGNhbGxiYWNrKTsKICAgICB1bmRlZmluZWQgICAgbWV0
aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyhsb25nIG5vbkNhbGxi
YWNrLCBUZXN0Q2FsbGJhY2tGdW5jdGlvbiBjYWxsYmFjayk7Ci0gICAgdW5kZWZpbmVkICAgIG1l
dGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmcob3B0aW9uYWwgVGVzdENhbGxi
YWNrRnVuY3Rpb24/IGNhbGxiYWNrKTsKKyAgICB1bmRlZmluZWQgICAgbWV0aG9kV2l0aE9wdGlv
bmFsQ2FsbGJhY2tGdW5jdGlvbkFyZyhvcHRpb25hbCBUZXN0Q2FsbGJhY2tGdW5jdGlvbiBjYWxs
YmFjayk7CisgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJh
Y2tGdW5jdGlvbkFyZyhvcHRpb25hbCBUZXN0Q2FsbGJhY2tGdW5jdGlvbj8gY2FsbGJhY2spOwog
CiAgICAgLy8gc3RhdGljIG1ldGhvZHMgd2l0aCAnQ2FsbGJhY2snIGV4dGVuZGVkIGF0dHJpYnV0
ZQogICAgIHN0YXRpYyB1bmRlZmluZWQgICAgc3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0
aW9uYWxBcmcob3B0aW9uYWwgVGVzdENhbGxiYWNrSW50ZXJmYWNlPyBjYWxsYmFjayk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcAkocmV2aXNpb24gMjY3ODE1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTAsMTcg
KzE1MTAsMjIgQEAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90bwogSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlKTsKIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnkpOwogSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbE9iamVjdCk7CitKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsV3JhcHBlcik7CiBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFi
bGVXcmFwcGVyKTsKIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwpOwogSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFhQYXRoTlNSZXNvbHZlcik7CiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUmVjb3JkKTsKIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxQcm9taXNlKTsKLUpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmcpOwotSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0Fu
ZENhbGxiYWNrQXJnKTsKLUpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyk7CitKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxi
YWNrSW50ZXJmYWNlQXJnKTsKK0pTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyk7CitK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE5vbkNhbGxiYWNrSW50ZXJmYWNlQXJnQW5kQ2FsbGJhY2tJbnRlcmZhY2VBcmcpOworSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbENhbGxiYWNrSW50ZXJmYWNlQXJnKTsKK0pTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNh
bGxiYWNrSW50ZXJmYWNlQXJnKTsKIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyk7CitKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51
bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZyk7CiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJh
Y2tGdW5jdGlvbkFyZyk7Ci1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyk7CitK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsQ2FsbGJhY2tGdW5jdGlvbkFyZyk7CitKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVD
YWxsYmFja0Z1bmN0aW9uQXJnKTsKIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2Jq
Q29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJn
KTsKIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
blN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyk7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCkBA
IC0yMjIwLDE3ICsyMjI1LDIyIEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RP
YmpQcm8KICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZSksIChpbnRw
dHJfdCkgKDApIH0gfSwKICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxBbnkiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW55KSwgKGludHB0cl90KSAoMCkgfSB9
LAogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbE9iamVjdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxPYmplY3QpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAg
eyAibWV0aG9kV2l0aE9wdGlvbmFsV3JhcHBlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxXcmFwcGVyKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm1l
dGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIpLCAoaW50cHRyX3QpICgwKSB9IH0s
CiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVs
bCksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5T
UmVzb2x2ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBh
dGhOU1Jlc29sdmVyKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhPcHRp
b25hbFJlY29yZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxS
ZWNvcmQpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsUHJv
bWlzZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxQcm9taXNl
KSwgKGludHB0cl90KSAoMCkgfSB9LAotICAgIHsgIm1ldGhvZFdpdGhDYWxsYmFja0FyZyIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmcpLCAoaW50cHRyX3Qp
ICgxKSB9IH0sCi0gICAgeyAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmci
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2Fs
bGJhY2tBcmcpLCAoaW50cHRyX3QpICgyKSB9IH0sCi0gICAgeyAibWV0aG9kV2l0aENhbGxiYWNr
QW5kT3B0aW9uYWxBcmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxi
YWNrQW5kT3B0aW9uYWxBcmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWV0aG9kV2l0
aENhbGxiYWNrSW50ZXJmYWNlQXJnIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhDYWxsYmFja0ludGVyZmFjZUFyZyksIChpbnRwdHJfdCkgKDEpIH0gfSwKKyAgICB7ICJtZXRo
b2RXaXRoTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyksIChpbnRwdHJfdCkg
KDEpIH0gfSwKKyAgICB7ICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tJbnRlcmZhY2VBcmdBbmRDYWxs
YmFja0ludGVyZmFjZUFyZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxS
YXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9u
Q2FsbGJhY2tJbnRlcmZhY2VBcmdBbmRDYWxsYmFja0ludGVyZmFjZUFyZyksIChpbnRwdHJfdCkg
KDIpIH0gfSwKKyAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFja0ludGVyZmFjZUFyZyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFja0ludGVy
ZmFjZUFyZyksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxO
dWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmcpLCAoaW50cHRyX3Qp
ICgwKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmciLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcpLCAoaW50cHRy
X3QpICgxKSB9IH0sCisgICAgeyAibWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFy
ZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlv
biksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0Z1
bmN0aW9uQXJnKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhOb25DYWxs
YmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyksIChpbnRwdHJf
dCkgKDIpIH0gfSwKLSAgICB7ICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFs
QXJnIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9u
QW5kT3B0aW9uYWxBcmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWV0aG9kV2l0aE9w
dGlvbmFsQ2FsbGJhY2tGdW5jdGlvbkFyZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxDYWxsYmFja0Z1bmN0aW9uQXJnKSwgKGludHB0cl90KSAoMCkgfSB9LAor
ICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZyIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNr
RnVuY3Rpb25BcmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEp
CiAgICAgeyAiY29uZGl0aW9uYWxNZXRob2QxIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bmRpdGlvbmFsTWV0aG9kMSksIChpbnRwdHJfdCkgKDApIH0gfSwKICNlbHNlCkBAIC03MDI2LDYg
KzcwMzYsMjYgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdAogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9iamVjdEJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FsbEZyYW1lLCAibWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0Iik7CiB9CiAKK3N0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFdyYXBwZXJCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQoreworICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKKyAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBhdXRvIG9iaiA9IGFyZ3VtZW50MC52YWx1ZSgpLmlz
VW5kZWZpbmVkKCkgPyBudWxscHRyIDogY29udmVydDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJv
d0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAib2JqIiwg
IlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsV3JhcHBlciIsICJUZXN0T2JqIik7IH0p
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CisgICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxX
cmFwcGVyKG9iaik7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsV3JhcHBlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsV3JhcHBlckJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWV0
aG9kV2l0aE9wdGlvbmFsV3JhcHBlciIpOworfQorCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxs
YWJsZVdyYXBwZXJCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTcxMjYsNyArNzE1NiwyOSBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsUHJvbWlzZUJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWV0
aG9kV2l0aE9wdGlvbmFsUHJvbWlzZSIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmdC
b2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZy
YW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrSW50ZXJmYWNlQXJnQm9k
eShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFt
ZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxs
RnJhbWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgaWYg
KFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgIEVuc3VyZVN0
aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
OworICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVz
dENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1
ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1
bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2Fs
bGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsg
fSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKKyAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKKyAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFj
a0ludGVyZmFjZUFyZyhjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tJbnRlcmZhY2VB
cmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0ludGVyZmFjZUFyZ0JvZHk+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWV0aG9kV2l0aENhbGxiYWNrSW50
ZXJmYWNlQXJnIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNl
QXJnQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNh
bGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CkBAIC03MTM2LDE5ICs3MTg4LDE5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENv
dW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0KSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8
SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdp
dGhDYWxsYmFja0FyZyIpOyB9KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExOdWxs
YWJsZTxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1l
dGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0pOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgdGhyb3dTY29w
ZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tBcmcoY2FsbGJhY2sucmVs
ZWFzZU5vbk51bGwoKSk7CisgICAgaW1wbC5tZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0ludGVy
ZmFjZUFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZUNh
bGxiYWNrSW50ZXJmYWNlQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tB
cmdCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhDYWxs
YmFja0FyZyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNl
QXJnQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoTnVs
bGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJh
Y2tBcmdBbmRDYWxsYmFja0FyZ0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCitzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9u
Q2FsbGJhY2tJbnRlcmZhY2VBcmdBbmRDYWxsYmFja0ludGVyZmFjZUFyZ0JvZHkoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNzE2
MSwxOSArNzIxMywxOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgYXV0byBub25DYWxsYmFjayA9IGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIGF1dG8gY2FsbGJh
Y2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNl
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAiY2FsbGJhY2siLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIpOyB9KTsKKyAgICBh
dXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFj
a0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgKmNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0
QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgImNhbGxiYWNrIiwg
IlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrSW50ZXJmYWNlQXJnQW5kQ2FsbGJh
Y2tJbnRlcmZhY2VBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBs
Lm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnKFdURk1vdmUobm9uQ2FsbGJh
Y2spLCBjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBpbXBsLm1ldGhvZFdpdGhOb25D
YWxsYmFja0ludGVyZmFjZUFyZ0FuZENhbGxiYWNrSW50ZXJmYWNlQXJnKFdURk1vdmUobm9uQ2Fs
bGJhY2spLCBjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFj
a0FyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tJbnRlcmZhY2VBcmdBbmRDYWxsYmFja0ludGVyZmFj
ZUFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJh
Y2tBcmdCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhO
b25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNh
bGxiYWNrSW50ZXJmYWNlQXJnQW5kQ2FsbGJhY2tJbnRlcmZhY2VBcmdCb2R5PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0ludGVyZmFjZUFy
Z0FuZENhbGxiYWNrSW50ZXJmYWNlQXJnIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Fu
ZE9wdGlvbmFsQXJnQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbENh
bGxiYWNrSW50ZXJmYWNlQXJnQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC03MTgxLDE2ICs3MjMzLDM2IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oY2FsbEZy
YW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEVuc3Vy
ZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAg
IGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrSW50ZXJmYWNl
PEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVu
dDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRo
cm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwg
MCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9u
YWxBcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5k
ZWZpbmVkKCkgPyBDb252ZXJ0ZXI8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2U+Pjo6UmV0dXJuVHlwZSgpIDogY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxK
U1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAu
dmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwg
ImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tJbnRl
cmZhY2VBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhv
ZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBpbXBs
Lm1ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrSW50ZXJmYWNlQXJnKFdURk1vdmUoY2FsbGJhY2sp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1KU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Q2FsbGJhY2tBbmRPcHRpb25hbEFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFja0ludGVyZmFj
ZUFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmdC
b2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhDYWxsYmFj
a0FuZE9wdGlvbmFsQXJnIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tJ
bnRlcmZhY2VBcmdCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhv
ZFdpdGhPcHRpb25hbENhbGxiYWNrSW50ZXJmYWNlQXJnIik7Cit9CisKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmdCb2R5KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQor
eworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBhdXRvIGNhbGxiYWNrID0g
Y29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0lu
dGVyZmFjZT4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJl
T2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJU
ZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VB
cmciKTsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKKyAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKKyAgICBpbXBsLm1ldGhvZFdpdGhP
cHRpb25hbE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmcoV1RGTW92ZShjYWxsYmFjaykpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0pTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmdCb2R5PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJh
Y2tJbnRlcmZhY2VBcmciKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmdC
b2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZy
YW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzKQpAQCAtNzIxNSw2ICs3Mjg3LDI4IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3QKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tG
dW5jdGlvbkFyZ0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWV0aG9k
V2l0aENhbGxiYWNrRnVuY3Rpb25BcmciKTsKIH0KIAorc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlQ2Fs
bGJhY2tGdW5jdGlvbkFyZ0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCit7CisgICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAg
ICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8
IDEpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QpKTsKKyAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExOdWxs
YWJsZTxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+Pj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1l
dGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICB0aHJvd1Njb3Bl
LnJlbGVhc2UoKTsKKyAgICBpbXBsLm1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25B
cmcoV1RGTW92ZShjYWxsYmFjaykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25BcmcsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorewor
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25BcmdCb2R5PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNr
RnVuY3Rpb25BcmciKTsKK30KKwogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJh
Y2tGdW5jdGlvbkFyZ0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpAQCAtNzI0MCw3ICs3MzM0LDI3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3QKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Tm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnQm9keT4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1
bmN0aW9uQXJnIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9u
YWxBcmdCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tG
dW5jdGlvbkFyZ0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCit7CisgICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVT
RURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOworICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOworICAgIGF1dG8gY2FsbGJhY2sgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVm
aW5lZCgpID8gQ29udmVydGVyPElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5j
dGlvbj4+OjpSZXR1cm5UeXBlKCkgOiBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0
Q2FsbGJhY2tGdW5jdGlvbj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUo
KSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1l
bnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2Fs
bGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFja0Z1bmN0aW9u
QXJnIik7IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CisgICAgaW1wbC5tZXRob2RXaXRo
T3B0aW9uYWxDYWxsYmFja0Z1bmN0aW9uQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxDYWxs
YmFja0Z1bmN0aW9uQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxDYWxs
YmFja0Z1bmN0aW9uQXJnQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJt
ZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFja0Z1bmN0aW9uQXJnIik7Cit9CisKK3N0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZ0JvZHkoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMp
CiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNzI0OCwxNiAr
NzM2MiwxNiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
VU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJ
RExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+Pj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dT
Y29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdp
dGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFj
ayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFj
a0Z1bmN0aW9uPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0
QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2si
LCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrRnVuY3Rp
b25BcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBpbXBsLm1ldGhvZFdp
dGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmcoV1RGTW92ZShjYWxsYmFjaykpOworICAg
IGltcGwubWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnKFdURk1v
dmUoY2FsbGJhY2spKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1KU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK0pTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7Ci0gICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZ0JvZHk+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FsbEZyYW1lLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFy
ZyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlv
bkFyZ0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWV0aG9kV2l0aE9w
dGlvbmFsTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0
aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmdCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNjc4MTUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNyBAQAorMjAyMC0wOS0zMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgW1dlYklETF0gQWRkIHN1cHBvcnQgZm9yIG5vbi1udWxsYWJsZSBvcHRp
b25hbCB3cmFwcGVyIHR5cGUgYXJndW1lbnRzIHRvIG9wZXJhdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzE2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24v
YXJndW1lbnQtdHlwZXMuaHRtbDoKKyAgICAgICAgVXBkYXRlIHRlc3RzIG5vdyB0aGF0IHRoZSBz
ZWNvbmQgYXJndW1lbnQgdG8gR2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uCisgICAgICAg
IGFuZCBHZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uIGFyZSBub24tbnVsbGFibGUuCisKKzIwMjAt
MDktMzAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBj
b2RlIGJlaGluZCBFTkFCTEUoTUVESUFfU0VTU0lPTiksIG5vIHBvcnRzIGVuYWJsZSBpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2ODMxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBSZW1vdmUgYWx3
YXlzIHNraXBwZWQgTWVkaWEgU2Vzc2lvbiB0ZXN0cy4KKworICAgICAgICAqIFRlc3RFeHBlY3Rh
dGlvbnM6CisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAg
KiBtZWRpYS9zZXNzaW9uOiBSZW1vdmVkLgorCiAyMDIwLTA5LTMwICBSb3NzIEtpcnNsaW5nICA8
cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBbSlNDXSBJbXBsZW1lbnQgaXRlbSBt
ZXRob2QgcHJvcG9zYWwKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Fy
Z3VtZW50LXR5cGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2Vv
bG9jYXRpb24vYXJndW1lbnQtdHlwZXMuaHRtbAkocmV2aXNpb24gMjY3ODE1KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vYXJndW1lbnQtdHlwZXMuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNTYsNyArNTYsNyBAQCB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3Vy
cmVudFBvCiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKCJz
dHJpbmciKScsIHRydWUsICJUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdzdWNjZXNzQ2FsbGJhY2sn
KSB0byBHZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24gbXVzdCBiZSBhIGZ1bmN0aW9uIik7
CiAKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlG
dW5jdGlvbiwgdW5kZWZpbmVkKScsIGZhbHNlKTsKLXRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlv
bi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgbnVsbCknLCBmYWxzZSk7Cit0ZXN0
KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24s
IG51bGwpJywgdHJ1ZSwgIlR5cGVFcnJvcjogQXJndW1lbnQgMiAoJ2Vycm9yQ2FsbGJhY2snKSB0
byBHZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24gbXVzdCBiZSBhIGZ1bmN0aW9uIik7CiB0
ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rp
b24sIHt9KScsIHRydWUsICJUeXBlRXJyb3I6IEFyZ3VtZW50IDIgKCdlcnJvckNhbGxiYWNrJykg
dG8gR2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uIG11c3QgYmUgYSBmdW5jdGlvbiIpOwog
dGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0
aW9uLCBvYmplY3RUaHJvd2luZ0V4Y2VwdGlvbiknLCB0cnVlLCAiVHlwZUVycm9yOiBBcmd1bWVu
dCAyICgnZXJyb3JDYWxsYmFjaycpIHRvIEdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbiBt
dXN0IGJlIGEgZnVuY3Rpb24iKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJy
ZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgZW1wdHlGdW5jdGlvbiknLCBmYWxzZSk7Cg==
</data>
<flag name="commit-queue"
          id="426140"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410246</attachid>
            <date>2020-10-01 11:29:36 -0700</date>
            <delta_ts>2020-10-01 17:57:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217162-20201001112935.patch</filename>
            <type>text/plain</type>
            <size>40771</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Nzg0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDIwLTA5LTMwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBBZGQgc3VwcG9ydCBm
b3Igbm9uLW51bGxhYmxlIG9wdGlvbmFsIHdyYXBwZXIgdHlwZSBhcmd1bWVudHMgdG8gb3BlcmF0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3
MTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAg
ICAgICBUaGUgYmluZGluZ3MgY3VycmVudGx5IHRyZWF0IGJvdGggbnVsbGFibGUgYW5kIG9wdGlv
bmFsIHdyYXBwZXIgdHlwZXMgYXMKKyAgICAgICAgaGF2aW5nIHR5cGUgV3JhcHBlclR5cGUqIChv
ciBSZWZQdHI8V3JhcHBlclR5cGU+IGZvciBjYWxsYmFja3MpLCB3aGVyZWFzIAorICAgICAgICBu
b24tbnVsbGFibGUsIG5vbi1vcHRpb25hbCB3cmFwcGVyIHR5cGVzIGFyZSB0cmVhdGVkIGFzIGhh
dmluZyB0eXBlIFdyYXBwZXJUeXBlJgorICAgICAgICAob3IgUmVmPFdyYXBwZXJUeXBlPiBmb3Ig
Y2FsbGJhY2tzKS4gVGhpcyBwYXJhbGxlbHMgbm9uIHdyYXBwZXIgdHlwZXMKKyAgICAgICAgd2hp
Y2ggdXNlIE9wdGlvbmFsPFR5cGU+IGZvciBib3RoIG51bGxhYmxlIGFuZCBvcHRpb25hbCB2cyBU
eXBlIGZvciB0aGUKKyAgICAgICAgbm9uLW51bGxhYmxlIG5vbi1vcHRpb25hbCB2YXJpYW50LiBJ
biBib3RoIHRoZXNlIGNhc2VzLCB0aGVyZSBpcyBwb3NzaWJpbGl0eQorICAgICAgICBmb3IgYW1i
aWd1aXR5LCBzaG91bGQgd2UgZXZlciBuZWVkIHRvIGRpc2FtYmlndWF0ZSBiZXR3ZWVuIG51bGxh
YmxlIGFuZCAKKyAgICAgICAgb3B0aW9uYWwsIGJ1dCB0aHVzIGZhciBpdCBoYXNuJ3QgY29tZSB1
cC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgYSBtaXNzaW5nIGNhc2Ugd2hl
cmUgd2Ugd2VyZW4ndCBzdXBwb3J0aW5nIG5vbi1udWxsYWJsZSAKKyAgICAgICAgb3B0aW9uYWwg
d3JhcHBlciB0eXBlIGFyZ3VtZW50cyB0byBvcGVyYXRpb25zLiBXZSBzb2x2ZSB0aGlzIGJ5IGV4
cGVjdGluZworICAgICAgICB0aGUgd3JhcHBlZCBpbXBsZW1lbnRhdGlvbiB0byB0YWtlIHRoZSBv
cHRpb25hbCB3cmFwcGVyIHR5cGUgYXJndW1lbnQgdGhlCisgICAgICAgIHNhbWUgd2F5IGl0IHdv
dWxkIHRha2UgYW4gb3B0aW9uYWwgd3JhcHBlciB0eXBlIGFyZ3VtZW50LCB3aXRoIGEgV3JhcHBl
clR5cGUqLAorICAgICAgICAob3IgUmVmUHRyPFdyYXBwZXJUeXBlPiBmb3IgY2FsbGJhY2tzKSB0
aGF0IGdldHMgcGFzc2VkIGEgbnVsbHB0ciBpZiB0aGUKKyAgICAgICAgcGFyYW1ldGVyIHdhcyBv
bW1pdGVkLgorCisgICAgICAgIEFkb3B0IHRoaXMgaW4gR2VvbG9jYXRpb24uaWRsLCB3aGljaCBo
YXMgaGFkIGEgRklYTUUgZm9yIHRoaXMgZm9yIGEgbG9uZworICAgICAgICB0aW1lLgorCisgICAg
ICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5pZGw6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsOgorCiAyMDIwLTEwLTAxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI2Nzc4MSk6IEFTU0VSVElPTiBG
QUlMRUQ6IE9wdGlvbmFsLmgoNTI1KSA6IFQgKldURjo6T3B0aW9uYWw8V2ViQ29yZTo6TGF5b3V0
OjpMaW5lUnVuOjpUZXh0Pjo6b3BlcmF0b3ItPigpIG9uIDE2IGZhc3QvbGF5b3V0Zm9ybWF0dGlu
Z2NvbnRleHQvKiB0ZXN0cwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9sb2NhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5pZGwJKHJldmlzaW9uIDI2Nzg0NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCwxNCArMzAsMTIgQEAKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPVJlYWNoYWJsZUZy
b21OYXZpZ2F0b3IsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIEdlb2xvY2F0aW9u
IHsKLSAgICAvLyBGSVhNRTogUG9zaXRpb25FcnJvckNhbGxiYWNrIHNob3VsZCBub3QgYmUgbnVs
bGFibGUKICAgICB1bmRlZmluZWQgZ2V0Q3VycmVudFBvc2l0aW9uKFBvc2l0aW9uQ2FsbGJhY2sg
c3VjY2Vzc0NhbGxiYWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFBv
c2l0aW9uRXJyb3JDYWxsYmFjaz8gZXJyb3JDYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcHRpb25hbCBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjaywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBQb3NpdGlvbk9wdGlvbnMgb3B0aW9u
cyk7CiAKLSAgICAvLyBGSVhNRTogUG9zaXRpb25FcnJvckNhbGxiYWNrIHNob3VsZCBub3QgYmUg
bnVsbGFibGUKICAgICBsb25nIHdhdGNoUG9zaXRpb24oUG9zaXRpb25DYWxsYmFjayBzdWNjZXNz
Q2FsbGJhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFBvc2l0aW9uRXJyb3JD
YWxsYmFjaz8gZXJyb3JDYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwg
UG9zaXRpb25FcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAg
ICAgIG9wdGlvbmFsIFBvc2l0aW9uT3B0aW9ucyBvcHRpb25zKTsKIAogICAgIHVuZGVmaW5lZCBj
bGVhcldhdGNoKGxvbmcgd2F0Y2hJZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjY3ODQ0KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtp
bmcgY29weSkKQEAgLTE4MjQsOCArMTgyNCwyMSBAQCBzdWIgUGFzc0FyZ3VtZW50RXhwcmVzc2lv
bgogICAgICAgICByZXR1cm4gIiR7bmFtZX0ucmVsZWFzZU5vbk51bGwoKSI7CiAgICAgfQogCi0g
ICAgcmV0dXJuICIke25hbWV9LnJlbGVhc2VOb25OdWxsKCkiIGlmICRjb2RlR2VuZXJhdG9yLT5J
c0NhbGxiYWNrSW50ZXJmYWNlKCR0eXBlKSB8fCAkY29kZUdlbmVyYXRvci0+SXNDYWxsYmFja0Z1
bmN0aW9uKCR0eXBlKSB8fCAoJGNvZGVHZW5lcmF0b3ItPklzUHJvbWlzZVR5cGUoJHR5cGUpICYm
IChyZWYoJGNvbnRleHQpIG5lICJJRExBcmd1bWVudCIgfHwgISRjb250ZXh0LT5pc09wdGlvbmFs
KSk7Ci0gICAgcmV0dXJuICIqJHtuYW1lfSIgaWYgJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5
cGUoJHR5cGUpOworICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkdHlwZSkp
IHsKKyAgICAgICAgcmV0dXJuICJXVEZNb3ZlKCR7bmFtZX0pIiBpZiByZWYoJGNvbnRleHQpIGVx
ICJJRExBcmd1bWVudCIgJiYgJGNvbnRleHQtPmlzT3B0aW9uYWw7CisgICAgICAgIHJldHVybiAi
JHtuYW1lfS5yZWxlYXNlTm9uTnVsbCgpIjsKKyAgICB9CisKKyAgICBpZiAoJGNvZGVHZW5lcmF0
b3ItPklzQ2FsbGJhY2tJbnRlcmZhY2UoJHR5cGUpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxi
YWNrRnVuY3Rpb24oJHR5cGUpKSB7CisgICAgICAgIHJldHVybiAiV1RGTW92ZSgke25hbWV9KSIg
aWYgcmVmKCRjb250ZXh0KSBlcSAiSURMQXJndW1lbnQiICYmICRjb250ZXh0LT5pc09wdGlvbmFs
OworICAgICAgICByZXR1cm4gIiR7bmFtZX0ucmVsZWFzZU5vbk51bGwoKSI7CisgICAgfQorCisg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKSkgeworICAgICAgICBy
ZXR1cm4gIiR7bmFtZX0iIGlmIHJlZigkY29udGV4dCkgZXEgIklETEFyZ3VtZW50IiAmJiAkY29u
dGV4dC0+aXNPcHRpb25hbDsKKyAgICAgICAgcmV0dXJuICIqJHtuYW1lfSI7CisgICAgfQorCiAg
ICAgcmV0dXJuICJXVEZNb3ZlKCR7bmFtZX0pIjsKIH0KIApAQCAtNjE5MSw4ICs2MjA0LDYgQEAg
c3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKEB7
JG9wZXJhdGlvbi0+YXJndW1lbnRzfSkgewogICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+
dHlwZTsKIAotICAgICAgICBhc3NlcnQgIk9wdGlvbmFsIGFyZ3VtZW50cyBvZiBub24tbnVsbGFi
bGUgd3JhcHBlciB0eXBlcyBhcmUgbm90IHN1cHBvcnRlZCAoIiAuICRvcGVyYXRpb24tPm5hbWUg
LiAiKSIgaWYgJGFyZ3VtZW50LT5pc09wdGlvbmFsICYmICEkdHlwZS0+aXNOdWxsYWJsZSAmJiAk
Y29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSk7Ci0KICAgICAgICAgaWYgKCRhcmd1
bWVudC0+aXNPcHRpb25hbCAmJiAhZGVmaW5lZCgkYXJndW1lbnQtPmRlZmF1bHQpKSB7CiAgICAg
ICAgICAgICAjIEFzIHBlciBXZWIgSURMLCBvcHRpb25hbCBkaWN0aW9uYXJ5IGFyZ3VtZW50cyBh
cmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgb2YgYW4gZW1wdHkg
ZGljdGlvbmFyeSwgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuCiAgICAgICAgICAgICAkYXJn
dW1lbnQtPmRlZmF1bHQoIltdIikgaWYgJGNvZGVHZW5lcmF0b3ItPklzRGljdGlvbmFyeVR5cGUo
JHR5cGUpOwpAQCAtNjIwOSw5ICs2MjIwLDYgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNr
CiAgICAgICAgICAgICAjIEFzIHBlciBXZWIgSURMLCBwYXNzaW5nIHVuZGVmaW5lZCBmb3IgYSBu
dWxsYWJsZSBhcmd1bWVudCBpcyB0cmVhdGVkIGFzIG51bGwuIFRoZXJlZm9yZSwgdXNlIG51bGwg
YXMKICAgICAgICAgICAgICMgZGVmYXVsdCB2YWx1ZSBmb3IgbnVsbGFibGUgYXJndW1lbnRzIHVu
bGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLgogICAgICAgICAgICAgJGFyZ3VtZW50LT5kZWZhdWx0
KCJudWxsIikgaWYgJHR5cGUtPmlzTnVsbGFibGU7Ci0KLSAgICAgICAgICAgICMgRm9yIGNhbGxi
YWNrIGFyZ3VtZW50cywgdGhlIGdlbmVyYXRlZCBiaW5kaW5ncyB0cmVhdCB1bmRlZmluZWQgYXMg
bnVsbCwgc28gdXNlIG51bGwgYXMgaW1wbGljaXQgZGVmYXVsdCB2YWx1ZS4KLSAgICAgICAgICAg
ICRhcmd1bWVudC0+ZGVmYXVsdCgibnVsbCIpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNr
SW50ZXJmYWNlKCR0eXBlKSB8fCAkY29kZUdlbmVyYXRvci0+SXNDYWxsYmFja0Z1bmN0aW9uKCR0
eXBlKTsKICAgICAgICAgfQogCiAgICAgICAgIG15ICRuYW1lID0gJGFyZ3VtZW50LT5uYW1lOwpA
QCAtNjI0Niw3ICs2MjU0LDkgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAg
ICAgICAgICAgICAgIG15ICRhcmd1bWVudElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2Us
ICRhcmd1bWVudC0+dHlwZSk7CiAKICAgICAgICAgICAgICAgICAgICAgbXkgJGRlZmF1bHRWYWx1
ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VUeXBl
KCRhcmd1bWVudC0+dHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJh
dG9yLT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCR0eXBlKSB8fCAkY29kZUdlbmVyYXRvci0+SXNDYWxs
YmFja0Z1bmN0aW9uKCR0eXBlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJGRlZmF1bHRW
YWx1ZSA9ICJDb252ZXJ0ZXI8JGFyZ3VtZW50SURMVHlwZT46OlJldHVyblR5cGUoKSI7CisgICAg
ICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VUeXBlKCRh
cmd1bWVudC0+dHlwZSkgfHwgJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJHR5cGUpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAkZGVmYXVsdFZhbHVlID0gIm51bGxwdHIiOwogICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgJGRlZmF1
bHRWYWx1ZSA9ICJPcHRpb25hbDxDb252ZXJ0ZXI8JGFyZ3VtZW50SURMVHlwZT46OlJldHVyblR5
cGU+KCkiOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RP
YmouaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0T2JqLmlkbAkocmV2aXNpb24gMjY3ODQ0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNiArMjQx
LDcgQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIHVuZGVm
aW5lZCAgICBtZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZShvcHRpb25hbCBib29sZWFu
IGIgPSBmYWxzZSk7CiAgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhPcHRpb25hbEFueShvcHRp
b25hbCBhbnkgYSk7CiAgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhPcHRpb25hbE9iamVjdChv
cHRpb25hbCBvYmplY3QgYSk7CisgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhPcHRpb25hbFdy
YXBwZXIob3B0aW9uYWwgVGVzdE9iaiBvYmopOwogICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRo
T3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIob3B0aW9uYWwgVGVzdE9iaj8gb2JqKTsKICAgICB1bmRl
ZmluZWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKG9wdGlvbmFs
IFRlc3RPYmo/IG9iaiA9IG51bGwpOwogICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoT3B0aW9u
YWxYUGF0aE5TUmVzb2x2ZXIob3B0aW9uYWwgWFBhdGhOU1Jlc29sdmVyPyByZXNvbHZlcik7CkBA
IC0yNDgsMTQgKzI0OSwxOCBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEt
bG93CiAgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhPcHRpb25hbFByb21pc2Uob3B0aW9uYWwg
UHJvbWlzZTx1bmRlZmluZWQ+IHByb21pc2UpOwogCiAgICAgLy8gQ2FsbGJhY2sgaW50ZXJmYWNl
IHBhcmFtZXRlcnMuCi0gICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhDYWxsYmFja0FyZyhUZXN0
Q2FsbGJhY2tJbnRlcmZhY2UgY2FsbGJhY2spOwotICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRo
Tm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhsb25nIG5vbkNhbGxiYWNrLCBUZXN0Q2FsbGJh
Y2tJbnRlcmZhY2UgY2FsbGJhY2spOwotICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoQ2FsbGJh
Y2tBbmRPcHRpb25hbEFyZyhvcHRpb25hbCBUZXN0Q2FsbGJhY2tJbnRlcmZhY2U/IGNhbGxiYWNr
KTsKKyAgICB1bmRlZmluZWQgICAgbWV0aG9kV2l0aENhbGxiYWNrSW50ZXJmYWNlQXJnKFRlc3RD
YWxsYmFja0ludGVyZmFjZSBjYWxsYmFjayk7CisgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhO
dWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnKFRlc3RDYWxsYmFja0ludGVyZmFjZT8gY2FsbGJh
Y2spOworICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoTm9uQ2FsbGJhY2tJbnRlcmZhY2VBcmdB
bmRDYWxsYmFja0ludGVyZmFjZUFyZyhsb25nIG5vbkNhbGxiYWNrLCBUZXN0Q2FsbGJhY2tJbnRl
cmZhY2UgY2FsbGJhY2spOworICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoT3B0aW9uYWxDYWxs
YmFja0ludGVyZmFjZUFyZyhvcHRpb25hbCBUZXN0Q2FsbGJhY2tJbnRlcmZhY2UgY2FsbGJhY2sp
OworICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50
ZXJmYWNlQXJnKG9wdGlvbmFsIFRlc3RDYWxsYmFja0ludGVyZmFjZT8gY2FsbGJhY2spOwogCiAg
ICAgLy8gQ2FsbGJhY2sgZnVuY3Rpb24gcGFyYW1ldGVycy4KICAgICB1bmRlZmluZWQgICAgbWV0
aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcoVGVzdENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2sp
OworICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJn
KFRlc3RDYWxsYmFja0Z1bmN0aW9uPyBjYWxsYmFjayk7CiAgICAgdW5kZWZpbmVkICAgIG1ldGhv
ZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmcobG9uZyBub25DYWxsYmFj
aywgVGVzdENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2spOwotICAgIHVuZGVmaW5lZCAgICBtZXRo
b2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnKG9wdGlvbmFsIFRlc3RDYWxsYmFj
a0Z1bmN0aW9uPyBjYWxsYmFjayk7CisgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhPcHRpb25h
bENhbGxiYWNrRnVuY3Rpb25Bcmcob3B0aW9uYWwgVGVzdENhbGxiYWNrRnVuY3Rpb24gY2FsbGJh
Y2spOworICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNr
RnVuY3Rpb25Bcmcob3B0aW9uYWwgVGVzdENhbGxiYWNrRnVuY3Rpb24/IGNhbGxiYWNrKTsKIAog
ICAgIC8vIHN0YXRpYyBtZXRob2RzIHdpdGggJ0NhbGxiYWNrJyBleHRlbmRlZCBhdHRyaWJ1dGUK
ICAgICBzdGF0aWMgdW5kZWZpbmVkICAgIHN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlv
bmFsQXJnKG9wdGlvbmFsIFRlc3RDYWxsYmFja0ludGVyZmFjZT8gY2FsbGJhY2spOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAJKHJldmlzaW9uIDI2Nzg0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEwLDE3ICsx
NTEwLDIyIEBAIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG8KIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxCb29sZWFuSXNGYWxzZSk7CiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW55KTsKIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxPYmplY3QpOworSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFdyYXBwZXIpOwogSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxl
V3JhcHBlcik7CiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKTsKIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxYUGF0aE5TUmVzb2x2ZXIpOwogSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFJlY29yZCk7CiBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsUHJvbWlzZSk7Ci1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKTsKLUpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRD
YWxsYmFja0FyZyk7Ci1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcpOworSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFj
a0ludGVyZmFjZUFyZyk7CitKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmcpOworSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhOb25DYWxsYmFja0ludGVyZmFjZUFyZ0FuZENhbGxiYWNrSW50ZXJmYWNlQXJnKTsKK0pTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxDYWxsYmFja0ludGVyZmFjZUFyZyk7CitKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxs
YmFja0ludGVyZmFjZUFyZyk7CiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcpOworSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxs
YWJsZUNhbGxiYWNrRnVuY3Rpb25BcmcpOwogSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNr
RnVuY3Rpb25BcmcpOwotSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmcpOworSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbENhbGxiYWNrRnVuY3Rpb25BcmcpOworSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2Fs
bGJhY2tGdW5jdGlvbkFyZyk7CiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9iakNv
bnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyk7
CiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25T
dGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcpOwogI2lmIEVOQUJMRShDb25kaXRpb24xKQpAQCAt
MjIyMCwxNyArMjIyNSwyMiBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2Jq
UHJvCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UpLCAoaW50cHRy
X3QpICgwKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsQW55Iiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFueSksIChpbnRwdHJfdCkgKDApIH0gfSwK
ICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxPYmplY3QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0KSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsg
Im1ldGhvZFdpdGhPcHRpb25hbFdyYXBwZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsV3JhcHBlciksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJtZXRo
b2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyKSwgKGludHB0cl90KSAoMCkgfSB9LAog
ICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbCIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwp
LCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jl
c29sdmVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1
bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFhQYXRo
TlNSZXNvbHZlciksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJtZXRob2RXaXRoT3B0aW9u
YWxSZWNvcmQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUmVj
b3JkKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbFByb21p
c2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUHJvbWlzZSks
IChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJtZXRob2RXaXRoQ2FsbGJhY2tBcmciLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKSwgKGludHB0cl90KSAo
MSkgfSB9LAotICAgIHsgIm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxi
YWNrQXJnKSwgKGludHB0cl90KSAoMikgfSB9LAotICAgIHsgIm1ldGhvZFdpdGhDYWxsYmFja0Fu
ZE9wdGlvbmFsQXJnIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFj
a0FuZE9wdGlvbmFsQXJnKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm1ldGhvZFdpdGhD
YWxsYmFja0ludGVyZmFjZUFyZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Q2FsbGJhY2tJbnRlcmZhY2VBcmcpLCAoaW50cHRyX3QpICgxKSB9IH0sCisgICAgeyAibWV0aG9k
V2l0aE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmcpLCAoaW50cHRyX3QpICgx
KSB9IH0sCisgICAgeyAibWV0aG9kV2l0aE5vbkNhbGxiYWNrSW50ZXJmYWNlQXJnQW5kQ2FsbGJh
Y2tJbnRlcmZhY2VBcmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNh
bGxiYWNrSW50ZXJmYWNlQXJnQW5kQ2FsbGJhY2tJbnRlcmZhY2VBcmcpLCAoaW50cHRyX3QpICgy
KSB9IH0sCisgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tJbnRlcmZhY2VBcmciLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tJbnRlcmZh
Y2VBcmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsTnVs
bGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnKSwgKGludHB0cl90KSAo
MCkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKSwgKGludHB0cl90
KSAoMSkgfSB9LAorICAgIHsgIm1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25Bcmci
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tGdW5j
dGlvbkFyZyksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJtZXRob2RXaXRoTm9uQ2FsbGJh
Y2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmcpLCAoaW50cHRyX3Qp
ICgyKSB9IH0sCi0gICAgeyAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFy
ZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlv
biksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFu
ZE9wdGlvbmFsQXJnKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm1ldGhvZFdpdGhPcHRp
b25hbENhbGxiYWNrRnVuY3Rpb25BcmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsQ2FsbGJhY2tGdW5jdGlvbkFyZyksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAg
ICB7ICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25BcmciLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0Z1
bmN0aW9uQXJnKSwgKGludHB0cl90KSAoMCkgfSB9LAogI2lmIEVOQUJMRShDb25kaXRpb24xKQog
ICAgIHsgImNvbmRpdGlvbmFsTWV0aG9kMSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25k
aXRpb25hbE1ldGhvZDEpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAjZWxzZQpAQCAtNzAyNiw2ICs3
MDM2LDI2IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3QKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxPYmplY3RCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhPcHRpb25hbE9iamVjdCIpOwogfQogCitzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxXcmFwcGVyQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwor
ICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CisgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CisgICAgYXV0byBvYmogPSBhcmd1bWVudDAudmFsdWUoKS5pc1Vu
ZGVmaW5lZCgpID8gbnVsbHB0ciA6IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dB
cmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgIm9iaiIsICJU
ZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFdyYXBwZXIiLCAiVGVzdE9iaiIpOyB9KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwor
ICAgIHRocm93U2NvcGUucmVsZWFzZSgpOworICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsV3Jh
cHBlcihvYmopOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9
CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFdyYXBwZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFdyYXBwZXJCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhv
ZFdpdGhPcHRpb25hbFdyYXBwZXIiKTsKK30KKwogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFi
bGVXcmFwcGVyQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkBAIC03MTI2LDcgKzcxNTYsMjkgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdAogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFByb21pc2VCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhv
ZFdpdGhPcHRpb25hbFByb21pc2UiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnQm9k
eShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFt
ZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0ludGVyZmFjZUFyZ0JvZHko
SlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZy
YW1lKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChV
TkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQorICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICBFbnN1cmVTdGls
bEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
KyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RD
YWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUo
KSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1l
bnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxi
YWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0p
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CisgICAgaW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tJ
bnRlcmZhY2VBcmcoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrSW50ZXJmYWNlQXJn
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tJbnRlcmZhY2VBcmdCb2R5Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhDYWxsYmFja0ludGVy
ZmFjZUFyZyIpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFy
Z0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNz
UGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpAQCAtNzEzNiwxOSArNzE4OCwxOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElE
TENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dT
Y29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRo
Q2FsbGJhY2tBcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFi
bGU8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRo
b2RXaXRoTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHRocm93U2NvcGUu
cmVsZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aENhbGxiYWNrQXJnKGNhbGxiYWNrLnJlbGVh
c2VOb25OdWxsKCkpOworICAgIGltcGwubWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZh
Y2VBcmcoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVDYWxs
YmFja0ludGVyZmFjZUFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJn
Qm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoQ2FsbGJh
Y2tBcmciKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFy
Z0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWV0aG9kV2l0aE51bGxh
YmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNr
QXJnQW5kQ2FsbGJhY2tBcmdCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQorc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNh
bGxiYWNrSW50ZXJmYWNlQXJnQW5kQ2FsbGJhY2tJbnRlcmZhY2VBcmdCb2R5KEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTcxNjEs
MTkgKzcyMTMsMTkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIGF1dG8gbm9uQ2FsbGJhY2sgPSBjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1l
bnQxID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKLSAgICBhdXRvIGNhbGxiYWNr
ID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3Qi
LCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmciKTsgfSk7CisgICAgYXV0
byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJl
T2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJjYWxsYmFjayIsICJU
ZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0ludGVyZmFjZUFyZ0FuZENhbGxiYWNr
SW50ZXJmYWNlQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5t
ZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhXVEZNb3ZlKG5vbkNhbGxiYWNr
KSwgY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7CisgICAgaW1wbC5tZXRob2RXaXRoTm9uQ2Fs
bGJhY2tJbnRlcmZhY2VBcmdBbmRDYWxsYmFja0ludGVyZmFjZUFyZyhXVEZNb3ZlKG5vbkNhbGxi
YWNrKSwgY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tB
cmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrSW50ZXJmYWNlQXJnQW5kQ2FsbGJhY2tJbnRlcmZhY2VB
cmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNr
QXJnQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoTm9u
Q2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxs
YmFja0ludGVyZmFjZUFyZ0FuZENhbGxiYWNrSW50ZXJmYWNlQXJnQm9keT4oKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tJbnRlcmZhY2VBcmdB
bmRDYWxsYmFja0ludGVyZmFjZUFyZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRP
cHRpb25hbEFyZ0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxDYWxs
YmFja0ludGVyZmFjZUFyZ0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNzE4MSwxNiArNzIzMywzNiBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFt
ZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFbnN1cmVT
dGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBh
dXRvIGNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0ludGVyZmFjZTxK
U1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJv
d0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAs
ICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFs
QXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVm
aW5lZCgpID8gQ29udmVydGVyPElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50
ZXJmYWNlPj46OlJldHVyblR5cGUoKSA6IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZh
bHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0Fy
Z3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJj
YWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrSW50ZXJm
YWNlQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RX
aXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgaW1wbC5t
ZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFja0ludGVyZmFjZUFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENh
bGxiYWNrQW5kT3B0aW9uYWxBcmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tJbnRlcmZhY2VB
cmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnQm9k
eT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoQ2FsbGJhY2tB
bmRPcHRpb25hbEFyZyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrSW50
ZXJmYWNlQXJnQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RX
aXRoT3B0aW9uYWxDYWxsYmFja0ludGVyZmFjZUFyZyIpOworfQorCitzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFt
ZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sK
KyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFy
Z3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgYXV0byBjYWxsYmFjayA9IGNv
bnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2U+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9i
amVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJn
Iik7IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CisgICAgaW1wbC5tZXRob2RXaXRoT3B0
aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnQm9keT4oKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNr
SW50ZXJmYWNlQXJnIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnQm9k
eShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFt
ZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcykKQEAgLTcyMTUsNiArNzI4NywyOCBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqUHJvdG90CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVu
Y3Rpb25BcmdCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdp
dGhDYWxsYmFja0Z1bmN0aW9uQXJnIik7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZUNhbGxi
YWNrRnVuY3Rpb25BcmdCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQoreworICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAg
VU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
KSk7CisgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoMCk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFi
bGU8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRo
cm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRo
b2RXaXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7CisgICAgaW1wbC5tZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJn
KFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnQm9keT4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0Z1
bmN0aW9uQXJnIik7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNr
RnVuY3Rpb25BcmdCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTcyNDAsNyArNzMzNCwyNyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5v
bkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZ0JvZHk+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FsbEZyYW1lLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5j
dGlvbkFyZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFs
QXJnQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNh
bGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrRnVu
Y3Rpb25BcmdCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VE
X1BBUkFNKGNhbGxGcmFtZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKKyAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKKyAgICBhdXRvIGNhbGxiYWNrID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmlu
ZWQoKSA/IENvbnZlcnRlcjxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rp
b24+Pjo6UmV0dXJuVHlwZSgpIDogY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENh
bGxiYWNrRnVuY3Rpb24+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCks
ICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50
TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxi
YWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tGdW5jdGlvbkFy
ZyIpOyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOworICAgIHRocm93U2NvcGUucmVsZWFzZSgpOworICAgIGltcGwubWV0aG9kV2l0aE9w
dGlvbmFsQ2FsbGJhY2tGdW5jdGlvbkFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJh
Y2tGdW5jdGlvbkFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJh
Y2tGdW5jdGlvbkFyZ0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWV0
aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOworfQorCitzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25BcmdCb2R5KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQog
ewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTcyNDgsMTYgKzcz
NjIsMTYgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVO
VVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURM
Q2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBb
XShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2Nv
cGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRo
Q2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sg
PSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tG
dW5jdGlvbj4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJl
RnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwg
IlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9u
QXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRo
Q2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBp
bXBsLm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZyhXVEZNb3Zl
KGNhbGxiYWNrKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25BcmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewotICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmdCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmci
KTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25B
cmdCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhPcHRp
b25hbE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhv
ZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lKQpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMjY3ODQzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMjAtMDktMzAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29t
PgorCisgICAgICAgIFtXZWJJRExdIEFkZCBzdXBwb3J0IGZvciBub24tbnVsbGFibGUgb3B0aW9u
YWwgd3JhcHBlciB0eXBlIGFyZ3VtZW50cyB0byBvcGVyYXRpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcxNjIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2Fy
Z3VtZW50LXR5cGVzLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vYXJndW1l
bnQtdHlwZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICBVcGRhdGUgdGVzdHMgbm93IHRoYXQgdGhl
IHNlY29uZCBhcmd1bWVudCB0byBHZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24KKyAgICAg
ICAgYW5kIEdlb2xvY2F0aW9uLndhdGNoUG9zaXRpb24gYXJlIG5vbi1udWxsYWJsZS4KKwogMjAy
MC0xMC0wMSAgS2FybCBSYWNrbGVyICA8cmFja2xlckBhcHBsZS5jb20+CiAKICAgICAgICAgWyBp
T1MgMTMgd2syIGV3cyBdOiAyIGluLWFwcC1icm93c2VyLXByaXZhY3kgYW5kIDEgV1BUIGFyZSBj
b25zdGFudCBmYWlsdXJlcyBzbG93aW5nIGRvd24gZXdzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi9hcmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vYXJndW1lbnQtdHlwZXMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAyNjc4NDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2Nh
dGlvbi9hcmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3LDcg
KzE3LDcgQEAgUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvcwogUEFTUyBu
YXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKC1JbmZpbml0eSkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ3N1Y2Nlc3NDYWxsYmFjaycpIHRvIEdl
b2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbiBtdXN0IGJlIGEgZnVuY3Rpb24uCiBQQVNTIG5h
dmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oInN0cmluZyIpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdzdWNjZXNzQ2FsbGJhY2snKSB0byBHZW9s
b2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24gbXVzdCBiZSBhIGZ1bmN0aW9uLgogUEFTUyBuYXZp
Z2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVm
aW5lZCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlv
bi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgbnVsbCkgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCitQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24o
ZW1wdHlGdW5jdGlvbiwgbnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQg
MiAoJ2Vycm9yQ2FsbGJhY2snKSB0byBHZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24gbXVz
dCBiZSBhIGZ1bmN0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBv
c2l0aW9uKGVtcHR5RnVuY3Rpb24sIHt9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1
bWVudCAyICgnZXJyb3JDYWxsYmFjaycpIHRvIEdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlv
biBtdXN0IGJlIGEgZnVuY3Rpb24uCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJy
ZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgb2JqZWN0VGhyb3dpbmdFeGNlcHRpb24pIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDIgKCdlcnJvckNhbGxiYWNrJykgdG8gR2Vv
bG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uIG11c3QgYmUgYSBmdW5jdGlvbi4KIFBBU1MgbmF2
aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCBlbXB0
eUZ1bmN0aW9uKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL2FyZ3VtZW50LXR5cGVzLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vYXJndW1lbnQtdHlwZXMuaHRtbAkocmV2aXNp
b24gMjY3ODQzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vYXJndW1lbnQt
dHlwZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCB0ZXN0KCduYXZpZ2F0
b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvCiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24u
Z2V0Q3VycmVudFBvc2l0aW9uKCJzdHJpbmciKScsIHRydWUsICJUeXBlRXJyb3I6IEFyZ3VtZW50
IDEgKCdzdWNjZXNzQ2FsbGJhY2snKSB0byBHZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24g
bXVzdCBiZSBhIGZ1bmN0aW9uIik7CiAKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRD
dXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkKScsIGZhbHNlKTsKLXRlc3Qo
J25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwg
bnVsbCknLCBmYWxzZSk7Cit0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBv
c2l0aW9uKGVtcHR5RnVuY3Rpb24sIG51bGwpJywgdHJ1ZSwgIlR5cGVFcnJvcjogQXJndW1lbnQg
MiAoJ2Vycm9yQ2FsbGJhY2snKSB0byBHZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24gbXVz
dCBiZSBhIGZ1bmN0aW9uIik7CiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVu
dFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHt9KScsIHRydWUsICJUeXBlRXJyb3I6IEFyZ3VtZW50
IDIgKCdlcnJvckNhbGxiYWNrJykgdG8gR2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uIG11
c3QgYmUgYSBmdW5jdGlvbiIpOwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJl
bnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCBvYmplY3RUaHJvd2luZ0V4Y2VwdGlvbiknLCB0cnVl
LCAiVHlwZUVycm9yOiBBcmd1bWVudCAyICgnZXJyb3JDYWxsYmFjaycpIHRvIEdlb2xvY2F0aW9u
LmdldEN1cnJlbnRQb3NpdGlvbiBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKIHRlc3QoJ25hdmlnYXRv
ci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgZW1wdHlGdW5j
dGlvbiknLCBmYWxzZSk7Cg==
</data>
<flag name="review"
          id="426138"
          type_id="1"
          status="+"
          setter="cdumez"
    />
    <flag name="commit-queue"
          id="426166"
          type_id="3"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410293</attachid>
            <date>2020-10-01 17:57:06 -0700</date>
            <delta_ts>2020-10-01 18:42:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217162-20201001112935.patch</filename>
            <type>text/plain</type>
            <size>40765</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Nzg0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDIwLTA5LTMwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBBZGQgc3VwcG9ydCBm
b3Igbm9uLW51bGxhYmxlIG9wdGlvbmFsIHdyYXBwZXIgdHlwZSBhcmd1bWVudHMgdG8gb3BlcmF0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3
MTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisgICAgICAgIAorICAgICAg
ICBUaGUgYmluZGluZ3MgY3VycmVudGx5IHRyZWF0IGJvdGggbnVsbGFibGUgYW5kIG9wdGlvbmFs
IHdyYXBwZXIgdHlwZXMgYXMKKyAgICAgICAgaGF2aW5nIHR5cGUgV3JhcHBlclR5cGUqIChvciBS
ZWZQdHI8V3JhcHBlclR5cGU+IGZvciBjYWxsYmFja3MpLCB3aGVyZWFzIAorICAgICAgICBub24t
bnVsbGFibGUsIG5vbi1vcHRpb25hbCB3cmFwcGVyIHR5cGVzIGFyZSB0cmVhdGVkIGFzIGhhdmlu
ZyB0eXBlIFdyYXBwZXJUeXBlJgorICAgICAgICAob3IgUmVmPFdyYXBwZXJUeXBlPiBmb3IgY2Fs
bGJhY2tzKS4gVGhpcyBwYXJhbGxlbHMgbm9uIHdyYXBwZXIgdHlwZXMKKyAgICAgICAgd2hpY2gg
dXNlIE9wdGlvbmFsPFR5cGU+IGZvciBib3RoIG51bGxhYmxlIGFuZCBvcHRpb25hbCB2cyBUeXBl
IGZvciB0aGUKKyAgICAgICAgbm9uLW51bGxhYmxlIG5vbi1vcHRpb25hbCB2YXJpYW50LiBJbiBi
b3RoIHRoZXNlIGNhc2VzLCB0aGVyZSBpcyBwb3NzaWJpbGl0eQorICAgICAgICBmb3IgYW1iaWd1
aXR5LCBzaG91bGQgd2UgZXZlciBuZWVkIHRvIGRpc2FtYmlndWF0ZSBiZXR3ZWVuIG51bGxhYmxl
IGFuZCAKKyAgICAgICAgb3B0aW9uYWwsIGJ1dCB0aHVzIGZhciBpdCBoYXNuJ3QgY29tZSB1cC4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgYSBtaXNzaW5nIGNhc2Ugd2hlcmUg
d2Ugd2VyZW4ndCBzdXBwb3J0aW5nIG5vbi1udWxsYWJsZSAKKyAgICAgICAgb3B0aW9uYWwgd3Jh
cHBlciB0eXBlIGFyZ3VtZW50cyB0byBvcGVyYXRpb25zLiBXZSBzb2x2ZSB0aGlzIGJ5IGV4cGVj
dGluZworICAgICAgICB0aGUgd3JhcHBlZCBpbXBsZW1lbnRhdGlvbiB0byB0YWtlIHRoZSBvcHRp
b25hbCB3cmFwcGVyIHR5cGUgYXJndW1lbnQgdGhlCisgICAgICAgIHNhbWUgd2F5IGl0IHdvdWxk
IHRha2UgYW4gb3B0aW9uYWwgd3JhcHBlciB0eXBlIGFyZ3VtZW50LCB3aXRoIGEgV3JhcHBlclR5
cGUqLAorICAgICAgICAob3IgUmVmUHRyPFdyYXBwZXJUeXBlPiBmb3IgY2FsbGJhY2tzKSB0aGF0
IGdldHMgcGFzc2VkIGEgbnVsbHB0ciBpZiB0aGUKKyAgICAgICAgcGFyYW1ldGVyIHdhcyBvbW1p
dGVkLgorCisgICAgICAgIEFkb3B0IHRoaXMgaW4gR2VvbG9jYXRpb24uaWRsLCB3aGljaCBoYXMg
aGFkIGEgRklYTUUgZm9yIHRoaXMgZm9yIGEgbG9uZworICAgICAgICB0aW1lLgorCisgICAgICAg
ICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5pZGw6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RPYmouaWRsOgorCiAyMDIwLTEwLTAxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI2Nzc4MSk6IEFTU0VSVElPTiBGQUlM
RUQ6IE9wdGlvbmFsLmgoNTI1KSA6IFQgKldURjo6T3B0aW9uYWw8V2ViQ29yZTo6TGF5b3V0OjpM
aW5lUnVuOjpUZXh0Pjo6b3BlcmF0b3ItPigpIG9uIDE2IGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2Nv
bnRleHQvKiB0ZXN0cwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9H
ZW9sb2NhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvbi5pZGwJKHJldmlzaW9uIDI2Nzg0NCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCwxNCArMzAsMTIgQEAKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPVJlYWNoYWJsZUZyb21O
YXZpZ2F0b3IsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIEdlb2xvY2F0aW9uIHsK
LSAgICAvLyBGSVhNRTogUG9zaXRpb25FcnJvckNhbGxiYWNrIHNob3VsZCBub3QgYmUgbnVsbGFi
bGUKICAgICB1bmRlZmluZWQgZ2V0Q3VycmVudFBvc2l0aW9uKFBvc2l0aW9uQ2FsbGJhY2sgc3Vj
Y2Vzc0NhbGxiYWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFBvc2l0
aW9uRXJyb3JDYWxsYmFjaz8gZXJyb3JDYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcHRpb25hbCBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjaywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBQb3NpdGlvbk9wdGlvbnMgb3B0aW9ucyk7
CiAKLSAgICAvLyBGSVhNRTogUG9zaXRpb25FcnJvckNhbGxiYWNrIHNob3VsZCBub3QgYmUgbnVs
bGFibGUKICAgICBsb25nIHdhdGNoUG9zaXRpb24oUG9zaXRpb25DYWxsYmFjayBzdWNjZXNzQ2Fs
bGJhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFBvc2l0aW9uRXJyb3JDYWxs
YmFjaz8gZXJyb3JDYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgUG9z
aXRpb25FcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAg
IG9wdGlvbmFsIFBvc2l0aW9uT3B0aW9ucyBvcHRpb25zKTsKIAogICAgIHVuZGVmaW5lZCBjbGVh
cldhdGNoKGxvbmcgd2F0Y2hJZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjY3ODQ0KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcg
Y29weSkKQEAgLTE4MjQsOCArMTgyNCwyMSBAQCBzdWIgUGFzc0FyZ3VtZW50RXhwcmVzc2lvbgog
ICAgICAgICByZXR1cm4gIiR7bmFtZX0ucmVsZWFzZU5vbk51bGwoKSI7CiAgICAgfQogCi0gICAg
cmV0dXJuICIke25hbWV9LnJlbGVhc2VOb25OdWxsKCkiIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0Nh
bGxiYWNrSW50ZXJmYWNlKCR0eXBlKSB8fCAkY29kZUdlbmVyYXRvci0+SXNDYWxsYmFja0Z1bmN0
aW9uKCR0eXBlKSB8fCAoJGNvZGVHZW5lcmF0b3ItPklzUHJvbWlzZVR5cGUoJHR5cGUpICYmIChy
ZWYoJGNvbnRleHQpIG5lICJJRExBcmd1bWVudCIgfHwgISRjb250ZXh0LT5pc09wdGlvbmFsKSk7
Ci0gICAgcmV0dXJuICIqJHtuYW1lfSIgaWYgJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUo
JHR5cGUpOworICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkdHlwZSkpIHsK
KyAgICAgICAgcmV0dXJuICJXVEZNb3ZlKCR7bmFtZX0pIiBpZiByZWYoJGNvbnRleHQpIGVxICJJ
RExBcmd1bWVudCIgJiYgJGNvbnRleHQtPmlzT3B0aW9uYWw7CisgICAgICAgIHJldHVybiAiJHtu
YW1lfS5yZWxlYXNlTm9uTnVsbCgpIjsKKyAgICB9CisKKyAgICBpZiAoJGNvZGVHZW5lcmF0b3It
PklzQ2FsbGJhY2tJbnRlcmZhY2UoJHR5cGUpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNr
RnVuY3Rpb24oJHR5cGUpKSB7CisgICAgICAgIHJldHVybiAiV1RGTW92ZSgke25hbWV9KSIgaWYg
cmVmKCRjb250ZXh0KSBlcSAiSURMQXJndW1lbnQiICYmICRjb250ZXh0LT5pc09wdGlvbmFsOwor
ICAgICAgICByZXR1cm4gIiR7bmFtZX0ucmVsZWFzZU5vbk51bGwoKSI7CisgICAgfQorCisgICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKSkgeworICAgICAgICByZXR1
cm4gIiR7bmFtZX0iIGlmIHJlZigkY29udGV4dCkgZXEgIklETEFyZ3VtZW50IiAmJiAkY29udGV4
dC0+aXNPcHRpb25hbDsKKyAgICAgICAgcmV0dXJuICIqJHtuYW1lfSI7CisgICAgfQorCiAgICAg
cmV0dXJuICJXVEZNb3ZlKCR7bmFtZX0pIjsKIH0KIApAQCAtNjE5MSw4ICs2MjA0LDYgQEAgc3Vi
IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKEB7JG9w
ZXJhdGlvbi0+YXJndW1lbnRzfSkgewogICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlw
ZTsKIAotICAgICAgICBhc3NlcnQgIk9wdGlvbmFsIGFyZ3VtZW50cyBvZiBub24tbnVsbGFibGUg
d3JhcHBlciB0eXBlcyBhcmUgbm90IHN1cHBvcnRlZCAoIiAuICRvcGVyYXRpb24tPm5hbWUgLiAi
KSIgaWYgJGFyZ3VtZW50LT5pc09wdGlvbmFsICYmICEkdHlwZS0+aXNOdWxsYWJsZSAmJiAkY29k
ZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSk7Ci0KICAgICAgICAgaWYgKCRhcmd1bWVu
dC0+aXNPcHRpb25hbCAmJiAhZGVmaW5lZCgkYXJndW1lbnQtPmRlZmF1bHQpKSB7CiAgICAgICAg
ICAgICAjIEFzIHBlciBXZWIgSURMLCBvcHRpb25hbCBkaWN0aW9uYXJ5IGFyZ3VtZW50cyBhcmUg
YWx3YXlzIGNvbnNpZGVyZWQgdG8gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgb2YgYW4gZW1wdHkgZGlj
dGlvbmFyeSwgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuCiAgICAgICAgICAgICAkYXJndW1l
bnQtPmRlZmF1bHQoIltdIikgaWYgJGNvZGVHZW5lcmF0b3ItPklzRGljdGlvbmFyeVR5cGUoJHR5
cGUpOwpAQCAtNjIwOSw5ICs2MjIwLDYgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAg
ICAgICAgICAgICAjIEFzIHBlciBXZWIgSURMLCBwYXNzaW5nIHVuZGVmaW5lZCBmb3IgYSBudWxs
YWJsZSBhcmd1bWVudCBpcyB0cmVhdGVkIGFzIG51bGwuIFRoZXJlZm9yZSwgdXNlIG51bGwgYXMK
ICAgICAgICAgICAgICMgZGVmYXVsdCB2YWx1ZSBmb3IgbnVsbGFibGUgYXJndW1lbnRzIHVubGVz
cyBvdGhlcndpc2Ugc3BlY2lmaWVkLgogICAgICAgICAgICAgJGFyZ3VtZW50LT5kZWZhdWx0KCJu
dWxsIikgaWYgJHR5cGUtPmlzTnVsbGFibGU7Ci0KLSAgICAgICAgICAgICMgRm9yIGNhbGxiYWNr
IGFyZ3VtZW50cywgdGhlIGdlbmVyYXRlZCBiaW5kaW5ncyB0cmVhdCB1bmRlZmluZWQgYXMgbnVs
bCwgc28gdXNlIG51bGwgYXMgaW1wbGljaXQgZGVmYXVsdCB2YWx1ZS4KLSAgICAgICAgICAgICRh
cmd1bWVudC0+ZGVmYXVsdCgibnVsbCIpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNrSW50
ZXJmYWNlKCR0eXBlKSB8fCAkY29kZUdlbmVyYXRvci0+SXNDYWxsYmFja0Z1bmN0aW9uKCR0eXBl
KTsKICAgICAgICAgfQogCiAgICAgICAgIG15ICRuYW1lID0gJGFyZ3VtZW50LT5uYW1lOwpAQCAt
NjI0Niw3ICs2MjU0LDkgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAg
ICAgICAgICAgIG15ICRhcmd1bWVudElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICRh
cmd1bWVudC0+dHlwZSk7CiAKICAgICAgICAgICAgICAgICAgICAgbXkgJGRlZmF1bHRWYWx1ZTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VUeXBlKCRh
cmd1bWVudC0+dHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCR0eXBlKSB8fCAkY29kZUdlbmVyYXRvci0+SXNDYWxsYmFj
a0Z1bmN0aW9uKCR0eXBlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJGRlZmF1bHRWYWx1
ZSA9ICJDb252ZXJ0ZXI8JGFyZ3VtZW50SURMVHlwZT46OlJldHVyblR5cGUoKSI7CisgICAgICAg
ICAgICAgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VUeXBlKCRhcmd1
bWVudC0+dHlwZSkgfHwgJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJHR5cGUpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAkZGVmYXVsdFZhbHVlID0gIm51bGxwdHIiOwogICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgJGRlZmF1bHRW
YWx1ZSA9ICJPcHRpb25hbDxDb252ZXJ0ZXI8JGFyZ3VtZW50SURMVHlwZT46OlJldHVyblR5cGU+
KCkiOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmou
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbAkocmV2aXNpb24gMjY3ODQ0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNiArMjQxLDcg
QEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIHVuZGVmaW5l
ZCAgICBtZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZShvcHRpb25hbCBib29sZWFuIGIg
PSBmYWxzZSk7CiAgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhPcHRpb25hbEFueShvcHRpb25h
bCBhbnkgYSk7CiAgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhPcHRpb25hbE9iamVjdChvcHRp
b25hbCBvYmplY3QgYSk7CisgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhPcHRpb25hbFdyYXBw
ZXIob3B0aW9uYWwgVGVzdE9iaiBvYmopOwogICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoT3B0
aW9uYWxOdWxsYWJsZVdyYXBwZXIob3B0aW9uYWwgVGVzdE9iaj8gb2JqKTsKICAgICB1bmRlZmlu
ZWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKG9wdGlvbmFsIFRl
c3RPYmo/IG9iaiA9IG51bGwpOwogICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoT3B0aW9uYWxY
UGF0aE5TUmVzb2x2ZXIob3B0aW9uYWwgWFBhdGhOU1Jlc29sdmVyPyByZXNvbHZlcik7CkBAIC0y
NDgsMTQgKzI0OSwxOCBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93
CiAgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhPcHRpb25hbFByb21pc2Uob3B0aW9uYWwgUHJv
bWlzZTx1bmRlZmluZWQ+IHByb21pc2UpOwogCiAgICAgLy8gQ2FsbGJhY2sgaW50ZXJmYWNlIHBh
cmFtZXRlcnMuCi0gICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhDYWxsYmFja0FyZyhUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2UgY2FsbGJhY2spOwotICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoTm9u
Q2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhsb25nIG5vbkNhbGxiYWNrLCBUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2UgY2FsbGJhY2spOwotICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoQ2FsbGJhY2tB
bmRPcHRpb25hbEFyZyhvcHRpb25hbCBUZXN0Q2FsbGJhY2tJbnRlcmZhY2U/IGNhbGxiYWNrKTsK
KyAgICB1bmRlZmluZWQgICAgbWV0aG9kV2l0aENhbGxiYWNrSW50ZXJmYWNlQXJnKFRlc3RDYWxs
YmFja0ludGVyZmFjZSBjYWxsYmFjayk7CisgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhOdWxs
YWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnKFRlc3RDYWxsYmFja0ludGVyZmFjZT8gY2FsbGJhY2sp
OworICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoTm9uQ2FsbGJhY2tJbnRlcmZhY2VBcmdBbmRD
YWxsYmFja0ludGVyZmFjZUFyZyhsb25nIG5vbkNhbGxiYWNrLCBUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2UgY2FsbGJhY2spOworICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFj
a0ludGVyZmFjZUFyZyhvcHRpb25hbCBUZXN0Q2FsbGJhY2tJbnRlcmZhY2UgY2FsbGJhY2spOwor
ICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJm
YWNlQXJnKG9wdGlvbmFsIFRlc3RDYWxsYmFja0ludGVyZmFjZT8gY2FsbGJhY2spOwogCiAgICAg
Ly8gQ2FsbGJhY2sgZnVuY3Rpb24gcGFyYW1ldGVycy4KICAgICB1bmRlZmluZWQgICAgbWV0aG9k
V2l0aENhbGxiYWNrRnVuY3Rpb25BcmcoVGVzdENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2spOwor
ICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnKFRl
c3RDYWxsYmFja0Z1bmN0aW9uPyBjYWxsYmFjayk7CiAgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdp
dGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmcobG9uZyBub25DYWxsYmFjaywg
VGVzdENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2spOwotICAgIHVuZGVmaW5lZCAgICBtZXRob2RX
aXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnKG9wdGlvbmFsIFRlc3RDYWxsYmFja0Z1
bmN0aW9uPyBjYWxsYmFjayk7CisgICAgdW5kZWZpbmVkICAgIG1ldGhvZFdpdGhPcHRpb25hbENh
bGxiYWNrRnVuY3Rpb25Bcmcob3B0aW9uYWwgVGVzdENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2sp
OworICAgIHVuZGVmaW5lZCAgICBtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrRnVu
Y3Rpb25Bcmcob3B0aW9uYWwgVGVzdENhbGxiYWNrRnVuY3Rpb24/IGNhbGxiYWNrKTsKIAogICAg
IC8vIHN0YXRpYyBtZXRob2RzIHdpdGggJ0NhbGxiYWNrJyBleHRlbmRlZCBhdHRyaWJ1dGUKICAg
ICBzdGF0aWMgdW5kZWZpbmVkICAgIHN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFs
QXJnKG9wdGlvbmFsIFRlc3RDYWxsYmFja0ludGVyZmFjZT8gY2FsbGJhY2spOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAJKHJldmlzaW9uIDI2Nzg0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEwLDE3ICsxNTEw
LDIyIEBAIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG8KIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxCb29sZWFuSXNGYWxzZSk7CiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW55KTsKIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxP
YmplY3QpOworSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFdyYXBwZXIpOwogSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3Jh
cHBlcik7CiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKTsKIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxYUGF0aE5TUmVzb2x2ZXIpOwogSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFJlY29yZCk7CiBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
UHJvbWlzZSk7Ci1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKTsKLUpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxs
YmFja0FyZyk7Ci1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcpOworSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0lu
dGVyZmFjZUFyZyk7CitKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmcpOworSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhO
b25DYWxsYmFja0ludGVyZmFjZUFyZ0FuZENhbGxiYWNrSW50ZXJmYWNlQXJnKTsKK0pTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxDYWxsYmFja0ludGVyZmFjZUFyZyk7CitKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFj
a0ludGVyZmFjZUFyZyk7CiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcpOworSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJs
ZUNhbGxiYWNrRnVuY3Rpb25BcmcpOwogSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVu
Y3Rpb25BcmcpOwotSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmcpOworSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbENhbGxiYWNrRnVuY3Rpb25BcmcpOworSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJh
Y2tGdW5jdGlvbkFyZyk7CiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyk7CiBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0
aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcpOwogI2lmIEVOQUJMRShDb25kaXRpb24xKQpAQCAtMjIy
MCwxNyArMjIyNSwyMiBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJv
CiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UpLCAoaW50cHRyX3Qp
ICgwKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsQW55Iiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFueSksIChpbnRwdHJfdCkgKDApIH0gfSwKICAg
ICB7ICJtZXRob2RXaXRoT3B0aW9uYWxPYmplY3QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0KSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm1l
dGhvZFdpdGhPcHRpb25hbFdyYXBwZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsV3JhcHBlciksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJtZXRob2RX
aXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAg
IHsgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbCIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwpLCAo
aW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29s
dmVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNS
ZXNvbHZlciksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxS
ZWNvcmQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVu
Y3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVu
Y3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUmVjb3Jk
KSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbFByb21pc2Ui
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUHJvbWlzZSksIChp
bnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJtZXRob2RXaXRoQ2FsbGJhY2tBcmciLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKSwgKGludHB0cl90KSAoMSkg
fSB9LAotICAgIHsgIm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNr
QXJnKSwgKGludHB0cl90KSAoMikgfSB9LAotICAgIHsgIm1ldGhvZFdpdGhDYWxsYmFja0FuZE9w
dGlvbmFsQXJnIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Fu
ZE9wdGlvbmFsQXJnKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm1ldGhvZFdpdGhDYWxs
YmFja0ludGVyZmFjZUFyZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxS
YXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2Fs
bGJhY2tJbnRlcmZhY2VBcmcpLCAoaW50cHRyX3QpICgxKSB9IH0sCisgICAgeyAibWV0aG9kV2l0
aE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmcpLCAoaW50cHRyX3QpICgxKSB9
IH0sCisgICAgeyAibWV0aG9kV2l0aE5vbkNhbGxiYWNrSW50ZXJmYWNlQXJnQW5kQ2FsbGJhY2tJ
bnRlcmZhY2VBcmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxi
YWNrSW50ZXJmYWNlQXJnQW5kQ2FsbGJhY2tJbnRlcmZhY2VBcmcpLCAoaW50cHRyX3QpICgyKSB9
IH0sCisgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tJbnRlcmZhY2VBcmciLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tJbnRlcmZhY2VB
cmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFi
bGVDYWxsYmFja0ludGVyZmFjZUFyZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnKSwgKGludHB0cl90KSAoMCkg
fSB9LAogICAgIHsgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKSwgKGludHB0cl90KSAo
MSkgfSB9LAorICAgIHsgIm1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25BcmciLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlv
bkFyZyksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tB
cmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmcpLCAoaW50cHRyX3QpICgy
KSB9IH0sCi0gICAgeyAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9w
dGlvbmFsQXJnKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm1ldGhvZFdpdGhPcHRpb25h
bENhbGxiYWNrRnVuY3Rpb25BcmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQ2FsbGJhY2tGdW5jdGlvbkFyZyksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7
ICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25BcmciLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0Z1bmN0
aW9uQXJnKSwgKGludHB0cl90KSAoMCkgfSB9LAogI2lmIEVOQUJMRShDb25kaXRpb24xKQogICAg
IHsgImNvbmRpdGlvbmFsTWV0aG9kMSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRp
b25hbE1ldGhvZDEpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAjZWxzZQpAQCAtNzAyNiw2ICs3MDM2
LDI2IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3QKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxPYmplY3RCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
bGxGcmFtZSwgIm1ldGhvZFdpdGhPcHRpb25hbE9iamVjdCIpOwogfQogCitzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxXcmFwcGVyQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAg
IFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CisgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CisgICAgYXV0byBvYmogPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVm
aW5lZCgpID8gbnVsbHB0ciA6IGNvbnZlcnQ8SURMSW50ZXJmYWNlPFRlc3RPYmo+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1
bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgIm9iaiIsICJUZXN0
T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFdyYXBwZXIiLCAiVGVzdE9iaiIpOyB9KTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOworICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsV3JhcHBl
cihvYmopOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisK
K0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFdyYXBwZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFdyYXBwZXJCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdp
dGhPcHRpb25hbFdyYXBwZXIiKTsKK30KKwogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVX
cmFwcGVyQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKIHsKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7CkBAIC03MTI2LDcgKzcxNTYsMjkgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdAogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFByb21pc2VCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdp
dGhPcHRpb25hbFByb21pc2UiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnQm9keShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSog
Y2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0ludGVyZmFjZUFyZ0JvZHkoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJ
S0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQorICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICBFbnN1cmVTdGlsbEFs
aXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAg
ICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxs
YmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwg
KmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRN
dXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNr
IiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0pOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Cisg
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CisgICAgaW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tJbnRl
cmZhY2VBcmcoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrSW50ZXJmYWNlQXJnLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tJbnRlcmZhY2VBcmdCb2R5PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhDYWxsYmFja0ludGVyZmFj
ZUFyZyIpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFyZ0Jv
ZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwpAQCAtNzEzNiwxOSArNzE4OCwxOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
IDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENh
bGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtd
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29w
ZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2Fs
bGJhY2tBcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8
SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhy
b3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RX
aXRoTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHRocm93U2NvcGUucmVs
ZWFzZSgpOwotICAgIGltcGwubWV0aG9kV2l0aENhbGxiYWNrQXJnKGNhbGxiYWNrLnJlbGVhc2VO
b25OdWxsKCkpOworICAgIGltcGwubWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VB
cmcoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVDYWxsYmFj
a0ludGVyZmFjZUFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnQm9k
eT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoQ2FsbGJhY2tB
cmciKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFyZ0Jv
ZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWV0aG9kV2l0aE51bGxhYmxl
Q2FsbGJhY2tJbnRlcmZhY2VBcmciKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJn
QW5kQ2FsbGJhY2tBcmdCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQorc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxi
YWNrSW50ZXJmYWNlQXJnQW5kQ2FsbGJhY2tJbnRlcmZhY2VBcmdCb2R5KEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTcxNjEsMTkg
KzcyMTMsMTkgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IGF1dG8gbm9uQ2FsbGJhY2sgPSBjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQx
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKLSAgICBhdXRvIGNhbGxiYWNrID0g
Y29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmciKTsgfSk7CisgICAgYXV0byBj
YWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksICpjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2Jq
ZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJjYWxsYmFjayIsICJUZXN0
T2JqZWN0IiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0ludGVyZmFjZUFyZ0FuZENhbGxiYWNrSW50
ZXJmYWNlQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRo
b2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhXVEZNb3ZlKG5vbkNhbGxiYWNrKSwg
Y2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7CisgICAgaW1wbC5tZXRob2RXaXRoTm9uQ2FsbGJh
Y2tJbnRlcmZhY2VBcmdBbmRDYWxsYmFja0ludGVyZmFjZUFyZyhXVEZNb3ZlKG5vbkNhbGxiYWNr
KSwgY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmcs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE5vbkNhbGxiYWNrSW50ZXJmYWNlQXJnQW5kQ2FsbGJhY2tJbnRlcmZhY2VBcmcs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJn
Qm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoTm9uQ2Fs
bGJhY2tBcmdBbmRDYWxsYmFja0FyZyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFj
a0ludGVyZmFjZUFyZ0FuZENhbGxiYWNrSW50ZXJmYWNlQXJnQm9keT4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tJbnRlcmZhY2VBcmdBbmRD
YWxsYmFja0ludGVyZmFjZUFyZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRp
b25hbEFyZ0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFj
a0ludGVyZmFjZUFyZ0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNzE4MSwxNiArNzIzMywzNiBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFbnN1cmVTdGls
bEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBhdXRv
IGNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rl
c3RDYWxsYmFja0ludGVyZmFjZT4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZh
bHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0Fy
Z3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJj
YWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJn
Iik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5l
ZCgpID8gQ29udmVydGVyPElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJm
YWNlPj46OlJldHVyblR5cGUoKSA6IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0
Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVl
KCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3Vt
ZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxs
YmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrSW50ZXJmYWNl
QXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRo
Q2FsbGJhY2tBbmRPcHRpb25hbEFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgaW1wbC5tZXRo
b2RXaXRoT3B0aW9uYWxDYWxsYmFja0ludGVyZmFjZUFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxi
YWNrQW5kT3B0aW9uYWxBcmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tJbnRlcmZhY2VBcmcs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnQm9keT4o
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoQ2FsbGJhY2tBbmRP
cHRpb25hbEFyZyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrSW50ZXJm
YWNlQXJnQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRo
T3B0aW9uYWxDYWxsYmFja0ludGVyZmFjZUFyZyIpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZl
cnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2U+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVj
dEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9i
amVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnIik7
IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CisgICAgaW1wbC5tZXRob2RXaXRoT3B0aW9u
YWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxO
dWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnQm9keT4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50
ZXJmYWNlQXJnIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnQm9keShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSog
Y2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcykKQEAgLTcyMTUsNiArNzI4NywyOCBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oanNUZXN0T2JqUHJvdG90CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rp
b25BcmdCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhD
YWxsYmFja0Z1bmN0aW9uQXJnIik7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNr
RnVuY3Rpb25BcmdCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5V
U0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7
CisgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8
SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RX
aXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7CisgICAgaW1wbC5tZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnKFdU
Rk1vdmUoY2FsbGJhY2spKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnQm9keT4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0
aW9uQXJnIik7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVu
Y3Rpb25BcmdCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTcyNDAsNyArNzMzNCwyNyBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNh
bGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZ0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FsbEZyYW1lLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlv
bkFyZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJn
Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxG
cmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQ
YXJhbWV0ZXIgY2FzdGVkVGhpcykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrRnVuY3Rp
b25BcmdCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
KyAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKTsKKyAgICBhdXRvIGNhbGxiYWNrID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQo
KSA/IENvbnZlcnRlcjxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+
Pjo6UmV0dXJuVHlwZSgpIDogY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxi
YWNrRnVuY3Rpb24+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVz
dEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNr
IiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tGdW5jdGlvbkFyZyIp
OyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOworICAgIHRocm93U2NvcGUucmVsZWFzZSgpOworICAgIGltcGwubWV0aG9kV2l0aE9wdGlv
bmFsQ2FsbGJhY2tGdW5jdGlvbkFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tG
dW5jdGlvbkFyZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tG
dW5jdGlvbkFyZ0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWV0aG9k
V2l0aE9wdGlvbmFsQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOworfQorCitzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25BcmdCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQogewog
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTcyNDgsMTYgKzczNjIs
MTYgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNF
RF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2Fs
bGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2Fs
bGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBj
b252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5j
dGlvbj4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVu
Y3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRl
c3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJn
Iik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgaW1wbC5tZXRob2RXaXRoQ2Fs
bGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBpbXBs
Lm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZyhXVEZNb3ZlKGNh
bGxiYWNrKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZywgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCitKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxO
dWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25BcmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewotICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhD
YWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmdCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmciKTsK
KyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25BcmdC
b2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZFdpdGhPcHRpb25h
bE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdp
dGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lKQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMjY3ODQzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMjAtMDktMzAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgor
CisgICAgICAgIFtXZWJJRExdIEFkZCBzdXBwb3J0IGZvciBub24tbnVsbGFibGUgb3B0aW9uYWwg
d3JhcHBlciB0eXBlIGFyZ3VtZW50cyB0byBvcGVyYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcxNjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2FyZ3VtZW50
LXR5cGVzLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vYXJndW1lbnQtdHlw
ZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICBVcGRhdGUgdGVzdHMgbm93IHRoYXQgdGhlIHNlY29u
ZCBhcmd1bWVudCB0byBHZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24KKyAgICAgICAgYW5k
IEdlb2xvY2F0aW9uLndhdGNoUG9zaXRpb24gYXJlIG5vbi1udWxsYWJsZS4KKwogMjAyMC0xMC0w
MSAgS2FybCBSYWNrbGVyICA8cmFja2xlckBhcHBsZS5jb20+CiAKICAgICAgICAgWyBpT1MgMTMg
d2syIGV3cyBdOiAyIGluLWFwcC1icm93c2VyLXByaXZhY3kgYW5kIDEgV1BUIGFyZSBjb25zdGFu
dCBmYWlsdXJlcyBzbG93aW5nIGRvd24gZXdzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi9hcmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vYXJndW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAyNjc4NDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9h
cmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3LDcgKzE3LDcg
QEAgUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvcwogUEFTUyBuYXZpZ2F0
b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKC1JbmZpbml0eSkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ3N1Y2Nlc3NDYWxsYmFjaycpIHRvIEdlb2xvY2F0
aW9uLmdldEN1cnJlbnRQb3NpdGlvbiBtdXN0IGJlIGEgZnVuY3Rpb24uCiBQQVNTIG5hdmlnYXRv
ci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oInN0cmluZyIpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdzdWNjZXNzQ2FsbGJhY2snKSB0byBHZW9sb2NhdGlv
bi5nZXRDdXJyZW50UG9zaXRpb24gbXVzdCBiZSBhIGZ1bmN0aW9uLgogUEFTUyBuYXZpZ2F0b3Iu
Z2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCkg
ZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRD
dXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgbnVsbCkgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlG
dW5jdGlvbiwgbnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMiAoJ2Vy
cm9yQ2FsbGJhY2snKSB0byBHZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24gbXVzdCBiZSBh
IGZ1bmN0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9u
KGVtcHR5RnVuY3Rpb24sIHt9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAy
ICgnZXJyb3JDYWxsYmFjaycpIHRvIEdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbiBtdXN0
IGJlIGEgZnVuY3Rpb24uCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9z
aXRpb24oZW1wdHlGdW5jdGlvbiwgb2JqZWN0VGhyb3dpbmdFeGNlcHRpb24pIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDIgKCdlcnJvckNhbGxiYWNrJykgdG8gR2VvbG9jYXRp
b24uZ2V0Q3VycmVudFBvc2l0aW9uIG11c3QgYmUgYSBmdW5jdGlvbi4KIFBBU1MgbmF2aWdhdG9y
Lmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCBlbXB0eUZ1bmN0
aW9uKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL2FyZ3VtZW50LXR5cGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vYXJndW1lbnQtdHlwZXMuaHRtbAkocmV2aXNpb24gMjY3
ODQzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vYXJndW1lbnQtdHlwZXMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCB0ZXN0KCduYXZpZ2F0b3IuZ2Vv
bG9jYXRpb24uZ2V0Q3VycmVudFBvCiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3Vy
cmVudFBvc2l0aW9uKCJzdHJpbmciKScsIHRydWUsICJUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdz
dWNjZXNzQ2FsbGJhY2snKSB0byBHZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24gbXVzdCBi
ZSBhIGZ1bmN0aW9uIik7CiAKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50
UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkKScsIGZhbHNlKTsKLXRlc3QoJ25hdmln
YXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgbnVsbCkn
LCBmYWxzZSk7Cit0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9u
KGVtcHR5RnVuY3Rpb24sIG51bGwpJywgdHJ1ZSwgIlR5cGVFcnJvcjogQXJndW1lbnQgMiAoJ2Vy
cm9yQ2FsbGJhY2snKSB0byBHZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24gbXVzdCBiZSBh
IGZ1bmN0aW9uIik7CiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0
aW9uKGVtcHR5RnVuY3Rpb24sIHt9KScsIHRydWUsICJUeXBlRXJyb3I6IEFyZ3VtZW50IDIgKCdl
cnJvckNhbGxiYWNrJykgdG8gR2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uIG11c3QgYmUg
YSBmdW5jdGlvbiIpOwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3Np
dGlvbihlbXB0eUZ1bmN0aW9uLCBvYmplY3RUaHJvd2luZ0V4Y2VwdGlvbiknLCB0cnVlLCAiVHlw
ZUVycm9yOiBBcmd1bWVudCAyICgnZXJyb3JDYWxsYmFjaycpIHRvIEdlb2xvY2F0aW9uLmdldEN1
cnJlbnRQb3NpdGlvbiBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9s
b2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgZW1wdHlGdW5jdGlvbikn
LCBmYWxzZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>