<?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>107270</bug_id>
          
          <creation_ts>2013-01-18 05:46:14 -0800</creation_ts>
          <short_desc>[chromium] move methods interacting with willSendRequest to TestRunner</short_desc>
          <delta_ts>2013-01-21 03:17:54 -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>Tools / Tests</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>
          
          <blocked>91308</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>jochen</reporter>
          <assigned_to>jochen</assigned_to>
          <cc>abarth</cc>
    
    <cc>dcarney</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>810506</commentid>
    <comment_count>0</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-01-18 05:46:14 -0800</bug_when>
    <thetext>// Causes WillSendRequest to clear certain headers.
    void setWillSendRequestClearHeader(const CppArgumentList&amp;, CppVariant*);

    // Causes WillSendRequest to block redirects.
    void setWillSendRequestReturnsNullOnRedirect(const CppArgumentList&amp;, CppVariant*);

    // Causes WillSendRequest to return an empty request.
    void setWillSendRequestReturnsNull(const CppArgumentList&amp;, CppVariant*);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811680</commentid>
    <comment_count>1</comment_count>
      <attachid>183686</attachid>
    <who name="">jochen</who>
    <bug_when>2013-01-20 14:33:53 -0800</bug_when>
    <thetext>Created attachment 183686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811683</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-20 14:37:45 -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>811691</commentid>
    <comment_count>3</comment_count>
      <attachid>183686</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-20 15:13:16 -0800</bug_when>
    <thetext>Comment on attachment 183686
Patch

Attachment 183686 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16011040

New failing tests:
media/media-blocked-by-willsendrequest.html
http/tests/misc/will-send-request-returns-null-on-redirect.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811973</commentid>
    <comment_count>4</comment_count>
      <attachid>183743</attachid>
    <who name="">jochen</who>
    <bug_when>2013-01-21 02:39:26 -0800</bug_when>
    <thetext>Created attachment 183743
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811980</commentid>
    <comment_count>5</comment_count>
      <attachid>183743</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-01-21 02:48:37 -0800</bug_when>
    <thetext>Comment on attachment 183743
Patch

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

&gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:898
&gt; +    if (request.url().isEmpty())
&gt; +        return;

Why is this needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811982</commentid>
    <comment_count>6</comment_count>
      <attachid>183743</attachid>
    <who name="">jochen</who>
    <bug_when>2013-01-21 02:52:17 -0800</bug_when>
    <thetext>Comment on attachment 183743
Patch

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

&gt;&gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:898
&gt;&gt; +        return;
&gt; 
&gt; Why is this needed?

WebTestProxyBase::willSendRequest can replace the request with an empty request to block the request.

Without this, the call to webkit_support::RewriteLayoutTestsURL at the end of willSendRequest will put there a non-empty URL, and the request doesn&apos;t get blocked</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811983</commentid>
    <comment_count>7</comment_count>
      <attachid>183743</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-01-21 02:54:49 -0800</bug_when>
    <thetext>Comment on attachment 183743
Patch

looks ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811993</commentid>
    <comment_count>8</comment_count>
      <attachid>183743</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-21 03:17:50 -0800</bug_when>
    <thetext>Comment on attachment 183743
Patch

Clearing flags on attachment: 183743

Committed r140318: &lt;http://trac.webkit.org/changeset/140318&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811994</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-21 03:17:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183686</attachid>
            <date>2013-01-20 14:33:53 -0800</date>
            <delta_ts>2013-01-21 02:39:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107270-20130120233049.patch</filename>
            <type>text/plain</type>
            <size>17508</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMjgxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzg2MWJlMjc1ZmI5OWU0OTgwOWM3ODAzMTQ4ZWFiYmNl
NTRjN2FlNS4uODFiYWQ3NjQxODg4YjQwYjk0NGI0ZDRmNmM1NDY3OGVmNTBjOGEwZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQy
IEBACiAyMDEzLTAxLTIwICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgog
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBtZXRob2RzIGludGVyYWN0aW5nIHdpdGggd2lsbFNl
bmRSZXF1ZXN0IHRvIFRlc3RSdW5uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNzI3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5j
cHA6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpEUlRUZXN0UnVubmVyKToKKyAgICAgICAgKERS
VFRlc3RSdW5uZXI6OndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcik6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
VGVzdFJ1bm5lci5oOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFJ1bm5lcjo6c2hv
dWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6V2ViVGVzdFJ1bm5lcjo6aHR0cEhlYWRlcnNUb0NsZWFyKToKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXI6OldlYlRlc3RSdW5uZXI6OnNob3VsZEJsb2NrUmVkaXJlY3RzKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RSdW5uZXI6OndpbGxTZW5kUmVxdWVzdFNob3VsZFJl
dHVybk51bGwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6
VGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpyZXNldCk6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpodHRwSGVhZGVyc1RvQ2xlYXIp
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0
UnVubmVyOjpzaG91bGRCbG9ja1JlZGlyZWN0cyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpU
ZXN0UnVubmVyOjp3aWxsU2VuZFJlcXVlc3RTaG91bGRSZXR1cm5OdWxsKToKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldFdpbGxTZW5kUmVxdWVzdFJl
dHVybnNOdWxsT25SZWRpcmVjdCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVy
OjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oOgorICAgICAgICAoVGVzdFJ1
bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
V2ViVGVzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJh
c2U6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OndpbGxTZW5kUmVxdWVzdCk6
CisgICAgICAgIChXZWJWaWV3SG9zdDo6cmVzZXQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6CisgICAgICAgIChXZWJWaWV3SG9zdCk6CisKKzIwMTMt
MDEtMjAgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAg
W2Nocm9taXVtXSBtb3ZlIGZyYW1lIGdlbmVyYXRpb24gcmVsYXRlZCBtZXRob2RzIHRvIFRlc3RS
dW5uZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NzI2OAogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0
UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIu
Y3BwCmluZGV4IDI5NTVmNmNjYzA1MzY4YWY1NzI5YTJlZGU5Y2Y4MzVjMzBhOTM1NjAuLmRmMGQ3
NmQ5ZGI4YzQ5Mjg4OTBkMjEyZDk4NTlmMTdlZDdiYjgxOGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCkBAIC05OCw5ICs5OCw2IEBAIERS
VFRlc3RSdW5uZXI6OkRSVFRlc3RSdW5uZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0
aG9kKCJxdWV1ZVJlbG9hZCIsICZEUlRUZXN0UnVubmVyOjpxdWV1ZVJlbG9hZCk7CiAgICAgYmlu
ZE1ldGhvZCgic2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlIiwgJkRSVFRlc3RS
dW5uZXI6OnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSk7CiAgICAgYmluZE1l
dGhvZCgic2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0Q3VzdG9t
UG9saWN5RGVsZWdhdGUpOwotICAgIGJpbmRNZXRob2QoInNldFdpbGxTZW5kUmVxdWVzdENsZWFy
SGVhZGVyIiwgJkRSVFRlc3RSdW5uZXI6OnNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyKTsK
LSAgICBiaW5kTWV0aG9kKCJzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCIsICZEUlRUZXN0
UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCk7Ci0gICAgYmluZE1ldGhvZCgi
c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0IiwgJkRSVFRlc3RSdW5uZXI6
OnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdCk7CiAgICAgYmluZE1ldGhv
ZCgid2FpdEZvclBvbGljeURlbGVnYXRlIiwgJkRSVFRlc3RSdW5uZXI6OndhaXRGb3JQb2xpY3lE
ZWxlZ2F0ZSk7CiAgICAgYmluZE1ldGhvZCgid2FpdFVudGlsRG9uZSIsICZEUlRUZXN0UnVubmVy
Ojp3YWl0VW50aWxEb25lKTsKICAgICBiaW5kTWV0aG9kKCJ3aW5kb3dDb3VudCIsICZEUlRUZXN0
UnVubmVyOjp3aW5kb3dDb3VudCk7CkBAIC00MDUsMjcgKzQwMiwzIEBAIHZvaWQgRFJUVGVzdFJ1
bm5lcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqIHJlCiAgICAgbV93YWl0VW50aWxEb25lID0gdHJ1ZTsKICAgICByZXN1bHQtPnNldE51
bGwoKTsKIH0KLQotdm9pZCBEUlRUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhl
YWRlcihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0
KQotewotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNTdHJp
bmcoKSkgewotICAgICAgICBzdHJpbmcgaGVhZGVyID0gYXJndW1lbnRzWzBdLnRvU3RyaW5nKCk7
Ci0gICAgICAgIGlmICghaGVhZGVyLmVtcHR5KCkpCi0gICAgICAgICAgICBtX3NoZWxsLT53ZWJW
aWV3SG9zdCgpLT5hZGRDbGVhckhlYWRlcihTdHJpbmc6OmZyb21VVEY4KGhlYWRlci5jX3N0cigp
KSk7Ci0gICAgfQotICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotfQotCi12b2lkIERSVFRlc3RSdW5u
ZXI6OnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdChjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIGlmIChhcmd1
bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpCi0gICAgICAgIG1fc2hl
bGwtPndlYlZpZXdIb3N0KCktPnNldEJsb2NrUmVkaXJlY3RzKGFyZ3VtZW50c1swXS52YWx1ZS5i
b29sVmFsdWUpOwotICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotfQotCi12b2lkIERSVFRlc3RSdW5u
ZXI6OnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYg
YXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXpl
KCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkKLSAgICAgICAgbV9zaGVsbC0+d2ViVmll
d0hvc3QoKS0+c2V0UmVxdWVzdFJldHVybk51bGwoYXJndW1lbnRzWzBdLnZhbHVlLmJvb2xWYWx1
ZSk7Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci19CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9EUlRUZXN0UnVubmVyLmgKaW5kZXggYWU5NzkzNDg3ZTlkMjZkZGNkNzUzOGJjYTAy
OGQ0NDFiYzMzNDc2OS4uNzhiY2FkN2Y1M2IzNjVhNGIyMjgwMjk3ZDM3MjdkOTg3OGUyOWM4MSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaApAQCAt
OTgsMTUgKzk4LDYgQEAgcHVibGljOgogICAgIC8vIERlbGF5cyBjb21wbGV0aW9uIG9mIHRoZSB0
ZXN0IHVudGlsIHRoZSBwb2xpY3kgZGVsZWdhdGUgcnVucy4KICAgICB2b2lkIHdhaXRGb3JQb2xp
Y3lEZWxlZ2F0ZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKLSAgICAv
LyBDYXVzZXMgV2lsbFNlbmRSZXF1ZXN0IHRvIGNsZWFyIGNlcnRhaW4gaGVhZGVycy4KLSAgICB2
b2lkIHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKLQotICAgIC8vIENhdXNlcyBXaWxsU2VuZFJlcXVlc3QgdG8gYmxvY2sg
cmVkaXJlY3RzLgotICAgIHZvaWQgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGly
ZWN0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLQotICAgIC8vIENhdXNl
cyBXaWxsU2VuZFJlcXVlc3QgdG8gcmV0dXJuIGFuIGVtcHR5IHJlcXVlc3QuCi0gICAgdm9pZCBz
ZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7Ci0KIHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIG5v
dCBleHBvc2VkIHRvIEphdmFTY3JpcHQuCiAgICAgdm9pZCBzZXRXb3JrUXVldWVGcm96ZW4oYm9v
bCBmcm96ZW4pIHsgbV93b3JrUXVldWUuc2V0RnJvemVuKGZyb3plbik7IH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RS
dW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYlRlc3RSdW5uZXIuaAppbmRleCAxYTk2MGUwZWQyMDdlYzBiYmFhMTI0ZmRlNDEwOWU4NmIx
YTA2NWM4Li5mOTRmODU5NzE5YjgzZGE1YWZkNDVjNDY2NGVkMTgwYzU3MGFkYzM2IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJU
ZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9wdWJsaWMvV2ViVGVzdFJ1bm5lci5oCkBAIC0zMiw2ICszMiw4IEBACiAjZGVmaW5lIFdlYlRl
c3RSdW5uZXJfaAogCiAjaW5jbHVkZSAiV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0RGly
ZWN0aW9uLmgiCisjaW5jbHVkZSA8c2V0PgorI2luY2x1ZGUgPHN0cmluZz4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBXZWJBcnJheUJ1ZmZlclZpZXc7CkBAIC03Myw4ICs3NSwxMSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHRlc3RSZXBhaW50KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3dlZXBIb3Jpem9udGFsbHkoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1ByaW50aW5nKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdC
ZWZvcmVVbmxvYWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfSAKKyAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZVRleHREaXJlY3Rpb24oV2ViS2l0
OjpXZWJUZXh0RGlyZWN0aW9uKSB7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IHN0ZDo6c2V0PHN0ZDo6
c3RyaW5nPiogaHR0cEhlYWRlcnNUb0NsZWFyKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRCbG9ja1JlZGlyZWN0cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIHdpbGxTZW5kUmVxdWVzdFNob3VsZFJldHVybk51bGwoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAppbmRleCA3
MmIwZDczZDlkNTA5YjhmNTM3N2YwYmY2NWM5NDg5NjdmMDQyODRkLi5lMDI3MzAxN2I1MzBkYzUx
YmIyMTY4YzdjY2U5YjNiNDY4NmI3NTgyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcApAQCAtMjAx
LDYgKzIwMSw5IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgIGJpbmRNZXRob2QoInJl
cGFpbnRTd2VlcEhvcml6b250YWxseSIsICZUZXN0UnVubmVyOjpyZXBhaW50U3dlZXBIb3Jpem9u
dGFsbHkpOwogICAgIGJpbmRNZXRob2QoInNldFByaW50aW5nIiwgJlRlc3RSdW5uZXI6OnNldFBy
aW50aW5nKTsKICAgICBiaW5kTWV0aG9kKCJzZXRTaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGlu
Z0JlZm9yZVVubG9hZCIsICZUZXN0UnVubmVyOjpzZXRTaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5k
bGluZ0JlZm9yZVVubG9hZCk7CisgICAgYmluZE1ldGhvZCgic2V0V2lsbFNlbmRSZXF1ZXN0Q2xl
YXJIZWFkZXIiLCAmVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIpOwor
ICAgIGJpbmRNZXRob2QoInNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsIiwgJlRlc3RSdW5u
ZXI6OnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRX
aWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QiLCAmVGVzdFJ1bm5lcjo6c2V0V2ls
bFNlbmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0KTsKIAogICAgIC8vIFRoZSBmb2xsb3dp
bmcgbWV0aG9kcyBpbnRlcmFjdCB3aXRoIHRoZSBXZWJUZXN0UHJveHkuCiAgICAgYmluZE1ldGhv
ZCgic2VuZFdlYkludGVudFJlc3BvbnNlIiwgJlRlc3RSdW5uZXI6OnNlbmRXZWJJbnRlbnRSZXNw
b25zZSk7CkBAIC0zMzMsNiArMzM2LDEwIEBAIHZvaWQgVGVzdFJ1bm5lcjo6cmVzZXQoKQogICAg
IG1fc3dlZXBIb3Jpem9udGFsbHkgPSBmYWxzZTsKICAgICBtX2lzUHJpbnRpbmcgPSBmYWxzZTsK
ICAgICBtX3Nob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkID0gZmFsc2U7
CisgICAgbV9zaG91bGRCbG9ja1JlZGlyZWN0cyA9IGZhbHNlOworICAgIG1fd2lsbFNlbmRSZXF1
ZXN0U2hvdWxkUmV0dXJuTnVsbCA9IGZhbHNlOworCisgICAgbV9odHRwSGVhZGVyc1RvQ2xlYXIu
Y2xlYXIoKTsKIAogICAgIG1fZ2xvYmFsRmxhZy5zZXQoZmFsc2UpOwogICAgIG1fdGl0bGVUZXh0
RGlyZWN0aW9uLnNldCgibHRyIik7CkBAIC01MDAsNiArNTA3LDIxIEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0VGl0bGVUZXh0RGlyZWN0aW9uKFdlYktpdDo6V2ViVGV4dERpcmVjdGlvbiBkaXIpCiAg
ICAgbV90aXRsZVRleHREaXJlY3Rpb24uc2V0KGRpciA9PSBXZWJLaXQ6OldlYlRleHREaXJlY3Rp
b25MZWZ0VG9SaWdodCA/ICJsdHIiIDogInJ0bCIpOwogfQogCitjb25zdCBzdGQ6OnNldDxzdGQ6
OnN0cmluZz4qIFRlc3RSdW5uZXI6Omh0dHBIZWFkZXJzVG9DbGVhcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuICZtX2h0dHBIZWFkZXJzVG9DbGVhcjsKK30KKworYm9vbCBUZXN0UnVubmVyOjpzaG91
bGRCbG9ja1JlZGlyZWN0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2hvdWxkQmxvY2tSZWRp
cmVjdHM7Cit9CisKK2Jvb2wgVGVzdFJ1bm5lcjo6d2lsbFNlbmRSZXF1ZXN0U2hvdWxkUmV0dXJu
TnVsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2lsbFNlbmRSZXF1ZXN0U2hvdWxkUmV0dXJu
TnVsbDsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpkdW1wUGVybWlzc2lvbkNsaWVudENhbGxiYWNr
cyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgbV93
ZWJQZXJtaXNzaW9ucy0+c2V0RHVtcENhbGxiYWNrcyh0cnVlKTsKQEAgLTYwNiw2ICs2MjgsMzAg
QEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9y
ZVVubG9hZChjb25zdCBDcHBBcmd1bWVudEwKICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KIAor
dm9pZCBUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcihjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChh
cmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSkgeworICAgICAg
ICBzdHJpbmcgaGVhZGVyID0gYXJndW1lbnRzWzBdLnRvU3RyaW5nKCk7CisgICAgICAgIGlmICgh
aGVhZGVyLmVtcHR5KCkpCisgICAgICAgICAgICBtX2h0dHBIZWFkZXJzVG9DbGVhci5pbnNlcnQo
aGVhZGVyKTsKKyAgICB9CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgVGVzdFJ1
bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0KGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFy
Z3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkKKyAgICAgICAgbV9z
aG91bGRCbG9ja1JlZGlyZWN0cyA9IGFyZ3VtZW50c1swXS50b0Jvb2xlYW4oKTsKKyAgICByZXN1
bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RS
ZXR1cm5zTnVsbChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCog
cmVzdWx0KQoreworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0u
aXNCb29sKCkpCisgICAgICAgIG1fd2lsbFNlbmRSZXF1ZXN0U2hvdWxkUmV0dXJuTnVsbCA9IGFy
Z3VtZW50c1swXS50b0Jvb2xlYW4oKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwogdm9p
ZCBUZXN0UnVubmVyOjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBpZiAoYXJn
dW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5l
ci5oCmluZGV4IDZiMzQ0OTYxNGNiZDViM2FiMjg1ZTEyYWNkOGQxMTI4ZjU1ODZhNDguLjZhZDkw
YjFmYmIyZmZhM2Q3ODY0MGJmNGJkMDY4Njk1ZTYyMzEyZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgK
QEAgLTk1LDYgKzk1LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1ByaW50aW5nKCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN0YXlPblBhZ2VBZnRlckhh
bmRsaW5nQmVmb3JlVW5sb2FkKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFRpdGxlVGV4dERpcmVjdGlvbihXZWJLaXQ6OldlYlRleHREaXJlY3Rpb24pIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgY29uc3Qgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+KiBodHRwSGVhZGVyc1RvQ2xl
YXIoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQmxvY2tSZWRpcmVj
dHMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgd2lsbFNlbmRSZXF1ZXN0U2hv
dWxkUmV0dXJuTnVsbCgpIGNvbnN0IE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6CiAgICAgLy8gRklY
TUU6IG1ha2UgdGhlc2UgcHJpdmF0ZSBvbmNlIHRoZSBtb3ZlIGZyb20gRFJUVGVzdFJ1bm5lciB0
byBUZXN0UnVubmVyCkBAIC0zMjcsNiArMzMwLDE1IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNl
dFNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAorICAgIC8vIENhdXNlcyBXaWxsU2VuZFJlcXVlc3Qg
dG8gY2xlYXIgY2VydGFpbiBoZWFkZXJzLgorICAgIHZvaWQgc2V0V2lsbFNlbmRSZXF1ZXN0Q2xl
YXJIZWFkZXIoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCisgICAgLy8g
Q2F1c2VzIFdpbGxTZW5kUmVxdWVzdCB0byBibG9jayByZWRpcmVjdHMuCisgICAgdm9pZCBzZXRX
aWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOworCisgICAgLy8gQ2F1c2VzIFdpbGxTZW5kUmVxdWVzdCB0byByZXR1
cm4gYW4gZW1wdHkgcmVxdWVzdC4KKyAgICB2b2lkIHNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNO
dWxsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogICAgIC8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwogICAgIC8vIE1ldGhvZHMgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgV2ViVGVzdFBy
b3h5CiAKQEAgLTUyMyw2ICs1MzUsMTIgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9zaG91bGRT
dGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZDsKIAorICAgIGJvb2wgbV9zaG91bGRC
bG9ja1JlZGlyZWN0czsKKworICAgIGJvb2wgbV93aWxsU2VuZFJlcXVlc3RTaG91bGRSZXR1cm5O
dWxsOworCisgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IG1faHR0cEhlYWRlcnNUb0NsZWFyOwor
CiAgICAgLy8gV0FWIGF1ZGlvIGRhdGEgaXMgc3RvcmVkIGhlcmUuCiAgICAgV2ViS2l0OjpXZWJB
cnJheUJ1ZmZlclZpZXcgbV9hdWRpb0RhdGE7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwCmlu
ZGV4IDllYzA1ZWQ2YWU1ZDc2YTk2M2ZhODlmMjE5NzBkODBkYzQ5NGQ5OGMuLjc3YWVkMmI4YThm
MDE0MmZiNWM3MTJhMWQ5NmQ0OTkzZmIxN2EyOTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNw
cApAQCAtMTgwLDYgKzE4MCwxMSBAQCBzdHJpbmcgVVJMRGVzY3JpcHRpb24oY29uc3QgR1VSTCYg
dXJsKQogICAgIHJldHVybiB1cmwucG9zc2libHlfaW52YWxpZF9zcGVjKCk7CiB9CiAKK3ZvaWQg
YmxvY2tSZXF1ZXN0KFdlYlVSTFJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmVxdWVzdC5zZXRV
UkwoV2ViVVJMKCkpOworfQorCiB9CiAKIFdlYlRlc3RQcm94eUJhc2U6OldlYlRlc3RQcm94eUJh
c2UoKQpAQCAtNzEwLDYgKzcxNSwyMyBAQCB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OndpbGxTZW5k
UmVxdWVzdChXZWJGcmFtZSosIHVuc2lnbmVkIGlkZW50aWZpZXIsIFdlYktpdDo6VwogICAgICAg
ICBwcmludFJlc3BvbnNlRGVzY3JpcHRpb24obV9kZWxlZ2F0ZSwgcmVkaXJlY3RSZXNwb25zZSk7
CiAgICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiXG4iKTsKICAgICB9CisKKyAgICBp
ZiAoIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkgJiYgbV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1
bm5lcigpICYmIG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+c2hvdWxkQmxvY2tSZWRp
cmVjdHMoKSkgeworICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIlJldHVybmluZyBu
dWxsIGZvciB0aGlzIHJlZGlyZWN0XG4iKTsKKyAgICAgICAgYmxvY2tSZXF1ZXN0KHJlcXVlc3Qp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fdGVzdEludGVyZmFjZXMtPnRl
c3RSdW5uZXIoKSAmJiBtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCktPndpbGxTZW5kUmVx
dWVzdFNob3VsZFJldHVybk51bGwoKSkgeworICAgICAgICBibG9ja1JlcXVlc3QocmVxdWVzdCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVz
dFJ1bm5lcigpICYmIG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+aHR0cEhlYWRlcnNU
b0NsZWFyKCkpIHsKKyAgICAgICAgY29uc3Qgc2V0PHN0cmluZz4gKmNsZWFySGVhZGVycyA9IG1f
dGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+aHR0cEhlYWRlcnNUb0NsZWFyKCk7CisgICAg
ICAgIGZvciAoc2V0PHN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGhlYWRlciA9IGNsZWFySGVhZGVy
cy0+YmVnaW4oKTsgaGVhZGVyICE9IGNsZWFySGVhZGVycy0+ZW5kKCk7ICsraGVhZGVyKQorICAg
ICAgICAgICAgcmVxdWVzdC5jbGVhckhUVFBIZWFkZXJGaWVsZChXZWJTdHJpbmc6OmZyb21VVEY4
KCpoZWFkZXIpKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViVGVzdFByb3h5QmFzZTo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkZyYW1lKiwgdW5zaWduZWQgaWRlbnRpZmllciwgY29uc3QgV2ViS2l0OjpX
ZWJVUkxSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggNDRjNzlhYWYxNTY2N2NiNGI4MGVkYzFmMTUyM2FlMzJm
NzA4ZjBjYS4uYzdkYmQ0NjZlYzRmMjk5ODE3OWEyYzQ5OTYxMDExOGY5NjZkZGM3NiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtOTAyLDE3
ICs5MDIsNiBAQCB2b2lkIFdlYlZpZXdIb3N0Ojp3aWxsU2VuZFJlcXVlc3QoV2ViRnJhbWUqIGZy
YW1lLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBXZWJVUkxSZQogCiAgICAgcmVxdWVzdC5zZXRFeHRy
YURhdGEod2Via2l0X3N1cHBvcnQ6OkNyZWF0ZVdlYlVSTFJlcXVlc3RFeHRyYURhdGEoZnJhbWUt
PmRvY3VtZW50KCkucmVmZXJyZXJQb2xpY3koKSkpOwogCi0gICAgaWYgKCFyZWRpcmVjdFJlc3Bv
bnNlLmlzTnVsbCgpICYmIG1fYmxvY2tzUmVkaXJlY3RzKSB7Ci0gICAgICAgIGZwdXRzKCJSZXR1
cm5pbmcgbnVsbCBmb3IgdGhpcyByZWRpcmVjdFxuIiwgc3Rkb3V0KTsKLSAgICAgICAgYmxvY2tS
ZXF1ZXN0KHJlcXVlc3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1fcmVx
dWVzdFJldHVybk51bGwpIHsKLSAgICAgICAgYmxvY2tSZXF1ZXN0KHJlcXVlc3QpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCiAgICAgc3RyaW5nIGhvc3QgPSB1cmwuaG9zdCgpOwogICAgIGlm
ICghaG9zdC5lbXB0eSgpICYmICh1cmwuU2NoZW1lSXMoImh0dHAiKSB8fCB1cmwuU2NoZW1lSXMo
Imh0dHBzIikpKSB7CiAgICAgICAgIGlmICghaXNMb2NhbGhvc3QoaG9zdCkgJiYgIWhvc3RJc1Vz
ZWRCeVNvbWVUZXN0c1RvR2VuZXJhdGVFcnJvcihob3N0KQpAQCAtOTI0LDEwICs5MTMsNiBAQCB2
b2lkIFdlYlZpZXdIb3N0Ojp3aWxsU2VuZFJlcXVlc3QoV2ViRnJhbWUqIGZyYW1lLCB1bnNpZ25l
ZCBpZGVudGlmaWVyLCBXZWJVUkxSZQogICAgICAgICB9CiAgICAgfQogCi0gICAgSGFzaFNldDxT
dHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2NsZWFySGVhZGVycy5lbmQoKTsKLSAgICBm
b3IgKEhhc2hTZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaGVhZGVyID0gbV9jbGVhckhlYWRl
cnMuYmVnaW4oKTsgaGVhZGVyICE9IGVuZDsgKytoZWFkZXIpCi0gICAgICAgIHJlcXVlc3QuY2xl
YXJIVFRQSGVhZGVyRmllbGQoV2ViU3RyaW5nKGhlYWRlci0+Y2hhcmFjdGVycygpLCBoZWFkZXIt
Pmxlbmd0aCgpKSk7Ci0KICAgICAvLyBTZXQgdGhlIG5ldyBzdWJzdGl0dXRlZCBVUkwuCiAgICAg
cmVxdWVzdC5zZXRVUkwod2Via2l0X3N1cHBvcnQ6OlJld3JpdGVMYXlvdXRUZXN0c1VSTChyZXF1
ZXN0LnVybCgpLnNwZWMoKSkpOwogfQpAQCAtMTMwOSw4ICsxMjk0LDYgQEAgdm9pZCBXZWJWaWV3
SG9zdDo6cmVzZXQoKQogI2Vsc2UKICAgICBtX3NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJs
ZWQgPSBmYWxzZTsKICNlbmRpZgotICAgIG1fYmxvY2tzUmVkaXJlY3RzID0gZmFsc2U7Ci0gICAg
bV9yZXF1ZXN0UmV0dXJuTnVsbCA9IGZhbHNlOwogICAgIG1faXNQYWludGluZyA9IGZhbHNlOwog
ICAgIG1fY2FudmFzLmNsZWFyKCk7CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKQEAgLTEzMjEs
NyArMTMwNCw2IEBAIHZvaWQgV2ViVmlld0hvc3Q6OnJlc2V0KCkKICAgICBtX25hdmlnYXRpb25D
b250cm9sbGVyID0gYWRvcHRQdHIobmV3IFRlc3ROYXZpZ2F0aW9uQ29udHJvbGxlcih0aGlzKSk7
CiAKICAgICBtX3BlbmRpbmdFeHRyYURhdGEuY2xlYXIoKTsKLSAgICBtX2NsZWFySGVhZGVycy5j
bGVhcigpOwogICAgIG1fZWRpdENvbW1hbmROYW1lLmNsZWFyKCk7CiAgICAgbV9lZGl0Q29tbWFu
ZFZhbHVlLmNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oCmluZGV4IGQxYmQyNWZkY2RjNWUwNjEzYTRjZjQ3MGQwYTQ3YzdiYTQyNmQyZGEuLjYx
ZjgwNGE2NzA5YzBjZGE1N2JkNTM5YzRmMWE0MmU3ZTBjN2VkYjcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtOTMsOCArOTMsNiBAQCBjbGFzcyBX
ZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6
OldlYkZyYW1lQ2xpZW50LAogICAgIHZvaWQgd2FpdEZvclBvbGljeURlbGVnYXRlKCk7CiAgICAg
dm9pZCBzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sLCBib29sKTsKICAgICBXZWJLaXQ6Oldl
YkZyYW1lKiB0b3BMb2FkaW5nRnJhbWUoKSB7IHJldHVybiBtX3RvcExvYWRpbmdGcmFtZTsgfQot
ICAgIHZvaWQgc2V0QmxvY2tSZWRpcmVjdHMoYm9vbCBibG9jaykgeyBtX2Jsb2Nrc1JlZGlyZWN0
cyA9IGJsb2NrOyB9Ci0gICAgdm9pZCBzZXRSZXF1ZXN0UmV0dXJuTnVsbChib29sIHJldHVybk51
bGwpIHsgbV9yZXF1ZXN0UmV0dXJuTnVsbCA9IHJldHVybk51bGw7IH0KICAgICB2b2lkIHNldFBl
bmRpbmdFeHRyYURhdGEoUGFzc093blB0cjxUZXN0U2hlbGxFeHRyYURhdGE+KTsKIAogICAgIHZv
aWQgcGFpbnRSZWN0KGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOwpAQCAtMTA2LDggKzEwNCw2IEBA
IGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViVmlld0NsaWVudCwgcHVibGlj
IFdlYktpdDo6V2ViRnJhbWVDbGllbnQsCiAgICAgdm9pZCBsb2FkVVJMRm9yRnJhbWUoY29uc3Qg
V2ViS2l0OjpXZWJVUkwmLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgZnJhbWVOYW1lKTsKICAg
ICBUZXN0TmF2aWdhdGlvbkNvbnRyb2xsZXIqIG5hdmlnYXRpb25Db250cm9sbGVyKCkgeyByZXR1
cm4gbV9uYXZpZ2F0aW9uQ29udHJvbGxlci5nZXQoKTsgfQogCi0gICAgdm9pZCBhZGRDbGVhckhl
YWRlcihjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVyKSB7IG1fY2xlYXJIZWFkZXJzLmFkZChoZWFk
ZXIpOyB9Ci0gICAgY29uc3QgSGFzaFNldDxXVEY6OlN0cmluZz4mIGNsZWFySGVhZGVycygpIGNv
bnN0IHsgcmV0dXJuIG1fY2xlYXJIZWFkZXJzOyB9CiAgICAgdm9pZCBjbG9zZVdpZGdldCgpOwog
CiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKQEAgLTQwMiwxNSArMzk4LDYgQEAgcHJpdmF0ZToK
ICAgICAvLyB0cnVlIGlmIHdoYXRldmVyIGlzIHNlbnQgdG8gdGhlIGNvbnNvbGUgc2hvdWxkIGJl
IGxvZ2dlZCB0byBzdGRvdXQuCiAgICAgYm9vbCBtX2xvZ0NvbnNvbGVPdXRwdXQ7CiAKLSAgICAv
LyBTZXQgb2YgaGVhZGVycyB0byBjbGVhciBpbiB3aWxsU2VuZFJlcXVlc3QuCi0gICAgSGFzaFNl
dDxXVEY6OlN0cmluZz4gbV9jbGVhckhlYWRlcnM7Ci0KLSAgICAvLyB0cnVlIGlmIHdlIHNob3Vs
ZCBibG9jayBhbnkgcmVkaXJlY3RzCi0gICAgYm9vbCBtX2Jsb2Nrc1JlZGlyZWN0czsKLQotICAg
IC8vIHRydWUgaWYgd2Ugc2hvdWxkIGJsb2NrIChzZXQgYW4gZW1wdHkgcmVxdWVzdCBmb3IpIGFu
eSByZXF1ZXN0cwotICAgIGJvb2wgbV9yZXF1ZXN0UmV0dXJuTnVsbDsKLQogICAgIC8vIEVkaXQg
Y29tbWFuZCBhc3NvY2lhdGVkIHRvIHRoZSBjdXJyZW50IGtleWJvYXJkIGV2ZW50LgogICAgIHN0
ZDo6c3RyaW5nIG1fZWRpdENvbW1hbmROYW1lOwogICAgIHN0ZDo6c3RyaW5nIG1fZWRpdENvbW1h
bmRWYWx1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183743</attachid>
            <date>2013-01-21 02:39:26 -0800</date>
            <delta_ts>2013-01-21 03:17:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107270-20130121113621.patch</filename>
            <type>text/plain</type>
            <size>17894</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMzEzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2Q5Mjg3OTliY2FjOTBjMDNkZDU3NzRkOGQwM2I4Nzcz
YmJiM2YxMC4uN2Y5NGNiYTFmNTBlZjgzOGY1YjI2ZjAxNDFlN2M0YzlkZGIxZTcxMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQw
IEBACisyMDEzLTAxLTIwICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBtZXRob2RzIGludGVyYWN0aW5nIHdpdGggd2lsbFNl
bmRSZXF1ZXN0IHRvIFRlc3RSdW5uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNzI3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5j
cHA6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpEUlRUZXN0UnVubmVyKToKKyAgICAgICAgKERS
VFRlc3RSdW5uZXI6OndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcik6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
VGVzdFJ1bm5lci5oOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFJ1bm5lcjo6c2hv
dWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6V2ViVGVzdFJ1bm5lcjo6aHR0cEhlYWRlcnNUb0NsZWFyKToKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXI6OldlYlRlc3RSdW5uZXI6OnNob3VsZEJsb2NrUmVkaXJlY3RzKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RSdW5uZXI6OndpbGxTZW5kUmVxdWVzdFNob3VsZFJl
dHVybk51bGwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6
VGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpyZXNldCk6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpodHRwSGVhZGVyc1RvQ2xlYXIp
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0
UnVubmVyOjpzaG91bGRCbG9ja1JlZGlyZWN0cyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpU
ZXN0UnVubmVyOjp3aWxsU2VuZFJlcXVlc3RTaG91bGRSZXR1cm5OdWxsKToKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldFdpbGxTZW5kUmVxdWVzdFJl
dHVybnNOdWxsT25SZWRpcmVjdCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVy
OjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oOgorICAgICAgICAoVGVzdFJ1
bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
V2ViVGVzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJh
c2U6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OndpbGxTZW5kUmVxdWVzdCk6
CisgICAgICAgIChXZWJWaWV3SG9zdDo6cmVzZXQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6CisgICAgICAgIChXZWJWaWV3SG9zdCk6CisKIDIwMTMt
MDEtMjEgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAg
TWVkaWFTdHJlYW0gQVBJOiBVcGRhdGUgdGhlIFJUQ1BlZXJDb25uZWN0aW9uIHN0YXRlcyB0byBt
YXRjaCB0aGUgbGF0ZXN0IHNwZWNpZmljYXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggMjk1NWY2Y2NjMDUzNjhhZjU3MjlhMmVk
ZTljZjgzNWMzMGE5MzU2MC4uZGYwZDc2ZDlkYjhjNDkyODg5MGQyMTJkOTg1OWYxN2VkN2JiODE4
YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5l
ci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5j
cHAKQEAgLTk4LDkgKzk4LDYgQEAgRFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5lcihUZXN0U2hl
bGwqIHNoZWxsKQogICAgIGJpbmRNZXRob2QoInF1ZXVlUmVsb2FkIiwgJkRSVFRlc3RSdW5uZXI6
OnF1ZXVlUmVsb2FkKTsKICAgICBiaW5kTWV0aG9kKCJzZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NX
aGVuQ29tcGxldGUiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hl
bkNvbXBsZXRlKTsKICAgICBiaW5kTWV0aG9kKCJzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZSIsICZE
UlRUZXN0UnVubmVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZSk7Ci0gICAgYmluZE1ldGhvZCgi
c2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0V2lsbFNl
bmRSZXF1ZXN0Q2xlYXJIZWFkZXIpOwotICAgIGJpbmRNZXRob2QoInNldFdpbGxTZW5kUmVxdWVz
dFJldHVybnNOdWxsIiwgJkRSVFRlc3RSdW5uZXI6OnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNO
dWxsKTsKLSAgICBiaW5kTWV0aG9kKCJzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVk
aXJlY3QiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxPblJl
ZGlyZWN0KTsKICAgICBiaW5kTWV0aG9kKCJ3YWl0Rm9yUG9saWN5RGVsZWdhdGUiLCAmRFJUVGVz
dFJ1bm5lcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKTsKICAgICBiaW5kTWV0aG9kKCJ3YWl0VW50
aWxEb25lIiwgJkRSVFRlc3RSdW5uZXI6OndhaXRVbnRpbERvbmUpOwogICAgIGJpbmRNZXRob2Qo
IndpbmRvd0NvdW50IiwgJkRSVFRlc3RSdW5uZXI6OndpbmRvd0NvdW50KTsKQEAgLTQwNSwyNyAr
NDAyLDMgQEAgdm9pZCBEUlRUZXN0UnVubmVyOjp3YWl0Rm9yUG9saWN5RGVsZWdhdGUoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmUKICAgICBtX3dhaXRVbnRpbERvbmUgPSB0
cnVlOwogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQotCi12b2lkIERSVFRlc3RSdW5uZXI6OnNl
dFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAw
ICYmIGFyZ3VtZW50c1swXS5pc1N0cmluZygpKSB7Ci0gICAgICAgIHN0cmluZyBoZWFkZXIgPSBh
cmd1bWVudHNbMF0udG9TdHJpbmcoKTsKLSAgICAgICAgaWYgKCFoZWFkZXIuZW1wdHkoKSkKLSAg
ICAgICAgICAgIG1fc2hlbGwtPndlYlZpZXdIb3N0KCktPmFkZENsZWFySGVhZGVyKFN0cmluZzo6
ZnJvbVVURjgoaGVhZGVyLmNfc3RyKCkpKTsKLSAgICB9Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7
Ci19Ci0KLXZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxP
blJlZGlyZWN0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiBy
ZXN1bHQpCi17Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5p
c0Jvb2woKSkKLSAgICAgICAgbV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+c2V0QmxvY2tSZWRpcmVj
dHMoYXJndW1lbnRzWzBdLnZhbHVlLmJvb2xWYWx1ZSk7Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7
Ci19Ci0KLXZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsK
LSAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKQot
ICAgICAgICBtX3NoZWxsLT53ZWJWaWV3SG9zdCgpLT5zZXRSZXF1ZXN0UmV0dXJuTnVsbChhcmd1
bWVudHNbMF0udmFsdWUuYm9vbFZhbHVlKTsKLSAgICByZXN1bHQtPnNldE51bGwoKTsKLX0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaAppbmRleCBhZTk3
OTM0ODdlOWQyNmRkY2Q3NTM4YmNhMDI4ZDQ0MWJjMzM0NzY5Li43OGJjYWQ3ZjUzYjM2NWE0YjIy
ODAyOTdkMzcyN2Q5ODc4ZTI5YzgxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9EUlRUZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRFJUVGVzdFJ1bm5lci5oCkBAIC05OCwxNSArOTgsNiBAQCBwdWJsaWM6CiAgICAgLy8gRGVs
YXlzIGNvbXBsZXRpb24gb2YgdGhlIHRlc3QgdW50aWwgdGhlIHBvbGljeSBkZWxlZ2F0ZSBydW5z
LgogICAgIHZvaWQgd2FpdEZvclBvbGljeURlbGVnYXRlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKIAotICAgIC8vIENhdXNlcyBXaWxsU2VuZFJlcXVlc3QgdG8gY2xlYXIg
Y2VydGFpbiBoZWFkZXJzLgotICAgIHZvaWQgc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotCi0gICAgLy8gQ2F1c2VzIFdp
bGxTZW5kUmVxdWVzdCB0byBibG9jayByZWRpcmVjdHMuCi0gICAgdm9pZCBzZXRXaWxsU2VuZFJl
cXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOwotCi0gICAgLy8gQ2F1c2VzIFdpbGxTZW5kUmVxdWVzdCB0byByZXR1cm4gYW4gZW1w
dHkgcmVxdWVzdC4KLSAgICB2b2lkIHNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLQogcHVibGljOgogICAgIC8vIFRoZSBm
b2xsb3dpbmcgbWV0aG9kcyBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KICAgICB2b2lk
IHNldFdvcmtRdWV1ZUZyb3plbihib29sIGZyb3plbikgeyBtX3dvcmtRdWV1ZS5zZXRGcm96ZW4o
ZnJvemVuKTsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFJ1bm5lci5oCmluZGV4IDFhOTYwZTBlZDIw
N2VjMGJiYWExMjRmZGU0MTA5ZTg2YjFhMDY1YzguLmY5NGY4NTk3MTliODNkYTVhZmQ0NWM0NjY0
ZWQxODBjNTcwYWRjMzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UnVubmVyLmgKQEAgLTMyLDYg
KzMyLDggQEAKICNkZWZpbmUgV2ViVGVzdFJ1bm5lcl9oCiAKICNpbmNsdWRlICJXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlRleHREaXJlY3Rpb24uaCIKKyNpbmNsdWRlIDxzZXQ+CisjaW5jbHVk
ZSA8c3RyaW5nPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkFycmF5QnVmZmVyVmll
dzsKQEAgLTczLDggKzc1LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgdGVzdFJlcGFp
bnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzd2VlcEhvcml6
b250YWxseSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUHJp
bnRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRT
dGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9IAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9y
ZVVubG9hZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFRp
dGxlVGV4dERpcmVjdGlvbihXZWJLaXQ6OldlYlRleHREaXJlY3Rpb24pIHsgfQorICAgIHZpcnR1
YWwgY29uc3Qgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+KiBodHRwSGVhZGVyc1RvQ2xlYXIoKSBjb25z
dCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZEJsb2NrUmVkaXJlY3RzKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgd2lsbFNlbmRSZXF1ZXN0
U2hvdWxkUmV0dXJuTnVsbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0
UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RSdW5uZXIuY3BwCmluZGV4IDcyYjBkNzNkOWQ1MDliOGY1Mzc3ZjBiZjY1Yzk0ODk2N2Yw
NDI4NGQuLmUwMjczMDE3YjUzMGRjNTFiYjIxNjhjN2NjZTliM2I0Njg2Yjc1ODIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RSdW5uZXIuY3BwCkBAIC0yMDEsNiArMjAxLDkgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5l
cigpCiAgICAgYmluZE1ldGhvZCgicmVwYWludFN3ZWVwSG9yaXpvbnRhbGx5IiwgJlRlc3RSdW5u
ZXI6OnJlcGFpbnRTd2VlcEhvcml6b250YWxseSk7CiAgICAgYmluZE1ldGhvZCgic2V0UHJpbnRp
bmciLCAmVGVzdFJ1bm5lcjo6c2V0UHJpbnRpbmcpOwogICAgIGJpbmRNZXRob2QoInNldFNob3Vs
ZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkIiwgJlRlc3RSdW5uZXI6OnNldFNo
b3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkKTsKKyAgICBiaW5kTWV0aG9k
KCJzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlciIsICZUZXN0UnVubmVyOjpzZXRXaWxsU2Vu
ZFJlcXVlc3RDbGVhckhlYWRlcik7CisgICAgYmluZE1ldGhvZCgic2V0V2lsbFNlbmRSZXF1ZXN0
UmV0dXJuc051bGwiLCAmVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwp
OworICAgIGJpbmRNZXRob2QoInNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVj
dCIsICZUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3Qp
OwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2RzIGludGVyYWN0IHdpdGggdGhlIFdlYlRl
c3RQcm94eS4KICAgICBiaW5kTWV0aG9kKCJzZW5kV2ViSW50ZW50UmVzcG9uc2UiLCAmVGVzdFJ1
bm5lcjo6c2VuZFdlYkludGVudFJlc3BvbnNlKTsKQEAgLTMzMyw2ICszMzYsMTAgQEAgdm9pZCBU
ZXN0UnVubmVyOjpyZXNldCgpCiAgICAgbV9zd2VlcEhvcml6b250YWxseSA9IGZhbHNlOwogICAg
IG1faXNQcmludGluZyA9IGZhbHNlOwogICAgIG1fc2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxp
bmdCZWZvcmVVbmxvYWQgPSBmYWxzZTsKKyAgICBtX3Nob3VsZEJsb2NrUmVkaXJlY3RzID0gZmFs
c2U7CisgICAgbV93aWxsU2VuZFJlcXVlc3RTaG91bGRSZXR1cm5OdWxsID0gZmFsc2U7CisKKyAg
ICBtX2h0dHBIZWFkZXJzVG9DbGVhci5jbGVhcigpOwogCiAgICAgbV9nbG9iYWxGbGFnLnNldChm
YWxzZSk7CiAgICAgbV90aXRsZVRleHREaXJlY3Rpb24uc2V0KCJsdHIiKTsKQEAgLTUwMCw2ICs1
MDcsMjEgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRUaXRsZVRleHREaXJlY3Rpb24oV2ViS2l0OjpX
ZWJUZXh0RGlyZWN0aW9uIGRpcikKICAgICBtX3RpdGxlVGV4dERpcmVjdGlvbi5zZXQoZGlyID09
IFdlYktpdDo6V2ViVGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0ID8gImx0ciIgOiAicnRsIik7CiB9
CiAKK2NvbnN0IHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiogVGVzdFJ1bm5lcjo6aHR0cEhlYWRlcnNU
b0NsZWFyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJm1faHR0cEhlYWRlcnNUb0NsZWFyOworfQor
Citib29sIFRlc3RSdW5uZXI6OnNob3VsZEJsb2NrUmVkaXJlY3RzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9zaG91bGRCbG9ja1JlZGlyZWN0czsKK30KKworYm9vbCBUZXN0UnVubmVyOjp3aWxs
U2VuZFJlcXVlc3RTaG91bGRSZXR1cm5OdWxsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93aWxs
U2VuZFJlcXVlc3RTaG91bGRSZXR1cm5OdWxsOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OmR1bXBQ
ZXJtaXNzaW9uQ2xpZW50Q2FsbGJhY2tzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlh
bnQqIHJlc3VsdCkKIHsKICAgICBtX3dlYlBlcm1pc3Npb25zLT5zZXREdW1wQ2FsbGJhY2tzKHRy
dWUpOwpAQCAtNjA2LDYgKzYyOCwzMCBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFNob3VsZFN0YXlP
blBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkKGNvbnN0IENwcEFyZ3VtZW50TAogICAgIHJl
c3VsdC0+c2V0TnVsbCgpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldFdpbGxTZW5kUmVxdWVz
dENsZWFySGVhZGVyKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50
KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1sw
XS5pc1N0cmluZygpKSB7CisgICAgICAgIHN0cmluZyBoZWFkZXIgPSBhcmd1bWVudHNbMF0udG9T
dHJpbmcoKTsKKyAgICAgICAgaWYgKCFoZWFkZXIuZW1wdHkoKSkKKyAgICAgICAgICAgIG1faHR0
cEhlYWRlcnNUb0NsZWFyLmluc2VydChoZWFkZXIpOworICAgIH0KKyAgICByZXN1bHQtPnNldE51
bGwoKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVs
bE9uUmVkaXJlY3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQq
IHJlc3VsdCkKK3sKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBd
LmlzQm9vbCgpKQorICAgICAgICBtX3Nob3VsZEJsb2NrUmVkaXJlY3RzID0gYXJndW1lbnRzWzBd
LnRvQm9vbGVhbigpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIFRlc3RSdW5u
ZXI6OnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYg
YXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXpl
KCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkKKyAgICAgICAgbV93aWxsU2VuZFJlcXVl
c3RTaG91bGRSZXR1cm5OdWxsID0gYXJndW1lbnRzWzBdLnRvQm9vbGVhbigpOworICAgIHJlc3Vs
dC0+c2V0TnVsbCgpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OnNldFRhYktleUN5Y2xlc1Rocm91
Z2hFbGVtZW50cyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCog
cmVzdWx0KQogewogICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0u
aXNCb29sKCkpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9UZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKaW5kZXggNmIzNDQ5NjE0Y2JkNWIzYWIyODVlMTJh
Y2Q4ZDExMjhmNTU4NmE0OC4uNmFkOTBiMWZiYjJmZmEzZDc4NjQwYmY0YmQwNjg2OTVlNjIzMTJl
NSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RSdW5uZXIuaApAQCAtOTUsNiArOTUsOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGlzUHJpbnRpbmcoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGVUZXh0RGlyZWN0aW9uKFdlYktpdDo6V2ViVGV4
dERpcmVjdGlvbikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBzdGQ6OnNldDxzdGQ6OnN0
cmluZz4qIGh0dHBIZWFkZXJzVG9DbGVhcigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRCbG9ja1JlZGlyZWN0cygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCB3aWxsU2VuZFJlcXVlc3RTaG91bGRSZXR1cm5OdWxsKCkgY29uc3QgT1ZFUlJJREU7CiAK
IHByb3RlY3RlZDoKICAgICAvLyBGSVhNRTogbWFrZSB0aGVzZSBwcml2YXRlIG9uY2UgdGhlIG1v
dmUgZnJvbSBEUlRUZXN0UnVubmVyIHRvIFRlc3RSdW5uZXIKQEAgLTMyNyw2ICszMzAsMTUgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgc2V0U2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZv
cmVVbmxvYWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCisgICAgLy8g
Q2F1c2VzIFdpbGxTZW5kUmVxdWVzdCB0byBjbGVhciBjZXJ0YWluIGhlYWRlcnMuCisgICAgdm9p
ZCBzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50Kik7CisKKyAgICAvLyBDYXVzZXMgV2lsbFNlbmRSZXF1ZXN0IHRvIGJsb2NrIHJl
ZGlyZWN0cy4KKyAgICB2b2lkIHNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVj
dChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKKyAgICAvLyBDYXVzZXMg
V2lsbFNlbmRSZXF1ZXN0IHRvIHJldHVybiBhbiBlbXB0eSByZXF1ZXN0LgorICAgIHZvaWQgc2V0
V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOworCiAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAgLy8gTWV0aG9kcyBpbnRlcmFj
dGluZyB3aXRoIHRoZSBXZWJUZXN0UHJveHkKIApAQCAtNTIzLDYgKzUzNSwxMiBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBtX3Nob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2Fk
OwogCisgICAgYm9vbCBtX3Nob3VsZEJsb2NrUmVkaXJlY3RzOworCisgICAgYm9vbCBtX3dpbGxT
ZW5kUmVxdWVzdFNob3VsZFJldHVybk51bGw7CisKKyAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4g
bV9odHRwSGVhZGVyc1RvQ2xlYXI7CisKICAgICAvLyBXQVYgYXVkaW8gZGF0YSBpcyBzdG9yZWQg
aGVyZS4KICAgICBXZWJLaXQ6OldlYkFycmF5QnVmZmVyVmlldyBtX2F1ZGlvRGF0YTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2Vi
VGVzdFByb3h5LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1dlYlRlc3RQcm94eS5jcHAKaW5kZXggOWVjMDVlZDZhZTVkNzZhOTYzZmE4OWYyMTk3MGQ4
MGRjNDk0ZDk4Yy4uNzdhZWQyYjhhOGYwMTQyZmI1YzcxMmExZDk2ZDQ5OTNmYjE3YTI5MyAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2Vi
VGVzdFByb3h5LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwCkBAIC0xODAsNiArMTgwLDExIEBAIHN0cmluZyBVUkxE
ZXNjcmlwdGlvbihjb25zdCBHVVJMJiB1cmwpCiAgICAgcmV0dXJuIHVybC5wb3NzaWJseV9pbnZh
bGlkX3NwZWMoKTsKIH0KIAordm9pZCBibG9ja1JlcXVlc3QoV2ViVVJMUmVxdWVzdCYgcmVxdWVz
dCkKK3sKKyAgICByZXF1ZXN0LnNldFVSTChXZWJVUkwoKSk7Cit9CisKIH0KIAogV2ViVGVzdFBy
b3h5QmFzZTo6V2ViVGVzdFByb3h5QmFzZSgpCkBAIC03MTAsNiArNzE1LDIzIEBAIHZvaWQgV2Vi
VGVzdFByb3h5QmFzZTo6d2lsbFNlbmRSZXF1ZXN0KFdlYkZyYW1lKiwgdW5zaWduZWQgaWRlbnRp
ZmllciwgV2ViS2l0OjpXCiAgICAgICAgIHByaW50UmVzcG9uc2VEZXNjcmlwdGlvbihtX2RlbGVn
YXRlLCByZWRpcmVjdFJlc3BvbnNlKTsKICAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdl
KCJcbiIpOwogICAgIH0KKworICAgIGlmICghcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSAmJiBt
X3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCkgJiYgbV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1
bm5lcigpLT5zaG91bGRCbG9ja1JlZGlyZWN0cygpKSB7CisgICAgICAgIG1fZGVsZWdhdGUtPnBy
aW50TWVzc2FnZSgiUmV0dXJuaW5nIG51bGwgZm9yIHRoaXMgcmVkaXJlY3RcbiIpOworICAgICAg
ICBibG9ja1JlcXVlc3QocmVxdWVzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpICYmIG1fdGVzdEludGVyZmFjZXMtPnRl
c3RSdW5uZXIoKS0+d2lsbFNlbmRSZXF1ZXN0U2hvdWxkUmV0dXJuTnVsbCgpKSB7CisgICAgICAg
IGJsb2NrUmVxdWVzdChyZXF1ZXN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
IChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCkgJiYgbV90ZXN0SW50ZXJmYWNlcy0+dGVz
dFJ1bm5lcigpLT5odHRwSGVhZGVyc1RvQ2xlYXIoKSkgeworICAgICAgICBjb25zdCBzZXQ8c3Ry
aW5nPiAqY2xlYXJIZWFkZXJzID0gbV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5odHRw
SGVhZGVyc1RvQ2xlYXIoKTsKKyAgICAgICAgZm9yIChzZXQ8c3RyaW5nPjo6Y29uc3RfaXRlcmF0
b3IgaGVhZGVyID0gY2xlYXJIZWFkZXJzLT5iZWdpbigpOyBoZWFkZXIgIT0gY2xlYXJIZWFkZXJz
LT5lbmQoKTsgKytoZWFkZXIpCisgICAgICAgICAgICByZXF1ZXN0LmNsZWFySFRUUEhlYWRlckZp
ZWxkKFdlYlN0cmluZzo6ZnJvbVVURjgoKmhlYWRlcikpOworICAgIH0KIH0KIAogdm9pZCBXZWJU
ZXN0UHJveHlCYXNlOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViRnJhbWUqLCB1bnNpZ25lZCBpZGVu
dGlmaWVyLCBjb25zdCBXZWJLaXQ6OldlYlVSTFJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCA0NGM3OWFhZjE1
NjY3Y2I0YjgwZWRjMWYxNTIzYWUzMmY3MDhmMGNhLi4wMjdmNjRmYTk0MDZhNDNjMWY5MjlkOThj
ZDdhNzQzNmNjNjY5NmQ5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwCkBAIC04OTQsNiArODk0LDkgQEAgc3RhdGljIGJvb2wgaG9zdElzVXNlZEJ5
U29tZVRlc3RzVG9HZW5lcmF0ZUVycm9yKGNvbnN0IHN0cmluZyYgaG9zdCkKIAogdm9pZCBXZWJW
aWV3SG9zdDo6d2lsbFNlbmRSZXF1ZXN0KFdlYkZyYW1lKiBmcmFtZSwgdW5zaWduZWQgaWRlbnRp
ZmllciwgV2ViVVJMUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViVVJMUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UpCiB7CisgICAgaWYgKHJlcXVlc3QudXJsKCkuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKICAgICAvLyBOZWVkIHRvIHVzZSBHVVJMIGZvciBob3N0KCkgYW5kIFNjaGVt
ZUlzKCkKICAgICBHVVJMIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgc3RyaW5nIHJlcXVlc3RV
UkwgPSB1cmwucG9zc2libHlfaW52YWxpZF9zcGVjKCk7CkBAIC05MDIsMTcgKzkwNSw2IEBAIHZv
aWQgV2ViVmlld0hvc3Q6OndpbGxTZW5kUmVxdWVzdChXZWJGcmFtZSogZnJhbWUsIHVuc2lnbmVk
IGlkZW50aWZpZXIsIFdlYlVSTFJlCiAKICAgICByZXF1ZXN0LnNldEV4dHJhRGF0YSh3ZWJraXRf
c3VwcG9ydDo6Q3JlYXRlV2ViVVJMUmVxdWVzdEV4dHJhRGF0YShmcmFtZS0+ZG9jdW1lbnQoKS5y
ZWZlcnJlclBvbGljeSgpKSk7CiAKLSAgICBpZiAoIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkg
JiYgbV9ibG9ja3NSZWRpcmVjdHMpIHsKLSAgICAgICAgZnB1dHMoIlJldHVybmluZyBudWxsIGZv
ciB0aGlzIHJlZGlyZWN0XG4iLCBzdGRvdXQpOwotICAgICAgICBibG9ja1JlcXVlc3QocmVxdWVz
dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobV9yZXF1ZXN0UmV0dXJuTnVs
bCkgewotICAgICAgICBibG9ja1JlcXVlc3QocmVxdWVzdCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KICAgICBzdHJpbmcgaG9zdCA9IHVybC5ob3N0KCk7CiAgICAgaWYgKCFob3N0LmVtcHR5
KCkgJiYgKHVybC5TY2hlbWVJcygiaHR0cCIpIHx8IHVybC5TY2hlbWVJcygiaHR0cHMiKSkpIHsK
ICAgICAgICAgaWYgKCFpc0xvY2FsaG9zdChob3N0KSAmJiAhaG9zdElzVXNlZEJ5U29tZVRlc3Rz
VG9HZW5lcmF0ZUVycm9yKGhvc3QpCkBAIC05MjQsMTAgKzkxNiw2IEBAIHZvaWQgV2ViVmlld0hv
c3Q6OndpbGxTZW5kUmVxdWVzdChXZWJGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGlkZW50aWZpZXIs
IFdlYlVSTFJlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBIYXNoU2V0PFN0cmluZz46OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IG1fY2xlYXJIZWFkZXJzLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxT
dHJpbmc+Ojpjb25zdF9pdGVyYXRvciBoZWFkZXIgPSBtX2NsZWFySGVhZGVycy5iZWdpbigpOyBo
ZWFkZXIgIT0gZW5kOyArK2hlYWRlcikKLSAgICAgICAgcmVxdWVzdC5jbGVhckhUVFBIZWFkZXJG
aWVsZChXZWJTdHJpbmcoaGVhZGVyLT5jaGFyYWN0ZXJzKCksIGhlYWRlci0+bGVuZ3RoKCkpKTsK
LQogICAgIC8vIFNldCB0aGUgbmV3IHN1YnN0aXR1dGVkIFVSTC4KICAgICByZXF1ZXN0LnNldFVS
TCh3ZWJraXRfc3VwcG9ydDo6UmV3cml0ZUxheW91dFRlc3RzVVJMKHJlcXVlc3QudXJsKCkuc3Bl
YygpKSk7CiB9CkBAIC0xMzA5LDggKzEyOTcsNiBAQCB2b2lkIFdlYlZpZXdIb3N0OjpyZXNldCgp
CiAjZWxzZQogICAgIG1fc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCA9IGZhbHNlOwog
I2VuZGlmCi0gICAgbV9ibG9ja3NSZWRpcmVjdHMgPSBmYWxzZTsKLSAgICBtX3JlcXVlc3RSZXR1
cm5OdWxsID0gZmFsc2U7CiAgICAgbV9pc1BhaW50aW5nID0gZmFsc2U7CiAgICAgbV9jYW52YXMu
Y2xlYXIoKTsKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQpAQCAtMTMyMSw3ICsxMzA3LDYgQEAg
dm9pZCBXZWJWaWV3SG9zdDo6cmVzZXQoKQogICAgIG1fbmF2aWdhdGlvbkNvbnRyb2xsZXIgPSBh
ZG9wdFB0cihuZXcgVGVzdE5hdmlnYXRpb25Db250cm9sbGVyKHRoaXMpKTsKIAogICAgIG1fcGVu
ZGluZ0V4dHJhRGF0YS5jbGVhcigpOwotICAgIG1fY2xlYXJIZWFkZXJzLmNsZWFyKCk7CiAgICAg
bV9lZGl0Q29tbWFuZE5hbWUuY2xlYXIoKTsKICAgICBtX2VkaXRDb21tYW5kVmFsdWUuY2xlYXIo
KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXgg
ZDFiZDI1ZmRjZGM1ZTA2MTNhNGNmNDcwZDBhNDdjN2JhNDI2ZDJkYS4uNjFmODA0YTY3MDljMGNk
YTU3YmQ1MzljNGYxYTQyZTdlMGM3ZWRiNyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5oCkBAIC05Myw4ICs5Myw2IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDog
cHVibGljIFdlYktpdDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVDbGll
bnQsCiAgICAgdm9pZCB3YWl0Rm9yUG9saWN5RGVsZWdhdGUoKTsKICAgICB2b2lkIHNldEN1c3Rv
bVBvbGljeURlbGVnYXRlKGJvb2wsIGJvb2wpOwogICAgIFdlYktpdDo6V2ViRnJhbWUqIHRvcExv
YWRpbmdGcmFtZSgpIHsgcmV0dXJuIG1fdG9wTG9hZGluZ0ZyYW1lOyB9Ci0gICAgdm9pZCBzZXRC
bG9ja1JlZGlyZWN0cyhib29sIGJsb2NrKSB7IG1fYmxvY2tzUmVkaXJlY3RzID0gYmxvY2s7IH0K
LSAgICB2b2lkIHNldFJlcXVlc3RSZXR1cm5OdWxsKGJvb2wgcmV0dXJuTnVsbCkgeyBtX3JlcXVl
c3RSZXR1cm5OdWxsID0gcmV0dXJuTnVsbDsgfQogICAgIHZvaWQgc2V0UGVuZGluZ0V4dHJhRGF0
YShQYXNzT3duUHRyPFRlc3RTaGVsbEV4dHJhRGF0YT4pOwogCiAgICAgdm9pZCBwYWludFJlY3Qo
Y29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7CkBAIC0xMDYsOCArMTA0LDYgQEAgY2xhc3MgV2ViVmll
d0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJG
cmFtZUNsaWVudCwKICAgICB2b2lkIGxvYWRVUkxGb3JGcmFtZShjb25zdCBXZWJLaXQ6OldlYlVS
TCYsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBmcmFtZU5hbWUpOwogICAgIFRlc3ROYXZpZ2F0
aW9uQ29udHJvbGxlciogbmF2aWdhdGlvbkNvbnRyb2xsZXIoKSB7IHJldHVybiBtX25hdmlnYXRp
b25Db250cm9sbGVyLmdldCgpOyB9CiAKLSAgICB2b2lkIGFkZENsZWFySGVhZGVyKGNvbnN0IFdU
Rjo6U3RyaW5nJiBoZWFkZXIpIHsgbV9jbGVhckhlYWRlcnMuYWRkKGhlYWRlcik7IH0KLSAgICBj
b25zdCBIYXNoU2V0PFdURjo6U3RyaW5nPiYgY2xlYXJIZWFkZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9jbGVhckhlYWRlcnM7IH0KICAgICB2b2lkIGNsb3NlV2lkZ2V0KCk7CiAKICNpZiBFTkFCTEUo
SU5QVVRfU1BFRUNIKQpAQCAtNDAyLDE1ICszOTgsNiBAQCBwcml2YXRlOgogICAgIC8vIHRydWUg
aWYgd2hhdGV2ZXIgaXMgc2VudCB0byB0aGUgY29uc29sZSBzaG91bGQgYmUgbG9nZ2VkIHRvIHN0
ZG91dC4KICAgICBib29sIG1fbG9nQ29uc29sZU91dHB1dDsKIAotICAgIC8vIFNldCBvZiBoZWFk
ZXJzIHRvIGNsZWFyIGluIHdpbGxTZW5kUmVxdWVzdC4KLSAgICBIYXNoU2V0PFdURjo6U3RyaW5n
PiBtX2NsZWFySGVhZGVyczsKLQotICAgIC8vIHRydWUgaWYgd2Ugc2hvdWxkIGJsb2NrIGFueSBy
ZWRpcmVjdHMKLSAgICBib29sIG1fYmxvY2tzUmVkaXJlY3RzOwotCi0gICAgLy8gdHJ1ZSBpZiB3
ZSBzaG91bGQgYmxvY2sgKHNldCBhbiBlbXB0eSByZXF1ZXN0IGZvcikgYW55IHJlcXVlc3RzCi0g
ICAgYm9vbCBtX3JlcXVlc3RSZXR1cm5OdWxsOwotCiAgICAgLy8gRWRpdCBjb21tYW5kIGFzc29j
aWF0ZWQgdG8gdGhlIGN1cnJlbnQga2V5Ym9hcmQgZXZlbnQuCiAgICAgc3RkOjpzdHJpbmcgbV9l
ZGl0Q29tbWFuZE5hbWU7CiAgICAgc3RkOjpzdHJpbmcgbV9lZGl0Q29tbWFuZFZhbHVlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>