<?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>105013</bug_id>
          
          <creation_ts>2012-12-14 04:58:13 -0800</creation_ts>
          <short_desc>[chromium] move editing callback dumping to the WebTestProxy</short_desc>
          <delta_ts>2012-12-18 00:27:08 -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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>jochen</reporter>
          <assigned_to>jochen</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>791542</commentid>
    <comment_count>0</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-12-14 04:58:13 -0800</bug_when>
    <thetext>[chromium] move editing callback dumping to the WebTestProxy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791546</commentid>
    <comment_count>1</comment_count>
      <attachid>179468</attachid>
    <who name="">jochen</who>
    <bug_when>2012-12-14 05:06:29 -0800</bug_when>
    <thetext>Created attachment 179468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791547</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-14 05:08:38 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791712</commentid>
    <comment_count>3</comment_count>
      <attachid>179468</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-12-14 10:57:51 -0800</bug_when>
    <thetext>Comment on attachment 179468
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791713</commentid>
    <comment_count>4</comment_count>
      <attachid>179468</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-12-14 10:58:26 -0800</bug_when>
    <thetext>Comment on attachment 179468
Patch

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

&gt; Tools/DumpRenderTree/chromium/TestRunner/src/TestRunner.h:60
&gt; +    // WebTestRunner implementation.
&gt; +    virtual bool shouldDumpEditingCallbacks() const;

Nit: OVERRIDE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791800</commentid>
    <comment_count>5</comment_count>
      <attachid>179522</attachid>
    <who name="">jochen</who>
    <bug_when>2012-12-14 13:15:38 -0800</bug_when>
    <thetext>Created attachment 179522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791801</commentid>
    <comment_count>6</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-12-14 13:15:59 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 179468 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179468&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/TestRunner/src/TestRunner.h:60
&gt; &gt; +    // WebTestRunner implementation.
&gt; &gt; +    virtual bool shouldDumpEditingCallbacks() const;
&gt; 
&gt; Nit: OVERRIDE.

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791802</commentid>
    <comment_count>7</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-12-14 13:16:14 -0800</bug_when>
    <thetext>Darin, can you have a look please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793364</commentid>
    <comment_count>8</comment_count>
      <attachid>179522</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-12-17 22:19:54 -0800</bug_when>
    <thetext>Comment on attachment 179522
Patch

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

&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:47
&gt;  struct WebPoint;

nit: list classes and then structs.  &quot;class&quot; sorts alphabetically before &quot;struct&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793413</commentid>
    <comment_count>9</comment_count>
      <attachid>179888</attachid>
    <who name="">jochen</who>
    <bug_when>2012-12-17 23:59:42 -0800</bug_when>
    <thetext>Created attachment 179888
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793422</commentid>
    <comment_count>10</comment_count>
      <attachid>179893</attachid>
    <who name="">jochen</who>
    <bug_when>2012-12-18 00:07:50 -0800</bug_when>
    <thetext>Created attachment 179893
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793426</commentid>
    <comment_count>11</comment_count>
      <attachid>179893</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-18 00:27:04 -0800</bug_when>
    <thetext>Comment on attachment 179893
Patch for landing

Clearing flags on attachment: 179893

Committed r137993: &lt;http://trac.webkit.org/changeset/137993&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793427</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-18 00:27:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179468</attachid>
            <date>2012-12-14 05:06:29 -0800</date>
            <delta_ts>2012-12-14 13:15:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105013-20121214140348.patch</filename>
            <type>text/plain</type>
            <size>41945</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NzM5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzIzNDljZDI3ZWMxMzEzMjlkOTY0MmQ3ZGQwYWFiNWU0
YTg3YjFkYy4uOGFkNjMwMDA0MGNkMDQwMGNhNzY5NWNhOTRlNTc3YmYwYzQ4MjM0OSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDky
IEBACisyMDEyLTEyLTE0ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBlZGl0aW5nIGNhbGxiYWNrIGR1bXBpbmcgdG8gdGhl
IFdlYlRlc3RQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA1MDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVG8gZGVjaWRlIHdoZXRoZXIgb3Igbm90IHRvIGR1bXAgdGhlIGVkaXRpbmcgY2FsbGJh
Y2tzLCB0aGUgV2ViVGVzdFByb3h5CisgICAgICAgIG5lZWRzIHRvIHF1ZXJ5IHRoZSBUZXN0UnVu
bmVyLiBGb3IgdGhpcyBwdXJwb3NlLCBJIGludHJvZHVjZSBhCisgICAgICAgIFdlYlRlc3RSdW5u
ZXIgY2xhc3MgdGhhdCBqdXN0IGV4cG9zZXMgdGhlIHNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tz
CisgICAgICAgIG1ldGhvZC4gSW4gY29udHJhc3QgdG8gZS5nLiBXZWJFdmVudFNlbmRlciwgdGhl
IFdlYlRlc3RSdW5uZXIgaXMganVzdAorICAgICAgICBhbiBpbnRlcmZhY2UsIGFuZCBpdCBpcyBu
b3Qgb3duZWQgYnkgdGhlIFdlYlRlc3RJbnRlcmZhY2VzLCBidXQgdGhlCisgICAgICAgIGVtYmVk
ZGVyIG9mIHRoZSBUZXN0UnVubmVyIGxpYnJhcnkgbXVzdCBwcm92aWRlIGl0LiBUaGlzIHdpbGwg
Y2hhbmdlCisgICAgICAgIG9uY2UgYWxsIFRlc3RSdW5uZXIgbWV0aG9kcyBhcmUgaW4gdGhlIGxp
YnJhcnkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwOgorICAg
ICAgICAoRFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5lcik6CisgICAgICAgIChEUlRUZXN0UnVu
bmVyOjpyZXNldCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1
bm5lci5oOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcik6CisgICAgICAgIChEUlRUZXN0UnVubmVy
Ojp0YXNrTGlzdCk6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpXb3JrUXVldWU6OnRhc2tMaXN0
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9X
ZWJUZXN0SW50ZXJmYWNlcy5oOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChX
ZWJUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UHJveHlCYXNlKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eTo6c2hvdWxkQmVnaW5FZGl0aW5nKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eTo6c2hvdWxkRW5kRWRpdGluZyk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OnNob3VsZEluc2VydE5vZGUpOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5OjpzaG91bGRJbnNlcnRUZXh0KToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eTo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRS
YW5nZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OnNob3VsZERlbGV0
ZVJhbmdlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eTo6c2hvdWxkQXBw
bHlTdHlsZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OmRpZEJlZ2lu
RWRpdGluZyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OmRpZENoYW5n
ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OmRpZENo
YW5nZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eTo6ZGlk
RW5kRWRpdGluZyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9wdWJsaWMvV2ViVGVzdFJ1bm5lci5oOiBDb3BpZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oLgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UnVubmVy
OjpzaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpUZXN0UnVubmVyOjpUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OlRlc3RSdW5uZXI6On5UZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6cmVzZXQpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6ZHVtcEVkaXRpbmdDYWxsYmFja3MpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIu
aDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcDoKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6dGVzdFJ1bm5lcik6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6OnNldFRlc3RS
dW5uZXIpOgorICAgICAgICAoV2ViVGVzdEludGVyZmFjZXM6OkludGVybmFsKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6SW50ZXJuYWwpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFjZXM6OnRlc3RSdW5uZXIpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0
SW50ZXJmYWNlczo6c2V0VGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnBvc3RBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVz
dFByb3h5QmFzZTo6c2hvdWxkQmVnaW5FZGl0aW5nKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OldlYlRlc3RQcm94eUJhc2U6OnNob3VsZEVuZEVkaXRpbmcpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6c2hvdWxkSW5zZXJ0Tm9kZSk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjpzaG91bGRJbnNlcnRUZXh0KToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFu
Z2UpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6c2hvdWxkRGVs
ZXRlUmFuZ2UpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6c2hv
dWxkQXBwbHlTdHlsZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNl
OjpkaWRCZWdpbkVkaXRpbmcpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5
QmFzZTo6ZGlkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRl
c3RQcm94eUJhc2U6OmRpZENoYW5nZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OldlYlRlc3RQcm94eUJhc2U6OmRpZEVuZEVkaXRpbmcpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHA6CisgICAgICAgIChUZXN0U2hlbGw6OmluaXRpYWxp
emUpOgorICAgICAgICAoVGVzdFNoZWxsOjpjcmVhdGVOZXdXaW5kb3cpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdI
b3N0OjpzaG91bGRCZWdpbkVkaXRpbmcpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnNob3VsZEVu
ZEVkaXRpbmcpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnNob3VsZEluc2VydE5vZGUpOgorICAg
ICAgICAoV2ViVmlld0hvc3Q6OnNob3VsZEluc2VydFRleHQpOgorICAgICAgICAoV2ViVmlld0hv
c3Q6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnNo
b3VsZERlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpzaG91bGRBcHBseVN0eWxl
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorICAg
ICAgICAoV2ViVmlld0hvc3QpOgorCiAyMDEyLTEyLTEzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBBZGQgLS1wcm9maWxlcj1QUk9GSUxFUiBvcHRpb24gdG8gcnVu
LXBlcmYtdGVzdHMgdG8gYWxsb3cgc3BlY2lmeWluZyB3aGljaCBwcm9maWxlciB0byB1c2Ugb24g
cGxhdGZvcm1zIHdpdGggbWFueQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5
cGkKaW5kZXggM2JlM2YyY2M3MjEwMDlhYTdhY2JmY2VkODc2OTg3NWUzMDI0MDQ1Zi4uNjgxYzIy
ZTQ5ZWVkNWIzM2RiNDhkY2ViNGU2MDgxMTFhYjliOGY4MiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBAIC02OCw2ICs2OCw3IEBACiAgICAgICAgICAgICAnY2hy
b21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFBsdWdpbi5oJywKICAgICAgICAg
ICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UHJveHkuaCcsCisgICAgICAg
ICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFJ1bm5lci5oJywKICAgICAg
ICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckNo
cm9taXVtLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uY3BwJywKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggZGY5NmNk
ODE3MDY0ZTNjZGNiYzI0OTc4NjkyZjQ2ZmU3YzQ2ZWMzYy4uMDQ5YTQzZmUzZDVkMDE2NjE1ZjQ3
Y2NiZmNjY2M0YTYwMDJmNjYzMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRFJUVGVzdFJ1bm5lci5jcHAKQEAgLTEzNCw3ICsxMzQsNiBAQCBEUlRUZXN0UnVubmVyOjpE
UlRUZXN0UnVubmVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhvZCgiZHVtcEJhY2tG
b3J3YXJkTGlzdCIsICZEUlRUZXN0UnVubmVyOjpkdW1wQmFja0ZvcndhcmRMaXN0KTsKICAgICBi
aW5kTWV0aG9kKCJkdW1wQ2hpbGRGcmFtZXNBc1RleHQiLCAmRFJUVGVzdFJ1bm5lcjo6ZHVtcENo
aWxkRnJhbWVzQXNUZXh0KTsKICAgICBiaW5kTWV0aG9kKCJkdW1wQ2hpbGRGcmFtZVNjcm9sbFBv
c2l0aW9ucyIsICZEUlRUZXN0UnVubmVyOjpkdW1wQ2hpbGRGcmFtZVNjcm9sbFBvc2l0aW9ucyk7
Ci0gICAgYmluZE1ldGhvZCgiZHVtcEVkaXRpbmdDYWxsYmFja3MiLCAmRFJUVGVzdFJ1bm5lcjo6
ZHVtcEVkaXRpbmdDYWxsYmFja3MpOwogICAgIGJpbmRNZXRob2QoImR1bXBGcmFtZUxvYWRDYWxs
YmFja3MiLCAmRFJUVGVzdFJ1bm5lcjo6ZHVtcEZyYW1lTG9hZENhbGxiYWNrcyk7CiAgICAgYmlu
ZE1ldGhvZCgiZHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFjayIsICZEUlRUZXN0UnVubmVyOjpk
dW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrKTsKICAgICBiaW5kTWV0aG9kKCJkdW1wVXNlckdl
c3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyIsICZEUlRUZXN0UnVubmVyOjpkdW1wVXNlckdlc3R1
cmVJbkZyYW1lTG9hZENhbGxiYWNrcyk7CkBAIC0yNzcsMTIgKzI3Niw2IEBAIHZvaWQgRFJUVGVz
dFJ1bm5lcjo6ZHVtcEFzVGV4dChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3Bw
VmFyaWFudCogcmVzCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLXZvaWQgRFJUVGVzdFJ1
bm5lcjo6ZHVtcEVkaXRpbmdDYWxsYmFja3MoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCogcmVzdWx0KQotewotICAgIG1fZHVtcEVkaXRpbmdDYWxsYmFja3MgPSB0cnVlOwotICAg
IHJlc3VsdC0+c2V0TnVsbCgpOwotfQotCiB2b2lkIERSVFRlc3RSdW5uZXI6OmR1bXBCYWNrRm9y
d2FyZExpc3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewog
ICAgIG1fZHVtcEJhY2tGb3J3YXJkTGlzdCA9IHRydWU7CkBAIC01NDgsNyArNTQxLDYgQEAgdm9p
ZCBEUlRUZXN0UnVubmVyOjpyZXNldCgpCiAgICAgbV9kdW1wQXNUZXh0ID0gZmFsc2U7CiAgICAg
bV9kdW1wQXNBdWRpbyA9IGZhbHNlOwogICAgIG1fZHVtcENyZWF0ZVZpZXcgPSBmYWxzZTsKLSAg
ICBtX2R1bXBFZGl0aW5nQ2FsbGJhY2tzID0gZmFsc2U7CiAgICAgbV9kdW1wRnJhbWVMb2FkQ2Fs
bGJhY2tzID0gZmFsc2U7CiAgICAgbV9kdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrID0gZmFs
c2U7CiAgICAgbV9kdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyA9IGZhbHNlOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oCmluZGV4IGMx
NjZjN2RhM2Q5MjQyNTdiMTA1YjdiM2M1YzQxYzg5NzI1NGFjOTQuLmMxMzdkZmE2OTkzNTkzNzAw
ZGQ2NjhhZTVmYTVmNmQ4ZGFiZWZlNTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9EUlRUZXN0UnVubmVyLmgKQEAgLTY1LDYgKzY1LDggQEAgY2xhc3MgVGVzdFNoZWxsOwog
CiB1c2luZyBXZWJUZXN0UnVubmVyOjpDcHBBcmd1bWVudExpc3Q7CiB1c2luZyBXZWJUZXN0UnVu
bmVyOjpDcHBWYXJpYW50OwordXNpbmcgV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazsKK3Vz
aW5nIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0OwogCiBjbGFzcyBEUlRUZXN0UnVubmVyIDog
cHVibGljIFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXIgewogcHVibGljOgpAQCAtNzIsNyArNzQs
NyBAQCBwdWJsaWM6CiAgICAgLy8gb2JqZWN0LgogICAgIERSVFRlc3RSdW5uZXIoVGVzdFNoZWxs
Kik7CiAKLSAgICB+RFJUVGVzdFJ1bm5lcigpOworICAgIHZpcnR1YWwgfkRSVFRlc3RSdW5uZXIo
KTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gc2V0cyBhIGZsYWcgdGhhdCB0ZWxscyB0aGUgdGVz
dF9zaGVsbCB0byBkdW1wIHBhZ2VzIGFzCiAgICAgLy8gcGxhaW4gdGV4dCwgcmF0aGVyIHRoYW4g
YXMgYSB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZW5kZXJlcidzIHN0YXRlLgpAQCAtODAs
MTEgKzgyLDYgQEAgcHVibGljOgogICAgIHZvaWQgZHVtcEFzVGV4dChjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHNldHMgYSBmbGFn
IHRoYXQgdGVsbHMgdGhlIHRlc3Rfc2hlbGwgdG8gcHJpbnQgYSBsaW5lIG9mCi0gICAgLy8gZGVz
Y3JpcHRpdmUgdGV4dCBmb3IgZWFjaCBlZGl0aW5nIGNvbW1hbmQuIEl0IHRha2VzIG5vIGFyZ3Vt
ZW50cywgYW5kCi0gICAgLy8gaWdub3JlcyBhbnkgdGhhdCBtYXkgYmUgcHJlc2VudC4KLSAgICB2
b2lkIGR1bXBFZGl0aW5nQ2FsbGJhY2tzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlh
bnQqKTsKLQotICAgIC8vIFRoaXMgZnVuY3Rpb24gc2V0cyBhIGZsYWcgdGhhdCB0ZWxscyB0aGUg
dGVzdF9zaGVsbCB0byBwcmludCBhIGxpbmUgb2YKICAgICAvLyBkZXNjcmlwdGl2ZSB0ZXh0IGZv
ciBlYWNoIGZyYW1lIGxvYWQgY2FsbGJhY2suIEl0IHRha2VzIG5vIGFyZ3VtZW50cywgYW5kCiAg
ICAgLy8gaWdub3JlcyBhbnkgdGhhdCBtYXkgYmUgcHJlc2VudC4KICAgICB2b2lkIGR1bXBGcmFt
ZUxvYWRDYWxsYmFja3MoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwpAQCAt
Mjk1LDcgKzI5Miw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZER1bXBBc0F1ZGlvKGJv
b2wgZHVtcEFzQXVkaW8pIHsgbV9kdW1wQXNBdWRpbyA9IGR1bXBBc0F1ZGlvOyB9IAogICAgIGJv
b2wgc2hvdWxkRHVtcEFzVGV4dCgpIHsgcmV0dXJuIG1fZHVtcEFzVGV4dDsgfQogICAgIHZvaWQg
c2V0U2hvdWxkRHVtcEFzVGV4dChib29sIHZhbHVlKSB7IG1fZHVtcEFzVGV4dCA9IHZhbHVlOyB9
Ci0gICAgYm9vbCBzaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpIHsgcmV0dXJuIG1fZHVtcEVk
aXRpbmdDYWxsYmFja3M7IH0KICAgICBib29sIHNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3Mo
KSB7IHJldHVybiBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3M7IH0KICAgICB2b2lkIHNldFNob3Vs
ZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoYm9vbCB2YWx1ZSkgeyBtX2R1bXBGcmFtZUxvYWRDYWxs
YmFja3MgPSB2YWx1ZTsgfQogICAgIGJvb2wgc2hvdWxkRHVtcFByb2dyZXNzRmluaXNoZWRDYWxs
YmFjaygpIHsgcmV0dXJuIG1fZHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFjazsgfQpAQCAtMzU3
LDcgKzM1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBib29sIHJ1bihUZXN0U2hlbGwq
KSA9IDA7CiAgICAgfTsKIAotICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0YXNrTGlz
dCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CisgICAgV2ViVGFza0xpc3QqIHRhc2tMaXN0KCkg
eyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KIAogICAgIGJvb2wgc2hvdWxkU3RheU9uUGFnZUFmdGVy
SGFuZGxpbmdCZWZvcmVVbmxvYWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFN0YXlPblBhZ2VB
ZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkOyB9CiAKQEAgLTM4MCwzMCArMzc2LDMwIEBAIHByaXZh
dGU6CiAKICAgICAgICAgdm9pZCBzZXRGcm96ZW4oYm9vbCBmcm96ZW4pIHsgbV9mcm96ZW4gPSBm
cm96ZW47IH0KICAgICAgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gbV9xdWV1ZS5pc0VtcHR5
KCk7IH0KLSAgICAgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyBy
ZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICAgICAgV2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyBy
ZXR1cm4gJm1fdGFza0xpc3Q7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgcHJvY2Vz
c1dvcmsoKTsKLSAgICAgICAgY2xhc3MgV29ya1F1ZXVlVGFzazogcHVibGljIFdlYlRlc3RSdW5u
ZXI6OldlYk1ldGhvZFRhc2s8V29ya1F1ZXVlPiB7CisgICAgICAgIGNsYXNzIFdvcmtRdWV1ZVRh
c2s6IHB1YmxpYyBXZWJNZXRob2RUYXNrPFdvcmtRdWV1ZT4gewogICAgICAgICBwdWJsaWM6Ci0g
ICAgICAgICAgICBXb3JrUXVldWVUYXNrKFdvcmtRdWV1ZSogb2JqZWN0KTogV2ViVGVzdFJ1bm5l
cjo6V2ViTWV0aG9kVGFzazxXb3JrUXVldWU+KG9iamVjdCkgeyB9CisgICAgICAgICAgICBXb3Jr
UXVldWVUYXNrKFdvcmtRdWV1ZSogb2JqZWN0KTogV2ViTWV0aG9kVGFzazxXb3JrUXVldWU+KG9i
amVjdCkgeyB9CiAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIHsgbV9vYmpl
Y3QtPnByb2Nlc3NXb3JrKCk7IH0KICAgICAgICAgfTsKIAotICAgICAgICBXZWJUZXN0UnVubmVy
OjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OworICAgICAgICBXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0
OwogICAgICAgICBEZXF1ZTxXb3JrSXRlbSo+IG1fcXVldWU7CiAgICAgICAgIGJvb2wgbV9mcm96
ZW47CiAgICAgICAgIERSVFRlc3RSdW5uZXIqIG1fY29udHJvbGxlcjsKICAgICB9OwogICAgIHZv
aWQgY29tcGxldGVOb3RpZnlEb25lKGJvb2wgaXNUaW1lb3V0KTsKLSAgICBjbGFzcyBOb3RpZnlE
b25lVGltZWRPdXRUYXNrOiBwdWJsaWMgV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxEUlRU
ZXN0UnVubmVyPiB7CisgICAgY2xhc3MgTm90aWZ5RG9uZVRpbWVkT3V0VGFzazogcHVibGljIFdl
Yk1ldGhvZFRhc2s8RFJUVGVzdFJ1bm5lcj4gewogICAgIHB1YmxpYzoKLSAgICAgICAgTm90aWZ5
RG9uZVRpbWVkT3V0VGFzayhEUlRUZXN0UnVubmVyKiBvYmplY3QpOiBXZWJUZXN0UnVubmVyOjpX
ZWJNZXRob2RUYXNrPERSVFRlc3RSdW5uZXI+KG9iamVjdCkgeyB9CisgICAgICAgIE5vdGlmeURv
bmVUaW1lZE91dFRhc2soRFJUVGVzdFJ1bm5lciogb2JqZWN0KTogV2ViTWV0aG9kVGFzazxEUlRU
ZXN0UnVubmVyPihvYmplY3QpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgp
IHsgbV9vYmplY3QtPmNvbXBsZXRlTm90aWZ5RG9uZSh0cnVlKTsgfQogICAgIH07CiAKICAgICAv
LyBVc2VkIGZvciB0ZXN0IHRpbWVvdXRzLgotICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0
IG1fdGFza0xpc3Q7CisgICAgV2ViVGFza0xpc3QgbV90YXNrTGlzdDsKIAogICAgIC8vIE5vbi1v
d25pbmcgcG9pbnRlci4gVGhlIERSVFRlc3RSdW5uZXIgaXMgb3duZWQgYnkgdGhlIGhvc3QuCiAg
ICAgVGVzdFNoZWxsKiBtX3NoZWxsOwpAQCAtNDE1LDEwICs0MTEsNiBAQCBwcml2YXRlOgogICAg
IC8vIElmIHRydWUsIHRoZSB0ZXN0X3NoZWxsIHdpbGwgb3V0cHV0IGEgYmFzZTY0IGVuY29kZWQg
V0FWRSBmaWxlLgogICAgIGJvb2wgbV9kdW1wQXNBdWRpbzsKIAotICAgIC8vIElmIHRydWUsIHRo
ZSB0ZXN0X3NoZWxsIHdpbGwgd3JpdGUgYSBkZXNjcmlwdGl2ZSBsaW5lIGZvciBlYWNoIGVkaXRp
bmcKLSAgICAvLyBjb21tYW5kLgotICAgIGJvb2wgbV9kdW1wRWRpdGluZ0NhbGxiYWNrczsKLQog
ICAgIC8vIElmIHRydWUsIHRoZSB0ZXN0X3NoZWxsIHdpbGwgZHJhdyB0aGUgYm91bmRzIG9mIHRo
ZSBjdXJyZW50IHNlbGVjdGlvbiByZWN0CiAgICAgLy8gdGFraW5nIHBvc3NpYmxlIHRyYW5zZm9y
bXMgb2YgdGhlIHNlbGVjdGlvbiByZWN0IGludG8gYWNjb3VudC4KICAgICBib29sIG1fZHVtcFNl
bGVjdGlvblJlY3Q7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaAppbmRleCA1
MjUyMGE2YjVhMjE3YTdmMjU2NjgwNzMxODFjZTY4N2I0M2QxNTYzLi5kOGQ4YjNmZDdhMDQxOGE0
MjExMGZlOWU4NWYzYjdmMzY2NmUwN2QwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRl
cmZhY2VzLmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogY2xh
c3MgV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI7CiBjbGFzcyBXZWJFdmVudFNlbmRlcjsKIGNs
YXNzIFdlYlRlc3REZWxlZ2F0ZTsKK2NsYXNzIFdlYlRlc3RSdW5uZXI7CiAKIGNsYXNzIFdlYlRl
c3RJbnRlcmZhY2VzIHsKIHB1YmxpYzoKQEAgLTU0LDYgKzU1LDkgQEAgcHVibGljOgogCiAgICAg
V2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIqIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7CiAg
ICAgV2ViRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKCk7CisgICAgV2ViVGVzdFJ1bm5lciogdGVz
dFJ1bm5lcigpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIFRlc3RSdW5uZXIgaXMg
Y29tcGxldGUuCisgICAgdm9pZCBzZXRUZXN0UnVubmVyKFdlYlRlc3RSdW5uZXIqKTsKIAogcHJp
dmF0ZToKICAgICBjbGFzcyBJbnRlcm5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgKaW5k
ZXggYjRhNTkzY2VlYTA1YTE1ZjA4MmE3ZDRhYzQwMTIwODMxYTMzMzY1Yi4uNTIwYzYyMGY1MTdh
NGUwYzU3YWY2MWU2ZGU1NzY4NDU0ZjgwZWFkOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5
LmgKQEAgLTM0LDIxICszNCwyNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJSZWN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJEcmFnT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJF
ZGl0aW5nQWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOYXZp
Z2F0aW9uUG9saWN5LmgiCisjaW5jbHVkZSAiV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0
QWZmaW5pdHkuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0OwogY2xhc3MgV2ViRHJhZ0RhdGE7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYklt
YWdlOworY2xhc3MgV2ViTm9kZTsKIHN0cnVjdCBXZWJQb2ludDsKK2NsYXNzIFdlYlJhbmdlOwog
c3RydWN0IFdlYlNpemU7CitjbGFzcyBXZWJTdHJpbmc7CiB9CiAKIG5hbWVzcGFjZSBXZWJUZXN0
UnVubmVyIHsKIAogY2xhc3MgV2ViVGVzdERlbGVnYXRlOwogY2xhc3MgV2ViVGVzdEludGVyZmFj
ZXM7CitjbGFzcyBXZWJUZXN0UnVubmVyOwogCiBjbGFzcyBXZWJUZXN0UHJveHlCYXNlIHsKIHB1
YmxpYzoKQEAgLTcxLDYgKzc3LDE3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRpZEF1dG9SZXNp
emUoY29uc3QgV2ViS2l0OjpXZWJTaXplJik7CiAgICAgdm9pZCBwb3N0QWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbihjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmLCBXZWJLaXQ6
OldlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24pOwogICAgIHZvaWQgc3RhcnREcmFnZ2luZyhX
ZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJEcmFnRGF0YSYsIFdlYktpdDo6V2Vi
RHJhZ09wZXJhdGlvbnNNYXNrLCBjb25zdCBXZWJLaXQ6OldlYkltYWdlJiwgY29uc3QgV2ViS2l0
OjpXZWJQb2ludCYpOworICAgIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nKGNvbnN0IFdlYktpdDo6
V2ViUmFuZ2UmKTsKKyAgICBib29sIHNob3VsZEVuZEVkaXRpbmcoY29uc3QgV2ViS2l0OjpXZWJS
YW5nZSYpOworICAgIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShjb25zdCBXZWJLaXQ6OldlYk5vZGUm
LCBjb25zdCBXZWJLaXQ6OldlYlJhbmdlJiwgV2ViS2l0OjpXZWJFZGl0aW5nQWN0aW9uKTsKKyAg
ICBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHRleHQsIGNv
bnN0IFdlYktpdDo6V2ViUmFuZ2UmLCBXZWJLaXQ6OldlYkVkaXRpbmdBY3Rpb24pOworICAgIGJv
b2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShjb25zdCBXZWJLaXQ6OldlYlJhbmdlJiBmcm9t
UmFuZ2UsIGNvbnN0IFdlYktpdDo6V2ViUmFuZ2UmIHRvUmFuZ2UsIFdlYktpdDo6V2ViVGV4dEFm
ZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKTsKKyAgICBib29sIHNob3VsZERlbGV0ZVJhbmdl
KGNvbnN0IFdlYktpdDo6V2ViUmFuZ2UmKTsKKyAgICBib29sIHNob3VsZEFwcGx5U3R5bGUoY29u
c3QgV2ViS2l0OjpXZWJTdHJpbmcmIHN0eWxlLCBjb25zdCBXZWJLaXQ6OldlYlJhbmdlJik7Cisg
ICAgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKTsKKyAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihi
b29sIGlzRW1wdHlTZWxlY3Rpb24pOworICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudHMoKTsKKyAg
ICB2b2lkIGRpZEVuZEVkaXRpbmcoKTsKIAogcHJpdmF0ZToKICAgICBXZWJUZXN0SW50ZXJmYWNl
cyogbV90ZXN0SW50ZXJmYWNlczsKQEAgLTEzNiw2ICsxNTMsNjEgQEAgcHVibGljOgogICAgICAg
ICBXZWJUZXN0UHJveHlCYXNlOjpzdGFydERyYWdnaW5nKGZyYW1lLCBkYXRhLCBtYXNrLCBpbWFn
ZSwgcG9pbnQpOwogICAgICAgICBXZWJWaWV3Q2xpZW50SW1wbDo6c3RhcnREcmFnZ2luZyhmcmFt
ZSwgZGF0YSwgbWFzaywgaW1hZ2UsIHBvaW50KTsKICAgICB9CisgICAgdmlydHVhbCBib29sIHNo
b3VsZEJlZ2luRWRpdGluZyhjb25zdCBXZWJLaXQ6OldlYlJhbmdlJiByYW5nZSkKKyAgICB7Cisg
ICAgICAgIFdlYlRlc3RQcm94eUJhc2U6OnNob3VsZEJlZ2luRWRpdGluZyhyYW5nZSk7CisgICAg
ICAgIHJldHVybiBXZWJWaWV3Q2xpZW50SW1wbDo6c2hvdWxkQmVnaW5FZGl0aW5nKHJhbmdlKTsK
KyAgICB9CisgICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmcoY29uc3QgV2ViS2l0OjpX
ZWJSYW5nZSYgcmFuZ2UpCisgICAgeworICAgICAgICBXZWJUZXN0UHJveHlCYXNlOjpzaG91bGRF
bmRFZGl0aW5nKHJhbmdlKTsKKyAgICAgICAgcmV0dXJuIFdlYlZpZXdDbGllbnRJbXBsOjpzaG91
bGRFbmRFZGl0aW5nKHJhbmdlKTsKKyAgICB9CisgICAgdmlydHVhbCBib29sIHNob3VsZEluc2Vy
dE5vZGUoY29uc3QgV2ViS2l0OjpXZWJOb2RlJiBub2RlLCBjb25zdCBXZWJLaXQ6OldlYlJhbmdl
JiByYW5nZSwgV2ViS2l0OjpXZWJFZGl0aW5nQWN0aW9uIGFjdGlvbikKKyAgICB7CisgICAgICAg
IFdlYlRlc3RQcm94eUJhc2U6OnNob3VsZEluc2VydE5vZGUobm9kZSwgcmFuZ2UsIGFjdGlvbik7
CisgICAgICAgIHJldHVybiBXZWJWaWV3Q2xpZW50SW1wbDo6c2hvdWxkSW5zZXJ0Tm9kZShub2Rl
LCByYW5nZSwgYWN0aW9uKTsKKyAgICB9CisgICAgdmlydHVhbCBib29sIHNob3VsZEluc2VydFRl
eHQoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHRleHQsIGNvbnN0IFdlYktpdDo6V2ViUmFuZ2Um
IHJhbmdlLCBXZWJLaXQ6OldlYkVkaXRpbmdBY3Rpb24gYWN0aW9uKQorICAgIHsKKyAgICAgICAg
V2ViVGVzdFByb3h5QmFzZTo6c2hvdWxkSW5zZXJ0VGV4dCh0ZXh0LCByYW5nZSwgYWN0aW9uKTsK
KyAgICAgICAgcmV0dXJuIFdlYlZpZXdDbGllbnRJbXBsOjpzaG91bGRJbnNlcnRUZXh0KHRleHQs
IHJhbmdlLCBhY3Rpb24pOworICAgIH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRSYW5nZShjb25zdCBXZWJLaXQ6OldlYlJhbmdlJiBmcm9tUmFuZ2UsIGNvbnN0IFdlYktp
dDo6V2ViUmFuZ2UmIHRvUmFuZ2UsIFdlYktpdDo6V2ViVGV4dEFmZmluaXR5IGFmZmluaXR5LCBi
b29sIHN0aWxsU2VsZWN0aW5nKQorICAgIHsKKyAgICAgICAgV2ViVGVzdFByb3h5QmFzZTo6c2hv
dWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShmcm9tUmFuZ2UsIHRvUmFuZ2UsIGFmZmluaXR5LCBzdGls
bFNlbGVjdGluZyk7CisgICAgICAgIHJldHVybiBXZWJWaWV3Q2xpZW50SW1wbDo6c2hvdWxkQ2hh
bmdlU2VsZWN0ZWRSYW5nZShmcm9tUmFuZ2UsIHRvUmFuZ2UsIGFmZmluaXR5LCBzdGlsbFNlbGVj
dGluZyk7CisgICAgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWxldGVSYW5nZShjb25zdCBX
ZWJLaXQ6OldlYlJhbmdlJiByYW5nZSkKKyAgICB7CisgICAgICAgIFdlYlRlc3RQcm94eUJhc2U6
OnNob3VsZERlbGV0ZVJhbmdlKHJhbmdlKTsKKyAgICAgICAgcmV0dXJuIFdlYlZpZXdDbGllbnRJ
bXBsOjpzaG91bGREZWxldGVSYW5nZShyYW5nZSk7CisgICAgfQorICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRBcHBseVN0eWxlKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBzdHlsZSwgY29uc3QgV2Vi
S2l0OjpXZWJSYW5nZSYgcmFuZ2UpCisgICAgeworICAgICAgICBXZWJUZXN0UHJveHlCYXNlOjpz
aG91bGRBcHBseVN0eWxlKHN0eWxlLCByYW5nZSk7CisgICAgICAgIHJldHVybiBXZWJWaWV3Q2xp
ZW50SW1wbDo6c2hvdWxkQXBwbHlTdHlsZShzdHlsZSwgcmFuZ2UpOworICAgIH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQmVnaW5FZGl0aW5nKCkKKyAgICB7CisgICAgICAgIFdlYlRlc3RQcm94eUJh
c2U6OmRpZEJlZ2luRWRpdGluZygpOworICAgICAgICBXZWJWaWV3Q2xpZW50SW1wbDo6ZGlkQmVn
aW5FZGl0aW5nKCk7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24o
Ym9vbCBpc0VtcHR5U2VsZWN0aW9uKQorICAgIHsKKyAgICAgICAgV2ViVGVzdFByb3h5QmFzZTo6
ZGlkQ2hhbmdlU2VsZWN0aW9uKGlzRW1wdHlTZWxlY3Rpb24pOworICAgICAgICBXZWJWaWV3Q2xp
ZW50SW1wbDo6ZGlkQ2hhbmdlU2VsZWN0aW9uKGlzRW1wdHlTZWxlY3Rpb24pOworICAgIH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHMoKQorICAgIHsKKyAgICAgICAgV2ViVGVz
dFByb3h5QmFzZTo6ZGlkQ2hhbmdlQ29udGVudHMoKTsKKyAgICAgICAgV2ViVmlld0NsaWVudElt
cGw6OmRpZENoYW5nZUNvbnRlbnRzKCk7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRF
ZGl0aW5nKCkKKyAgICB7CisgICAgICAgIFdlYlRlc3RQcm94eUJhc2U6OmRpZEVuZEVkaXRpbmco
KTsKKyAgICAgICAgV2ViVmlld0NsaWVudEltcGw6OmRpZEVuZEVkaXRpbmcoKTsKKyAgICB9CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UnVubmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE2YjAwMTM4
ODNkNjk1MWMyMjJmMjE4ZmI1YWZlZDUzYmU2NGRlMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RSdW5uZXIu
aApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJUZXN0UnVubmVyX2gKKyNkZWZpbmUgV2ViVGVz
dFJ1bm5lcl9oCisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKKworLy8gRklYTUU6IE9uY2Ug
dGhlIFRlc3RSdW5uZXIgY2xhc3MgaXMgY29tcGxldGUsIHRoaXMgY2xhc3Mgc2hvdWxkIHRha2Ug
YQorLy8gVGVzdFJ1bm5lciogYXMgY3RvciBhcmd1bWVudCwgYW5kIG5vdCBoYXZlIGRlZmF1bHQg
aW1wbGVtZW50YXRpb25zLgorY2xhc3MgV2ViVGVzdFJ1bm5lciB7CitwdWJsaWM6CisgICAgdmly
dHVhbCBib29sIHNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KK307CisKK30KKworI2VuZGlmIC8vIFdlYlRlc3RSdW5uZXJfaApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmNwcAppbmRleCA0NmU1MjAxMzMxMmQ5MTNlZjNhYWJhNzcyYmQ1NjA5NjNjMzhlNWEyLi5k
ZGE1YzczMTMyZGFmZjM3MWQ5Y2FiYWUxMzNmZWViMzNhYjE3ODUxIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmNwcApAQCAtMTM1LDYgKzEzNSw5IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAg
IGJpbmRNZXRob2QoIm92ZXJyaWRlUHJlZmVyZW5jZSIsICZUZXN0UnVubmVyOjpvdmVycmlkZVBy
ZWZlcmVuY2UpOwogICAgIGJpbmRNZXRob2QoInNldFBsdWdpbnNFbmFibGVkIiwgJlRlc3RSdW5u
ZXI6OnNldFBsdWdpbnNFbmFibGVkKTsKIAorICAgIC8vIFRoZSBmb2xsb3dpbmcgbW9kaWZ5IHRo
ZSBzdGF0ZSBvZiB0aGUgVGVzdFJ1bm5lci4KKyAgICBiaW5kTWV0aG9kKCJkdW1wRWRpdGluZ0Nh
bGxiYWNrcyIsICZUZXN0UnVubmVyOjpkdW1wRWRpdGluZ0NhbGxiYWNrcyk7CisKICAgICAvLyBQ
cm9wZXJ0aWVzLgogICAgIGJpbmRQcm9wZXJ0eSgid29ya2VyVGhyZWFkQ291bnQiLCAmVGVzdFJ1
bm5lcjo6d29ya2VyVGhyZWFkQ291bnQpOwogICAgIGJpbmRQcm9wZXJ0eSgiZ2xvYmFsRmxhZyIs
ICZtX2dsb2JhbEZsYWcpOwpAQCAtMTcyLDYgKzE3NSwxMCBAQCBUZXN0UnVubmVyOjpUZXN0UnVu
bmVyKCkKICAgICBiaW5kRmFsbGJhY2tNZXRob2QoJlRlc3RSdW5uZXI6OmZhbGxiYWNrTWV0aG9k
KTsKIH0KIAorVGVzdFJ1bm5lcjo6flRlc3RSdW5uZXIoKQoreworfQorCiB2b2lkIFRlc3RSdW5u
ZXI6OnJlc2V0KCkKIHsKICAgICBpZiAobV93ZWJWaWV3KSB7CkBAIC0xOTAsMTIgKzE5NywxOSBA
QCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKICAgICBXZWJGb250UmVuZGVyaW5nOjpzZXRTdWJw
aXhlbFBvc2l0aW9uaW5nKGZhbHNlKTsKICNlbmRpZgogCisgICAgbV9kdW1wRWRpdGluZ0NhbGxi
YWNrcyA9IGZhbHNlOworCiAgICAgbV9nbG9iYWxGbGFnLnNldChmYWxzZSk7CiAgICAgbV9wbGF0
Zm9ybU5hbWUuc2V0KCJjaHJvbWl1bSIpOwogCiAgICAgbV91c2VyU3R5bGVTaGVldExvY2F0aW9u
ID0gV2ViVVJMKCk7CiB9CiAKK2Jvb2wgVGVzdFJ1bm5lcjo6c2hvdWxkRHVtcEVkaXRpbmdDYWxs
YmFja3MoKSBjb25zdAoreworICAgIHJldHVybiBtX2R1bXBFZGl0aW5nQ2FsbGJhY2tzOworfQor
CiB2b2lkIFRlc3RSdW5uZXI6OnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhjb25zdCBD
cHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIGlm
IChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpCkBAIC05MDEs
NiArOTE1LDEyIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0UGx1Z2luc0VuYWJsZWQoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqCiAgICAgcmVzdWx0LT5zZXROdWxs
KCk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6ZHVtcEVkaXRpbmdDYWxsYmFja3MoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIG1fZHVtcEVkaXRpbmdD
YWxsYmFja3MgPSB0cnVlOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCiB2b2lkIFRlc3RS
dW5uZXI6OndvcmtlclRocmVhZENvdW50KENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1
bHQtPnNldChzdGF0aWNfY2FzdDxpbnQ+KFdlYldvcmtlckluZm86OmRlZGljYXRlZFdvcmtlckNv
dW50KCkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAppbmRleCA2ZTY3NzhlZWI1MjFlZTBhNjBjZWMzOWQx
ZmFiNjk5ZmM3MmM3OWFiLi5kZmQ4OGZiODA2MmFhYzk2OTU2ZGJhMGY3ODlhNGQxYzU1YjM1ZDZj
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvVGVzdFJ1bm5lci5oCkBAIC0zMyw2ICszMyw3IEBACiAjZGVmaW5lIFRlc3RSdW5u
ZXJfaAogCiAjaW5jbHVkZSAiQ3BwQm91bmRDbGFzcy5oIgorI2luY2x1ZGUgIldlYlRlc3RSdW5u
ZXIuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkwuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC00Myw5ICs0NCwxMCBAQCBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIGNsYXNzIFdl
YlRlc3REZWxlZ2F0ZTsKIAotY2xhc3MgVGVzdFJ1bm5lciA6IHB1YmxpYyBDcHBCb3VuZENsYXNz
IHsKK2NsYXNzIFRlc3RSdW5uZXIgOiBwdWJsaWMgQ3BwQm91bmRDbGFzcywgcHVibGljIFdlYlRl
c3RSdW5uZXIgewogcHVibGljOgogICAgIFRlc3RSdW5uZXIoKTsKKyAgICB2aXJ0dWFsIH5UZXN0
UnVubmVyKCk7CiAKICAgICAvLyBGSVhNRTogb25jZSBEUlRUZXN0UnVubmVyIGlzIG1vdmVkIGVu
dGlyZWx5IHRvIHRoaXMgY2xhc3MsIGNoYW5nZSB0aGlzCiAgICAgLy8gbWV0aG9kIHRvIHRha2Ug
YSBUZXN0RGVsZWdhdGUqIGluc3RlYWQuCkBAIC01NCw2ICs1Niw5IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcmVzZXQoKTsKIAorICAgIC8vIFdlYlRlc3RSdW5uZXIgaW1wbGVtZW50YXRpb24uCisg
ICAgdmlydHVhbCBib29sIHNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkgY29uc3Q7CisKIHBy
b3RlY3RlZDoKICAgICAvLyBGSVhNRTogbWFrZSB0aGVzZSBwcml2YXRlIG9uY2UgdGhlIG1vdmUg
ZnJvbSBEUlRUZXN0UnVubmVyIHRvIFRlc3RSdW5uZXIKICAgICAvLyBpcyBjb21wbGV0ZS4KQEAg
LTE3NCw2ICsxNzksMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFBsdWdpbnNFbmFibGVkKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIC8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLworICAgIC8vIE1ldGhvZHMgdGhhdCBtb2RpZnkgdGhlIHN0YXRlIG9mIFRlc3RSdW5uZXIK
KworICAgIC8vIFRoaXMgZnVuY3Rpb24gc2V0cyBhIGZsYWcgdGhhdCB0ZWxscyB0aGUgdGVzdF9z
aGVsbCB0byBwcmludCBhIGxpbmUgb2YKKyAgICAvLyBkZXNjcmlwdGl2ZSB0ZXh0IGZvciBlYWNo
IGVkaXRpbmcgY29tbWFuZC4gSXQgdGFrZXMgbm8gYXJndW1lbnRzLCBhbmQKKyAgICAvLyBpZ25v
cmVzIGFueSB0aGF0IG1heSBiZSBwcmVzZW50LgorICAgIHZvaWQgZHVtcEVkaXRpbmdDYWxsYmFj
a3MoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCisgICAgLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCiAgICAgLy8gUHJvcGVydGllcwogICAgIHZvaWQgd29ya2VyVGhyZWFkQ291bnQo
Q3BwVmFyaWFudCopOwogCkBAIC0yMDUsNiArMjE4LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gQm91
bmQgdmFyaWFibGUgdG8gcmV0dXJuIHRoZSBuYW1lIG9mIHRoaXMgcGxhdGZvcm0gKGNocm9taXVt
KS4KICAgICBDcHBWYXJpYW50IG1fcGxhdGZvcm1OYW1lOwogCisgICAgLy8gSWYgdHJ1ZSwgdGhl
IHRlc3Rfc2hlbGwgd2lsbCB3cml0ZSBhIGRlc2NyaXB0aXZlIGxpbmUgZm9yIGVhY2ggZWRpdGlu
ZworICAgIC8vIGNvbW1hbmQuCisgICAgYm9vbCBtX2R1bXBFZGl0aW5nQ2FsbGJhY2tzOworCiAg
ICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOwogICAgIFdlYktpdDo6V2ViVmlldyogbV93
ZWJWaWV3OwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcAppbmRleCA5YTg2
OTUzYzNjYjg1Mzc0MGVhYTc4YmFmZmExODhjNGI3MjcyOGY4Li40M2ZlZWFjMzZhMjlkN2ZjOTgz
YTRiZjQ3YjEzNmFiYjUyZjI3MmY2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMu
Y3BwCkBAIC01NSw2ICs1NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERlbGVnYXRlKFdlYlRl
c3REZWxlZ2F0ZSopOwogICAgIFdlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKiBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlcigpIHsgcmV0dXJuICZtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyOyB9CiAg
ICAgV2ViRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKCkgeyByZXR1cm4gJm1fZXZlbnRTZW5kZXI7
IH0KKyAgICBXZWJUZXN0UnVubmVyKiB0ZXN0UnVubmVyKCkgeyByZXR1cm4gbV90ZXN0UnVubmVy
OyB9CisgICAgdm9pZCBzZXRUZXN0UnVubmVyKFdlYlRlc3RSdW5uZXIqIHRlc3RSdW5uZXIpIHsg
bV90ZXN0UnVubmVyID0gdGVzdFJ1bm5lcjsgfQogCiAgICAgLy8gVGVzdERlbGVnYXRlIGltcGxl
bWVudGF0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNvbnRleHRNZW51RGF0YSgpOwpAQCAt
NzQsMTIgKzc2LDE0IEBAIHByaXZhdGU6CiAgICAgVGVzdEludGVyZmFjZXMgbV9pbnRlcmZhY2Vz
OwogICAgIFdlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI7CiAgICAgV2ViRXZlbnRTZW5kZXIgbV9ldmVudFNlbmRlcjsKKyAgICBXZWJUZXN0UnVubmVy
KiBtX3Rlc3RSdW5uZXI7CiAgICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOwogfTsKIAog
V2ViVGVzdEludGVyZmFjZXM6OkludGVybmFsOjpJbnRlcm5hbCgpCiAgICAgOiBtX2FjY2Vzc2li
aWxpdHlDb250cm9sbGVyKG1faW50ZXJmYWNlcy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpKQog
ICAgICwgbV9ldmVudFNlbmRlcihtX2ludGVyZmFjZXMuZXZlbnRTZW5kZXIoKSkKKyAgICAsIG1f
dGVzdFJ1bm5lcigwKQogICAgICwgbV9kZWxlZ2F0ZSgwKQogewogfQpAQCAtMTk5LDQgKzIwMywx
NCBAQCBXZWJFdmVudFNlbmRlciogV2ViVGVzdEludGVyZmFjZXM6OmV2ZW50U2VuZGVyKCkKICAg
ICByZXR1cm4gbV9pbnRlcm5hbC0+ZXZlbnRTZW5kZXIoKTsKIH0KIAorV2ViVGVzdFJ1bm5lciog
V2ViVGVzdEludGVyZmFjZXM6OnRlc3RSdW5uZXIoKQoreworICAgIHJldHVybiBtX2ludGVybmFs
LT50ZXN0UnVubmVyKCk7Cit9CisKK3ZvaWQgV2ViVGVzdEludGVyZmFjZXM6OnNldFRlc3RSdW5u
ZXIoV2ViVGVzdFJ1bm5lciogdGVzdFJ1bm5lcikKK3sKKyAgICBtX2ludGVybmFsLT5zZXRUZXN0
UnVubmVyKHRlc3RSdW5uZXIpOworfQorCiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcAppbmRl
eCA5NDJmMGJiODg5YzA1MjNkOTcyNjM5MWI3MTRlZmZjMTNkMzVmMDBhLi4wZTc5NDA2Y2E0OGY5
YjAyYmM4MWYzNGMyNDUwM2Q2NmEwOTNhMWRhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAK
QEAgLTM3LDE1ICszNyw4MiBAQAogI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKICNpbmNsdWRlICJX
ZWJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKKyNpbmNsdWRlICJXZWJSYW5n
ZS5oIgogI2luY2x1ZGUgIldlYlRlc3REZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIldlYlRlc3RJbnRl
cmZhY2VzLmgiCisjaW5jbHVkZSAiV2ViVGVzdFJ1bm5lci5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkNTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViVGVz
dFJ1bm5lciB7CiAKK25hbWVzcGFjZSB7CisKK3ZvaWQgcHJpbnROb2RlRGVzY3JpcHRpb24oV2Vi
VGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSwgY29uc3QgV2ViTm9kZSYgbm9kZSwgaW50IGV4Y2VwdGlv
bikKK3sKKyAgICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAgIGRlbGVnYXRlLT5wcmludE1lc3Nh
Z2UoIkVSUk9SIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG5vZGUuaXNOdWxs
KCkpIHsKKyAgICAgICAgZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiKG51bGwpIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgZGVsZWdhdGUtPnByaW50TWVzc2FnZShub2RlLm5vZGVOYW1l
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgY29uc3QgV2ViTm9kZSYgcGFyZW50ID0gbm9kZS5wYXJl
bnROb2RlKCk7CisgICAgaWYgKCFwYXJlbnQuaXNOdWxsKCkpIHsKKyAgICAgICAgZGVsZWdhdGUt
PnByaW50TWVzc2FnZSgiID4gIik7CisgICAgICAgIHByaW50Tm9kZURlc2NyaXB0aW9uKGRlbGVn
YXRlLCBwYXJlbnQsIDApOworICAgIH0KK30KKwordm9pZCBwcmludFJhbmdlRGVzY3JpcHRpb24o
V2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSwgY29uc3QgV2ViUmFuZ2UmIHJhbmdlKQoreworICAg
IGlmIChyYW5nZS5pc051bGwoKSkgeworICAgICAgICBkZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKCIo
bnVsbCkiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjaGFyIGJ1ZmZlclsxMDBdOwor
ICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJyYW5nZSBmcm9tICVkIG9mICIs
IHJhbmdlLnN0YXJ0T2Zmc2V0KCkpOworICAgIGRlbGVnYXRlLT5wcmludE1lc3NhZ2UoYnVmZmVy
KTsKKyAgICBpbnQgZXhjZXB0aW9uID0gMDsKKyAgICBXZWJOb2RlIHN0YXJ0Tm9kZSA9IHJhbmdl
LnN0YXJ0Q29udGFpbmVyKGV4Y2VwdGlvbik7CisgICAgcHJpbnROb2RlRGVzY3JpcHRpb24oZGVs
ZWdhdGUsIHN0YXJ0Tm9kZSwgZXhjZXB0aW9uKTsKKyAgICBzbnByaW50ZihidWZmZXIsIHNpemVv
ZihidWZmZXIpLCAiIHRvICVkIG9mICIsIHJhbmdlLmVuZE9mZnNldCgpKTsKKyAgICBkZWxlZ2F0
ZS0+cHJpbnRNZXNzYWdlKGJ1ZmZlcik7CisgICAgV2ViTm9kZSBlbmROb2RlID0gcmFuZ2UuZW5k
Q29udGFpbmVyKGV4Y2VwdGlvbik7CisgICAgcHJpbnROb2RlRGVzY3JpcHRpb24oZGVsZWdhdGUs
IGVuZE5vZGUsIGV4Y2VwdGlvbik7Cit9CisKK3N0cmluZyBlZGl0aW5nQWN0aW9uRGVzY3JpcHRp
b24oV2ViRWRpdGluZ0FjdGlvbiBhY3Rpb24pCit7CisgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAg
ICBjYXNlIFdlYktpdDo6V2ViRWRpdGluZ0FjdGlvblR5cGVkOgorICAgICAgICByZXR1cm4gIldl
YlZpZXdJbnNlcnRBY3Rpb25UeXBlZCI7CisgICAgY2FzZSBXZWJLaXQ6OldlYkVkaXRpbmdBY3Rp
b25QYXN0ZWQ6CisgICAgICAgIHJldHVybiAiV2ViVmlld0luc2VydEFjdGlvblBhc3RlZCI7Cisg
ICAgY2FzZSBXZWJLaXQ6OldlYkVkaXRpbmdBY3Rpb25Ecm9wcGVkOgorICAgICAgICByZXR1cm4g
IldlYlZpZXdJbnNlcnRBY3Rpb25Ecm9wcGVkIjsKKyAgICB9CisgICAgcmV0dXJuICIoVU5LTk9X
TiBBQ1RJT04pIjsKK30KKworc3RyaW5nIHRleHRBZmZpbml0eURlc2NyaXB0aW9uKFdlYlRleHRB
ZmZpbml0eSBhZmZpbml0eSkKK3sKKyAgICBzd2l0Y2ggKGFmZmluaXR5KSB7CisgICAgY2FzZSBX
ZWJLaXQ6OldlYlRleHRBZmZpbml0eVVwc3RyZWFtOgorICAgICAgICByZXR1cm4gIk5TU2VsZWN0
aW9uQWZmaW5pdHlVcHN0cmVhbSI7CisgICAgY2FzZSBXZWJLaXQ6OldlYlRleHRBZmZpbml0eURv
d25zdHJlYW06CisgICAgICAgIHJldHVybiAiTlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0i
OworICAgIH0KKyAgICByZXR1cm4gIihVTktOT1dOIEFGRklOSVRZKSI7Cit9CisKK30KKwogV2Vi
VGVzdFByb3h5QmFzZTo6V2ViVGVzdFByb3h5QmFzZSgpCiAgICAgOiBtX3Rlc3RJbnRlcmZhY2Vz
KDApCiAgICAgLCBtX2RlbGVnYXRlKDApCkBAIC0xOTcsNyArMjY0LDcgQEAgdm9pZCBXZWJUZXN0
UHJveHlCYXNlOjpwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihjb25zdCBXZWJLaXQ6Oldl
YkFjY2Vzc2liaWwKICAgICBtX3Rlc3RJbnRlcmZhY2VzLT5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cigpLT5ub3RpZmljYXRpb25SZWNlaXZlZChvYmosIG5vdGlmaWNhdGlvbk5hbWUpOwogCiAgICAg
aWYgKG1fdGVzdEludGVyZmFjZXMtPmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCktPnNob3VsZExv
Z0FjY2Vzc2liaWxpdHlFdmVudHMoKSkgewotICAgICAgICBzdGQ6OnN0cmluZyBtZXNzYWdlKCJB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uIC0gIik7CisgICAgICAgIHN0cmluZyBtZXNzYWdlKCJB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uIC0gIik7CiAgICAgICAgIG1lc3NhZ2UgKz0gbm90aWZp
Y2F0aW9uTmFtZTsKIAogICAgICAgICBXZWJLaXQ6OldlYk5vZGUgbm9kZSA9IG9iai5ub2RlKCk7
CkBAIC0yMjAsNCArMjg3LDEwOSBAQCB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OnN0YXJ0RHJhZ2dp
bmcoV2ViRnJhbWUqLCBjb25zdCBXZWJEcmFnRGF0YSYgZGF0YSwgV2ViRHJhZwogICAgIG1fdGVz
dEludGVyZmFjZXMtPmV2ZW50U2VuZGVyKCktPmRvRHJhZ0Ryb3AoZGF0YSwgbWFzayk7CiB9CiAK
Ky8vIFRoZSBvdXRwdXQgZnJvbSB0aGVzZSBtZXRob2RzIGluIGxheW91dCB0ZXN0IG1vZGUgc2hv
dWxkIG1hdGNoIHRoYXQKKy8vIGV4cGVjdGVkIGJ5IHRoZSBsYXlvdXQgdGVzdHMuIFNlZSBFZGl0
aW5nRGVsZWdhdGUubSBpbiBEdW1wUmVuZGVyVHJlZS4KKworLy8gRklYTUU6IFJlbW92ZSB0aGUg
MCBjaGVja3MgZm9yIG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKSBvbmNlIHRoZQorLy8g
VGVzdEludGVyZmFjZXMgY2xhc3Mgb3ducyB0aGUgVGVzdFJ1bm5lci4KKworYm9vbCBXZWJUZXN0
UHJveHlCYXNlOjpzaG91bGRCZWdpbkVkaXRpbmcoY29uc3QgV2ViUmFuZ2UmIHJhbmdlKQorewor
ICAgIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCkgJiYgbV90ZXN0SW50ZXJmYWNl
cy0+dGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7CisgICAgICAg
IG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5F
ZGl0aW5nSW5ET01SYW5nZToiKTsKKyAgICAgICAgcHJpbnRSYW5nZURlc2NyaXB0aW9uKG1fZGVs
ZWdhdGUsIHJhbmdlKTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKCJcbiIpOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJUZXN0UHJveHlCYXNlOjpzaG91
bGRFbmRFZGl0aW5nKGNvbnN0IFdlYlJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAobV90ZXN0SW50
ZXJmYWNlcy0+dGVzdFJ1bm5lcigpICYmIG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+
c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgeworICAgICAgICBtX2RlbGVnYXRlLT5wcmlu
dE1lc3NhZ2UoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEVuZEVkaXRpbmdJbkRPTVJhbmdlOiIp
OworICAgICAgICBwcmludFJhbmdlRGVzY3JpcHRpb24obV9kZWxlZ2F0ZSwgcmFuZ2UpOworICAg
ICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIlxuIik7CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCitib29sIFdlYlRlc3RQcm94eUJhc2U6OnNob3VsZEluc2VydE5vZGUoY29uc3Qg
V2ViTm9kZSYgbm9kZSwgY29uc3QgV2ViUmFuZ2UmIHJhbmdlLCBXZWJFZGl0aW5nQWN0aW9uIGFj
dGlvbikKK3sKKyAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpICYmIG1fdGVz
dEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkg
eworICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIkVESVRJTkcgREVMRUdBVEU6IHNo
b3VsZEluc2VydE5vZGU6Iik7CisgICAgICAgIHByaW50Tm9kZURlc2NyaXB0aW9uKG1fZGVsZWdh
dGUsIG5vZGUsIDApOworICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIiByZXBsYWNp
bmdET01SYW5nZToiKTsKKyAgICAgICAgcHJpbnRSYW5nZURlc2NyaXB0aW9uKG1fZGVsZWdhdGUs
IHJhbmdlKTsKKyAgICAgICAgcHJpbnRmKCIgZ2l2ZW5BY3Rpb246JXNcbiIsIGVkaXRpbmdBY3Rp
b25EZXNjcmlwdGlvbihhY3Rpb24pLmNfc3RyKCkpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBXZWJUZXN0UHJveHlCYXNlOjpzaG91bGRJbnNlcnRUZXh0KGNvbnN0IFdlYlN0
cmluZyYgdGV4dCwgY29uc3QgV2ViUmFuZ2UmIHJhbmdlLCBXZWJFZGl0aW5nQWN0aW9uIGFjdGlv
bikKK3sKKyAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpICYmIG1fdGVzdElu
dGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgewor
ICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2Uoc3RyaW5nKCJFRElUSU5HIERFTEVHQVRF
OiBzaG91bGRJbnNlcnRUZXh0OiIpICsgdGV4dC51dGY4KCkuZGF0YSgpICsgIiByZXBsYWNpbmdE
T01SYW5nZToiKTsKKyAgICAgICAgcHJpbnRSYW5nZURlc2NyaXB0aW9uKG1fZGVsZWdhdGUsIHJh
bmdlKTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKHN0cmluZygiIGdpdmVuQWN0
aW9uOiIpICsgZWRpdGluZ0FjdGlvbkRlc2NyaXB0aW9uKGFjdGlvbikgKyAiXG4iKTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViVGVzdFByb3h5QmFzZTo6c2hvdWxkQ2hh
bmdlU2VsZWN0ZWRSYW5nZSgKKyAgICBjb25zdCBXZWJSYW5nZSYgZnJvbVJhbmdlLCBjb25zdCBX
ZWJSYW5nZSYgdG9SYW5nZSwgV2ViVGV4dEFmZmluaXR5IGFmZmluaXR5LCBib29sIHN0aWxsU2Vs
ZWN0aW5nKQoreworICAgIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCkgJiYgbV90
ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygp
KSB7CisgICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiRURJVElORyBERUxFR0FURTog
c2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToiKTsKKyAgICAgICAgcHJpbnRSYW5nZURlc2Ny
aXB0aW9uKG1fZGVsZWdhdGUsIGZyb21SYW5nZSk7CisgICAgICAgIG1fZGVsZWdhdGUtPnByaW50
TWVzc2FnZSgiIHRvRE9NUmFuZ2U6Iik7CisgICAgICAgIHByaW50UmFuZ2VEZXNjcmlwdGlvbiht
X2RlbGVnYXRlLCB0b1JhbmdlKTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKHN0
cmluZygiIGFmZmluaXR5OiIpICsgdGV4dEFmZmluaXR5RGVzY3JpcHRpb24oYWZmaW5pdHkpICsg
IiBzdGlsbFNlbGVjdGluZzoiICsgKHN0aWxsU2VsZWN0aW5nID8gIlRSVUUiIDogIkZBTFNFIikg
KyAiXG4iKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViVGVzdFByb3h5
QmFzZTo6c2hvdWxkRGVsZXRlUmFuZ2UoY29uc3QgV2ViUmFuZ2UmIHJhbmdlKQoreworICAgIGlm
IChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCkgJiYgbV90ZXN0SW50ZXJmYWNlcy0+dGVz
dFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7CisgICAgICAgIG1fZGVs
ZWdhdGUtPnByaW50TWVzc2FnZSgiRURJVElORyBERUxFR0FURTogc2hvdWxkRGVsZXRlRE9NUmFu
Z2U6Iik7CisgICAgICAgIHByaW50UmFuZ2VEZXNjcmlwdGlvbihtX2RlbGVnYXRlLCByYW5nZSk7
CisgICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiXG4iKTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViVGVzdFByb3h5QmFzZTo6c2hvdWxkQXBwbHlTdHlsZShj
b25zdCBXZWJTdHJpbmcmIHN0eWxlLCBjb25zdCBXZWJSYW5nZSYgcmFuZ2UpCit7CisgICAgaWYg
KG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKSAmJiBtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0
UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgbV9kZWxl
Z2F0ZS0+cHJpbnRNZXNzYWdlKHN0cmluZygiRURJVElORyBERUxFR0FURTogc2hvdWxkQXBwbHlT
dHlsZToiKSArIHN0eWxlLnV0ZjgoKS5kYXRhKCkgKyAiIHRvRWxlbWVudHNJbkRPTVJhbmdlOiIp
OworICAgICAgICBwcmludFJhbmdlRGVzY3JpcHRpb24obV9kZWxlZ2F0ZSwgcmFuZ2UpOworICAg
ICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIlxuIik7CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCit2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpZEJlZ2luRWRpdGluZygpCit7Cisg
ICAgaWYgKG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKSAmJiBtX3Rlc3RJbnRlcmZhY2Vz
LT50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCisgICAgICAgIG1f
ZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2lu
RWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uXG4iKTsKK30KKwordm9p
ZCBXZWJUZXN0UHJveHlCYXNlOjpkaWRDaGFuZ2VTZWxlY3Rpb24oYm9vbCBpc0VtcHR5U2VsZWN0
aW9uKQoreworICAgIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCkgJiYgbV90ZXN0
SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQor
ICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlv
blxuIik7Cit9CisKK3ZvaWQgV2ViVGVzdFByb3h5QmFzZTo6ZGlkQ2hhbmdlQ29udGVudHMoKQor
eworICAgIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCkgJiYgbV90ZXN0SW50ZXJm
YWNlcy0+dGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQorICAgICAg
ICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvblxuIik7Cit9CisKK3ZvaWQgV2ViVGVz
dFByb3h5QmFzZTo6ZGlkRW5kRWRpdGluZygpCit7CisgICAgaWYgKG1fdGVzdEludGVyZmFjZXMt
PnRlc3RSdW5uZXIoKSAmJiBtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCktPnNob3VsZER1
bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCisgICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZSgi
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEVuZEVkaXRpbmc6V2ViVmlld0RpZEVuZEVkaXRp
bmdOb3RpZmljYXRpb25cbiIpOworfQorCiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFNoZWxsLmNwcAppbmRleCAyN2Y1YmIwNmExODAyNzllYjg2N2M0MmU2Mzk3YmQ2MDJh
YWRkZTFlLi42OWQ4MWEzMGU3ZWYyOTJkMWE5NjNiOTcxZmQyN2ExNGZiMGU4OTc0IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTE2Myw2ICsxNjMs
NyBAQCB2b2lkIFRlc3RTaGVsbDo6aW5pdGlhbGl6ZSgpCiAgICAgbV93ZWJQZXJtaXNzaW9ucyA9
IGFkb3B0UHRyKG5ldyBXZWJQZXJtaXNzaW9ucyh0aGlzKSk7CiAgICAgbV90ZXN0SW50ZXJmYWNl
cyA9IGFkb3B0UHRyKG5ldyBXZWJUZXN0SW50ZXJmYWNlcygpKTsKICAgICBtX3Rlc3RSdW5uZXIg
PSBhZG9wdFB0cihuZXcgRFJUVGVzdFJ1bm5lcih0aGlzKSk7CisgICAgbV90ZXN0SW50ZXJmYWNl
cy0+c2V0VGVzdFJ1bm5lcihtX3Rlc3RSdW5uZXIuZ2V0KCkpOwogI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgbV9ub3RpZmljYXRp
b25QcmVzZW50ZXIgPSBhZG9wdFB0cihuZXcgTm90aWZpY2F0aW9uUHJlc2VudGVyKHRoaXMpKTsK
ICNlbmRpZgpAQCAtNzUxLDcgKzc1Miw3IEBAIFdlYlZpZXdIb3N0KiBUZXN0U2hlbGw6OmNyZWF0
ZU5ld1dpbmRvdyhjb25zdCBXZWJLaXQ6OldlYlVSTCYgdXJsKQogCiBXZWJWaWV3SG9zdCogVGVz
dFNoZWxsOjpjcmVhdGVOZXdXaW5kb3coY29uc3QgV2ViS2l0OjpXZWJVUkwmIHVybCwgRFJURGV2
VG9vbHNBZ2VudCogZGV2VG9vbHNBZ2VudCkKIHsKLSAgICBXZWJUZXN0UnVubmVyOjpXZWJUZXN0
UHJveHk8V2ViVmlld0hvc3QsIFRlc3RTaGVsbCo+KiBob3N0ID0gbmV3IFdlYlRlc3RSdW5uZXI6
OldlYlRlc3RQcm94eTxXZWJWaWV3SG9zdCwgVGVzdFNoZWxsKj4odGhpcyk7CisgICAgV2ViVGVz
dFByb3h5PFdlYlZpZXdIb3N0LCBUZXN0U2hlbGwqPiogaG9zdCA9IG5ldyBXZWJUZXN0UHJveHk8
V2ViVmlld0hvc3QsIFRlc3RTaGVsbCo+KHRoaXMpOwogICAgIGhvc3QtPnNldEludGVyZmFjZXMo
bV90ZXN0SW50ZXJmYWNlcy5nZXQoKSk7CiAgICAgaWYgKG1fd2ViVmlld0hvc3QpCiAgICAgICAg
IGhvc3QtPnNldERlbGVnYXRlKG1fd2ViVmlld0hvc3QuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IDhmZThhM2VmYTViN2Y4OGRm
NGI3MWQyMjg2MWRmYmNlZDk4MDQ4YjUuLmM3MmMzOGY2ZTdkZWUzMGE1MmE5MzQ1ZjllOGI1NWUz
YmFkZjgwNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5jcHAKQEAgLTIwMyw0NSArMjAzLDYgQEAgc3RhdGljIHZvaWQgcHJpbnROb2RlRGVzY3JpcHRp
b24oY29uc3QgV2ViTm9kZSYgbm9kZSwgaW50IGV4Y2VwdGlvbikKICAgICB9CiB9CiAKLXN0YXRp
YyB2b2lkIHByaW50UmFuZ2VEZXNjcmlwdGlvbihjb25zdCBXZWJSYW5nZSYgcmFuZ2UpCi17Ci0g
ICAgaWYgKHJhbmdlLmlzTnVsbCgpKSB7Ci0gICAgICAgIGZwdXRzKCIobnVsbCkiLCBzdGRvdXQp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHByaW50ZigicmFuZ2UgZnJvbSAlZCBvZiAi
LCByYW5nZS5zdGFydE9mZnNldCgpKTsKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBXZWJO
b2RlIHN0YXJ0Tm9kZSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyKGV4Y2VwdGlvbik7Ci0gICAgcHJp
bnROb2RlRGVzY3JpcHRpb24oc3RhcnROb2RlLCBleGNlcHRpb24pOwotICAgIHByaW50ZigiIHRv
ICVkIG9mICIsIHJhbmdlLmVuZE9mZnNldCgpKTsKLSAgICBXZWJOb2RlIGVuZE5vZGUgPSByYW5n
ZS5lbmRDb250YWluZXIoZXhjZXB0aW9uKTsKLSAgICBwcmludE5vZGVEZXNjcmlwdGlvbihlbmRO
b2RlLCBleGNlcHRpb24pOwotfQotCi1zdGF0aWMgc3RyaW5nIGVkaXRpbmdBY3Rpb25EZXNjcmlw
dGlvbihXZWJFZGl0aW5nQWN0aW9uIGFjdGlvbikKLXsKLSAgICBzd2l0Y2ggKGFjdGlvbikgewot
ICAgIGNhc2UgV2ViS2l0OjpXZWJFZGl0aW5nQWN0aW9uVHlwZWQ6Ci0gICAgICAgIHJldHVybiAi
V2ViVmlld0luc2VydEFjdGlvblR5cGVkIjsKLSAgICBjYXNlIFdlYktpdDo6V2ViRWRpdGluZ0Fj
dGlvblBhc3RlZDoKLSAgICAgICAgcmV0dXJuICJXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkIjsK
LSAgICBjYXNlIFdlYktpdDo6V2ViRWRpdGluZ0FjdGlvbkRyb3BwZWQ6Ci0gICAgICAgIHJldHVy
biAiV2ViVmlld0luc2VydEFjdGlvbkRyb3BwZWQiOwotICAgIH0KLSAgICByZXR1cm4gIihVTktO
T1dOIEFDVElPTikiOwotfQotCi1zdGF0aWMgc3RyaW5nIHRleHRBZmZpbml0eURlc2NyaXB0aW9u
KFdlYlRleHRBZmZpbml0eSBhZmZpbml0eSkKLXsKLSAgICBzd2l0Y2ggKGFmZmluaXR5KSB7Ci0g
ICAgY2FzZSBXZWJLaXQ6OldlYlRleHRBZmZpbml0eVVwc3RyZWFtOgotICAgICAgICByZXR1cm4g
Ik5TU2VsZWN0aW9uQWZmaW5pdHlVcHN0cmVhbSI7Ci0gICAgY2FzZSBXZWJLaXQ6OldlYlRleHRB
ZmZpbml0eURvd25zdHJlYW06Ci0gICAgICAgIHJldHVybiAiTlNTZWxlY3Rpb25BZmZpbml0eURv
d25zdHJlYW0iOwotICAgIH0KLSAgICByZXR1cm4gIihVTktOT1dOIEFGRklOSVRZKSI7Ci19Ci0K
IC8vIFdlYlZpZXdDbGllbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXZWJWaWV3KiBXZWJWaWV3SG9zdDo6Y3JlYXRlVmll
dyhXZWJGcmFtZSogY3JlYXRvciwgY29uc3QgV2ViVVJMUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2ViV2luZG93RmVhdHVyZXMmLCBjb25zdCBXZWJTdHJpbmcmLCBXZWJOYXZpZ2F0aW9uUG9saWN5
KQpAQCAtMzI1LDgzICsyODYsMzkgQEAgdm9pZCBXZWJWaWV3SG9zdDo6ZGlkU3RvcExvYWRpbmco
KQogICAgIG1fc2hlbGwtPnNldElzTG9hZGluZyhmYWxzZSk7CiB9CiAKLS8vIFRoZSBvdXRwdXQg
ZnJvbSB0aGVzZSBtZXRob2RzIGluIGxheW91dCB0ZXN0IG1vZGUgc2hvdWxkIG1hdGNoIHRoYXQK
LS8vIGV4cGVjdGVkIGJ5IHRoZSBsYXlvdXQgdGVzdHMuIFNlZSBFZGl0aW5nRGVsZWdhdGUubSBp
biBEdW1wUmVuZGVyVHJlZS4KLQogYm9vbCBXZWJWaWV3SG9zdDo6c2hvdWxkQmVnaW5FZGl0aW5n
KGNvbnN0IFdlYlJhbmdlJiByYW5nZSkKIHsKLSAgICBpZiAodGVzdFJ1bm5lcigpLT5zaG91bGRE
dW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAgIGZwdXRzKCJFRElUSU5HIERFTEVHQVRF
OiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOiIsIHN0ZG91dCk7Ci0gICAgICAgIHByaW50
UmFuZ2VEZXNjcmlwdGlvbihyYW5nZSk7Ci0gICAgICAgIGZwdXRzKCJcbiIsIHN0ZG91dCk7Ci0g
ICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFdlYlZpZXdIb3N0OjpzaG91bGRFbmRF
ZGl0aW5nKGNvbnN0IFdlYlJhbmdlJiByYW5nZSkKIHsKLSAgICBpZiAodGVzdFJ1bm5lcigpLT5z
aG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAgIGZwdXRzKCJFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRFbmRFZGl0aW5nSW5ET01SYW5nZToiLCBzdGRvdXQpOwotICAgICAgICBw
cmludFJhbmdlRGVzY3JpcHRpb24ocmFuZ2UpOwotICAgICAgICBmcHV0cygiXG4iLCBzdGRvdXQp
OwotICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBXZWJWaWV3SG9zdDo6c2hvdWxk
SW5zZXJ0Tm9kZShjb25zdCBXZWJOb2RlJiBub2RlLCBjb25zdCBXZWJSYW5nZSYgcmFuZ2UsIFdl
YkVkaXRpbmdBY3Rpb24gYWN0aW9uKQogewotICAgIGlmICh0ZXN0UnVubmVyKCktPnNob3VsZER1
bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgZnB1dHMoIkVESVRJTkcgREVMRUdBVEU6
IHNob3VsZEluc2VydE5vZGU6Iiwgc3Rkb3V0KTsKLSAgICAgICAgcHJpbnROb2RlRGVzY3JpcHRp
b24obm9kZSwgMCk7Ci0gICAgICAgIGZwdXRzKCIgcmVwbGFjaW5nRE9NUmFuZ2U6Iiwgc3Rkb3V0
KTsKLSAgICAgICAgcHJpbnRSYW5nZURlc2NyaXB0aW9uKHJhbmdlKTsKLSAgICAgICAgcHJpbnRm
KCIgZ2l2ZW5BY3Rpb246JXNcbiIsIGVkaXRpbmdBY3Rpb25EZXNjcmlwdGlvbihhY3Rpb24pLmNf
c3RyKCkpOwotICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBXZWJWaWV3SG9zdDo6
c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBXZWJTdHJpbmcmIHRleHQsIGNvbnN0IFdlYlJhbmdlJiBy
YW5nZSwgV2ViRWRpdGluZ0FjdGlvbiBhY3Rpb24pCiB7Ci0gICAgaWYgKHRlc3RSdW5uZXIoKS0+
c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgewotICAgICAgICBwcmludGYoIkVESVRJTkcg
REVMRUdBVEU6IHNob3VsZEluc2VydFRleHQ6JXMgcmVwbGFjaW5nRE9NUmFuZ2U6IiwgdGV4dC51
dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcHJpbnRSYW5nZURlc2NyaXB0aW9uKHJhbmdlKTsKLSAg
ICAgICAgcHJpbnRmKCIgZ2l2ZW5BY3Rpb246JXNcbiIsIGVkaXRpbmdBY3Rpb25EZXNjcmlwdGlv
bihhY3Rpb24pLmNfc3RyKCkpOwotICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBX
ZWJWaWV3SG9zdDo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSgKICAgICBjb25zdCBXZWJSYW5n
ZSYgZnJvbVJhbmdlLCBjb25zdCBXZWJSYW5nZSYgdG9SYW5nZSwgV2ViVGV4dEFmZmluaXR5IGFm
ZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKQogewotICAgIGlmICh0ZXN0UnVubmVyKCktPnNo
b3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgZnB1dHMoIkVESVRJTkcgREVM
RUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6Iiwgc3Rkb3V0KTsKLSAgICAgICAg
cHJpbnRSYW5nZURlc2NyaXB0aW9uKGZyb21SYW5nZSk7Ci0gICAgICAgIGZwdXRzKCIgdG9ET01S
YW5nZToiLCBzdGRvdXQpOwotICAgICAgICBwcmludFJhbmdlRGVzY3JpcHRpb24odG9SYW5nZSk7
Ci0gICAgICAgIHByaW50ZigiIGFmZmluaXR5OiVzIHN0aWxsU2VsZWN0aW5nOiVzXG4iLAotICAg
ICAgICAgICAgICAgdGV4dEFmZmluaXR5RGVzY3JpcHRpb24oYWZmaW5pdHkpLmNfc3RyKCksCi0g
ICAgICAgICAgICAgICAoc3RpbGxTZWxlY3RpbmcgPyAiVFJVRSIgOiAiRkFMU0UiKSk7Ci0gICAg
fQogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFdlYlZpZXdIb3N0OjpzaG91bGREZWxldGVS
YW5nZShjb25zdCBXZWJSYW5nZSYgcmFuZ2UpCiB7Ci0gICAgaWYgKHRlc3RSdW5uZXIoKS0+c2hv
dWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgewotICAgICAgICBmcHV0cygiRURJVElORyBERUxF
R0FURTogc2hvdWxkRGVsZXRlRE9NUmFuZ2U6Iiwgc3Rkb3V0KTsKLSAgICAgICAgcHJpbnRSYW5n
ZURlc2NyaXB0aW9uKHJhbmdlKTsKLSAgICAgICAgZnB1dHMoIlxuIiwgc3Rkb3V0KTsKLSAgICB9
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgV2ViVmlld0hvc3Q6OnNob3VsZEFwcGx5U3R5
bGUoY29uc3QgV2ViU3RyaW5nJiBzdHlsZSwgY29uc3QgV2ViUmFuZ2UmIHJhbmdlKQogewotICAg
IGlmICh0ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAg
ICAgcHJpbnRmKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRBcHBseVN0eWxlOiVzIHRvRWxlbWVu
dHNJbkRPTVJhbmdlOiIsIHN0eWxlLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBwcmludFJhbmdl
RGVzY3JpcHRpb24ocmFuZ2UpOwotICAgICAgICBmcHV0cygiXG4iLCBzdGRvdXQpOwotICAgIH0K
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDE1LDM0ICszMzIsNiBAQCBib29sIFdlYlZpZXdI
b3N0Ojppc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKQogICAgIHJldHVybiBtX3Nl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ7CiB9CiAKLXZvaWQgV2ViVmlld0hvc3Q6OmRp
ZEJlZ2luRWRpdGluZygpCi17Ci0gICAgaWYgKCF0ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0
aW5nQ2FsbGJhY2tzKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBmcHV0cygiRURJVElORyBERUxF
R0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZp
Y2F0aW9uXG4iLCBzdGRvdXQpOwotfQotCi12b2lkIFdlYlZpZXdIb3N0OjpkaWRDaGFuZ2VTZWxl
Y3Rpb24oYm9vbCBpc0VtcHR5U2VsZWN0aW9uKQotewotICAgIGlmICh0ZXN0UnVubmVyKCktPnNo
b3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCi0gICAgICAgIGZwdXRzKCJFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb25cbiIsIHN0ZG91dCk7Ci0gICAgLy8gTm8gbmVlZCB0byB1cGRhdGUgY2xpcGJv
YXJkIHdpdGggdGhlIHNlbGVjdGVkIHRleHQgaW4gRFJULgotfQotCi12b2lkIFdlYlZpZXdIb3N0
OjpkaWRDaGFuZ2VDb250ZW50cygpCi17Ci0gICAgaWYgKCF0ZXN0UnVubmVyKCktPnNob3VsZER1
bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBmcHV0cygiRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9u
XG4iLCBzdGRvdXQpOwotfQotCi12b2lkIFdlYlZpZXdIb3N0OjpkaWRFbmRFZGl0aW5nKCkKLXsK
LSAgICBpZiAoIXRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIGZwdXRzKCJFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkRW5k
RWRpdGluZzpXZWJWaWV3RGlkRW5kRWRpdGluZ05vdGlmaWNhdGlvblxuIiwgc3Rkb3V0KTsKLX0K
LQogYm9vbCBXZWJWaWV3SG9zdDo6aGFuZGxlQ3VycmVudEtleWJvYXJkRXZlbnQoKQogewogICAg
IGlmIChtX2VkaXRDb21tYW5kTmFtZS5lbXB0eSgpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggODAwZDBhZmYxMTIwNTE0ZWUwMjc5YjM1OGRlYWFj
MWUxZTQyYmE4MC4uMGE1OWZhNGVlMjcxZjE1OWQ1MmM2ZTE4NTA1MzFmN2E2YmZjNTRkNiAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCkBAIC0xNzgsMTAg
KzE3OCw2IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViVmlld0NsaWVu
dCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVDbGllbnQsCiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZEFwcGx5U3R5bGUoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHN0eWxlLCBjb25zdCBXZWJLaXQ6
OldlYlJhbmdlJik7CiAgICAgdmlydHVhbCBib29sIGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVk
KCk7CiAgICAgdmlydHVhbCBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgp
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlU2VsZWN0aW9uKGJvb2wgaXNTZWxlY3Rpb25FbXB0eSk7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZENoYW5nZUNvbnRlbnRzKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmco
KTsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlQ3VycmVudEtleWJvYXJkRXZlbnQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgcnVuTW9kYWxBbGVydERpYWxvZyhXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3Qg
V2ViS2l0OjpXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgcnVuTW9kYWxDb25maXJtRGlh
bG9nKFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179522</attachid>
            <date>2012-12-14 13:15:38 -0800</date>
            <delta_ts>2012-12-17 23:59:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105013-20121214221257.patch</filename>
            <type>text/plain</type>
            <size>41954</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NzM5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzIzNDljZDI3ZWMxMzEzMjlkOTY0MmQ3ZGQwYWFiNWU0
YTg3YjFkYy4uOGFkNjMwMDA0MGNkMDQwMGNhNzY5NWNhOTRlNTc3YmYwYzQ4MjM0OSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDky
IEBACisyMDEyLTEyLTE0ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBlZGl0aW5nIGNhbGxiYWNrIGR1bXBpbmcgdG8gdGhl
IFdlYlRlc3RQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA1MDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVG8gZGVjaWRlIHdoZXRoZXIgb3Igbm90IHRvIGR1bXAgdGhlIGVkaXRpbmcgY2FsbGJh
Y2tzLCB0aGUgV2ViVGVzdFByb3h5CisgICAgICAgIG5lZWRzIHRvIHF1ZXJ5IHRoZSBUZXN0UnVu
bmVyLiBGb3IgdGhpcyBwdXJwb3NlLCBJIGludHJvZHVjZSBhCisgICAgICAgIFdlYlRlc3RSdW5u
ZXIgY2xhc3MgdGhhdCBqdXN0IGV4cG9zZXMgdGhlIHNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tz
CisgICAgICAgIG1ldGhvZC4gSW4gY29udHJhc3QgdG8gZS5nLiBXZWJFdmVudFNlbmRlciwgdGhl
IFdlYlRlc3RSdW5uZXIgaXMganVzdAorICAgICAgICBhbiBpbnRlcmZhY2UsIGFuZCBpdCBpcyBu
b3Qgb3duZWQgYnkgdGhlIFdlYlRlc3RJbnRlcmZhY2VzLCBidXQgdGhlCisgICAgICAgIGVtYmVk
ZGVyIG9mIHRoZSBUZXN0UnVubmVyIGxpYnJhcnkgbXVzdCBwcm92aWRlIGl0LiBUaGlzIHdpbGwg
Y2hhbmdlCisgICAgICAgIG9uY2UgYWxsIFRlc3RSdW5uZXIgbWV0aG9kcyBhcmUgaW4gdGhlIGxp
YnJhcnkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwOgorICAg
ICAgICAoRFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5lcik6CisgICAgICAgIChEUlRUZXN0UnVu
bmVyOjpyZXNldCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1
bm5lci5oOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcik6CisgICAgICAgIChEUlRUZXN0UnVubmVy
Ojp0YXNrTGlzdCk6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpXb3JrUXVldWU6OnRhc2tMaXN0
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9X
ZWJUZXN0SW50ZXJmYWNlcy5oOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChX
ZWJUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UHJveHlCYXNlKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eTo6c2hvdWxkQmVnaW5FZGl0aW5nKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eTo6c2hvdWxkRW5kRWRpdGluZyk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OnNob3VsZEluc2VydE5vZGUpOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5OjpzaG91bGRJbnNlcnRUZXh0KToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eTo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRS
YW5nZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OnNob3VsZERlbGV0
ZVJhbmdlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eTo6c2hvdWxkQXBw
bHlTdHlsZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OmRpZEJlZ2lu
RWRpdGluZyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OmRpZENoYW5n
ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OmRpZENo
YW5nZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eTo6ZGlk
RW5kRWRpdGluZyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9wdWJsaWMvV2ViVGVzdFJ1bm5lci5oOiBDb3BpZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oLgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UnVubmVy
OjpzaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpUZXN0UnVubmVyOjpUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OlRlc3RSdW5uZXI6On5UZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6cmVzZXQpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6ZHVtcEVkaXRpbmdDYWxsYmFja3MpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIu
aDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcDoKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6dGVzdFJ1bm5lcik6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6OnNldFRlc3RS
dW5uZXIpOgorICAgICAgICAoV2ViVGVzdEludGVyZmFjZXM6OkludGVybmFsKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6SW50ZXJuYWwpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFjZXM6OnRlc3RSdW5uZXIpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0
SW50ZXJmYWNlczo6c2V0VGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnBvc3RBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVz
dFByb3h5QmFzZTo6c2hvdWxkQmVnaW5FZGl0aW5nKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OldlYlRlc3RQcm94eUJhc2U6OnNob3VsZEVuZEVkaXRpbmcpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6c2hvdWxkSW5zZXJ0Tm9kZSk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjpzaG91bGRJbnNlcnRUZXh0KToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFu
Z2UpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6c2hvdWxkRGVs
ZXRlUmFuZ2UpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6c2hv
dWxkQXBwbHlTdHlsZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNl
OjpkaWRCZWdpbkVkaXRpbmcpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5
QmFzZTo6ZGlkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRl
c3RQcm94eUJhc2U6OmRpZENoYW5nZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OldlYlRlc3RQcm94eUJhc2U6OmRpZEVuZEVkaXRpbmcpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHA6CisgICAgICAgIChUZXN0U2hlbGw6OmluaXRpYWxp
emUpOgorICAgICAgICAoVGVzdFNoZWxsOjpjcmVhdGVOZXdXaW5kb3cpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdI
b3N0OjpzaG91bGRCZWdpbkVkaXRpbmcpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnNob3VsZEVu
ZEVkaXRpbmcpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnNob3VsZEluc2VydE5vZGUpOgorICAg
ICAgICAoV2ViVmlld0hvc3Q6OnNob3VsZEluc2VydFRleHQpOgorICAgICAgICAoV2ViVmlld0hv
c3Q6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnNo
b3VsZERlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpzaG91bGRBcHBseVN0eWxl
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorICAg
ICAgICAoV2ViVmlld0hvc3QpOgorCiAyMDEyLTEyLTEzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBBZGQgLS1wcm9maWxlcj1QUk9GSUxFUiBvcHRpb24gdG8gcnVu
LXBlcmYtdGVzdHMgdG8gYWxsb3cgc3BlY2lmeWluZyB3aGljaCBwcm9maWxlciB0byB1c2Ugb24g
cGxhdGZvcm1zIHdpdGggbWFueQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5
cGkKaW5kZXggM2JlM2YyY2M3MjEwMDlhYTdhY2JmY2VkODc2OTg3NWUzMDI0MDQ1Zi4uNjgxYzIy
ZTQ5ZWVkNWIzM2RiNDhkY2ViNGU2MDgxMTFhYjliOGY4MiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBAIC02OCw2ICs2OCw3IEBACiAgICAgICAgICAgICAnY2hy
b21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFBsdWdpbi5oJywKICAgICAgICAg
ICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UHJveHkuaCcsCisgICAgICAg
ICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFJ1bm5lci5oJywKICAgICAg
ICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckNo
cm9taXVtLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uY3BwJywKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggZGY5NmNk
ODE3MDY0ZTNjZGNiYzI0OTc4NjkyZjQ2ZmU3YzQ2ZWMzYy4uMDQ5YTQzZmUzZDVkMDE2NjE1ZjQ3
Y2NiZmNjY2M0YTYwMDJmNjYzMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRFJUVGVzdFJ1bm5lci5jcHAKQEAgLTEzNCw3ICsxMzQsNiBAQCBEUlRUZXN0UnVubmVyOjpE
UlRUZXN0UnVubmVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhvZCgiZHVtcEJhY2tG
b3J3YXJkTGlzdCIsICZEUlRUZXN0UnVubmVyOjpkdW1wQmFja0ZvcndhcmRMaXN0KTsKICAgICBi
aW5kTWV0aG9kKCJkdW1wQ2hpbGRGcmFtZXNBc1RleHQiLCAmRFJUVGVzdFJ1bm5lcjo6ZHVtcENo
aWxkRnJhbWVzQXNUZXh0KTsKICAgICBiaW5kTWV0aG9kKCJkdW1wQ2hpbGRGcmFtZVNjcm9sbFBv
c2l0aW9ucyIsICZEUlRUZXN0UnVubmVyOjpkdW1wQ2hpbGRGcmFtZVNjcm9sbFBvc2l0aW9ucyk7
Ci0gICAgYmluZE1ldGhvZCgiZHVtcEVkaXRpbmdDYWxsYmFja3MiLCAmRFJUVGVzdFJ1bm5lcjo6
ZHVtcEVkaXRpbmdDYWxsYmFja3MpOwogICAgIGJpbmRNZXRob2QoImR1bXBGcmFtZUxvYWRDYWxs
YmFja3MiLCAmRFJUVGVzdFJ1bm5lcjo6ZHVtcEZyYW1lTG9hZENhbGxiYWNrcyk7CiAgICAgYmlu
ZE1ldGhvZCgiZHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFjayIsICZEUlRUZXN0UnVubmVyOjpk
dW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrKTsKICAgICBiaW5kTWV0aG9kKCJkdW1wVXNlckdl
c3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyIsICZEUlRUZXN0UnVubmVyOjpkdW1wVXNlckdlc3R1
cmVJbkZyYW1lTG9hZENhbGxiYWNrcyk7CkBAIC0yNzcsMTIgKzI3Niw2IEBAIHZvaWQgRFJUVGVz
dFJ1bm5lcjo6ZHVtcEFzVGV4dChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3Bw
VmFyaWFudCogcmVzCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLXZvaWQgRFJUVGVzdFJ1
bm5lcjo6ZHVtcEVkaXRpbmdDYWxsYmFja3MoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCogcmVzdWx0KQotewotICAgIG1fZHVtcEVkaXRpbmdDYWxsYmFja3MgPSB0cnVlOwotICAg
IHJlc3VsdC0+c2V0TnVsbCgpOwotfQotCiB2b2lkIERSVFRlc3RSdW5uZXI6OmR1bXBCYWNrRm9y
d2FyZExpc3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewog
ICAgIG1fZHVtcEJhY2tGb3J3YXJkTGlzdCA9IHRydWU7CkBAIC01NDgsNyArNTQxLDYgQEAgdm9p
ZCBEUlRUZXN0UnVubmVyOjpyZXNldCgpCiAgICAgbV9kdW1wQXNUZXh0ID0gZmFsc2U7CiAgICAg
bV9kdW1wQXNBdWRpbyA9IGZhbHNlOwogICAgIG1fZHVtcENyZWF0ZVZpZXcgPSBmYWxzZTsKLSAg
ICBtX2R1bXBFZGl0aW5nQ2FsbGJhY2tzID0gZmFsc2U7CiAgICAgbV9kdW1wRnJhbWVMb2FkQ2Fs
bGJhY2tzID0gZmFsc2U7CiAgICAgbV9kdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrID0gZmFs
c2U7CiAgICAgbV9kdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyA9IGZhbHNlOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oCmluZGV4IGMx
NjZjN2RhM2Q5MjQyNTdiMTA1YjdiM2M1YzQxYzg5NzI1NGFjOTQuLmMxMzdkZmE2OTkzNTkzNzAw
ZGQ2NjhhZTVmYTVmNmQ4ZGFiZWZlNTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9EUlRUZXN0UnVubmVyLmgKQEAgLTY1LDYgKzY1LDggQEAgY2xhc3MgVGVzdFNoZWxsOwog
CiB1c2luZyBXZWJUZXN0UnVubmVyOjpDcHBBcmd1bWVudExpc3Q7CiB1c2luZyBXZWJUZXN0UnVu
bmVyOjpDcHBWYXJpYW50OwordXNpbmcgV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazsKK3Vz
aW5nIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0OwogCiBjbGFzcyBEUlRUZXN0UnVubmVyIDog
cHVibGljIFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXIgewogcHVibGljOgpAQCAtNzIsNyArNzQs
NyBAQCBwdWJsaWM6CiAgICAgLy8gb2JqZWN0LgogICAgIERSVFRlc3RSdW5uZXIoVGVzdFNoZWxs
Kik7CiAKLSAgICB+RFJUVGVzdFJ1bm5lcigpOworICAgIHZpcnR1YWwgfkRSVFRlc3RSdW5uZXIo
KTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gc2V0cyBhIGZsYWcgdGhhdCB0ZWxscyB0aGUgdGVz
dF9zaGVsbCB0byBkdW1wIHBhZ2VzIGFzCiAgICAgLy8gcGxhaW4gdGV4dCwgcmF0aGVyIHRoYW4g
YXMgYSB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZW5kZXJlcidzIHN0YXRlLgpAQCAtODAs
MTEgKzgyLDYgQEAgcHVibGljOgogICAgIHZvaWQgZHVtcEFzVGV4dChjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHNldHMgYSBmbGFn
IHRoYXQgdGVsbHMgdGhlIHRlc3Rfc2hlbGwgdG8gcHJpbnQgYSBsaW5lIG9mCi0gICAgLy8gZGVz
Y3JpcHRpdmUgdGV4dCBmb3IgZWFjaCBlZGl0aW5nIGNvbW1hbmQuIEl0IHRha2VzIG5vIGFyZ3Vt
ZW50cywgYW5kCi0gICAgLy8gaWdub3JlcyBhbnkgdGhhdCBtYXkgYmUgcHJlc2VudC4KLSAgICB2
b2lkIGR1bXBFZGl0aW5nQ2FsbGJhY2tzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlh
bnQqKTsKLQotICAgIC8vIFRoaXMgZnVuY3Rpb24gc2V0cyBhIGZsYWcgdGhhdCB0ZWxscyB0aGUg
dGVzdF9zaGVsbCB0byBwcmludCBhIGxpbmUgb2YKICAgICAvLyBkZXNjcmlwdGl2ZSB0ZXh0IGZv
ciBlYWNoIGZyYW1lIGxvYWQgY2FsbGJhY2suIEl0IHRha2VzIG5vIGFyZ3VtZW50cywgYW5kCiAg
ICAgLy8gaWdub3JlcyBhbnkgdGhhdCBtYXkgYmUgcHJlc2VudC4KICAgICB2b2lkIGR1bXBGcmFt
ZUxvYWRDYWxsYmFja3MoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwpAQCAt
Mjk1LDcgKzI5Miw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZER1bXBBc0F1ZGlvKGJv
b2wgZHVtcEFzQXVkaW8pIHsgbV9kdW1wQXNBdWRpbyA9IGR1bXBBc0F1ZGlvOyB9IAogICAgIGJv
b2wgc2hvdWxkRHVtcEFzVGV4dCgpIHsgcmV0dXJuIG1fZHVtcEFzVGV4dDsgfQogICAgIHZvaWQg
c2V0U2hvdWxkRHVtcEFzVGV4dChib29sIHZhbHVlKSB7IG1fZHVtcEFzVGV4dCA9IHZhbHVlOyB9
Ci0gICAgYm9vbCBzaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpIHsgcmV0dXJuIG1fZHVtcEVk
aXRpbmdDYWxsYmFja3M7IH0KICAgICBib29sIHNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3Mo
KSB7IHJldHVybiBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3M7IH0KICAgICB2b2lkIHNldFNob3Vs
ZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoYm9vbCB2YWx1ZSkgeyBtX2R1bXBGcmFtZUxvYWRDYWxs
YmFja3MgPSB2YWx1ZTsgfQogICAgIGJvb2wgc2hvdWxkRHVtcFByb2dyZXNzRmluaXNoZWRDYWxs
YmFjaygpIHsgcmV0dXJuIG1fZHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFjazsgfQpAQCAtMzU3
LDcgKzM1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBib29sIHJ1bihUZXN0U2hlbGwq
KSA9IDA7CiAgICAgfTsKIAotICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0YXNrTGlz
dCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CisgICAgV2ViVGFza0xpc3QqIHRhc2tMaXN0KCkg
eyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KIAogICAgIGJvb2wgc2hvdWxkU3RheU9uUGFnZUFmdGVy
SGFuZGxpbmdCZWZvcmVVbmxvYWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFN0YXlPblBhZ2VB
ZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkOyB9CiAKQEAgLTM4MCwzMCArMzc2LDMwIEBAIHByaXZh
dGU6CiAKICAgICAgICAgdm9pZCBzZXRGcm96ZW4oYm9vbCBmcm96ZW4pIHsgbV9mcm96ZW4gPSBm
cm96ZW47IH0KICAgICAgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gbV9xdWV1ZS5pc0VtcHR5
KCk7IH0KLSAgICAgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyBy
ZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICAgICAgV2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyBy
ZXR1cm4gJm1fdGFza0xpc3Q7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgcHJvY2Vz
c1dvcmsoKTsKLSAgICAgICAgY2xhc3MgV29ya1F1ZXVlVGFzazogcHVibGljIFdlYlRlc3RSdW5u
ZXI6OldlYk1ldGhvZFRhc2s8V29ya1F1ZXVlPiB7CisgICAgICAgIGNsYXNzIFdvcmtRdWV1ZVRh
c2s6IHB1YmxpYyBXZWJNZXRob2RUYXNrPFdvcmtRdWV1ZT4gewogICAgICAgICBwdWJsaWM6Ci0g
ICAgICAgICAgICBXb3JrUXVldWVUYXNrKFdvcmtRdWV1ZSogb2JqZWN0KTogV2ViVGVzdFJ1bm5l
cjo6V2ViTWV0aG9kVGFzazxXb3JrUXVldWU+KG9iamVjdCkgeyB9CisgICAgICAgICAgICBXb3Jr
UXVldWVUYXNrKFdvcmtRdWV1ZSogb2JqZWN0KTogV2ViTWV0aG9kVGFzazxXb3JrUXVldWU+KG9i
amVjdCkgeyB9CiAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIHsgbV9vYmpl
Y3QtPnByb2Nlc3NXb3JrKCk7IH0KICAgICAgICAgfTsKIAotICAgICAgICBXZWJUZXN0UnVubmVy
OjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OworICAgICAgICBXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0
OwogICAgICAgICBEZXF1ZTxXb3JrSXRlbSo+IG1fcXVldWU7CiAgICAgICAgIGJvb2wgbV9mcm96
ZW47CiAgICAgICAgIERSVFRlc3RSdW5uZXIqIG1fY29udHJvbGxlcjsKICAgICB9OwogICAgIHZv
aWQgY29tcGxldGVOb3RpZnlEb25lKGJvb2wgaXNUaW1lb3V0KTsKLSAgICBjbGFzcyBOb3RpZnlE
b25lVGltZWRPdXRUYXNrOiBwdWJsaWMgV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxEUlRU
ZXN0UnVubmVyPiB7CisgICAgY2xhc3MgTm90aWZ5RG9uZVRpbWVkT3V0VGFzazogcHVibGljIFdl
Yk1ldGhvZFRhc2s8RFJUVGVzdFJ1bm5lcj4gewogICAgIHB1YmxpYzoKLSAgICAgICAgTm90aWZ5
RG9uZVRpbWVkT3V0VGFzayhEUlRUZXN0UnVubmVyKiBvYmplY3QpOiBXZWJUZXN0UnVubmVyOjpX
ZWJNZXRob2RUYXNrPERSVFRlc3RSdW5uZXI+KG9iamVjdCkgeyB9CisgICAgICAgIE5vdGlmeURv
bmVUaW1lZE91dFRhc2soRFJUVGVzdFJ1bm5lciogb2JqZWN0KTogV2ViTWV0aG9kVGFzazxEUlRU
ZXN0UnVubmVyPihvYmplY3QpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgp
IHsgbV9vYmplY3QtPmNvbXBsZXRlTm90aWZ5RG9uZSh0cnVlKTsgfQogICAgIH07CiAKICAgICAv
LyBVc2VkIGZvciB0ZXN0IHRpbWVvdXRzLgotICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0
IG1fdGFza0xpc3Q7CisgICAgV2ViVGFza0xpc3QgbV90YXNrTGlzdDsKIAogICAgIC8vIE5vbi1v
d25pbmcgcG9pbnRlci4gVGhlIERSVFRlc3RSdW5uZXIgaXMgb3duZWQgYnkgdGhlIGhvc3QuCiAg
ICAgVGVzdFNoZWxsKiBtX3NoZWxsOwpAQCAtNDE1LDEwICs0MTEsNiBAQCBwcml2YXRlOgogICAg
IC8vIElmIHRydWUsIHRoZSB0ZXN0X3NoZWxsIHdpbGwgb3V0cHV0IGEgYmFzZTY0IGVuY29kZWQg
V0FWRSBmaWxlLgogICAgIGJvb2wgbV9kdW1wQXNBdWRpbzsKIAotICAgIC8vIElmIHRydWUsIHRo
ZSB0ZXN0X3NoZWxsIHdpbGwgd3JpdGUgYSBkZXNjcmlwdGl2ZSBsaW5lIGZvciBlYWNoIGVkaXRp
bmcKLSAgICAvLyBjb21tYW5kLgotICAgIGJvb2wgbV9kdW1wRWRpdGluZ0NhbGxiYWNrczsKLQog
ICAgIC8vIElmIHRydWUsIHRoZSB0ZXN0X3NoZWxsIHdpbGwgZHJhdyB0aGUgYm91bmRzIG9mIHRo
ZSBjdXJyZW50IHNlbGVjdGlvbiByZWN0CiAgICAgLy8gdGFraW5nIHBvc3NpYmxlIHRyYW5zZm9y
bXMgb2YgdGhlIHNlbGVjdGlvbiByZWN0IGludG8gYWNjb3VudC4KICAgICBib29sIG1fZHVtcFNl
bGVjdGlvblJlY3Q7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaAppbmRleCA1
MjUyMGE2YjVhMjE3YTdmMjU2NjgwNzMxODFjZTY4N2I0M2QxNTYzLi5kOGQ4YjNmZDdhMDQxOGE0
MjExMGZlOWU4NWYzYjdmMzY2NmUwN2QwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRl
cmZhY2VzLmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogY2xh
c3MgV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI7CiBjbGFzcyBXZWJFdmVudFNlbmRlcjsKIGNs
YXNzIFdlYlRlc3REZWxlZ2F0ZTsKK2NsYXNzIFdlYlRlc3RSdW5uZXI7CiAKIGNsYXNzIFdlYlRl
c3RJbnRlcmZhY2VzIHsKIHB1YmxpYzoKQEAgLTU0LDYgKzU1LDkgQEAgcHVibGljOgogCiAgICAg
V2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIqIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7CiAg
ICAgV2ViRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKCk7CisgICAgV2ViVGVzdFJ1bm5lciogdGVz
dFJ1bm5lcigpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIFRlc3RSdW5uZXIgaXMg
Y29tcGxldGUuCisgICAgdm9pZCBzZXRUZXN0UnVubmVyKFdlYlRlc3RSdW5uZXIqKTsKIAogcHJp
dmF0ZToKICAgICBjbGFzcyBJbnRlcm5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgKaW5k
ZXggYjRhNTkzY2VlYTA1YTE1ZjA4MmE3ZDRhYzQwMTIwODMxYTMzMzY1Yi4uNTIwYzYyMGY1MTdh
NGUwYzU3YWY2MWU2ZGU1NzY4NDU0ZjgwZWFkOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5
LmgKQEAgLTM0LDIxICszNCwyNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJSZWN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJEcmFnT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJF
ZGl0aW5nQWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOYXZp
Z2F0aW9uUG9saWN5LmgiCisjaW5jbHVkZSAiV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0
QWZmaW5pdHkuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0OwogY2xhc3MgV2ViRHJhZ0RhdGE7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYklt
YWdlOworY2xhc3MgV2ViTm9kZTsKIHN0cnVjdCBXZWJQb2ludDsKK2NsYXNzIFdlYlJhbmdlOwog
c3RydWN0IFdlYlNpemU7CitjbGFzcyBXZWJTdHJpbmc7CiB9CiAKIG5hbWVzcGFjZSBXZWJUZXN0
UnVubmVyIHsKIAogY2xhc3MgV2ViVGVzdERlbGVnYXRlOwogY2xhc3MgV2ViVGVzdEludGVyZmFj
ZXM7CitjbGFzcyBXZWJUZXN0UnVubmVyOwogCiBjbGFzcyBXZWJUZXN0UHJveHlCYXNlIHsKIHB1
YmxpYzoKQEAgLTcxLDYgKzc3LDE3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRpZEF1dG9SZXNp
emUoY29uc3QgV2ViS2l0OjpXZWJTaXplJik7CiAgICAgdm9pZCBwb3N0QWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbihjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmLCBXZWJLaXQ6
OldlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24pOwogICAgIHZvaWQgc3RhcnREcmFnZ2luZyhX
ZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJEcmFnRGF0YSYsIFdlYktpdDo6V2Vi
RHJhZ09wZXJhdGlvbnNNYXNrLCBjb25zdCBXZWJLaXQ6OldlYkltYWdlJiwgY29uc3QgV2ViS2l0
OjpXZWJQb2ludCYpOworICAgIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nKGNvbnN0IFdlYktpdDo6
V2ViUmFuZ2UmKTsKKyAgICBib29sIHNob3VsZEVuZEVkaXRpbmcoY29uc3QgV2ViS2l0OjpXZWJS
YW5nZSYpOworICAgIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShjb25zdCBXZWJLaXQ6OldlYk5vZGUm
LCBjb25zdCBXZWJLaXQ6OldlYlJhbmdlJiwgV2ViS2l0OjpXZWJFZGl0aW5nQWN0aW9uKTsKKyAg
ICBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHRleHQsIGNv
bnN0IFdlYktpdDo6V2ViUmFuZ2UmLCBXZWJLaXQ6OldlYkVkaXRpbmdBY3Rpb24pOworICAgIGJv
b2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShjb25zdCBXZWJLaXQ6OldlYlJhbmdlJiBmcm9t
UmFuZ2UsIGNvbnN0IFdlYktpdDo6V2ViUmFuZ2UmIHRvUmFuZ2UsIFdlYktpdDo6V2ViVGV4dEFm
ZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKTsKKyAgICBib29sIHNob3VsZERlbGV0ZVJhbmdl
KGNvbnN0IFdlYktpdDo6V2ViUmFuZ2UmKTsKKyAgICBib29sIHNob3VsZEFwcGx5U3R5bGUoY29u
c3QgV2ViS2l0OjpXZWJTdHJpbmcmIHN0eWxlLCBjb25zdCBXZWJLaXQ6OldlYlJhbmdlJik7Cisg
ICAgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKTsKKyAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihi
b29sIGlzRW1wdHlTZWxlY3Rpb24pOworICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudHMoKTsKKyAg
ICB2b2lkIGRpZEVuZEVkaXRpbmcoKTsKIAogcHJpdmF0ZToKICAgICBXZWJUZXN0SW50ZXJmYWNl
cyogbV90ZXN0SW50ZXJmYWNlczsKQEAgLTEzNiw2ICsxNTMsNjEgQEAgcHVibGljOgogICAgICAg
ICBXZWJUZXN0UHJveHlCYXNlOjpzdGFydERyYWdnaW5nKGZyYW1lLCBkYXRhLCBtYXNrLCBpbWFn
ZSwgcG9pbnQpOwogICAgICAgICBXZWJWaWV3Q2xpZW50SW1wbDo6c3RhcnREcmFnZ2luZyhmcmFt
ZSwgZGF0YSwgbWFzaywgaW1hZ2UsIHBvaW50KTsKICAgICB9CisgICAgdmlydHVhbCBib29sIHNo
b3VsZEJlZ2luRWRpdGluZyhjb25zdCBXZWJLaXQ6OldlYlJhbmdlJiByYW5nZSkKKyAgICB7Cisg
ICAgICAgIFdlYlRlc3RQcm94eUJhc2U6OnNob3VsZEJlZ2luRWRpdGluZyhyYW5nZSk7CisgICAg
ICAgIHJldHVybiBXZWJWaWV3Q2xpZW50SW1wbDo6c2hvdWxkQmVnaW5FZGl0aW5nKHJhbmdlKTsK
KyAgICB9CisgICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmcoY29uc3QgV2ViS2l0OjpX
ZWJSYW5nZSYgcmFuZ2UpCisgICAgeworICAgICAgICBXZWJUZXN0UHJveHlCYXNlOjpzaG91bGRF
bmRFZGl0aW5nKHJhbmdlKTsKKyAgICAgICAgcmV0dXJuIFdlYlZpZXdDbGllbnRJbXBsOjpzaG91
bGRFbmRFZGl0aW5nKHJhbmdlKTsKKyAgICB9CisgICAgdmlydHVhbCBib29sIHNob3VsZEluc2Vy
dE5vZGUoY29uc3QgV2ViS2l0OjpXZWJOb2RlJiBub2RlLCBjb25zdCBXZWJLaXQ6OldlYlJhbmdl
JiByYW5nZSwgV2ViS2l0OjpXZWJFZGl0aW5nQWN0aW9uIGFjdGlvbikKKyAgICB7CisgICAgICAg
IFdlYlRlc3RQcm94eUJhc2U6OnNob3VsZEluc2VydE5vZGUobm9kZSwgcmFuZ2UsIGFjdGlvbik7
CisgICAgICAgIHJldHVybiBXZWJWaWV3Q2xpZW50SW1wbDo6c2hvdWxkSW5zZXJ0Tm9kZShub2Rl
LCByYW5nZSwgYWN0aW9uKTsKKyAgICB9CisgICAgdmlydHVhbCBib29sIHNob3VsZEluc2VydFRl
eHQoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHRleHQsIGNvbnN0IFdlYktpdDo6V2ViUmFuZ2Um
IHJhbmdlLCBXZWJLaXQ6OldlYkVkaXRpbmdBY3Rpb24gYWN0aW9uKQorICAgIHsKKyAgICAgICAg
V2ViVGVzdFByb3h5QmFzZTo6c2hvdWxkSW5zZXJ0VGV4dCh0ZXh0LCByYW5nZSwgYWN0aW9uKTsK
KyAgICAgICAgcmV0dXJuIFdlYlZpZXdDbGllbnRJbXBsOjpzaG91bGRJbnNlcnRUZXh0KHRleHQs
IHJhbmdlLCBhY3Rpb24pOworICAgIH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRSYW5nZShjb25zdCBXZWJLaXQ6OldlYlJhbmdlJiBmcm9tUmFuZ2UsIGNvbnN0IFdlYktp
dDo6V2ViUmFuZ2UmIHRvUmFuZ2UsIFdlYktpdDo6V2ViVGV4dEFmZmluaXR5IGFmZmluaXR5LCBi
b29sIHN0aWxsU2VsZWN0aW5nKQorICAgIHsKKyAgICAgICAgV2ViVGVzdFByb3h5QmFzZTo6c2hv
dWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShmcm9tUmFuZ2UsIHRvUmFuZ2UsIGFmZmluaXR5LCBzdGls
bFNlbGVjdGluZyk7CisgICAgICAgIHJldHVybiBXZWJWaWV3Q2xpZW50SW1wbDo6c2hvdWxkQ2hh
bmdlU2VsZWN0ZWRSYW5nZShmcm9tUmFuZ2UsIHRvUmFuZ2UsIGFmZmluaXR5LCBzdGlsbFNlbGVj
dGluZyk7CisgICAgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWxldGVSYW5nZShjb25zdCBX
ZWJLaXQ6OldlYlJhbmdlJiByYW5nZSkKKyAgICB7CisgICAgICAgIFdlYlRlc3RQcm94eUJhc2U6
OnNob3VsZERlbGV0ZVJhbmdlKHJhbmdlKTsKKyAgICAgICAgcmV0dXJuIFdlYlZpZXdDbGllbnRJ
bXBsOjpzaG91bGREZWxldGVSYW5nZShyYW5nZSk7CisgICAgfQorICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRBcHBseVN0eWxlKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBzdHlsZSwgY29uc3QgV2Vi
S2l0OjpXZWJSYW5nZSYgcmFuZ2UpCisgICAgeworICAgICAgICBXZWJUZXN0UHJveHlCYXNlOjpz
aG91bGRBcHBseVN0eWxlKHN0eWxlLCByYW5nZSk7CisgICAgICAgIHJldHVybiBXZWJWaWV3Q2xp
ZW50SW1wbDo6c2hvdWxkQXBwbHlTdHlsZShzdHlsZSwgcmFuZ2UpOworICAgIH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQmVnaW5FZGl0aW5nKCkKKyAgICB7CisgICAgICAgIFdlYlRlc3RQcm94eUJh
c2U6OmRpZEJlZ2luRWRpdGluZygpOworICAgICAgICBXZWJWaWV3Q2xpZW50SW1wbDo6ZGlkQmVn
aW5FZGl0aW5nKCk7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24o
Ym9vbCBpc0VtcHR5U2VsZWN0aW9uKQorICAgIHsKKyAgICAgICAgV2ViVGVzdFByb3h5QmFzZTo6
ZGlkQ2hhbmdlU2VsZWN0aW9uKGlzRW1wdHlTZWxlY3Rpb24pOworICAgICAgICBXZWJWaWV3Q2xp
ZW50SW1wbDo6ZGlkQ2hhbmdlU2VsZWN0aW9uKGlzRW1wdHlTZWxlY3Rpb24pOworICAgIH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHMoKQorICAgIHsKKyAgICAgICAgV2ViVGVz
dFByb3h5QmFzZTo6ZGlkQ2hhbmdlQ29udGVudHMoKTsKKyAgICAgICAgV2ViVmlld0NsaWVudElt
cGw6OmRpZENoYW5nZUNvbnRlbnRzKCk7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRF
ZGl0aW5nKCkKKyAgICB7CisgICAgICAgIFdlYlRlc3RQcm94eUJhc2U6OmRpZEVuZEVkaXRpbmco
KTsKKyAgICAgICAgV2ViVmlld0NsaWVudEltcGw6OmRpZEVuZEVkaXRpbmcoKTsKKyAgICB9CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UnVubmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE2YjAwMTM4
ODNkNjk1MWMyMjJmMjE4ZmI1YWZlZDUzYmU2NGRlMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RSdW5uZXIu
aApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJUZXN0UnVubmVyX2gKKyNkZWZpbmUgV2ViVGVz
dFJ1bm5lcl9oCisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKKworLy8gRklYTUU6IE9uY2Ug
dGhlIFRlc3RSdW5uZXIgY2xhc3MgaXMgY29tcGxldGUsIHRoaXMgY2xhc3Mgc2hvdWxkIHRha2Ug
YQorLy8gVGVzdFJ1bm5lciogYXMgY3RvciBhcmd1bWVudCwgYW5kIG5vdCBoYXZlIGRlZmF1bHQg
aW1wbGVtZW50YXRpb25zLgorY2xhc3MgV2ViVGVzdFJ1bm5lciB7CitwdWJsaWM6CisgICAgdmly
dHVhbCBib29sIHNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KK307CisKK30KKworI2VuZGlmIC8vIFdlYlRlc3RSdW5uZXJfaApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmNwcAppbmRleCA0NmU1MjAxMzMxMmQ5MTNlZjNhYWJhNzcyYmQ1NjA5NjNjMzhlNWEyLi5k
ZGE1YzczMTMyZGFmZjM3MWQ5Y2FiYWUxMzNmZWViMzNhYjE3ODUxIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmNwcApAQCAtMTM1LDYgKzEzNSw5IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAg
IGJpbmRNZXRob2QoIm92ZXJyaWRlUHJlZmVyZW5jZSIsICZUZXN0UnVubmVyOjpvdmVycmlkZVBy
ZWZlcmVuY2UpOwogICAgIGJpbmRNZXRob2QoInNldFBsdWdpbnNFbmFibGVkIiwgJlRlc3RSdW5u
ZXI6OnNldFBsdWdpbnNFbmFibGVkKTsKIAorICAgIC8vIFRoZSBmb2xsb3dpbmcgbW9kaWZ5IHRo
ZSBzdGF0ZSBvZiB0aGUgVGVzdFJ1bm5lci4KKyAgICBiaW5kTWV0aG9kKCJkdW1wRWRpdGluZ0Nh
bGxiYWNrcyIsICZUZXN0UnVubmVyOjpkdW1wRWRpdGluZ0NhbGxiYWNrcyk7CisKICAgICAvLyBQ
cm9wZXJ0aWVzLgogICAgIGJpbmRQcm9wZXJ0eSgid29ya2VyVGhyZWFkQ291bnQiLCAmVGVzdFJ1
bm5lcjo6d29ya2VyVGhyZWFkQ291bnQpOwogICAgIGJpbmRQcm9wZXJ0eSgiZ2xvYmFsRmxhZyIs
ICZtX2dsb2JhbEZsYWcpOwpAQCAtMTcyLDYgKzE3NSwxMCBAQCBUZXN0UnVubmVyOjpUZXN0UnVu
bmVyKCkKICAgICBiaW5kRmFsbGJhY2tNZXRob2QoJlRlc3RSdW5uZXI6OmZhbGxiYWNrTWV0aG9k
KTsKIH0KIAorVGVzdFJ1bm5lcjo6flRlc3RSdW5uZXIoKQoreworfQorCiB2b2lkIFRlc3RSdW5u
ZXI6OnJlc2V0KCkKIHsKICAgICBpZiAobV93ZWJWaWV3KSB7CkBAIC0xOTAsMTIgKzE5NywxOSBA
QCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKICAgICBXZWJGb250UmVuZGVyaW5nOjpzZXRTdWJw
aXhlbFBvc2l0aW9uaW5nKGZhbHNlKTsKICNlbmRpZgogCisgICAgbV9kdW1wRWRpdGluZ0NhbGxi
YWNrcyA9IGZhbHNlOworCiAgICAgbV9nbG9iYWxGbGFnLnNldChmYWxzZSk7CiAgICAgbV9wbGF0
Zm9ybU5hbWUuc2V0KCJjaHJvbWl1bSIpOwogCiAgICAgbV91c2VyU3R5bGVTaGVldExvY2F0aW9u
ID0gV2ViVVJMKCk7CiB9CiAKK2Jvb2wgVGVzdFJ1bm5lcjo6c2hvdWxkRHVtcEVkaXRpbmdDYWxs
YmFja3MoKSBjb25zdAoreworICAgIHJldHVybiBtX2R1bXBFZGl0aW5nQ2FsbGJhY2tzOworfQor
CiB2b2lkIFRlc3RSdW5uZXI6OnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhjb25zdCBD
cHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIGlm
IChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpCkBAIC05MDEs
NiArOTE1LDEyIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0UGx1Z2luc0VuYWJsZWQoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqCiAgICAgcmVzdWx0LT5zZXROdWxs
KCk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6ZHVtcEVkaXRpbmdDYWxsYmFja3MoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIG1fZHVtcEVkaXRpbmdD
YWxsYmFja3MgPSB0cnVlOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCiB2b2lkIFRlc3RS
dW5uZXI6OndvcmtlclRocmVhZENvdW50KENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1
bHQtPnNldChzdGF0aWNfY2FzdDxpbnQ+KFdlYldvcmtlckluZm86OmRlZGljYXRlZFdvcmtlckNv
dW50KCkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAppbmRleCA2ZTY3NzhlZWI1MjFlZTBhNjBjZWMzOWQx
ZmFiNjk5ZmM3MmM3OWFiLi5mZDIwYWQ5ZjU1M2E5ZGFkMWE2OTYzOTlkNWRlYjAxYWIwMmVkOTky
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvVGVzdFJ1bm5lci5oCkBAIC0zMyw2ICszMyw3IEBACiAjZGVmaW5lIFRlc3RSdW5u
ZXJfaAogCiAjaW5jbHVkZSAiQ3BwQm91bmRDbGFzcy5oIgorI2luY2x1ZGUgIldlYlRlc3RSdW5u
ZXIuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkwuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC00Myw5ICs0NCwxMCBAQCBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIGNsYXNzIFdl
YlRlc3REZWxlZ2F0ZTsKIAotY2xhc3MgVGVzdFJ1bm5lciA6IHB1YmxpYyBDcHBCb3VuZENsYXNz
IHsKK2NsYXNzIFRlc3RSdW5uZXIgOiBwdWJsaWMgQ3BwQm91bmRDbGFzcywgcHVibGljIFdlYlRl
c3RSdW5uZXIgewogcHVibGljOgogICAgIFRlc3RSdW5uZXIoKTsKKyAgICB2aXJ0dWFsIH5UZXN0
UnVubmVyKCk7CiAKICAgICAvLyBGSVhNRTogb25jZSBEUlRUZXN0UnVubmVyIGlzIG1vdmVkIGVu
dGlyZWx5IHRvIHRoaXMgY2xhc3MsIGNoYW5nZSB0aGlzCiAgICAgLy8gbWV0aG9kIHRvIHRha2Ug
YSBUZXN0RGVsZWdhdGUqIGluc3RlYWQuCkBAIC01NCw2ICs1Niw5IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcmVzZXQoKTsKIAorICAgIC8vIFdlYlRlc3RSdW5uZXIgaW1wbGVtZW50YXRpb24uCisg
ICAgdmlydHVhbCBib29sIHNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkgY29uc3QgT1ZFUlJJ
REU7CisKIHByb3RlY3RlZDoKICAgICAvLyBGSVhNRTogbWFrZSB0aGVzZSBwcml2YXRlIG9uY2Ug
dGhlIG1vdmUgZnJvbSBEUlRUZXN0UnVubmVyIHRvIFRlc3RSdW5uZXIKICAgICAvLyBpcyBjb21w
bGV0ZS4KQEAgLTE3NCw2ICsxNzksMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFBsdWdpbnNF
bmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLworICAgIC8vIE1ldGhvZHMgdGhhdCBtb2RpZnkgdGhlIHN0YXRlIG9mIFRl
c3RSdW5uZXIKKworICAgIC8vIFRoaXMgZnVuY3Rpb24gc2V0cyBhIGZsYWcgdGhhdCB0ZWxscyB0
aGUgdGVzdF9zaGVsbCB0byBwcmludCBhIGxpbmUgb2YKKyAgICAvLyBkZXNjcmlwdGl2ZSB0ZXh0
IGZvciBlYWNoIGVkaXRpbmcgY29tbWFuZC4gSXQgdGFrZXMgbm8gYXJndW1lbnRzLCBhbmQKKyAg
ICAvLyBpZ25vcmVzIGFueSB0aGF0IG1heSBiZSBwcmVzZW50LgorICAgIHZvaWQgZHVtcEVkaXRp
bmdDYWxsYmFja3MoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCisgICAg
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCiAgICAgLy8gUHJvcGVydGllcwogICAgIHZvaWQgd29ya2VyVGhy
ZWFkQ291bnQoQ3BwVmFyaWFudCopOwogCkBAIC0yMDUsNiArMjE4LDEwIEBAIHByaXZhdGU6CiAg
ICAgLy8gQm91bmQgdmFyaWFibGUgdG8gcmV0dXJuIHRoZSBuYW1lIG9mIHRoaXMgcGxhdGZvcm0g
KGNocm9taXVtKS4KICAgICBDcHBWYXJpYW50IG1fcGxhdGZvcm1OYW1lOwogCisgICAgLy8gSWYg
dHJ1ZSwgdGhlIHRlc3Rfc2hlbGwgd2lsbCB3cml0ZSBhIGRlc2NyaXB0aXZlIGxpbmUgZm9yIGVh
Y2ggZWRpdGluZworICAgIC8vIGNvbW1hbmQuCisgICAgYm9vbCBtX2R1bXBFZGl0aW5nQ2FsbGJh
Y2tzOworCiAgICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOwogICAgIFdlYktpdDo6V2Vi
VmlldyogbV93ZWJWaWV3OwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcApp
bmRleCA5YTg2OTUzYzNjYjg1Mzc0MGVhYTc4YmFmZmExODhjNGI3MjcyOGY4Li40M2ZlZWFjMzZh
MjlkN2ZjOTgzYTRiZjQ3YjEzNmFiYjUyZjI3MmY2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdElu
dGVyZmFjZXMuY3BwCkBAIC01NSw2ICs1NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERlbGVn
YXRlKFdlYlRlc3REZWxlZ2F0ZSopOwogICAgIFdlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKiBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpIHsgcmV0dXJuICZtX2FjY2Vzc2liaWxpdHlDb250cm9s
bGVyOyB9CiAgICAgV2ViRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKCkgeyByZXR1cm4gJm1fZXZl
bnRTZW5kZXI7IH0KKyAgICBXZWJUZXN0UnVubmVyKiB0ZXN0UnVubmVyKCkgeyByZXR1cm4gbV90
ZXN0UnVubmVyOyB9CisgICAgdm9pZCBzZXRUZXN0UnVubmVyKFdlYlRlc3RSdW5uZXIqIHRlc3RS
dW5uZXIpIHsgbV90ZXN0UnVubmVyID0gdGVzdFJ1bm5lcjsgfQogCiAgICAgLy8gVGVzdERlbGVn
YXRlIGltcGxlbWVudGF0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNvbnRleHRNZW51RGF0
YSgpOwpAQCAtNzQsMTIgKzc2LDE0IEBAIHByaXZhdGU6CiAgICAgVGVzdEludGVyZmFjZXMgbV9p
bnRlcmZhY2VzOwogICAgIFdlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyIG1fYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXI7CiAgICAgV2ViRXZlbnRTZW5kZXIgbV9ldmVudFNlbmRlcjsKKyAgICBXZWJU
ZXN0UnVubmVyKiBtX3Rlc3RSdW5uZXI7CiAgICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRl
OwogfTsKIAogV2ViVGVzdEludGVyZmFjZXM6OkludGVybmFsOjpJbnRlcm5hbCgpCiAgICAgOiBt
X2FjY2Vzc2liaWxpdHlDb250cm9sbGVyKG1faW50ZXJmYWNlcy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcigpKQogICAgICwgbV9ldmVudFNlbmRlcihtX2ludGVyZmFjZXMuZXZlbnRTZW5kZXIoKSkK
KyAgICAsIG1fdGVzdFJ1bm5lcigwKQogICAgICwgbV9kZWxlZ2F0ZSgwKQogewogfQpAQCAtMTk5
LDQgKzIwMywxNCBAQCBXZWJFdmVudFNlbmRlciogV2ViVGVzdEludGVyZmFjZXM6OmV2ZW50U2Vu
ZGVyKCkKICAgICByZXR1cm4gbV9pbnRlcm5hbC0+ZXZlbnRTZW5kZXIoKTsKIH0KIAorV2ViVGVz
dFJ1bm5lciogV2ViVGVzdEludGVyZmFjZXM6OnRlc3RSdW5uZXIoKQoreworICAgIHJldHVybiBt
X2ludGVybmFsLT50ZXN0UnVubmVyKCk7Cit9CisKK3ZvaWQgV2ViVGVzdEludGVyZmFjZXM6OnNl
dFRlc3RSdW5uZXIoV2ViVGVzdFJ1bm5lciogdGVzdFJ1bm5lcikKK3sKKyAgICBtX2ludGVybmFs
LT5zZXRUZXN0UnVubmVyKHRlc3RSdW5uZXIpOworfQorCiB9CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5
LmNwcAppbmRleCA5NDJmMGJiODg5YzA1MjNkOTcyNjM5MWI3MTRlZmZjMTNkMzVmMDBhLi4wZTc5
NDA2Y2E0OGY5YjAyYmM4MWYzNGMyNDUwM2Q2NmEwOTNhMWRhIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQ
cm94eS5jcHAKQEAgLTM3LDE1ICszNyw4MiBAQAogI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKICNp
bmNsdWRlICJXZWJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKKyNpbmNsdWRl
ICJXZWJSYW5nZS5oIgogI2luY2x1ZGUgIldlYlRlc3REZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIldl
YlRlc3RJbnRlcmZhY2VzLmgiCisjaW5jbHVkZSAiV2ViVGVzdFJ1bm5lci5oIgogI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkNTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3Bh
Y2UgV2ViVGVzdFJ1bm5lciB7CiAKK25hbWVzcGFjZSB7CisKK3ZvaWQgcHJpbnROb2RlRGVzY3Jp
cHRpb24oV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSwgY29uc3QgV2ViTm9kZSYgbm9kZSwgaW50
IGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAgIGRlbGVnYXRlLT5w
cmludE1lc3NhZ2UoIkVSUk9SIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG5v
ZGUuaXNOdWxsKCkpIHsKKyAgICAgICAgZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiKG51bGwpIik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZGVsZWdhdGUtPnByaW50TWVzc2FnZShub2Rl
Lm5vZGVOYW1lKCkudXRmOCgpLmRhdGEoKSk7CisgICAgY29uc3QgV2ViTm9kZSYgcGFyZW50ID0g
bm9kZS5wYXJlbnROb2RlKCk7CisgICAgaWYgKCFwYXJlbnQuaXNOdWxsKCkpIHsKKyAgICAgICAg
ZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiID4gIik7CisgICAgICAgIHByaW50Tm9kZURlc2NyaXB0
aW9uKGRlbGVnYXRlLCBwYXJlbnQsIDApOworICAgIH0KK30KKwordm9pZCBwcmludFJhbmdlRGVz
Y3JpcHRpb24oV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSwgY29uc3QgV2ViUmFuZ2UmIHJhbmdl
KQoreworICAgIGlmIChyYW5nZS5pc051bGwoKSkgeworICAgICAgICBkZWxlZ2F0ZS0+cHJpbnRN
ZXNzYWdlKCIobnVsbCkiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjaGFyIGJ1ZmZl
clsxMDBdOworICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJyYW5nZSBmcm9t
ICVkIG9mICIsIHJhbmdlLnN0YXJ0T2Zmc2V0KCkpOworICAgIGRlbGVnYXRlLT5wcmludE1lc3Nh
Z2UoYnVmZmVyKTsKKyAgICBpbnQgZXhjZXB0aW9uID0gMDsKKyAgICBXZWJOb2RlIHN0YXJ0Tm9k
ZSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyKGV4Y2VwdGlvbik7CisgICAgcHJpbnROb2RlRGVzY3Jp
cHRpb24oZGVsZWdhdGUsIHN0YXJ0Tm9kZSwgZXhjZXB0aW9uKTsKKyAgICBzbnByaW50ZihidWZm
ZXIsIHNpemVvZihidWZmZXIpLCAiIHRvICVkIG9mICIsIHJhbmdlLmVuZE9mZnNldCgpKTsKKyAg
ICBkZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKGJ1ZmZlcik7CisgICAgV2ViTm9kZSBlbmROb2RlID0g
cmFuZ2UuZW5kQ29udGFpbmVyKGV4Y2VwdGlvbik7CisgICAgcHJpbnROb2RlRGVzY3JpcHRpb24o
ZGVsZWdhdGUsIGVuZE5vZGUsIGV4Y2VwdGlvbik7Cit9CisKK3N0cmluZyBlZGl0aW5nQWN0aW9u
RGVzY3JpcHRpb24oV2ViRWRpdGluZ0FjdGlvbiBhY3Rpb24pCit7CisgICAgc3dpdGNoIChhY3Rp
b24pIHsKKyAgICBjYXNlIFdlYktpdDo6V2ViRWRpdGluZ0FjdGlvblR5cGVkOgorICAgICAgICBy
ZXR1cm4gIldlYlZpZXdJbnNlcnRBY3Rpb25UeXBlZCI7CisgICAgY2FzZSBXZWJLaXQ6OldlYkVk
aXRpbmdBY3Rpb25QYXN0ZWQ6CisgICAgICAgIHJldHVybiAiV2ViVmlld0luc2VydEFjdGlvblBh
c3RlZCI7CisgICAgY2FzZSBXZWJLaXQ6OldlYkVkaXRpbmdBY3Rpb25Ecm9wcGVkOgorICAgICAg
ICByZXR1cm4gIldlYlZpZXdJbnNlcnRBY3Rpb25Ecm9wcGVkIjsKKyAgICB9CisgICAgcmV0dXJu
ICIoVU5LTk9XTiBBQ1RJT04pIjsKK30KKworc3RyaW5nIHRleHRBZmZpbml0eURlc2NyaXB0aW9u
KFdlYlRleHRBZmZpbml0eSBhZmZpbml0eSkKK3sKKyAgICBzd2l0Y2ggKGFmZmluaXR5KSB7Cisg
ICAgY2FzZSBXZWJLaXQ6OldlYlRleHRBZmZpbml0eVVwc3RyZWFtOgorICAgICAgICByZXR1cm4g
Ik5TU2VsZWN0aW9uQWZmaW5pdHlVcHN0cmVhbSI7CisgICAgY2FzZSBXZWJLaXQ6OldlYlRleHRB
ZmZpbml0eURvd25zdHJlYW06CisgICAgICAgIHJldHVybiAiTlNTZWxlY3Rpb25BZmZpbml0eURv
d25zdHJlYW0iOworICAgIH0KKyAgICByZXR1cm4gIihVTktOT1dOIEFGRklOSVRZKSI7Cit9CisK
K30KKwogV2ViVGVzdFByb3h5QmFzZTo6V2ViVGVzdFByb3h5QmFzZSgpCiAgICAgOiBtX3Rlc3RJ
bnRlcmZhY2VzKDApCiAgICAgLCBtX2RlbGVnYXRlKDApCkBAIC0xOTcsNyArMjY0LDcgQEAgdm9p
ZCBXZWJUZXN0UHJveHlCYXNlOjpwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihjb25zdCBX
ZWJLaXQ6OldlYkFjY2Vzc2liaWwKICAgICBtX3Rlc3RJbnRlcmZhY2VzLT5hY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcigpLT5ub3RpZmljYXRpb25SZWNlaXZlZChvYmosIG5vdGlmaWNhdGlvbk5hbWUp
OwogCiAgICAgaWYgKG1fdGVzdEludGVyZmFjZXMtPmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkt
PnNob3VsZExvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKSkgewotICAgICAgICBzdGQ6OnN0cmluZyBt
ZXNzYWdlKCJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uIC0gIik7CisgICAgICAgIHN0cmluZyBt
ZXNzYWdlKCJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uIC0gIik7CiAgICAgICAgIG1lc3NhZ2Ug
Kz0gbm90aWZpY2F0aW9uTmFtZTsKIAogICAgICAgICBXZWJLaXQ6OldlYk5vZGUgbm9kZSA9IG9i
ai5ub2RlKCk7CkBAIC0yMjAsNCArMjg3LDEwOSBAQCB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OnN0
YXJ0RHJhZ2dpbmcoV2ViRnJhbWUqLCBjb25zdCBXZWJEcmFnRGF0YSYgZGF0YSwgV2ViRHJhZwog
ICAgIG1fdGVzdEludGVyZmFjZXMtPmV2ZW50U2VuZGVyKCktPmRvRHJhZ0Ryb3AoZGF0YSwgbWFz
ayk7CiB9CiAKKy8vIFRoZSBvdXRwdXQgZnJvbSB0aGVzZSBtZXRob2RzIGluIGxheW91dCB0ZXN0
IG1vZGUgc2hvdWxkIG1hdGNoIHRoYXQKKy8vIGV4cGVjdGVkIGJ5IHRoZSBsYXlvdXQgdGVzdHMu
IFNlZSBFZGl0aW5nRGVsZWdhdGUubSBpbiBEdW1wUmVuZGVyVHJlZS4KKworLy8gRklYTUU6IFJl
bW92ZSB0aGUgMCBjaGVja3MgZm9yIG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKSBvbmNl
IHRoZQorLy8gVGVzdEludGVyZmFjZXMgY2xhc3Mgb3ducyB0aGUgVGVzdFJ1bm5lci4KKworYm9v
bCBXZWJUZXN0UHJveHlCYXNlOjpzaG91bGRCZWdpbkVkaXRpbmcoY29uc3QgV2ViUmFuZ2UmIHJh
bmdlKQoreworICAgIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCkgJiYgbV90ZXN0
SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7
CisgICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiRURJVElORyBERUxFR0FURTogc2hv
dWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZToiKTsKKyAgICAgICAgcHJpbnRSYW5nZURlc2NyaXB0
aW9uKG1fZGVsZWdhdGUsIHJhbmdlKTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdl
KCJcbiIpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJUZXN0UHJveHlC
YXNlOjpzaG91bGRFbmRFZGl0aW5nKGNvbnN0IFdlYlJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAo
bV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpICYmIG1fdGVzdEludGVyZmFjZXMtPnRlc3RS
dW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgeworICAgICAgICBtX2RlbGVn
YXRlLT5wcmludE1lc3NhZ2UoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEVuZEVkaXRpbmdJbkRP
TVJhbmdlOiIpOworICAgICAgICBwcmludFJhbmdlRGVzY3JpcHRpb24obV9kZWxlZ2F0ZSwgcmFu
Z2UpOworICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIlxuIik7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCitib29sIFdlYlRlc3RQcm94eUJhc2U6OnNob3VsZEluc2VydE5v
ZGUoY29uc3QgV2ViTm9kZSYgbm9kZSwgY29uc3QgV2ViUmFuZ2UmIHJhbmdlLCBXZWJFZGl0aW5n
QWN0aW9uIGFjdGlvbikKK3sKKyAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigp
ICYmIG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxs
YmFja3MoKSkgeworICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIkVESVRJTkcgREVM
RUdBVEU6IHNob3VsZEluc2VydE5vZGU6Iik7CisgICAgICAgIHByaW50Tm9kZURlc2NyaXB0aW9u
KG1fZGVsZWdhdGUsIG5vZGUsIDApOworICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2Uo
IiByZXBsYWNpbmdET01SYW5nZToiKTsKKyAgICAgICAgcHJpbnRSYW5nZURlc2NyaXB0aW9uKG1f
ZGVsZWdhdGUsIHJhbmdlKTsKKyAgICAgICAgcHJpbnRmKCIgZ2l2ZW5BY3Rpb246JXNcbiIsIGVk
aXRpbmdBY3Rpb25EZXNjcmlwdGlvbihhY3Rpb24pLmNfc3RyKCkpOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJUZXN0UHJveHlCYXNlOjpzaG91bGRJbnNlcnRUZXh0KGNv
bnN0IFdlYlN0cmluZyYgdGV4dCwgY29uc3QgV2ViUmFuZ2UmIHJhbmdlLCBXZWJFZGl0aW5nQWN0
aW9uIGFjdGlvbikKK3sKKyAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpICYm
IG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFj
a3MoKSkgeworICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2Uoc3RyaW5nKCJFRElUSU5H
IERFTEVHQVRFOiBzaG91bGRJbnNlcnRUZXh0OiIpICsgdGV4dC51dGY4KCkuZGF0YSgpICsgIiBy
ZXBsYWNpbmdET01SYW5nZToiKTsKKyAgICAgICAgcHJpbnRSYW5nZURlc2NyaXB0aW9uKG1fZGVs
ZWdhdGUsIHJhbmdlKTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKHN0cmluZygi
IGdpdmVuQWN0aW9uOiIpICsgZWRpdGluZ0FjdGlvbkRlc2NyaXB0aW9uKGFjdGlvbikgKyAiXG4i
KTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViVGVzdFByb3h5QmFzZTo6
c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSgKKyAgICBjb25zdCBXZWJSYW5nZSYgZnJvbVJhbmdl
LCBjb25zdCBXZWJSYW5nZSYgdG9SYW5nZSwgV2ViVGV4dEFmZmluaXR5IGFmZmluaXR5LCBib29s
IHN0aWxsU2VsZWN0aW5nKQoreworICAgIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVy
KCkgJiYgbV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0Nh
bGxiYWNrcygpKSB7CisgICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiRURJVElORyBE
RUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToiKTsKKyAgICAgICAgcHJpbnRS
YW5nZURlc2NyaXB0aW9uKG1fZGVsZWdhdGUsIGZyb21SYW5nZSk7CisgICAgICAgIG1fZGVsZWdh
dGUtPnByaW50TWVzc2FnZSgiIHRvRE9NUmFuZ2U6Iik7CisgICAgICAgIHByaW50UmFuZ2VEZXNj
cmlwdGlvbihtX2RlbGVnYXRlLCB0b1JhbmdlKTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRN
ZXNzYWdlKHN0cmluZygiIGFmZmluaXR5OiIpICsgdGV4dEFmZmluaXR5RGVzY3JpcHRpb24oYWZm
aW5pdHkpICsgIiBzdGlsbFNlbGVjdGluZzoiICsgKHN0aWxsU2VsZWN0aW5nID8gIlRSVUUiIDog
IkZBTFNFIikgKyAiXG4iKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2Vi
VGVzdFByb3h5QmFzZTo6c2hvdWxkRGVsZXRlUmFuZ2UoY29uc3QgV2ViUmFuZ2UmIHJhbmdlKQor
eworICAgIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCkgJiYgbV90ZXN0SW50ZXJm
YWNlcy0+dGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7CisgICAg
ICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiRURJVElORyBERUxFR0FURTogc2hvdWxkRGVs
ZXRlRE9NUmFuZ2U6Iik7CisgICAgICAgIHByaW50UmFuZ2VEZXNjcmlwdGlvbihtX2RlbGVnYXRl
LCByYW5nZSk7CisgICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiXG4iKTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViVGVzdFByb3h5QmFzZTo6c2hvdWxkQXBw
bHlTdHlsZShjb25zdCBXZWJTdHJpbmcmIHN0eWxlLCBjb25zdCBXZWJSYW5nZSYgcmFuZ2UpCit7
CisgICAgaWYgKG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKSAmJiBtX3Rlc3RJbnRlcmZh
Y2VzLT50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKKyAgICAg
ICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKHN0cmluZygiRURJVElORyBERUxFR0FURTogc2hv
dWxkQXBwbHlTdHlsZToiKSArIHN0eWxlLnV0ZjgoKS5kYXRhKCkgKyAiIHRvRWxlbWVudHNJbkRP
TVJhbmdlOiIpOworICAgICAgICBwcmludFJhbmdlRGVzY3JpcHRpb24obV9kZWxlZ2F0ZSwgcmFu
Z2UpOworICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIlxuIik7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpZEJlZ2luRWRpdGlu
ZygpCit7CisgICAgaWYgKG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKSAmJiBtX3Rlc3RJ
bnRlcmZhY2VzLT50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCisg
ICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uXG4iKTsK
K30KKwordm9pZCBXZWJUZXN0UHJveHlCYXNlOjpkaWRDaGFuZ2VTZWxlY3Rpb24oYm9vbCBpc0Vt
cHR5U2VsZWN0aW9uKQoreworICAgIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCkg
JiYgbV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxi
YWNrcygpKQorICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIkVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5v
dGlmaWNhdGlvblxuIik7Cit9CisKK3ZvaWQgV2ViVGVzdFByb3h5QmFzZTo6ZGlkQ2hhbmdlQ29u
dGVudHMoKQoreworICAgIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCkgJiYgbV90
ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygp
KQorICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIkVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvblxuIik7Cit9CisKK3Zv
aWQgV2ViVGVzdFByb3h5QmFzZTo6ZGlkRW5kRWRpdGluZygpCit7CisgICAgaWYgKG1fdGVzdElu
dGVyZmFjZXMtPnRlc3RSdW5uZXIoKSAmJiBtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCkt
PnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCisgICAgICAgIG1fZGVsZWdhdGUtPnByaW50
TWVzc2FnZSgiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEVuZEVkaXRpbmc6V2ViVmlld0Rp
ZEVuZEVkaXRpbmdOb3RpZmljYXRpb25cbiIpOworfQorCiB9CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAppbmRleCAyN2Y1YmIwNmExODAyNzllYjg2N2M0MmU2
Mzk3YmQ2MDJhYWRkZTFlLi42OWQ4MWEzMGU3ZWYyOTJkMWE5NjNiOTcxZmQyN2ExNGZiMGU4OTc0
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTE2
Myw2ICsxNjMsNyBAQCB2b2lkIFRlc3RTaGVsbDo6aW5pdGlhbGl6ZSgpCiAgICAgbV93ZWJQZXJt
aXNzaW9ucyA9IGFkb3B0UHRyKG5ldyBXZWJQZXJtaXNzaW9ucyh0aGlzKSk7CiAgICAgbV90ZXN0
SW50ZXJmYWNlcyA9IGFkb3B0UHRyKG5ldyBXZWJUZXN0SW50ZXJmYWNlcygpKTsKICAgICBtX3Rl
c3RSdW5uZXIgPSBhZG9wdFB0cihuZXcgRFJUVGVzdFJ1bm5lcih0aGlzKSk7CisgICAgbV90ZXN0
SW50ZXJmYWNlcy0+c2V0VGVzdFJ1bm5lcihtX3Rlc3RSdW5uZXIuZ2V0KCkpOwogI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgbV9u
b3RpZmljYXRpb25QcmVzZW50ZXIgPSBhZG9wdFB0cihuZXcgTm90aWZpY2F0aW9uUHJlc2VudGVy
KHRoaXMpKTsKICNlbmRpZgpAQCAtNzUxLDcgKzc1Miw3IEBAIFdlYlZpZXdIb3N0KiBUZXN0U2hl
bGw6OmNyZWF0ZU5ld1dpbmRvdyhjb25zdCBXZWJLaXQ6OldlYlVSTCYgdXJsKQogCiBXZWJWaWV3
SG9zdCogVGVzdFNoZWxsOjpjcmVhdGVOZXdXaW5kb3coY29uc3QgV2ViS2l0OjpXZWJVUkwmIHVy
bCwgRFJURGV2VG9vbHNBZ2VudCogZGV2VG9vbHNBZ2VudCkKIHsKLSAgICBXZWJUZXN0UnVubmVy
OjpXZWJUZXN0UHJveHk8V2ViVmlld0hvc3QsIFRlc3RTaGVsbCo+KiBob3N0ID0gbmV3IFdlYlRl
c3RSdW5uZXI6OldlYlRlc3RQcm94eTxXZWJWaWV3SG9zdCwgVGVzdFNoZWxsKj4odGhpcyk7Cisg
ICAgV2ViVGVzdFByb3h5PFdlYlZpZXdIb3N0LCBUZXN0U2hlbGwqPiogaG9zdCA9IG5ldyBXZWJU
ZXN0UHJveHk8V2ViVmlld0hvc3QsIFRlc3RTaGVsbCo+KHRoaXMpOwogICAgIGhvc3QtPnNldElu
dGVyZmFjZXMobV90ZXN0SW50ZXJmYWNlcy5nZXQoKSk7CiAgICAgaWYgKG1fd2ViVmlld0hvc3Qp
CiAgICAgICAgIGhvc3QtPnNldERlbGVnYXRlKG1fd2ViVmlld0hvc3QuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IDhmZThhM2Vm
YTViN2Y4OGRmNGI3MWQyMjg2MWRmYmNlZDk4MDQ4YjUuLmM3MmMzOGY2ZTdkZWUzMGE1MmE5MzQ1
ZjllOGI1NWUzYmFkZjgwNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5jcHAKQEAgLTIwMyw0NSArMjAzLDYgQEAgc3RhdGljIHZvaWQgcHJpbnROb2Rl
RGVzY3JpcHRpb24oY29uc3QgV2ViTm9kZSYgbm9kZSwgaW50IGV4Y2VwdGlvbikKICAgICB9CiB9
CiAKLXN0YXRpYyB2b2lkIHByaW50UmFuZ2VEZXNjcmlwdGlvbihjb25zdCBXZWJSYW5nZSYgcmFu
Z2UpCi17Ci0gICAgaWYgKHJhbmdlLmlzTnVsbCgpKSB7Ci0gICAgICAgIGZwdXRzKCIobnVsbCki
LCBzdGRvdXQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHByaW50ZigicmFuZ2UgZnJv
bSAlZCBvZiAiLCByYW5nZS5zdGFydE9mZnNldCgpKTsKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsK
LSAgICBXZWJOb2RlIHN0YXJ0Tm9kZSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyKGV4Y2VwdGlvbik7
Ci0gICAgcHJpbnROb2RlRGVzY3JpcHRpb24oc3RhcnROb2RlLCBleGNlcHRpb24pOwotICAgIHBy
aW50ZigiIHRvICVkIG9mICIsIHJhbmdlLmVuZE9mZnNldCgpKTsKLSAgICBXZWJOb2RlIGVuZE5v
ZGUgPSByYW5nZS5lbmRDb250YWluZXIoZXhjZXB0aW9uKTsKLSAgICBwcmludE5vZGVEZXNjcmlw
dGlvbihlbmROb2RlLCBleGNlcHRpb24pOwotfQotCi1zdGF0aWMgc3RyaW5nIGVkaXRpbmdBY3Rp
b25EZXNjcmlwdGlvbihXZWJFZGl0aW5nQWN0aW9uIGFjdGlvbikKLXsKLSAgICBzd2l0Y2ggKGFj
dGlvbikgewotICAgIGNhc2UgV2ViS2l0OjpXZWJFZGl0aW5nQWN0aW9uVHlwZWQ6Ci0gICAgICAg
IHJldHVybiAiV2ViVmlld0luc2VydEFjdGlvblR5cGVkIjsKLSAgICBjYXNlIFdlYktpdDo6V2Vi
RWRpdGluZ0FjdGlvblBhc3RlZDoKLSAgICAgICAgcmV0dXJuICJXZWJWaWV3SW5zZXJ0QWN0aW9u
UGFzdGVkIjsKLSAgICBjYXNlIFdlYktpdDo6V2ViRWRpdGluZ0FjdGlvbkRyb3BwZWQ6Ci0gICAg
ICAgIHJldHVybiAiV2ViVmlld0luc2VydEFjdGlvbkRyb3BwZWQiOwotICAgIH0KLSAgICByZXR1
cm4gIihVTktOT1dOIEFDVElPTikiOwotfQotCi1zdGF0aWMgc3RyaW5nIHRleHRBZmZpbml0eURl
c2NyaXB0aW9uKFdlYlRleHRBZmZpbml0eSBhZmZpbml0eSkKLXsKLSAgICBzd2l0Y2ggKGFmZmlu
aXR5KSB7Ci0gICAgY2FzZSBXZWJLaXQ6OldlYlRleHRBZmZpbml0eVVwc3RyZWFtOgotICAgICAg
ICByZXR1cm4gIk5TU2VsZWN0aW9uQWZmaW5pdHlVcHN0cmVhbSI7Ci0gICAgY2FzZSBXZWJLaXQ6
OldlYlRleHRBZmZpbml0eURvd25zdHJlYW06Ci0gICAgICAgIHJldHVybiAiTlNTZWxlY3Rpb25B
ZmZpbml0eURvd25zdHJlYW0iOwotICAgIH0KLSAgICByZXR1cm4gIihVTktOT1dOIEFGRklOSVRZ
KSI7Ci19Ci0KIC8vIFdlYlZpZXdDbGllbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXZWJWaWV3KiBXZWJWaWV3SG9zdDo6
Y3JlYXRlVmlldyhXZWJGcmFtZSogY3JlYXRvciwgY29uc3QgV2ViVVJMUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgV2ViV2luZG93RmVhdHVyZXMmLCBjb25zdCBXZWJTdHJpbmcmLCBXZWJOYXZpZ2F0
aW9uUG9saWN5KQpAQCAtMzI1LDgzICsyODYsMzkgQEAgdm9pZCBXZWJWaWV3SG9zdDo6ZGlkU3Rv
cExvYWRpbmcoKQogICAgIG1fc2hlbGwtPnNldElzTG9hZGluZyhmYWxzZSk7CiB9CiAKLS8vIFRo
ZSBvdXRwdXQgZnJvbSB0aGVzZSBtZXRob2RzIGluIGxheW91dCB0ZXN0IG1vZGUgc2hvdWxkIG1h
dGNoIHRoYXQKLS8vIGV4cGVjdGVkIGJ5IHRoZSBsYXlvdXQgdGVzdHMuIFNlZSBFZGl0aW5nRGVs
ZWdhdGUubSBpbiBEdW1wUmVuZGVyVHJlZS4KLQogYm9vbCBXZWJWaWV3SG9zdDo6c2hvdWxkQmVn
aW5FZGl0aW5nKGNvbnN0IFdlYlJhbmdlJiByYW5nZSkKIHsKLSAgICBpZiAodGVzdFJ1bm5lcigp
LT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAgIGZwdXRzKCJFRElUSU5H
IERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOiIsIHN0ZG91dCk7Ci0gICAg
ICAgIHByaW50UmFuZ2VEZXNjcmlwdGlvbihyYW5nZSk7Ci0gICAgICAgIGZwdXRzKCJcbiIsIHN0
ZG91dCk7Ci0gICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFdlYlZpZXdIb3N0Ojpz
aG91bGRFbmRFZGl0aW5nKGNvbnN0IFdlYlJhbmdlJiByYW5nZSkKIHsKLSAgICBpZiAodGVzdFJ1
bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAgIGZwdXRzKCJF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRFbmRFZGl0aW5nSW5ET01SYW5nZToiLCBzdGRvdXQpOwot
ICAgICAgICBwcmludFJhbmdlRGVzY3JpcHRpb24ocmFuZ2UpOwotICAgICAgICBmcHV0cygiXG4i
LCBzdGRvdXQpOwotICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBXZWJWaWV3SG9z
dDo6c2hvdWxkSW5zZXJ0Tm9kZShjb25zdCBXZWJOb2RlJiBub2RlLCBjb25zdCBXZWJSYW5nZSYg
cmFuZ2UsIFdlYkVkaXRpbmdBY3Rpb24gYWN0aW9uKQogewotICAgIGlmICh0ZXN0UnVubmVyKCkt
PnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgZnB1dHMoIkVESVRJTkcg
REVMRUdBVEU6IHNob3VsZEluc2VydE5vZGU6Iiwgc3Rkb3V0KTsKLSAgICAgICAgcHJpbnROb2Rl
RGVzY3JpcHRpb24obm9kZSwgMCk7Ci0gICAgICAgIGZwdXRzKCIgcmVwbGFjaW5nRE9NUmFuZ2U6
Iiwgc3Rkb3V0KTsKLSAgICAgICAgcHJpbnRSYW5nZURlc2NyaXB0aW9uKHJhbmdlKTsKLSAgICAg
ICAgcHJpbnRmKCIgZ2l2ZW5BY3Rpb246JXNcbiIsIGVkaXRpbmdBY3Rpb25EZXNjcmlwdGlvbihh
Y3Rpb24pLmNfc3RyKCkpOwotICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBXZWJW
aWV3SG9zdDo6c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBXZWJTdHJpbmcmIHRleHQsIGNvbnN0IFdl
YlJhbmdlJiByYW5nZSwgV2ViRWRpdGluZ0FjdGlvbiBhY3Rpb24pCiB7Ci0gICAgaWYgKHRlc3RS
dW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgewotICAgICAgICBwcmludGYo
IkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydFRleHQ6JXMgcmVwbGFjaW5nRE9NUmFuZ2U6
IiwgdGV4dC51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcHJpbnRSYW5nZURlc2NyaXB0aW9uKHJh
bmdlKTsKLSAgICAgICAgcHJpbnRmKCIgZ2l2ZW5BY3Rpb246JXNcbiIsIGVkaXRpbmdBY3Rpb25E
ZXNjcmlwdGlvbihhY3Rpb24pLmNfc3RyKCkpOwotICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogYm9vbCBXZWJWaWV3SG9zdDo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSgKICAgICBjb25z
dCBXZWJSYW5nZSYgZnJvbVJhbmdlLCBjb25zdCBXZWJSYW5nZSYgdG9SYW5nZSwgV2ViVGV4dEFm
ZmluaXR5IGFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKQogewotICAgIGlmICh0ZXN0UnVu
bmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgZnB1dHMoIkVE
SVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6Iiwgc3Rkb3V0KTsK
LSAgICAgICAgcHJpbnRSYW5nZURlc2NyaXB0aW9uKGZyb21SYW5nZSk7Ci0gICAgICAgIGZwdXRz
KCIgdG9ET01SYW5nZToiLCBzdGRvdXQpOwotICAgICAgICBwcmludFJhbmdlRGVzY3JpcHRpb24o
dG9SYW5nZSk7Ci0gICAgICAgIHByaW50ZigiIGFmZmluaXR5OiVzIHN0aWxsU2VsZWN0aW5nOiVz
XG4iLAotICAgICAgICAgICAgICAgdGV4dEFmZmluaXR5RGVzY3JpcHRpb24oYWZmaW5pdHkpLmNf
c3RyKCksCi0gICAgICAgICAgICAgICAoc3RpbGxTZWxlY3RpbmcgPyAiVFJVRSIgOiAiRkFMU0Ui
KSk7Ci0gICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFdlYlZpZXdIb3N0OjpzaG91
bGREZWxldGVSYW5nZShjb25zdCBXZWJSYW5nZSYgcmFuZ2UpCiB7Ci0gICAgaWYgKHRlc3RSdW5u
ZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgewotICAgICAgICBmcHV0cygiRURJ
VElORyBERUxFR0FURTogc2hvdWxkRGVsZXRlRE9NUmFuZ2U6Iiwgc3Rkb3V0KTsKLSAgICAgICAg
cHJpbnRSYW5nZURlc2NyaXB0aW9uKHJhbmdlKTsKLSAgICAgICAgZnB1dHMoIlxuIiwgc3Rkb3V0
KTsKLSAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgV2ViVmlld0hvc3Q6OnNob3Vs
ZEFwcGx5U3R5bGUoY29uc3QgV2ViU3RyaW5nJiBzdHlsZSwgY29uc3QgV2ViUmFuZ2UmIHJhbmdl
KQogewotICAgIGlmICh0ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkp
IHsKLSAgICAgICAgcHJpbnRmKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRBcHBseVN0eWxlOiVz
IHRvRWxlbWVudHNJbkRPTVJhbmdlOiIsIHN0eWxlLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBw
cmludFJhbmdlRGVzY3JpcHRpb24ocmFuZ2UpOwotICAgICAgICBmcHV0cygiXG4iLCBzdGRvdXQp
OwotICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDE1LDM0ICszMzIsNiBAQCBib29s
IFdlYlZpZXdIb3N0Ojppc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKQogICAgIHJl
dHVybiBtX3NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ7CiB9CiAKLXZvaWQgV2ViVmll
d0hvc3Q6OmRpZEJlZ2luRWRpdGluZygpCi17Ci0gICAgaWYgKCF0ZXN0UnVubmVyKCktPnNob3Vs
ZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBmcHV0cygiRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0
aW5nTm90aWZpY2F0aW9uXG4iLCBzdGRvdXQpOwotfQotCi12b2lkIFdlYlZpZXdIb3N0OjpkaWRD
aGFuZ2VTZWxlY3Rpb24oYm9vbCBpc0VtcHR5U2VsZWN0aW9uKQotewotICAgIGlmICh0ZXN0UnVu
bmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCi0gICAgICAgIGZwdXRzKCJFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb25Ob3RpZmljYXRpb25cbiIsIHN0ZG91dCk7Ci0gICAgLy8gTm8gbmVlZCB0byB1cGRh
dGUgY2xpcGJvYXJkIHdpdGggdGhlIHNlbGVjdGVkIHRleHQgaW4gRFJULgotfQotCi12b2lkIFdl
YlZpZXdIb3N0OjpkaWRDaGFuZ2VDb250ZW50cygpCi17Ci0gICAgaWYgKCF0ZXN0UnVubmVyKCkt
PnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBmcHV0
cygiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90
aWZpY2F0aW9uXG4iLCBzdGRvdXQpOwotfQotCi12b2lkIFdlYlZpZXdIb3N0OjpkaWRFbmRFZGl0
aW5nKCkKLXsKLSAgICBpZiAoIXRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFj
a3MoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGZwdXRzKCJFRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkRW5kRWRpdGluZzpXZWJWaWV3RGlkRW5kRWRpdGluZ05vdGlmaWNhdGlvblxuIiwgc3Rk
b3V0KTsKLX0KLQogYm9vbCBXZWJWaWV3SG9zdDo6aGFuZGxlQ3VycmVudEtleWJvYXJkRXZlbnQo
KQogewogICAgIGlmIChtX2VkaXRDb21tYW5kTmFtZS5lbXB0eSgpKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggODAwZDBhZmYxMTIwNTE0ZWUwMjc5
YjM1OGRlYWFjMWUxZTQyYmE4MC4uMGE1OWZhNGVlMjcxZjE1OWQ1MmM2ZTE4NTA1MzFmN2E2YmZj
NTRkNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCkBA
IC0xNzgsMTAgKzE3OCw2IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2Vi
Vmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVDbGllbnQsCiAgICAgdmlydHVhbCBi
b29sIHNob3VsZEFwcGx5U3R5bGUoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHN0eWxlLCBjb25z
dCBXZWJLaXQ6OldlYlJhbmdlJik7CiAgICAgdmlydHVhbCBib29sIGlzU21hcnRJbnNlcnREZWxl
dGVFbmFibGVkKCk7CiAgICAgdmlydHVhbCBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNl
RW5hYmxlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKGJvb2wgaXNTZWxlY3Rpb25FbXB0eSk7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRlbnRzKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEVu
ZEVkaXRpbmcoKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlQ3VycmVudEtleWJvYXJkRXZlbnQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgcnVuTW9kYWxBbGVydERpYWxvZyhXZWJLaXQ6OldlYkZyYW1l
KiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgcnVuTW9kYWxD
b25maXJtRGlhbG9nKFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179888</attachid>
            <date>2012-12-17 23:59:42 -0800</date>
            <delta_ts>2012-12-18 00:07:46 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-105013-20121218085658.patch</filename>
            <type>text/plain</type>
            <size>41880</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3OTkxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjViOGU4Y2YxYTk2NjkxMjMzMGQ4ODBhODk3MTY4YjZk
OGQ5NDViYS4uMGI4MDQ2YTE5Nzg1YTA4ZGRjNDUxZDJiZDBlYjM2ZTYxNWIzOWU4NCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDky
IEBACisyMDEyLTEyLTE0ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBlZGl0aW5nIGNhbGxiYWNrIGR1bXBpbmcgdG8gdGhl
IFdlYlRlc3RQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA1MDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgorCisgICAg
ICAgIFRvIGRlY2lkZSB3aGV0aGVyIG9yIG5vdCB0byBkdW1wIHRoZSBlZGl0aW5nIGNhbGxiYWNr
cywgdGhlIFdlYlRlc3RQcm94eQorICAgICAgICBuZWVkcyB0byBxdWVyeSB0aGUgVGVzdFJ1bm5l
ci4gRm9yIHRoaXMgcHVycG9zZSwgSSBpbnRyb2R1Y2UgYQorICAgICAgICBXZWJUZXN0UnVubmVy
IGNsYXNzIHRoYXQganVzdCBleHBvc2VzIHRoZSBzaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcwor
ICAgICAgICBtZXRob2QuIEluIGNvbnRyYXN0IHRvIGUuZy4gV2ViRXZlbnRTZW5kZXIsIHRoZSBX
ZWJUZXN0UnVubmVyIGlzIGp1c3QKKyAgICAgICAgYW4gaW50ZXJmYWNlLCBhbmQgaXQgaXMgbm90
IG93bmVkIGJ5IHRoZSBXZWJUZXN0SW50ZXJmYWNlcywgYnV0IHRoZQorICAgICAgICBlbWJlZGRl
ciBvZiB0aGUgVGVzdFJ1bm5lciBsaWJyYXJ5IG11c3QgcHJvdmlkZSBpdC4gVGhpcyB3aWxsIGNo
YW5nZQorICAgICAgICBvbmNlIGFsbCBUZXN0UnVubmVyIG1ldGhvZHMgYXJlIGluIHRoZSBsaWJy
YXJ5LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcDoKKyAgICAg
ICAgKERSVFRlc3RSdW5uZXI6OkRSVFRlc3RSdW5uZXIpOgorICAgICAgICAoRFJUVGVzdFJ1bm5l
cjo6cmVzZXQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKERSVFRlc3RSdW5uZXIpOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcjo6
dGFza0xpc3QpOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjp0YXNrTGlzdCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
VGVzdEludGVyZmFjZXMuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2Vi
VGVzdEludGVyZmFjZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFByb3h5QmFzZSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OnNob3VsZEJlZ2luRWRpdGluZyk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OnNob3VsZEVuZEVkaXRpbmcpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5OjpzaG91bGRJbnNlcnROb2RlKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eTo6c2hvdWxkSW5zZXJ0VGV4dCk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFu
Z2UpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5OjpzaG91bGREZWxldGVS
YW5nZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OnNob3VsZEFwcGx5
U3R5bGUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5OjpkaWRCZWdpbkVk
aXRpbmcpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5OjpkaWRDaGFuZ2VT
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5OjpkaWRDaGFu
Z2VDb250ZW50cyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OmRpZEVu
ZEVkaXRpbmcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
cHVibGljL1dlYlRlc3RSdW5uZXIuaDogQ29waWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaC4KKyAgICAgICAg
KFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFJ1bm5lcjo6
c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpU
ZXN0UnVubmVyOjp+VGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OlRlc3RSdW5uZXI6OnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OmR1bXBFZGl0aW5nQ2FsbGJhY2tzKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmg6
CisgICAgICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6OnRlc3RSdW5uZXIpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFjZXM6OkludGVybmFsOjpzZXRUZXN0UnVu
bmVyKToKKyAgICAgICAgKFdlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6OkludGVybmFsKToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzOjp0ZXN0UnVubmVyKToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdElu
dGVyZmFjZXM6OnNldFRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyOjpXZWJUZXN0UHJveHlCYXNlOjpwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbik6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQ
cm94eUJhc2U6OnNob3VsZEJlZ2luRWRpdGluZyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpX
ZWJUZXN0UHJveHlCYXNlOjpzaG91bGRFbmRFZGl0aW5nKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRlc3RQcm94eUJhc2U6OnNob3VsZEluc2VydE5vZGUpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6c2hvdWxkSW5zZXJ0VGV4dCk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdl
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnNob3VsZERlbGV0
ZVJhbmdlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnNob3Vs
ZEFwcGx5U3R5bGUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6
ZGlkQmVnaW5FZGl0aW5nKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJh
c2U6OmRpZENoYW5nZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0
UHJveHlCYXNlOjpkaWRDaGFuZ2VDb250ZW50cyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpX
ZWJUZXN0UHJveHlCYXNlOjpkaWRFbmRFZGl0aW5nKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwOgorICAgICAgICAoVGVzdFNoZWxsOjppbml0aWFsaXpl
KToKKyAgICAgICAgKFRlc3RTaGVsbDo6Y3JlYXRlTmV3V2luZG93KToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9z
dDo6c2hvdWxkQmVnaW5FZGl0aW5nKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpzaG91bGRFbmRF
ZGl0aW5nKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpzaG91bGRJbnNlcnROb2RlKToKKyAgICAg
ICAgKFdlYlZpZXdIb3N0OjpzaG91bGRJbnNlcnRUZXh0KToKKyAgICAgICAgKFdlYlZpZXdIb3N0
OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpzaG91
bGREZWxldGVSYW5nZSk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6c2hvdWxkQXBwbHlTdHlsZSk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKyAgICAg
ICAgKFdlYlZpZXdIb3N0KToKKwogMjAxMi0xMi0xNyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFm
ZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHVuaXQgdGVzdCBza2lwcGlu
Zy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IDNiZTNmMmNj
NzIxMDA5YWE3YWNiZmNlZDg3Njk4NzVlMzAyNDA0NWYuLjY4MWMyMmU0OWVlZDViMzNkYjQ4ZGNl
YjRlNjA4MTExYWI5YjhmODIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUu
Z3lwaQpAQCAtNjgsNiArNjgsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIv
cHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYlRlc3RQbHVnaW4uaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rl
c3RSdW5uZXIvcHVibGljL1dlYlRlc3RSdW5uZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5jcHAnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
Q2hyb21pdW0uaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudENocm9taXVtLmNwcCcsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCmluZGV4IGRmOTZjZDgxNzA2NGUzY2RjYmMyNDk3
ODY5MmY0NmZlN2M0NmVjM2MuLjA0OWE0M2ZlM2Q1ZDAxNjYxNWY0N2NjYmZjY2NjNGE2MDAyZjY2
MzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5u
ZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIu
Y3BwCkBAIC0xMzQsNyArMTM0LDYgQEAgRFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5lcihUZXN0
U2hlbGwqIHNoZWxsKQogICAgIGJpbmRNZXRob2QoImR1bXBCYWNrRm9yd2FyZExpc3QiLCAmRFJU
VGVzdFJ1bm5lcjo6ZHVtcEJhY2tGb3J3YXJkTGlzdCk7CiAgICAgYmluZE1ldGhvZCgiZHVtcENo
aWxkRnJhbWVzQXNUZXh0IiwgJkRSVFRlc3RSdW5uZXI6OmR1bXBDaGlsZEZyYW1lc0FzVGV4dCk7
CiAgICAgYmluZE1ldGhvZCgiZHVtcENoaWxkRnJhbWVTY3JvbGxQb3NpdGlvbnMiLCAmRFJUVGVz
dFJ1bm5lcjo6ZHVtcENoaWxkRnJhbWVTY3JvbGxQb3NpdGlvbnMpOwotICAgIGJpbmRNZXRob2Qo
ImR1bXBFZGl0aW5nQ2FsbGJhY2tzIiwgJkRSVFRlc3RSdW5uZXI6OmR1bXBFZGl0aW5nQ2FsbGJh
Y2tzKTsKICAgICBiaW5kTWV0aG9kKCJkdW1wRnJhbWVMb2FkQ2FsbGJhY2tzIiwgJkRSVFRlc3RS
dW5uZXI6OmR1bXBGcmFtZUxvYWRDYWxsYmFja3MpOwogICAgIGJpbmRNZXRob2QoImR1bXBQcm9n
cmVzc0ZpbmlzaGVkQ2FsbGJhY2siLCAmRFJUVGVzdFJ1bm5lcjo6ZHVtcFByb2dyZXNzRmluaXNo
ZWRDYWxsYmFjayk7CiAgICAgYmluZE1ldGhvZCgiZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRD
YWxsYmFja3MiLCAmRFJUVGVzdFJ1bm5lcjo6ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxs
YmFja3MpOwpAQCAtMjc3LDEyICsyNzYsNiBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OmR1bXBBc1Rl
eHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlcwogICAg
IHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCi12b2lkIERSVFRlc3RSdW5uZXI6OmR1bXBFZGl0aW5n
Q2FsbGJhY2tzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsK
LSAgICBtX2R1bXBFZGl0aW5nQ2FsbGJhY2tzID0gdHJ1ZTsKLSAgICByZXN1bHQtPnNldE51bGwo
KTsKLX0KLQogdm9pZCBEUlRUZXN0UnVubmVyOjpkdW1wQmFja0ZvcndhcmRMaXN0KGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBtX2R1bXBCYWNrRm9y
d2FyZExpc3QgPSB0cnVlOwpAQCAtNTQ4LDcgKzU0MSw2IEBAIHZvaWQgRFJUVGVzdFJ1bm5lcjo6
cmVzZXQoKQogICAgIG1fZHVtcEFzVGV4dCA9IGZhbHNlOwogICAgIG1fZHVtcEFzQXVkaW8gPSBm
YWxzZTsKICAgICBtX2R1bXBDcmVhdGVWaWV3ID0gZmFsc2U7Ci0gICAgbV9kdW1wRWRpdGluZ0Nh
bGxiYWNrcyA9IGZhbHNlOwogICAgIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrcyA9IGZhbHNlOwog
ICAgIG1fZHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFjayA9IGZhbHNlOwogICAgIG1fZHVtcFVz
ZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaAppbmRleCBjMTY2YzdkYTNkOTI0MjU3YjEw
NWI3YjNjNWM0MWM4OTcyNTRhYzk0Li5jMTM3ZGZhNjk5MzU5MzcwMGRkNjY4YWU1ZmE1ZjZkOGRh
YmVmZTU5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0
UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5l
ci5oCkBAIC02NSw2ICs2NSw4IEBAIGNsYXNzIFRlc3RTaGVsbDsKIAogdXNpbmcgV2ViVGVzdFJ1
bm5lcjo6Q3BwQXJndW1lbnRMaXN0OwogdXNpbmcgV2ViVGVzdFJ1bm5lcjo6Q3BwVmFyaWFudDsK
K3VzaW5nIFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s7Cit1c2luZyBXZWJUZXN0UnVubmVy
OjpXZWJUYXNrTGlzdDsKIAogY2xhc3MgRFJUVGVzdFJ1bm5lciA6IHB1YmxpYyBXZWJUZXN0UnVu
bmVyOjpUZXN0UnVubmVyIHsKIHB1YmxpYzoKQEAgLTcyLDcgKzc0LDcgQEAgcHVibGljOgogICAg
IC8vIG9iamVjdC4KICAgICBEUlRUZXN0UnVubmVyKFRlc3RTaGVsbCopOwogCi0gICAgfkRSVFRl
c3RSdW5uZXIoKTsKKyAgICB2aXJ0dWFsIH5EUlRUZXN0UnVubmVyKCk7CiAKICAgICAvLyBUaGlz
IGZ1bmN0aW9uIHNldHMgYSBmbGFnIHRoYXQgdGVsbHMgdGhlIHRlc3Rfc2hlbGwgdG8gZHVtcCBw
YWdlcyBhcwogICAgIC8vIHBsYWluIHRleHQsIHJhdGhlciB0aGFuIGFzIGEgdGV4dCByZXByZXNl
bnRhdGlvbiBvZiB0aGUgcmVuZGVyZXIncyBzdGF0ZS4KQEAgLTgwLDExICs4Miw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGR1bXBBc1RleHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBzZXRzIGEgZmxhZyB0aGF0IHRlbGxzIHRoZSB0
ZXN0X3NoZWxsIHRvIHByaW50IGEgbGluZSBvZgotICAgIC8vIGRlc2NyaXB0aXZlIHRleHQgZm9y
IGVhY2ggZWRpdGluZyBjb21tYW5kLiBJdCB0YWtlcyBubyBhcmd1bWVudHMsIGFuZAotICAgIC8v
IGlnbm9yZXMgYW55IHRoYXQgbWF5IGJlIHByZXNlbnQuCi0gICAgdm9pZCBkdW1wRWRpdGluZ0Nh
bGxiYWNrcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0KLSAgICAvLyBU
aGlzIGZ1bmN0aW9uIHNldHMgYSBmbGFnIHRoYXQgdGVsbHMgdGhlIHRlc3Rfc2hlbGwgdG8gcHJp
bnQgYSBsaW5lIG9mCiAgICAgLy8gZGVzY3JpcHRpdmUgdGV4dCBmb3IgZWFjaCBmcmFtZSBsb2Fk
IGNhbGxiYWNrLiBJdCB0YWtlcyBubyBhcmd1bWVudHMsIGFuZAogICAgIC8vIGlnbm9yZXMgYW55
IHRoYXQgbWF5IGJlIHByZXNlbnQuCiAgICAgdm9pZCBkdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKQEAgLTI5NSw3ICsyOTIsNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGREdW1wQXNBdWRpbyhib29sIGR1bXBBc0F1ZGlvKSB7
IG1fZHVtcEFzQXVkaW8gPSBkdW1wQXNBdWRpbzsgfSAKICAgICBib29sIHNob3VsZER1bXBBc1Rl
eHQoKSB7IHJldHVybiBtX2R1bXBBc1RleHQ7IH0KICAgICB2b2lkIHNldFNob3VsZER1bXBBc1Rl
eHQoYm9vbCB2YWx1ZSkgeyBtX2R1bXBBc1RleHQgPSB2YWx1ZTsgfQotICAgIGJvb2wgc2hvdWxk
RHVtcEVkaXRpbmdDYWxsYmFja3MoKSB7IHJldHVybiBtX2R1bXBFZGl0aW5nQ2FsbGJhY2tzOyB9
CiAgICAgYm9vbCBzaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkgeyByZXR1cm4gbV9kdW1w
RnJhbWVMb2FkQ2FsbGJhY2tzOyB9CiAgICAgdm9pZCBzZXRTaG91bGREdW1wRnJhbWVMb2FkQ2Fs
bGJhY2tzKGJvb2wgdmFsdWUpIHsgbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzID0gdmFsdWU7IH0K
ICAgICBib29sIHNob3VsZER1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2soKSB7IHJldHVybiBt
X2R1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2s7IH0KQEAgLTM1Nyw3ICszNTMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBydW4oVGVzdFNoZWxsKikgPSAwOwogICAgIH07CiAK
LSAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90
YXNrTGlzdDsgfQorICAgIFdlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tM
aXN0OyB9CiAKICAgICBib29sIHNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5s
b2FkKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9y
ZVVubG9hZDsgfQogCkBAIC0zODAsMzAgKzM3NiwzMCBAQCBwcml2YXRlOgogCiAgICAgICAgIHZv
aWQgc2V0RnJvemVuKGJvb2wgZnJvemVuKSB7IG1fZnJvemVuID0gZnJvemVuOyB9CiAgICAgICAg
IGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIG1fcXVldWUuaXNFbXB0eSgpOyB9Ci0gICAgICAgIFdl
YlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0
OyB9CisgICAgICAgIFdlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0
OyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHByb2Nlc3NXb3JrKCk7Ci0gICAgICAg
IGNsYXNzIFdvcmtRdWV1ZVRhc2s6IHB1YmxpYyBXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNr
PFdvcmtRdWV1ZT4geworICAgICAgICBjbGFzcyBXb3JrUXVldWVUYXNrOiBwdWJsaWMgV2ViTWV0
aG9kVGFzazxXb3JrUXVldWU+IHsKICAgICAgICAgcHVibGljOgotICAgICAgICAgICAgV29ya1F1
ZXVlVGFzayhXb3JrUXVldWUqIG9iamVjdCk6IFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8
V29ya1F1ZXVlPihvYmplY3QpIHsgfQorICAgICAgICAgICAgV29ya1F1ZXVlVGFzayhXb3JrUXVl
dWUqIG9iamVjdCk6IFdlYk1ldGhvZFRhc2s8V29ya1F1ZXVlPihvYmplY3QpIHsgfQogICAgICAg
ICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7IG1fb2JqZWN0LT5wcm9jZXNzV29yaygp
OyB9CiAgICAgICAgIH07CiAKLSAgICAgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QgbV90
YXNrTGlzdDsKKyAgICAgICAgV2ViVGFza0xpc3QgbV90YXNrTGlzdDsKICAgICAgICAgRGVxdWU8
V29ya0l0ZW0qPiBtX3F1ZXVlOwogICAgICAgICBib29sIG1fZnJvemVuOwogICAgICAgICBEUlRU
ZXN0UnVubmVyKiBtX2NvbnRyb2xsZXI7CiAgICAgfTsKICAgICB2b2lkIGNvbXBsZXRlTm90aWZ5
RG9uZShib29sIGlzVGltZW91dCk7Ci0gICAgY2xhc3MgTm90aWZ5RG9uZVRpbWVkT3V0VGFzazog
cHVibGljIFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8RFJUVGVzdFJ1bm5lcj4geworICAg
IGNsYXNzIE5vdGlmeURvbmVUaW1lZE91dFRhc2s6IHB1YmxpYyBXZWJNZXRob2RUYXNrPERSVFRl
c3RSdW5uZXI+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE5vdGlmeURvbmVUaW1lZE91dFRhc2so
RFJUVGVzdFJ1bm5lciogb2JqZWN0KTogV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxEUlRU
ZXN0UnVubmVyPihvYmplY3QpIHsgfQorICAgICAgICBOb3RpZnlEb25lVGltZWRPdXRUYXNrKERS
VFRlc3RSdW5uZXIqIG9iamVjdCk6IFdlYk1ldGhvZFRhc2s8RFJUVGVzdFJ1bm5lcj4ob2JqZWN0
KSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7IG1fb2JqZWN0LT5jb21w
bGV0ZU5vdGlmeURvbmUodHJ1ZSk7IH0KICAgICB9OwogCiAgICAgLy8gVXNlZCBmb3IgdGVzdCB0
aW1lb3V0cy4KLSAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OworICAg
IFdlYlRhc2tMaXN0IG1fdGFza0xpc3Q7CiAKICAgICAvLyBOb24tb3duaW5nIHBvaW50ZXIuIFRo
ZSBEUlRUZXN0UnVubmVyIGlzIG93bmVkIGJ5IHRoZSBob3N0LgogICAgIFRlc3RTaGVsbCogbV9z
aGVsbDsKQEAgLTQxNSwxMCArNDExLDYgQEAgcHJpdmF0ZToKICAgICAvLyBJZiB0cnVlLCB0aGUg
dGVzdF9zaGVsbCB3aWxsIG91dHB1dCBhIGJhc2U2NCBlbmNvZGVkIFdBVkUgZmlsZS4KICAgICBi
b29sIG1fZHVtcEFzQXVkaW87CiAKLSAgICAvLyBJZiB0cnVlLCB0aGUgdGVzdF9zaGVsbCB3aWxs
IHdyaXRlIGEgZGVzY3JpcHRpdmUgbGluZSBmb3IgZWFjaCBlZGl0aW5nCi0gICAgLy8gY29tbWFu
ZC4KLSAgICBib29sIG1fZHVtcEVkaXRpbmdDYWxsYmFja3M7Ci0KICAgICAvLyBJZiB0cnVlLCB0
aGUgdGVzdF9zaGVsbCB3aWxsIGRyYXcgdGhlIGJvdW5kcyBvZiB0aGUgY3VycmVudCBzZWxlY3Rp
b24gcmVjdAogICAgIC8vIHRha2luZyBwb3NzaWJsZSB0cmFuc2Zvcm1zIG9mIHRoZSBzZWxlY3Rp
b24gcmVjdCBpbnRvIGFjY291bnQuCiAgICAgYm9vbCBtX2R1bXBTZWxlY3Rpb25SZWN0OwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViVGVzdEludGVyZmFjZXMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgKaW5kZXggNTI1MjBhNmI1YTIxN2E3ZjI1
NjY4MDczMTgxY2U2ODdiNDNkMTU2My4uZDhkOGIzZmQ3YTA0MThhNDIxMTBmZTllODVmM2I3ZjM2
NjZlMDdkMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oCkBAIC00MSw2
ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIGNsYXNzIFdlYkFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOwogY2xhc3MgV2ViRXZlbnRTZW5kZXI7CiBjbGFzcyBXZWJUZXN0RGVsZWdh
dGU7CitjbGFzcyBXZWJUZXN0UnVubmVyOwogCiBjbGFzcyBXZWJUZXN0SW50ZXJmYWNlcyB7CiBw
dWJsaWM6CkBAIC01NCw2ICs1NSw5IEBAIHB1YmxpYzoKIAogICAgIFdlYkFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpOwogICAgIFdlYkV2ZW50U2VuZGVy
KiBldmVudFNlbmRlcigpOworICAgIFdlYlRlc3RSdW5uZXIqIHRlc3RSdW5uZXIoKTsKKyAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSBUZXN0UnVubmVyIGlzIGNvbXBsZXRlLgorICAgIHZv
aWQgc2V0VGVzdFJ1bm5lcihXZWJUZXN0UnVubmVyKik7CiAKIHByaXZhdGU6CiAgICAgY2xhc3Mg
SW50ZXJuYWw7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUZXN0UHJveHkuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oCmluZGV4IGI0YTU5M2NlZWEwNWEx
NWYwODJhN2Q0YWM0MDEyMDgzMWEzMzM2NWIuLjUyMGM2MjBmNTE3YTRlMGM1N2FmNjFlNmRlNTc2
ODQ1NGY4MGVhZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oCkBAIC0zNCwyMSArMzQs
MjcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUmVjdC5oIgogI2lu
Y2x1ZGUgIldlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bi5oIgogI2luY2x1ZGUgIldlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRHJhZ09wZXJhdGlvbi5o
IgorI2luY2x1ZGUgIldlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRWRpdGluZ0FjdGlvbi5oIgog
I2luY2x1ZGUgIldlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTmF2aWdhdGlvblBvbGljeS5oIgor
I2luY2x1ZGUgIldlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dEFmZmluaXR5LmgiCiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIFdl
YkRyYWdEYXRhOwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbWFnZTsKK2NsYXNzIFdlYk5v
ZGU7CiBzdHJ1Y3QgV2ViUG9pbnQ7CitjbGFzcyBXZWJSYW5nZTsKIHN0cnVjdCBXZWJTaXplOwor
Y2xhc3MgV2ViU3RyaW5nOwogfQogCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIGNsYXNz
IFdlYlRlc3REZWxlZ2F0ZTsKIGNsYXNzIFdlYlRlc3RJbnRlcmZhY2VzOworY2xhc3MgV2ViVGVz
dFJ1bm5lcjsKIAogY2xhc3MgV2ViVGVzdFByb3h5QmFzZSB7CiBwdWJsaWM6CkBAIC03MSw2ICs3
NywxNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaWRBdXRvUmVzaXplKGNvbnN0IFdlYktpdDo6
V2ViU2l6ZSYpOwogICAgIHZvaWQgcG9zdEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oY29uc3Qg
V2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiwgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5
Tm90aWZpY2F0aW9uKTsKICAgICB2b2lkIHN0YXJ0RHJhZ2dpbmcoV2ViS2l0OjpXZWJGcmFtZSos
IGNvbnN0IFdlYktpdDo6V2ViRHJhZ0RhdGEmLCBXZWJLaXQ6OldlYkRyYWdPcGVyYXRpb25zTWFz
aywgY29uc3QgV2ViS2l0OjpXZWJJbWFnZSYsIGNvbnN0IFdlYktpdDo6V2ViUG9pbnQmKTsKKyAg
ICBib29sIHNob3VsZEJlZ2luRWRpdGluZyhjb25zdCBXZWJLaXQ6OldlYlJhbmdlJik7CisgICAg
Ym9vbCBzaG91bGRFbmRFZGl0aW5nKGNvbnN0IFdlYktpdDo6V2ViUmFuZ2UmKTsKKyAgICBib29s
IHNob3VsZEluc2VydE5vZGUoY29uc3QgV2ViS2l0OjpXZWJOb2RlJiwgY29uc3QgV2ViS2l0OjpX
ZWJSYW5nZSYsIFdlYktpdDo6V2ViRWRpdGluZ0FjdGlvbik7CisgICAgYm9vbCBzaG91bGRJbnNl
cnRUZXh0KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiB0ZXh0LCBjb25zdCBXZWJLaXQ6OldlYlJh
bmdlJiwgV2ViS2l0OjpXZWJFZGl0aW5nQWN0aW9uKTsKKyAgICBib29sIHNob3VsZENoYW5nZVNl
bGVjdGVkUmFuZ2UoY29uc3QgV2ViS2l0OjpXZWJSYW5nZSYgZnJvbVJhbmdlLCBjb25zdCBXZWJL
aXQ6OldlYlJhbmdlJiB0b1JhbmdlLCBXZWJLaXQ6OldlYlRleHRBZmZpbml0eSwgYm9vbCBzdGls
bFNlbGVjdGluZyk7CisgICAgYm9vbCBzaG91bGREZWxldGVSYW5nZShjb25zdCBXZWJLaXQ6Oldl
YlJhbmdlJik7CisgICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKGNvbnN0IFdlYktpdDo6V2ViU3Ry
aW5nJiBzdHlsZSwgY29uc3QgV2ViS2l0OjpXZWJSYW5nZSYpOworICAgIHZvaWQgZGlkQmVnaW5F
ZGl0aW5nKCk7CisgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oYm9vbCBpc0VtcHR5U2VsZWN0
aW9uKTsKKyAgICB2b2lkIGRpZENoYW5nZUNvbnRlbnRzKCk7CisgICAgdm9pZCBkaWRFbmRFZGl0
aW5nKCk7CiAKIHByaXZhdGU6CiAgICAgV2ViVGVzdEludGVyZmFjZXMqIG1fdGVzdEludGVyZmFj
ZXM7CkBAIC0xMzYsNiArMTUzLDYxIEBAIHB1YmxpYzoKICAgICAgICAgV2ViVGVzdFByb3h5QmFz
ZTo6c3RhcnREcmFnZ2luZyhmcmFtZSwgZGF0YSwgbWFzaywgaW1hZ2UsIHBvaW50KTsKICAgICAg
ICAgV2ViVmlld0NsaWVudEltcGw6OnN0YXJ0RHJhZ2dpbmcoZnJhbWUsIGRhdGEsIG1hc2ssIGlt
YWdlLCBwb2ludCk7CiAgICAgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmco
Y29uc3QgV2ViS2l0OjpXZWJSYW5nZSYgcmFuZ2UpCisgICAgeworICAgICAgICBXZWJUZXN0UHJv
eHlCYXNlOjpzaG91bGRCZWdpbkVkaXRpbmcocmFuZ2UpOworICAgICAgICByZXR1cm4gV2ViVmll
d0NsaWVudEltcGw6OnNob3VsZEJlZ2luRWRpdGluZyhyYW5nZSk7CisgICAgfQorICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRFbmRFZGl0aW5nKGNvbnN0IFdlYktpdDo6V2ViUmFuZ2UmIHJhbmdlKQor
ICAgIHsKKyAgICAgICAgV2ViVGVzdFByb3h5QmFzZTo6c2hvdWxkRW5kRWRpdGluZyhyYW5nZSk7
CisgICAgICAgIHJldHVybiBXZWJWaWV3Q2xpZW50SW1wbDo6c2hvdWxkRW5kRWRpdGluZyhyYW5n
ZSk7CisgICAgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKGNvbnN0IFdlYktp
dDo6V2ViTm9kZSYgbm9kZSwgY29uc3QgV2ViS2l0OjpXZWJSYW5nZSYgcmFuZ2UsIFdlYktpdDo6
V2ViRWRpdGluZ0FjdGlvbiBhY3Rpb24pCisgICAgeworICAgICAgICBXZWJUZXN0UHJveHlCYXNl
OjpzaG91bGRJbnNlcnROb2RlKG5vZGUsIHJhbmdlLCBhY3Rpb24pOworICAgICAgICByZXR1cm4g
V2ViVmlld0NsaWVudEltcGw6OnNob3VsZEluc2VydE5vZGUobm9kZSwgcmFuZ2UsIGFjdGlvbik7
CisgICAgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnRUZXh0KGNvbnN0IFdlYktpdDo6
V2ViU3RyaW5nJiB0ZXh0LCBjb25zdCBXZWJLaXQ6OldlYlJhbmdlJiByYW5nZSwgV2ViS2l0OjpX
ZWJFZGl0aW5nQWN0aW9uIGFjdGlvbikKKyAgICB7CisgICAgICAgIFdlYlRlc3RQcm94eUJhc2U6
OnNob3VsZEluc2VydFRleHQodGV4dCwgcmFuZ2UsIGFjdGlvbik7CisgICAgICAgIHJldHVybiBX
ZWJWaWV3Q2xpZW50SW1wbDo6c2hvdWxkSW5zZXJ0VGV4dCh0ZXh0LCByYW5nZSwgYWN0aW9uKTsK
KyAgICB9CisgICAgdmlydHVhbCBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3Qg
V2ViS2l0OjpXZWJSYW5nZSYgZnJvbVJhbmdlLCBjb25zdCBXZWJLaXQ6OldlYlJhbmdlJiB0b1Jh
bmdlLCBXZWJLaXQ6OldlYlRleHRBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGlu
ZykKKyAgICB7CisgICAgICAgIFdlYlRlc3RQcm94eUJhc2U6OnNob3VsZENoYW5nZVNlbGVjdGVk
UmFuZ2UoZnJvbVJhbmdlLCB0b1JhbmdlLCBhZmZpbml0eSwgc3RpbGxTZWxlY3RpbmcpOworICAg
ICAgICByZXR1cm4gV2ViVmlld0NsaWVudEltcGw6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2Uo
ZnJvbVJhbmdlLCB0b1JhbmdlLCBhZmZpbml0eSwgc3RpbGxTZWxlY3RpbmcpOworICAgIH0KKyAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoY29uc3QgV2ViS2l0OjpXZWJSYW5nZSYg
cmFuZ2UpCisgICAgeworICAgICAgICBXZWJUZXN0UHJveHlCYXNlOjpzaG91bGREZWxldGVSYW5n
ZShyYW5nZSk7CisgICAgICAgIHJldHVybiBXZWJWaWV3Q2xpZW50SW1wbDo6c2hvdWxkRGVsZXRl
UmFuZ2UocmFuZ2UpOworICAgIH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShj
b25zdCBXZWJLaXQ6OldlYlN0cmluZyYgc3R5bGUsIGNvbnN0IFdlYktpdDo6V2ViUmFuZ2UmIHJh
bmdlKQorICAgIHsKKyAgICAgICAgV2ViVGVzdFByb3h5QmFzZTo6c2hvdWxkQXBwbHlTdHlsZShz
dHlsZSwgcmFuZ2UpOworICAgICAgICByZXR1cm4gV2ViVmlld0NsaWVudEltcGw6OnNob3VsZEFw
cGx5U3R5bGUoc3R5bGUsIHJhbmdlKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2lu
RWRpdGluZygpCisgICAgeworICAgICAgICBXZWJUZXN0UHJveHlCYXNlOjpkaWRCZWdpbkVkaXRp
bmcoKTsKKyAgICAgICAgV2ViVmlld0NsaWVudEltcGw6OmRpZEJlZ2luRWRpdGluZygpOworICAg
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKGJvb2wgaXNFbXB0eVNlbGVj
dGlvbikKKyAgICB7CisgICAgICAgIFdlYlRlc3RQcm94eUJhc2U6OmRpZENoYW5nZVNlbGVjdGlv
bihpc0VtcHR5U2VsZWN0aW9uKTsKKyAgICAgICAgV2ViVmlld0NsaWVudEltcGw6OmRpZENoYW5n
ZVNlbGVjdGlvbihpc0VtcHR5U2VsZWN0aW9uKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZUNvbnRlbnRzKCkKKyAgICB7CisgICAgICAgIFdlYlRlc3RQcm94eUJhc2U6OmRpZENo
YW5nZUNvbnRlbnRzKCk7CisgICAgICAgIFdlYlZpZXdDbGllbnRJbXBsOjpkaWRDaGFuZ2VDb250
ZW50cygpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpCisgICAgewor
ICAgICAgICBXZWJUZXN0UHJveHlCYXNlOjpkaWRFbmRFZGl0aW5nKCk7CisgICAgICAgIFdlYlZp
ZXdDbGllbnRJbXBsOjpkaWRFbmRFZGl0aW5nKCk7CisgICAgfQogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVz
dFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJs
aWMvV2ViVGVzdFJ1bm5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhNmIwMDEzODgzZDY5NTFjMjIyZjIxOGZi
NWFmZWQ1M2JlNjRkZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UnVubmVyLmgKQEAgLTAsMCArMSw0NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViVGVzdFJ1bm5lcl9oCisjZGVmaW5lIFdlYlRlc3RSdW5uZXJfaAorCituYW1l
c3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKKy8vIEZJWE1FOiBPbmNlIHRoZSBUZXN0UnVubmVyIGNs
YXNzIGlzIGNvbXBsZXRlLCB0aGlzIGNsYXNzIHNob3VsZCB0YWtlIGEKKy8vIFRlc3RSdW5uZXIq
IGFzIGN0b3IgYXJndW1lbnQsIGFuZCBub3QgaGF2ZSBkZWZhdWx0IGltcGxlbWVudGF0aW9ucy4K
K2NsYXNzIFdlYlRlc3RSdW5uZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRE
dW1wRWRpdGluZ0NhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cit9OworCit9CisK
KyNlbmRpZiAvLyBXZWJUZXN0UnVubmVyX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKaW5kZXggMDc1
ZDYzYWZkYTUwNjhmMjAyOTRiMDkwOWVjYTViMzk2MmJlMWM4ZC4uYTJjMGEwMDRjNzg4YWUxZTQ1
OTE4MGYwMGE3NGQwMDE5MTNmNDhkYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKQEAgLTExNCw2
ICsxMTQsOSBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkKICAgICBiaW5kTWV0aG9kKCJvdmVy
cmlkZVByZWZlcmVuY2UiLCAmVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKTsKICAgICBi
aW5kTWV0aG9kKCJzZXRQbHVnaW5zRW5hYmxlZCIsICZUZXN0UnVubmVyOjpzZXRQbHVnaW5zRW5h
YmxlZCk7CiAKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1vZGlmeSB0aGUgc3RhdGUgb2YgdGhlIFRl
c3RSdW5uZXIuCisgICAgYmluZE1ldGhvZCgiZHVtcEVkaXRpbmdDYWxsYmFja3MiLCAmVGVzdFJ1
bm5lcjo6ZHVtcEVkaXRpbmdDYWxsYmFja3MpOworCiAgICAgLy8gUHJvcGVydGllcy4KICAgICBi
aW5kUHJvcGVydHkoIndvcmtlclRocmVhZENvdW50IiwgJlRlc3RSdW5uZXI6OndvcmtlclRocmVh
ZENvdW50KTsKICAgICBiaW5kUHJvcGVydHkoImdsb2JhbEZsYWciLCAmbV9nbG9iYWxGbGFnKTsK
QEAgLTE1MSw2ICsxNTQsMTAgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigpCiAgICAgYmluZEZh
bGxiYWNrTWV0aG9kKCZUZXN0UnVubmVyOjpmYWxsYmFja01ldGhvZCk7CiB9CiAKK1Rlc3RSdW5u
ZXI6On5UZXN0UnVubmVyKCkKK3sKK30KKwogdm9pZCBUZXN0UnVubmVyOjpyZXNldCgpCiB7CiAg
ICAgaWYgKG1fd2ViVmlldykgewpAQCAtMTY5LDEyICsxNzYsMTkgQEAgdm9pZCBUZXN0UnVubmVy
OjpyZXNldCgpCiAgICAgV2ViRm9udFJlbmRlcmluZzo6c2V0U3VicGl4ZWxQb3NpdGlvbmluZyhm
YWxzZSk7CiAjZW5kaWYKIAorICAgIG1fZHVtcEVkaXRpbmdDYWxsYmFja3MgPSBmYWxzZTsKKwog
ICAgIG1fZ2xvYmFsRmxhZy5zZXQoZmFsc2UpOwogICAgIG1fcGxhdGZvcm1OYW1lLnNldCgiY2hy
b21pdW0iKTsKIAogICAgIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbiA9IFdlYlVSTCgpOwogfQog
Citib29sIFRlc3RSdW5uZXI6OnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9kdW1wRWRpdGluZ0NhbGxiYWNrczsKK30KKwogdm9pZCBUZXN0UnVubmVy
OjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBpZiAoYXJndW1lbnRzLnNpemUo
KSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKQpAQCAtODM0LDYgKzg0OCwxMiBAQCB2b2lk
IFRlc3RSdW5uZXI6OnNldFBsdWdpbnNFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYXJpYW50KgogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCit2b2lkIFRl
c3RSdW5uZXI6OmR1bXBFZGl0aW5nQ2FsbGJhY2tzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBtX2R1bXBFZGl0aW5nQ2FsbGJhY2tzID0gdHJ1ZTsK
KyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjp3b3JrZXJUaHJl
YWRDb3VudChDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXQoc3RhdGljX2Nh
c3Q8aW50PihXZWJXb3JrZXJJbmZvOjpkZWRpY2F0ZWRXb3JrZXJDb3VudCgpKSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0
UnVubmVyLmgKaW5kZXggMzQ1YTEzNGI5MTRiYTFhMWZlZDRlNjFmMjQ5ZjA0OTljY2NkYmIwMS4u
N2JiMmRmYjk3OWFiYTlkYjA2ODcxNTRkOTk4ZDg3ZDMxMmVjOTYxNCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuaApAQCAtMzMsNiArMzMsNyBAQAogI2RlZmluZSBUZXN0UnVubmVyX2gKIAogI2luY2x1ZGUg
IkNwcEJvdW5kQ2xhc3MuaCIKKyNpbmNsdWRlICJXZWJUZXN0UnVubmVyLmgiCiAjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDMsOSArNDQsMTAg
QEAgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCiBjbGFzcyBXZWJUZXN0RGVsZWdhdGU7CiAK
LWNsYXNzIFRlc3RSdW5uZXIgOiBwdWJsaWMgQ3BwQm91bmRDbGFzcyB7CitjbGFzcyBUZXN0UnVu
bmVyIDogcHVibGljIENwcEJvdW5kQ2xhc3MsIHB1YmxpYyBXZWJUZXN0UnVubmVyIHsKIHB1Ymxp
YzoKICAgICBUZXN0UnVubmVyKCk7CisgICAgdmlydHVhbCB+VGVzdFJ1bm5lcigpOwogCiAgICAg
Ly8gRklYTUU6IG9uY2UgRFJUVGVzdFJ1bm5lciBpcyBtb3ZlZCBlbnRpcmVseSB0byB0aGlzIGNs
YXNzLCBjaGFuZ2UgdGhpcwogICAgIC8vIG1ldGhvZCB0byB0YWtlIGEgVGVzdERlbGVnYXRlKiBp
bnN0ZWFkLgpAQCAtNTQsNiArNTYsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0KCk7CiAK
KyAgICAvLyBXZWJUZXN0UnVubmVyIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgYm9vbCBz
aG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpIGNvbnN0IE9WRVJSSURFOworCiBwcm90ZWN0ZWQ6
CiAgICAgLy8gRklYTUU6IG1ha2UgdGhlc2UgcHJpdmF0ZSBvbmNlIHRoZSBtb3ZlIGZyb20gRFJU
VGVzdFJ1bm5lciB0byBUZXN0UnVubmVyCiAgICAgLy8gaXMgY29tcGxldGUuCkBAIC0xNzMsNiAr
MTc4LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQbHVnaW5zRW5hYmxlZChjb25zdCBDcHBB
cmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAg
ICAvLyBNZXRob2RzIHRoYXQgbW9kaWZ5IHRoZSBzdGF0ZSBvZiBUZXN0UnVubmVyCisKKyAgICAv
LyBUaGlzIGZ1bmN0aW9uIHNldHMgYSBmbGFnIHRoYXQgdGVsbHMgdGhlIHRlc3Rfc2hlbGwgdG8g
cHJpbnQgYSBsaW5lIG9mCisgICAgLy8gZGVzY3JpcHRpdmUgdGV4dCBmb3IgZWFjaCBlZGl0aW5n
IGNvbW1hbmQuIEl0IHRha2VzIG5vIGFyZ3VtZW50cywgYW5kCisgICAgLy8gaWdub3JlcyBhbnkg
dGhhdCBtYXkgYmUgcHJlc2VudC4KKyAgICB2b2lkIGR1bXBFZGl0aW5nQ2FsbGJhY2tzKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKworICAgIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwogICAgIC8vIFByb3BlcnRpZXMKICAgICB2b2lkIHdvcmtlclRocmVhZENvdW50KENwcFZhcmlh
bnQqKTsKIApAQCAtMjA0LDYgKzIxNywxMCBAQCBwcml2YXRlOgogICAgIC8vIEJvdW5kIHZhcmlh
YmxlIHRvIHJldHVybiB0aGUgbmFtZSBvZiB0aGlzIHBsYXRmb3JtIChjaHJvbWl1bSkuCiAgICAg
Q3BwVmFyaWFudCBtX3BsYXRmb3JtTmFtZTsKIAorICAgIC8vIElmIHRydWUsIHRoZSB0ZXN0X3No
ZWxsIHdpbGwgd3JpdGUgYSBkZXNjcmlwdGl2ZSBsaW5lIGZvciBlYWNoIGVkaXRpbmcKKyAgICAv
LyBjb21tYW5kLgorICAgIGJvb2wgbV9kdW1wRWRpdGluZ0NhbGxiYWNrczsKKwogICAgIFdlYlRl
c3REZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKICAgICBXZWJLaXQ6OldlYlZpZXcqIG1fd2ViVmlldzsK
IH07CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKaW5kZXggOWE4Njk1M2MzY2I4
NTM3NDBlYWE3OGJhZmZhMTg4YzRiNzI3MjhmOC4uNDNmZWVhYzM2YTI5ZDdmYzk4M2E0YmY0N2Ix
MzZhYmI1MmYyNzJmNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcApAQCAt
NTUsNiArNTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREZWxlZ2F0ZShXZWJUZXN0RGVsZWdh
dGUqKTsKICAgICBXZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciogYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIoKSB7IHJldHVybiAmbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjsgfQogICAgIFdlYkV2
ZW50U2VuZGVyKiBldmVudFNlbmRlcigpIHsgcmV0dXJuICZtX2V2ZW50U2VuZGVyOyB9CisgICAg
V2ViVGVzdFJ1bm5lciogdGVzdFJ1bm5lcigpIHsgcmV0dXJuIG1fdGVzdFJ1bm5lcjsgfQorICAg
IHZvaWQgc2V0VGVzdFJ1bm5lcihXZWJUZXN0UnVubmVyKiB0ZXN0UnVubmVyKSB7IG1fdGVzdFJ1
bm5lciA9IHRlc3RSdW5uZXI7IH0KIAogICAgIC8vIFRlc3REZWxlZ2F0ZSBpbXBsZW1lbnRhdGlv
bi4KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDb250ZXh0TWVudURhdGEoKTsKQEAgLTc0LDEyICs3
NiwxNCBAQCBwcml2YXRlOgogICAgIFRlc3RJbnRlcmZhY2VzIG1faW50ZXJmYWNlczsKICAgICBX
ZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyOwogICAg
IFdlYkV2ZW50U2VuZGVyIG1fZXZlbnRTZW5kZXI7CisgICAgV2ViVGVzdFJ1bm5lciogbV90ZXN0
UnVubmVyOwogICAgIFdlYlRlc3REZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKIH07CiAKIFdlYlRlc3RJ
bnRlcmZhY2VzOjpJbnRlcm5hbDo6SW50ZXJuYWwoKQogICAgIDogbV9hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcihtX2ludGVyZmFjZXMuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKSkKICAgICAsIG1f
ZXZlbnRTZW5kZXIobV9pbnRlcmZhY2VzLmV2ZW50U2VuZGVyKCkpCisgICAgLCBtX3Rlc3RSdW5u
ZXIoMCkKICAgICAsIG1fZGVsZWdhdGUoMCkKIHsKIH0KQEAgLTE5OSw0ICsyMDMsMTQgQEAgV2Vi
RXZlbnRTZW5kZXIqIFdlYlRlc3RJbnRlcmZhY2VzOjpldmVudFNlbmRlcigpCiAgICAgcmV0dXJu
IG1faW50ZXJuYWwtPmV2ZW50U2VuZGVyKCk7CiB9CiAKK1dlYlRlc3RSdW5uZXIqIFdlYlRlc3RJ
bnRlcmZhY2VzOjp0ZXN0UnVubmVyKCkKK3sKKyAgICByZXR1cm4gbV9pbnRlcm5hbC0+dGVzdFJ1
bm5lcigpOworfQorCit2b2lkIFdlYlRlc3RJbnRlcmZhY2VzOjpzZXRUZXN0UnVubmVyKFdlYlRl
c3RSdW5uZXIqIHRlc3RSdW5uZXIpCit7CisgICAgbV9pbnRlcm5hbC0+c2V0VGVzdFJ1bm5lcih0
ZXN0UnVubmVyKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAKaW5kZXggOTQyZjBi
Yjg4OWMwNTIzZDk3MjYzOTFiNzE0ZWZmYzEzZDM1ZjAwYS4uMGU3OTQwNmNhNDhmOWIwMmJjODFm
MzRjMjQ1MDNkNjZhMDkzYTFkYSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwCkBAIC0zNywx
NSArMzcsODIgQEAKICNpbmNsdWRlICJXZWJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRXZlbnRT
ZW5kZXIuaCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCisjaW5jbHVkZSAiV2ViUmFuZ2UuaCIKICNp
bmNsdWRlICJXZWJUZXN0RGVsZWdhdGUuaCIKICNpbmNsdWRlICJXZWJUZXN0SW50ZXJmYWNlcy5o
IgorI2luY2x1ZGUgIldlYlRlc3RSdW5uZXIuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDU3Ry
aW5nLmgiCisjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIg
ewogCituYW1lc3BhY2UgeworCit2b2lkIHByaW50Tm9kZURlc2NyaXB0aW9uKFdlYlRlc3REZWxl
Z2F0ZSogZGVsZWdhdGUsIGNvbnN0IFdlYk5vZGUmIG5vZGUsIGludCBleGNlcHRpb24pCit7Cisg
ICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICBkZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKCJFUlJP
UiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChub2RlLmlzTnVsbCgpKSB7Cisg
ICAgICAgIGRlbGVnYXRlLT5wcmludE1lc3NhZ2UoIihudWxsKSIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGRlbGVnYXRlLT5wcmludE1lc3NhZ2Uobm9kZS5ub2RlTmFtZSgpLnV0Zjgo
KS5kYXRhKCkpOworICAgIGNvbnN0IFdlYk5vZGUmIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZSgp
OworICAgIGlmICghcGFyZW50LmlzTnVsbCgpKSB7CisgICAgICAgIGRlbGVnYXRlLT5wcmludE1l
c3NhZ2UoIiA+ICIpOworICAgICAgICBwcmludE5vZGVEZXNjcmlwdGlvbihkZWxlZ2F0ZSwgcGFy
ZW50LCAwKTsKKyAgICB9Cit9CisKK3ZvaWQgcHJpbnRSYW5nZURlc2NyaXB0aW9uKFdlYlRlc3RE
ZWxlZ2F0ZSogZGVsZWdhdGUsIGNvbnN0IFdlYlJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFu
Z2UuaXNOdWxsKCkpIHsKKyAgICAgICAgZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiKG51bGwpIik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2hhciBidWZmZXJbMTAwXTsKKyAgICBzbnBy
aW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAicmFuZ2UgZnJvbSAlZCBvZiAiLCByYW5nZS5z
dGFydE9mZnNldCgpKTsKKyAgICBkZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKGJ1ZmZlcik7CisgICAg
aW50IGV4Y2VwdGlvbiA9IDA7CisgICAgV2ViTm9kZSBzdGFydE5vZGUgPSByYW5nZS5zdGFydENv
bnRhaW5lcihleGNlcHRpb24pOworICAgIHByaW50Tm9kZURlc2NyaXB0aW9uKGRlbGVnYXRlLCBz
dGFydE5vZGUsIGV4Y2VwdGlvbik7CisgICAgc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVy
KSwgIiB0byAlZCBvZiAiLCByYW5nZS5lbmRPZmZzZXQoKSk7CisgICAgZGVsZWdhdGUtPnByaW50
TWVzc2FnZShidWZmZXIpOworICAgIFdlYk5vZGUgZW5kTm9kZSA9IHJhbmdlLmVuZENvbnRhaW5l
cihleGNlcHRpb24pOworICAgIHByaW50Tm9kZURlc2NyaXB0aW9uKGRlbGVnYXRlLCBlbmROb2Rl
LCBleGNlcHRpb24pOworfQorCitzdHJpbmcgZWRpdGluZ0FjdGlvbkRlc2NyaXB0aW9uKFdlYkVk
aXRpbmdBY3Rpb24gYWN0aW9uKQoreworICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgY2FzZSBX
ZWJLaXQ6OldlYkVkaXRpbmdBY3Rpb25UeXBlZDoKKyAgICAgICAgcmV0dXJuICJXZWJWaWV3SW5z
ZXJ0QWN0aW9uVHlwZWQiOworICAgIGNhc2UgV2ViS2l0OjpXZWJFZGl0aW5nQWN0aW9uUGFzdGVk
OgorICAgICAgICByZXR1cm4gIldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWQiOworICAgIGNhc2Ug
V2ViS2l0OjpXZWJFZGl0aW5nQWN0aW9uRHJvcHBlZDoKKyAgICAgICAgcmV0dXJuICJXZWJWaWV3
SW5zZXJ0QWN0aW9uRHJvcHBlZCI7CisgICAgfQorICAgIHJldHVybiAiKFVOS05PV04gQUNUSU9O
KSI7Cit9CisKK3N0cmluZyB0ZXh0QWZmaW5pdHlEZXNjcmlwdGlvbihXZWJUZXh0QWZmaW5pdHkg
YWZmaW5pdHkpCit7CisgICAgc3dpdGNoIChhZmZpbml0eSkgeworICAgIGNhc2UgV2ViS2l0OjpX
ZWJUZXh0QWZmaW5pdHlVcHN0cmVhbToKKyAgICAgICAgcmV0dXJuICJOU1NlbGVjdGlvbkFmZmlu
aXR5VXBzdHJlYW0iOworICAgIGNhc2UgV2ViS2l0OjpXZWJUZXh0QWZmaW5pdHlEb3duc3RyZWFt
OgorICAgICAgICByZXR1cm4gIk5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIjsKKyAgICB9
CisgICAgcmV0dXJuICIoVU5LTk9XTiBBRkZJTklUWSkiOworfQorCit9CisKIFdlYlRlc3RQcm94
eUJhc2U6OldlYlRlc3RQcm94eUJhc2UoKQogICAgIDogbV90ZXN0SW50ZXJmYWNlcygwKQogICAg
ICwgbV9kZWxlZ2F0ZSgwKQpAQCAtMTk3LDcgKzI2NCw3IEBAIHZvaWQgV2ViVGVzdFByb3h5QmFz
ZTo6cG9zdEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oY29uc3QgV2ViS2l0OjpXZWJBY2Nlc3Np
YmlsCiAgICAgbV90ZXN0SW50ZXJmYWNlcy0+YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKS0+bm90
aWZpY2F0aW9uUmVjZWl2ZWQob2JqLCBub3RpZmljYXRpb25OYW1lKTsKIAogICAgIGlmIChtX3Rl
c3RJbnRlcmZhY2VzLT5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpLT5zaG91bGRMb2dBY2Nlc3Np
YmlsaXR5RXZlbnRzKCkpIHsKLSAgICAgICAgc3RkOjpzdHJpbmcgbWVzc2FnZSgiQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbiAtICIpOworICAgICAgICBzdHJpbmcgbWVzc2FnZSgiQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbiAtICIpOwogICAgICAgICBtZXNzYWdlICs9IG5vdGlmaWNhdGlvbk5h
bWU7CiAKICAgICAgICAgV2ViS2l0OjpXZWJOb2RlIG5vZGUgPSBvYmoubm9kZSgpOwpAQCAtMjIw
LDQgKzI4NywxMDkgQEAgdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpzdGFydERyYWdnaW5nKFdlYkZy
YW1lKiwgY29uc3QgV2ViRHJhZ0RhdGEmIGRhdGEsIFdlYkRyYWcKICAgICBtX3Rlc3RJbnRlcmZh
Y2VzLT5ldmVudFNlbmRlcigpLT5kb0RyYWdEcm9wKGRhdGEsIG1hc2spOwogfQogCisvLyBUaGUg
b3V0cHV0IGZyb20gdGhlc2UgbWV0aG9kcyBpbiBsYXlvdXQgdGVzdCBtb2RlIHNob3VsZCBtYXRj
aCB0aGF0CisvLyBleHBlY3RlZCBieSB0aGUgbGF5b3V0IHRlc3RzLiBTZWUgRWRpdGluZ0RlbGVn
YXRlLm0gaW4gRHVtcFJlbmRlclRyZWUuCisKKy8vIEZJWE1FOiBSZW1vdmUgdGhlIDAgY2hlY2tz
IGZvciBtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCkgb25jZSB0aGUKKy8vIFRlc3RJbnRl
cmZhY2VzIGNsYXNzIG93bnMgdGhlIFRlc3RSdW5uZXIuCisKK2Jvb2wgV2ViVGVzdFByb3h5QmFz
ZTo6c2hvdWxkQmVnaW5FZGl0aW5nKGNvbnN0IFdlYlJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAo
bV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpICYmIG1fdGVzdEludGVyZmFjZXMtPnRlc3RS
dW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgeworICAgICAgICBtX2RlbGVn
YXRlLT5wcmludE1lc3NhZ2UoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0lu
RE9NUmFuZ2U6Iik7CisgICAgICAgIHByaW50UmFuZ2VEZXNjcmlwdGlvbihtX2RlbGVnYXRlLCBy
YW5nZSk7CisgICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiXG4iKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViVGVzdFByb3h5QmFzZTo6c2hvdWxkRW5kRWRp
dGluZyhjb25zdCBXZWJSYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKG1fdGVzdEludGVyZmFjZXMt
PnRlc3RSdW5uZXIoKSAmJiBtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCktPnNob3VsZER1
bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdl
KCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRFbmRFZGl0aW5nSW5ET01SYW5nZToiKTsKKyAgICAg
ICAgcHJpbnRSYW5nZURlc2NyaXB0aW9uKG1fZGVsZWdhdGUsIHJhbmdlKTsKKyAgICAgICAgbV9k
ZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKCJcbiIpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBXZWJUZXN0UHJveHlCYXNlOjpzaG91bGRJbnNlcnROb2RlKGNvbnN0IFdlYk5vZGUm
IG5vZGUsIGNvbnN0IFdlYlJhbmdlJiByYW5nZSwgV2ViRWRpdGluZ0FjdGlvbiBhY3Rpb24pCit7
CisgICAgaWYgKG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKSAmJiBtX3Rlc3RJbnRlcmZh
Y2VzLT50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKKyAgICAg
ICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNl
cnROb2RlOiIpOworICAgICAgICBwcmludE5vZGVEZXNjcmlwdGlvbihtX2RlbGVnYXRlLCBub2Rl
LCAwKTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKCIgcmVwbGFjaW5nRE9NUmFu
Z2U6Iik7CisgICAgICAgIHByaW50UmFuZ2VEZXNjcmlwdGlvbihtX2RlbGVnYXRlLCByYW5nZSk7
CisgICAgICAgIHByaW50ZigiIGdpdmVuQWN0aW9uOiVzXG4iLCBlZGl0aW5nQWN0aW9uRGVzY3Jp
cHRpb24oYWN0aW9uKS5jX3N0cigpKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgV2ViVGVzdFByb3h5QmFzZTo6c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBXZWJTdHJpbmcmIHRl
eHQsIGNvbnN0IFdlYlJhbmdlJiByYW5nZSwgV2ViRWRpdGluZ0FjdGlvbiBhY3Rpb24pCit7Cisg
ICAgaWYgKG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKSAmJiBtX3Rlc3RJbnRlcmZhY2Vz
LT50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAg
bV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKHN0cmluZygiRURJVElORyBERUxFR0FURTogc2hvdWxk
SW5zZXJ0VGV4dDoiKSArIHRleHQudXRmOCgpLmRhdGEoKSArICIgcmVwbGFjaW5nRE9NUmFuZ2U6
Iik7CisgICAgICAgIHByaW50UmFuZ2VEZXNjcmlwdGlvbihtX2RlbGVnYXRlLCByYW5nZSk7Cisg
ICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZShzdHJpbmcoIiBnaXZlbkFjdGlvbjoiKSAr
IGVkaXRpbmdBY3Rpb25EZXNjcmlwdGlvbihhY3Rpb24pICsgIlxuIik7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFdlYlRlc3RQcm94eUJhc2U6OnNob3VsZENoYW5nZVNlbGVj
dGVkUmFuZ2UoCisgICAgY29uc3QgV2ViUmFuZ2UmIGZyb21SYW5nZSwgY29uc3QgV2ViUmFuZ2Um
IHRvUmFuZ2UsIFdlYlRleHRBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykK
K3sKKyAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpICYmIG1fdGVzdEludGVy
ZmFjZXMtPnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgeworICAg
ICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6Iik7CisgICAgICAgIHByaW50UmFuZ2VEZXNjcmlwdGlvbiht
X2RlbGVnYXRlLCBmcm9tUmFuZ2UpOworICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2Uo
IiB0b0RPTVJhbmdlOiIpOworICAgICAgICBwcmludFJhbmdlRGVzY3JpcHRpb24obV9kZWxlZ2F0
ZSwgdG9SYW5nZSk7CisgICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZShzdHJpbmcoIiBh
ZmZpbml0eToiKSArIHRleHRBZmZpbml0eURlc2NyaXB0aW9uKGFmZmluaXR5KSArICIgc3RpbGxT
ZWxlY3Rpbmc6IiArIChzdGlsbFNlbGVjdGluZyA/ICJUUlVFIiA6ICJGQUxTRSIpICsgIlxuIik7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdlYlRlc3RQcm94eUJhc2U6OnNo
b3VsZERlbGV0ZVJhbmdlKGNvbnN0IFdlYlJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAobV90ZXN0
SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpICYmIG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIo
KS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgeworICAgICAgICBtX2RlbGVnYXRlLT5w
cmludE1lc3NhZ2UoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZERlbGV0ZURPTVJhbmdlOiIpOwor
ICAgICAgICBwcmludFJhbmdlRGVzY3JpcHRpb24obV9kZWxlZ2F0ZSwgcmFuZ2UpOworICAgICAg
ICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIlxuIik7CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFdlYlRlc3RQcm94eUJhc2U6OnNob3VsZEFwcGx5U3R5bGUoY29uc3QgV2Vi
U3RyaW5nJiBzdHlsZSwgY29uc3QgV2ViUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChtX3Rlc3RJ
bnRlcmZhY2VzLT50ZXN0UnVubmVyKCkgJiYgbV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigp
LT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7CisgICAgICAgIG1fZGVsZWdhdGUtPnBy
aW50TWVzc2FnZShzdHJpbmcoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEFwcGx5U3R5bGU6Iikg
KyBzdHlsZS51dGY4KCkuZGF0YSgpICsgIiB0b0VsZW1lbnRzSW5ET01SYW5nZToiKTsKKyAgICAg
ICAgcHJpbnRSYW5nZURlc2NyaXB0aW9uKG1fZGVsZWdhdGUsIHJhbmdlKTsKKyAgICAgICAgbV9k
ZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKCJcbiIpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBXZWJUZXN0UHJveHlCYXNlOjpkaWRCZWdpbkVkaXRpbmcoKQoreworICAgIGlmICht
X3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCkgJiYgbV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1
bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQorICAgICAgICBtX2RlbGVnYXRl
LT5wcmludE1lc3NhZ2UoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6
V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvblxuIik7Cit9CisKK3ZvaWQgV2ViVGVz
dFByb3h5QmFzZTo6ZGlkQ2hhbmdlU2VsZWN0aW9uKGJvb2wgaXNFbXB0eVNlbGVjdGlvbikKK3sK
KyAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpICYmIG1fdGVzdEludGVyZmFj
ZXMtPnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkKKyAgICAgICAg
bV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKCJFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb25cbiIpOwor
fQorCit2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpZENoYW5nZUNvbnRlbnRzKCkKK3sKKyAgICBp
ZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpICYmIG1fdGVzdEludGVyZmFjZXMtPnRl
c3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkKKyAgICAgICAgbV9kZWxl
Z2F0ZS0+cHJpbnRNZXNzYWdlKCJFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldl
YlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb25cbiIpOworfQorCit2b2lkIFdlYlRlc3RQcm94eUJh
c2U6OmRpZEVuZEVkaXRpbmcoKQoreworICAgIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVu
bmVyKCkgJiYgbV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGlu
Z0NhbGxiYWNrcygpKQorICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIkVESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRFbmRFZGl0aW5nOldlYlZpZXdEaWRFbmRFZGl0aW5nTm90aWZp
Y2F0aW9uXG4iKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RT
aGVsbC5jcHAKaW5kZXggMjdmNWJiMDZhMTgwMjc5ZWI4NjdjNDJlNjM5N2JkNjAyYWFkZGUxZS4u
NjlkODFhMzBlN2VmMjkyZDFhOTYzYjk3MWZkMjdhMTRmYjBlODk3NCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCkBAIC0xNjMsNiArMTYzLDcgQEAgdm9p
ZCBUZXN0U2hlbGw6OmluaXRpYWxpemUoKQogICAgIG1fd2ViUGVybWlzc2lvbnMgPSBhZG9wdFB0
cihuZXcgV2ViUGVybWlzc2lvbnModGhpcykpOwogICAgIG1fdGVzdEludGVyZmFjZXMgPSBhZG9w
dFB0cihuZXcgV2ViVGVzdEludGVyZmFjZXMoKSk7CiAgICAgbV90ZXN0UnVubmVyID0gYWRvcHRQ
dHIobmV3IERSVFRlc3RSdW5uZXIodGhpcykpOworICAgIG1fdGVzdEludGVyZmFjZXMtPnNldFRl
c3RSdW5uZXIobV90ZXN0UnVubmVyLmdldCgpKTsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykg
fHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIG1fbm90aWZpY2F0aW9uUHJlc2Vu
dGVyID0gYWRvcHRQdHIobmV3IE5vdGlmaWNhdGlvblByZXNlbnRlcih0aGlzKSk7CiAjZW5kaWYK
QEAgLTc1MSw3ICs3NTIsNyBAQCBXZWJWaWV3SG9zdCogVGVzdFNoZWxsOjpjcmVhdGVOZXdXaW5k
b3coY29uc3QgV2ViS2l0OjpXZWJVUkwmIHVybCkKIAogV2ViVmlld0hvc3QqIFRlc3RTaGVsbDo6
Y3JlYXRlTmV3V2luZG93KGNvbnN0IFdlYktpdDo6V2ViVVJMJiB1cmwsIERSVERldlRvb2xzQWdl
bnQqIGRldlRvb2xzQWdlbnQpCiB7Ci0gICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5PFdl
YlZpZXdIb3N0LCBUZXN0U2hlbGwqPiogaG9zdCA9IG5ldyBXZWJUZXN0UnVubmVyOjpXZWJUZXN0
UHJveHk8V2ViVmlld0hvc3QsIFRlc3RTaGVsbCo+KHRoaXMpOworICAgIFdlYlRlc3RQcm94eTxX
ZWJWaWV3SG9zdCwgVGVzdFNoZWxsKj4qIGhvc3QgPSBuZXcgV2ViVGVzdFByb3h5PFdlYlZpZXdI
b3N0LCBUZXN0U2hlbGwqPih0aGlzKTsKICAgICBob3N0LT5zZXRJbnRlcmZhY2VzKG1fdGVzdElu
dGVyZmFjZXMuZ2V0KCkpOwogICAgIGlmIChtX3dlYlZpZXdIb3N0KQogICAgICAgICBob3N0LT5z
ZXREZWxlZ2F0ZShtX3dlYlZpZXdIb3N0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCAxZTg4ZjdlM2RmNDJmNjc4MmQ0NWQ1MDA0
NjZmYzIyZjc1MWE4MzlmLi5kYzg3OTFjMGViMzk3MjU1MjBjYWUwMmIyMTc5NWZiZjc2M2ViOWJk
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBA
IC0yMDMsNDUgKzIwMyw2IEBAIHN0YXRpYyB2b2lkIHByaW50Tm9kZURlc2NyaXB0aW9uKGNvbnN0
IFdlYk5vZGUmIG5vZGUsIGludCBleGNlcHRpb24pCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBw
cmludFJhbmdlRGVzY3JpcHRpb24oY29uc3QgV2ViUmFuZ2UmIHJhbmdlKQotewotICAgIGlmIChy
YW5nZS5pc051bGwoKSkgewotICAgICAgICBmcHV0cygiKG51bGwpIiwgc3Rkb3V0KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBwcmludGYoInJhbmdlIGZyb20gJWQgb2YgIiwgcmFuZ2Uu
c3RhcnRPZmZzZXQoKSk7Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgV2ViTm9kZSBzdGFy
dE5vZGUgPSByYW5nZS5zdGFydENvbnRhaW5lcihleGNlcHRpb24pOwotICAgIHByaW50Tm9kZURl
c2NyaXB0aW9uKHN0YXJ0Tm9kZSwgZXhjZXB0aW9uKTsKLSAgICBwcmludGYoIiB0byAlZCBvZiAi
LCByYW5nZS5lbmRPZmZzZXQoKSk7Ci0gICAgV2ViTm9kZSBlbmROb2RlID0gcmFuZ2UuZW5kQ29u
dGFpbmVyKGV4Y2VwdGlvbik7Ci0gICAgcHJpbnROb2RlRGVzY3JpcHRpb24oZW5kTm9kZSwgZXhj
ZXB0aW9uKTsKLX0KLQotc3RhdGljIHN0cmluZyBlZGl0aW5nQWN0aW9uRGVzY3JpcHRpb24oV2Vi
RWRpdGluZ0FjdGlvbiBhY3Rpb24pCi17Ci0gICAgc3dpdGNoIChhY3Rpb24pIHsKLSAgICBjYXNl
IFdlYktpdDo6V2ViRWRpdGluZ0FjdGlvblR5cGVkOgotICAgICAgICByZXR1cm4gIldlYlZpZXdJ
bnNlcnRBY3Rpb25UeXBlZCI7Ci0gICAgY2FzZSBXZWJLaXQ6OldlYkVkaXRpbmdBY3Rpb25QYXN0
ZWQ6Ci0gICAgICAgIHJldHVybiAiV2ViVmlld0luc2VydEFjdGlvblBhc3RlZCI7Ci0gICAgY2Fz
ZSBXZWJLaXQ6OldlYkVkaXRpbmdBY3Rpb25Ecm9wcGVkOgotICAgICAgICByZXR1cm4gIldlYlZp
ZXdJbnNlcnRBY3Rpb25Ecm9wcGVkIjsKLSAgICB9Ci0gICAgcmV0dXJuICIoVU5LTk9XTiBBQ1RJ
T04pIjsKLX0KLQotc3RhdGljIHN0cmluZyB0ZXh0QWZmaW5pdHlEZXNjcmlwdGlvbihXZWJUZXh0
QWZmaW5pdHkgYWZmaW5pdHkpCi17Ci0gICAgc3dpdGNoIChhZmZpbml0eSkgewotICAgIGNhc2Ug
V2ViS2l0OjpXZWJUZXh0QWZmaW5pdHlVcHN0cmVhbToKLSAgICAgICAgcmV0dXJuICJOU1NlbGVj
dGlvbkFmZmluaXR5VXBzdHJlYW0iOwotICAgIGNhc2UgV2ViS2l0OjpXZWJUZXh0QWZmaW5pdHlE
b3duc3RyZWFtOgotICAgICAgICByZXR1cm4gIk5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFt
IjsKLSAgICB9Ci0gICAgcmV0dXJuICIoVU5LTk9XTiBBRkZJTklUWSkiOwotfQotCiAvLyBXZWJW
aWV3Q2xpZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogV2ViVmlldyogV2ViVmlld0hvc3Q6OmNyZWF0ZVZpZXcoV2ViRnJh
bWUqIGNyZWF0b3IsIGNvbnN0IFdlYlVSTFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYldpbmRv
d0ZlYXR1cmVzJiwgY29uc3QgV2ViU3RyaW5nJiwgV2ViTmF2aWdhdGlvblBvbGljeSkKQEAgLTMy
NSw4MyArMjg2LDM5IEBAIHZvaWQgV2ViVmlld0hvc3Q6OmRpZFN0b3BMb2FkaW5nKCkKICAgICBt
X3NoZWxsLT5zZXRJc0xvYWRpbmcoZmFsc2UpOwogfQogCi0vLyBUaGUgb3V0cHV0IGZyb20gdGhl
c2UgbWV0aG9kcyBpbiBsYXlvdXQgdGVzdCBtb2RlIHNob3VsZCBtYXRjaCB0aGF0Ci0vLyBleHBl
Y3RlZCBieSB0aGUgbGF5b3V0IHRlc3RzLiBTZWUgRWRpdGluZ0RlbGVnYXRlLm0gaW4gRHVtcFJl
bmRlclRyZWUuCi0KIGJvb2wgV2ViVmlld0hvc3Q6OnNob3VsZEJlZ2luRWRpdGluZyhjb25zdCBX
ZWJSYW5nZSYgcmFuZ2UpCiB7Ci0gICAgaWYgKHRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRp
bmdDYWxsYmFja3MoKSkgewotICAgICAgICBmcHV0cygiRURJVElORyBERUxFR0FURTogc2hvdWxk
QmVnaW5FZGl0aW5nSW5ET01SYW5nZToiLCBzdGRvdXQpOwotICAgICAgICBwcmludFJhbmdlRGVz
Y3JpcHRpb24ocmFuZ2UpOwotICAgICAgICBmcHV0cygiXG4iLCBzdGRvdXQpOwotICAgIH0KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBXZWJWaWV3SG9zdDo6c2hvdWxkRW5kRWRpdGluZyhj
b25zdCBXZWJSYW5nZSYgcmFuZ2UpCiB7Ci0gICAgaWYgKHRlc3RSdW5uZXIoKS0+c2hvdWxkRHVt
cEVkaXRpbmdDYWxsYmFja3MoKSkgewotICAgICAgICBmcHV0cygiRURJVElORyBERUxFR0FURTog
c2hvdWxkRW5kRWRpdGluZ0luRE9NUmFuZ2U6Iiwgc3Rkb3V0KTsKLSAgICAgICAgcHJpbnRSYW5n
ZURlc2NyaXB0aW9uKHJhbmdlKTsKLSAgICAgICAgZnB1dHMoIlxuIiwgc3Rkb3V0KTsKLSAgICB9
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgV2ViVmlld0hvc3Q6OnNob3VsZEluc2VydE5v
ZGUoY29uc3QgV2ViTm9kZSYgbm9kZSwgY29uc3QgV2ViUmFuZ2UmIHJhbmdlLCBXZWJFZGl0aW5n
QWN0aW9uIGFjdGlvbikKIHsKLSAgICBpZiAodGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGlu
Z0NhbGxiYWNrcygpKSB7Ci0gICAgICAgIGZwdXRzKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJ
bnNlcnROb2RlOiIsIHN0ZG91dCk7Ci0gICAgICAgIHByaW50Tm9kZURlc2NyaXB0aW9uKG5vZGUs
IDApOwotICAgICAgICBmcHV0cygiIHJlcGxhY2luZ0RPTVJhbmdlOiIsIHN0ZG91dCk7Ci0gICAg
ICAgIHByaW50UmFuZ2VEZXNjcmlwdGlvbihyYW5nZSk7Ci0gICAgICAgIHByaW50ZigiIGdpdmVu
QWN0aW9uOiVzXG4iLCBlZGl0aW5nQWN0aW9uRGVzY3JpcHRpb24oYWN0aW9uKS5jX3N0cigpKTsK
LSAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgV2ViVmlld0hvc3Q6OnNob3VsZElu
c2VydFRleHQoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBjb25zdCBXZWJSYW5nZSYgcmFuZ2UsIFdl
YkVkaXRpbmdBY3Rpb24gYWN0aW9uKQogewotICAgIGlmICh0ZXN0UnVubmVyKCktPnNob3VsZER1
bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgcHJpbnRmKCJFRElUSU5HIERFTEVHQVRF
OiBzaG91bGRJbnNlcnRUZXh0OiVzIHJlcGxhY2luZ0RPTVJhbmdlOiIsIHRleHQudXRmOCgpLmRh
dGEoKSk7Ci0gICAgICAgIHByaW50UmFuZ2VEZXNjcmlwdGlvbihyYW5nZSk7Ci0gICAgICAgIHBy
aW50ZigiIGdpdmVuQWN0aW9uOiVzXG4iLCBlZGl0aW5nQWN0aW9uRGVzY3JpcHRpb24oYWN0aW9u
KS5jX3N0cigpKTsKLSAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgV2ViVmlld0hv
c3Q6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoCiAgICAgY29uc3QgV2ViUmFuZ2UmIGZyb21S
YW5nZSwgY29uc3QgV2ViUmFuZ2UmIHRvUmFuZ2UsIFdlYlRleHRBZmZpbml0eSBhZmZpbml0eSwg
Ym9vbCBzdGlsbFNlbGVjdGluZykKIHsKLSAgICBpZiAodGVzdFJ1bm5lcigpLT5zaG91bGREdW1w
RWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAgIGZwdXRzKCJFRElUSU5HIERFTEVHQVRFOiBz
aG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOiIsIHN0ZG91dCk7Ci0gICAgICAgIHByaW50UmFu
Z2VEZXNjcmlwdGlvbihmcm9tUmFuZ2UpOwotICAgICAgICBmcHV0cygiIHRvRE9NUmFuZ2U6Iiwg
c3Rkb3V0KTsKLSAgICAgICAgcHJpbnRSYW5nZURlc2NyaXB0aW9uKHRvUmFuZ2UpOwotICAgICAg
ICBwcmludGYoIiBhZmZpbml0eTolcyBzdGlsbFNlbGVjdGluZzolc1xuIiwKLSAgICAgICAgICAg
ICAgIHRleHRBZmZpbml0eURlc2NyaXB0aW9uKGFmZmluaXR5KS5jX3N0cigpLAotICAgICAgICAg
ICAgICAgKHN0aWxsU2VsZWN0aW5nID8gIlRSVUUiIDogIkZBTFNFIikpOwotICAgIH0KICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBXZWJWaWV3SG9zdDo6c2hvdWxkRGVsZXRlUmFuZ2UoY29u
c3QgV2ViUmFuZ2UmIHJhbmdlKQogewotICAgIGlmICh0ZXN0UnVubmVyKCktPnNob3VsZER1bXBF
ZGl0aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgZnB1dHMoIkVESVRJTkcgREVMRUdBVEU6IHNo
b3VsZERlbGV0ZURPTVJhbmdlOiIsIHN0ZG91dCk7Ci0gICAgICAgIHByaW50UmFuZ2VEZXNjcmlw
dGlvbihyYW5nZSk7Ci0gICAgICAgIGZwdXRzKCJcbiIsIHN0ZG91dCk7Ci0gICAgfQogICAgIHJl
dHVybiB0cnVlOwogfQogCiBib29sIFdlYlZpZXdIb3N0OjpzaG91bGRBcHBseVN0eWxlKGNvbnN0
IFdlYlN0cmluZyYgc3R5bGUsIGNvbnN0IFdlYlJhbmdlJiByYW5nZSkKIHsKLSAgICBpZiAodGVz
dFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAgIHByaW50
ZigiRURJVElORyBERUxFR0FURTogc2hvdWxkQXBwbHlTdHlsZTolcyB0b0VsZW1lbnRzSW5ET01S
YW5nZToiLCBzdHlsZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcHJpbnRSYW5nZURlc2NyaXB0
aW9uKHJhbmdlKTsKLSAgICAgICAgZnB1dHMoIlxuIiwgc3Rkb3V0KTsKLSAgICB9CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTQxNSwzNCArMzMyLDYgQEAgYm9vbCBXZWJWaWV3SG9zdDo6aXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkKICAgICByZXR1cm4gbV9zZWxlY3RUcmFp
bGluZ1doaXRlc3BhY2VFbmFibGVkOwogfQogCi12b2lkIFdlYlZpZXdIb3N0OjpkaWRCZWdpbkVk
aXRpbmcoKQotewotICAgIGlmICghdGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxi
YWNrcygpKQotICAgICAgICByZXR1cm47Ci0gICAgZnB1dHMoIkVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvblxu
Iiwgc3Rkb3V0KTsKLX0KLQotdm9pZCBXZWJWaWV3SG9zdDo6ZGlkQ2hhbmdlU2VsZWN0aW9uKGJv
b2wgaXNFbXB0eVNlbGVjdGlvbikKLXsKLSAgICBpZiAodGVzdFJ1bm5lcigpLT5zaG91bGREdW1w
RWRpdGluZ0NhbGxiYWNrcygpKQotICAgICAgICBmcHV0cygiRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uXG4iLCBzdGRvdXQpOwotICAgIC8vIE5vIG5lZWQgdG8gdXBkYXRlIGNsaXBib2FyZCB3aXRo
IHRoZSBzZWxlY3RlZCB0ZXh0IGluIERSVC4KLX0KLQotdm9pZCBXZWJWaWV3SG9zdDo6ZGlkQ2hh
bmdlQ29udGVudHMoKQotewotICAgIGlmICghdGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGlu
Z0NhbGxiYWNrcygpKQotICAgICAgICByZXR1cm47Ci0gICAgZnB1dHMoIkVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvblxuIiwgc3Rk
b3V0KTsKLX0KLQotdm9pZCBXZWJWaWV3SG9zdDo6ZGlkRW5kRWRpdGluZygpCi17Ci0gICAgaWYg
KCF0ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICBmcHV0cygiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEVuZEVkaXRpbmc6
V2ViVmlld0RpZEVuZEVkaXRpbmdOb3RpZmljYXRpb25cbiIsIHN0ZG91dCk7Ci19Ci0KIGJvb2wg
V2ViVmlld0hvc3Q6OmhhbmRsZUN1cnJlbnRLZXlib2FyZEV2ZW50KCkKIHsKICAgICBpZiAobV9l
ZGl0Q29tbWFuZE5hbWUuZW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5oCmluZGV4IDE2MmQxYTQyZWQ1MzY4Y2Y2NTQ0ZWY4NWY1ZDA1ZDAwN2UyOGU4
ODQuLmE0ZDQ4ZDE0ZjYxYmIxYjc3NWM0YzM3YzIwM2YzM2ZhYzIzMmE2MjMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtMTc4LDEwICsxNzgsNiBA
QCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1Ymxp
YyBXZWJLaXQ6OldlYkZyYW1lQ2xpZW50LAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBcHBseVN0
eWxlKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBzdHlsZSwgY29uc3QgV2ViS2l0OjpXZWJSYW5n
ZSYpOwogICAgIHZpcnR1YWwgYm9vbCBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwogICAg
IHZpcnR1YWwgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQmVnaW5FZGl0aW5nKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5n
ZVNlbGVjdGlvbihib29sIGlzU2VsZWN0aW9uRW1wdHkpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VDb250ZW50cygpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCk7CiAgICAg
dmlydHVhbCBib29sIGhhbmRsZUN1cnJlbnRLZXlib2FyZEV2ZW50KCk7CiAgICAgdmlydHVhbCB2
b2lkIHJ1bk1vZGFsQWxlcnREaWFsb2coV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6
V2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIHJ1bk1vZGFsQ29uZmlybURpYWxvZyhXZWJL
aXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179893</attachid>
            <date>2012-12-18 00:07:50 -0800</date>
            <delta_ts>2012-12-18 00:27:04 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-105013-20121218090507.patch</filename>
            <type>text/plain</type>
            <size>41895</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3OTkxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjViOGU4Y2YxYTk2NjkxMjMzMGQ4ODBhODk3MTY4YjZk
OGQ5NDViYS4uMGI4MDQ2YTE5Nzg1YTA4ZGRjNDUxZDJiZDBlYjM2ZTYxNWIzOWU4NCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDky
IEBACisyMDEyLTEyLTE0ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBlZGl0aW5nIGNhbGxiYWNrIGR1bXBpbmcgdG8gdGhl
IFdlYlRlc3RQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA1MDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgorCisgICAg
ICAgIFRvIGRlY2lkZSB3aGV0aGVyIG9yIG5vdCB0byBkdW1wIHRoZSBlZGl0aW5nIGNhbGxiYWNr
cywgdGhlIFdlYlRlc3RQcm94eQorICAgICAgICBuZWVkcyB0byBxdWVyeSB0aGUgVGVzdFJ1bm5l
ci4gRm9yIHRoaXMgcHVycG9zZSwgSSBpbnRyb2R1Y2UgYQorICAgICAgICBXZWJUZXN0UnVubmVy
IGNsYXNzIHRoYXQganVzdCBleHBvc2VzIHRoZSBzaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcwor
ICAgICAgICBtZXRob2QuIEluIGNvbnRyYXN0IHRvIGUuZy4gV2ViRXZlbnRTZW5kZXIsIHRoZSBX
ZWJUZXN0UnVubmVyIGlzIGp1c3QKKyAgICAgICAgYW4gaW50ZXJmYWNlLCBhbmQgaXQgaXMgbm90
IG93bmVkIGJ5IHRoZSBXZWJUZXN0SW50ZXJmYWNlcywgYnV0IHRoZQorICAgICAgICBlbWJlZGRl
ciBvZiB0aGUgVGVzdFJ1bm5lciBsaWJyYXJ5IG11c3QgcHJvdmlkZSBpdC4gVGhpcyB3aWxsIGNo
YW5nZQorICAgICAgICBvbmNlIGFsbCBUZXN0UnVubmVyIG1ldGhvZHMgYXJlIGluIHRoZSBsaWJy
YXJ5LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcDoKKyAgICAg
ICAgKERSVFRlc3RSdW5uZXI6OkRSVFRlc3RSdW5uZXIpOgorICAgICAgICAoRFJUVGVzdFJ1bm5l
cjo6cmVzZXQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKERSVFRlc3RSdW5uZXIpOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcjo6
dGFza0xpc3QpOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjp0YXNrTGlzdCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
VGVzdEludGVyZmFjZXMuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2Vi
VGVzdEludGVyZmFjZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFByb3h5QmFzZSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OnNob3VsZEJlZ2luRWRpdGluZyk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OnNob3VsZEVuZEVkaXRpbmcpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5OjpzaG91bGRJbnNlcnROb2RlKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eTo6c2hvdWxkSW5zZXJ0VGV4dCk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFu
Z2UpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5OjpzaG91bGREZWxldGVS
YW5nZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OnNob3VsZEFwcGx5
U3R5bGUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5OjpkaWRCZWdpbkVk
aXRpbmcpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5OjpkaWRDaGFuZ2VT
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5OjpkaWRDaGFu
Z2VDb250ZW50cyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OmRpZEVu
ZEVkaXRpbmcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
cHVibGljL1dlYlRlc3RSdW5uZXIuaDogQ29waWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaC4KKyAgICAgICAg
KFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFJ1bm5lcjo6
c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpU
ZXN0UnVubmVyOjp+VGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OlRlc3RSdW5uZXI6OnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OmR1bXBFZGl0aW5nQ2FsbGJhY2tzKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmg6
CisgICAgICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6OnRlc3RSdW5uZXIpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFjZXM6OkludGVybmFsOjpzZXRUZXN0UnVu
bmVyKToKKyAgICAgICAgKFdlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6OkludGVybmFsKToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzOjp0ZXN0UnVubmVyKToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdElu
dGVyZmFjZXM6OnNldFRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyOjpXZWJUZXN0UHJveHlCYXNlOjpwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbik6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQ
cm94eUJhc2U6OnNob3VsZEJlZ2luRWRpdGluZyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpX
ZWJUZXN0UHJveHlCYXNlOjpzaG91bGRFbmRFZGl0aW5nKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRlc3RQcm94eUJhc2U6OnNob3VsZEluc2VydE5vZGUpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6c2hvdWxkSW5zZXJ0VGV4dCk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdl
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnNob3VsZERlbGV0
ZVJhbmdlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnNob3Vs
ZEFwcGx5U3R5bGUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6
ZGlkQmVnaW5FZGl0aW5nKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJh
c2U6OmRpZENoYW5nZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0
UHJveHlCYXNlOjpkaWRDaGFuZ2VDb250ZW50cyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpX
ZWJUZXN0UHJveHlCYXNlOjpkaWRFbmRFZGl0aW5nKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwOgorICAgICAgICAoVGVzdFNoZWxsOjppbml0aWFsaXpl
KToKKyAgICAgICAgKFRlc3RTaGVsbDo6Y3JlYXRlTmV3V2luZG93KToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9z
dDo6c2hvdWxkQmVnaW5FZGl0aW5nKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpzaG91bGRFbmRF
ZGl0aW5nKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpzaG91bGRJbnNlcnROb2RlKToKKyAgICAg
ICAgKFdlYlZpZXdIb3N0OjpzaG91bGRJbnNlcnRUZXh0KToKKyAgICAgICAgKFdlYlZpZXdIb3N0
OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpzaG91
bGREZWxldGVSYW5nZSk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6c2hvdWxkQXBwbHlTdHlsZSk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKyAgICAg
ICAgKFdlYlZpZXdIb3N0KToKKwogMjAxMi0xMi0xNyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFm
ZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHVuaXQgdGVzdCBza2lwcGlu
Zy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IDNiZTNmMmNj
NzIxMDA5YWE3YWNiZmNlZDg3Njk4NzVlMzAyNDA0NWYuLjY4MWMyMmU0OWVlZDViMzNkYjQ4ZGNl
YjRlNjA4MTExYWI5YjhmODIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUu
Z3lwaQpAQCAtNjgsNiArNjgsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIv
cHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYlRlc3RQbHVnaW4uaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rl
c3RSdW5uZXIvcHVibGljL1dlYlRlc3RSdW5uZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5jcHAnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
Q2hyb21pdW0uaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudENocm9taXVtLmNwcCcsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCmluZGV4IGRmOTZjZDgxNzA2NGUzY2RjYmMyNDk3
ODY5MmY0NmZlN2M0NmVjM2MuLjA0OWE0M2ZlM2Q1ZDAxNjYxNWY0N2NjYmZjY2NjNGE2MDAyZjY2
MzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5u
ZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIu
Y3BwCkBAIC0xMzQsNyArMTM0LDYgQEAgRFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5lcihUZXN0
U2hlbGwqIHNoZWxsKQogICAgIGJpbmRNZXRob2QoImR1bXBCYWNrRm9yd2FyZExpc3QiLCAmRFJU
VGVzdFJ1bm5lcjo6ZHVtcEJhY2tGb3J3YXJkTGlzdCk7CiAgICAgYmluZE1ldGhvZCgiZHVtcENo
aWxkRnJhbWVzQXNUZXh0IiwgJkRSVFRlc3RSdW5uZXI6OmR1bXBDaGlsZEZyYW1lc0FzVGV4dCk7
CiAgICAgYmluZE1ldGhvZCgiZHVtcENoaWxkRnJhbWVTY3JvbGxQb3NpdGlvbnMiLCAmRFJUVGVz
dFJ1bm5lcjo6ZHVtcENoaWxkRnJhbWVTY3JvbGxQb3NpdGlvbnMpOwotICAgIGJpbmRNZXRob2Qo
ImR1bXBFZGl0aW5nQ2FsbGJhY2tzIiwgJkRSVFRlc3RSdW5uZXI6OmR1bXBFZGl0aW5nQ2FsbGJh
Y2tzKTsKICAgICBiaW5kTWV0aG9kKCJkdW1wRnJhbWVMb2FkQ2FsbGJhY2tzIiwgJkRSVFRlc3RS
dW5uZXI6OmR1bXBGcmFtZUxvYWRDYWxsYmFja3MpOwogICAgIGJpbmRNZXRob2QoImR1bXBQcm9n
cmVzc0ZpbmlzaGVkQ2FsbGJhY2siLCAmRFJUVGVzdFJ1bm5lcjo6ZHVtcFByb2dyZXNzRmluaXNo
ZWRDYWxsYmFjayk7CiAgICAgYmluZE1ldGhvZCgiZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRD
YWxsYmFja3MiLCAmRFJUVGVzdFJ1bm5lcjo6ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxs
YmFja3MpOwpAQCAtMjc3LDEyICsyNzYsNiBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OmR1bXBBc1Rl
eHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlcwogICAg
IHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCi12b2lkIERSVFRlc3RSdW5uZXI6OmR1bXBFZGl0aW5n
Q2FsbGJhY2tzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsK
LSAgICBtX2R1bXBFZGl0aW5nQ2FsbGJhY2tzID0gdHJ1ZTsKLSAgICByZXN1bHQtPnNldE51bGwo
KTsKLX0KLQogdm9pZCBEUlRUZXN0UnVubmVyOjpkdW1wQmFja0ZvcndhcmRMaXN0KGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBtX2R1bXBCYWNrRm9y
d2FyZExpc3QgPSB0cnVlOwpAQCAtNTQ4LDcgKzU0MSw2IEBAIHZvaWQgRFJUVGVzdFJ1bm5lcjo6
cmVzZXQoKQogICAgIG1fZHVtcEFzVGV4dCA9IGZhbHNlOwogICAgIG1fZHVtcEFzQXVkaW8gPSBm
YWxzZTsKICAgICBtX2R1bXBDcmVhdGVWaWV3ID0gZmFsc2U7Ci0gICAgbV9kdW1wRWRpdGluZ0Nh
bGxiYWNrcyA9IGZhbHNlOwogICAgIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrcyA9IGZhbHNlOwog
ICAgIG1fZHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFjayA9IGZhbHNlOwogICAgIG1fZHVtcFVz
ZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaAppbmRleCBjMTY2YzdkYTNkOTI0MjU3YjEw
NWI3YjNjNWM0MWM4OTcyNTRhYzk0Li5jMTM3ZGZhNjk5MzU5MzcwMGRkNjY4YWU1ZmE1ZjZkOGRh
YmVmZTU5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0
UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5l
ci5oCkBAIC02NSw2ICs2NSw4IEBAIGNsYXNzIFRlc3RTaGVsbDsKIAogdXNpbmcgV2ViVGVzdFJ1
bm5lcjo6Q3BwQXJndW1lbnRMaXN0OwogdXNpbmcgV2ViVGVzdFJ1bm5lcjo6Q3BwVmFyaWFudDsK
K3VzaW5nIFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s7Cit1c2luZyBXZWJUZXN0UnVubmVy
OjpXZWJUYXNrTGlzdDsKIAogY2xhc3MgRFJUVGVzdFJ1bm5lciA6IHB1YmxpYyBXZWJUZXN0UnVu
bmVyOjpUZXN0UnVubmVyIHsKIHB1YmxpYzoKQEAgLTcyLDcgKzc0LDcgQEAgcHVibGljOgogICAg
IC8vIG9iamVjdC4KICAgICBEUlRUZXN0UnVubmVyKFRlc3RTaGVsbCopOwogCi0gICAgfkRSVFRl
c3RSdW5uZXIoKTsKKyAgICB2aXJ0dWFsIH5EUlRUZXN0UnVubmVyKCk7CiAKICAgICAvLyBUaGlz
IGZ1bmN0aW9uIHNldHMgYSBmbGFnIHRoYXQgdGVsbHMgdGhlIHRlc3Rfc2hlbGwgdG8gZHVtcCBw
YWdlcyBhcwogICAgIC8vIHBsYWluIHRleHQsIHJhdGhlciB0aGFuIGFzIGEgdGV4dCByZXByZXNl
bnRhdGlvbiBvZiB0aGUgcmVuZGVyZXIncyBzdGF0ZS4KQEAgLTgwLDExICs4Miw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGR1bXBBc1RleHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBzZXRzIGEgZmxhZyB0aGF0IHRlbGxzIHRoZSB0
ZXN0X3NoZWxsIHRvIHByaW50IGEgbGluZSBvZgotICAgIC8vIGRlc2NyaXB0aXZlIHRleHQgZm9y
IGVhY2ggZWRpdGluZyBjb21tYW5kLiBJdCB0YWtlcyBubyBhcmd1bWVudHMsIGFuZAotICAgIC8v
IGlnbm9yZXMgYW55IHRoYXQgbWF5IGJlIHByZXNlbnQuCi0gICAgdm9pZCBkdW1wRWRpdGluZ0Nh
bGxiYWNrcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0KLSAgICAvLyBU
aGlzIGZ1bmN0aW9uIHNldHMgYSBmbGFnIHRoYXQgdGVsbHMgdGhlIHRlc3Rfc2hlbGwgdG8gcHJp
bnQgYSBsaW5lIG9mCiAgICAgLy8gZGVzY3JpcHRpdmUgdGV4dCBmb3IgZWFjaCBmcmFtZSBsb2Fk
IGNhbGxiYWNrLiBJdCB0YWtlcyBubyBhcmd1bWVudHMsIGFuZAogICAgIC8vIGlnbm9yZXMgYW55
IHRoYXQgbWF5IGJlIHByZXNlbnQuCiAgICAgdm9pZCBkdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKQEAgLTI5NSw3ICsyOTIsNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGREdW1wQXNBdWRpbyhib29sIGR1bXBBc0F1ZGlvKSB7
IG1fZHVtcEFzQXVkaW8gPSBkdW1wQXNBdWRpbzsgfSAKICAgICBib29sIHNob3VsZER1bXBBc1Rl
eHQoKSB7IHJldHVybiBtX2R1bXBBc1RleHQ7IH0KICAgICB2b2lkIHNldFNob3VsZER1bXBBc1Rl
eHQoYm9vbCB2YWx1ZSkgeyBtX2R1bXBBc1RleHQgPSB2YWx1ZTsgfQotICAgIGJvb2wgc2hvdWxk
RHVtcEVkaXRpbmdDYWxsYmFja3MoKSB7IHJldHVybiBtX2R1bXBFZGl0aW5nQ2FsbGJhY2tzOyB9
CiAgICAgYm9vbCBzaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkgeyByZXR1cm4gbV9kdW1w
RnJhbWVMb2FkQ2FsbGJhY2tzOyB9CiAgICAgdm9pZCBzZXRTaG91bGREdW1wRnJhbWVMb2FkQ2Fs
bGJhY2tzKGJvb2wgdmFsdWUpIHsgbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzID0gdmFsdWU7IH0K
ICAgICBib29sIHNob3VsZER1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2soKSB7IHJldHVybiBt
X2R1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2s7IH0KQEAgLTM1Nyw3ICszNTMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBydW4oVGVzdFNoZWxsKikgPSAwOwogICAgIH07CiAK
LSAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90
YXNrTGlzdDsgfQorICAgIFdlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tM
aXN0OyB9CiAKICAgICBib29sIHNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5s
b2FkKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9y
ZVVubG9hZDsgfQogCkBAIC0zODAsMzAgKzM3NiwzMCBAQCBwcml2YXRlOgogCiAgICAgICAgIHZv
aWQgc2V0RnJvemVuKGJvb2wgZnJvemVuKSB7IG1fZnJvemVuID0gZnJvemVuOyB9CiAgICAgICAg
IGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIG1fcXVldWUuaXNFbXB0eSgpOyB9Ci0gICAgICAgIFdl
YlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0
OyB9CisgICAgICAgIFdlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0
OyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHByb2Nlc3NXb3JrKCk7Ci0gICAgICAg
IGNsYXNzIFdvcmtRdWV1ZVRhc2s6IHB1YmxpYyBXZWJUZXN0UnVubmVyOjpXZWJNZXRob2RUYXNr
PFdvcmtRdWV1ZT4geworICAgICAgICBjbGFzcyBXb3JrUXVldWVUYXNrOiBwdWJsaWMgV2ViTWV0
aG9kVGFzazxXb3JrUXVldWU+IHsKICAgICAgICAgcHVibGljOgotICAgICAgICAgICAgV29ya1F1
ZXVlVGFzayhXb3JrUXVldWUqIG9iamVjdCk6IFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8
V29ya1F1ZXVlPihvYmplY3QpIHsgfQorICAgICAgICAgICAgV29ya1F1ZXVlVGFzayhXb3JrUXVl
dWUqIG9iamVjdCk6IFdlYk1ldGhvZFRhc2s8V29ya1F1ZXVlPihvYmplY3QpIHsgfQogICAgICAg
ICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7IG1fb2JqZWN0LT5wcm9jZXNzV29yaygp
OyB9CiAgICAgICAgIH07CiAKLSAgICAgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QgbV90
YXNrTGlzdDsKKyAgICAgICAgV2ViVGFza0xpc3QgbV90YXNrTGlzdDsKICAgICAgICAgRGVxdWU8
V29ya0l0ZW0qPiBtX3F1ZXVlOwogICAgICAgICBib29sIG1fZnJvemVuOwogICAgICAgICBEUlRU
ZXN0UnVubmVyKiBtX2NvbnRyb2xsZXI7CiAgICAgfTsKICAgICB2b2lkIGNvbXBsZXRlTm90aWZ5
RG9uZShib29sIGlzVGltZW91dCk7Ci0gICAgY2xhc3MgTm90aWZ5RG9uZVRpbWVkT3V0VGFzazog
cHVibGljIFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s8RFJUVGVzdFJ1bm5lcj4geworICAg
IGNsYXNzIE5vdGlmeURvbmVUaW1lZE91dFRhc2s6IHB1YmxpYyBXZWJNZXRob2RUYXNrPERSVFRl
c3RSdW5uZXI+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE5vdGlmeURvbmVUaW1lZE91dFRhc2so
RFJUVGVzdFJ1bm5lciogb2JqZWN0KTogV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9kVGFzazxEUlRU
ZXN0UnVubmVyPihvYmplY3QpIHsgfQorICAgICAgICBOb3RpZnlEb25lVGltZWRPdXRUYXNrKERS
VFRlc3RSdW5uZXIqIG9iamVjdCk6IFdlYk1ldGhvZFRhc2s8RFJUVGVzdFJ1bm5lcj4ob2JqZWN0
KSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7IG1fb2JqZWN0LT5jb21w
bGV0ZU5vdGlmeURvbmUodHJ1ZSk7IH0KICAgICB9OwogCiAgICAgLy8gVXNlZCBmb3IgdGVzdCB0
aW1lb3V0cy4KLSAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OworICAg
IFdlYlRhc2tMaXN0IG1fdGFza0xpc3Q7CiAKICAgICAvLyBOb24tb3duaW5nIHBvaW50ZXIuIFRo
ZSBEUlRUZXN0UnVubmVyIGlzIG93bmVkIGJ5IHRoZSBob3N0LgogICAgIFRlc3RTaGVsbCogbV9z
aGVsbDsKQEAgLTQxNSwxMCArNDExLDYgQEAgcHJpdmF0ZToKICAgICAvLyBJZiB0cnVlLCB0aGUg
dGVzdF9zaGVsbCB3aWxsIG91dHB1dCBhIGJhc2U2NCBlbmNvZGVkIFdBVkUgZmlsZS4KICAgICBi
b29sIG1fZHVtcEFzQXVkaW87CiAKLSAgICAvLyBJZiB0cnVlLCB0aGUgdGVzdF9zaGVsbCB3aWxs
IHdyaXRlIGEgZGVzY3JpcHRpdmUgbGluZSBmb3IgZWFjaCBlZGl0aW5nCi0gICAgLy8gY29tbWFu
ZC4KLSAgICBib29sIG1fZHVtcEVkaXRpbmdDYWxsYmFja3M7Ci0KICAgICAvLyBJZiB0cnVlLCB0
aGUgdGVzdF9zaGVsbCB3aWxsIGRyYXcgdGhlIGJvdW5kcyBvZiB0aGUgY3VycmVudCBzZWxlY3Rp
b24gcmVjdAogICAgIC8vIHRha2luZyBwb3NzaWJsZSB0cmFuc2Zvcm1zIG9mIHRoZSBzZWxlY3Rp
b24gcmVjdCBpbnRvIGFjY291bnQuCiAgICAgYm9vbCBtX2R1bXBTZWxlY3Rpb25SZWN0OwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViVGVzdEludGVyZmFjZXMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgKaW5kZXggNTI1MjBhNmI1YTIxN2E3ZjI1
NjY4MDczMTgxY2U2ODdiNDNkMTU2My4uZDhkOGIzZmQ3YTA0MThhNDIxMTBmZTllODVmM2I3ZjM2
NjZlMDdkMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oCkBAIC00MSw2
ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIGNsYXNzIFdlYkFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOwogY2xhc3MgV2ViRXZlbnRTZW5kZXI7CiBjbGFzcyBXZWJUZXN0RGVsZWdh
dGU7CitjbGFzcyBXZWJUZXN0UnVubmVyOwogCiBjbGFzcyBXZWJUZXN0SW50ZXJmYWNlcyB7CiBw
dWJsaWM6CkBAIC01NCw2ICs1NSw5IEBAIHB1YmxpYzoKIAogICAgIFdlYkFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpOwogICAgIFdlYkV2ZW50U2VuZGVy
KiBldmVudFNlbmRlcigpOworICAgIFdlYlRlc3RSdW5uZXIqIHRlc3RSdW5uZXIoKTsKKyAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSBUZXN0UnVubmVyIGlzIGNvbXBsZXRlLgorICAgIHZv
aWQgc2V0VGVzdFJ1bm5lcihXZWJUZXN0UnVubmVyKik7CiAKIHByaXZhdGU6CiAgICAgY2xhc3Mg
SW50ZXJuYWw7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUZXN0UHJveHkuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oCmluZGV4IGI0YTU5M2NlZWEwNWEx
NWYwODJhN2Q0YWM0MDEyMDgzMWEzMzM2NWIuLjMxM2QzZDk1M2M1M2RlOTQ2NTRjOTZlYjFlYjFl
OWUwNzg1MzA2MDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oCkBAIC0zNCwxMyArMzQs
MTggQEAKICNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUmVjdC5oIgogI2lu
Y2x1ZGUgIldlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bi5oIgogI2luY2x1ZGUgIldlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRHJhZ09wZXJhdGlvbi5o
IgorI2luY2x1ZGUgIldlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRWRpdGluZ0FjdGlvbi5oIgog
I2luY2x1ZGUgIldlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTmF2aWdhdGlvblBvbGljeS5oIgor
I2luY2x1ZGUgIldlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dEFmZmluaXR5LmgiCiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIFdl
YkRyYWdEYXRhOwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbWFnZTsKK2NsYXNzIFdlYk5v
ZGU7CitjbGFzcyBXZWJSYW5nZTsKK2NsYXNzIFdlYlN0cmluZzsKIHN0cnVjdCBXZWJQb2ludDsK
IHN0cnVjdCBXZWJTaXplOwogfQpAQCAtNDksNiArNTQsNyBAQCBuYW1lc3BhY2UgV2ViVGVzdFJ1
bm5lciB7CiAKIGNsYXNzIFdlYlRlc3REZWxlZ2F0ZTsKIGNsYXNzIFdlYlRlc3RJbnRlcmZhY2Vz
OworY2xhc3MgV2ViVGVzdFJ1bm5lcjsKIAogY2xhc3MgV2ViVGVzdFByb3h5QmFzZSB7CiBwdWJs
aWM6CkBAIC03MSw2ICs3NywxNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaWRBdXRvUmVzaXpl
KGNvbnN0IFdlYktpdDo6V2ViU2l6ZSYpOwogICAgIHZvaWQgcG9zdEFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb24oY29uc3QgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiwgV2ViS2l0OjpX
ZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKTsKICAgICB2b2lkIHN0YXJ0RHJhZ2dpbmcoV2Vi
S2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViRHJhZ0RhdGEmLCBXZWJLaXQ6OldlYkRy
YWdPcGVyYXRpb25zTWFzaywgY29uc3QgV2ViS2l0OjpXZWJJbWFnZSYsIGNvbnN0IFdlYktpdDo6
V2ViUG9pbnQmKTsKKyAgICBib29sIHNob3VsZEJlZ2luRWRpdGluZyhjb25zdCBXZWJLaXQ6Oldl
YlJhbmdlJik7CisgICAgYm9vbCBzaG91bGRFbmRFZGl0aW5nKGNvbnN0IFdlYktpdDo6V2ViUmFu
Z2UmKTsKKyAgICBib29sIHNob3VsZEluc2VydE5vZGUoY29uc3QgV2ViS2l0OjpXZWJOb2RlJiwg
Y29uc3QgV2ViS2l0OjpXZWJSYW5nZSYsIFdlYktpdDo6V2ViRWRpdGluZ0FjdGlvbik7CisgICAg
Ym9vbCBzaG91bGRJbnNlcnRUZXh0KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiB0ZXh0LCBjb25z
dCBXZWJLaXQ6OldlYlJhbmdlJiwgV2ViS2l0OjpXZWJFZGl0aW5nQWN0aW9uKTsKKyAgICBib29s
IHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3QgV2ViS2l0OjpXZWJSYW5nZSYgZnJvbVJh
bmdlLCBjb25zdCBXZWJLaXQ6OldlYlJhbmdlJiB0b1JhbmdlLCBXZWJLaXQ6OldlYlRleHRBZmZp
bml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZyk7CisgICAgYm9vbCBzaG91bGREZWxldGVSYW5nZShj
b25zdCBXZWJLaXQ6OldlYlJhbmdlJik7CisgICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKGNvbnN0
IFdlYktpdDo6V2ViU3RyaW5nJiBzdHlsZSwgY29uc3QgV2ViS2l0OjpXZWJSYW5nZSYpOworICAg
IHZvaWQgZGlkQmVnaW5FZGl0aW5nKCk7CisgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oYm9v
bCBpc0VtcHR5U2VsZWN0aW9uKTsKKyAgICB2b2lkIGRpZENoYW5nZUNvbnRlbnRzKCk7CisgICAg
dm9pZCBkaWRFbmRFZGl0aW5nKCk7CiAKIHByaXZhdGU6CiAgICAgV2ViVGVzdEludGVyZmFjZXMq
IG1fdGVzdEludGVyZmFjZXM7CkBAIC0xMzYsNiArMTUzLDYxIEBAIHB1YmxpYzoKICAgICAgICAg
V2ViVGVzdFByb3h5QmFzZTo6c3RhcnREcmFnZ2luZyhmcmFtZSwgZGF0YSwgbWFzaywgaW1hZ2Us
IHBvaW50KTsKICAgICAgICAgV2ViVmlld0NsaWVudEltcGw6OnN0YXJ0RHJhZ2dpbmcoZnJhbWUs
IGRhdGEsIG1hc2ssIGltYWdlLCBwb2ludCk7CiAgICAgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRCZWdpbkVkaXRpbmcoY29uc3QgV2ViS2l0OjpXZWJSYW5nZSYgcmFuZ2UpCisgICAgeworICAg
ICAgICBXZWJUZXN0UHJveHlCYXNlOjpzaG91bGRCZWdpbkVkaXRpbmcocmFuZ2UpOworICAgICAg
ICByZXR1cm4gV2ViVmlld0NsaWVudEltcGw6OnNob3VsZEJlZ2luRWRpdGluZyhyYW5nZSk7Cisg
ICAgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmRFZGl0aW5nKGNvbnN0IFdlYktpdDo6V2Vi
UmFuZ2UmIHJhbmdlKQorICAgIHsKKyAgICAgICAgV2ViVGVzdFByb3h5QmFzZTo6c2hvdWxkRW5k
RWRpdGluZyhyYW5nZSk7CisgICAgICAgIHJldHVybiBXZWJWaWV3Q2xpZW50SW1wbDo6c2hvdWxk
RW5kRWRpdGluZyhyYW5nZSk7CisgICAgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnRO
b2RlKGNvbnN0IFdlYktpdDo6V2ViTm9kZSYgbm9kZSwgY29uc3QgV2ViS2l0OjpXZWJSYW5nZSYg
cmFuZ2UsIFdlYktpdDo6V2ViRWRpdGluZ0FjdGlvbiBhY3Rpb24pCisgICAgeworICAgICAgICBX
ZWJUZXN0UHJveHlCYXNlOjpzaG91bGRJbnNlcnROb2RlKG5vZGUsIHJhbmdlLCBhY3Rpb24pOwor
ICAgICAgICByZXR1cm4gV2ViVmlld0NsaWVudEltcGw6OnNob3VsZEluc2VydE5vZGUobm9kZSwg
cmFuZ2UsIGFjdGlvbik7CisgICAgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnRUZXh0
KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiB0ZXh0LCBjb25zdCBXZWJLaXQ6OldlYlJhbmdlJiBy
YW5nZSwgV2ViS2l0OjpXZWJFZGl0aW5nQWN0aW9uIGFjdGlvbikKKyAgICB7CisgICAgICAgIFdl
YlRlc3RQcm94eUJhc2U6OnNob3VsZEluc2VydFRleHQodGV4dCwgcmFuZ2UsIGFjdGlvbik7Cisg
ICAgICAgIHJldHVybiBXZWJWaWV3Q2xpZW50SW1wbDo6c2hvdWxkSW5zZXJ0VGV4dCh0ZXh0LCBy
YW5nZSwgYWN0aW9uKTsKKyAgICB9CisgICAgdmlydHVhbCBib29sIHNob3VsZENoYW5nZVNlbGVj
dGVkUmFuZ2UoY29uc3QgV2ViS2l0OjpXZWJSYW5nZSYgZnJvbVJhbmdlLCBjb25zdCBXZWJLaXQ6
OldlYlJhbmdlJiB0b1JhbmdlLCBXZWJLaXQ6OldlYlRleHRBZmZpbml0eSBhZmZpbml0eSwgYm9v
bCBzdGlsbFNlbGVjdGluZykKKyAgICB7CisgICAgICAgIFdlYlRlc3RQcm94eUJhc2U6OnNob3Vs
ZENoYW5nZVNlbGVjdGVkUmFuZ2UoZnJvbVJhbmdlLCB0b1JhbmdlLCBhZmZpbml0eSwgc3RpbGxT
ZWxlY3RpbmcpOworICAgICAgICByZXR1cm4gV2ViVmlld0NsaWVudEltcGw6OnNob3VsZENoYW5n
ZVNlbGVjdGVkUmFuZ2UoZnJvbVJhbmdlLCB0b1JhbmdlLCBhZmZpbml0eSwgc3RpbGxTZWxlY3Rp
bmcpOworICAgIH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoY29uc3QgV2Vi
S2l0OjpXZWJSYW5nZSYgcmFuZ2UpCisgICAgeworICAgICAgICBXZWJUZXN0UHJveHlCYXNlOjpz
aG91bGREZWxldGVSYW5nZShyYW5nZSk7CisgICAgICAgIHJldHVybiBXZWJWaWV3Q2xpZW50SW1w
bDo6c2hvdWxkRGVsZXRlUmFuZ2UocmFuZ2UpOworICAgIH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkQXBwbHlTdHlsZShjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgc3R5bGUsIGNvbnN0IFdlYktp
dDo6V2ViUmFuZ2UmIHJhbmdlKQorICAgIHsKKyAgICAgICAgV2ViVGVzdFByb3h5QmFzZTo6c2hv
dWxkQXBwbHlTdHlsZShzdHlsZSwgcmFuZ2UpOworICAgICAgICByZXR1cm4gV2ViVmlld0NsaWVu
dEltcGw6OnNob3VsZEFwcGx5U3R5bGUoc3R5bGUsIHJhbmdlKTsKKyAgICB9CisgICAgdmlydHVh
bCB2b2lkIGRpZEJlZ2luRWRpdGluZygpCisgICAgeworICAgICAgICBXZWJUZXN0UHJveHlCYXNl
OjpkaWRCZWdpbkVkaXRpbmcoKTsKKyAgICAgICAgV2ViVmlld0NsaWVudEltcGw6OmRpZEJlZ2lu
RWRpdGluZygpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKGJv
b2wgaXNFbXB0eVNlbGVjdGlvbikKKyAgICB7CisgICAgICAgIFdlYlRlc3RQcm94eUJhc2U6OmRp
ZENoYW5nZVNlbGVjdGlvbihpc0VtcHR5U2VsZWN0aW9uKTsKKyAgICAgICAgV2ViVmlld0NsaWVu
dEltcGw6OmRpZENoYW5nZVNlbGVjdGlvbihpc0VtcHR5U2VsZWN0aW9uKTsKKyAgICB9CisgICAg
dmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRlbnRzKCkKKyAgICB7CisgICAgICAgIFdlYlRlc3RQ
cm94eUJhc2U6OmRpZENoYW5nZUNvbnRlbnRzKCk7CisgICAgICAgIFdlYlZpZXdDbGllbnRJbXBs
OjpkaWRDaGFuZ2VDb250ZW50cygpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRp
dGluZygpCisgICAgeworICAgICAgICBXZWJUZXN0UHJveHlCYXNlOjpkaWRFbmRFZGl0aW5nKCk7
CisgICAgICAgIFdlYlZpZXdDbGllbnRJbXBsOjpkaWRFbmRFZGl0aW5nKCk7CisgICAgfQogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9wdWJsaWMvV2ViVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFJ1bm5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhNmIwMDEzODgz
ZDY5NTFjMjIyZjIxOGZiNWFmZWQ1M2JlNjRkZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UnVubmVyLmgK
QEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVGVzdFJ1bm5lcl9oCisjZGVmaW5lIFdlYlRlc3RS
dW5uZXJfaAorCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKKy8vIEZJWE1FOiBPbmNlIHRo
ZSBUZXN0UnVubmVyIGNsYXNzIGlzIGNvbXBsZXRlLCB0aGlzIGNsYXNzIHNob3VsZCB0YWtlIGEK
Ky8vIFRlc3RSdW5uZXIqIGFzIGN0b3IgYXJndW1lbnQsIGFuZCBub3QgaGF2ZSBkZWZhdWx0IGlt
cGxlbWVudGF0aW9ucy4KK2NsYXNzIFdlYlRlc3RSdW5uZXIgeworcHVibGljOgorICAgIHZpcnR1
YWwgYm9vbCBzaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJUZXN0UnVubmVyX2gKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5l
ci5jcHAKaW5kZXggMDc1ZDYzYWZkYTUwNjhmMjAyOTRiMDkwOWVjYTViMzk2MmJlMWM4ZC4uYTJj
MGEwMDRjNzg4YWUxZTQ1OTE4MGYwMGE3NGQwMDE5MTNmNDhkYyAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5l
ci5jcHAKQEAgLTExNCw2ICsxMTQsOSBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkKICAgICBi
aW5kTWV0aG9kKCJvdmVycmlkZVByZWZlcmVuY2UiLCAmVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVm
ZXJlbmNlKTsKICAgICBiaW5kTWV0aG9kKCJzZXRQbHVnaW5zRW5hYmxlZCIsICZUZXN0UnVubmVy
OjpzZXRQbHVnaW5zRW5hYmxlZCk7CiAKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1vZGlmeSB0aGUg
c3RhdGUgb2YgdGhlIFRlc3RSdW5uZXIuCisgICAgYmluZE1ldGhvZCgiZHVtcEVkaXRpbmdDYWxs
YmFja3MiLCAmVGVzdFJ1bm5lcjo6ZHVtcEVkaXRpbmdDYWxsYmFja3MpOworCiAgICAgLy8gUHJv
cGVydGllcy4KICAgICBiaW5kUHJvcGVydHkoIndvcmtlclRocmVhZENvdW50IiwgJlRlc3RSdW5u
ZXI6OndvcmtlclRocmVhZENvdW50KTsKICAgICBiaW5kUHJvcGVydHkoImdsb2JhbEZsYWciLCAm
bV9nbG9iYWxGbGFnKTsKQEAgLTE1MSw2ICsxNTQsMTAgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5l
cigpCiAgICAgYmluZEZhbGxiYWNrTWV0aG9kKCZUZXN0UnVubmVyOjpmYWxsYmFja01ldGhvZCk7
CiB9CiAKK1Rlc3RSdW5uZXI6On5UZXN0UnVubmVyKCkKK3sKK30KKwogdm9pZCBUZXN0UnVubmVy
OjpyZXNldCgpCiB7CiAgICAgaWYgKG1fd2ViVmlldykgewpAQCAtMTY5LDEyICsxNzYsMTkgQEAg
dm9pZCBUZXN0UnVubmVyOjpyZXNldCgpCiAgICAgV2ViRm9udFJlbmRlcmluZzo6c2V0U3VicGl4
ZWxQb3NpdGlvbmluZyhmYWxzZSk7CiAjZW5kaWYKIAorICAgIG1fZHVtcEVkaXRpbmdDYWxsYmFj
a3MgPSBmYWxzZTsKKwogICAgIG1fZ2xvYmFsRmxhZy5zZXQoZmFsc2UpOwogICAgIG1fcGxhdGZv
cm1OYW1lLnNldCgiY2hyb21pdW0iKTsKIAogICAgIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbiA9
IFdlYlVSTCgpOwogfQogCitib29sIFRlc3RSdW5uZXI6OnNob3VsZER1bXBFZGl0aW5nQ2FsbGJh
Y2tzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kdW1wRWRpdGluZ0NhbGxiYWNrczsKK30KKwog
dm9pZCBUZXN0UnVubmVyOjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBpZiAo
YXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKQpAQCAtODM0LDYg
Kzg0OCwxMiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFBsdWdpbnNFbmFibGVkKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KgogICAgIHJlc3VsdC0+c2V0TnVsbCgp
OwogfQogCit2b2lkIFRlc3RSdW5uZXI6OmR1bXBFZGl0aW5nQ2FsbGJhY2tzKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBtX2R1bXBFZGl0aW5nQ2Fs
bGJhY2tzID0gdHJ1ZTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwogdm9pZCBUZXN0UnVu
bmVyOjp3b3JrZXJUaHJlYWRDb3VudChDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0
LT5zZXQoc3RhdGljX2Nhc3Q8aW50PihXZWJXb3JrZXJJbmZvOjpkZWRpY2F0ZWRXb3JrZXJDb3Vu
dCgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9UZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKaW5kZXggMzQ1YTEzNGI5MTRiYTFhMWZlZDRlNjFmMjQ5
ZjA0OTljY2NkYmIwMS4uN2JiMmRmYjk3OWFiYTlkYjA2ODcxNTRkOTk4ZDg3ZDMxMmVjOTYxNCAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
VGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RSdW5uZXIuaApAQCAtMzMsNiArMzMsNyBAQAogI2RlZmluZSBUZXN0UnVubmVy
X2gKIAogI2luY2x1ZGUgIkNwcEJvdW5kQ2xhc3MuaCIKKyNpbmNsdWRlICJXZWJUZXN0UnVubmVy
LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNDMsOSArNDQsMTAgQEAgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCiBjbGFzcyBXZWJU
ZXN0RGVsZWdhdGU7CiAKLWNsYXNzIFRlc3RSdW5uZXIgOiBwdWJsaWMgQ3BwQm91bmRDbGFzcyB7
CitjbGFzcyBUZXN0UnVubmVyIDogcHVibGljIENwcEJvdW5kQ2xhc3MsIHB1YmxpYyBXZWJUZXN0
UnVubmVyIHsKIHB1YmxpYzoKICAgICBUZXN0UnVubmVyKCk7CisgICAgdmlydHVhbCB+VGVzdFJ1
bm5lcigpOwogCiAgICAgLy8gRklYTUU6IG9uY2UgRFJUVGVzdFJ1bm5lciBpcyBtb3ZlZCBlbnRp
cmVseSB0byB0aGlzIGNsYXNzLCBjaGFuZ2UgdGhpcwogICAgIC8vIG1ldGhvZCB0byB0YWtlIGEg
VGVzdERlbGVnYXRlKiBpbnN0ZWFkLgpAQCAtNTQsNiArNTYsOSBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHJlc2V0KCk7CiAKKyAgICAvLyBXZWJUZXN0UnVubmVyIGltcGxlbWVudGF0aW9uLgorICAg
IHZpcnR1YWwgYm9vbCBzaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpIGNvbnN0IE9WRVJSSURF
OworCiBwcm90ZWN0ZWQ6CiAgICAgLy8gRklYTUU6IG1ha2UgdGhlc2UgcHJpdmF0ZSBvbmNlIHRo
ZSBtb3ZlIGZyb20gRFJUVGVzdFJ1bm5lciB0byBUZXN0UnVubmVyCiAgICAgLy8gaXMgY29tcGxl
dGUuCkBAIC0xNzMsNiArMTc4LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQbHVnaW5zRW5h
YmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICAvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KKyAgICAvLyBNZXRob2RzIHRoYXQgbW9kaWZ5IHRoZSBzdGF0ZSBvZiBUZXN0
UnVubmVyCisKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHNldHMgYSBmbGFnIHRoYXQgdGVsbHMgdGhl
IHRlc3Rfc2hlbGwgdG8gcHJpbnQgYSBsaW5lIG9mCisgICAgLy8gZGVzY3JpcHRpdmUgdGV4dCBm
b3IgZWFjaCBlZGl0aW5nIGNvbW1hbmQuIEl0IHRha2VzIG5vIGFyZ3VtZW50cywgYW5kCisgICAg
Ly8gaWdub3JlcyBhbnkgdGhhdCBtYXkgYmUgcHJlc2VudC4KKyAgICB2b2lkIGR1bXBFZGl0aW5n
Q2FsbGJhY2tzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKworICAgIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwogICAgIC8vIFByb3BlcnRpZXMKICAgICB2b2lkIHdvcmtlclRocmVh
ZENvdW50KENwcFZhcmlhbnQqKTsKIApAQCAtMjA0LDYgKzIxNywxMCBAQCBwcml2YXRlOgogICAg
IC8vIEJvdW5kIHZhcmlhYmxlIHRvIHJldHVybiB0aGUgbmFtZSBvZiB0aGlzIHBsYXRmb3JtIChj
aHJvbWl1bSkuCiAgICAgQ3BwVmFyaWFudCBtX3BsYXRmb3JtTmFtZTsKIAorICAgIC8vIElmIHRy
dWUsIHRoZSB0ZXN0X3NoZWxsIHdpbGwgd3JpdGUgYSBkZXNjcmlwdGl2ZSBsaW5lIGZvciBlYWNo
IGVkaXRpbmcKKyAgICAvLyBjb21tYW5kLgorICAgIGJvb2wgbV9kdW1wRWRpdGluZ0NhbGxiYWNr
czsKKwogICAgIFdlYlRlc3REZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKICAgICBXZWJLaXQ6OldlYlZp
ZXcqIG1fd2ViVmlldzsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKaW5k
ZXggOWE4Njk1M2MzY2I4NTM3NDBlYWE3OGJhZmZhMTg4YzRiNzI3MjhmOC4uNDNmZWVhYzM2YTI5
ZDdmYzk4M2E0YmY0N2IxMzZhYmI1MmYyNzJmNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRl
cmZhY2VzLmNwcApAQCAtNTUsNiArNTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREZWxlZ2F0
ZShXZWJUZXN0RGVsZWdhdGUqKTsKICAgICBXZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciogYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIoKSB7IHJldHVybiAmbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjsgfQogICAgIFdlYkV2ZW50U2VuZGVyKiBldmVudFNlbmRlcigpIHsgcmV0dXJuICZtX2V2ZW50
U2VuZGVyOyB9CisgICAgV2ViVGVzdFJ1bm5lciogdGVzdFJ1bm5lcigpIHsgcmV0dXJuIG1fdGVz
dFJ1bm5lcjsgfQorICAgIHZvaWQgc2V0VGVzdFJ1bm5lcihXZWJUZXN0UnVubmVyKiB0ZXN0UnVu
bmVyKSB7IG1fdGVzdFJ1bm5lciA9IHRlc3RSdW5uZXI7IH0KIAogICAgIC8vIFRlc3REZWxlZ2F0
ZSBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDb250ZXh0TWVudURhdGEo
KTsKQEAgLTc0LDEyICs3NiwxNCBAQCBwcml2YXRlOgogICAgIFRlc3RJbnRlcmZhY2VzIG1faW50
ZXJmYWNlczsKICAgICBXZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciBtX2FjY2Vzc2liaWxpdHlD
b250cm9sbGVyOwogICAgIFdlYkV2ZW50U2VuZGVyIG1fZXZlbnRTZW5kZXI7CisgICAgV2ViVGVz
dFJ1bm5lciogbV90ZXN0UnVubmVyOwogICAgIFdlYlRlc3REZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsK
IH07CiAKIFdlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6SW50ZXJuYWwoKQogICAgIDogbV9h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcihtX2ludGVyZmFjZXMuYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIoKSkKICAgICAsIG1fZXZlbnRTZW5kZXIobV9pbnRlcmZhY2VzLmV2ZW50U2VuZGVyKCkpCisg
ICAgLCBtX3Rlc3RSdW5uZXIoMCkKICAgICAsIG1fZGVsZWdhdGUoMCkKIHsKIH0KQEAgLTE5OSw0
ICsyMDMsMTQgQEAgV2ViRXZlbnRTZW5kZXIqIFdlYlRlc3RJbnRlcmZhY2VzOjpldmVudFNlbmRl
cigpCiAgICAgcmV0dXJuIG1faW50ZXJuYWwtPmV2ZW50U2VuZGVyKCk7CiB9CiAKK1dlYlRlc3RS
dW5uZXIqIFdlYlRlc3RJbnRlcmZhY2VzOjp0ZXN0UnVubmVyKCkKK3sKKyAgICByZXR1cm4gbV9p
bnRlcm5hbC0+dGVzdFJ1bm5lcigpOworfQorCit2b2lkIFdlYlRlc3RJbnRlcmZhY2VzOjpzZXRU
ZXN0UnVubmVyKFdlYlRlc3RSdW5uZXIqIHRlc3RSdW5uZXIpCit7CisgICAgbV9pbnRlcm5hbC0+
c2V0VGVzdFJ1bm5lcih0ZXN0UnVubmVyKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5j
cHAKaW5kZXggOTQyZjBiYjg4OWMwNTIzZDk3MjYzOTFiNzE0ZWZmYzEzZDM1ZjAwYS4uMGU3OTQw
NmNhNDhmOWIwMmJjODFmMzRjMjQ1MDNkNjZhMDkzYTFkYSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJv
eHkuY3BwCkBAIC0zNywxNSArMzcsODIgQEAKICNpbmNsdWRlICJXZWJFbGVtZW50LmgiCiAjaW5j
bHVkZSAiV2ViRXZlbnRTZW5kZXIuaCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCisjaW5jbHVkZSAi
V2ViUmFuZ2UuaCIKICNpbmNsdWRlICJXZWJUZXN0RGVsZWdhdGUuaCIKICNpbmNsdWRlICJXZWJU
ZXN0SW50ZXJmYWNlcy5oIgorI2luY2x1ZGUgIldlYlRlc3RSdW5uZXIuaCIKICNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJDU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNl
IFdlYlRlc3RSdW5uZXIgewogCituYW1lc3BhY2UgeworCit2b2lkIHByaW50Tm9kZURlc2NyaXB0
aW9uKFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUsIGNvbnN0IFdlYk5vZGUmIG5vZGUsIGludCBl
eGNlcHRpb24pCit7CisgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICBkZWxlZ2F0ZS0+cHJp
bnRNZXNzYWdlKCJFUlJPUiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChub2Rl
LmlzTnVsbCgpKSB7CisgICAgICAgIGRlbGVnYXRlLT5wcmludE1lc3NhZ2UoIihudWxsKSIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGRlbGVnYXRlLT5wcmludE1lc3NhZ2Uobm9kZS5u
b2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgIGNvbnN0IFdlYk5vZGUmIHBhcmVudCA9IG5v
ZGUucGFyZW50Tm9kZSgpOworICAgIGlmICghcGFyZW50LmlzTnVsbCgpKSB7CisgICAgICAgIGRl
bGVnYXRlLT5wcmludE1lc3NhZ2UoIiA+ICIpOworICAgICAgICBwcmludE5vZGVEZXNjcmlwdGlv
bihkZWxlZ2F0ZSwgcGFyZW50LCAwKTsKKyAgICB9Cit9CisKK3ZvaWQgcHJpbnRSYW5nZURlc2Ny
aXB0aW9uKFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUsIGNvbnN0IFdlYlJhbmdlJiByYW5nZSkK
K3sKKyAgICBpZiAocmFuZ2UuaXNOdWxsKCkpIHsKKyAgICAgICAgZGVsZWdhdGUtPnByaW50TWVz
c2FnZSgiKG51bGwpIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2hhciBidWZmZXJb
MTAwXTsKKyAgICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAicmFuZ2UgZnJvbSAl
ZCBvZiAiLCByYW5nZS5zdGFydE9mZnNldCgpKTsKKyAgICBkZWxlZ2F0ZS0+cHJpbnRNZXNzYWdl
KGJ1ZmZlcik7CisgICAgaW50IGV4Y2VwdGlvbiA9IDA7CisgICAgV2ViTm9kZSBzdGFydE5vZGUg
PSByYW5nZS5zdGFydENvbnRhaW5lcihleGNlcHRpb24pOworICAgIHByaW50Tm9kZURlc2NyaXB0
aW9uKGRlbGVnYXRlLCBzdGFydE5vZGUsIGV4Y2VwdGlvbik7CisgICAgc25wcmludGYoYnVmZmVy
LCBzaXplb2YoYnVmZmVyKSwgIiB0byAlZCBvZiAiLCByYW5nZS5lbmRPZmZzZXQoKSk7CisgICAg
ZGVsZWdhdGUtPnByaW50TWVzc2FnZShidWZmZXIpOworICAgIFdlYk5vZGUgZW5kTm9kZSA9IHJh
bmdlLmVuZENvbnRhaW5lcihleGNlcHRpb24pOworICAgIHByaW50Tm9kZURlc2NyaXB0aW9uKGRl
bGVnYXRlLCBlbmROb2RlLCBleGNlcHRpb24pOworfQorCitzdHJpbmcgZWRpdGluZ0FjdGlvbkRl
c2NyaXB0aW9uKFdlYkVkaXRpbmdBY3Rpb24gYWN0aW9uKQoreworICAgIHN3aXRjaCAoYWN0aW9u
KSB7CisgICAgY2FzZSBXZWJLaXQ6OldlYkVkaXRpbmdBY3Rpb25UeXBlZDoKKyAgICAgICAgcmV0
dXJuICJXZWJWaWV3SW5zZXJ0QWN0aW9uVHlwZWQiOworICAgIGNhc2UgV2ViS2l0OjpXZWJFZGl0
aW5nQWN0aW9uUGFzdGVkOgorICAgICAgICByZXR1cm4gIldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0
ZWQiOworICAgIGNhc2UgV2ViS2l0OjpXZWJFZGl0aW5nQWN0aW9uRHJvcHBlZDoKKyAgICAgICAg
cmV0dXJuICJXZWJWaWV3SW5zZXJ0QWN0aW9uRHJvcHBlZCI7CisgICAgfQorICAgIHJldHVybiAi
KFVOS05PV04gQUNUSU9OKSI7Cit9CisKK3N0cmluZyB0ZXh0QWZmaW5pdHlEZXNjcmlwdGlvbihX
ZWJUZXh0QWZmaW5pdHkgYWZmaW5pdHkpCit7CisgICAgc3dpdGNoIChhZmZpbml0eSkgeworICAg
IGNhc2UgV2ViS2l0OjpXZWJUZXh0QWZmaW5pdHlVcHN0cmVhbToKKyAgICAgICAgcmV0dXJuICJO
U1NlbGVjdGlvbkFmZmluaXR5VXBzdHJlYW0iOworICAgIGNhc2UgV2ViS2l0OjpXZWJUZXh0QWZm
aW5pdHlEb3duc3RyZWFtOgorICAgICAgICByZXR1cm4gIk5TU2VsZWN0aW9uQWZmaW5pdHlEb3du
c3RyZWFtIjsKKyAgICB9CisgICAgcmV0dXJuICIoVU5LTk9XTiBBRkZJTklUWSkiOworfQorCit9
CisKIFdlYlRlc3RQcm94eUJhc2U6OldlYlRlc3RQcm94eUJhc2UoKQogICAgIDogbV90ZXN0SW50
ZXJmYWNlcygwKQogICAgICwgbV9kZWxlZ2F0ZSgwKQpAQCAtMTk3LDcgKzI2NCw3IEBAIHZvaWQg
V2ViVGVzdFByb3h5QmFzZTo6cG9zdEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oY29uc3QgV2Vi
S2l0OjpXZWJBY2Nlc3NpYmlsCiAgICAgbV90ZXN0SW50ZXJmYWNlcy0+YWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIoKS0+bm90aWZpY2F0aW9uUmVjZWl2ZWQob2JqLCBub3RpZmljYXRpb25OYW1lKTsK
IAogICAgIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpLT5z
aG91bGRMb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkpIHsKLSAgICAgICAgc3RkOjpzdHJpbmcgbWVz
c2FnZSgiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbiAtICIpOworICAgICAgICBzdHJpbmcgbWVz
c2FnZSgiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbiAtICIpOwogICAgICAgICBtZXNzYWdlICs9
IG5vdGlmaWNhdGlvbk5hbWU7CiAKICAgICAgICAgV2ViS2l0OjpXZWJOb2RlIG5vZGUgPSBvYmou
bm9kZSgpOwpAQCAtMjIwLDQgKzI4NywxMDkgQEAgdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpzdGFy
dERyYWdnaW5nKFdlYkZyYW1lKiwgY29uc3QgV2ViRHJhZ0RhdGEmIGRhdGEsIFdlYkRyYWcKICAg
ICBtX3Rlc3RJbnRlcmZhY2VzLT5ldmVudFNlbmRlcigpLT5kb0RyYWdEcm9wKGRhdGEsIG1hc2sp
OwogfQogCisvLyBUaGUgb3V0cHV0IGZyb20gdGhlc2UgbWV0aG9kcyBpbiBsYXlvdXQgdGVzdCBt
b2RlIHNob3VsZCBtYXRjaCB0aGF0CisvLyBleHBlY3RlZCBieSB0aGUgbGF5b3V0IHRlc3RzLiBT
ZWUgRWRpdGluZ0RlbGVnYXRlLm0gaW4gRHVtcFJlbmRlclRyZWUuCisKKy8vIEZJWE1FOiBSZW1v
dmUgdGhlIDAgY2hlY2tzIGZvciBtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCkgb25jZSB0
aGUKKy8vIFRlc3RJbnRlcmZhY2VzIGNsYXNzIG93bnMgdGhlIFRlc3RSdW5uZXIuCisKK2Jvb2wg
V2ViVGVzdFByb3h5QmFzZTo6c2hvdWxkQmVnaW5FZGl0aW5nKGNvbnN0IFdlYlJhbmdlJiByYW5n
ZSkKK3sKKyAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpICYmIG1fdGVzdElu
dGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgewor
ICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIkVESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6Iik7CisgICAgICAgIHByaW50UmFuZ2VEZXNjcmlwdGlv
bihtX2RlbGVnYXRlLCByYW5nZSk7CisgICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZSgi
XG4iKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViVGVzdFByb3h5QmFz
ZTo6c2hvdWxkRW5kRWRpdGluZyhjb25zdCBXZWJSYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKG1f
dGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKSAmJiBtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVu
bmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgbV9kZWxlZ2F0
ZS0+cHJpbnRNZXNzYWdlKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRFbmRFZGl0aW5nSW5ET01S
YW5nZToiKTsKKyAgICAgICAgcHJpbnRSYW5nZURlc2NyaXB0aW9uKG1fZGVsZWdhdGUsIHJhbmdl
KTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKCJcbiIpOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJUZXN0UHJveHlCYXNlOjpzaG91bGRJbnNlcnROb2Rl
KGNvbnN0IFdlYk5vZGUmIG5vZGUsIGNvbnN0IFdlYlJhbmdlJiByYW5nZSwgV2ViRWRpdGluZ0Fj
dGlvbiBhY3Rpb24pCit7CisgICAgaWYgKG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKSAm
JiBtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJh
Y2tzKCkpIHsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKCJFRElUSU5HIERFTEVH
QVRFOiBzaG91bGRJbnNlcnROb2RlOiIpOworICAgICAgICBwcmludE5vZGVEZXNjcmlwdGlvbiht
X2RlbGVnYXRlLCBub2RlLCAwKTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKCIg
cmVwbGFjaW5nRE9NUmFuZ2U6Iik7CisgICAgICAgIHByaW50UmFuZ2VEZXNjcmlwdGlvbihtX2Rl
bGVnYXRlLCByYW5nZSk7CisgICAgICAgIHByaW50ZigiIGdpdmVuQWN0aW9uOiVzXG4iLCBlZGl0
aW5nQWN0aW9uRGVzY3JpcHRpb24oYWN0aW9uKS5jX3N0cigpKTsKKyAgICB9CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgV2ViVGVzdFByb3h5QmFzZTo6c2hvdWxkSW5zZXJ0VGV4dChjb25z
dCBXZWJTdHJpbmcmIHRleHQsIGNvbnN0IFdlYlJhbmdlJiByYW5nZSwgV2ViRWRpdGluZ0FjdGlv
biBhY3Rpb24pCit7CisgICAgaWYgKG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKSAmJiBt
X3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tz
KCkpIHsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKHN0cmluZygiRURJVElORyBE
RUxFR0FURTogc2hvdWxkSW5zZXJ0VGV4dDoiKSArIHRleHQudXRmOCgpLmRhdGEoKSArICIgcmVw
bGFjaW5nRE9NUmFuZ2U6Iik7CisgICAgICAgIHByaW50UmFuZ2VEZXNjcmlwdGlvbihtX2RlbGVn
YXRlLCByYW5nZSk7CisgICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZShzdHJpbmcoIiBn
aXZlbkFjdGlvbjoiKSArIGVkaXRpbmdBY3Rpb25EZXNjcmlwdGlvbihhY3Rpb24pICsgIlxuIik7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdlYlRlc3RQcm94eUJhc2U6OnNo
b3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoCisgICAgY29uc3QgV2ViUmFuZ2UmIGZyb21SYW5nZSwg
Y29uc3QgV2ViUmFuZ2UmIHRvUmFuZ2UsIFdlYlRleHRBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBz
dGlsbFNlbGVjdGluZykKK3sKKyAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigp
ICYmIG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxs
YmFja3MoKSkgeworICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIkVESVRJTkcgREVM
RUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6Iik7CisgICAgICAgIHByaW50UmFu
Z2VEZXNjcmlwdGlvbihtX2RlbGVnYXRlLCBmcm9tUmFuZ2UpOworICAgICAgICBtX2RlbGVnYXRl
LT5wcmludE1lc3NhZ2UoIiB0b0RPTVJhbmdlOiIpOworICAgICAgICBwcmludFJhbmdlRGVzY3Jp
cHRpb24obV9kZWxlZ2F0ZSwgdG9SYW5nZSk7CisgICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVz
c2FnZShzdHJpbmcoIiBhZmZpbml0eToiKSArIHRleHRBZmZpbml0eURlc2NyaXB0aW9uKGFmZmlu
aXR5KSArICIgc3RpbGxTZWxlY3Rpbmc6IiArIChzdGlsbFNlbGVjdGluZyA/ICJUUlVFIiA6ICJG
QUxTRSIpICsgIlxuIik7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdlYlRl
c3RQcm94eUJhc2U6OnNob3VsZERlbGV0ZVJhbmdlKGNvbnN0IFdlYlJhbmdlJiByYW5nZSkKK3sK
KyAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpICYmIG1fdGVzdEludGVyZmFj
ZXMtPnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgeworICAgICAg
ICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZERlbGV0
ZURPTVJhbmdlOiIpOworICAgICAgICBwcmludFJhbmdlRGVzY3JpcHRpb24obV9kZWxlZ2F0ZSwg
cmFuZ2UpOworICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIlxuIik7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdlYlRlc3RQcm94eUJhc2U6OnNob3VsZEFwcGx5
U3R5bGUoY29uc3QgV2ViU3RyaW5nJiBzdHlsZSwgY29uc3QgV2ViUmFuZ2UmIHJhbmdlKQorewor
ICAgIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCkgJiYgbV90ZXN0SW50ZXJmYWNl
cy0+dGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7CisgICAgICAg
IG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZShzdHJpbmcoIkVESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZEFwcGx5U3R5bGU6IikgKyBzdHlsZS51dGY4KCkuZGF0YSgpICsgIiB0b0VsZW1lbnRzSW5ET01S
YW5nZToiKTsKKyAgICAgICAgcHJpbnRSYW5nZURlc2NyaXB0aW9uKG1fZGVsZWdhdGUsIHJhbmdl
KTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKCJcbiIpOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJUZXN0UHJveHlCYXNlOjpkaWRCZWdpbkVkaXRpbmco
KQoreworICAgIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCkgJiYgbV90ZXN0SW50
ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQorICAg
ICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvblxuIik7Cit9
CisKK3ZvaWQgV2ViVGVzdFByb3h5QmFzZTo6ZGlkQ2hhbmdlU2VsZWN0aW9uKGJvb2wgaXNFbXB0
eVNlbGVjdGlvbikKK3sKKyAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpICYm
IG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFj
a3MoKSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKCJFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3Rp
ZmljYXRpb25cbiIpOworfQorCit2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpZENoYW5nZUNvbnRl
bnRzKCkKK3sKKyAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpICYmIG1fdGVz
dEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkK
KyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKCJFRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb25cbiIpOworfQorCit2b2lk
IFdlYlRlc3RQcm94eUJhc2U6OmRpZEVuZEVkaXRpbmcoKQoreworICAgIGlmIChtX3Rlc3RJbnRl
cmZhY2VzLT50ZXN0UnVubmVyKCkgJiYgbV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5z
aG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQorICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1l
c3NhZ2UoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRFbmRFZGl0aW5nOldlYlZpZXdEaWRF
bmRFZGl0aW5nTm90aWZpY2F0aW9uXG4iKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKaW5kZXggMjdmNWJiMDZhMTgwMjc5ZWI4NjdjNDJlNjM5
N2JkNjAyYWFkZGUxZS4uNjlkODFhMzBlN2VmMjkyZDFhOTYzYjk3MWZkMjdhMTRmYjBlODk3NCAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCkBAIC0xNjMs
NiArMTYzLDcgQEAgdm9pZCBUZXN0U2hlbGw6OmluaXRpYWxpemUoKQogICAgIG1fd2ViUGVybWlz
c2lvbnMgPSBhZG9wdFB0cihuZXcgV2ViUGVybWlzc2lvbnModGhpcykpOwogICAgIG1fdGVzdElu
dGVyZmFjZXMgPSBhZG9wdFB0cihuZXcgV2ViVGVzdEludGVyZmFjZXMoKSk7CiAgICAgbV90ZXN0
UnVubmVyID0gYWRvcHRQdHIobmV3IERSVFRlc3RSdW5uZXIodGhpcykpOworICAgIG1fdGVzdElu
dGVyZmFjZXMtPnNldFRlc3RSdW5uZXIobV90ZXN0UnVubmVyLmdldCgpKTsKICNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIG1fbm90
aWZpY2F0aW9uUHJlc2VudGVyID0gYWRvcHRQdHIobmV3IE5vdGlmaWNhdGlvblByZXNlbnRlcih0
aGlzKSk7CiAjZW5kaWYKQEAgLTc1MSw3ICs3NTIsNyBAQCBXZWJWaWV3SG9zdCogVGVzdFNoZWxs
OjpjcmVhdGVOZXdXaW5kb3coY29uc3QgV2ViS2l0OjpXZWJVUkwmIHVybCkKIAogV2ViVmlld0hv
c3QqIFRlc3RTaGVsbDo6Y3JlYXRlTmV3V2luZG93KGNvbnN0IFdlYktpdDo6V2ViVVJMJiB1cmws
IERSVERldlRvb2xzQWdlbnQqIGRldlRvb2xzQWdlbnQpCiB7Ci0gICAgV2ViVGVzdFJ1bm5lcjo6
V2ViVGVzdFByb3h5PFdlYlZpZXdIb3N0LCBUZXN0U2hlbGwqPiogaG9zdCA9IG5ldyBXZWJUZXN0
UnVubmVyOjpXZWJUZXN0UHJveHk8V2ViVmlld0hvc3QsIFRlc3RTaGVsbCo+KHRoaXMpOworICAg
IFdlYlRlc3RQcm94eTxXZWJWaWV3SG9zdCwgVGVzdFNoZWxsKj4qIGhvc3QgPSBuZXcgV2ViVGVz
dFByb3h5PFdlYlZpZXdIb3N0LCBUZXN0U2hlbGwqPih0aGlzKTsKICAgICBob3N0LT5zZXRJbnRl
cmZhY2VzKG1fdGVzdEludGVyZmFjZXMuZ2V0KCkpOwogICAgIGlmIChtX3dlYlZpZXdIb3N0KQog
ICAgICAgICBob3N0LT5zZXREZWxlZ2F0ZShtX3dlYlZpZXdIb3N0LmdldCgpKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCAxZTg4ZjdlM2Rm
NDJmNjc4MmQ0NWQ1MDA0NjZmYzIyZjc1MWE4MzlmLi5kYzg3OTFjMGViMzk3MjU1MjBjYWUwMmIy
MTc5NWZiZjc2M2ViOWJkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwCkBAIC0yMDMsNDUgKzIwMyw2IEBAIHN0YXRpYyB2b2lkIHByaW50Tm9kZURl
c2NyaXB0aW9uKGNvbnN0IFdlYk5vZGUmIG5vZGUsIGludCBleGNlcHRpb24pCiAgICAgfQogfQog
Ci1zdGF0aWMgdm9pZCBwcmludFJhbmdlRGVzY3JpcHRpb24oY29uc3QgV2ViUmFuZ2UmIHJhbmdl
KQotewotICAgIGlmIChyYW5nZS5pc051bGwoKSkgewotICAgICAgICBmcHV0cygiKG51bGwpIiwg
c3Rkb3V0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBwcmludGYoInJhbmdlIGZyb20g
JWQgb2YgIiwgcmFuZ2Uuc3RhcnRPZmZzZXQoKSk7Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0g
ICAgV2ViTm9kZSBzdGFydE5vZGUgPSByYW5nZS5zdGFydENvbnRhaW5lcihleGNlcHRpb24pOwot
ICAgIHByaW50Tm9kZURlc2NyaXB0aW9uKHN0YXJ0Tm9kZSwgZXhjZXB0aW9uKTsKLSAgICBwcmlu
dGYoIiB0byAlZCBvZiAiLCByYW5nZS5lbmRPZmZzZXQoKSk7Ci0gICAgV2ViTm9kZSBlbmROb2Rl
ID0gcmFuZ2UuZW5kQ29udGFpbmVyKGV4Y2VwdGlvbik7Ci0gICAgcHJpbnROb2RlRGVzY3JpcHRp
b24oZW5kTm9kZSwgZXhjZXB0aW9uKTsKLX0KLQotc3RhdGljIHN0cmluZyBlZGl0aW5nQWN0aW9u
RGVzY3JpcHRpb24oV2ViRWRpdGluZ0FjdGlvbiBhY3Rpb24pCi17Ci0gICAgc3dpdGNoIChhY3Rp
b24pIHsKLSAgICBjYXNlIFdlYktpdDo6V2ViRWRpdGluZ0FjdGlvblR5cGVkOgotICAgICAgICBy
ZXR1cm4gIldlYlZpZXdJbnNlcnRBY3Rpb25UeXBlZCI7Ci0gICAgY2FzZSBXZWJLaXQ6OldlYkVk
aXRpbmdBY3Rpb25QYXN0ZWQ6Ci0gICAgICAgIHJldHVybiAiV2ViVmlld0luc2VydEFjdGlvblBh
c3RlZCI7Ci0gICAgY2FzZSBXZWJLaXQ6OldlYkVkaXRpbmdBY3Rpb25Ecm9wcGVkOgotICAgICAg
ICByZXR1cm4gIldlYlZpZXdJbnNlcnRBY3Rpb25Ecm9wcGVkIjsKLSAgICB9Ci0gICAgcmV0dXJu
ICIoVU5LTk9XTiBBQ1RJT04pIjsKLX0KLQotc3RhdGljIHN0cmluZyB0ZXh0QWZmaW5pdHlEZXNj
cmlwdGlvbihXZWJUZXh0QWZmaW5pdHkgYWZmaW5pdHkpCi17Ci0gICAgc3dpdGNoIChhZmZpbml0
eSkgewotICAgIGNhc2UgV2ViS2l0OjpXZWJUZXh0QWZmaW5pdHlVcHN0cmVhbToKLSAgICAgICAg
cmV0dXJuICJOU1NlbGVjdGlvbkFmZmluaXR5VXBzdHJlYW0iOwotICAgIGNhc2UgV2ViS2l0OjpX
ZWJUZXh0QWZmaW5pdHlEb3duc3RyZWFtOgotICAgICAgICByZXR1cm4gIk5TU2VsZWN0aW9uQWZm
aW5pdHlEb3duc3RyZWFtIjsKLSAgICB9Ci0gICAgcmV0dXJuICIoVU5LTk9XTiBBRkZJTklUWSki
OwotfQotCiAvLyBXZWJWaWV3Q2xpZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2ViVmlldyogV2ViVmlld0hvc3Q6OmNy
ZWF0ZVZpZXcoV2ViRnJhbWUqIGNyZWF0b3IsIGNvbnN0IFdlYlVSTFJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFdlYldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2ViU3RyaW5nJiwgV2ViTmF2aWdhdGlv
blBvbGljeSkKQEAgLTMyNSw4MyArMjg2LDM5IEBAIHZvaWQgV2ViVmlld0hvc3Q6OmRpZFN0b3BM
b2FkaW5nKCkKICAgICBtX3NoZWxsLT5zZXRJc0xvYWRpbmcoZmFsc2UpOwogfQogCi0vLyBUaGUg
b3V0cHV0IGZyb20gdGhlc2UgbWV0aG9kcyBpbiBsYXlvdXQgdGVzdCBtb2RlIHNob3VsZCBtYXRj
aCB0aGF0Ci0vLyBleHBlY3RlZCBieSB0aGUgbGF5b3V0IHRlc3RzLiBTZWUgRWRpdGluZ0RlbGVn
YXRlLm0gaW4gRHVtcFJlbmRlclRyZWUuCi0KIGJvb2wgV2ViVmlld0hvc3Q6OnNob3VsZEJlZ2lu
RWRpdGluZyhjb25zdCBXZWJSYW5nZSYgcmFuZ2UpCiB7Ci0gICAgaWYgKHRlc3RSdW5uZXIoKS0+
c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgewotICAgICAgICBmcHV0cygiRURJVElORyBE
RUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZToiLCBzdGRvdXQpOwotICAgICAg
ICBwcmludFJhbmdlRGVzY3JpcHRpb24ocmFuZ2UpOwotICAgICAgICBmcHV0cygiXG4iLCBzdGRv
dXQpOwotICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBXZWJWaWV3SG9zdDo6c2hv
dWxkRW5kRWRpdGluZyhjb25zdCBXZWJSYW5nZSYgcmFuZ2UpCiB7Ci0gICAgaWYgKHRlc3RSdW5u
ZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkgewotICAgICAgICBmcHV0cygiRURJ
VElORyBERUxFR0FURTogc2hvdWxkRW5kRWRpdGluZ0luRE9NUmFuZ2U6Iiwgc3Rkb3V0KTsKLSAg
ICAgICAgcHJpbnRSYW5nZURlc2NyaXB0aW9uKHJhbmdlKTsKLSAgICAgICAgZnB1dHMoIlxuIiwg
c3Rkb3V0KTsKLSAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgV2ViVmlld0hvc3Q6
OnNob3VsZEluc2VydE5vZGUoY29uc3QgV2ViTm9kZSYgbm9kZSwgY29uc3QgV2ViUmFuZ2UmIHJh
bmdlLCBXZWJFZGl0aW5nQWN0aW9uIGFjdGlvbikKIHsKLSAgICBpZiAodGVzdFJ1bm5lcigpLT5z
aG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAgIGZwdXRzKCJFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiIsIHN0ZG91dCk7Ci0gICAgICAgIHByaW50Tm9kZURl
c2NyaXB0aW9uKG5vZGUsIDApOwotICAgICAgICBmcHV0cygiIHJlcGxhY2luZ0RPTVJhbmdlOiIs
IHN0ZG91dCk7Ci0gICAgICAgIHByaW50UmFuZ2VEZXNjcmlwdGlvbihyYW5nZSk7Ci0gICAgICAg
IHByaW50ZigiIGdpdmVuQWN0aW9uOiVzXG4iLCBlZGl0aW5nQWN0aW9uRGVzY3JpcHRpb24oYWN0
aW9uKS5jX3N0cigpKTsKLSAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgV2ViVmll
d0hvc3Q6OnNob3VsZEluc2VydFRleHQoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBjb25zdCBXZWJS
YW5nZSYgcmFuZ2UsIFdlYkVkaXRpbmdBY3Rpb24gYWN0aW9uKQogewotICAgIGlmICh0ZXN0UnVu
bmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgcHJpbnRmKCJF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnRUZXh0OiVzIHJlcGxhY2luZ0RPTVJhbmdlOiIs
IHRleHQudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHByaW50UmFuZ2VEZXNjcmlwdGlvbihyYW5n
ZSk7Ci0gICAgICAgIHByaW50ZigiIGdpdmVuQWN0aW9uOiVzXG4iLCBlZGl0aW5nQWN0aW9uRGVz
Y3JpcHRpb24oYWN0aW9uKS5jX3N0cigpKTsKLSAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
IGJvb2wgV2ViVmlld0hvc3Q6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoCiAgICAgY29uc3Qg
V2ViUmFuZ2UmIGZyb21SYW5nZSwgY29uc3QgV2ViUmFuZ2UmIHRvUmFuZ2UsIFdlYlRleHRBZmZp
bml0eSBhZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykKIHsKLSAgICBpZiAodGVzdFJ1bm5l
cigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7Ci0gICAgICAgIGZwdXRzKCJFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOiIsIHN0ZG91dCk7Ci0g
ICAgICAgIHByaW50UmFuZ2VEZXNjcmlwdGlvbihmcm9tUmFuZ2UpOwotICAgICAgICBmcHV0cygi
IHRvRE9NUmFuZ2U6Iiwgc3Rkb3V0KTsKLSAgICAgICAgcHJpbnRSYW5nZURlc2NyaXB0aW9uKHRv
UmFuZ2UpOwotICAgICAgICBwcmludGYoIiBhZmZpbml0eTolcyBzdGlsbFNlbGVjdGluZzolc1xu
IiwKLSAgICAgICAgICAgICAgIHRleHRBZmZpbml0eURlc2NyaXB0aW9uKGFmZmluaXR5KS5jX3N0
cigpLAotICAgICAgICAgICAgICAgKHN0aWxsU2VsZWN0aW5nID8gIlRSVUUiIDogIkZBTFNFIikp
OwotICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBXZWJWaWV3SG9zdDo6c2hvdWxk
RGVsZXRlUmFuZ2UoY29uc3QgV2ViUmFuZ2UmIHJhbmdlKQogewotICAgIGlmICh0ZXN0UnVubmVy
KCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgZnB1dHMoIkVESVRJ
TkcgREVMRUdBVEU6IHNob3VsZERlbGV0ZURPTVJhbmdlOiIsIHN0ZG91dCk7Ci0gICAgICAgIHBy
aW50UmFuZ2VEZXNjcmlwdGlvbihyYW5nZSk7Ci0gICAgICAgIGZwdXRzKCJcbiIsIHN0ZG91dCk7
Ci0gICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFdlYlZpZXdIb3N0OjpzaG91bGRB
cHBseVN0eWxlKGNvbnN0IFdlYlN0cmluZyYgc3R5bGUsIGNvbnN0IFdlYlJhbmdlJiByYW5nZSkK
IHsKLSAgICBpZiAodGVzdFJ1bm5lcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKSB7
Ci0gICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTogc2hvdWxkQXBwbHlTdHlsZTolcyB0
b0VsZW1lbnRzSW5ET01SYW5nZToiLCBzdHlsZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcHJp
bnRSYW5nZURlc2NyaXB0aW9uKHJhbmdlKTsKLSAgICAgICAgZnB1dHMoIlxuIiwgc3Rkb3V0KTsK
LSAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQxNSwzNCArMzMyLDYgQEAgYm9vbCBX
ZWJWaWV3SG9zdDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkKICAgICByZXR1
cm4gbV9zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOwogfQogCi12b2lkIFdlYlZpZXdI
b3N0OjpkaWRCZWdpbkVkaXRpbmcoKQotewotICAgIGlmICghdGVzdFJ1bm5lcigpLT5zaG91bGRE
dW1wRWRpdGluZ0NhbGxiYWNrcygpKQotICAgICAgICByZXR1cm47Ci0gICAgZnB1dHMoIkVESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGlu
Z05vdGlmaWNhdGlvblxuIiwgc3Rkb3V0KTsKLX0KLQotdm9pZCBXZWJWaWV3SG9zdDo6ZGlkQ2hh
bmdlU2VsZWN0aW9uKGJvb2wgaXNFbXB0eVNlbGVjdGlvbikKLXsKLSAgICBpZiAodGVzdFJ1bm5l
cigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQotICAgICAgICBmcHV0cygiRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uTm90aWZpY2F0aW9uXG4iLCBzdGRvdXQpOwotICAgIC8vIE5vIG5lZWQgdG8gdXBkYXRl
IGNsaXBib2FyZCB3aXRoIHRoZSBzZWxlY3RlZCB0ZXh0IGluIERSVC4KLX0KLQotdm9pZCBXZWJW
aWV3SG9zdDo6ZGlkQ2hhbmdlQ29udGVudHMoKQotewotICAgIGlmICghdGVzdFJ1bm5lcigpLT5z
aG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQotICAgICAgICByZXR1cm47Ci0gICAgZnB1dHMo
IkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlm
aWNhdGlvblxuIiwgc3Rkb3V0KTsKLX0KLQotdm9pZCBXZWJWaWV3SG9zdDo6ZGlkRW5kRWRpdGlu
ZygpCi17Ci0gICAgaWYgKCF0ZXN0UnVubmVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tz
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBmcHV0cygiRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZEVuZEVkaXRpbmc6V2ViVmlld0RpZEVuZEVkaXRpbmdOb3RpZmljYXRpb25cbiIsIHN0ZG91
dCk7Ci19Ci0KIGJvb2wgV2ViVmlld0hvc3Q6OmhhbmRsZUN1cnJlbnRLZXlib2FyZEV2ZW50KCkK
IHsKICAgICBpZiAobV9lZGl0Q29tbWFuZE5hbWUuZW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4IDE2MmQxYTQyZWQ1MzY4Y2Y2NTQ0ZWY4
NWY1ZDA1ZDAwN2UyOGU4ODQuLmE0ZDQ4ZDE0ZjYxYmIxYjc3NWM0YzM3YzIwM2YzM2ZhYzIzMmE2
MjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAt
MTc4LDEwICsxNzgsNiBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZp
ZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1lQ2xpZW50LAogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRBcHBseVN0eWxlKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBzdHlsZSwgY29uc3Qg
V2ViS2l0OjpXZWJSYW5nZSYpOwogICAgIHZpcnR1YWwgYm9vbCBpc1NtYXJ0SW5zZXJ0RGVsZXRl
RW5hYmxlZCgpOwogICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVu
YWJsZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5FZGl0aW5nKCk7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihib29sIGlzU2VsZWN0aW9uRW1wdHkpOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50cygpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRF
ZGl0aW5nKCk7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZUN1cnJlbnRLZXlib2FyZEV2ZW50KCk7
CiAgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsQWxlcnREaWFsb2coV2ViS2l0OjpXZWJGcmFtZSos
IGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIHJ1bk1vZGFsQ29u
ZmlybURpYWxvZyhXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>