<?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>102889</bug_id>
          
          <creation_ts>2012-11-21 00:01:28 -0800</creation_ts>
          <short_desc>WebSocket&apos;s MessageEvent.origin attribute is an empty string</short_desc>
          <delta_ts>2012-11-23 03:52:59 -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>WebCore Misc.</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>http://www.whatwg.org/specs/web-apps/current-work/multipage/network.html#feedback-from-the-protocol</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>102887</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>bashi</cc>
    
    <cc>haraken</cc>
    
    <cc>ian</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>772530</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-21 00:01:28 -0800</bug_when>
    <thetext>According to specification (http://www.w3.org/TR/2012/CR-websockets-20120920/#feedback-from-the-protocol), we should &quot;initialize [message] event&apos;s origin attribute to the Unicode serialization of the origin of the URL that was passed to the WebSocket object&apos;s constructor.&quot;. However, the current implementation returns an empty string for the event&apos;s origin.

Firefox seems to populate MessageEvent.origin according to the specification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773017</commentid>
    <comment_count>1</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2012-11-21 09:18:37 -0800</bug_when>
    <thetext>Note that that URL is out of date. The current spec for Web Sockets is at:
   http://www.whatwg.org/specs/web-apps/current-work/multipage/network.html#feedback-from-the-protocol

Basically you never want to be referring to /TR/ versions of specs because they&apos;re always going to be out of date, because they&apos;re just snapshots of the current work.

In this particular case the requirement in question hasn&apos;t changed since the W3C made that snapshot, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774308</commentid>
    <comment_count>2</comment_count>
      <attachid>175753</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-23 01:41:32 -0800</bug_when>
    <thetext>Created attachment 175753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774314</commentid>
    <comment_count>3</comment_count>
      <attachid>175753</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-23 01:55:13 -0800</bug_when>
    <thetext>Comment on attachment 175753
Patch

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

&gt; LayoutTests/ChangeLog:15
&gt; +        * http/tests/websocket/tests/hybi/send-once_wsh.py: Added.

What&apos;s this? Why can&apos;t you write a layout test using the current layout test framework?

&gt; LayoutTests/http/tests/websocket/tests/hybi/send-once_wsh.py:2
&gt; +# Copyright (C) 2009 Google Inc. All rights reserved.
&gt; +# Copyright (C) 2012 Intel Corporation. All rights reserved.

Is this copyright correct? If this is a new file, the copyright would be intel&apos;s one.

&gt; LayoutTests/http/tests/websocket/tests/hybi/send-onmessage-origin.html:20
&gt; +var MESSAGE_TO_SEND = &quot;This is the message to send to the server.&quot;;

Nit: messageToSend. WebKit uses camelCase variables even for constants.

&gt; LayoutTests/http/tests/websocket/tests/hybi/send-onmessage-origin.html:38
&gt; +    shouldBe(&quot;origin&quot;, &quot;&apos;ws://localhost:8880&apos;&quot;);

Nit: You can use ShouldBeEqualToString(&quot;origin&quot;, &quot;ws://localhost:8880&quot;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774332</commentid>
    <comment_count>4</comment_count>
      <attachid>175753</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-23 02:35:09 -0800</bug_when>
    <thetext>Comment on attachment 175753
Patch

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

&gt;&gt; LayoutTests/http/tests/websocket/tests/hybi/send-once_wsh.py:2
&gt;&gt; +# Copyright (C) 2012 Intel Corporation. All rights reserved.
&gt; 
&gt; Is this copyright correct? If this is a new file, the copyright would be intel&apos;s one.

Well, this is basically a simplified version of LayoutTests/http/tests/websocket/tests/hybi/send_wsh.py, which expects 1 message instead of 2. Since the original file was with Google copyright and the code is mostly the same, I kept the copyright.
Anyway, it does not really matter since you prefer I use existing infrastructure. I guess I&apos;ll use LayoutTests/http/tests/websocket/tests/hybi/send_wsh.py and send 2 messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774336</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-23 02:43:28 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Anyway, it does not really matter since you prefer I use existing infrastructure. I guess I&apos;ll use LayoutTests/http/tests/websocket/tests/hybi/send_wsh.py and send 2 messages.

Sounds nicer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774338</commentid>
    <comment_count>6</comment_count>
      <attachid>175758</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-23 02:49:48 -0800</bug_when>
    <thetext>Created attachment 175758
Patch

Take Haraken&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774341</commentid>
    <comment_count>7</comment_count>
      <attachid>175758</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-23 02:53:18 -0800</bug_when>
    <thetext>Comment on attachment 175758
Patch

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

Looks OK.

&gt; LayoutTests/http/tests/websocket/tests/hybi/send-onmessage-origin.html:21
&gt; +var FirstMessageToSend = &quot;This is the first message to send to the server.&quot;;
&gt; +var SecondMessageToSend = &quot;This is the second.&quot;;

Sorry for nit-picking. WebKit uses camelCase even for constants. So this could be firstMessageToSend and secondMessageToSend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774342</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-23 02:55:10 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 175758 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175758&amp;action=review
&gt; 
&gt; Looks OK.
&gt; 
&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/send-onmessage-origin.html:21
&gt; &gt; +var FirstMessageToSend = &quot;This is the first message to send to the server.&quot;;
&gt; &gt; +var SecondMessageToSend = &quot;This is the second.&quot;;
&gt; 
&gt; Sorry for nit-picking. WebKit uses camelCase even for constants. So this could be firstMessageToSend and secondMessageToSend.

My bad. I&apos;ll fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774346</commentid>
    <comment_count>9</comment_count>
      <attachid>175762</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-23 02:58:35 -0800</bug_when>
    <thetext>Created attachment 175762
Patch for landing

Fixed camel case nit. Could someone please cq+ ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774350</commentid>
    <comment_count>10</comment_count>
      <attachid>175762</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-23 03:03:43 -0800</bug_when>
    <thetext>Comment on attachment 175762
Patch for landing

thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774397</commentid>
    <comment_count>11</comment_count>
      <attachid>175762</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-23 03:52:54 -0800</bug_when>
    <thetext>Comment on attachment 175762
Patch for landing

Clearing flags on attachment: 175762

Committed r135587: &lt;http://trac.webkit.org/changeset/135587&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774398</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-23 03:52:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175753</attachid>
            <date>2012-11-23 01:41:32 -0800</date>
            <delta_ts>2012-11-23 02:49:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>102889_websocket_onmessage_origin.patch</filename>
            <type>text/plain</type>
            <size>14559</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMDY1YTdhLi5kZjVjNDg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMTEt
MjMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBXZWJTb2NrZXQncyBNZXNzYWdlRXZlbnQub3JpZ2luIGF0dHJpYnV0ZSBpcyBhbiBlbXB0
eSBzdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMjg4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBsYXlvdXQgdGVzdHMgdG8gY2hlY2sgdGhhdCB0aGUgbWVzc2FnZSBldmVudCdzIG9yaWdp
biBhdHRyaWJ1dGUKKyAgICAgICAgaXMgc2V0IHRvIHRoZSBVbmljb2RlIHNlcmlhbGl6YXRpb24g
b2YgdGhlIG9yaWdpbiBvZiB0aGUgVVJMIHRoYXQKKyAgICAgICAgd2FzIHBhc3NlZCB0byB0aGUg
V2ViU29ja2V0IG9iamVjdCdzIGNvbnN0cnVjdG9yLCBhcyBwZXIgdGhlCisgICAgICAgIFdlYlNv
Y2tldCBzcGVjaWZpY2F0aW9uLgorCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9zZW5kLWJsb2Itb25tZXNzYWdlLW9yaWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iLW9ubWVz
c2FnZS1vcmlnaW4uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9zZW5kLW9uY2Vfd3NoLnB5OiBBZGRlZC4KKyAgICAgICAgKHdlYl9zb2NrZXRf
ZG9fZXh0cmFfaGFuZHNoYWtlKToKKyAgICAgICAgKHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSk6
CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLW9ubWVzc2Fn
ZS1vcmlnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3NlbmQtb25tZXNzYWdlLW9yaWdpbi5odG1sOiBBZGRlZC4KKwogMjAx
Mi0xMS0yMiAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIC13ZWJr
aXQtbWFzayBzaG9ydGhhbmQgc3dpdGNoZXMgLXdlYmtpdC1tYXNrLWNsaXAgYW5kIC13ZWJraXQt
bWFzay1vcmlnaW4gdmFsdWVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYmxvYi1vbm1lc3NhZ2Utb3JpZ2luLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9i
LW9ubWVzc2FnZS1vcmlnaW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmY2YWMyZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYmxvYi1vbm1lc3NhZ2Utb3JpZ2luLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitXZWIgU29ja2V0IG1lc3NhZ2UgZXZlbnQgb3JpZ2lu
IGF0dHJpYnV0ZSB0ZXN0IChCbG9iIG1lc3NhZ2UpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIFBBU1M6IE1lc3NhZ2UgIzAuCitQQVNTIG9yaWdpbiBpcyAnd3M6Ly8xMjcu
MC4wLjE6ODg4MCcKK1BBU1MgUEFTUzogTWVzc2FnZSAjMS4KK1BBU1Mgb3JpZ2luIGlzICd3czov
LzEyNy4wLjAuMTo4ODgwJworUEFTUyBQQVNTOiBNZXNzYWdlICMyLgorUEFTUyBvcmlnaW4gaXMg
J3dzOi8vMTI3LjAuMC4xOjg4ODAnCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1i
bG9iLW9ubWVzc2FnZS1vcmlnaW4uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iLW9ubWVzc2FnZS1vcmlnaW4uaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjI2OTIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWJsb2Itb25tZXNz
YWdlLW9yaWdpbi5odG1sCkBAIC0wLDAgKzEsNjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbigiV2ViIFNvY2tldCBtZXNzYWdlIGV2ZW50IG9yaWdpbiBhdHRyaWJ1dGUgdGVzdCAoQmxv
YiBtZXNzYWdlKSIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit2YXIgZGF0YSA9
ICIiOwordmFyIG9yaWdpbiA9ICIiOworCitmdW5jdGlvbiBzdGFydHNXaXRoKHRhcmdldCwgcHJl
Zml4KQoreworICAgIHJldHVybiB0YXJnZXQuaW5kZXhPZihwcmVmaXgpID09PSAwOworfQorCitm
dW5jdGlvbiBjcmVhdGVCbG9iQ29udGFpbmluZ0hlbGxvV29ybGQoKQoreworICAgIHJldHVybiBu
ZXcgQmxvYihbIkhlbGxvLCB3b3JsZCEiXSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUVtcHR5Qmxv
YigpCit7CisgICAgcmV0dXJuIG5ldyBCbG9iKFtdKTsKK30KKworZnVuY3Rpb24gY3JlYXRlQmxv
YkNvbnRhaW5pbmdBbGxEaXN0aW5jdEJ5dGVzKCkKK3sKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWlu
dDhBcnJheSgyNTYpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpCisgICAgICAg
IGFycmF5W2ldID0gaTsKKyAgICByZXR1cm4gbmV3IEJsb2IoW2FycmF5XSk7Cit9CisKK3ZhciB1
cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9jaGVjay1iaW5h
cnktbWVzc2FnZXMiOwordmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOwordmFyIGNsb3NlRXZl
bnQ7CisKK3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICB3cy5zZW5kKGNyZWF0ZUJsb2JD
b250YWluaW5nSGVsbG9Xb3JsZCgpKTsKKyAgICB3cy5zZW5kKGNyZWF0ZUVtcHR5QmxvYigpKTsK
KyAgICB3cy5zZW5kKGNyZWF0ZUJsb2JDb250YWluaW5nQWxsRGlzdGluY3RCeXRlcygpKTsKK307
CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHZhciBtZXNzYWdlID0g
ZXZlbnQuZGF0YTsKKyAgICBpZiAoc3RhcnRzV2l0aChtZXNzYWdlLCAiUEFTUyIpKQorICAgICAg
ICB0ZXN0UGFzc2VkKG1lc3NhZ2UpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZChtZXNz
YWdlKTsKKyAgICBvcmlnaW4gPSBldmVudC5vcmlnaW47CisgICAgc2hvdWxkQmUoIm9yaWdpbiIs
ICInd3M6Ly8xMjcuMC4wLjE6ODg4MCciKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihl
dmVudCkKK3sKKyAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVUcnVlKCJjbG9z
ZUV2ZW50Lndhc0NsZWFuIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLW9uY2Vfd3NoLnB5IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLW9uY2Vfd3NoLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyODExMmQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtb25j
ZV93c2gucHkKQEAgLTAsMCArMSw0MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBv
cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitmcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4
dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzICMgQWx3YXlzIGFjY2VwdC4KKworCitk
ZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgICMgUmVjZWl2ZSBhbmQg
ZWNobyBiYWNrIG1lc3NhZ2Ugb25jZS4KKyAgICBtZXNzYWdlID0gbXNndXRpbC5yZWNlaXZlX21l
c3NhZ2UocmVxdWVzdCkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCBtZXNzYWdl
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9zZW5kLW9ubWVzc2FnZS1vcmlnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLW9ubWVzc2FnZS1vcmlnaW4tZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4NWQ3NzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Nl
bmQtb25tZXNzYWdlLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorV2ViIFNv
Y2tldCBtZXNzYWdlIGV2ZW50IG9yaWdpbiBhdHRyaWJ1dGUgdGVzdAorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworQ29ubmVjdGVkLgorUEFTUyBkYXRhIGlzIE1FU1NBR0VfVE9fU0VO
RAorUEFTUyBvcmlnaW4gaXMgJ3dzOi8vbG9jYWxob3N0Ojg4ODAnCitDbG9zZWQuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLW9ubWVzc2Fn
ZS1vcmlnaW4uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
Ymkvc2VuZC1vbm1lc3NhZ2Utb3JpZ2luLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZTdkMDgxNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1vbm1lc3NhZ2Utb3JpZ2luLmh0bWwKQEAgLTAs
MCArMSw1OCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbigiV2ViIFNvY2tldCBtZXNzYWdlIGV2ZW50IG9yaWdpbiBhdHRyaWJ1dGUg
dGVzdCAoU3RyaW5nIG1lc3NhZ2UpIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworZnVuY3Rpb24gZW5kVGVzdCgpCit7CisgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJRCk7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vbG9j
YWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1vbmNlIik7CisKK3ZhciBNRVNT
QUdFX1RPX1NFTkQgPSAiVGhpcyBpcyB0aGUgbWVzc2FnZSB0byBzZW5kIHRvIHRoZSBzZXJ2ZXIu
IjsKKworLy8gbmVlZHMgdG8gYmUgZ2xvYmFsIHRvIGJlIGFjY2Vzc2libGUgZnJvbSBzaG91bGRC
ZSgpLgordmFyIGRhdGEgPSAiIjsKK3ZhciBvcmlnaW4gPSAiIjsKKword3Mub25vcGVuID0gZnVu
Y3Rpb24oKQoreworICAgIGRlYnVnKCJDb25uZWN0ZWQuIik7CisgICAgd3Muc2VuZChNRVNTQUdF
X1RPX1NFTkQpOworfTsKKword3Mub25tZXNzYWdlID0gZnVuY3Rpb24obWVzc2FnZUV2ZW50KQor
eworICAgIC8vIFRoZSBzZXJ2ZXIgc2hvdWxkIGVjaG8gYmFjayB0aGUgZmlyc3QgbWVzc2FnZS4K
KyAgICBkYXRhID0gbWVzc2FnZUV2ZW50LmRhdGE7CisgICAgc2hvdWxkQmUoImRhdGEiLCAiTUVT
U0FHRV9UT19TRU5EIik7CisgICAgb3JpZ2luID0gbWVzc2FnZUV2ZW50Lm9yaWdpbjsKKyAgICBz
aG91bGRCZSgib3JpZ2luIiwgIid3czovL2xvY2FsaG9zdDo4ODgwJyIpOworfTsKKword3Mub25j
bG9zZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1ZygiQ2xvc2VkLiIpOworICAgIGVuZFRlc3Qo
KTsKK307CisKK2Z1bmN0aW9uIHRpbWVPdXRDYWxsYmFjaygpCit7CisgICAgdGVzdEZhaWxlZCgi
VGltZWQgb3V0IGluIHN0YXRlOiAiICsgd3MucmVhZHlTdGF0ZSk7CisgICAgZW5kVGVzdCgpOwor
fQorCit2YXIgdGltZW91dElEID0gc2V0VGltZW91dCh0aW1lT3V0Q2FsbGJhY2ssIDMwMDApOwor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDkyYjliNjMuLjc4NDA0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMi0xMS0y
MyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAg
ICAgIFdlYlNvY2tldCdzIE1lc3NhZ2VFdmVudC5vcmlnaW4gYXR0cmlidXRlIGlzIGFuIGVtcHR5
IHN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAyODg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rml4IFdlYlNvY2tldCBpbXBsZW1lbnRhdGlvbiBzbyB0aGF0IHRoZSBtZXNzYWdlIGV2ZW50J3Mg
b3JpZ2luCisgICAgICAgIGF0dHJpYnV0ZSBpcyBwcm9wZXJseSBzZXQgdG8gdGhlIFVuaWNvZGUg
c2VyaWFsaXphdGlvbiBvZiB0aGUKKyAgICAgICAgb3JpZ2luIG9mIHRoZSBVUkwgdGhhdCB3YXMg
cGFzc2VkIHRvIHRoZSBXZWJTb2NrZXQgb2JqZWN0J3MKKyAgICAgICAgY29uc3RydWN0b3IsIGlu
c3RlYWQgb2YgYW4gZW1wdHkgc3RyaW5nLgorCisgICAgICAgIFRoZSBuZXcgYmVoYXZpb3IgaXMg
YWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3
Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9uZXR3b3JrLmh0bWwj
ZmVlZGJhY2stZnJvbS10aGUtcHJvdG9jb2wKKworICAgICAgICBJdCBhbHNvIG1hdGNoZXMgdGhl
IGJlaGF2aW9yIG9mIEZpcmVmb3guCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iLW9ubWVzc2FnZS1vcmlnaW4uaHRtbAorICAgICAgICAg
ICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLW9ubWVzc2FnZS1vcmln
aW4uaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEpOgorICAgICAgICAqIGRv
bS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpNZXNz
YWdlRXZlbnQpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lc3NhZ2VFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKE1lc3NhZ2VFdmVudCk6CisKIDIw
MTItMTEtMjIgIFJhZmFlbCBCcmFuZGFvICA8cmFmYWVsLmxvYm9Ab3BlbmJvc3NhLm9yZz4KIAog
ICAgICAgICBSZW1vdmUgUExBVEZPUk0oSEFJS1UpIGxlZnRvdmVycyBjb2RlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDdmMzA3Mzgu
LjhjZGM3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwCkBAIC01MDgsNyArNTA4LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKQogICAgIGlmIChtX3N0YXRlICE9IE9QRU4gJiYgbV9z
dGF0ZSAhPSBDTE9TSU5HKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7Ci0gICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSht
c2cpKTsKKyAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG1zZywgU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3RyaW5nKCkpKTsKIH0KIAogdm9pZCBXZWJTb2Nr
ZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+ID4gYmluYXJ5
RGF0YSkKQEAgLTUyMSwxMiArNTIxLDEyIEBAIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlQmlu
YXJ5RGF0YShQYXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+IGJpbmFyeURhdGEpCiAgICAgICAgIE93
blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEgPSBCbG9iRGF0YTo6Y3JlYXRlKCk7CiAgICAgICAgIGJs
b2JEYXRhLT5hcHBlbmREYXRhKHJhd0RhdGEucmVsZWFzZSgpLCAwLCBCbG9iRGF0YUl0ZW06OnRv
RW5kT2ZGaWxlKTsKICAgICAgICAgUmVmUHRyPEJsb2I+IGJsb2IgPSBCbG9iOjpjcmVhdGUoYmxv
YkRhdGEucmVsZWFzZSgpLCBzaXplKTsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShibG9iLnJlbGVhc2UoKSkpOworICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3Nh
Z2VFdmVudDo6Y3JlYXRlKGJsb2IucmVsZWFzZSgpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1f
dXJsKS0+dG9TdHJpbmcoKSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBjYXNlIEJp
bmFyeVR5cGVBcnJheUJ1ZmZlcjoKLSAgICAgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6
OmNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKGJpbmFyeURhdGEtPmRhdGEoKSwgYmluYXJ5RGF0
YS0+c2l6ZSgpKSkpOworICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KEFycmF5QnVmZmVyOjpjcmVhdGUoYmluYXJ5RGF0YS0+ZGF0YSgpLCBiaW5hcnlEYXRhLT5zaXpl
KCkpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+dG9TdHJpbmcoKSkpOwogICAgICAg
ICBicmVhazsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCmluZGV4IDI0
YjUyZGQuLjEyODJhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCkBAIC03OSwy
OSArNzksMjkgQEAgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYKICNlbmRpZgogfQogCi1NZXNzYWdl
RXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEpCitNZXNzYWdlRXZlbnQ6Ok1l
c3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQogICAg
IDogRXZlbnQoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCwgZmFsc2UsIGZhbHNlKQogICAgICwg
bV9kYXRhVHlwZShEYXRhVHlwZVN0cmluZykKICAgICAsIG1fZGF0YUFzU3RyaW5nKGRhdGEpCi0g
ICAgLCBtX29yaWdpbigiIikKKyAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAsIG1fbGFzdEV2
ZW50SWQoIiIpCiB7CiB9CiAKLU1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8
QmxvYj4gZGF0YSkKK01lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8QmxvYj4g
ZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCiAgICAgOiBFdmVudChldmVudE5hbWVzKCkubWVz
c2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2RhdGFUeXBlKERhdGFUeXBlQmxvYikK
ICAgICAsIG1fZGF0YUFzQmxvYihkYXRhKQotICAgICwgbV9vcmlnaW4oIiIpCisgICAgLCBtX29y
aWdpbihvcmlnaW4pCiAgICAgLCBtX2xhc3RFdmVudElkKCIiKQogewogfQogCi1NZXNzYWdlRXZl
bnQ6Ok1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBkYXRhKQorTWVzc2FnZUV2
ZW50OjpNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gZGF0YSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4pCiAgICAgOiBFdmVudChldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50LCBmYWxz
ZSwgZmFsc2UpCiAgICAgLCBtX2RhdGFUeXBlKERhdGFUeXBlQXJyYXlCdWZmZXIpCiAgICAgLCBt
X2RhdGFBc0FycmF5QnVmZmVyKGRhdGEpCi0gICAgLCBtX29yaWdpbigiIikKKyAgICAsIG1fb3Jp
Z2luKG9yaWdpbikKICAgICAsIG1fbGFzdEV2ZW50SWQoIiIpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZUV2ZW50LmgKaW5kZXggOGE5ZDgyYy4uMGFmYzNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
RXZlbnQuaApAQCAtNjQsMTcgKzY0LDE3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgTWVzc2FnZUV2ZW50KGRhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNv
dXJjZSwgcG9ydHMpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3Nh
Z2VFdmVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4g
PSAiIikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2FnZUV2ZW50KGRh
dGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQoZGF0YSwgb3Jp
Z2luKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRl
KFBhc3NSZWZQdHI8QmxvYj4gZGF0YSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZl
bnQ+IGNyZWF0ZShQYXNzUmVmUHRyPEJsb2I+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0g
IiIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VFdmVudChkYXRh
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2FnZUV2ZW50KGRhdGEsIG9yaWdp
bikpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiBkYXRhKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3Nh
Z2VFdmVudD4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGRhdGEsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luID0gIiIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3Nh
Z2VFdmVudChkYXRhKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2FnZUV2ZW50
KGRhdGEsIG9yaWdpbikpOwogICAgIH0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZl
bnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IE1lc3NhZ2VFdmVudElu
aXQmIGluaXRpYWxpemVyKQogICAgIHsKQEAgLTExOSw5ICsxMTksOSBAQCBwcml2YXRlOgogICAg
IE1lc3NhZ2VFdmVudChjb25zdCBTY3JpcHRWYWx1ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmln
aW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3Vy
Y2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOwogICAgIE1lc3NhZ2VFdmVudChQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2Us
IFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOwogCi0gICAgZXhwbGljaXQgTWVzc2FnZUV2
ZW50KGNvbnN0IFN0cmluZyYgZGF0YSk7Ci0gICAgZXhwbGljaXQgTWVzc2FnZUV2ZW50KFBhc3NS
ZWZQdHI8QmxvYj4gZGF0YSk7Ci0gICAgZXhwbGljaXQgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGRhdGEpOworICAgIGV4cGxpY2l0IE1lc3NhZ2VFdmVudChjb25zdCBTdHJp
bmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKKyAgICBleHBsaWNpdCBNZXNzYWdlRXZl
bnQoUGFzc1JlZlB0cjxCbG9iPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbik7CisgICAgZXhw
bGljaXQgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGRhdGEsIGNvbnN0IFN0
cmluZyYgb3JpZ2luKTsKIAogICAgIERhdGFUeXBlIG1fZGF0YVR5cGU7CiAgICAgU2NyaXB0VmFs
dWUgbV9kYXRhQXNTY3JpcHRWYWx1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175758</attachid>
            <date>2012-11-23 02:49:48 -0800</date>
            <delta_ts>2012-11-23 02:58:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>102889_websocket_onmessage_origin.patch</filename>
            <type>text/plain</type>
            <size>12728</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMDY1YTdhLi5jZTQzNmVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMTEt
MjMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBXZWJTb2NrZXQncyBNZXNzYWdlRXZlbnQub3JpZ2luIGF0dHJpYnV0ZSBpcyBhbiBlbXB0
eSBzdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMjg4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBsYXlvdXQgdGVzdHMgdG8gY2hlY2sgdGhhdCB0aGUgbWVzc2FnZSBldmVudCdzIG9yaWdp
biBhdHRyaWJ1dGUKKyAgICAgICAgaXMgc2V0IHRvIHRoZSBVbmljb2RlIHNlcmlhbGl6YXRpb24g
b2YgdGhlIG9yaWdpbiBvZiB0aGUgVVJMIHRoYXQKKyAgICAgICAgd2FzIHBhc3NlZCB0byB0aGUg
V2ViU29ja2V0IG9iamVjdCdzIGNvbnN0cnVjdG9yLCBhcyBwZXIgdGhlCisgICAgICAgIFdlYlNv
Y2tldCBzcGVjaWZpY2F0aW9uLgorCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9zZW5kLWJsb2Itb25tZXNzYWdlLW9yaWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iLW9ubWVz
c2FnZS1vcmlnaW4uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9zZW5kLW9ubWVzc2FnZS1vcmlnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtb25tZXNzYWdlLW9y
aWdpbi5odG1sOiBBZGRlZC4KKwogMjAxMi0xMS0yMiAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIC13ZWJraXQtbWFzayBzaG9ydGhhbmQgc3dpdGNoZXMgLXdlYmtp
dC1tYXNrLWNsaXAgYW5kIC13ZWJraXQtbWFzay1vcmlnaW4gdmFsdWVzCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYmxvYi1vbm1l
c3NhZ2Utb3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iLW9ubWVzc2FnZS1vcmlnaW4tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZTJiY2EKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYmxv
Yi1vbm1lc3NhZ2Utb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitXZWIgU29j
a2V0IG1lc3NhZ2UgZXZlbnQgb3JpZ2luIGF0dHJpYnV0ZSB0ZXN0IChCbG9iIG1lc3NhZ2UpCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIFBBU1M6IE1lc3NhZ2UgIzAuCitQ
QVNTIG9yaWdpbiBpcyAid3M6Ly8xMjcuMC4wLjE6ODg4MCIKK1BBU1MgUEFTUzogTWVzc2FnZSAj
MS4KK1BBU1Mgb3JpZ2luIGlzICJ3czovLzEyNy4wLjAuMTo4ODgwIgorUEFTUyBQQVNTOiBNZXNz
YWdlICMyLgorUEFTUyBvcmlnaW4gaXMgIndzOi8vMTI3LjAuMC4xOjg4ODAiCitQQVNTIGNsb3Nl
RXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iLW9ubWVzc2FnZS1vcmlnaW4uaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iLW9ubWVzc2Fn
ZS1vcmlnaW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTNhODc5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9zZW5kLWJsb2Itb25tZXNzYWdlLW9yaWdpbi5odG1sCkBAIC0wLDAgKzEsNjkgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiV2ViIFNvY2tldCBtZXNzYWdlIGV2ZW50IG9y
aWdpbiBhdHRyaWJ1dGUgdGVzdCAoQmxvYiBtZXNzYWdlKSIpOworCit3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7Cit2YXIgZGF0YSA9ICIiOwordmFyIG9yaWdpbiA9ICIiOworCitmdW5jdGlv
biBzdGFydHNXaXRoKHRhcmdldCwgcHJlZml4KQoreworICAgIHJldHVybiB0YXJnZXQuaW5kZXhP
ZihwcmVmaXgpID09PSAwOworfQorCitmdW5jdGlvbiBjcmVhdGVCbG9iQ29udGFpbmluZ0hlbGxv
V29ybGQoKQoreworICAgIHJldHVybiBuZXcgQmxvYihbIkhlbGxvLCB3b3JsZCEiXSk7Cit9CisK
K2Z1bmN0aW9uIGNyZWF0ZUVtcHR5QmxvYigpCit7CisgICAgcmV0dXJuIG5ldyBCbG9iKFtdKTsK
K30KKworZnVuY3Rpb24gY3JlYXRlQmxvYkNvbnRhaW5pbmdBbGxEaXN0aW5jdEJ5dGVzKCkKK3sK
KyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheSgyNTYpOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMjU2OyArK2kpCisgICAgICAgIGFycmF5W2ldID0gaTsKKyAgICByZXR1cm4gbmV3IEJs
b2IoW2FycmF5XSk7Cit9CisKK3ZhciB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9jaGVjay1iaW5hcnktbWVzc2FnZXMiOwordmFyIHdzID0gbmV3IFdlYlNv
Y2tldCh1cmwpOwordmFyIGNsb3NlRXZlbnQ7CisKK3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sK
KyAgICB3cy5zZW5kKGNyZWF0ZUJsb2JDb250YWluaW5nSGVsbG9Xb3JsZCgpKTsKKyAgICB3cy5z
ZW5kKGNyZWF0ZUVtcHR5QmxvYigpKTsKKyAgICB3cy5zZW5kKGNyZWF0ZUJsb2JDb250YWluaW5n
QWxsRGlzdGluY3RCeXRlcygpKTsKK307CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50
KQoreworICAgIHZhciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICBpZiAoc3RhcnRzV2l0aCht
ZXNzYWdlLCAiUEFTUyIpKQorICAgICAgICB0ZXN0UGFzc2VkKG1lc3NhZ2UpOworICAgIGVsc2UK
KyAgICAgICAgdGVzdEZhaWxlZChtZXNzYWdlKTsKKyAgICBvcmlnaW4gPSBldmVudC5vcmlnaW47
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJvcmlnaW4iLCAid3M6Ly8xMjcuMC4wLjE6ODg4
MCIpOworfTsKKword3Mub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIGNsb3NlRXZl
bnQgPSBldmVudDsKKyAgICBzaG91bGRCZVRydWUoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK307CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3NlbmQtb25tZXNzYWdlLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtb25tZXNzYWdlLW9yaWdpbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ0OGQyOAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5Ymkvc2VuZC1vbm1lc3NhZ2Utb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBA
CitXZWIgU29ja2V0IG1lc3NhZ2UgZXZlbnQgb3JpZ2luIGF0dHJpYnV0ZSB0ZXN0IChTdHJpbmcg
bWVzc2FnZSkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0Nvbm5lY3RlZC4KK1BB
U1MgZGF0YSBpcyBGaXJzdE1lc3NhZ2VUb1NlbmQKK1BBU1Mgb3JpZ2luIGlzICJ3czovL2xvY2Fs
aG9zdDo4ODgwIgorUEFTUyBkYXRhIGlzIFNlY29uZE1lc3NhZ2VUb1NlbmQKK1BBU1Mgb3JpZ2lu
IGlzICJ3czovL2xvY2FsaG9zdDo4ODgwIgorQ2xvc2VkLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1vbm1lc3NhZ2Utb3JpZ2luLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtb25tZXNz
YWdlLW9yaWdpbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3NjFm
ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3NlbmQtb25tZXNzYWdlLW9yaWdpbi5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
IldlYiBTb2NrZXQgbWVzc2FnZSBldmVudCBvcmlnaW4gYXR0cmlidXRlIHRlc3QgKFN0cmluZyBt
ZXNzYWdlKSIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIGVu
ZFRlc3QoKQoreworICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SUQpOworICAgIGZpbmlzaEpTVGVz
dCgpOworfQorCit2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czovL2xvY2FsaG9zdDo4ODgwL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3NlbmQiKTsKKwordmFyIEZpcnN0TWVzc2FnZVRvU2VuZCA9ICJU
aGlzIGlzIHRoZSBmaXJzdCBtZXNzYWdlIHRvIHNlbmQgdG8gdGhlIHNlcnZlci4iOwordmFyIFNl
Y29uZE1lc3NhZ2VUb1NlbmQgPSAiVGhpcyBpcyB0aGUgc2Vjb25kLiI7CisvLyBuZWVkcyB0byBi
ZSBnbG9iYWwgdG8gYmUgYWNjZXNzYmlsZSBmcm9tIHNob3VsZEJlKCkuCit2YXIgZGF0YSA9ICIi
OwordmFyIG9yaWdpbiA9ICIiOworCit3cy5vbm9wZW4gPSBmdW5jdGlvbigpCit7CisgICAgZGVi
dWcoIkNvbm5lY3RlZC4iKTsKKyAgICB3cy5zZW5kKEZpcnN0TWVzc2FnZVRvU2VuZCk7Cit9Owor
Cit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihtZXNzYWdlRXZlbnQpCit7CisgICAgLy8gVGhlIHNl
cnZlciBzaG91bGQgZWNobyBiYWNrIHRoZSBmaXJzdCBtZXNzYWdlLgorICAgIGRhdGEgPSBtZXNz
YWdlRXZlbnQuZGF0YTsKKyAgICBzaG91bGRCZSgiZGF0YSIsICJGaXJzdE1lc3NhZ2VUb1NlbmQi
KTsKKyAgICBvcmlnaW4gPSBtZXNzYWdlRXZlbnQub3JpZ2luOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygib3JpZ2luIiwgIndzOi8vbG9jYWxob3N0Ojg4ODAiKTsKKyAgICB3cy5vbm1lc3Nh
Z2UgPSBmdW5jdGlvbihtZXNzYWdlRXZlbnQpIHsKKyAgICAgICAgLy8gVGhlIHNlcnZlciBzaG91
bGQgZWNobyBiYWNrIHRoZSBzZWNvbmQgbWVzc2FnZS4KKyAgICAgICAgZGF0YSA9IG1lc3NhZ2VF
dmVudC5kYXRhOworICAgICAgICBzaG91bGRCZSgiZGF0YSIsICJTZWNvbmRNZXNzYWdlVG9TZW5k
Iik7CisgICAgICAgIG9yaWdpbiA9IG1lc3NhZ2VFdmVudC5vcmlnaW47CisgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygib3JpZ2luIiwgIndzOi8vbG9jYWxob3N0Ojg4ODAiKTsKKyAgICB9
OworICAgIHdzLnNlbmQoU2Vjb25kTWVzc2FnZVRvU2VuZCk7Cit9OworCit3cy5vbmNsb3NlID0g
ZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCJDbG9zZWQuIik7CisgICAgZW5kVGVzdCgpOworfTsK
KworZnVuY3Rpb24gdGltZU91dENhbGxiYWNrKCkKK3sKKyAgICB0ZXN0RmFpbGVkKCJUaW1lZCBv
dXQgaW4gc3RhdGU6ICIgKyB3cy5yZWFkeVN0YXRlKTsKKyAgICBlbmRUZXN0KCk7Cit9CisKK3Zh
ciB0aW1lb3V0SUQgPSBzZXRUaW1lb3V0KHRpbWVPdXRDYWxsYmFjaywgMzAwMCk7CisKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTJiOWI2
My4uNzg0MDQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTExLTIzICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgV2Vi
U29ja2V0J3MgTWVzc2FnZUV2ZW50Lm9yaWdpbiBhdHRyaWJ1dGUgaXMgYW4gZW1wdHkgc3RyaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI4ODkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggV2Vi
U29ja2V0IGltcGxlbWVudGF0aW9uIHNvIHRoYXQgdGhlIG1lc3NhZ2UgZXZlbnQncyBvcmlnaW4K
KyAgICAgICAgYXR0cmlidXRlIGlzIHByb3Blcmx5IHNldCB0byB0aGUgVW5pY29kZSBzZXJpYWxp
emF0aW9uIG9mIHRoZQorICAgICAgICBvcmlnaW4gb2YgdGhlIFVSTCB0aGF0IHdhcyBwYXNzZWQg
dG8gdGhlIFdlYlNvY2tldCBvYmplY3QncworICAgICAgICBjb25zdHJ1Y3RvciwgaW5zdGVhZCBv
ZiBhbiBlbXB0eSBzdHJpbmcuCisKKyAgICAgICAgVGhlIG5ldyBiZWhhdmlvciBpcyBhY2NvcmRp
bmcgdG8gdGhlIHNwZWNpZmljYXRpb246CisgICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9z
cGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL25ldHdvcmsuaHRtbCNmZWVkYmFj
ay1mcm9tLXRoZS1wcm90b2NvbAorCisgICAgICAgIEl0IGFsc28gbWF0Y2hlcyB0aGUgYmVoYXZp
b3Igb2YgRmlyZWZveC4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9zZW5kLWJsb2Itb25tZXNzYWdlLW9yaWdpbi5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtb25tZXNzYWdlLW9yaWdpbi5odG1s
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgICogZG9tL01lc3Nh
Z2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVu
dCk6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TWVz
c2FnZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoTWVzc2FnZUV2ZW50KToKKwogMjAxMi0xMS0y
MiAgUmFmYWVsIEJyYW5kYW8gIDxyYWZhZWwubG9ib0BvcGVuYm9zc2Eub3JnPgogCiAgICAgICAg
IFJlbW92ZSBQTEFURk9STShIQUlLVSkgbGVmdG92ZXJzIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggN2YzMDczOC4uOGNkYzdk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHAKQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
Y29uc3QgU3RyaW5nJiBtc2cpCiAgICAgaWYgKG1fc3RhdGUgIT0gT1BFTiAmJiBtX3N0YXRlICE9
IENMT1NJTkcpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKLSAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG1zZykpOwor
ICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUobXNnLCBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKG1fdXJsKS0+dG9TdHJpbmcoKSkpOwogfQogCiB2b2lkIFdlYlNvY2tldDo6ZGlk
UmVjZWl2ZUJpbmFyeURhdGEoUGFzc093blB0cjxWZWN0b3I8Y2hhcj4gPiBiaW5hcnlEYXRhKQpA
QCAtNTIxLDEyICs1MjEsMTIgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRh
KFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+ID4gYmluYXJ5RGF0YSkKICAgICAgICAgT3duUHRyPEJs
b2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoKTsKICAgICAgICAgYmxvYkRhdGEt
PmFwcGVuZERhdGEocmF3RGF0YS5yZWxlYXNlKCksIDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZp
bGUpOwogICAgICAgICBSZWZQdHI8QmxvYj4gYmxvYiA9IEJsb2I6OmNyZWF0ZShibG9iRGF0YS5y
ZWxlYXNlKCksIHNpemUpOwotICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3Jl
YXRlKGJsb2IucmVsZWFzZSgpKSk7CisgICAgICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50
OjpjcmVhdGUoYmxvYi5yZWxlYXNlKCksIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpLT50
b1N0cmluZygpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgQmluYXJ5VHlw
ZUFycmF5QnVmZmVyOgotICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KEFycmF5QnVmZmVyOjpjcmVhdGUoYmluYXJ5RGF0YS0+ZGF0YSgpLCBiaW5hcnlEYXRhLT5zaXpl
KCkpKSk7CisgICAgICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQXJyYXlC
dWZmZXI6OmNyZWF0ZShiaW5hcnlEYXRhLT5kYXRhKCksIGJpbmFyeURhdGEtPnNpemUoKSksIFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpLT50b1N0cmluZygpKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKaW5kZXggMjRiNTJkZC4u
MTI4MmEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKQEAgLTc5LDI5ICs3OSwy
OSBAQCBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJgogI2VuZGlmCiB9CiAKLU1lc3NhZ2VFdmVudDo6
TWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSkKK01lc3NhZ2VFdmVudDo6TWVzc2FnZUV2
ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCiAgICAgOiBFdmVu
dChldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2RhdGFU
eXBlKERhdGFUeXBlU3RyaW5nKQogICAgICwgbV9kYXRhQXNTdHJpbmcoZGF0YSkKLSAgICAsIG1f
b3JpZ2luKCIiKQorICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAgICwgbV9sYXN0RXZlbnRJZCgi
IikKIHsKIH0KIAotTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxCbG9iPiBk
YXRhKQorTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxCbG9iPiBkYXRhLCBj
b25zdCBTdHJpbmcmIG9yaWdpbikKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZl
bnQsIGZhbHNlLCBmYWxzZSkKICAgICAsIG1fZGF0YVR5cGUoRGF0YVR5cGVCbG9iKQogICAgICwg
bV9kYXRhQXNCbG9iKGRhdGEpCi0gICAgLCBtX29yaWdpbigiIikKKyAgICAsIG1fb3JpZ2luKG9y
aWdpbikKICAgICAsIG1fbGFzdEV2ZW50SWQoIiIpCiB7CiB9CiAKLU1lc3NhZ2VFdmVudDo6TWVz
c2FnZUV2ZW50KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGRhdGEpCitNZXNzYWdlRXZlbnQ6Ok1l
c3NhZ2VFdmVudChQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9y
aWdpbikKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIGZhbHNlLCBmYWxz
ZSkKICAgICAsIG1fZGF0YVR5cGUoRGF0YVR5cGVBcnJheUJ1ZmZlcikKICAgICAsIG1fZGF0YUFz
QXJyYXlCdWZmZXIoZGF0YSkKLSAgICAsIG1fb3JpZ2luKCIiKQorICAgICwgbV9vcmlnaW4ob3Jp
Z2luKQogICAgICwgbV9sYXN0RXZlbnRJZCgiIikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuaAppbmRleCA4YTlkODJjLi4wYWZjM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5o
CkBAIC02NCwxNyArNjQsMTcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBNZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCBw
b3J0cykpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIGRhdGEpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9ICIiKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQoZGF0YSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4pKTsK
ICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBjcmVhdGUoUGFzc1Jl
ZlB0cjxCbG9iPiBkYXRhKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3Jl
YXRlKFBhc3NSZWZQdHI8QmxvYj4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSAiIikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2FnZUV2ZW50KGRhdGEpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2luKSk7CiAg
ICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IGRhdGEpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50
PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmln
aW4gPSAiIikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2FnZUV2ZW50
KGRhdGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQoZGF0YSwg
b3JpZ2luKSk7CiAgICAgfQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3Jl
YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVzc2FnZUV2ZW50SW5pdCYgaW5p
dGlhbGl6ZXIpCiAgICAgewpAQCAtMTE5LDkgKzExOSw5IEBAIHByaXZhdGU6CiAgICAgTWVzc2Fn
ZUV2ZW50KGNvbnN0IFNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSwgUGFz
c093blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7CiAgICAgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSwgUGFzc093
blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7CiAKLSAgICBleHBsaWNpdCBNZXNzYWdlRXZlbnQoY29u
c3QgU3RyaW5nJiBkYXRhKTsKLSAgICBleHBsaWNpdCBNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxC
bG9iPiBkYXRhKTsKLSAgICBleHBsaWNpdCBNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4gZGF0YSk7CisgICAgZXhwbGljaXQgTWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0
YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOworICAgIGV4cGxpY2l0IE1lc3NhZ2VFdmVudChQYXNz
UmVmUHRyPEJsb2I+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKKyAgICBleHBsaWNpdCBN
ZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gZGF0YSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4pOwogCiAgICAgRGF0YVR5cGUgbV9kYXRhVHlwZTsKICAgICBTY3JpcHRWYWx1ZSBtX2Rh
dGFBc1NjcmlwdFZhbHVlOwo=
</data>
<flag name="review"
          id="191309"
          type_id="1"
          status="+"
          setter="haraken"
    />
    <flag name="commit-queue"
          id="191310"
          type_id="3"
          status="-"
          setter="haraken"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175762</attachid>
            <date>2012-11-23 02:58:35 -0800</date>
            <delta_ts>2012-11-23 03:52:54 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>102889_websocket_onmessage_origin.patch</filename>
            <type>text/plain</type>
            <size>12724</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMDY1YTdhLi41ZjY2NTUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMTEt
MjMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBXZWJTb2NrZXQncyBNZXNzYWdlRXZlbnQub3JpZ2luIGF0dHJpYnV0ZSBpcyBhbiBlbXB0
eSBzdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMjg4OQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnRhcm8gSGFyYS4KKworICAgICAgICBB
ZGQgbGF5b3V0IHRlc3RzIHRvIGNoZWNrIHRoYXQgdGhlIG1lc3NhZ2UgZXZlbnQncyBvcmlnaW4g
YXR0cmlidXRlCisgICAgICAgIGlzIHNldCB0byB0aGUgVW5pY29kZSBzZXJpYWxpemF0aW9uIG9m
IHRoZSBvcmlnaW4gb2YgdGhlIFVSTCB0aGF0CisgICAgICAgIHdhcyBwYXNzZWQgdG8gdGhlIFdl
YlNvY2tldCBvYmplY3QncyBjb25zdHJ1Y3RvciwgYXMgcGVyIHRoZQorICAgICAgICBXZWJTb2Nr
ZXQgc3BlY2lmaWNhdGlvbi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5Ymkvc2VuZC1ibG9iLW9ubWVzc2FnZS1vcmlnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYmxvYi1vbm1lc3Nh
Z2Utb3JpZ2luLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5Ymkvc2VuZC1vbm1lc3NhZ2Utb3JpZ2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLW9ubWVzc2FnZS1vcmln
aW4uaHRtbDogQWRkZWQuCisKIDIwMTItMTEtMjIgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0
Lm9yZz4KIAogICAgICAgICAtd2Via2l0LW1hc2sgc2hvcnRoYW5kIHN3aXRjaGVzIC13ZWJraXQt
bWFzay1jbGlwIGFuZCAtd2Via2l0LW1hc2stb3JpZ2luIHZhbHVlcwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWJsb2Itb25tZXNz
YWdlLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3NlbmQtYmxvYi1vbm1lc3NhZ2Utb3JpZ2luLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmUyYmNhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWJsb2It
b25tZXNzYWdlLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorV2ViIFNvY2tl
dCBtZXNzYWdlIGV2ZW50IG9yaWdpbiBhdHRyaWJ1dGUgdGVzdCAoQmxvYiBtZXNzYWdlKQorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBQQVNTOiBNZXNzYWdlICMwLgorUEFT
UyBvcmlnaW4gaXMgIndzOi8vMTI3LjAuMC4xOjg4ODAiCitQQVNTIFBBU1M6IE1lc3NhZ2UgIzEu
CitQQVNTIG9yaWdpbiBpcyAid3M6Ly8xMjcuMC4wLjE6ODg4MCIKK1BBU1MgUEFTUzogTWVzc2Fn
ZSAjMi4KK1BBU1Mgb3JpZ2luIGlzICJ3czovLzEyNy4wLjAuMTo4ODgwIgorUEFTUyBjbG9zZUV2
ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3NlbmQtYmxvYi1vbm1lc3NhZ2Utb3JpZ2luLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYmxvYi1vbm1lc3NhZ2Ut
b3JpZ2luLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEzYTg3OQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5Ymkvc2VuZC1ibG9iLW9ubWVzc2FnZS1vcmlnaW4uaHRtbApAQCAtMCwwICsxLDY5IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
anMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIldlYiBTb2NrZXQgbWVzc2FnZSBldmVudCBvcmln
aW4gYXR0cmlidXRlIHRlc3QgKEJsb2IgbWVzc2FnZSkiKTsKKword2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOwordmFyIGRhdGEgPSAiIjsKK3ZhciBvcmlnaW4gPSAiIjsKKworZnVuY3Rpb24g
c3RhcnRzV2l0aCh0YXJnZXQsIHByZWZpeCkKK3sKKyAgICByZXR1cm4gdGFyZ2V0LmluZGV4T2Yo
cHJlZml4KSA9PT0gMDsKK30KKworZnVuY3Rpb24gY3JlYXRlQmxvYkNvbnRhaW5pbmdIZWxsb1dv
cmxkKCkKK3sKKyAgICByZXR1cm4gbmV3IEJsb2IoWyJIZWxsbywgd29ybGQhIl0pOworfQorCitm
dW5jdGlvbiBjcmVhdGVFbXB0eUJsb2IoKQoreworICAgIHJldHVybiBuZXcgQmxvYihbXSk7Cit9
CisKK2Z1bmN0aW9uIGNyZWF0ZUJsb2JDb250YWluaW5nQWxsRGlzdGluY3RCeXRlcygpCit7Cisg
ICAgdmFyIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoMjU2KTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDI1NjsgKytpKQorICAgICAgICBhcnJheVtpXSA9IGk7CisgICAgcmV0dXJuIG5ldyBCbG9i
KFthcnJheV0pOworfQorCit2YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvY2hlY2stYmluYXJ5LW1lc3NhZ2VzIjsKK3ZhciB3cyA9IG5ldyBXZWJTb2Nr
ZXQodXJsKTsKK3ZhciBjbG9zZUV2ZW50OworCit3cy5vbm9wZW4gPSBmdW5jdGlvbigpCit7Cisg
ICAgd3Muc2VuZChjcmVhdGVCbG9iQ29udGFpbmluZ0hlbGxvV29ybGQoKSk7CisgICAgd3Muc2Vu
ZChjcmVhdGVFbXB0eUJsb2IoKSk7CisgICAgd3Muc2VuZChjcmVhdGVCbG9iQ29udGFpbmluZ0Fs
bERpc3RpbmN0Qnl0ZXMoKSk7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkK
K3sKKyAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgaWYgKHN0YXJ0c1dpdGgobWVz
c2FnZSwgIlBBU1MiKSkKKyAgICAgICAgdGVzdFBhc3NlZChtZXNzYWdlKTsKKyAgICBlbHNlCisg
ICAgICAgIHRlc3RGYWlsZWQobWVzc2FnZSk7CisgICAgb3JpZ2luID0gZXZlbnQub3JpZ2luOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygib3JpZ2luIiwgIndzOi8vMTI3LjAuMC4xOjg4ODAi
KTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBjbG9zZUV2ZW50
ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVUcnVlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9zZW5kLW9ubWVzc2FnZS1vcmlnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLW9ubWVzc2FnZS1vcmlnaW4tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0YmFhZjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3NlbmQtb25tZXNzYWdlLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAor
V2ViIFNvY2tldCBtZXNzYWdlIGV2ZW50IG9yaWdpbiBhdHRyaWJ1dGUgdGVzdCAoU3RyaW5nIG1l
c3NhZ2UpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitDb25uZWN0ZWQuCitQQVNT
IGRhdGEgaXMgZmlyc3RNZXNzYWdlVG9TZW5kCitQQVNTIG9yaWdpbiBpcyAid3M6Ly9sb2NhbGhv
c3Q6ODg4MCIKK1BBU1MgZGF0YSBpcyBzZWNvbmRNZXNzYWdlVG9TZW5kCitQQVNTIG9yaWdpbiBp
cyAid3M6Ly9sb2NhbGhvc3Q6ODg4MCIKK0Nsb3NlZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtb25tZXNzYWdlLW9yaWdpbi5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLW9ubWVzc2Fn
ZS1vcmlnaW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODcxZTkx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9zZW5kLW9ubWVzc2FnZS1vcmlnaW4uaHRtbApAQCAtMCwwICsxLDY2IEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJX
ZWIgU29ja2V0IG1lc3NhZ2UgZXZlbnQgb3JpZ2luIGF0dHJpYnV0ZSB0ZXN0IChTdHJpbmcgbWVz
c2FnZSkiKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBlbmRU
ZXN0KCkKK3sKKyAgICBjbGVhclRpbWVvdXQodGltZW91dElEKTsKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKwordmFyIHdzID0gbmV3IFdlYlNvY2tldCgid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJz
b2NrZXQvdGVzdHMvaHliaS9zZW5kIik7CisKK3ZhciBmaXJzdE1lc3NhZ2VUb1NlbmQgPSAiVGhp
cyBpcyB0aGUgZmlyc3QgbWVzc2FnZSB0byBzZW5kIHRvIHRoZSBzZXJ2ZXIuIjsKK3ZhciBzZWNv
bmRNZXNzYWdlVG9TZW5kID0gIlRoaXMgaXMgdGhlIHNlY29uZC4iOworLy8gbmVlZHMgdG8gYmUg
Z2xvYmFsIHRvIGJlIGFjY2Vzc2JpbGUgZnJvbSBzaG91bGRCZSgpLgordmFyIGRhdGEgPSAiIjsK
K3ZhciBvcmlnaW4gPSAiIjsKKword3Mub25vcGVuID0gZnVuY3Rpb24oKQoreworICAgIGRlYnVn
KCJDb25uZWN0ZWQuIik7CisgICAgd3Muc2VuZChmaXJzdE1lc3NhZ2VUb1NlbmQpOworfTsKKwor
d3Mub25tZXNzYWdlID0gZnVuY3Rpb24obWVzc2FnZUV2ZW50KQoreworICAgIC8vIFRoZSBzZXJ2
ZXIgc2hvdWxkIGVjaG8gYmFjayB0aGUgZmlyc3QgbWVzc2FnZS4KKyAgICBkYXRhID0gbWVzc2Fn
ZUV2ZW50LmRhdGE7CisgICAgc2hvdWxkQmUoImRhdGEiLCAiZmlyc3RNZXNzYWdlVG9TZW5kIik7
CisgICAgb3JpZ2luID0gbWVzc2FnZUV2ZW50Lm9yaWdpbjsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIm9yaWdpbiIsICJ3czovL2xvY2FsaG9zdDo4ODgwIik7CisgICAgd3Mub25tZXNzYWdl
ID0gZnVuY3Rpb24obWVzc2FnZUV2ZW50KSB7CisgICAgICAgIC8vIFRoZSBzZXJ2ZXIgc2hvdWxk
IGVjaG8gYmFjayB0aGUgc2Vjb25kIG1lc3NhZ2UuCisgICAgICAgIGRhdGEgPSBtZXNzYWdlRXZl
bnQuZGF0YTsKKyAgICAgICAgc2hvdWxkQmUoImRhdGEiLCAic2Vjb25kTWVzc2FnZVRvU2VuZCIp
OworICAgICAgICBvcmlnaW4gPSBtZXNzYWdlRXZlbnQub3JpZ2luOworICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoIm9yaWdpbiIsICJ3czovL2xvY2FsaG9zdDo4ODgwIik7CisgICAgfTsK
KyAgICB3cy5zZW5kKHNlY29uZE1lc3NhZ2VUb1NlbmQpOworfTsKKword3Mub25jbG9zZSA9IGZ1
bmN0aW9uKCkKK3sKKyAgICBkZWJ1ZygiQ2xvc2VkLiIpOworICAgIGVuZFRlc3QoKTsKK307CisK
K2Z1bmN0aW9uIHRpbWVPdXRDYWxsYmFjaygpCit7CisgICAgdGVzdEZhaWxlZCgiVGltZWQgb3V0
IGluIHN0YXRlOiAiICsgd3MucmVhZHlTdGF0ZSk7CisgICAgZW5kVGVzdCgpOworfQorCit2YXIg
dGltZW91dElEID0gc2V0VGltZW91dCh0aW1lT3V0Q2FsbGJhY2ssIDMwMDApOworCis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDkyYjliNjMu
LmZkNTY5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMi0xMS0yMyAgQ2hyaXN0
b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFdlYlNv
Y2tldCdzIE1lc3NhZ2VFdmVudC5vcmlnaW4gYXR0cmlidXRlIGlzIGFuIGVtcHR5IHN0cmluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyODg5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudGFybyBIYXJhLgorCisgICAgICAgIEZpeCBXZWJTb2Nr
ZXQgaW1wbGVtZW50YXRpb24gc28gdGhhdCB0aGUgbWVzc2FnZSBldmVudCdzIG9yaWdpbgorICAg
ICAgICBhdHRyaWJ1dGUgaXMgcHJvcGVybHkgc2V0IHRvIHRoZSBVbmljb2RlIHNlcmlhbGl6YXRp
b24gb2YgdGhlCisgICAgICAgIG9yaWdpbiBvZiB0aGUgVVJMIHRoYXQgd2FzIHBhc3NlZCB0byB0
aGUgV2ViU29ja2V0IG9iamVjdCdzCisgICAgICAgIGNvbnN0cnVjdG9yLCBpbnN0ZWFkIG9mIGFu
IGVtcHR5IHN0cmluZy4KKworICAgICAgICBUaGUgbmV3IGJlaGF2aW9yIGlzIGFjY29yZGluZyB0
byB0aGUgc3BlY2lmaWNhdGlvbjoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNz
L3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvbmV0d29yay5odG1sI2ZlZWRiYWNrLWZy
b20tdGhlLXByb3RvY29sCisKKyAgICAgICAgSXQgYWxzbyBtYXRjaGVzIHRoZSBiZWhhdmlvciBv
ZiBGaXJlZm94LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3NlbmQtYmxvYi1vbm1lc3NhZ2Utb3JpZ2luLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1vbm1lc3NhZ2Utb3JpZ2luLmh0bWwKKwor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KToK
KyAgICAgICAgKiBkb20vTWVzc2FnZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdl
RXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChNZXNzYWdlRXZlbnQpOgorCiAyMDEyLTExLTIyICBS
YWZhZWwgQnJhbmRhbyAgPHJhZmFlbC5sb2JvQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmVt
b3ZlIFBMQVRGT1JNKEhBSUtVKSBsZWZ0b3ZlcnMgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCA3ZjMwNzM4Li44Y2RjN2RhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApA
QCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZShjb25z
dCBTdHJpbmcmIG1zZykKICAgICBpZiAobV9zdGF0ZSAhPSBPUEVOICYmIG1fc3RhdGUgIT0gQ0xP
U0lORykKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwotICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUobXNnKSk7CisgICAg
ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShtc2csIFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUobV91cmwpLT50b1N0cmluZygpKSk7CiB9CiAKIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNl
aXZlQmluYXJ5RGF0YShQYXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+IGJpbmFyeURhdGEpCkBAIC01
MjEsMTIgKzUyMSwxMiBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoUGFz
c093blB0cjxWZWN0b3I8Y2hhcj4gPiBiaW5hcnlEYXRhKQogICAgICAgICBPd25QdHI8QmxvYkRh
dGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZSgpOwogICAgICAgICBibG9iRGF0YS0+YXBw
ZW5kRGF0YShyYXdEYXRhLnJlbGVhc2UoKSwgMCwgQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSk7
CiAgICAgICAgIFJlZlB0cjxCbG9iPiBibG9iID0gQmxvYjo6Y3JlYXRlKGJsb2JEYXRhLnJlbGVh
c2UoKSwgc2l6ZSk7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUo
YmxvYi5yZWxlYXNlKCkpKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNy
ZWF0ZShibG9iLnJlbGVhc2UoKSwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3Ry
aW5nKCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBCaW5hcnlUeXBlQXJy
YXlCdWZmZXI6Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQXJy
YXlCdWZmZXI6OmNyZWF0ZShiaW5hcnlEYXRhLT5kYXRhKCksIGJpbmFyeURhdGEtPnNpemUoKSkp
KTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShBcnJheUJ1ZmZl
cjo6Y3JlYXRlKGJpbmFyeURhdGEtPmRhdGEoKSwgYmluYXJ5RGF0YS0+c2l6ZSgpKSwgU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3RyaW5nKCkpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAppbmRleCAyNGI1MmRkLi4xMjgy
YTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcApAQCAtNzksMjkgKzc5LDI5IEBA
IE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmCiAjZW5kaWYKIH0KIAotTWVzc2FnZUV2ZW50OjpNZXNz
YWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhKQorTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQo
Y29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICA6IEV2ZW50KGV2
ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIGZhbHNlLCBmYWxzZSkKICAgICAsIG1fZGF0YVR5cGUo
RGF0YVR5cGVTdHJpbmcpCiAgICAgLCBtX2RhdGFBc1N0cmluZyhkYXRhKQotICAgICwgbV9vcmln
aW4oIiIpCisgICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAgLCBtX2xhc3RFdmVudElkKCIiKQog
ewogfQogCi1NZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPEJsb2I+IGRhdGEp
CitNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPEJsb2I+IGRhdGEsIGNvbnN0
IFN0cmluZyYgb3JpZ2luKQogICAgIDogRXZlbnQoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCwg
ZmFsc2UsIGZhbHNlKQogICAgICwgbV9kYXRhVHlwZShEYXRhVHlwZUJsb2IpCiAgICAgLCBtX2Rh
dGFBc0Jsb2IoZGF0YSkKLSAgICAsIG1fb3JpZ2luKCIiKQorICAgICwgbV9vcmlnaW4ob3JpZ2lu
KQogICAgICwgbV9sYXN0RXZlbnRJZCgiIikKIHsKIH0KIAotTWVzc2FnZUV2ZW50OjpNZXNzYWdl
RXZlbnQoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gZGF0YSkKK01lc3NhZ2VFdmVudDo6TWVzc2Fn
ZUV2ZW50KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
KQogICAgIDogRXZlbnQoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCwgZmFsc2UsIGZhbHNlKQog
ICAgICwgbV9kYXRhVHlwZShEYXRhVHlwZUFycmF5QnVmZmVyKQogICAgICwgbV9kYXRhQXNBcnJh
eUJ1ZmZlcihkYXRhKQotICAgICwgbV9vcmlnaW4oIiIpCisgICAgLCBtX29yaWdpbihvcmlnaW4p
CiAgICAgLCBtX2xhc3RFdmVudElkKCIiKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5o
CmluZGV4IDhhOWQ4MmMuLjBhZmMzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKQEAg
LTY0LDE3ICs2NCwxNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4sIGxhc3RFdmVudElkLCBzb3VyY2UsIHBvcnRz
KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgZGF0YSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0gIiIpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VFdmVudChkYXRhKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2FnZUV2ZW50KGRhdGEsIG9yaWdpbikpOwogICAg
IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShQYXNzUmVmUHRy
PEJsb2I+IGRhdGEpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBjcmVhdGUo
UGFzc1JlZlB0cjxCbG9iPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9ICIiKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQoZGF0YSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4pKTsKICAgICB9
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBjcmVhdGUoUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gZGF0YSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNy
ZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9
ICIiKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQoZGF0
YSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmln
aW4pKTsKICAgICB9CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZXNzYWdlRXZlbnRJbml0JiBpbml0aWFs
aXplcikKICAgICB7CkBAIC0xMTksOSArMTE5LDkgQEAgcHJpdmF0ZToKICAgICBNZXNzYWdlRXZl
bnQoY29uc3QgU2NyaXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBT
dHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3du
UHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsKICAgICBNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3duUHRy
PE1lc3NhZ2VQb3J0QXJyYXk+KTsKIAotICAgIGV4cGxpY2l0IE1lc3NhZ2VFdmVudChjb25zdCBT
dHJpbmcmIGRhdGEpOwotICAgIGV4cGxpY2l0IE1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPEJsb2I+
IGRhdGEpOwotICAgIGV4cGxpY2l0IE1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBkYXRhKTsKKyAgICBleHBsaWNpdCBNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG9yaWdpbik7CisgICAgZXhwbGljaXQgTWVzc2FnZUV2ZW50KFBhc3NSZWZQ
dHI8QmxvYj4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOworICAgIGV4cGxpY2l0IE1lc3Nh
Z2VFdmVudChQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdp
bik7CiAKICAgICBEYXRhVHlwZSBtX2RhdGFUeXBlOwogICAgIFNjcmlwdFZhbHVlIG1fZGF0YUFz
U2NyaXB0VmFsdWU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>