<?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>65367</bug_id>
          
          <creation_ts>2011-07-29 04:37:53 -0700</creation_ts>
          <short_desc>WebSocket: Receive URL and subprotocol in WebSocketChannel::connect()</short_desc>
          <delta_ts>2011-08-01 04:16:36 -0700</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>All</rep_platform>
          <op_sys>All</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>65247</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yuta Kitamura">yutak</reporter>
          <assigned_to name="Yuta Kitamura">yutak</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>443887</commentid>
    <comment_count>0</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-07-29 04:37:53 -0700</bug_when>
    <thetext>Receive URL and subprotocol in WebSocketChannel::connect(), rather than WebSocketChannel constructor.

We need to check the arguments of WebSocket constructor (in WebSocket::connect()). This should be done between WebSocketChannel construction and WebSocketChannel::conncect() call, because we need to know which WebSocket protocol is used via WebSocketChannel to check the arguments, and then create a connection after checking the arguments.

This is part of bug 65247.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443892</commentid>
    <comment_count>1</comment_count>
      <attachid>102348</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-07-29 05:00:41 -0700</bug_when>
    <thetext>Created attachment 102348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444487</commentid>
    <comment_count>2</comment_count>
      <attachid>102348</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-31 19:37:48 -0700</bug_when>
    <thetext>Comment on attachment 102348
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        WebSocket::connect() needs to check the value of subprotocols provided by the script depending
&gt; +        on the value of WebSocketChannel::useHixie76Protocol(), thus WebSocketChannel has to receive

Isn&apos;t The subprotocol check implemented in connect() yet?

&gt; Source/WebCore/ChangeLog:36
&gt; +        * websockets/ThreadableWebSocketChannel.cpp:
&gt; +        (WebCore::ThreadableWebSocketChannel::create):
&gt; +        * websockets/ThreadableWebSocketChannel.h:
&gt; +        * websockets/WebSocket.cpp:
&gt; +        (WebCore::WebSocket::connect):
&gt; +        * websockets/WebSocketChannel.cpp:
&gt; +        (WebCore::WebSocketChannel::WebSocketChannel):
&gt; +        (WebCore::WebSocketChannel::connect):
&gt; +        * websockets/WebSocketChannel.h:
&gt; +        (WebCore::WebSocketChannel::create):
&gt; +        * websockets/WorkerThreadableWebSocketChannel.cpp:
&gt; +        (WebCore::WorkerThreadableWebSocketChannel::WorkerThreadableWebSocketChannel):
&gt; +        (WebCore::WorkerThreadableWebSocketChannel::connect):
&gt; +        (WebCore::WorkerThreadableWebSocketChannel::Peer::Peer):
&gt; +        (WebCore::WorkerThreadableWebSocketChannel::Peer::connect):
&gt; +        (WebCore::WorkerThreadableWebSocketChannel::Bridge::mainThreadCreateWebSocketChannel):
&gt; +        (WebCore::WorkerThreadableWebSocketChannel::Bridge::Bridge):
&gt; +        (WebCore::WorkerThreadableWebSocketChannel::mainThreadConnect):
&gt; +        (WebCore::WorkerThreadableWebSocketChannel::Bridge::connect):
&gt; +        * websockets/WorkerThreadableWebSocketChannel.h:
&gt; +        (WebCore::WorkerThreadableWebSocketChannel::create):
&gt; +        (WebCore::WorkerThreadableWebSocketChannel::Peer::create):
&gt; +        (WebCore::WorkerThreadableWebSocketChannel::Bridge::create):

You should write at least:
 * Removed the URL argument and the protocol argument
 for factory functions and constructors
 * Add the URL argument and the protocol argument
 for connect() functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444585</commentid>
    <comment_count>3</comment_count>
      <attachid>102494</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-01 01:50:14 -0700</bug_when>
    <thetext>Created attachment 102494
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444586</commentid>
    <comment_count>4</comment_count>
      <attachid>102348</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-01 01:52:45 -0700</bug_when>
    <thetext>Comment on attachment 102348
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        on the value of WebSocketChannel::useHixie76Protocol(), thus WebSocketChannel has to receive
&gt; 
&gt; Isn&apos;t The subprotocol check implemented in connect() yet?

Not yet. It will be implemented later. Rephrased the description completely to make sure the point becomes clearer.

&gt;&gt; Source/WebCore/ChangeLog:36
&gt;&gt; +        (WebCore::WorkerThreadableWebSocketChannel::Bridge::create):
&gt; 
&gt; You should write at least:
&gt;  * Removed the URL argument and the protocol argument
&gt;  for factory functions and constructors
&gt;  * Add the URL argument and the protocol argument
&gt;  for connect() functions.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444588</commentid>
    <comment_count>5</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-01 02:00:29 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 102348 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102348&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:9
&gt; &gt;&gt; +        on the value of WebSocketChannel::useHixie76Protocol(), thus WebSocketChannel has to receive
&gt; &gt; 
&gt; &gt; Isn&apos;t The subprotocol check implemented in connect() yet?
&gt; 
&gt; Not yet. It will be implemented later. Rephrased the description completely to make sure the point becomes clearer.

ok, so we should have a FIXME comment in connect().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444596</commentid>
    <comment_count>6</comment_count>
      <attachid>102498</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-01 02:21:27 -0700</bug_when>
    <thetext>Created attachment 102498
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444598</commentid>
    <comment_count>7</comment_count>
      <attachid>102498</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-01 02:22:23 -0700</bug_when>
    <thetext>Comment on attachment 102498
Patch v3

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444599</commentid>
    <comment_count>8</comment_count>
      <attachid>102348</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-01 02:22:41 -0700</bug_when>
    <thetext>Comment on attachment 102348
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt;&gt;&gt; +        on the value of WebSocketChannel::useHixie76Protocol(), thus WebSocketChannel has to receive
&gt;&gt;&gt; 
&gt;&gt;&gt; Isn&apos;t The subprotocol check implemented in connect() yet?
&gt;&gt; 
&gt;&gt; Not yet. It will be implemented later. Rephrased the description completely to make sure the point becomes clearer.
&gt; 
&gt; ok, so we should have a FIXME comment in connect().

Added FIXME in WebSocket::connect().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444641</commentid>
    <comment_count>9</comment_count>
      <attachid>102498</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-01 04:16:31 -0700</bug_when>
    <thetext>Comment on attachment 102498
Patch v3

Clearing flags on attachment: 102498

Committed r92116: &lt;http://trac.webkit.org/changeset/92116&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444643</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-01 04:16:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102348</attachid>
            <date>2011-07-29 05:00:41 -0700</date>
            <delta_ts>2011-08-01 02:22:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65367-20110729210039.patch</filename>
            <type>text/plain</type>
            <size>21826</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE5NDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5YzdmNDMxOWYwNTU3ZGNi
N2IyYzM5OTA2M2U4YmQ3NmYzOGNmYTExLi5iNDMzMTE5NWM2M2ZhZTQ5MWIzYjI0ZDBjZWVmZWM5
ZTgyOTNkM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDctMjkgIFl1dGEg
S2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViU29ja2V0OiBSZWNl
aXZlIFVSTCBhbmQgc3VicHJvdG9jb2wgaW4gV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdCgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTM2NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYlNvY2tldDo6
Y29ubmVjdCgpIG5lZWRzIHRvIGNoZWNrIHRoZSB2YWx1ZSBvZiBzdWJwcm90b2NvbHMgcHJvdmlk
ZWQgYnkgdGhlIHNjcmlwdCBkZXBlbmRpbmcKKyAgICAgICAgb24gdGhlIHZhbHVlIG9mIFdlYlNv
Y2tldENoYW5uZWw6OnVzZUhpeGllNzZQcm90b2NvbCgpLCB0aHVzIFdlYlNvY2tldENoYW5uZWwg
aGFzIHRvIHJlY2VpdmUKKyAgICAgICAgdGhlIHN1YnByb3RvY29sIHN0cmluZyBpbiBXZWJTb2Nr
ZXRDaGFubmVsOjpjb25uZWN0KCksIHJhdGhlciB0aGFuIHRoZSBjb25zdHJ1Y3Rvci4KKworICAg
ICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IsIHRodXMgbm8gbmV3IHRlc3RzLgorCisgICAgICAg
ICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKToKKyAgICAgICAgKiB3
ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojpjb25uZWN0
KToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6V2ViU29ja2V0Q2hhbm5lbCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KToKKyAgICAgICAgKiB3ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OmNyZWF0ZSk6CisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OlBlZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBl
ZXI6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZENyZWF0ZVdlYlNvY2tldENoYW5uZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6
QnJpZGdlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjptYWluVGhyZWFkQ29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjb25uZWN0KToKKyAgICAgICAgKiB3ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRn
ZTo6Y3JlYXRlKToKKwogMjAxMS0wNy0yOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1
MzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDI4YjkyNjNmOWIzODAwYjQzMmMzZTBmMjc3M2M1ZDAz
Y2M4NzMyOGUuLjE3ZjI0ZmI0ZGU0M2EyNzAyZWI5NDcxYjYzZDY3MjIzYWU4MWIxMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIGNvbnN0IGNoYXIgd2ViU29ja2V0Q2hhbm5lbE1vZGVbXSA9ICJ3ZWJTb2NrZXRDaGFubmVs
TW9kZSI7CiAKLVBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+IFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcHJvdG9jb2wpCitQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
PiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCkKIHsKICAgICBBU1NF
UlQoY29udGV4dCk7CiAgICAgQVNTRVJUKGNsaWVudCk7CkBAIC02MSwxMiArNjEsMTIgQEAgUGFz
c1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbD4gVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OmNyZWF0ZShTY3JpcHQKICAgICAgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCA9IHdv
cmtlckNvbnRleHQtPnRocmVhZCgpLT5ydW5Mb29wKCk7CiAgICAgICAgIFN0cmluZyBtb2RlID0g
d2ViU29ja2V0Q2hhbm5lbE1vZGU7CiAgICAgICAgIG1vZGUuYXBwZW5kKFN0cmluZzo6bnVtYmVy
KHJ1bkxvb3AuY3JlYXRlVW5pcXVlSWQoKSkpOwotICAgICAgICByZXR1cm4gV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZSh3b3JrZXJDb250ZXh0LCBjbGllbnQsIG1vZGUs
IHVybCwgcHJvdG9jb2wpOworICAgICAgICByZXR1cm4gV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OmNyZWF0ZSh3b3JrZXJDb250ZXh0LCBjbGllbnQsIG1vZGUpOwogICAgIH0KICNl
bmRpZiAvLyBFTkFCTEUoV09SS0VSUykKIAogICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50
KCkpOwotICAgIHJldHVybiBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUoY29udGV4dCwgY2xpZW50
LCB1cmwsIHByb3RvY29sKTsKKyAgICByZXR1cm4gV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKGNv
bnRleHQsIGNsaWVudCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBi
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApp
bmRleCBkNzIyOWI0NmQ0YTdlMzA4MjNlMTE0ZjgyODkzYWJiZTZmZDY3ZjNiLi41NjViMWVmNmIz
NzczYTg4MTJhODRiZmExMTcwM2RmNDQ1MmNiZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC00NywxMCAr
NDcsMTAgQEAgY2xhc3MgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKTsKIHB1YmxpYzoKICAgICBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIHsgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFdlYlNvY2tldENoYW5uZWxDbGllbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90
b2NvbCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCop
OwogCiAgICAgdmlydHVhbCBib29sIHVzZUhpeGllNzZQcm90b2NvbCgpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgY29ubmVjdCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZW5k
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBi
dWZmZXJlZEFtb3VudCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggZmQxMTVhZGE3MjZi
YjE2YWE4MGY3OTExNjdjMTA2MzM5ZTYzYjFiZC4uMGExNTkwYTNiMmZlN2QxNTc5MWM3OTI1YWQz
NjY2Zjk1YzU4MTdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApA
QCAtMTUxLDggKzE1MSw4IEBAIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2RlCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX2NoYW5uZWwgPSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcywgbV91cmwsIG1fcHJvdG9jb2wp
OwotICAgIG1fY2hhbm5lbC0+Y29ubmVjdCgpOworICAgIG1fY2hhbm5lbCA9IFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzKTsK
KyAgICBtX2NoYW5uZWwtPmNvbm5lY3QobV91cmwsIG1fcHJvdG9jb2wpOwogICAgIEFjdGl2ZURP
TU9iamVjdDo6c2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBjMWE0MDc0YWZlZmM4NDJm
ZWZkMDFiYjY4NTZkMDNmNTcwMWM1NWI1Li41OTEyNzU4NGM5YjJjODY2ZGRkMTM2YTJhODU1Mjdj
NmEyNDI3ODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgY29uc3QgV2ViU29ja2V0Q2hhbm5lbDo6T3BDb2Rl
IFdlYlNvY2tldENoYW5uZWw6Ok9wQ29kZUNsb3NlID0gMHg4OwogY29uc3QgV2ViU29ja2V0Q2hh
bm5lbDo6T3BDb2RlIFdlYlNvY2tldENoYW5uZWw6Ok9wQ29kZVBpbmcgPSAweDk7CiBjb25zdCBX
ZWJTb2NrZXRDaGFubmVsOjpPcENvZGUgV2ViU29ja2V0Q2hhbm5lbDo6T3BDb2RlUG9uZyA9IDB4
QTsKIAotV2ViU29ja2V0Q2hhbm5lbDo6V2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQsIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK1dlYlNvY2tldENoYW5uZWw6OldlYlNv
Y2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hh
bm5lbENsaWVudCogY2xpZW50KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2Ns
aWVudChjbGllbnQpCiAgICAgLCBtX2J1ZmZlcigwKQpAQCAtMTAzLDEyICsxMDMsOSBAQCBXZWJT
b2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFdlYlNvY2tldENoYQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0
PERvY3VtZW50Kj4obV9jb250ZXh0KTsKICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gZG9j
dW1lbnQtPnNldHRpbmdzKCkpCiAgICAgICAgIG1fdXNlSGl4aWU3NlByb3RvY29sID0gc2V0dGlu
Z3MtPnVzZUhpeGllNzZXZWJTb2NrZXRQcm90b2NvbCgpOwotICAgIG1faGFuZHNoYWtlID0gYWRv
cHRQdHIobmV3IFdlYlNvY2tldEhhbmRzaGFrZSh1cmwsIHByb3RvY29sLCBjb250ZXh0LCBtX3Vz
ZUhpeGllNzZQcm90b2NvbCkpOwogCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFn
ZSgpKQogICAgICAgICBtX2lkZW50aWZpZXIgPSBwYWdlLT5wcm9ncmVzcygpLT5jcmVhdGVVbmlx
dWVJZGVudGlmaWVyKCk7Ci0gICAgaWYgKG1faWRlbnRpZmllcikKLSAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJTb2NrZXQobV9jb250ZXh0LCBtX2lkZW50aWZp
ZXIsIHVybCwgbV9jb250ZXh0LT51cmwoKSk7CiB9CiAKIFdlYlNvY2tldENoYW5uZWw6On5XZWJT
b2NrZXRDaGFubmVsKCkKQEAgLTEyMSwxMiArMTE4LDE1IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5l
bDo6dXNlSGl4aWU3NlByb3RvY29sKCkKICAgICByZXR1cm4gbV91c2VIaXhpZTc2UHJvdG9jb2w7
CiB9CiAKLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdCgpCit2b2lkIFdlYlNvY2tldENo
YW5uZWw6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQog
ewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjb25uZWN0IiwgdGhpcyk7
CiAgICAgQVNTRVJUKCFtX2hhbmRsZSk7CiAgICAgQVNTRVJUKCFtX3N1c3BlbmRlZCk7CisgICAg
bV9oYW5kc2hha2UgPSBhZG9wdFB0cihuZXcgV2ViU29ja2V0SGFuZHNoYWtlKHVybCwgcHJvdG9j
b2wsIG1fY29udGV4dCwgbV91c2VIaXhpZTc2UHJvdG9jb2wpKTsKICAgICBtX2hhbmRzaGFrZS0+
cmVzZXQoKTsKKyAgICBpZiAobV9pZGVudGlmaWVyKQorICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENyZWF0ZVdlYlNvY2tldChtX2NvbnRleHQsIG1faWRlbnRpZmllciwgdXJs
LCBtX2NvbnRleHQtPnVybCgpKTsKICAgICByZWYoKTsKICAgICBtX2hhbmRsZSA9IFNvY2tldFN0
cmVhbUhhbmRsZTo6Y3JlYXRlKG1faGFuZHNoYWtlLT51cmwoKSwgdGhpcyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDY1NWI0N2Y3MWI4
MDA2NGQ4NzEzOGIyMTUwYWYyZmFiNGQ2YTQ5OWEuLjQxZmU2NDRkZjNhNDEwNDhkYjBlNDE2ZTRm
ZmFhMzlkN2IxNGIzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5oCkBAIC01MSwxMSArNTEsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIFdlYlNvY2tldENoYW5uZWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTb2NrZXRDaGFubmVs
PiwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCwgcHVibGljIFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCog
Y2xpZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJTb2NrZXRDaGFubmVsKGNvbnRleHQsIGNsaWVudCwgdXJsLCBwcm90
b2NvbCkpOyB9CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldENoYW5uZWw+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTb2NrZXRDaGFubmVsKGNvbnRl
eHQsIGNsaWVudCkpOyB9CiAgICAgICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWwoKTsKIAog
ICAgICAgICB2aXJ0dWFsIGJvb2wgdXNlSGl4aWU3NlByb3RvY29sKCk7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBjb25uZWN0KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICAgICAgdmlydHVhbCBib29sIHNlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1
ZmZlcmVkQW1vdW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOyAvLyBT
dGFydCBjbG9zaW5nIGhhbmRzaGFrZS4KQEAgLTgwLDcgKzgwLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bCgpIHsgZGVyZWYoKTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgV2ViU29ja2V0Q2hhbm5l
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCosIGNvbnN0
IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5l
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCopOwogCiAg
ICAgICAgIGJvb2wgYXBwZW5kVG9CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbik7
CiAgICAgICAgIHZvaWQgc2tpcEJ1ZmZlcihzaXplX3QgbGVuKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5jcHAKaW5kZXggZjU4MzRlYmZkYTExMDllNWZmNTNlZjlhODg4YTFmNTEwOWYxZTg4NC4u
NDI0NWM0NmNjNmJmMTExZmMxMDdjMWVkNzlkNWQ4Y2Y3MjEzOTgxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5jcHAKQEAgLTQ5LDEwICs0OSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbChXb3JrZXJDb250ZXh0KiBjb250ZXh0LCBXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBwcm90b2NvbCkKK1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbChXb3JrZXJDb250ZXh0KiBjb250ZXh0LCBX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUpCiAg
ICAgOiBtX3dvcmtlckNvbnRleHQoY29udGV4dCkKICAgICAsIG1fd29ya2VyQ2xpZW50V3JhcHBl
cihUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmNyZWF0ZShjbGllbnQp
KQotICAgICwgbV9icmlkZ2UoQnJpZGdlOjpjcmVhdGUobV93b3JrZXJDbGllbnRXcmFwcGVyLCBt
X3dvcmtlckNvbnRleHQsIHRhc2tNb2RlLCB1cmwsIHByb3RvY29sKSkKKyAgICAsIG1fYnJpZGdl
KEJyaWRnZTo6Y3JlYXRlKG1fd29ya2VyQ2xpZW50V3JhcHBlciwgbV93b3JrZXJDb250ZXh0LCB0
YXNrTW9kZSkpCiB7CiB9CiAKQEAgLTY4LDEwICs2OCwxMCBAQCBib29sIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjp1c2VIaXhpZTc2UHJvdG9jb2woKQogICAgIHJldHVybiBtX3dv
cmtlckNsaWVudFdyYXBwZXItPnVzZUhpeGllNzZQcm90b2NvbCgpOwogfQogCi12b2lkIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KCkKK3ZvaWQgV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHByb3RvY29sKQogewogICAgIGlmIChtX2JyaWRnZSkKLSAgICAgICAgbV9icmlkZ2UtPmNv
bm5lY3QoKTsKKyAgICAgICAgbV9icmlkZ2UtPmNvbm5lY3QodXJsLCBwcm90b2NvbCk7CiB9CiAK
IGJvb2wgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQpAQCAtMTIwLDEwICsxMjAsMTAgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6cmVzdW1lKCkKICAgICAgICAgbV9icmlkZ2UtPnJlc3VtZSgpOwogfQog
Ci1Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6UGVlcihQYXNzUmVmUHRy
PFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gY2xpZW50V3JhcHBlciwg
V29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wpCitXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6
UGVlcihQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4g
Y2xpZW50V3JhcHBlciwgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlKQogICAgIDogbV93
b3JrZXJDbGllbnRXcmFwcGVyKGNsaWVudFdyYXBwZXIpCiAgICAgLCBtX2xvYWRlclByb3h5KGxv
YWRlclByb3h5KQotICAgICwgbV9tYWluV2ViU29ja2V0Q2hhbm5lbChXZWJTb2NrZXRDaGFubmVs
OjpjcmVhdGUoY29udGV4dCwgdGhpcywgdXJsLCBwcm90b2NvbCkpCisgICAgLCBtX21haW5XZWJT
b2NrZXRDaGFubmVsKFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShjb250ZXh0LCB0aGlzKSkKICAg
ICAsIG1fdGFza01vZGUodGFza01vZGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
QEAgLTE0MywxMiArMTQzLDEyIEBAIGJvb2wgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlBlZXI6OnVzZUhpeGllNzZQcm90b2NvbCgpCiAgICAgcmV0dXJuIG1fbWFpbldlYlNvY2tl
dENoYW5uZWwtPnVzZUhpeGllNzZQcm90b2NvbCgpOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjb25uZWN0KCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHByb3RvY29sKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYg
KCFtX21haW5XZWJTb2NrZXRDaGFubmVsKQogICAgICAgICByZXR1cm47Ci0gICAgbV9tYWluV2Vi
U29ja2V0Q2hhbm5lbC0+Y29ubmVjdCgpOworICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPmNv
bm5lY3QodXJsLCBwcm90b2NvbCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRT
ZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIGJvb2wgc2Vu
dCkKQEAgLTI3OSwyMSArMjc5LDIxIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OkJyaWRnZTo6c2V0V2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpCiAgICAgd29y
a2VyQ2xpZW50V3JhcHBlci0+c2V0U3luY01ldGhvZERvbmUoKTsKIH0KIAotdm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlV2ViU29j
a2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBCcmlkZ2UqIHRoaXNQ
dHIsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiBw
cnBDbGllbnRXcmFwcGVyLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCit2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEJyaWRnZSogdGhpc1B0ciwgUGFzc1JlZlB0cjxUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHBycENsaWVudFdyYXBwZXIsIGNv
bnN0IFN0cmluZyYgdGFza01vZGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAKICAgICBS
ZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiBjbGllbnRXcmFw
cGVyID0gcHJwQ2xpZW50V3JhcHBlcjsKIAotICAgIFBlZXIqIHBlZXIgPSBQZWVyOjpjcmVhdGUo
Y2xpZW50V3JhcHBlciwgdGhpc1B0ci0+bV9sb2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUs
IHVybCwgcHJvdG9jb2wpOworICAgIFBlZXIqIHBlZXIgPSBQZWVyOjpjcmVhdGUoY2xpZW50V3Jh
cHBlciwgdGhpc1B0ci0+bV9sb2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUpOwogICAgIHRo
aXNQdHItPm1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KAogICAg
ICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJkJyaWRnZTo6c2V0V2ViU29ja2V0Q2hhbm5lbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpc1B0ciks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHBlZXIp
LCBjbGllbnRXcmFwcGVyLCBwZWVyLT51c2VIaXhpZTc2UHJvdG9jb2woKSksIHRhc2tNb2RlKTsK
IH0KIAotV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6QnJpZGdlKFBh
c3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJD
bGllbnRXcmFwcGVyLCBQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+IHdvcmtlckNvbnRleHQsIGNv
bnN0IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90
b2NvbCkKK1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OkJyaWRnZShQ
YXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2Vy
Q2xpZW50V3JhcHBlciwgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PiB3b3JrZXJDb250ZXh0LCBj
b25zdCBTdHJpbmcmIHRhc2tNb2RlKQogICAgIDogbV93b3JrZXJDbGllbnRXcmFwcGVyKHdvcmtl
ckNsaWVudFdyYXBwZXIpCiAgICAgLCBtX3dvcmtlckNvbnRleHQod29ya2VyQ29udGV4dCkKICAg
ICAsIG1fbG9hZGVyUHJveHkobV93b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+d29ya2VyTG9hZGVy
UHJveHkoKSkKQEAgLTMwNCw3ICszMDQsNyBAQCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6QnJpZGdlOjpCcmlkZ2UoUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0QwogICAg
IHNldE1ldGhvZE5vdENvbXBsZXRlZCgpOwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xv
YWRlcigKICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZCcmlkZ2U6Om1haW5UaHJlYWRDcmVh
dGVXZWJTb2NrZXRDaGFubmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9z
c1RocmVhZEFjY2Vzcyh0aGlzKSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBtX3Rhc2tNb2RlLCB1
cmwsIHByb3RvY29sKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKHRoaXMpLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIG1fdGFza01vZGUpKTsKICAg
ICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogICAgIEFTU0VSVChtX3BlZXIpOwogfQpAQCAt
MzE0LDIwICszMTQsMjAgQEAgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRn
ZTo6fkJyaWRnZSgpCiAgICAgZGlzY29ubmVjdCgpOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ29ubmVjdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGVlciogcGVlciwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0
LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIEFTU0VSVChwZWVyKTsKIAotICAgIHBlZXIt
PmNvbm5lY3QoKTsKKyAgICBwZWVyLT5jb25uZWN0KHVybCwgcHJvdG9jb2wpOwogfQogCi12b2lk
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNvbm5lY3QoKQordm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjb25uZWN0KGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKICAgICBBU1NFUlQobV93b3Jr
ZXJDbGllbnRXcmFwcGVyKTsKICAgICBBU1NFUlQobV9wZWVyKTsKLSAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3QsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
bV9wZWVyKSkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxs
YmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ29u
bmVjdCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhtX3BlZXIpLCB1cmwsIHByb3RvY29sKSk7CiB9
CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTZW5k
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCBmMjMwZmQ3YWZhZjkyZGJm
YjE5YWUwODE1YmQyZjU1MTRjZTJhOWUyLi5kNGQzN2M1MDMyMWU0YWE3NTY1ZjU5OTVhZjZiNzE1
NDJjZWNhZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC01NCwxNCArNTQsMTQgQEAg
Y2xhc3MgV29ya2VyUnVuTG9vcDsKIGNsYXNzIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsIDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+
LCBwdWJsaWMgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsPiBjcmVhdGUoV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCwgV2ViU29j
a2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+IGNyZWF0ZShXb3JrZXJDb250ZXh0KiB3b3JrZXJD
b250ZXh0LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgdGFz
a01vZGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsKHdvcmtlckNvbnRleHQsIGNsaWVudCwgdGFza01vZGUsIHVybCwg
cHJvdG9jb2wpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbCh3b3JrZXJDb250ZXh0LCBjbGllbnQsIHRhc2tNb2RlKSk7CiAgICAg
fQogICAgIHZpcnR1YWwgfldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKCk7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgdXNlSGl4aWU3NlByb3RvY29sKCk7Ci0gICAgdmlydHVhbCB2b2lkIGNv
bm5lY3QoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCk7CiAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKQEAgLTgzLDE0ICs4MywxNCBAQCBwcml2YXRlOgog
ICAgIGNsYXNzIFBlZXIgOiBwdWJsaWMgV2ViU29ja2V0Q2hhbm5lbENsaWVudCB7CiAgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFBlZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQZWVyKiBjcmVhdGUoUGFzc1JlZlB0cjxUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IGNsaWVudFdyYXBwZXIsIFdvcmtlckxv
YWRlclByb3h5JiBsb2FkZXJQcm94eSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sKQorICAgICAgICBzdGF0aWMgUGVlciogY3JlYXRlKFBhc3NSZWZQdHI8VGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiBjbGllbnRXcmFwcGVyLCBXb3JrZXJMb2Fk
ZXJQcm94eSYgbG9hZGVyUHJveHksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgdGFza01vZGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcg
UGVlcihjbGllbnRXcmFwcGVyLCBsb2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUsIHVybCwg
cHJvdG9jb2wpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBQZWVyKGNsaWVudFdyYXBwZXIsIGxv
YWRlclByb3h5LCBjb250ZXh0LCB0YXNrTW9kZSk7CiAgICAgICAgIH0KICAgICAgICAgflBlZXIo
KTsKIAogICAgICAgICBib29sIHVzZUhpeGllNzZQcm90b2NvbCgpOwotICAgICAgICB2b2lkIGNv
bm5lY3QoKTsKKyAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
IHByb3RvY29sKTsKICAgICAgICAgdm9pZCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAg
ICAgICAgIHZvaWQgYnVmZmVyZWRBbW91bnQoKTsKICAgICAgICAgdm9pZCBjbG9zZSgpOwpAQCAt
MTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZSh1
bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBDbG9zaW5nSGFuZHNoYWtlQ29t
cGxldGlvblN0YXR1cyk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBQZWVyKFBhc3NSZWZQdHI8
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiwgV29ya2VyTG9hZGVyUHJv
eHkmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOworICAgICAgICBQZWVyKFBhc3NSZWZQ
dHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiwgV29ya2VyTG9hZGVy
UHJveHkmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSk7
CiAKICAgICAgICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cj4gbV93b3JrZXJDbGllbnRXcmFwcGVyOwogICAgICAgICBXb3JrZXJMb2FkZXJQcm94eSYgbV9s
b2FkZXJQcm94eTsKQEAgLTExNiwxMiArMTE2LDEyIEBAIHByaXZhdGU6CiAgICAgLy8gQnJpZGdl
IGZvciBQZWVyLiAgUnVubmluZyBvbiB0aGUgd29ya2VyIHRocmVhZC4KICAgICBjbGFzcyBCcmlk
Z2UgOiBwdWJsaWMgUmVmQ291bnRlZDxCcmlkZ2U+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEJyaWRnZT4gY3JlYXRlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBQYXNzUmVmUHRy
PFdvcmtlckNvbnRleHQ+IHdvcmtlckNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKKyAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8QnJpZGdlPiBjcmVhdGUoUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIFBhc3NSZWZQdHI8V29ya2Vy
Q29udGV4dD4gd29ya2VyQ29udGV4dCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCcmlkZ2Uod29ya2VyQ2xpZW50V3Jh
cHBlciwgd29ya2VyQ29udGV4dCwgdGFza01vZGUsIHVybCwgcHJvdG9jb2wpKTsKKyAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQnJpZGdlKHdvcmtlckNsaWVudFdyYXBwZXIsIHdvcmtl
ckNvbnRleHQsIHRhc2tNb2RlKSk7CiAgICAgICAgIH0KICAgICAgICAgfkJyaWRnZSgpOwotICAg
ICAgICB2b2lkIGNvbm5lY3QoKTsKKyAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICAgICAgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSk7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKTsKICAgICAg
ICAgdm9pZCBjbG9zZSgpOwpAQCAtMTM0LDEyICsxMzQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAg
dXNpbmcgUmVmQ291bnRlZDxCcmlkZ2U+OjpkZXJlZjsKIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IEJyaWRnZShQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cj4sIFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4sIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKKyAgICAgICAgQnJpZGdlKFBhc3NS
ZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiwgUGFzc1JlZlB0
cjxXb3JrZXJDb250ZXh0PiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSk7CiAKICAgICAgICAgc3Rh
dGljIHZvaWQgc2V0V2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQnJp
ZGdlKiB0aGlzUHRyLCBQZWVyKiwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI+LCBib29sIHVzZUhpeGllNzZQcm90b2NvbCk7CiAKICAgICAgICAgLy8g
RXhlY3V0ZWQgb24gdGhlIG1haW4gdGhyZWFkIHRvIGNyZWF0ZSBhIFBlZXIgZm9yIHRoaXMgYnJp
ZGdlLgotICAgICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ3JlYXRlV2ViU29ja2V0Q2hhbm5l
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQnJpZGdlKiB0aGlzUHRyLCBQYXNzUmVmUHRyPFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4sIGNvbnN0IFN0cmluZyYgdGFz
a01vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKKyAgICAgICAgc3Rh
dGljIHZvaWQgbWFpblRocmVhZENyZWF0ZVdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEJyaWRnZSogdGhpc1B0ciwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlKTsKIAogICAgICAg
ICAvLyBFeGVjdXRlZCBvbiB0aGUgd29ya2VyIGNvbnRleHQncyB0aHJlYWQuCiAgICAgICAgIHZv
aWQgY2xlYXJDbGllbnRXcmFwcGVyKCk7CkBAIC0xNTQsOSArMTU0LDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgUGVlciogbV9wZWVyOwogICAgIH07CiAKLSAgICBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbChXb3JrZXJDb250ZXh0KiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCosIGNvbnN0
IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsK
KyAgICBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbChXb3JrZXJDb250ZXh0KiwgV2Vi
U29ja2V0Q2hhbm5lbENsaWVudCosIGNvbnN0IFN0cmluZyYgdGFza01vZGUpOwogCi0gICAgc3Rh
dGljIHZvaWQgbWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIq
KTsKKyAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ29ubmVjdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGVlciosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICBz
dGF0aWMgdm9pZCBtYWluVGhyZWFkU2VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlcios
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZEJ1ZmZl
cmVkQW1vdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKik7CiAgICAgc3RhdGljIHZv
aWQgbWFpblRocmVhZENsb3NlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102494</attachid>
            <date>2011-08-01 01:50:14 -0700</date>
            <delta_ts>2011-08-01 02:21:21 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-65367-20110801175012.patch</filename>
            <type>text/plain</type>
            <size>22847</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE5OTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZTMzZTYxNDg1YjRhNTRk
NDQwY2NjMTE0ZGU3MmJjMzI0NGMzODljLi43ZGJiZjhlNDBkMjRmZTY4OWI0ZjUwZGQ3NGZmNjQ0
YjJmYWExY2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMDgtMDEgIFl1dGEg
S2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViU29ja2V0OiBSZWNl
aXZlIFVSTCBhbmQgc3VicHJvdG9jb2wgaW4gV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdCgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTM2NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIGltcGxlbWVu
dCBtdWx0aXBsZSBzdWJwcm90b2NvbHMgc3VwcG9ydCAoYnVnIDY1MjQ3KSwgV2ViU29ja2V0Ojpj
b25uZWN0KCkgd2lsbCBuZWVkIHRvIHZhbGlkYXRlCisgICAgICAgIHRoZSB2YWx1ZSBvZiBzdWJw
cm90b2NvbHMgYWZ0ZXIgY29uc3RydWN0aW5nIFdlYlNvY2tldENoYW5uZWwsIGJlY2F1c2UgdGhl
IHJlc3VsdCBkZXBlbmRzIG9uIHdoaWNoCisgICAgICAgIFdlYlNvY2tldCBwcm90b2NvbCBpcyB1
c2VkLCB3aGljaCBpcyBvYnRhaW5lZCBmcm9tIFdlYlNvY2tldENoYW5uZWw6OnVzZUhpeGllNzZQ
cm90b2NvbCgpLiBUaGlzCisgICAgICAgIG1lYW5zIHRoZSBzdWJwcm90b2NvbCB2YWx1ZSB3aWxs
IG5vdCBiZSBhdmFpbGFibGUgYXQgdGhlIHRpbWUgb2YgV2ViU29ja2V0Q2hhbm5lbCBjb25zdHJ1
Y3Rpb24uCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgbW92ZXMgVVJMIGFuZCBzdWJwcm90b2NvbCBh
cmd1bWVudHMgaW4gV2ViU29ja2V0Q2hhbm5lbCBjb25zdHJ1Y3RvciB0bworICAgICAgICBXZWJT
b2NrZXRDaGFubmVsOjpjb25uZWN0KCksIHdoaWNoIGFsbG93cyBXZWJTb2NrZXQ6OmNvbm5lY3Qo
KSBmdW5jdGlvbiB0byBjaGVjayB0aGUgc3VicHJvdG9jb2wKKyAgICAgICAgdmFsdWUgYmVmb3Jl
IHRoZSBhY3R1YWwgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4KKworICAgICAgICBSZWxvY2F0
aW5nIFVSTCBhcmd1bWVudCBpcyB0ZWNobmljYWxseSBub3QgbmVjZXNzYXJ5LCBidXQgc2VlbWVk
IGxlZ2l0aW1hdGUgaW4gdGVybXMgb2YgZnVuY3Rpb25hbAorICAgICAgICBjb3JyZXNwb25kZW5j
ZSBiZXR3ZWVuIFdlYlNvY2tldCBhbmQgV2ViU29ja2V0Q2hhbm5lbCAoY29uc3RydWN0b3IgdmVy
c3VzIGNvbm5lY3QoKSkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLCB0aHVzIG5v
IG5ldyB0ZXN0cy4KKworICAgICAgICAqIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwOgorICAgICAgICBSZW1vdmUgInVybCIgYW5kICJwcm90b2NvbCIgYXJndW1lbnRz
IGZyb20gY29uc3RydWN0b3IgYW5kIGFkZCB0aGVtIGluIGNvbm5lY3QoKS4KKyAgICAgICAgKFdl
YkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUpOgorICAgICAgICAqIHdl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiB3ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNvbm5lY3Qp
OgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6IFNhbWUgYXMgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFu
bmVsOjpXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5u
ZWw6OmNvbm5lY3QpOgorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0
ZVdlYlNvY2tldCgpIGNhbGwgd2FzIG1vdmVkIHRvIGNvbm5lY3QoKSBiZWNhdXNlIGl0IG5lZWRz
IFVSTC4KKyAgICAgICAgVGhpcyBkb2VzIG5vdCBjaGFuZ2UgYmVoYXZpb3IsIGJlY2F1c2UgY29u
bmVjdCgpIGlzIGd1YXJhbnRlZWQgdG8gYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyCisgICAg
ICAgIFdlYlNvY2tldENoYW5uZWwgaXMgY29uc3RydWN0ZWQuCisgICAgICAgICogd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVs
OjpjcmVhdGUpOgorICAgICAgICAqIHdlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwOiBTYW1lIGFzIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OldvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpQZWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjb25uZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1h
aW5UaHJlYWRDcmVhdGVXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OkJyaWRnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENvbm5l
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OkJyaWRnZTo6Y29ubmVjdCk6CisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNyZWF0ZSk6CisKIDIwMTEt
MDctMjggIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEZpeCBzcGVlY2ggaW5wdXQgaWNvbiByZWN0IG9uIFJUTCBkaXJlY3Rpb25zLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcAppbmRleCAyOGI5MjYzZjliMzgwMGI0MzJjM2UwZjI3NzNjNWQwM2NjODcz
MjhlLi4xN2YyNGZiNGRlNDNhMjcwMmViOTQ3MWI2M2Q2NzIyM2FlODFiMTIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmNwcApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBj
b25zdCBjaGFyIHdlYlNvY2tldENoYW5uZWxNb2RlW10gPSAid2ViU29ja2V0Q2hhbm5lbE1vZGUi
OwogCi1QYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdl
YlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHByb3RvY29sKQorUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbD4gVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKGNv
bnRleHQpOwogICAgIEFTU0VSVChjbGllbnQpOwpAQCAtNjEsMTIgKzYxLDEyIEBAIFBhc3NSZWZQ
dHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpjcmVhdGUoU2NyaXB0CiAgICAgICAgIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AgPSB3b3JrZXJD
b250ZXh0LT50aHJlYWQoKS0+cnVuTG9vcCgpOwogICAgICAgICBTdHJpbmcgbW9kZSA9IHdlYlNv
Y2tldENoYW5uZWxNb2RlOwogICAgICAgICBtb2RlLmFwcGVuZChTdHJpbmc6Om51bWJlcihydW5M
b29wLmNyZWF0ZVVuaXF1ZUlkKCkpKTsKLSAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUod29ya2VyQ29udGV4dCwgY2xpZW50LCBtb2RlLCB1cmws
IHByb3RvY29sKTsKKyAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpjcmVhdGUod29ya2VyQ29udGV4dCwgY2xpZW50LCBtb2RlKTsKICAgICB9CiAjZW5kaWYg
Ly8gRU5BQkxFKFdPUktFUlMpCiAKICAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsK
LSAgICByZXR1cm4gV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKGNvbnRleHQsIGNsaWVudCwgdXJs
LCBwcm90b2NvbCk7CisgICAgcmV0dXJuIFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShjb250ZXh0
LCBjbGllbnQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXgg
ZDcyMjliNDZkNGE3ZTMwODIzZTExNGY4Mjg5M2FiYmU2ZmQ2N2YzYi4uNTY1YjFlZjZiMzc3M2E4
ODEyYTg0YmZhMTE3MDNkZjQ0NTJjYmRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNDcsMTAgKzQ3LDEw
IEBAIGNsYXNzIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCk7CiBwdWJsaWM6CiAgICAgVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwoKSB7IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJT
b2NrZXRDaGFubmVsQ2xpZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYlNvY2tldENoYW5uZWxDbGllbnQqKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCB1c2VIaXhpZTc2UHJvdG9jb2woKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGNvbm5lY3QoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVy
ZWRBbW91bnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGZkMTE1YWRhNzI2YmIxNmFh
ODBmNzkxMTY3YzEwNjMzOWU2M2IxYmQuLjBhMTU5MGEzYjJmZTdkMTU3OTFjNzkyNWFkMzY2NmY5
NWM1ODE3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTE1
MSw4ICsxNTEsOCBAQCB2b2lkIFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0aW9uQ29kZQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9jaGFubmVsID0gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNyZWF0
ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIG1fdXJsLCBtX3Byb3RvY29sKTsKLSAg
ICBtX2NoYW5uZWwtPmNvbm5lY3QoKTsKKyAgICBtX2NoYW5uZWwgPSBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcyk7CisgICAg
bV9jaGFubmVsLT5jb25uZWN0KG1fdXJsLCBtX3Byb3RvY29sKTsKICAgICBBY3RpdmVET01PYmpl
Y3Q6OnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggYzFhNDA3NGFmZWZjODQyZmVmZDAx
YmI2ODU2ZDAzZjU3MDFjNTViNS4uNTkxMjc1ODRjOWIyYzg2NmRkZDEzNmEyYTg1NTI3YzZhMjQy
NzgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwCkBAIC04Miw3ICs4Miw3IEBAIGNvbnN0IFdlYlNvY2tldENoYW5uZWw6Ok9wQ29kZSBXZWJT
b2NrZXRDaGFubmVsOjpPcENvZGVDbG9zZSA9IDB4ODsKIGNvbnN0IFdlYlNvY2tldENoYW5uZWw6
Ok9wQ29kZSBXZWJTb2NrZXRDaGFubmVsOjpPcENvZGVQaW5nID0gMHg5OwogY29uc3QgV2ViU29j
a2V0Q2hhbm5lbDo6T3BDb2RlIFdlYlNvY2tldENoYW5uZWw6Ok9wQ29kZVBvbmcgPSAweEE7CiAK
LVdlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCitXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRD
aGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYlNvY2tldENoYW5uZWxD
bGllbnQqIGNsaWVudCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9jbGllbnQo
Y2xpZW50KQogICAgICwgbV9idWZmZXIoMCkKQEAgLTEwMywxMiArMTAzLDkgQEAgV2ViU29ja2V0
Q2hhbm5lbDo6V2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBXZWJTb2NrZXRDaGEKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1
bWVudCo+KG1fY29udGV4dCk7CiAgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50
LT5zZXR0aW5ncygpKQogICAgICAgICBtX3VzZUhpeGllNzZQcm90b2NvbCA9IHNldHRpbmdzLT51
c2VIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2woKTsKLSAgICBtX2hhbmRzaGFrZSA9IGFkb3B0UHRy
KG5ldyBXZWJTb2NrZXRIYW5kc2hha2UodXJsLCBwcm90b2NvbCwgY29udGV4dCwgbV91c2VIaXhp
ZTc2UHJvdG9jb2wpKTsKIAogICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKSkK
ICAgICAgICAgbV9pZGVudGlmaWVyID0gcGFnZS0+cHJvZ3Jlc3MoKS0+Y3JlYXRlVW5pcXVlSWRl
bnRpZmllcigpOwotICAgIGlmIChtX2lkZW50aWZpZXIpCi0gICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0KG1fY29udGV4dCwgbV9pZGVudGlmaWVyLCB1
cmwsIG1fY29udGV4dC0+dXJsKCkpOwogfQogCiBXZWJTb2NrZXRDaGFubmVsOjp+V2ViU29ja2V0
Q2hhbm5lbCgpCkBAIC0xMjEsMTIgKzExOCwxNSBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnVz
ZUhpeGllNzZQcm90b2NvbCgpCiAgICAgcmV0dXJuIG1fdXNlSGl4aWU3NlByb3RvY29sOwogfQog
Ci12b2lkIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoKQordm9pZCBXZWJTb2NrZXRDaGFubmVs
Ojpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKICAg
ICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVjdCIsIHRoaXMpOwogICAg
IEFTU0VSVCghbV9oYW5kbGUpOwogICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOworICAgIG1faGFu
ZHNoYWtlID0gYWRvcHRQdHIobmV3IFdlYlNvY2tldEhhbmRzaGFrZSh1cmwsIHByb3RvY29sLCBt
X2NvbnRleHQsIG1fdXNlSGl4aWU3NlByb3RvY29sKSk7CiAgICAgbV9oYW5kc2hha2UtPnJlc2V0
KCk7CisgICAgaWYgKG1faWRlbnRpZmllcikKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRDcmVhdGVXZWJTb2NrZXQobV9jb250ZXh0LCBtX2lkZW50aWZpZXIsIHVybCwgbV9j
b250ZXh0LT51cmwoKSk7CiAgICAgcmVmKCk7CiAgICAgbV9oYW5kbGUgPSBTb2NrZXRTdHJlYW1I
YW5kbGU6OmNyZWF0ZShtX2hhbmRzaGFrZS0+dXJsKCksIHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCA2NTViNDdmNzFiODAwNjRk
ODcxMzhiMjE1MGFmMmZhYjRkNmE0OTlhLi40MWZlNjQ0ZGYzYTQxMDQ4ZGIwZTQxNmU0ZmZhYTM5
ZDdiMTRiM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuaApAQCAtNTEsMTEgKzUxLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBX
ZWJTb2NrZXRDaGFubmVsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0Q2hhbm5lbD4sIHB1
YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQsIHB1YmxpYyBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbCB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0Q2hhbm5lbD4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVu
dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgV2ViU29ja2V0Q2hhbm5lbChjb250ZXh0LCBjbGllbnQsIHVybCwgcHJvdG9jb2wp
KTsgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCog
Y2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgV2ViU29ja2V0Q2hhbm5lbChjb250ZXh0LCBj
bGllbnQpKTsgfQogICAgICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRDaGFubmVsKCk7CiAKICAgICAg
ICAgdmlydHVhbCBib29sIHVzZUhpeGllNzZQcm90b2NvbCgpOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgY29ubmVjdCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJl
ZEFtb3VudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsgLy8gU3RhcnQg
Y2xvc2luZyBoYW5kc2hha2UuCkBAIC04MCw3ICs4MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKSB7
IGRlcmVmKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFdlYlNvY2tldENoYW5uZWwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYlNvY2tldENoYW5uZWxDbGllbnQqLCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CisgICAgICAgIFdlYlNvY2tldENoYW5uZWwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYlNvY2tldENoYW5uZWxDbGllbnQqKTsKIAogICAgICAg
ICBib29sIGFwcGVuZFRvQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW4pOwogICAg
ICAgICB2b2lkIHNraXBCdWZmZXIoc2l6ZV90IGxlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
Y3BwCmluZGV4IGY1ODM0ZWJmZGExMTA5ZTVmZjUzZWY5YTg4OGExZjUxMDlmMWU4ODQuLjQyNDVj
NDZjYzZiZjExMWZjMTA3YzFlZDc5ZDVkOGNmNzIxMzk4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwCkBAIC00OSwxMCArNDksMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1X
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwoV29ya2VyQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCog
Y2xpZW50LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wpCitXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6V29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoV29ya2VyQ29udGV4dCogY29udGV4dCwgV2ViU29j
a2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlKQogICAgIDog
bV93b3JrZXJDb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3dvcmtlckNsaWVudFdyYXBwZXIoVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpjcmVhdGUoY2xpZW50KSkKLSAg
ICAsIG1fYnJpZGdlKEJyaWRnZTo6Y3JlYXRlKG1fd29ya2VyQ2xpZW50V3JhcHBlciwgbV93b3Jr
ZXJDb250ZXh0LCB0YXNrTW9kZSwgdXJsLCBwcm90b2NvbCkpCisgICAgLCBtX2JyaWRnZShCcmlk
Z2U6OmNyZWF0ZShtX3dvcmtlckNsaWVudFdyYXBwZXIsIG1fd29ya2VyQ29udGV4dCwgdGFza01v
ZGUpKQogewogfQogCkBAIC02OCwxMCArNjgsMTAgQEAgYm9vbCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6dXNlSGl4aWU3NlByb3RvY29sKCkKICAgICByZXR1cm4gbV93b3JrZXJD
bGllbnRXcmFwcGVyLT51c2VIaXhpZTc2UHJvdG9jb2woKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdCgpCit2b2lkIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCkKIHsKICAgICBpZiAobV9icmlkZ2UpCi0gICAgICAgIG1fYnJpZGdlLT5jb25uZWN0
KCk7CisgICAgICAgIG1fYnJpZGdlLT5jb25uZWN0KHVybCwgcHJvdG9jb2wpOwogfQogCiBib29s
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKQEAgLTEyMCwxMCArMTIwLDEwIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OnJlc3VtZSgpCiAgICAgICAgIG1fYnJpZGdlLT5yZXN1bWUoKTsKIH0KIAotV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OlBlZXIoUGFzc1JlZlB0cjxUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IGNsaWVudFdyYXBwZXIsIFdvcmtl
ckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHByb3RvY29sKQorV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OlBlZXIo
UGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IGNsaWVu
dFdyYXBwZXIsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSkKICAgICA6IG1fd29ya2Vy
Q2xpZW50V3JhcHBlcihjbGllbnRXcmFwcGVyKQogICAgICwgbV9sb2FkZXJQcm94eShsb2FkZXJQ
cm94eSkKLSAgICAsIG1fbWFpbldlYlNvY2tldENoYW5uZWwoV2ViU29ja2V0Q2hhbm5lbDo6Y3Jl
YXRlKGNvbnRleHQsIHRoaXMsIHVybCwgcHJvdG9jb2wpKQorICAgICwgbV9tYWluV2ViU29ja2V0
Q2hhbm5lbChXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUoY29udGV4dCwgdGhpcykpCiAgICAgLCBt
X3Rhc2tNb2RlKHRhc2tNb2RlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC0x
NDMsMTIgKzE0MywxMiBAQCBib29sIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQ
ZWVyOjp1c2VIaXhpZTc2UHJvdG9jb2woKQogICAgIHJldHVybiBtX21haW5XZWJTb2NrZXRDaGFu
bmVsLT51c2VIaXhpZTc2UHJvdG9jb2woKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6UGVlcjo6Y29ubmVjdCgpCit2b2lkIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpQZWVyOjpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBwcm90b2NvbCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9t
YWluV2ViU29ja2V0Q2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwotICAgIG1fbWFpbldlYlNvY2tl
dENoYW5uZWwtPmNvbm5lY3QoKTsKKyAgICBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5jb25uZWN0
KHVybCwgcHJvdG9jb2wpOwogfQogCiBzdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkU2VuZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBib29sIHNlbnQpCkBA
IC0yNzksMjEgKzI3OSwyMSBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpCcmlkZ2U6OnNldFdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aQogICAgIHdvcmtlckNs
aWVudFdyYXBwZXItPnNldFN5bmNNZXRob2REb25lKCk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZENyZWF0ZVdlYlNvY2tldENo
YW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQnJpZGdlKiB0aGlzUHRyLCBQ
YXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gcHJwQ2xp
ZW50V3JhcHBlciwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHByb3RvY29sKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6QnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlV2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBCcmlkZ2UqIHRoaXNQdHIsIFBhc3NSZWZQdHI8VGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiBwcnBDbGllbnRXcmFwcGVyLCBjb25zdCBT
dHJpbmcmIHRhc2tNb2RlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNT
RVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogCiAgICAgUmVmUHRy
PFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gY2xpZW50V3JhcHBlciA9
IHBycENsaWVudFdyYXBwZXI7CiAKLSAgICBQZWVyKiBwZWVyID0gUGVlcjo6Y3JlYXRlKGNsaWVu
dFdyYXBwZXIsIHRoaXNQdHItPm1fbG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2RlLCB1cmws
IHByb3RvY29sKTsKKyAgICBQZWVyKiBwZWVyID0gUGVlcjo6Y3JlYXRlKGNsaWVudFdyYXBwZXIs
IHRoaXNQdHItPm1fbG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2RlKTsKICAgICB0aGlzUHRy
LT5tX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dCgKICAgICAgICAg
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZCcmlkZ2U6OnNldFdlYlNvY2tldENoYW5uZWwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXNQdHIpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhwZWVyKSwgY2xp
ZW50V3JhcHBlciwgcGVlci0+dXNlSGl4aWU3NlByb3RvY29sKCkpLCB0YXNrTW9kZSk7CiB9CiAK
LVdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OkJyaWRnZShQYXNzUmVm
UHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50
V3JhcHBlciwgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PiB3b3JrZXJDb250ZXh0LCBjb25zdCBT
dHJpbmcmIHRhc2tNb2RlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wp
CitXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpCcmlkZ2UoUGFzc1Jl
ZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVu
dFdyYXBwZXIsIFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4gd29ya2VyQ29udGV4dCwgY29uc3Qg
U3RyaW5nJiB0YXNrTW9kZSkKICAgICA6IG1fd29ya2VyQ2xpZW50V3JhcHBlcih3b3JrZXJDbGll
bnRXcmFwcGVyKQogICAgICwgbV93b3JrZXJDb250ZXh0KHdvcmtlckNvbnRleHQpCiAgICAgLCBt
X2xvYWRlclByb3h5KG1fd29ya2VyQ29udGV4dC0+dGhyZWFkKCktPndvcmtlckxvYWRlclByb3h5
KCkpCkBAIC0zMDQsNyArMzA0LDcgQEAgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OkJyaWRnZTo6QnJpZGdlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldEMKICAgICBzZXRN
ZXRob2ROb3RDb21wbGV0ZWQoKTsKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIo
CiAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmQnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlV2Vi
U29ja2V0Q2hhbm5lbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJl
YWRBY2Nlc3ModGhpcyksIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgbV90YXNrTW9kZSwgdXJsLCBw
cm90b2NvbCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFj
Y2Vzcyh0aGlzKSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBtX3Rhc2tNb2RlKSk7CiAgICAgd2Fp
dEZvck1ldGhvZENvbXBsZXRpb24oKTsKICAgICBBU1NFUlQobV9wZWVyKTsKIH0KQEAgLTMxNCwy
MCArMzE0LDIwIEBAIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6On5C
cmlkZ2UoKQogICAgIGRpc2Nvbm5lY3QoKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGVlciogcGVlcikKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6Om1haW5UaHJlYWRDb25uZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBl
ZXIqIHBlZXIsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC0+aXNEb2N1bWVudCgpKTsKICAgICBBU1NFUlQocGVlcik7CiAKLSAgICBwZWVyLT5jb25u
ZWN0KCk7CisgICAgcGVlci0+Y29ubmVjdCh1cmwsIHByb3RvY29sKTsKIH0KIAotdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjb25uZWN0KCkKK3ZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y29ubmVjdChjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7CiAgICAgQVNTRVJUKG1fd29ya2VyQ2xp
ZW50V3JhcHBlcik7CiAgICAgQVNTRVJUKG1fcGVlcik7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6Om1haW5UaHJlYWRDb25uZWN0LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVl
cikpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tU
YXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3Qs
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSwgdXJsLCBwcm90b2NvbCkpOwogfQogCiB2
b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2VuZChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggZjIzMGZkN2FmYWY5MmRiZmIxOWFl
MDgxNWJkMmY1NTE0Y2UyYTllMi4uZDRkMzdjNTAzMjFlNGFhNzU2NWY1OTk1YWY2YjcxNTQyY2Vj
YWRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNTQsMTQgKzU0LDE0IEBAIGNsYXNz
IFdvcmtlclJ1bkxvb3A7CiBjbGFzcyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCA6
IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiwgcHVi
bGljIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbD4gY3JlYXRlKFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQsIFdlYlNvY2tldENo
YW5uZWxDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUoV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4
dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHRhc2tNb2Rl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbCh3b3JrZXJDb250ZXh0LCBjbGllbnQsIHRhc2tNb2RlLCB1cmwsIHByb3Rv
Y29sKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwod29ya2VyQ29udGV4dCwgY2xpZW50LCB0YXNrTW9kZSkpOwogICAgIH0KICAg
ICB2aXJ0dWFsIH5Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpOwogCiAgICAgdmly
dHVhbCBib29sIHVzZUhpeGllNzZQcm90b2NvbCgpOwotICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0
KCk7CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wpOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7
CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CiAgICAg
dmlydHVhbCB2b2lkIGNsb3NlKCk7CkBAIC04MywxNCArODMsMTQgQEAgcHJpdmF0ZToKICAgICBj
bGFzcyBQZWVyIDogcHVibGljIFdlYlNvY2tldENoYW5uZWxDbGllbnQgewogICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShQZWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgUGVlciogY3JlYXRlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiBjbGllbnRXcmFwcGVyLCBXb3JrZXJMb2FkZXJQ
cm94eSYgbG9hZGVyUHJveHksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCkKKyAgICAgICAgc3RhdGljIFBlZXIqIGNyZWF0ZShQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gY2xpZW50V3JhcHBlciwgV29ya2VyTG9hZGVyUHJv
eHkmIGxvYWRlclByb3h5LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHRhc2tNb2RlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFBlZXIo
Y2xpZW50V3JhcHBlciwgbG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2RlLCB1cmwsIHByb3Rv
Y29sKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUGVlcihjbGllbnRXcmFwcGVyLCBsb2FkZXJQ
cm94eSwgY29udGV4dCwgdGFza01vZGUpOwogICAgICAgICB9CiAgICAgICAgIH5QZWVyKCk7CiAK
ICAgICAgICAgYm9vbCB1c2VIaXhpZTc2UHJvdG9jb2woKTsKLSAgICAgICAgdm9pZCBjb25uZWN0
KCk7CisgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90
b2NvbCk7CiAgICAgICAgIHZvaWQgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAg
ICB2b2lkIGJ1ZmZlcmVkQW1vdW50KCk7CiAgICAgICAgIHZvaWQgY2xvc2UoKTsKQEAgLTEwNSw3
ICsxMDUsNyBAQCBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UodW5zaWdu
ZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRp
b25TdGF0dXMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUGVlcihQYXNzUmVmUHRyPFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4sIFdvcmtlckxvYWRlclByb3h5Jiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKKyAgICAgICAgUGVlcihQYXNzUmVmUHRyPFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4sIFdvcmtlckxvYWRlclByb3h5
JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdGFza01vZGUpOwogCiAg
ICAgICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IG1f
d29ya2VyQ2xpZW50V3JhcHBlcjsKICAgICAgICAgV29ya2VyTG9hZGVyUHJveHkmIG1fbG9hZGVy
UHJveHk7CkBAIC0xMTYsMTIgKzExNiwxMiBAQCBwcml2YXRlOgogICAgIC8vIEJyaWRnZSBmb3Ig
UGVlci4gIFJ1bm5pbmcgb24gdGhlIHdvcmtlciB0aHJlYWQuCiAgICAgY2xhc3MgQnJpZGdlIDog
cHVibGljIFJlZkNvdW50ZWQ8QnJpZGdlPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxCcmlkZ2U+IGNyZWF0ZShQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgUGFzc1JlZlB0cjxXb3Jr
ZXJDb250ZXh0PiB3b3JrZXJDb250ZXh0LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEJyaWRnZT4gY3JlYXRlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBQYXNzUmVmUHRyPFdvcmtlckNvbnRl
eHQ+IHdvcmtlckNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQnJpZGdlKHdvcmtlckNsaWVudFdyYXBwZXIs
IHdvcmtlckNvbnRleHQsIHRhc2tNb2RlLCB1cmwsIHByb3RvY29sKSk7CisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEJyaWRnZSh3b3JrZXJDbGllbnRXcmFwcGVyLCB3b3JrZXJDb250
ZXh0LCB0YXNrTW9kZSkpOwogICAgICAgICB9CiAgICAgICAgIH5CcmlkZ2UoKTsKLSAgICAgICAg
dm9pZCBjb25uZWN0KCk7CisgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCk7CiAgICAgICAgIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpOwogICAgICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCk7CiAgICAgICAgIHZv
aWQgY2xvc2UoKTsKQEAgLTEzNCwxMiArMTM0LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIHVzaW5n
IFJlZkNvdW50ZWQ8QnJpZGdlPjo6ZGVyZWY7CiAKICAgICBwcml2YXRlOgotICAgICAgICBCcmlk
Z2UoUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBQ
YXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CisgICAgICAgIEJyaWRnZShQYXNzUmVmUHRy
PFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4sIFBhc3NSZWZQdHI8V29y
a2VyQ29udGV4dD4sIGNvbnN0IFN0cmluZyYgdGFza01vZGUpOwogCiAgICAgICAgIHN0YXRpYyB2
b2lkIHNldFdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJyaWRnZSog
dGhpc1B0ciwgUGVlciosIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyPiwgYm9vbCB1c2VIaXhpZTc2UHJvdG9jb2wpOwogCiAgICAgICAgIC8vIEV4ZWN1
dGVkIG9uIHRoZSBtYWluIHRocmVhZCB0byBjcmVhdGUgYSBQZWVyIGZvciB0aGlzIGJyaWRnZS4K
LSAgICAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENyZWF0ZVdlYlNvY2tldENoYW5uZWwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEJyaWRnZSogdGhpc1B0ciwgUGFzc1JlZlB0cjxUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBjb25zdCBTdHJpbmcmIHRhc2tNb2Rl
LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CisgICAgICAgIHN0YXRpYyB2
b2lkIG1haW5UaHJlYWRDcmVhdGVXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBCcmlkZ2UqIHRoaXNQdHIsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyPiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSk7CiAKICAgICAgICAgLy8g
RXhlY3V0ZWQgb24gdGhlIHdvcmtlciBjb250ZXh0J3MgdGhyZWFkLgogICAgICAgICB2b2lkIGNs
ZWFyQ2xpZW50V3JhcHBlcigpOwpAQCAtMTU0LDkgKzE1NCw5IEBAIHByaXZhdGU6CiAgICAgICAg
IFBlZXIqIG1fcGVlcjsKICAgICB9OwogCi0gICAgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwoV29ya2VyQ29udGV4dCosIFdlYlNvY2tldENoYW5uZWxDbGllbnQqLCBjb25zdCBTdHJp
bmcmIHRhc2tNb2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CisgICAg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoV29ya2VyQ29udGV4dCosIFdlYlNvY2tl
dENoYW5uZWxDbGllbnQqLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlKTsKIAotICAgIHN0YXRpYyB2
b2lkIG1haW5UaHJlYWRDb25uZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKik7Cisg
ICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBlZXIqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgc3RhdGlj
IHZvaWQgbWFpblRocmVhZFNlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRCdWZmZXJlZEFt
b3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciopOwogICAgIHN0YXRpYyB2b2lkIG1h
aW5UaHJlYWRDbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102498</attachid>
            <date>2011-08-01 02:21:27 -0700</date>
            <delta_ts>2011-08-01 04:16:31 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-65367-20110801182125.patch</filename>
            <type>text/plain</type>
            <size>22987</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE5OTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZTMzZTYxNDg1YjRhNTRk
NDQwY2NjMTE0ZGU3MmJjMzI0NGMzODljLi43ZGJiZjhlNDBkMjRmZTY4OWI0ZjUwZGQ3NGZmNjQ0
YjJmYWExY2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMDgtMDEgIFl1dGEg
S2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViU29ja2V0OiBSZWNl
aXZlIFVSTCBhbmQgc3VicHJvdG9jb2wgaW4gV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdCgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTM2NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIGltcGxlbWVu
dCBtdWx0aXBsZSBzdWJwcm90b2NvbHMgc3VwcG9ydCAoYnVnIDY1MjQ3KSwgV2ViU29ja2V0Ojpj
b25uZWN0KCkgd2lsbCBuZWVkIHRvIHZhbGlkYXRlCisgICAgICAgIHRoZSB2YWx1ZSBvZiBzdWJw
cm90b2NvbHMgYWZ0ZXIgY29uc3RydWN0aW5nIFdlYlNvY2tldENoYW5uZWwsIGJlY2F1c2UgdGhl
IHJlc3VsdCBkZXBlbmRzIG9uIHdoaWNoCisgICAgICAgIFdlYlNvY2tldCBwcm90b2NvbCBpcyB1
c2VkLCB3aGljaCBpcyBvYnRhaW5lZCBmcm9tIFdlYlNvY2tldENoYW5uZWw6OnVzZUhpeGllNzZQ
cm90b2NvbCgpLiBUaGlzCisgICAgICAgIG1lYW5zIHRoZSBzdWJwcm90b2NvbCB2YWx1ZSB3aWxs
IG5vdCBiZSBhdmFpbGFibGUgYXQgdGhlIHRpbWUgb2YgV2ViU29ja2V0Q2hhbm5lbCBjb25zdHJ1
Y3Rpb24uCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgbW92ZXMgVVJMIGFuZCBzdWJwcm90b2NvbCBh
cmd1bWVudHMgaW4gV2ViU29ja2V0Q2hhbm5lbCBjb25zdHJ1Y3RvciB0bworICAgICAgICBXZWJT
b2NrZXRDaGFubmVsOjpjb25uZWN0KCksIHdoaWNoIGFsbG93cyBXZWJTb2NrZXQ6OmNvbm5lY3Qo
KSBmdW5jdGlvbiB0byBjaGVjayB0aGUgc3VicHJvdG9jb2wKKyAgICAgICAgdmFsdWUgYmVmb3Jl
IHRoZSBhY3R1YWwgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4KKworICAgICAgICBSZWxvY2F0
aW5nIFVSTCBhcmd1bWVudCBpcyB0ZWNobmljYWxseSBub3QgbmVjZXNzYXJ5LCBidXQgc2VlbWVk
IGxlZ2l0aW1hdGUgaW4gdGVybXMgb2YgZnVuY3Rpb25hbAorICAgICAgICBjb3JyZXNwb25kZW5j
ZSBiZXR3ZWVuIFdlYlNvY2tldCBhbmQgV2ViU29ja2V0Q2hhbm5lbCAoY29uc3RydWN0b3IgdmVy
c3VzIGNvbm5lY3QoKSkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLCB0aHVzIG5v
IG5ldyB0ZXN0cy4KKworICAgICAgICAqIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwOgorICAgICAgICBSZW1vdmUgInVybCIgYW5kICJwcm90b2NvbCIgYXJndW1lbnRz
IGZyb20gY29uc3RydWN0b3IgYW5kIGFkZCB0aGVtIGluIGNvbm5lY3QoKS4KKyAgICAgICAgKFdl
YkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUpOgorICAgICAgICAqIHdl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiB3ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNvbm5lY3Qp
OgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6IFNhbWUgYXMgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFu
bmVsOjpXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5u
ZWw6OmNvbm5lY3QpOgorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0
ZVdlYlNvY2tldCgpIGNhbGwgd2FzIG1vdmVkIHRvIGNvbm5lY3QoKSBiZWNhdXNlIGl0IG5lZWRz
IFVSTC4KKyAgICAgICAgVGhpcyBkb2VzIG5vdCBjaGFuZ2UgYmVoYXZpb3IsIGJlY2F1c2UgY29u
bmVjdCgpIGlzIGd1YXJhbnRlZWQgdG8gYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyCisgICAg
ICAgIFdlYlNvY2tldENoYW5uZWwgaXMgY29uc3RydWN0ZWQuCisgICAgICAgICogd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVs
OjpjcmVhdGUpOgorICAgICAgICAqIHdlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwOiBTYW1lIGFzIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OldvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpQZWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjb25uZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1h
aW5UaHJlYWRDcmVhdGVXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OkJyaWRnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENvbm5l
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OkJyaWRnZTo6Y29ubmVjdCk6CisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNyZWF0ZSk6CisKIDIwMTEt
MDctMjggIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEZpeCBzcGVlY2ggaW5wdXQgaWNvbiByZWN0IG9uIFJUTCBkaXJlY3Rpb25zLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcAppbmRleCAyOGI5MjYzZjliMzgwMGI0MzJjM2UwZjI3NzNjNWQwM2NjODcz
MjhlLi4xN2YyNGZiNGRlNDNhMjcwMmViOTQ3MWI2M2Q2NzIyM2FlODFiMTIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmNwcApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBj
b25zdCBjaGFyIHdlYlNvY2tldENoYW5uZWxNb2RlW10gPSAid2ViU29ja2V0Q2hhbm5lbE1vZGUi
OwogCi1QYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdl
YlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHByb3RvY29sKQorUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbD4gVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKGNv
bnRleHQpOwogICAgIEFTU0VSVChjbGllbnQpOwpAQCAtNjEsMTIgKzYxLDEyIEBAIFBhc3NSZWZQ
dHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpjcmVhdGUoU2NyaXB0CiAgICAgICAgIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AgPSB3b3JrZXJD
b250ZXh0LT50aHJlYWQoKS0+cnVuTG9vcCgpOwogICAgICAgICBTdHJpbmcgbW9kZSA9IHdlYlNv
Y2tldENoYW5uZWxNb2RlOwogICAgICAgICBtb2RlLmFwcGVuZChTdHJpbmc6Om51bWJlcihydW5M
b29wLmNyZWF0ZVVuaXF1ZUlkKCkpKTsKLSAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUod29ya2VyQ29udGV4dCwgY2xpZW50LCBtb2RlLCB1cmws
IHByb3RvY29sKTsKKyAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpjcmVhdGUod29ya2VyQ29udGV4dCwgY2xpZW50LCBtb2RlKTsKICAgICB9CiAjZW5kaWYg
Ly8gRU5BQkxFKFdPUktFUlMpCiAKICAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsK
LSAgICByZXR1cm4gV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKGNvbnRleHQsIGNsaWVudCwgdXJs
LCBwcm90b2NvbCk7CisgICAgcmV0dXJuIFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShjb250ZXh0
LCBjbGllbnQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXgg
ZDcyMjliNDZkNGE3ZTMwODIzZTExNGY4Mjg5M2FiYmU2ZmQ2N2YzYi4uNTY1YjFlZjZiMzc3M2E4
ODEyYTg0YmZhMTE3MDNkZjQ0NTJjYmRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNDcsMTAgKzQ3LDEw
IEBAIGNsYXNzIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCk7CiBwdWJsaWM6CiAgICAgVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwoKSB7IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJT
b2NrZXRDaGFubmVsQ2xpZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYlNvY2tldENoYW5uZWxDbGllbnQqKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCB1c2VIaXhpZTc2UHJvdG9jb2woKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGNvbm5lY3QoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVy
ZWRBbW91bnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGZkMTE1YWRhNzI2YmIxNmFh
ODBmNzkxMTY3YzEwNjMzOWU2M2IxYmQuLmE3YTExZTM0ZTcwNTc2NmZiNDI0ODA4NGIwYzBiZTBj
Y2MxYWY2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTE1
MSw4ICsxNTEsMTAgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIG1fY2hhbm5lbCA9IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpjcmVh
dGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzLCBtX3VybCwgbV9wcm90b2NvbCk7Ci0g
ICAgbV9jaGFubmVsLT5jb25uZWN0KCk7CisgICAgbV9jaGFubmVsID0gVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMpOworICAg
IC8vIEZJWE1FOiBHZXQgdGhlIHZhbHVlIG9mIG1fY2hhbm5lbC0+dXNlSGl4aWU3NlByb3RvY29s
KCkgYW5kIHZhbGlkYXRlIHRoZSB2YWx1ZSBvZiBzdWJwcm90b2NvbAorICAgIC8vIGlmIGh5Ymkt
MTAgcHJvdG9jb2wgaXMgdXNlZC4KKyAgICBtX2NoYW5uZWwtPmNvbm5lY3QobV91cmwsIG1fcHJv
dG9jb2wpOwogICAgIEFjdGl2ZURPTU9iamVjdDo6c2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApp
bmRleCBjMWE0MDc0YWZlZmM4NDJmZWZkMDFiYjY4NTZkMDNmNTcwMWM1NWI1Li41OTEyNzU4NGM5
YjJjODY2ZGRkMTM2YTJhODU1MjdjNmEyNDI3ODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgY29uc3QgV2Vi
U29ja2V0Q2hhbm5lbDo6T3BDb2RlIFdlYlNvY2tldENoYW5uZWw6Ok9wQ29kZUNsb3NlID0gMHg4
OwogY29uc3QgV2ViU29ja2V0Q2hhbm5lbDo6T3BDb2RlIFdlYlNvY2tldENoYW5uZWw6Ok9wQ29k
ZVBpbmcgPSAweDk7CiBjb25zdCBXZWJTb2NrZXRDaGFubmVsOjpPcENvZGUgV2ViU29ja2V0Q2hh
bm5lbDo6T3BDb2RlUG9uZyA9IDB4QTsKIAotV2ViU29ja2V0Q2hhbm5lbDo6V2ViU29ja2V0Q2hh
bm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK1dl
YlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50KQogICAgIDogbV9jb250ZXh0
KGNvbnRleHQpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2J1ZmZlcigwKQpAQCAt
MTAzLDEyICsxMDMsOSBAQCBXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYlNvY2tldENoYQogICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9jb250ZXh0KTsKICAgICBpZiAoU2V0
dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQtPnNldHRpbmdzKCkpCiAgICAgICAgIG1fdXNlSGl4
aWU3NlByb3RvY29sID0gc2V0dGluZ3MtPnVzZUhpeGllNzZXZWJTb2NrZXRQcm90b2NvbCgpOwot
ICAgIG1faGFuZHNoYWtlID0gYWRvcHRQdHIobmV3IFdlYlNvY2tldEhhbmRzaGFrZSh1cmwsIHBy
b3RvY29sLCBjb250ZXh0LCBtX3VzZUhpeGllNzZQcm90b2NvbCkpOwogCiAgICAgaWYgKFBhZ2Uq
IHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpKQogICAgICAgICBtX2lkZW50aWZpZXIgPSBwYWdlLT5w
cm9ncmVzcygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7Ci0gICAgaWYgKG1faWRlbnRpZmll
cikKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJTb2NrZXQo
bV9jb250ZXh0LCBtX2lkZW50aWZpZXIsIHVybCwgbV9jb250ZXh0LT51cmwoKSk7CiB9CiAKIFdl
YlNvY2tldENoYW5uZWw6On5XZWJTb2NrZXRDaGFubmVsKCkKQEAgLTEyMSwxMiArMTE4LDE1IEBA
IGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6dXNlSGl4aWU3NlByb3RvY29sKCkKICAgICByZXR1cm4g
bV91c2VIaXhpZTc2UHJvdG9jb2w7CiB9CiAKLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVj
dCgpCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHByb3RvY29sKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5l
bCAlcCBjb25uZWN0IiwgdGhpcyk7CiAgICAgQVNTRVJUKCFtX2hhbmRsZSk7CiAgICAgQVNTRVJU
KCFtX3N1c3BlbmRlZCk7CisgICAgbV9oYW5kc2hha2UgPSBhZG9wdFB0cihuZXcgV2ViU29ja2V0
SGFuZHNoYWtlKHVybCwgcHJvdG9jb2wsIG1fY29udGV4dCwgbV91c2VIaXhpZTc2UHJvdG9jb2wp
KTsKICAgICBtX2hhbmRzaGFrZS0+cmVzZXQoKTsKKyAgICBpZiAobV9pZGVudGlmaWVyKQorICAg
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYlNvY2tldChtX2NvbnRl
eHQsIG1faWRlbnRpZmllciwgdXJsLCBtX2NvbnRleHQtPnVybCgpKTsKICAgICByZWYoKTsKICAg
ICBtX2hhbmRsZSA9IFNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlKG1faGFuZHNoYWtlLT51cmwo
KSwgdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5oCmluZGV4IDY1NWI0N2Y3MWI4MDA2NGQ4NzEzOGIyMTUwYWYyZmFiNGQ2YTQ5OWEuLjQxZmU2
NDRkZjNhNDEwNDhkYjBlNDE2ZTRmZmFhMzlkN2IxNGIzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC01MSwxMSArNTEsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFdlYlNvY2tldENoYW5uZWwgOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJTb2NrZXRDaGFubmVsPiwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCwg
cHVibGljIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsIHsKICAgICAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJT
b2NrZXRDaGFubmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2Vi
U29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTb2NrZXRDaGFubmVsKGNvbnRl
eHQsIGNsaWVudCwgdXJsLCBwcm90b2NvbCkpOyB9CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYlNvY2tldENoYW5uZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJTb2NrZXRDaGFubmVsKGNvbnRleHQsIGNsaWVudCkpOyB9CiAgICAgICAgIHZpcnR1YWwgfldl
YlNvY2tldENoYW5uZWwoKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgdXNlSGl4aWU3NlByb3Rv
Y29sKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICAg
ICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICAgICAgdmly
dHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBjbG9zZSgpOyAvLyBTdGFydCBjbG9zaW5nIGhhbmRzaGFrZS4KQEAgLTgwLDcgKzgw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIHsgZGVyZWYoKTsgfQogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgV2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViU29ja2V0
Q2hhbm5lbENsaWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKKyAg
ICAgICAgV2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViU29ja2V0
Q2hhbm5lbENsaWVudCopOwogCiAgICAgICAgIGJvb2wgYXBwZW5kVG9CdWZmZXIoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGxlbik7CiAgICAgICAgIHZvaWQgc2tpcEJ1ZmZlcihzaXplX3QgbGVu
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggZjU4MzRlYmZkYTExMDllNWZmNTNl
ZjlhODg4YTFmNTEwOWYxZTg4NC4uNDI0NWM0NmNjNmJmMTExZmMxMDdjMWVkNzlkNWQ4Y2Y3MjEz
OTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTQ5LDEwICs0OSwxMCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbChXb3JrZXJDb250ZXh0KiBjb250ZXh0
LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUs
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK1dvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbChXb3Jr
ZXJDb250ZXh0KiBjb250ZXh0LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQsIGNvbnN0
IFN0cmluZyYgdGFza01vZGUpCiAgICAgOiBtX3dvcmtlckNvbnRleHQoY29udGV4dCkKICAgICAs
IG1fd29ya2VyQ2xpZW50V3JhcHBlcihUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmNyZWF0ZShjbGllbnQpKQotICAgICwgbV9icmlkZ2UoQnJpZGdlOjpjcmVhdGUobV93
b3JrZXJDbGllbnRXcmFwcGVyLCBtX3dvcmtlckNvbnRleHQsIHRhc2tNb2RlLCB1cmwsIHByb3Rv
Y29sKSkKKyAgICAsIG1fYnJpZGdlKEJyaWRnZTo6Y3JlYXRlKG1fd29ya2VyQ2xpZW50V3JhcHBl
ciwgbV93b3JrZXJDb250ZXh0LCB0YXNrTW9kZSkpCiB7CiB9CiAKQEAgLTY4LDEwICs2OCwxMCBA
QCBib29sIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjp1c2VIaXhpZTc2UHJvdG9j
b2woKQogICAgIHJldHVybiBtX3dvcmtlckNsaWVudFdyYXBwZXItPnVzZUhpeGllNzZQcm90b2Nv
bCgpOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0
KCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogewogICAgIGlmIChtX2JyaWRnZSkK
LSAgICAgICAgbV9icmlkZ2UtPmNvbm5lY3QoKTsKKyAgICAgICAgbV9icmlkZ2UtPmNvbm5lY3Qo
dXJsLCBwcm90b2NvbCk7CiB9CiAKIGJvb2wgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpAQCAtMTIwLDEwICsxMjAsMTAgQEAgdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lKCkKICAgICAgICAgbV9i
cmlkZ2UtPnJlc3VtZSgpOwogfQogCi1Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
UGVlcjo6UGVlcihQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcj4gY2xpZW50V3JhcHBlciwgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCitXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6UGVlcjo6UGVlcihQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcj4gY2xpZW50V3JhcHBlciwgV29ya2VyTG9hZGVyUHJveHkmIGxv
YWRlclByb3h5LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IHRhc2tNb2RlKQogICAgIDogbV93b3JrZXJDbGllbnRXcmFwcGVyKGNsaWVudFdyYXBwZXIpCiAg
ICAgLCBtX2xvYWRlclByb3h5KGxvYWRlclByb3h5KQotICAgICwgbV9tYWluV2ViU29ja2V0Q2hh
bm5lbChXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUoY29udGV4dCwgdGhpcywgdXJsLCBwcm90b2Nv
bCkpCisgICAgLCBtX21haW5XZWJTb2NrZXRDaGFubmVsKFdlYlNvY2tldENoYW5uZWw6OmNyZWF0
ZShjb250ZXh0LCB0aGlzKSkKICAgICAsIG1fdGFza01vZGUodGFza01vZGUpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTE0MywxMiArMTQzLDEyIEBAIGJvb2wgV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnVzZUhpeGllNzZQcm90b2NvbCgpCiAgICAg
cmV0dXJuIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnVzZUhpeGllNzZQcm90b2NvbCgpOwogfQog
Ci12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjb25uZWN0KCkK
K3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmNvbm5lY3QoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgaWYgKCFtX21haW5XZWJTb2NrZXRDaGFubmVsKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+Y29ubmVjdCgpOworICAgIG1fbWFp
bldlYlNvY2tldENoYW5uZWwtPmNvbm5lY3QodXJsLCBwcm90b2NvbCk7CiB9CiAKIHN0YXRpYyB2
b2lkIHdvcmtlckNvbnRleHREaWRTZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNs
aWVudFdyYXBwZXIsIGJvb2wgc2VudCkKQEAgLTI3OSwyMSArMjc5LDIxIEBAIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c2V0V2ViU29ja2V0Q2hhbm5lbChT
Y3JpcHRFeGVjdXRpCiAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0U3luY01ldGhvZERvbmUo
KTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpt
YWluVGhyZWFkQ3JlYXRlV2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBCcmlkZ2UqIHRoaXNQdHIsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyPiBwcnBDbGllbnRXcmFwcGVyLCBjb25zdCBTdHJpbmcmIHRhc2tN
b2RlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCit2b2lkIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVXZWJT
b2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEJyaWRnZSogdGhp
c1B0ciwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+
IHBycENsaWVudFdyYXBwZXIsIGNvbnN0IFN0cmluZyYgdGFza01vZGUpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlz
RG9jdW1lbnQoKSk7CiAKICAgICBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyPiBjbGllbnRXcmFwcGVyID0gcHJwQ2xpZW50V3JhcHBlcjsKIAotICAgIFBlZXIq
IHBlZXIgPSBQZWVyOjpjcmVhdGUoY2xpZW50V3JhcHBlciwgdGhpc1B0ci0+bV9sb2FkZXJQcm94
eSwgY29udGV4dCwgdGFza01vZGUsIHVybCwgcHJvdG9jb2wpOworICAgIFBlZXIqIHBlZXIgPSBQ
ZWVyOjpjcmVhdGUoY2xpZW50V3JhcHBlciwgdGhpc1B0ci0+bV9sb2FkZXJQcm94eSwgY29udGV4
dCwgdGFza01vZGUpOwogICAgIHRoaXNQdHItPm1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJDb250ZXh0KAogICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJkJyaWRnZTo6c2V0
V2ViU29ja2V0Q2hhbm5lbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3ModGhpc1B0ciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Ny
b3NzVGhyZWFkQWNjZXNzKHBlZXIpLCBjbGllbnRXcmFwcGVyLCBwZWVyLT51c2VIaXhpZTc2UHJv
dG9jb2woKSksIHRhc2tNb2RlKTsKIH0KIAotV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OkJyaWRnZTo6QnJpZGdlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBQYXNzUmVmUHRyPFdvcmtlckNvbnRl
eHQ+IHdvcmtlckNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpCcmlkZ2U6OkJyaWRnZShQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgUGFzc1JlZlB0cjxXb3JrZXJDb250
ZXh0PiB3b3JrZXJDb250ZXh0LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlKQogICAgIDogbV93b3Jr
ZXJDbGllbnRXcmFwcGVyKHdvcmtlckNsaWVudFdyYXBwZXIpCiAgICAgLCBtX3dvcmtlckNvbnRl
eHQod29ya2VyQ29udGV4dCkKICAgICAsIG1fbG9hZGVyUHJveHkobV93b3JrZXJDb250ZXh0LT50
aHJlYWQoKS0+d29ya2VyTG9hZGVyUHJveHkoKSkKQEAgLTMwNCw3ICszMDQsNyBAQCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpCcmlkZ2UoUGFzc1JlZlB0cjxUaHJl
YWRhYmxlV2ViU29ja2V0QwogICAgIHNldE1ldGhvZE5vdENvbXBsZXRlZCgpOwogICAgIG1fbG9h
ZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcigKICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZC
cmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVXZWJTb2NrZXRDaGFubmVsLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbV93b3JrZXJDbGllbnRX
cmFwcGVyLCBtX3Rhc2tNb2RlLCB1cmwsIHByb3RvY29sKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtX3dvcmtlckNsaWVudFdyYXBw
ZXIsIG1fdGFza01vZGUpKTsKICAgICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogICAgIEFT
U0VSVChtX3BlZXIpOwogfQpAQCAtMzE0LDIwICszMTQsMjAgQEAgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OkJyaWRnZTo6fkJyaWRnZSgpCiAgICAgZGlzY29ubmVjdCgpOwogfQog
Ci12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ29ubmVj
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyKQordm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVlciwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHByb3RvY29sKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
QVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIEFTU0VS
VChwZWVyKTsKIAotICAgIHBlZXItPmNvbm5lY3QoKTsKKyAgICBwZWVyLT5jb25uZWN0KHVybCwg
cHJvdG9jb2wpOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpC
cmlkZ2U6OmNvbm5lY3QoKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
QnJpZGdlOjpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkK
IHsKICAgICBBU1NFUlQobV93b3JrZXJDbGllbnRXcmFwcGVyKTsKICAgICBBU1NFUlQobV9wZWVy
KTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNr
KCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3QsIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjptYWluVGhyZWFkQ29ubmVjdCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhtX3BlZXIp
LCB1cmwsIHByb3RvY29sKSk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6Om1haW5UaHJlYWRTZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBl
ZXIqIHBlZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApp
bmRleCBmMjMwZmQ3YWZhZjkyZGJmYjE5YWUwODE1YmQyZjU1MTRjZTJhOWUyLi5kNGQzN2M1MDMy
MWU0YWE3NTY1ZjU5OTVhZjZiNzE1NDJjZWNhZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5o
CkBAIC01NCwxNCArNTQsMTQgQEAgY2xhc3MgV29ya2VyUnVuTG9vcDsKIGNsYXNzIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsIDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw+LCBwdWJsaWMgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUoV29ya2VyQ29udGV4dCog
d29ya2VyQ29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBjb25zdCBTdHJp
bmcmIHRhc2tNb2RlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+IGNyZWF0ZShX
b3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGll
bnQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKHdvcmtlckNvbnRleHQsIGNs
aWVudCwgdGFza01vZGUsIHVybCwgcHJvdG9jb2wpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCh3b3JrZXJDb250ZXh0LCBjbGll
bnQsIHRhc2tNb2RlKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfldvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgdXNlSGl4aWU3NlByb3RvY29sKCk7
Ci0gICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgdmlydHVhbCBib29sIHNl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVm
ZmVyZWRBbW91bnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKQEAgLTgzLDE0
ICs4MywxNCBAQCBwcml2YXRlOgogICAgIGNsYXNzIFBlZXIgOiBwdWJsaWMgV2ViU29ja2V0Q2hh
bm5lbENsaWVudCB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlZXIpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQZWVyKiBjcmVh
dGUoUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IGNs
aWVudFdyYXBwZXIsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQorICAgICAgICBzdGF0aWMgUGVlciogY3JlYXRl
KFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiBjbGll
bnRXcmFwcGVyLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBuZXcgUGVlcihjbGllbnRXcmFwcGVyLCBsb2FkZXJQcm94eSwgY29u
dGV4dCwgdGFza01vZGUsIHVybCwgcHJvdG9jb2wpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBQ
ZWVyKGNsaWVudFdyYXBwZXIsIGxvYWRlclByb3h5LCBjb250ZXh0LCB0YXNrTW9kZSk7CiAgICAg
ICAgIH0KICAgICAgICAgflBlZXIoKTsKIAogICAgICAgICBib29sIHVzZUhpeGllNzZQcm90b2Nv
bCgpOwotICAgICAgICB2b2lkIGNvbm5lY3QoKTsKKyAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0
IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICAgICAgdm9pZCBzZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgICAgIHZvaWQgYnVmZmVyZWRBbW91bnQoKTsKICAgICAg
ICAgdm9pZCBjbG9zZSgpOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRDbG9zZSh1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50
LCBDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cyk7CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBQZWVyKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyPiwgV29ya2VyTG9hZGVyUHJveHkmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
U3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwor
ICAgICAgICBQZWVyKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyPiwgV29ya2VyTG9hZGVyUHJveHkmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJiB0YXNrTW9kZSk7CiAKICAgICAgICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gbV93b3JrZXJDbGllbnRXcmFwcGVyOwogICAgICAgICBX
b3JrZXJMb2FkZXJQcm94eSYgbV9sb2FkZXJQcm94eTsKQEAgLTExNiwxMiArMTE2LDEyIEBAIHBy
aXZhdGU6CiAgICAgLy8gQnJpZGdlIGZvciBQZWVyLiAgUnVubmluZyBvbiB0aGUgd29ya2VyIHRo
cmVhZC4KICAgICBjbGFzcyBCcmlkZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxCcmlkZ2U+IHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJyaWRnZT4gY3JlYXRlKFBhc3NS
ZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGll
bnRXcmFwcGVyLCBQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+IHdvcmtlckNvbnRleHQsIGNvbnN0
IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCkKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8QnJpZGdlPiBjcmVhdGUoUGFzc1JlZlB0cjxU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBw
ZXIsIFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4gd29ya2VyQ29udGV4dCwgY29uc3QgU3RyaW5n
JiB0YXNrTW9kZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBC
cmlkZ2Uod29ya2VyQ2xpZW50V3JhcHBlciwgd29ya2VyQ29udGV4dCwgdGFza01vZGUsIHVybCwg
cHJvdG9jb2wpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQnJpZGdlKHdvcmtl
ckNsaWVudFdyYXBwZXIsIHdvcmtlckNvbnRleHQsIHRhc2tNb2RlKSk7CiAgICAgICAgIH0KICAg
ICAgICAgfkJyaWRnZSgpOwotICAgICAgICB2b2lkIGNvbm5lY3QoKTsKKyAgICAgICAgdm9pZCBj
b25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICAgICAgYm9v
bCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgYnVm
ZmVyZWRBbW91bnQoKTsKICAgICAgICAgdm9pZCBjbG9zZSgpOwpAQCAtMTM0LDEyICsxMzQsMTIg
QEAgcHJpdmF0ZToKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxCcmlkZ2U+OjpkZXJlZjsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIEJyaWRnZShQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4sIFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4sIGNvbnN0
IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsK
KyAgICAgICAgQnJpZGdlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyPiwgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PiwgY29uc3QgU3RyaW5nJiB0YXNr
TW9kZSk7CiAKICAgICAgICAgc3RhdGljIHZvaWQgc2V0V2ViU29ja2V0Q2hhbm5lbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgQnJpZGdlKiB0aGlzUHRyLCBQZWVyKiwgUGFzc1JlZlB0cjxUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBib29sIHVzZUhpeGllNzZQcm90
b2NvbCk7CiAKICAgICAgICAgLy8gRXhlY3V0ZWQgb24gdGhlIG1haW4gdGhyZWFkIHRvIGNyZWF0
ZSBhIFBlZXIgZm9yIHRoaXMgYnJpZGdlLgotICAgICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFk
Q3JlYXRlV2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQnJpZGdlKiB0
aGlzUHRyLCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cj4sIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sKTsKKyAgICAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENyZWF0ZVdlYlNvY2tldENo
YW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJyaWRnZSogdGhpc1B0ciwgUGFzc1JlZlB0
cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBjb25zdCBTdHJpbmcm
IHRhc2tNb2RlKTsKIAogICAgICAgICAvLyBFeGVjdXRlZCBvbiB0aGUgd29ya2VyIGNvbnRleHQn
cyB0aHJlYWQuCiAgICAgICAgIHZvaWQgY2xlYXJDbGllbnRXcmFwcGVyKCk7CkBAIC0xNTQsOSAr
MTU0LDkgQEAgcHJpdmF0ZToKICAgICAgICAgUGVlciogbV9wZWVyOwogICAgIH07CiAKLSAgICBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbChXb3JrZXJDb250ZXh0KiwgV2ViU29ja2V0
Q2hhbm5lbENsaWVudCosIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmIHByb3RvY29sKTsKKyAgICBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bChXb3JrZXJDb250ZXh0KiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCosIGNvbnN0IFN0cmluZyYg
dGFza01vZGUpOwogCi0gICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBlZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ29ubmVj
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmIHByb3RvY29sKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkU2VuZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgc3RhdGlj
IHZvaWQgbWFpblRocmVhZEJ1ZmZlcmVkQW1vdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
ZWVyKik7CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENsb3NlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQZWVyKik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>