<?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>219820</bug_id>
          
          <creation_ts>2020-12-11 21:01:11 -0800</creation_ts>
          <short_desc>Remove WKDownloadDelegate.didWriteData</short_desc>
          <delta_ts>2020-12-14 11:28:18 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>james.savage</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1714223</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-11 21:01:11 -0800</bug_when>
    <thetext>Remove WKDownloadDelegate.didWriteData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714224</commentid>
    <comment_count>1</comment_count>
      <attachid>416086</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-11 21:03:00 -0800</bug_when>
    <thetext>Created attachment 416086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714275</commentid>
    <comment_count>2</comment_count>
      <attachid>416086</attachid>
    <who name="James Savage">james.savage</who>
    <bug_when>2020-12-12 13:36:16 -0800</bug_when>
    <thetext>Comment on attachment 416086
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKDownload.mm:221
&gt; +        downloadProgress = [NSProgress progressWithTotalUnitCount:-1];

Presumably -1 is a sentinel for undetermined/indeterminate progress? Why was this 100 originally?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714278</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-12 14:00:07 -0800</bug_when>
    <thetext>It is, and a download that has an unknown content length uses -1.  I initially used 100 based on NSURLSession&apos;s behavior, but I decided it would be better to consistently use -1 for non-determined length.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714279</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-12 14:00:47 -0800</bug_when>
    <thetext>james.savage@apple.com does not have reviewer permissions according to https://svn.webkit.org/repository/webkit/trunk/Tools/Scripts/webkitpy/common/config/contributors.json.

Rejecting attachment 416086 from commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714315</commentid>
    <comment_count>5</comment_count>
      <attachid>416086</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-13 08:37:39 -0800</bug_when>
    <thetext>Comment on attachment 416086
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKDownload.mm:221
&gt;&gt; +        downloadProgress = [NSProgress progressWithTotalUnitCount:-1];
&gt; 
&gt; Presumably -1 is a sentinel for undetermined/indeterminate progress? Why was this 100 originally?

Maybe throwing the -1 into a constant will help clear this up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714478</commentid>
    <comment_count>6</comment_count>
      <attachid>416169</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-14 10:15:50 -0800</bug_when>
    <thetext>Created attachment 416169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714511</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-14 11:27:58 -0800</bug_when>
    <thetext>Committed r270790: &lt;https://trac.webkit.org/changeset/270790&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416169.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714512</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-14 11:28:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/72306511&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416086</attachid>
            <date>2020-12-11 21:03:00 -0800</date>
            <delta_ts>2020-12-14 10:15:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219820-20201211210300.patch</filename>
            <type>text/plain</type>
            <size>24657</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgxY2VhMDEwMjYxNTFkNDk0
ODA2MmZjMTFlOGFlYjllMTM5NTI3Y2MuLjlkZjdkYTA1NWZkMjQ5NDJiNDRiMmIwYTBhZWI1NDg0
MTUyODA0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMTItMTEgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgV0tE
b3dubG9hZERlbGVnYXRlLmRpZFdyaXRlRGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQVBJIHJldmlldyByZXZlYWxlZCBpdCB3YXMgcmVkdW5kYW50
IHdpdGggV0tEb3dubG9hZC5wcm9ncmVzcywgd2hpY2ggaGFzIEtWTy1jb21wbGlhbnQgdG90YWxV
bml0Q291bnQgYW5kIGNvbXBsZXRlZFVuaXRDb3VudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tEb3dubG9hZC5tbToKKyAgICAgICAgKC1bV0tEb3dubG9hZCBwcm9ncmVzc10p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZERlbGVnYXRlLmg6CisK
IDIwMjAtMTItMTEgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgUENNOiBDaGFuZ2UgZGVidWdNb2RlU2Vjb25kc1VudGlsU2VuZCBmcm9tIDYwIHNlY29uZHMg
dG8gMTAgc2Vjb25kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLRG93bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tE
b3dubG9hZC5tbQppbmRleCBlYTgzZTZmY2I2Mjc1Mzc5M2M1MjU4NWJhZTQ5NWQwNmM2MzVjMGU0
Li4zY2VhMDYwMTQ4MDM5ZmU0YWNlZDMwNDJhNzhkNzMxMjE4ODYwMWFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5tbQpAQCAtNDIsNyArNDIs
NiBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKICAgICAgICAgLCBt
X3Jlc3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpu
ZXdSZXF1ZXN0OmRlY2lzaW9uSGFuZGxlcjopXSkKICAgICAgICAgLCBtX3Jlc3BvbmRzVG9EaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNv
bXBsZXRpb25IYW5kbGVyOildKQotICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZFdyaXRlRGF0YShb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDpkaWRXcml0ZURh
dGE6dG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTopXSkKICAgICAg
ICAgLCBtX3Jlc3BvbmRzVG9EaWRGaW5pc2goW21fZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihkb3dubG9hZERpZEZpbmlzaDopXSkKICAgICAgICAgLCBtX3Jlc3BvbmRzVG9E
aWRGYWlsV2l0aEVycm9yKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRv
d25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6cmVzdW1lRGF0YTopXSkKICAgICB7CkBAIC0xNDAsMTYg
KzEzOSwxMSBAQCBwcml2YXRlOgogICAgICAgICB9KS5nZXQoKV07CiAgICAgfQogCi0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCB1aW50NjRf
dCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSBmaW5hbAorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2Vi
S2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgdWludDY0X3QsIHVpbnQ2NF90IHRvdGFsQnl0
ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSBmaW5hbAogICAg
IHsKICAgICAgICAgTlNQcm9ncmVzcyAqcHJvZ3Jlc3MgPSB3cmFwcGVyKGRvd25sb2FkKS5wcm9n
cmVzczsKLSAgICAgICAgcHJvZ3Jlc3MuY29tcGxldGVkVW5pdENvdW50ID0gdG90YWxCeXRlc1dy
aXR0ZW47CiAgICAgICAgIHByb2dyZXNzLnRvdGFsVW5pdENvdW50ID0gdG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZTsKLQotICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0Rp
ZFdyaXRlRGF0YSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBbbV9kZWxlZ2F0ZSBk
b3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkaWRXcml0ZURhdGE6Ynl0ZXNXcml0dGVuIHRvdGFs
Qnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6
dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV07CisgICAgICAgIHByb2dyZXNzLmNvbXBsZXRlZFVu
aXRDb3VudCA9IHRvdGFsQnl0ZXNXcml0dGVuOwogICAgIH0KIAogICAgIHZvaWQgZGlkRmluaXNo
KFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIGZpbmFsCkBAIC0xODAsNyArMTc0LDYg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9yZXNwb25kc1RvV2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24gOiAxOwogICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlIDogMTsKLSAgICBib29sIG1fcmVzcG9uZHNUb0RpZFdyaXRlRGF0YSA6IDE7CiAg
ICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRGaW5pc2ggOiAxOwogICAgIGJvb2wgbV9yZXNwb25kc1Rv
RGlkRmFpbFdpdGhFcnJvciA6IDE7CiB9OwpAQCAtMjI1LDcgKzIxOCw3IEBAIHByaXZhdGU6CiB7
CiAgICAgTlNQcm9ncmVzcyogZG93bmxvYWRQcm9ncmVzcyA9IF9kb3dubG9hZC0+cHJvZ3Jlc3Mo
KTsKICAgICBpZiAoIWRvd25sb2FkUHJvZ3Jlc3MpIHsKLSAgICAgICAgZG93bmxvYWRQcm9ncmVz
cyA9IFtOU1Byb2dyZXNzIHByb2dyZXNzV2l0aFRvdGFsVW5pdENvdW50OjEwMF07CisgICAgICAg
IGRvd25sb2FkUHJvZ3Jlc3MgPSBbTlNQcm9ncmVzcyBwcm9ncmVzc1dpdGhUb3RhbFVuaXRDb3Vu
dDotMV07CiAKICAgICAgICAgZG93bmxvYWRQcm9ncmVzcy5raW5kID0gTlNQcm9ncmVzc0tpbmRG
aWxlOwogICAgICAgICBkb3dubG9hZFByb2dyZXNzLmZpbGVPcGVyYXRpb25LaW5kID0gTlNQcm9n
cmVzc0ZpbGVPcGVyYXRpb25LaW5kRG93bmxvYWRpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZERlbGVnYXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZERlbGVnYXRlLmgKaW5kZXggNDIyNTMw
NWU0NDdjYzdmNGE0OTk5MDk3YmIzMjg1MGFlODI5OTk0MC4uMzczMTZjMjQ1NTQ3ZDYxMzRlNWI1
YWIzNDMzM2ExYWUxYjg0NmNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLRG93bmxvYWREZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkRGVsZWdhdGUuaApAQCAtODIsMTcgKzgyLDYgQEAgTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KICAqLwogLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAq
KWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKiBf
TnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOwogCi0vKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVu
IHRoZSBkb3dubG9hZCBoYXMgcmVjZWl2ZWQgYW5kIHdyaXR0ZW4gZGF0YSB0byB0aGUgZGVzdGlu
YXRpb24uCi0gQHBhcmFtIGRvd25sb2FkIFRoZSBkb3dubG9hZCB0aGF0IGhhcyB3cml0dGVuIGRh
dGEuCi0gQHBhcmFtIGJ5dGVzV3JpdHRlbiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCi0g
QHBhcmFtIHRvdGFsQnl0ZXNXcml0dGVuIFRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgd3JpdHRl
bi4KLSBAcGFyYW0gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSBUaGUgdG90YWwgbnVtYmVyIG9m
IGJ5dGVzIGV4cGVjdGVkIHRvIGJlIHdyaXR0ZW4uCi0gQGRpc2N1c3Npb24gSWYgdGhpcyBkb3du
bG9hZCB3YXMgdGhlIHJlc3VsdCBvZiByZXN1bWluZyBhIHByZXZpb3VzIGRvd25sb2FkLCB0aGVu
Ci0gdG90YWxCeXRlc1dyaXR0ZW4gd2lsbCBiZSBieXRlc1dyaXR0ZW4gcGx1cyB0aGUgbnVtYmVy
IG9mIGJ5dGVzIHRoYXQgaGFkIGFscmVhZHkgYmVlbiBkb3dubG9hZGVkLgotIElmIHRoZSB0b3Rh
bCBudW1iZXIgb2YgYnl0ZXMgaXMgdW5rbm93biwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSB3
aWxsIGJlIC0xLgotICovCi0tICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQg
ZGlkV3JpdGVEYXRhOihpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjooaW50
NjRfdCl0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOihpbnQ2NF90
KXRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU7Ci0KIC8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4g
dGhlIGRvd25sb2FkIGhhcyBmaW5pc2hlZCBzdWNjZXNzZnVsbHkuCiAgQHBhcmFtIGRvd25sb2Fk
IFRoZSBkb3dubG9hZCB0aGF0IGZpbmlzaGVkLgogICovCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjc4NjcxNTMwMmZkODFmZmY3ZGM5YjEwYjA2
M2ZmZjhmZDNhYWYzNS4uMTUxN2E1YzA5YjM3MjgxOTJmYWNhNzE4ZjQ5NDFiZWY2MzY1OTMzYiAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDIwLTEyLTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFdLRG93bmxvYWREZWxlZ2F0ZS5kaWRXcml0ZURh
dGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTgy
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKC1bRG93
bmxvYWRPYnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250
ZXh0Ol0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bXV0YXRlRmlsZSk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW1Rl
c3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRl
bjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOl0pOiBEZWxldGVkLgorCiAyMDIwLTEyLTExICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFRyYWNrcGFk
IGFuZCBNb3VzZSBzY3JvbGwgZXZlbnRzIG9uIGlQYWQgb25seSBmaXJlICJwb2ludGVybW92ZSIg
LS0gbm90ICJ3aGVlbCIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvRG93bmxvYWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0Rvd25sb2FkLm1tCmluZGV4IGQ5NjFhYTg4ZDAwZGM2NjFlNTZlZjYyMDhmZWRkNTg5YjYw
ZmEzY2UuLjUwMWQzYTQ1ZGEyZTU5ZWI2YTA1ZDFjYTc1NmZiYWVkMDNkMTQ5Y2IgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQpAQCAt
MTQyNSw2ICsxNDI1LDIyIEBAIFRFU1QoX1dLRG93bmxvYWQsIFN1YmZyYW1lU2VjdXJpdHlPcmln
aW4pCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCitAaW50ZXJm
YWNlIERvd25sb2FkT2JzZXJ2ZXIgOiBOU09iamVjdAorQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIHZvaWQgKF5wcm9ncmVzc0NoYW5nZUNhbGxiYWNrKShpbnQ2NF90LCBpbnQ2NF90KTsKK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIERvd25sb2FkT2JzZXJ2ZXIKKworLSAodm9pZClvYnNlcnZl
VmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBj
aGFuZ2U6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKiljaGFuZ2UgY29udGV4dDoodm9p
ZCAqKWNvbnRleHQKK3sKKyAgICBpZiAoc2VsZi5wcm9ncmVzc0NoYW5nZUNhbGxiYWNrKSB7Cisg
ICAgICAgIE5TUHJvZ3Jlc3MgKnByb2dyZXNzID0gKE5TUHJvZ3Jlc3MgKilvYmplY3Q7CisgICAg
ICAgIHNlbGYucHJvZ3Jlc3NDaGFuZ2VDYWxsYmFjayhwcm9ncmVzcy5jb21wbGV0ZWRVbml0Q291
bnQsIHByb2dyZXNzLnRvdGFsVW5pdENvdW50KTsKKyAgICB9Cit9CisKK0BlbmQKKwogbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewogCiBzdGF0aWMgdm9pZCBjaGVja0NhbGxiYWNrUmVjb3JkKFRl
c3REb3dubG9hZERlbGVnYXRlICpkZWxlZ2F0ZSwgVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+IGV4
cGVjdGVkQ2FsbGJhY2tzKQpAQCAtMTQ2Miw3ICsxNDc4LDYgQEAgVEVTVChXS0Rvd25sb2FkLCBG
aW5pc2hTdWNjZXNzZnVsbHkpCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25S
ZXNwb25zZSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVj
YW1lRG93bmxvYWQsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9u
LAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCiAgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAogICAgIH0pOwogfQpAQCAtMTQ4OSwxNSArMTUwNCwxNiBA
QCBzdGF0aWMgdm9pZCByZXN1bWVBbmRGaW5pc2hEb3dubG9hZChOU0RhdGEgKnJlc3VtZURhdGEs
IE5TVVJMICpkZXN0aW5hdGlvbikKICAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25V
c2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcg
Kiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH07Ci0gICAgICAgIGRlbGVnYXRlLmRpZFdyaXRl
RGF0YSA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIGludDY0X3QgYnl0ZXNXcml0dGVuLCBpbnQ2
NF90IHRvdGFsQnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUp
IHsKLSAgICAgICAgICAgIEVYUEVDVF9FUShkb3dubG9hZCwgcmV0YWluZWREb3dubG9hZC5nZXQo
KSk7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoYnl0ZXNXcml0dGVuICsgNTAwMCwgdG90YWxCeXRl
c1dyaXR0ZW4pOwotICAgICAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3Jp
dGUsIDEwMDAwKTsKLSAgICAgICAgICAgIEVYUEVDVF9FUShkb3dubG9hZC5wcm9ncmVzcy50b3Rh
bFVuaXRDb3VudCwgMTAwMDApOwotICAgICAgICAgICAgRVhQRUNUX0VRKGRvd25sb2FkLnByb2dy
ZXNzLmNvbXBsZXRlZFVuaXRDb3VudCwgdG90YWxCeXRlc1dyaXR0ZW4pOwotICAgICAgICAgICAg
aWYgKGJ5dGVzV3JpdHRlbiA9PSA1MDAwKQorCisgICAgICAgIGF1dG8gb2JzZXJ2ZXIgPSBhZG9w
dE5TKFtEb3dubG9hZE9ic2VydmVyIG5ld10pOworICAgICAgICBvYnNlcnZlci5nZXQoKS5wcm9n
cmVzc0NoYW5nZUNhbGxiYWNrID0gXihpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3Rh
bEJ5dGVDb3VudCkgeworICAgICAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSAxMDAwMCkgewor
ICAgICAgICAgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVDb3VudCwgMTAwMDApOwogICAgICAg
ICAgICAgICAgIGRvd25sb2FkZWRTZWNvbmQ1ayA9IHRydWU7CisgICAgICAgICAgICB9CiAgICAg
ICAgIH07CisgICAgICAgIFtyZXRhaW5lZERvd25sb2FkLmdldCgpLnByb2dyZXNzIGFkZE9ic2Vy
dmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJjb21wbGV0ZWRVbml0Q291bnQiIG9wdGlv
bnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyB8IE5TS2V5VmFsdWVPYnNlcnZpbmdPcHRp
b25Jbml0aWFsIGNvbnRleHQ6bmlsXTsKKwogICAgICAgICBfX2Jsb2NrIGJvb2wgZGlkRmluaXNo
ID0gZmFsc2U7CiAgICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25s
b2FkICpkb3dubG9hZCkgewogICAgICAgICAgICAgRVhQRUNUX0VRKHJldGFpbmVkRG93bmxvYWQu
Z2V0KCksIGRvd25sb2FkKTsKQEAgLTE1MDcsOSArMTUyMywxMCBAQCBzdGF0aWMgdm9pZCByZXN1
bWVBbmRGaW5pc2hEb3dubG9hZChOU0RhdGEgKnJlc3VtZURhdGEsIE5TVVJMICpkZXN0aW5hdGlv
bikKIAogICAgICAgICBVdGlsOjpydW4oJmRpZEZpbmlzaCk7CiAKKyAgICAgICAgW3JldGFpbmVk
RG93bmxvYWQuZ2V0KCkucHJvZ3Jlc3MgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9y
S2V5UGF0aDpAImNvbXBsZXRlZFVuaXRDb3VudCIgY29udGV4dDpuaWxdOworCiAgICAgICAgIGNo
ZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMoZGVzdGluYXRpb24pOwogICAgICAgICBjaGVja0Nh
bGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7Ci0gICAgICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
aWRXcml0ZURhdGEsCiAgICAgICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKICAg
ICAgICAgfSk7CiAgICAgICAgIEVYUEVDVF9FUShyZXRhaW5lZERvd25sb2FkLmdldCgpLndlYlZp
ZXcsIHdlYlZpZXcuZ2V0KCkpOwpAQCAtMTUxOSwxNyArMTUzNiwyMiBAQCBzdGF0aWMgdm9pZCBy
ZXN1bWVBbmRGaW5pc2hEb3dubG9hZChOU0RhdGEgKnJlc3VtZURhdGEsIE5TVVJMICpkZXN0aW5h
dGlvbikKICAgICBFWFBFQ1RfTlVMTChyZXRhaW5lZERvd25sb2FkLmdldCgpLndlYlZpZXcpOwog
fQogCi1zdGF0aWMgdm9pZCB3YWl0Rm9yRmlyc3Q1ayhUZXN0RG93bmxvYWREZWxlZ2F0ZSAqZGVs
ZWdhdGUpCitzdGF0aWMgdm9pZCB3YWl0Rm9yRmlyc3Q1ayhSZXRhaW5QdHI8V0tEb3dubG9hZD4m
IGRvd25sb2FkKQogewogICAgIF9fYmxvY2sgYm9vbCBkb3dubG9hZGVkRmlyc3Q1ayA9IGZhbHNl
OwotICAgIEFTU0VSVCghZGVsZWdhdGUuZGlkV3JpdGVEYXRhKTsKLSAgICBkZWxlZ2F0ZS5kaWRX
cml0ZURhdGEgPSBeKFdLRG93bmxvYWQgKiwgaW50NjRfdCBieXRlc1dyaXR0ZW4sIGludDY0X3Qg
dG90YWxCeXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgewot
ICAgICAgICBFWFBFQ1RfRVEoYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbik7Ci0gICAg
ICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCAxMDAwMCk7Ci0gICAgICAg
IGlmIChieXRlc1dyaXR0ZW4gPT0gNTAwMCkKKyAgICAKKyAgICBhdXRvIG9ic2VydmVyID0gYWRv
cHROUyhbRG93bmxvYWRPYnNlcnZlciBuZXddKTsKKyAgICBvYnNlcnZlci5nZXQoKS5wcm9ncmVz
c0NoYW5nZUNhbGxiYWNrID0gXihpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5
dGVDb3VudCkgeworICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IDUwMDApIHsKKyAgICAgICAg
ICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVDb3VudCwgMTAwMDApOwogICAgICAgICAgICAgZG93bmxv
YWRlZEZpcnN0NWsgPSB0cnVlOworICAgICAgICB9CiAgICAgfTsKKyAgICB3aGlsZSAoIWRvd25s
b2FkKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAgIFtkb3dubG9hZC5nZXQoKS5w
cm9ncmVzcyBhZGRPYnNlcnZlcjpvYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAiY29tcGxldGVk
VW5pdENvdW50IiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgfCBOU0tleVZh
bHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCBjb250ZXh0Om5pbF07CiAgICAgVXRpbDo6cnVuKCZk
b3dubG9hZGVkRmlyc3Q1ayk7CisgICAgW2Rvd25sb2FkLmdldCgpLnByb2dyZXNzIHJlbW92ZU9i
c2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJjb21wbGV0ZWRVbml0Q291bnQiIGNv
bnRleHQ6bmlsXTsKIH0KIAogVEVTVChXS0Rvd25sb2FkLCBDYW5jZWxBbmRSZXN1bWUpCkBAIC0x
NTUwLDcgKzE1NzIsNyBAQCBURVNUKFdLRG93bmxvYWQsIENhbmNlbEFuZFJlc3VtZSkKICAgICB9
OwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07Ci0gICAgd2Fp
dEZvckZpcnN0NWsoZGVsZWdhdGUpOworICAgIHdhaXRGb3JGaXJzdDVrKHJldGFpbmVkRG93bmxv
YWQpOwogCiAgICAgX19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7
CiAgICAgW3JldGFpbmVkRG93bmxvYWQgY2FuY2VsOl4oTlNEYXRhICpyZXN1bWVEYXRhKSB7CkBA
IC0xNTY1LDI0ICsxNTg3LDIzIEBAIFRFU1QoV0tEb3dubG9hZCwgQ2FuY2VsQW5kUmVzdW1lKQog
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAogICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKLSAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkV3JpdGVEYXRhCiAgICAgfSk7CiB9CiAKIFRFU1QoV0tEb3dubG9hZCwgRmFp
bEFuZFJlc3VtZSkKIHsKICAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0
ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWRE
b3dubG9hZDsKICAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRlRVRh
Zzo6WWVzLCBbJl0gKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgewotICAg
ICAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisgICAgICAgIHdhaXRGb3JGaXJzdDVrKHJl
dGFpbmVkRG93bmxvYWQpOwogICAgICAgICBjb25uZWN0aW9uLnRlcm1pbmF0ZSgpOwogICAgIH0p
OwogICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RF
eGlzdCgpOwogICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2Vd
OwogICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CiAKLSAgICBfX2Js
b2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOwotICAgIF9fYmxvY2sg
UmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOwotICAgIGRlbGVnYXRlLm5hdmln
YXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0
aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICBSZXRhaW5QdHI8TlNE
YXRhPiByZXRhaW5lZFJlc3VtZURhdGE7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNl
RGlkQmVjb21lRG93bmxvYWQgPSBtYWtlQmxvY2tQdHIoWyZdKFdLV2ViVmlldyAqLCBXS05hdmln
YXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewogICAgICAgICByZXRhaW5l
ZERvd25sb2FkID0gZG93bmxvYWQ7CiAgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdh
dGU7CiAgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4o
V0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKQEAgLTE1OTQsNyArMTYxNSw3IEBAIFRFU1QoV0tEb3du
bG9hZCwgRmFpbEFuZFJlc3VtZSkKICAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBO
U1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsKICAgICAgICAgICAgIHJldGFpbmVkUmVz
dW1lRGF0YSA9IHJlc3VtZURhdGE7CiAgICAgICAgIH07Ci0gICAgfTsKKyAgICB9KS5nZXQoKTsK
IAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwogCkBAIC0xNjA2
LDcgKzE2MjcsNiBAQCBURVNUKFdLRG93bmxvYWQsIEZhaWxBbmRSZXN1bWUpCiAgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKICAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCiAgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
aWRXcml0ZURhdGEsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3Is
CiAgICAgfSk7CiB9CkBAIC0xNjI4LDcgKzE2NDgsNyBAQCBURVNUKFdLRG93bmxvYWQsIENhbmNl
bE5vUmVzdW1lRGF0YSkKICAgICAgICAgfTsKICAgICB9OwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwotICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKyAg
ICB3YWl0Rm9yRmlyc3Q1ayhyZXRhaW5lZERvd25sb2FkKTsKIAogICAgIF9fYmxvY2sgYm9vbCBk
b25lID0gZmFsc2U7CiAgICAgW3JldGFpbmVkRG93bmxvYWQgY2FuY2VsOl4oTlNEYXRhICpyZXN1
bWVEYXRhKSB7CkBAIC0xNjQyLDM0ICsxNjYyLDM1IEBAIFRFU1QoV0tEb3dubG9hZCwgQ2FuY2Vs
Tm9SZXN1bWVEYXRhKQogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9u
c2UsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURv
d25sb2FkLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKLSAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhCiAgICAgfSk7CiB9CiAKIFRFU1Qo
V0tEb3dubG9hZCwgRmFpbE5vUmVzdW1lRGF0YSkKIHsKICAgICBhdXRvIGRlbGVnYXRlID0gW1tU
ZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBSZXRhaW5QdHI8V0tE
b3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKICAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVz
dFNlcnZlcihJbmNsdWRlRVRhZzo6Tm8sIFsmXSAoVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBj
b25uZWN0aW9uKSB7Ci0gICAgICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKyAgICAgICAg
d2FpdEZvckZpcnN0NWsocmV0YWluZWREb3dubG9hZCk7CiAgICAgICAgIGNvbm5lY3Rpb24udGVy
bWluYXRlKCk7CiAgICAgfSk7CiAgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVt
cEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CiAgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcg
bmV3XSBhdXRvcmVsZWFzZV07CiAgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKIAotICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Ci0gICAgZGVsZWdhdGUubmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmln
YXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgIGJvb2wgZG9uZSA9
IGZhbHNlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
ID0gbWFrZUJsb2NrUHRyKFsmXShXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwg
V0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25s
b2FkOwogICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwogICAgICAgICBkZWxl
Z2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNV
UkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJM
ICopKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmls
ZSk7CiAgICAgICAgIH07Ci0gICAgICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdL
RG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAg
ICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gbWFrZUJsb2NrUHRyKFsmXShXS0Rvd25sb2Fk
ICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKICAgICAgICAgICAgIEVY
UEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOwogICAgICAgICAg
ICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3Qp
OwogICAgICAgICAgICAgRVhQRUNUX05VTEwocmVzdW1lRGF0YSk7CiAgICAgICAgICAgICBkb25l
ID0gdHJ1ZTsKLSAgICAgICAgfTsKLSAgICB9OworICAgICAgICB9KS5nZXQoKTsKKyAgICB9KS5n
ZXQoKTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKICAgICBV
dGlsOjpydW4oJmRvbmUpOwogICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRG
aWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOwpAQCAtMTY3OCw3ICsxNjk5LDYgQEAgVEVTVChX
S0Rvd25sb2FkLCBGYWlsTm9SZXN1bWVEYXRhKQogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpO
YXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25S
ZXNwb25zZUJlY2FtZURvd25sb2FkLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVE
ZXN0aW5hdGlvbiwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAogICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCiAgICAgfSk7CiB9CkBAIC0x
NzU5LDcgKzE3NzksNiBAQCBURVNUKFdLRG93bmxvYWQsIFJlc3VtZUFmdGVyWmVyb0J5dGVzUmVj
ZWl2ZWQpCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2Ft
ZURvd25sb2FkLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwK
ICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwKLSAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
aWRGaW5pc2gKICAgICB9KTsKIH0KQEAgLTE3ODIsOCArMTgwMSw3IEBAIHZvaWQgdGVzdFJlc3Vt
ZUFmdGVyTXV0YXRpbmdEaXNrKE5TVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCwgTlNVUkwgKmV4
cGVjdGVkRG93CiAgICAgfTsKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlclJlcXVl
c3RdOwotICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKLSAgICBkZWxlZ2F0ZS5kaWRXcml0
ZURhdGEgPSBuaWw7CisgICAgd2FpdEZvckZpcnN0NWsocmV0YWluZWREb3dubG9hZCk7CiAKICAg
ICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKICAgICBbcmV0
YWluZWREb3dubG9hZCBjYW5jZWw6XihOU0RhdGEgKnJlc3VtZURhdGEpIHsKQEAgLTE4MTAsNyAr
MTgyOCw2IEBAIHZvaWQgdGVzdFJlc3VtZUFmdGVyTXV0YXRpbmdEaXNrKE5TVVJMUmVxdWVzdCAq
c2VydmVyUmVxdWVzdCwgTlNVUkwgKmV4cGVjdGVkRG93CiAgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRl
Y2lkZURlc3RpbmF0aW9uLAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEs
CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAogICAgIH0pOwogfQpAQCAtMTk0
MCw3ICsxOTU3LDcgQEAgVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVDYW50UmVjb25uZWN0KQogICAg
ICAgICB9OwogICAgIH07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3Qo
KV07Ci0gICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworICAgIHdhaXRGb3JGaXJzdDVrKHJl
dGFpbmVkRG93bmxvYWQpOwogCiAgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9h
ZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CiAKQEAgLTE5NzUsNyArMTk5Miw2IEBAIFRF
U1QoV0tEb3dubG9hZCwgUmVzdW1lQ2FudFJlY29ubmVjdCkKICAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGVjaWRlRGVzdGluYXRpb24sCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0
YSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgogICAgIH0pOwog
fQpAQCAtMTk5MywyMyArMjAwOSwyNSBAQCBURVNUKFdLRG93bmxvYWQsIFVua25vd25Db250ZW50
TGVuZ3RoKQogICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CiAKICAg
ICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGF1dG8gb2JzZXJ2ZXIgPSBhZG9wdE5T
KFtEb3dubG9hZE9ic2VydmVyIG5ld10pOworICAgIG9ic2VydmVyLmdldCgpLnByb2dyZXNzQ2hh
bmdlQ2FsbGJhY2sgPSBeKGludDY0X3QgYnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZUNv
dW50KSB7CisgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVDb3VudCwgLTEpOworICAgICAgICBp
ZiAoYnl0ZXNXcml0dGVuID09IDUwMDApCisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
OworCisgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsK
ICAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tX
ZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CiAgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIHJldGFpbmVk
RG93bmxvYWQgPSBkb3dubG9hZDsKICAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25V
c2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcg
Kiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwogICAgICAgICB9OwotICAgICAg
ICBkZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBpbnQ2NF90
IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1dyaXRlKSB7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoZG93bmxvYWQucHJv
Z3Jlc3MudG90YWxVbml0Q291bnQsIC0xKTsKLSAgICAgICAgICAgIEVYUEVDVF9FUShkb3dubG9h
ZC5wcm9ncmVzcy5jb21wbGV0ZWRVbml0Q291bnQsIHRvdGFsQnl0ZXNXcml0dGVuKTsKLSAgICAg
ICAgICAgIGlmIChieXRlc1dyaXR0ZW4gIT0gNTAwMCkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBFWFBFQ1RfRVEodG90YWxCeXRlc1dyaXR0ZW4sIDUwMDApOwotICAgICAg
ICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUsIC0xKTsKLSAgICAgICAg
ICAgIGRvbmUgPSB0cnVlOwotICAgICAgICB9OworICAgICAgICBbZG93bmxvYWQucHJvZ3Jlc3Mg
YWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAImNvbXBsZXRlZFVuaXRDb3Vu
dCIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IHwgTlNLZXlWYWx1ZU9ic2Vy
dmluZ09wdGlvbkluaXRpYWwgY29udGV4dDpuaWxdOwogICAgIH07CiAgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CiAgICAgVXRpbDo6cnVuKCZkb25lKTsKKyAgICBb
cmV0YWluZWREb3dubG9hZC5nZXQoKS5wcm9ncmVzcyByZW1vdmVPYnNlcnZlcjpvYnNlcnZlci5n
ZXQoKSBmb3JLZXlQYXRoOkAiY29tcGxldGVkVW5pdENvdW50IiBjb250ZXh0Om5pbF07CiAgICAg
Y2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4o
J2EnKSk7CiAKICAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CkBAIC0yMDE3LDcg
KzIwMzUsNiBAQCBURVNUKFdLRG93bmxvYWQsIFVua25vd25Db250ZW50TGVuZ3RoKQogICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAogICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGlkV3JpdGVEYXRhCiAgICAgfSk7CiB9CiAKQEAgLTIwOTQsNyArMjExMSw2IEBAIFRFU1Qo
V0tEb3dubG9hZCwgUmVkaXJlY3RBbGxvdykKICAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVn
YXRlLCB7CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OldpbGxSZWRpcmVjdCwKICAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCi0gICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZFdyaXRlRGF0YSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNo
CiAgICAgfSk7CiB9CkBAIC0yMTgzLDcgKzIxOTksNiBAQCBURVNUKFdLRG93bmxvYWQsIERvd25s
b2FkUmVxdWVzdDQwNCkKIAogICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKICAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCi0gICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlk
RmluaXNoLAogICAgIH0pOwogfQpAQCAtMjE5NiwxNCArMjIxMSwxNiBAQCBURVNUKFdLRG93bmxv
YWQsIE5ldHdvcmtQcm9jZXNzQ3Jhc2gpCiAgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcg
bmV3XSBhdXRvcmVsZWFzZV07CiAgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKIAorICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxv
YWQ7CiAgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBe
KFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9h
ZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CiAgICAgICAgIGRvd25s
b2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CiAgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0
aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3Ry
aW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKICAgICAgICAgfTsKICAg
ICB9OwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwotICAgIHdh
aXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhyZXRhaW5lZERvd25s
b2FkKTsKICAgICAKICAgICBfX2Jsb2NrIGJvb2wgdGVybWluYXRlZCA9IGZhbHNlOwogICAgIGRl
bGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3Is
IE5TRGF0YSAqKSB7CkBAIC0yMjE4LDcgKzIyMzUsNiBAQCBURVNUKFdLRG93bmxvYWQsIE5ldHdv
cmtQcm9jZXNzQ3Jhc2gpCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNw
b25zZSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1l
RG93bmxvYWQsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAot
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCiAgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKICAgICB9KTsKIH0KQEAgLTIyNTAsNyArMjI2Niw2
IEBAIFRFU1QoV0tEb3dubG9hZCwgU3VnZ2VzdGVkRmlsZW5hbWVGcm9tSG9zdCkKICAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKICAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRpZFdyaXRlRGF0YSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCiAgICAg
fSk7CiB9CkBAIC0yMzk4LDcgKzI0MTMsNiBAQCBURVNUKFdLRG93bmxvYWQsIENoYWxsZW5nZVN1
Y2Nlc3MpCiAgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgewogICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKICAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRp
ZFdyaXRlRGF0YSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCiAgICAgfSk7
CiB9CkBAIC0yNTA0LDcgKzI1MTgsNiBAQCBURVNUKFdLRG93bmxvYWQsIEJsb2JSZXNwb25zZSkK
ICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKICAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCi0gICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmlu
aXNoCiAgICAgfSk7CiAKQEAgLTI1MTMsNyArMjUyNiw2IEBAIFRFU1QoV0tEb3dubG9hZCwgQmxv
YlJlc3BvbnNlKQogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAog
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uQmVjYW1lRG93bmxvYWQs
CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAotICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRpZEZpbmlzaAogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0RG93bmxvYWREZWxlZ2F0ZS5oCmluZGV4IDQzOGViZDAxYTgxYTViNzg2MjcyNmM5M2MwNmE4
NzgzMmFjNTg0MWEuLjM3YTY1OTg1ODlmZDEzYjZhYjMzNDU3NWUxYWMxZThhYmM0NWE0ZWEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUu
aAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmgK
QEAgLTI5LDcgKzI5LDYgQEAgZW51bSBjbGFzcyBEb3dubG9hZENhbGxiYWNrIDogdWludDhfdCB7
CiAgICAgV2lsbFJlZGlyZWN0LAogICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLAogICAgIERl
Y2lkZURlc3RpbmF0aW9uLAotICAgIERpZFdyaXRlRGF0YSwKICAgICBEaWRGaW5pc2gsCiAgICAg
RGlkRmFpbFdpdGhFcnJvciwKICAgICBOYXZpZ2F0aW9uQWN0aW9uQmVjYW1lRG93bmxvYWQsCkBA
IC00Myw3ICs0Miw2IEBAIGVudW0gY2xhc3MgRG93bmxvYWRDYWxsYmFjayA6IHVpbnQ4X3Qgewog
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF53aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbikoV0tEb3dubG9hZCAqLCBOU0hUVFBVUkxSZXNwb25zZSAqLCBOU1VSTFJlcXVlc3QgKiwg
dm9pZCAoXikoV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5KSk7CiBAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkoV0tEb3du
bG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICosIHZvaWQgKF4pKE5TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsKikpOwogQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9u
c2UpKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheKShO
U1VSTCAqKSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFdyaXRlRGF0
YSkoV0tEb3dubG9hZCAqLCBpbnQ2NF90LCBpbnQ2NF90LCBpbnQ2NF90KTsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRGaW5pc2gpKFdLRG93bmxvYWQgKik7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZEZhaWxXaXRoRXJyb3IpKFdL
RG93bmxvYWQgKiwgTlNFcnJvciAqLCBOU0RhdGEgKik7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCmluZGV4IGU4ZGE5OGE1MzA0ZWNi
NDYyZGZiMjgyODQwMDAxNTk4MzYyODFiMDkuLjc4M2NhZTQyMzIxZjQ0ODBmMWFkNzc0NGQ3OGI3
YzYwYzVjM2Q3OTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERv
d25sb2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93
bmxvYWREZWxlZ2F0ZS5tbQpAQCAtNDgsMTYgKzQ4LDYgQEAKICAgICBfZGVjaWRlRGVzdGluYXRp
b25Vc2luZ1Jlc3BvbnNlKGRvd25sb2FkLCByZXNwb25zZSwgc3VnZ2VzdGVkRmlsZW5hbWUsIGNv
bXBsZXRpb25IYW5kbGVyKTsKIH0KIAotLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRv
d25sb2FkIGRpZFdyaXRlRGF0YTooaW50NjRfdClieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0
ZW46KGludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZToo
aW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlCi17Ci0gICAgLy8gZGlkV3JpdGVEYXRh
IGlzIGNhbGxlZCBhIG5vbmRldGVybWluaXN0aWMgbnVtYmVyIG9mIHRpbWVzLCBzbyBvbmx5IHJl
Y29yZCBvbmNlIGluIGEgc2VyaWVzLgotICAgIGlmIChfY2FsbGJhY2tSZWNvcmQuaXNFbXB0eSgp
IHx8IF9jYWxsYmFja1JlY29yZC5sYXN0KCkgIT0gRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVE
YXRhKQotICAgICAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OkRp
ZFdyaXRlRGF0YSk7Ci0KLSAgICBpZiAoX2RpZFdyaXRlRGF0YSkKLSAgICAgICAgX2RpZFdyaXRl
RGF0YShkb3dubG9hZCwgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZSk7Ci19Ci0KIC0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilk
b3dubG9hZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsKikpY29t
cGxldGlvbkhhbmRsZXIKIHsKICAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2Fs
bGJhY2s6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416169</attachid>
            <date>2020-12-14 10:15:50 -0800</date>
            <delta_ts>2020-12-14 11:27:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219820-20201214101549.patch</filename>
            <type>text/plain</type>
            <size>24722</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgxY2VhMDEwMjYxNTFkNDk0
ODA2MmZjMTFlOGFlYjllMTM5NTI3Y2MuLmVkM2YyYTE4NzA2M2FhYmUxNGJjMmRmZTM0YTVmOGNm
ZmRjZDNjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMTItMTEgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgV0tE
b3dubG9hZERlbGVnYXRlLmRpZFdyaXRlRGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KKworICAgICAgICBBUEkgcmV2aWV3IHJldmVhbGVkIGl0IHdhcyByZWR1bmRhbnQgd2l0
aCBXS0Rvd25sb2FkLnByb2dyZXNzLCB3aGljaCBoYXMgS1ZPLWNvbXBsaWFudCB0b3RhbFVuaXRD
b3VudCBhbmQgY29tcGxldGVkVW5pdENvdW50LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0Rvd25sb2FkLm1tOgorICAgICAgICAoLVtXS0Rvd25sb2FkIHByb2dyZXNzXSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkRGVsZWdhdGUuaDoKKwogMjAy
MC0xMi0xMSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBQ
Q006IENoYW5nZSBkZWJ1Z01vZGVTZWNvbmRzVW50aWxTZW5kIGZyb20gNjAgc2Vjb25kcyB0byAx
MCBzZWNvbmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tEb3dubG9hZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25s
b2FkLm1tCmluZGV4IGVhODNlNmZjYjYyNzUzNzkzYzUyNTg1YmFlNDk1ZDA2YzYzNWMwZTQuLmJm
MGNiZGFjYWU2ZWFhNGY5NzEzZTY1NTZkMjI4YjIxMTAyYzkwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tCkBAIC00Miw3ICs0Miw2IEBA
IHB1YmxpYzoKICAgICAgICAgOiBtX2RlbGVnYXRlKGRlbGVnYXRlKQogICAgICAgICAsIG1fcmVz
cG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1Jl
cXVlc3Q6ZGVjaXNpb25IYW5kbGVyOildKQogICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihkb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxl
dGlvbkhhbmRsZXI6KV0pCi0gICAgICAgICwgbV9yZXNwb25kc1RvRGlkV3JpdGVEYXRhKFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOmRpZFdyaXRlRGF0YTp0
b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOildKQogICAgICAgICAs
IG1fcmVzcG9uZHNUb0RpZEZpbmlzaChbbV9kZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKGRvd25sb2FkRGlkRmluaXNoOildKQogICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZEZh
aWxXaXRoRXJyb3IoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxv
YWQ6ZGlkRmFpbFdpdGhFcnJvcjpyZXN1bWVEYXRhOildKQogICAgIHsKQEAgLTE0MCwxNiArMTM5
LDExIEBAIHByaXZhdGU6CiAgICAgICAgIH0pLmdldCgpXTsKICAgICB9CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIHVpbnQ2NF90IGJ5
dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0
ZXNFeHBlY3RlZFRvV3JpdGUpIGZpbmFsCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCB1aW50NjRfdCwgdWludDY0X3QgdG90YWxCeXRlc1dy
aXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIGZpbmFsCiAgICAgewog
ICAgICAgICBOU1Byb2dyZXNzICpwcm9ncmVzcyA9IHdyYXBwZXIoZG93bmxvYWQpLnByb2dyZXNz
OwotICAgICAgICBwcm9ncmVzcy5jb21wbGV0ZWRVbml0Q291bnQgPSB0b3RhbEJ5dGVzV3JpdHRl
bjsKICAgICAgICAgcHJvZ3Jlc3MudG90YWxVbml0Q291bnQgPSB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlOwotCi0gICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkV3Jp
dGVEYXRhKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIFttX2RlbGVnYXRlIGRvd25s
b2FkOndyYXBwZXIoZG93bmxvYWQpIGRpZFdyaXRlRGF0YTpieXRlc1dyaXR0ZW4gdG90YWxCeXRl
c1dyaXR0ZW46dG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTp0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlXTsKKyAgICAgICAgcHJvZ3Jlc3MuY29tcGxldGVkVW5pdENv
dW50ID0gdG90YWxCeXRlc1dyaXR0ZW47CiAgICAgfQogCiAgICAgdm9pZCBkaWRGaW5pc2goV2Vi
S2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgZmluYWwKQEAgLTE4MCw3ICsxNzQsNiBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBtX3Jlc3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
biA6IDE7CiAgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgOiAxOwotICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkV3JpdGVEYXRhIDogMTsKICAgICBi
b29sIG1fcmVzcG9uZHNUb0RpZEZpbmlzaCA6IDE7CiAgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRG
YWlsV2l0aEVycm9yIDogMTsKIH07CkBAIC0yMjUsNyArMjE4LDggQEAgcHJpdmF0ZToKIHsKICAg
ICBOU1Byb2dyZXNzKiBkb3dubG9hZFByb2dyZXNzID0gX2Rvd25sb2FkLT5wcm9ncmVzcygpOwog
ICAgIGlmICghZG93bmxvYWRQcm9ncmVzcykgewotICAgICAgICBkb3dubG9hZFByb2dyZXNzID0g
W05TUHJvZ3Jlc3MgcHJvZ3Jlc3NXaXRoVG90YWxVbml0Q291bnQ6MTAwXTsKKyAgICAgICAgY29u
c3RleHByIGF1dG8gaW5kZXRlcm1pbmF0ZVVuaXRDb3VudCA9IC0xOworICAgICAgICBkb3dubG9h
ZFByb2dyZXNzID0gW05TUHJvZ3Jlc3MgcHJvZ3Jlc3NXaXRoVG90YWxVbml0Q291bnQ6aW5kZXRl
cm1pbmF0ZVVuaXRDb3VudF07CiAKICAgICAgICAgZG93bmxvYWRQcm9ncmVzcy5raW5kID0gTlNQ
cm9ncmVzc0tpbmRGaWxlOwogICAgICAgICBkb3dubG9hZFByb2dyZXNzLmZpbGVPcGVyYXRpb25L
aW5kID0gTlNQcm9ncmVzc0ZpbGVPcGVyYXRpb25LaW5kRG93bmxvYWRpbmc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZERlbGVnYXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZERlbGVnYXRlLmgK
aW5kZXggNDIyNTMwNWU0NDdjYzdmNGE0OTk5MDk3YmIzMjg1MGFlODI5OTk0MC4uMzczMTZjMjQ1
NTQ3ZDYxMzRlNWI1YWIzNDMzM2ExYWUxYjg0NmNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWREZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkRGVsZWdhdGUuaApAQCAtODIsMTcg
KzgyLDYgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KICAqLwogLSAodm9pZClkb3dubG9hZDoo
V0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZToo
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENy
ZWRlbnRpYWwgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOwogCi0vKiBAYWJzdHJhY3Qg
SW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgcmVjZWl2ZWQgYW5kIHdyaXR0ZW4gZGF0YSB0
byB0aGUgZGVzdGluYXRpb24uCi0gQHBhcmFtIGRvd25sb2FkIFRoZSBkb3dubG9hZCB0aGF0IGhh
cyB3cml0dGVuIGRhdGEuCi0gQHBhcmFtIGJ5dGVzV3JpdHRlbiBUaGUgbnVtYmVyIG9mIGJ5dGVz
IHdyaXR0ZW4uCi0gQHBhcmFtIHRvdGFsQnl0ZXNXcml0dGVuIFRoZSB0b3RhbCBudW1iZXIgb2Yg
Ynl0ZXMgd3JpdHRlbi4KLSBAcGFyYW0gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSBUaGUgdG90
YWwgbnVtYmVyIG9mIGJ5dGVzIGV4cGVjdGVkIHRvIGJlIHdyaXR0ZW4uCi0gQGRpc2N1c3Npb24g
SWYgdGhpcyBkb3dubG9hZCB3YXMgdGhlIHJlc3VsdCBvZiByZXN1bWluZyBhIHByZXZpb3VzIGRv
d25sb2FkLCB0aGVuCi0gdG90YWxCeXRlc1dyaXR0ZW4gd2lsbCBiZSBieXRlc1dyaXR0ZW4gcGx1
cyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgaGFkIGFscmVhZHkgYmVlbiBkb3dubG9hZGVkLgot
IElmIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaXMgdW5rbm93biwgdG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZSB3aWxsIGJlIC0xLgotICovCi0tICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2Fk
ICopZG93bmxvYWQgZGlkV3JpdGVEYXRhOihpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVz
V3JpdHRlbjooaW50NjRfdCl0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlOihpbnQ2NF90KXRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU7Ci0KIC8qIEBhYnN0cmFjdCBJ
bnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyBmaW5pc2hlZCBzdWNjZXNzZnVsbHkuCiAgQHBh
cmFtIGRvd25sb2FkIFRoZSBkb3dubG9hZCB0aGF0IGZpbmlzaGVkLgogICovCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjc4NjcxNTMwMmZkODFm
ZmY3ZGM5YjEwYjA2M2ZmZjhmZDNhYWYzNS4uMmU3YzY0ODhmY2M2NzkwNDI1MmI3ZThkZjk1NjA2
ODQyNzY2OTI3MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEyLTExICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFdLRG93bmxvYWREZWxlZ2F0
ZS5kaWRXcml0ZURhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxOTgyMAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOgorICAgICAg
ICAoLVtEb3dubG9hZE9ic2VydmVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hh
bmdlOmNvbnRleHQ6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjptdXRhdGVGaWxlKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmg6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbToKKyAgICAg
ICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0
ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6XSk6IERlbGV0ZWQuCisKIDIwMjAt
MTItMTEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
VHJhY2twYWQgYW5kIE1vdXNlIHNjcm9sbCBldmVudHMgb24gaVBhZCBvbmx5IGZpcmUgInBvaW50
ZXJtb3ZlIiAtLSBub3QgIndoZWVsIgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRG93bmxvYWQubW0KaW5kZXggZDk2MWFhODhkMDBkYzY2MWU1NmVmNjIwOGZl
ZGQ1ODliNjBmYTNjZS4uNTAxZDNhNDVkYTJlNTllYjZhMDVkMWNhNzU2ZmJhZWQwM2QxNDljYiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9h
ZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2Fk
Lm1tCkBAIC0xNDI1LDYgKzE0MjUsMjIgQEAgVEVTVChfV0tEb3dubG9hZCwgU3ViZnJhbWVTZWN1
cml0eU9yaWdpbikKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAK
K0BpbnRlcmZhY2UgRG93bmxvYWRPYnNlcnZlciA6IE5TT2JqZWN0CitAcHJvcGVydHkgKG5vbmF0
b21pYywgY29weSkgdm9pZCAoXnByb2dyZXNzQ2hhbmdlQ2FsbGJhY2spKGludDY0X3QsIGludDY0
X3QpOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gRG93bmxvYWRPYnNlcnZlcgorCistICh2b2lk
KW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQp
b2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWNoYW5nZSBjb250
ZXh0Oih2b2lkICopY29udGV4dAoreworICAgIGlmIChzZWxmLnByb2dyZXNzQ2hhbmdlQ2FsbGJh
Y2spIHsKKyAgICAgICAgTlNQcm9ncmVzcyAqcHJvZ3Jlc3MgPSAoTlNQcm9ncmVzcyAqKW9iamVj
dDsKKyAgICAgICAgc2VsZi5wcm9ncmVzc0NoYW5nZUNhbGxiYWNrKHByb2dyZXNzLmNvbXBsZXRl
ZFVuaXRDb3VudCwgcHJvZ3Jlc3MudG90YWxVbml0Q291bnQpOworICAgIH0KK30KKworQGVuZAor
CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHN0YXRpYyB2b2lkIGNoZWNrQ2FsbGJhY2tS
ZWNvcmQoVGVzdERvd25sb2FkRGVsZWdhdGUgKmRlbGVnYXRlLCBWZWN0b3I8RG93bmxvYWRDYWxs
YmFjaz4gZXhwZWN0ZWRDYWxsYmFja3MpCkBAIC0xNDYyLDcgKzE0NzgsNiBAQCBURVNUKFdLRG93
bmxvYWQsIEZpbmlzaFN1Y2Nlc3NmdWxseSkKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVz
cG9uc2VCZWNhbWVEb3dubG9hZCwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVz
dGluYXRpb24sCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKICAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCiAgICAgfSk7CiB9CkBAIC0xNDg5LDE1ICsx
NTA0LDE2IEBAIHN0YXRpYyB2b2lkIHJlc3VtZUFuZEZpbmlzaERvd25sb2FkKE5TRGF0YSAqcmVz
dW1lRGF0YSwgTlNVUkwgKmRlc3RpbmF0aW9uKQogICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0
aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBO
U1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfTsKLSAgICAgICAgZGVsZWdhdGUu
ZGlkV3JpdGVEYXRhID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgaW50NjRfdCBieXRlc1dyaXR0
ZW4sIGludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZSkgewotICAgICAgICAgICAgRVhQRUNUX0VRKGRvd25sb2FkLCByZXRhaW5lZERvd25s
b2FkLmdldCgpKTsKLSAgICAgICAgICAgIEVYUEVDVF9FUShieXRlc1dyaXR0ZW4gKyA1MDAwLCB0
b3RhbEJ5dGVzV3JpdHRlbik7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEodG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZSwgMTAwMDApOwotICAgICAgICAgICAgRVhQRUNUX0VRKGRvd25sb2FkLnByb2dy
ZXNzLnRvdGFsVW5pdENvdW50LCAxMDAwMCk7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoZG93bmxv
YWQucHJvZ3Jlc3MuY29tcGxldGVkVW5pdENvdW50LCB0b3RhbEJ5dGVzV3JpdHRlbik7Ci0gICAg
ICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IDUwMDApCisKKyAgICAgICAgYXV0byBvYnNlcnZl
ciA9IGFkb3B0TlMoW0Rvd25sb2FkT2JzZXJ2ZXIgbmV3XSk7CisgICAgICAgIG9ic2VydmVyLmdl
dCgpLnByb2dyZXNzQ2hhbmdlQ2FsbGJhY2sgPSBeKGludDY0X3QgYnl0ZXNXcml0dGVuLCBpbnQ2
NF90IHRvdGFsQnl0ZUNvdW50KSB7CisgICAgICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IDEw
MDAwKSB7CisgICAgICAgICAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZUNvdW50LCAxMDAwMCk7
CiAgICAgICAgICAgICAgICAgZG93bmxvYWRlZFNlY29uZDVrID0gdHJ1ZTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfTsKKyAgICAgICAgW3JldGFpbmVkRG93bmxvYWQuZ2V0KCkucHJvZ3Jlc3Mg
YWRkT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAImNvbXBsZXRlZFVuaXRDb3Vu
dCIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IHwgTlNLZXlWYWx1ZU9ic2Vy
dmluZ09wdGlvbkluaXRpYWwgY29udGV4dDpuaWxdOworCiAgICAgICAgIF9fYmxvY2sgYm9vbCBk
aWRGaW5pc2ggPSBmYWxzZTsKICAgICAgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBe
KFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CiAgICAgICAgICAgICBFWFBFQ1RfRVEocmV0YWluZWRE
b3dubG9hZC5nZXQoKSwgZG93bmxvYWQpOwpAQCAtMTUwNyw5ICsxNTIzLDEwIEBAIHN0YXRpYyB2
b2lkIHJlc3VtZUFuZEZpbmlzaERvd25sb2FkKE5TRGF0YSAqcmVzdW1lRGF0YSwgTlNVUkwgKmRl
c3RpbmF0aW9uKQogCiAgICAgICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoKTsKIAorICAgICAgICBb
cmV0YWluZWREb3dubG9hZC5nZXQoKS5wcm9ncmVzcyByZW1vdmVPYnNlcnZlcjpvYnNlcnZlci5n
ZXQoKSBmb3JLZXlQYXRoOkAiY29tcGxldGVkVW5pdENvdW50IiBjb250ZXh0Om5pbF07CisKICAg
ICAgICAgY2hlY2tSZXN1bWVkRG93bmxvYWRDb250ZW50cyhkZXN0aW5hdGlvbik7CiAgICAgICAg
IGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKLSAgICAgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZFdyaXRlRGF0YSwKICAgICAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZp
bmlzaAogICAgICAgICB9KTsKICAgICAgICAgRVhQRUNUX0VRKHJldGFpbmVkRG93bmxvYWQuZ2V0
KCkud2ViVmlldywgd2ViVmlldy5nZXQoKSk7CkBAIC0xNTE5LDE3ICsxNTM2LDIyIEBAIHN0YXRp
YyB2b2lkIHJlc3VtZUFuZEZpbmlzaERvd25sb2FkKE5TRGF0YSAqcmVzdW1lRGF0YSwgTlNVUkwg
KmRlc3RpbmF0aW9uKQogICAgIEVYUEVDVF9OVUxMKHJldGFpbmVkRG93bmxvYWQuZ2V0KCkud2Vi
Vmlldyk7CiB9CiAKLXN0YXRpYyB2b2lkIHdhaXRGb3JGaXJzdDVrKFRlc3REb3dubG9hZERlbGVn
YXRlICpkZWxlZ2F0ZSkKK3N0YXRpYyB2b2lkIHdhaXRGb3JGaXJzdDVrKFJldGFpblB0cjxXS0Rv
d25sb2FkPiYgZG93bmxvYWQpCiB7CiAgICAgX19ibG9jayBib29sIGRvd25sb2FkZWRGaXJzdDVr
ID0gZmFsc2U7Ci0gICAgQVNTRVJUKCFkZWxlZ2F0ZS5kaWRXcml0ZURhdGEpOwotICAgIGRlbGVn
YXRlLmRpZFdyaXRlRGF0YSA9IF4oV0tEb3dubG9hZCAqLCBpbnQ2NF90IGJ5dGVzV3JpdHRlbiwg
aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlKSB7Ci0gICAgICAgIEVYUEVDVF9FUShieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVu
KTsKLSAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUsIDEwMDAwKTsK
LSAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSA1MDAwKQorICAgIAorICAgIGF1dG8gb2JzZXJ2
ZXIgPSBhZG9wdE5TKFtEb3dubG9hZE9ic2VydmVyIG5ld10pOworICAgIG9ic2VydmVyLmdldCgp
LnByb2dyZXNzQ2hhbmdlQ2FsbGJhY2sgPSBeKGludDY0X3QgYnl0ZXNXcml0dGVuLCBpbnQ2NF90
IHRvdGFsQnl0ZUNvdW50KSB7CisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gNTAwMCkgewor
ICAgICAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZUNvdW50LCAxMDAwMCk7CiAgICAgICAgICAg
ICBkb3dubG9hZGVkRmlyc3Q1ayA9IHRydWU7CisgICAgICAgIH0KICAgICB9OworICAgIHdoaWxl
ICghZG93bmxvYWQpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgW2Rvd25sb2Fk
LmdldCgpLnByb2dyZXNzIGFkZE9ic2VydmVyOm9ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJj
b21wbGV0ZWRVbml0Q291bnQiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyB8
IE5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25Jbml0aWFsIGNvbnRleHQ6bmlsXTsKICAgICBVdGls
OjpydW4oJmRvd25sb2FkZWRGaXJzdDVrKTsKKyAgICBbZG93bmxvYWQuZ2V0KCkucHJvZ3Jlc3Mg
cmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAImNvbXBsZXRlZFVuaXRD
b3VudCIgY29udGV4dDpuaWxdOwogfQogCiBURVNUKFdLRG93bmxvYWQsIENhbmNlbEFuZFJlc3Vt
ZSkKQEAgLTE1NTAsNyArMTU3Miw3IEBAIFRFU1QoV0tEb3dubG9hZCwgQ2FuY2VsQW5kUmVzdW1l
KQogICAgIH07CiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsK
LSAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisgICAgd2FpdEZvckZpcnN0NWsocmV0YWlu
ZWREb3dubG9hZCk7CiAKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVz
dW1lRGF0YTsKICAgICBbcmV0YWluZWREb3dubG9hZCBjYW5jZWw6XihOU0RhdGEgKnJlc3VtZURh
dGEpIHsKQEAgLTE1NjUsMjQgKzE1ODcsMjMgQEAgVEVTVChXS0Rvd25sb2FkLCBDYW5jZWxBbmRS
ZXN1bWUpCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKICAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQs
CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAotICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEKICAgICB9KTsKIH0KIAogVEVTVChXS0Rvd25s
b2FkLCBGYWlsQW5kUmVzdW1lKQogewogICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9h
ZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIFJldGFpblB0cjxXS0Rvd25sb2FkPiBy
ZXRhaW5lZERvd25sb2FkOwogICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKElu
Y2x1ZGVFVGFnOjpZZXMsIFsmXSAoVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9u
KSB7Ci0gICAgICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKyAgICAgICAgd2FpdEZvckZp
cnN0NWsocmV0YWluZWREb3dubG9hZCk7CiAgICAgICAgIGNvbm5lY3Rpb24udGVybWluYXRlKCk7
CiAgICAgfSk7CiAgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0
RG9lc05vdEV4aXN0KCk7CiAgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRv
cmVsZWFzZV07CiAgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKIAot
ICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7Ci0gICAg
X19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7Ci0gICAgZGVsZWdh
dGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBX
S05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgIFJldGFp
blB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9u
UmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IG1ha2VCbG9ja1B0cihbJl0oV0tXZWJWaWV3ICos
IFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CiAgICAgICAg
IHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKICAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKICAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3Bv
bnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewpAQCAtMTU5NCw3ICsxNjE1LDcgQEAgVEVT
VChXS0Rvd25sb2FkLCBGYWlsQW5kUmVzdW1lKQogICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9y
LmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOwogICAgICAgICAgICAgcmV0
YWluZWRSZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsKICAgICAgICAgfTsKLSAgICB9OworICAgIH0p
LmdldCgpOwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CiAK
QEAgLTE2MDYsNyArMTYyNyw2IEBAIFRFU1QoV0tEb3dubG9hZCwgRmFpbEFuZFJlc3VtZSkKICAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKICAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCi0gICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZFdyaXRlRGF0YSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdp
dGhFcnJvciwKICAgICB9KTsKIH0KQEAgLTE2MjgsNyArMTY0OCw3IEBAIFRFU1QoV0tEb3dubG9h
ZCwgQ2FuY2VsTm9SZXN1bWVEYXRhKQogICAgICAgICB9OwogICAgIH07CiAgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07Ci0gICAgd2FpdEZvckZpcnN0NWsoZGVsZWdh
dGUpOworICAgIHdhaXRGb3JGaXJzdDVrKHJldGFpbmVkRG93bmxvYWQpOwogCiAgICAgX19ibG9j
ayBib29sIGRvbmUgPSBmYWxzZTsKICAgICBbcmV0YWluZWREb3dubG9hZCBjYW5jZWw6XihOU0Rh
dGEgKnJlc3VtZURhdGEpIHsKQEAgLTE2NDIsMzQgKzE2NjIsMzUgQEAgVEVTVChXS0Rvd25sb2Fk
LCBDYW5jZWxOb1Jlc3VtZURhdGEpCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25SZXNwb25zZSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNl
QmVjYW1lRG93bmxvYWQsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0
aW9uLAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEKICAgICB9KTsKIH0K
IAogVEVTVChXS0Rvd25sb2FkLCBGYWlsTm9SZXN1bWVEYXRhKQogewogICAgIGF1dG8gZGVsZWdh
dGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIFJldGFp
blB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOwogICAgIGF1dG8gc2VydmVyID0gZG93
bmxvYWRUZXN0U2VydmVyKEluY2x1ZGVFVGFnOjpObywgWyZdIChUZXN0V2ViS2l0QVBJOjpDb25u
ZWN0aW9uIGNvbm5lY3Rpb24pIHsKLSAgICAgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOwor
ICAgICAgICB3YWl0Rm9yRmlyc3Q1ayhyZXRhaW5lZERvd25sb2FkKTsKICAgICAgICAgY29ubmVj
dGlvbi50ZXJtaW5hdGUoKTsKICAgICB9KTsKICAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZp
bGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKICAgICBhdXRvIHdlYlZpZXcgPSBbW1dL
V2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKICAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0
ZSA9IGRlbGVnYXRlOwogCi0gICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKLSAgICBkZWxl
Z2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICos
IFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgYm9v
bCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21l
RG93bmxvYWQgPSBtYWtlQmxvY2tQdHIoWyZdKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNw
b25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2Fk
ID0gZG93bmxvYWQ7CiAgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CiAgICAg
ICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9h
ZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoTlNVUkwgKikpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93
bmxvYWRGaWxlKTsKICAgICAgICAgfTsKLSAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJv
ciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7
CisgICAgICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBtYWtlQmxvY2tQdHIoWyZdKFdL
RG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgewogICAgICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CiAg
ICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvck5ldHdvcmtDb25uZWN0
aW9uTG9zdCk7CiAgICAgICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bWVEYXRhKTsKICAgICAgICAg
ICAgIGRvbmUgPSB0cnVlOwotICAgICAgICB9OwotICAgIH07CisgICAgICAgIH0pLmdldCgpOwor
ICAgIH0pLmdldCgpOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCld
OwogICAgIFV0aWw6OnJ1bigmZG9uZSk7CiAgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWRE
b3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CkBAIC0xNjc4LDcgKzE2OTksNiBA
QCBURVNUKFdLRG93bmxvYWQsIEZhaWxOb1Jlc3VtZURhdGEpCiAgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRlY2lkZURlc3RpbmF0aW9uLAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURh
dGEsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKICAgICB9KTsK
IH0KQEAgLTE3NTksNyArMTc3OSw2IEBAIFRFU1QoV0tEb3dubG9hZCwgUmVzdW1lQWZ0ZXJaZXJv
Qnl0ZXNSZWNlaXZlZCkKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3Bv
bnNlQmVjYW1lRG93bmxvYWQsCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3Rp
bmF0aW9uLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yLAotICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCiAgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZEZpbmlzaAogICAgIH0pOwogfQpAQCAtMTc4Miw4ICsxODAxLDcgQEAgdm9pZCB0
ZXN0UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rpc2soTlNVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0LCBO
U1VSTCAqZXhwZWN0ZWREb3cKICAgICB9OwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2Vy
dmVyUmVxdWVzdF07Ci0gICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOwotICAgIGRlbGVnYXRl
LmRpZFdyaXRlRGF0YSA9IG5pbDsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhyZXRhaW5lZERvd25sb2Fk
KTsKIAogICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOwog
ICAgIFtyZXRhaW5lZERvd25sb2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgewpAQCAt
MTgxMCw3ICsxODI4LDYgQEAgdm9pZCB0ZXN0UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rpc2soTlNVUkxS
ZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0LCBOU1VSTCAqZXhwZWN0ZWREb3cKICAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKICAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6RGVjaWRlRGVzdGluYXRpb24sCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdy
aXRlRGF0YSwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCiAgICAgfSk7CiB9
CkBAIC0xOTQwLDcgKzE5NTcsNyBAQCBURVNUKFdLRG93bmxvYWQsIFJlc3VtZUNhbnRSZWNvbm5l
Y3QpCiAgICAgICAgIH07CiAgICAgfTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIu
cmVxdWVzdCgpXTsKLSAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisgICAgd2FpdEZvckZp
cnN0NWsocmV0YWluZWREb3dubG9hZCk7CiAKICAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3Rl
ZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKIApAQCAtMTk3NSw3ICsxOTky
LDYgQEAgVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVDYW50UmVjb25uZWN0KQogICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAogICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlk
V3JpdGVEYXRhLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCiAg
ICAgfSk7CiB9CkBAIC0xOTkzLDIzICsyMDA5LDI1IEBAIFRFU1QoV0tEb3dubG9hZCwgVW5rbm93
bkNvbnRlbnRMZW5ndGgpCiAgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKIAogICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgYXV0byBvYnNlcnZlciA9
IGFkb3B0TlMoW0Rvd25sb2FkT2JzZXJ2ZXIgbmV3XSk7CisgICAgb2JzZXJ2ZXIuZ2V0KCkucHJv
Z3Jlc3NDaGFuZ2VDYWxsYmFjayA9IF4oaW50NjRfdCBieXRlc1dyaXR0ZW4sIGludDY0X3QgdG90
YWxCeXRlQ291bnQpIHsKKyAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZUNvdW50LCAtMSk7Cisg
ICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gNTAwMCkKKyAgICAgICAgICAgIGRvbmUgPSB0cnVl
OworICAgIH07CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERv
d25sb2FkOwogICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
ID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93
bmxvYWQpIHsKICAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAg
cmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOwogICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0
aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBO
U1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CiAgICAgICAgIH07
Ci0gICAgICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0YSA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQs
IGludDY0X3QgYnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCBpbnQ2NF90
IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIHsKLSAgICAgICAgICAgIEVYUEVDVF9FUShkb3du
bG9hZC5wcm9ncmVzcy50b3RhbFVuaXRDb3VudCwgLTEpOwotICAgICAgICAgICAgRVhQRUNUX0VR
KGRvd25sb2FkLnByb2dyZXNzLmNvbXBsZXRlZFVuaXRDb3VudCwgdG90YWxCeXRlc1dyaXR0ZW4p
OwotICAgICAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiAhPSA1MDAwKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzV3JpdHRlbiwgNTAwMCk7
Ci0gICAgICAgICAgICBFWFBFQ1RfRVEodG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgLTEpOwot
ICAgICAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgICAgIH07CisgICAgICAgIFtkb3dubG9hZC5w
cm9ncmVzcyBhZGRPYnNlcnZlcjpvYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAiY29tcGxldGVk
VW5pdENvdW50IiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgfCBOU0tleVZh
bHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCBjb250ZXh0Om5pbF07CiAgICAgfTsKICAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKICAgICBVdGlsOjpydW4oJmRvbmUp
OworICAgIFtyZXRhaW5lZERvd25sb2FkLmdldCgpLnByb2dyZXNzIHJlbW92ZU9ic2VydmVyOm9i
c2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJjb21wbGV0ZWRVbml0Q291bnQiIGNvbnRleHQ6bmls
XTsKICAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmlu
Zzw1MDAwPignYScpKTsKIAogICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKQEAg
LTIwMTcsNyArMjAzNSw2IEBAIFRFU1QoV0tEb3dubG9hZCwgVW5rbm93bkNvbnRlbnRMZW5ndGgp
CiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKICAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCiAgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAotICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEaWRXcml0ZURhdGEKICAgICB9KTsKIH0KIApAQCAtMjA5NCw3ICsyMTExLDYg
QEAgVEVTVChXS0Rvd25sb2FkLCBSZWRpcmVjdEFsbG93KQogICAgIGNoZWNrQ2FsbGJhY2tSZWNv
cmQoZGVsZWdhdGUsIHsKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6V2lsbFJlZGlyZWN0LAog
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKLSAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
aWRGaW5pc2gKICAgICB9KTsKIH0KQEAgLTIxODMsNyArMjE5OSw2IEBAIFRFU1QoV0tEb3dubG9h
ZCwgRG93bmxvYWRSZXF1ZXN0NDA0KQogCiAgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0
ZSwgewogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKLSAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAogICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEaWRGaW5pc2gsCiAgICAgfSk7CiB9CkBAIC0yMTk2LDE0ICsyMjExLDE2IEBAIFRFU1Qo
V0tEb3dubG9hZCwgTmV0d29ya1Byb2Nlc3NDcmFzaCkKICAgICBhdXRvIHdlYlZpZXcgPSBbW1dL
V2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKICAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0
ZSA9IGRlbGVnYXRlOwogCisgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWlu
ZWREb3dubG9hZDsKICAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3du
bG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQg
KmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKICAgICAg
ICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKICAgICAgICAgZGVsZWdhdGUuZGVjaWRl
RGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2Ug
KiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwogICAgICAg
ICB9OwogICAgIH07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07
Ci0gICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworICAgIHdhaXRGb3JGaXJzdDVrKHJldGFp
bmVkRG93bmxvYWQpOwogICAgIAogICAgIF9fYmxvY2sgYm9vbCB0ZXJtaW5hdGVkID0gZmFsc2U7
CiAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9y
ICplcnJvciwgTlNEYXRhICopIHsKQEAgLTIyMTgsNyArMjIzNSw2IEBAIFRFU1QoV0tEb3dubG9h
ZCwgTmV0d29ya1Byb2Nlc3NDcmFzaCkKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvblJlc3BvbnNlLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9u
c2VCZWNhbWVEb3dubG9hZCwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGlu
YXRpb24sCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKICAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgogICAgIH0pOwogfQpAQCAtMjI1MCw3
ICsyMjY2LDYgQEAgVEVTVChXS0Rvd25sb2FkLCBTdWdnZXN0ZWRGaWxlbmFtZUZyb21Ib3N0KQog
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAogICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKLSAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkV3JpdGVEYXRhLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5p
c2gKICAgICB9KTsKIH0KQEAgLTIzOTgsNyArMjQxMyw2IEBAIFRFU1QoV0tEb3dubG9hZCwgQ2hh
bGxlbmdlU3VjY2VzcykKICAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CiAgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLAogICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKLSAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6RGlkV3JpdGVEYXRhLAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gK
ICAgICB9KTsKIH0KQEAgLTI1MDQsNyArMjUxOCw2IEBAIFRFU1QoV0tEb3dubG9hZCwgQmxvYlJl
c3BvbnNlKQogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCiAg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2Fk
LAogICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKLSAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAogICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpEaWRGaW5pc2gKICAgICB9KTsKIApAQCAtMjUxMyw3ICsyNTI2LDYgQEAgVEVTVChXS0Rvd25s
b2FkLCBCbG9iUmVzcG9uc2UpCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25B
Y3Rpb24sCiAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb25CZWNhbWVE
b3dubG9hZCwKICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCi0g
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKICAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkRmluaXNoCiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmgKaW5kZXggNDM4ZWJkMDFhODFhNWI3ODYyNzI2
YzkzYzA2YTg3ODMyYWM1ODQxYS4uMzdhNjU5ODU4OWZkMTNiNmFiMzM0NTc1ZTFhYzFlOGFiYzQ1
YTRlYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWRE
ZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVs
ZWdhdGUuaApAQCAtMjksNyArMjksNiBAQCBlbnVtIGNsYXNzIERvd25sb2FkQ2FsbGJhY2sgOiB1
aW50OF90IHsKICAgICBXaWxsUmVkaXJlY3QsCiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Us
CiAgICAgRGVjaWRlRGVzdGluYXRpb24sCi0gICAgRGlkV3JpdGVEYXRhLAogICAgIERpZEZpbmlz
aCwKICAgICBEaWRGYWlsV2l0aEVycm9yLAogICAgIE5hdmlnYXRpb25BY3Rpb25CZWNhbWVEb3du
bG9hZCwKQEAgLTQzLDcgKzQyLDYgQEAgZW51bSBjbGFzcyBEb3dubG9hZENhbGxiYWNrIDogdWlu
dDhfdCB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKShXS0Rvd25sb2FkICosIE5TSFRUUFVSTFJlc3BvbnNlICosIE5TVVJMUmVx
dWVzdCAqLCB2b2lkICheKShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKTsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KShXS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiwgdm9pZCAoXiko
TlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSk7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZURlc3RpbmF0aW9uVXNp
bmdSZXNwb25zZSkoV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZv
aWQgKF4pKE5TVVJMICopKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlk
V3JpdGVEYXRhKShXS0Rvd25sb2FkICosIGludDY0X3QsIGludDY0X3QsIGludDY0X3QpOwogQHBy
b3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZEZpbmlzaCkoV0tEb3du
bG9hZCAqKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkRmFpbFdpdGhF
cnJvcikoV0tEb3dubG9hZCAqLCBOU0Vycm9yICosIE5TRGF0YSAqKTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0KaW5kZXggZThkYTk4
YTUzMDRlY2I0NjJkZmIyODI4NDAwMDE1OTgzNjI4MWIwOS4uNzgzY2FlNDIzMjFmNDQ4MGYxYWQ3
NzQ0ZDc4YjdjNjBjNWMzZDc5OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCkBAIC00OCwxNiArNDgsNiBAQAogICAgIF9kZWNpZGVE
ZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UoZG93bmxvYWQsIHJlc3BvbnNlLCBzdWdnZXN0ZWRGaWxl
bmFtZSwgY29tcGxldGlvbkhhbmRsZXIpOwogfQogCi0tICh2b2lkKWRvd25sb2FkOihXS0Rvd25s
b2FkICopZG93bmxvYWQgZGlkV3JpdGVEYXRhOihpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5
dGVzV3JpdHRlbjooaW50NjRfdCl0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlOihpbnQ2NF90KXRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUKLXsKLSAgICAvLyBkaWRX
cml0ZURhdGEgaXMgY2FsbGVkIGEgbm9uZGV0ZXJtaW5pc3RpYyBudW1iZXIgb2YgdGltZXMsIHNv
IG9ubHkgcmVjb3JkIG9uY2UgaW4gYSBzZXJpZXMuCi0gICAgaWYgKF9jYWxsYmFja1JlY29yZC5p
c0VtcHR5KCkgfHwgX2NhbGxiYWNrUmVjb3JkLmxhc3QoKSAhPSBEb3dubG9hZENhbGxiYWNrOjpE
aWRXcml0ZURhdGEpCi0gICAgICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxs
YmFjazo6RGlkV3JpdGVEYXRhKTsKLQotICAgIGlmIChfZGlkV3JpdGVEYXRhKQotICAgICAgICBf
ZGlkV3JpdGVEYXRhKGRvd25sb2FkLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKLX0KLQogLSAodm9pZClkb3dubG9hZDooV0tEb3du
bG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRp
YWwqKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93
bmxvYWRDYWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>