<?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>67477</bug_id>
          
          <creation_ts>2011-09-02 05:05:32 -0700</creation_ts>
          <short_desc>WebSocket: Send ArrayBuffer as WebSocket binary message</short_desc>
          <delta_ts>2011-09-03 00:44:35 -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>65249</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>pimvdb</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>461168</commentid>
    <comment_count>0</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-09-02 05:05:32 -0700</bug_when>
    <thetext>The last part of bug 65249, sibling of bug 67465.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461177</commentid>
    <comment_count>1</comment_count>
      <attachid>106119</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-09-02 05:50:03 -0700</bug_when>
    <thetext>Created attachment 106119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461212</commentid>
    <comment_count>2</comment_count>
      <attachid>106119</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-09-02 07:20:50 -0700</bug_when>
    <thetext>Comment on attachment 106119
Patch

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

&gt; LayoutTests/http/tests/websocket/tests/hybi/workers/resources/send-blob.js:-5
&gt; -function startsWith(target, prefix)
&gt; -{
&gt; -    return target.indexOf(prefix) === 0;
&gt; -}
&gt; -

ChangeLog should mention the reason of this removal.

&gt; Source/WebCore/ChangeLog:22
&gt; +        Rename &quot;sent&quot; to &quot;sendResult&quot; to clarify the meaning. Messages from the script may not be sent

nit:
Hmm, the sent -&gt; sendResult renaming looks not to improve the readability. sendRequestResult?

&gt; Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp:433
&gt; +    OwnPtr&lt;Vector&lt;char&gt; &gt; data = adoptPtr(new Vector&lt;char&gt;);

We had better add a comment why we need to copy the ArrayBuffer to the Vector.

&gt; Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp:436
&gt; +    data-&gt;resize(binaryData.byteLength());
&gt; +    if (binaryData.byteLength())
&gt; +        memcpy(data-&gt;data(), binaryData.data(), binaryData.byteLength());

resize() should be reserveCapacity().
Your code initializes the vector buffer twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461758</commentid>
    <comment_count>3</comment_count>
      <attachid>106248</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-09-02 23:25:30 -0700</bug_when>
    <thetext>Created attachment 106248
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461762</commentid>
    <comment_count>4</comment_count>
      <attachid>106119</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-09-02 23:41:02 -0700</bug_when>
    <thetext>Comment on attachment 106119
Patch

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

Thank you for your comments!

&gt;&gt; LayoutTests/http/tests/websocket/tests/hybi/workers/resources/send-blob.js:-5
&gt;&gt; -
&gt; 
&gt; ChangeLog should mention the reason of this removal.

Added to ChangeLog.

&gt;&gt; Source/WebCore/ChangeLog:22
&gt;&gt; +        Rename &quot;sent&quot; to &quot;sendResult&quot; to clarify the meaning. Messages from the script may not be sent
&gt; 
&gt; nit:
&gt; Hmm, the sent -&gt; sendResult renaming looks not to improve the readability. sendRequestResult?

Renamed.

&gt;&gt; Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp:433
&gt;&gt; +    OwnPtr&lt;Vector&lt;char&gt; &gt; data = adoptPtr(new Vector&lt;char&gt;);
&gt; 
&gt; We had better add a comment why we need to copy the ArrayBuffer to the Vector.

Added a comment.

&gt;&gt; Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp:436
&gt;&gt; +        memcpy(data-&gt;data(), binaryData.data(), binaryData.byteLength());
&gt; 
&gt; resize() should be reserveCapacity().
&gt; Your code initializes the vector buffer twice.

I don&apos;t think using reserveCapaity() is right, for two reasons:
- Initializing the vector elements will be turned into no-op, if the element type is primitive one. (VectorInitializer is doing some template magic)
- reserveCapacity() does not change the size of the vector, so we must add elements anyway. Appending each element should not be better than memcpy().

However, I realized resize() is not necessary becase we can use Vector constructor instead. I update the patch to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461780</commentid>
    <comment_count>5</comment_count>
      <attachid>106248</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-03 00:44:30 -0700</bug_when>
    <thetext>Comment on attachment 106248
Patch for landing

Clearing flags on attachment: 106248

Committed r94482: &lt;http://trac.webkit.org/changeset/94482&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461782</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-03 00:44:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106119</attachid>
            <date>2011-09-02 05:50:03 -0700</date>
            <delta_ts>2011-09-02 23:41:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67477-20110902215002.patch</filename>
            <type>text/plain</type>
            <size>38033</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ0MDYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZDE5NjRiZTA2NWZiOWU3ODNjYjdj
ODI1NGE5OWYzNzY4M2M4NTgyLi43NDNhNzI2YTc4OGU5MzI5Y2QzMzVhNDQ1MTliN2VhODAyMWE0
M2EyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsMzAgQEAKIDIwMTEtMDktMDIgIFl1dGEgS2l0YW11cmEgIDx5
dXRha0BjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViU29ja2V0OiBTZW5kIEFycmF5QnVmZmVy
IGFzIFdlYlNvY2tldCBiaW5hcnkgbWVzc2FnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc0NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVm
ZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UuaHRtbDoK
KyAgICAgICAgQWRkIHRlc3RzIHRvIHNlbmQgQXJyYXlCdWZmZXJzLgorICAgICAgICAqIGh0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2hlY2stYmluYXJ5LW1lc3NhZ2VzX3dzaC5weToK
KyAgICAgICAgUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5Ymkvc2VuZC1ibG9iX3dzaC5weSwgYmVjYXVzZSB0aGlzIGhhbmRsZXIKKyAgICAgICAg
aXMgdXNlZCBmcm9tIHNlbmQtYmxvYi5odG1sIGFuZCBzZW5kLWFycmF5YnVmZmVyLmh0bWwuCisg
ICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWFycmF5YnVmZmVy
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9zZW5kLWFycmF5YnVmZmVyLmh0bWw6CisgICAgICAgIEFkZGVkLiBTZW5kIHRocmVl
IHNtYWxsIGJpbmFyeSBtZXNzYWdlcyBhcyBBcnJheUJ1ZmZlcnMuCisgICAgICAgICogaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWJsb2IuaHRtbDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2NoZWNrLWJpbmFy
eS1tZXNzYWdlc193c2gucHk6CisgICAgICAgIFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL3NlbmQtYmxvYl93
c2gucHkuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJz
L3Jlc291cmNlcy9zZW5kLWFycmF5YnVmZmVyLmpzOgorICAgICAgICBBZGRlZC4gU2FtZSBhcyBz
ZW5kLWFycmF5YnVmZmVyLmh0bWwsIGV4Y2VwdCB0aGF0IHRoaXMgdGVzdCBpcyBydW4gb24gdGhl
IHdvcmtlci4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtl
cnMvcmVzb3VyY2VzL3NlbmQtYmxvYi5qczoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3dvcmtlcnMvc2VuZC1hcnJheWJ1ZmZlci1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9zZW5k
LWFycmF5YnVmZmVyLmh0bWw6IEFkZGVkCisKKzIwMTEtMDktMDIgIFl1dGEgS2l0YW11cmEgIDx5
dXRha0BjaHJvbWl1bS5vcmc+CisKICAgICAgICAgV2ViU29ja2V0OiBTZW5kIEJsb2IgYXMgV2Vi
U29ja2V0IGJpbmFyeSBtZXNzYWdlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NzQ2NQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVy
ZWRBbW91bnQtYWZ0ZXItY2xvc2UtZXhwZWN0ZWQudHh0CmluZGV4IDdjNmQ1NWViNjRkZWUzOWI4
MWUyMDFkNmMxOGJmNTNlYTU3Yjk1OWIuLjA0NGZlMGY5YjRlODVjN2IzNjlkYTMxM2U1YzM3NWMy
N2Q2YzM1ZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQt
YWZ0ZXItY2xvc2UtZXhwZWN0ZWQudHh0CkBAIC0yMSw2ICsyMSwxOSBAQCBQQVNTIHdzLnNlbmQo
bWVzc2FnZVRvU2VuZCkgaXMgZmFsc2UKIFBBU1MgYnVmZmVyZWRBbW91bnREaWZmZXJlbmNlIGlz
IDY1NTQzCiBQQVNTIHdzLnNlbmQobWVzc2FnZVRvU2VuZCkgaXMgZmFsc2UKIFBBU1MgYnVmZmVy
ZWRBbW91bnREaWZmZXJlbmNlIGlzIDY1NTUwCitUZXN0aW5nIHNlbmQoQXJyYXlCdWZmZXIpLi4u
CitQQVNTIHdzLnNlbmQobWVzc2FnZVRvU2VuZCkgaXMgZmFsc2UKK1BBU1MgYnVmZmVyZWRBbW91
bnREaWZmZXJlbmNlIGlzIDYKK1BBU1Mgd3Muc2VuZChtZXNzYWdlVG9TZW5kKSBpcyBmYWxzZQor
UEFTUyBidWZmZXJlZEFtb3VudERpZmZlcmVuY2UgaXMgNworUEFTUyB3cy5zZW5kKG1lc3NhZ2VU
b1NlbmQpIGlzIGZhbHNlCitQQVNTIGJ1ZmZlcmVkQW1vdW50RGlmZmVyZW5jZSBpcyAxMzEKK1BB
U1Mgd3Muc2VuZChtZXNzYWdlVG9TZW5kKSBpcyBmYWxzZQorUEFTUyBidWZmZXJlZEFtb3VudERp
ZmZlcmVuY2UgaXMgMTM0CitQQVNTIHdzLnNlbmQobWVzc2FnZVRvU2VuZCkgaXMgZmFsc2UKK1BB
U1MgYnVmZmVyZWRBbW91bnREaWZmZXJlbmNlIGlzIDY1NTQzCitQQVNTIHdzLnNlbmQobWVzc2Fn
ZVRvU2VuZCkgaXMgZmFsc2UKK1BBU1MgYnVmZmVyZWRBbW91bnREaWZmZXJlbmNlIGlzIDY1NTUw
CiBUZXN0aW5nIHNlbmQoQmxvYikuLi4KIFBBU1Mgd3Muc2VuZChtZXNzYWdlVG9TZW5kKSBpcyBm
YWxzZQogUEFTUyBidWZmZXJlZEFtb3VudERpZmZlcmVuY2UgaXMgNgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1h
ZnRlci1jbG9zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS5odG1sCmluZGV4IGM2YjI2MDQyZTU5ZDhm
MDQyYThiNjMxNmU1NzU4OTEyODg2MTQ4NjQuLjIzMzNkNzMyODk4MjE4NmI1MDMzNGEzNThmZTk3
NmYyNjA3ODY1Y2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVy
LWNsb3NlLmh0bWwKQEAgLTUzLDYgKzUzLDE0IEBAIHdzLm9uY2xvc2UgPSBmdW5jdGlvbigpCiAg
ICAgdGVzdEJ1ZmZlcmVkQW1vdW50KGNyZWF0ZVN0cmluZ1dpdGhMZW5ndGgoMHhGRkZGKSwgMHhG
RkZGICsgYmFzZU92ZXJoZWFkICsgMik7CiAgICAgdGVzdEJ1ZmZlcmVkQW1vdW50KGNyZWF0ZVN0
cmluZ1dpdGhMZW5ndGgoMHgxMDAwMCksIDB4MTAwMDAgKyBiYXNlT3ZlcmhlYWQgKyA4KTsgLy8g
V2l0aCA2NC1iaXQgZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGggZmllbGQuCiAKKyAgICBkZWJ1Zygi
VGVzdGluZyBzZW5kKEFycmF5QnVmZmVyKS4uLiIpOworICAgIHRlc3RCdWZmZXJlZEFtb3VudChu
ZXcgQXJyYXlCdWZmZXIoMCksIGJhc2VPdmVyaGVhZCk7CisgICAgdGVzdEJ1ZmZlcmVkQW1vdW50
KG5ldyBBcnJheUJ1ZmZlcigxKSwgMSArIGJhc2VPdmVyaGVhZCk7CisgICAgdGVzdEJ1ZmZlcmVk
QW1vdW50KG5ldyBBcnJheUJ1ZmZlcigxMjUpLCAxMjUgKyBiYXNlT3ZlcmhlYWQpOworICAgIHRl
c3RCdWZmZXJlZEFtb3VudChuZXcgQXJyYXlCdWZmZXIoMTI2KSwgMTI2ICsgYmFzZU92ZXJoZWFk
ICsgMik7CisgICAgdGVzdEJ1ZmZlcmVkQW1vdW50KG5ldyBBcnJheUJ1ZmZlcigweEZGRkYpLCAw
eEZGRkYgKyBiYXNlT3ZlcmhlYWQgKyAyKTsKKyAgICB0ZXN0QnVmZmVyZWRBbW91bnQobmV3IEFy
cmF5QnVmZmVyKDB4MTAwMDApLCAweDEwMDAwICsgYmFzZU92ZXJoZWFkICsgOCk7CisKICAgICBk
ZWJ1ZygiVGVzdGluZyBzZW5kKEJsb2IpLi4uIik7CiAgICAgdGVzdEJ1ZmZlcmVkQW1vdW50KGNy
ZWF0ZUJsb2JXaXRoTGVuZ3RoKDApLCBiYXNlT3ZlcmhlYWQpOwogICAgIHRlc3RCdWZmZXJlZEFt
b3VudChjcmVhdGVCbG9iV2l0aExlbmd0aCgxKSwgMSArIGJhc2VPdmVyaGVhZCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NoZWNrLWJp
bmFyeS1tZXNzYWdlc193c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2NoZWNrLWJpbmFyeS1tZXNzYWdlc193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI0ZTNm
NGQwNzk0NWM5MmNhYWJkYzAzN2VjNTAwODI0YTQyYTFhMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2hlY2stYmluYXJ5LW1l
c3NhZ2VzX3dzaC5weQpAQCAtMCwwICsxLDIxIEBACitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBv
cnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAorCisKK2RlZiB3
ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzICMgQWx3YXlz
IGFjY2VwdC4KKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAg
IGV4cGVjdGVkX21lc3NhZ2VzID0gWydIZWxsbywgd29ybGQhJywgJycsIGFsbF9kaXN0aW5jdF9i
eXRlcygpXQorCisgICAgZm9yIHRlc3RfbnVtYmVyLCBleHBlY3RlZF9tZXNzYWdlIGluIGVudW1l
cmF0ZShleHBlY3RlZF9tZXNzYWdlcyk6CisgICAgICAgIG1lc3NhZ2UgPSBtc2d1dGlsLnJlY2Vp
dmVfbWVzc2FnZShyZXF1ZXN0KQorICAgICAgICBpZiB0eXBlKG1lc3NhZ2UpID09IHN0ciBhbmQg
bWVzc2FnZSA9PSBleHBlY3RlZF9tZXNzYWdlOgorICAgICAgICAgICAgbXNndXRpbC5zZW5kX21l
c3NhZ2UocmVxdWVzdCwgJ1BBU1M6IE1lc3NhZ2UgIyVkLicgJSB0ZXN0X251bWJlcikKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdGQUlM
OiBNZXNzYWdlICMlZDogUmVjZWl2ZWQgdW5leHBlY3RlZCBtZXNzYWdlOiAlcicgJSAodGVzdF9u
dW1iZXIsIG1lc3NhZ2UpKQorCisKK2RlZiBhbGxfZGlzdGluY3RfYnl0ZXMoKToKKyAgICByZXR1
cm4gJycuam9pbihbY2hyKGkpIGZvciBpIGluIHhyYW5nZSgyNTYpXSkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1hcnJheWJ1ZmZl
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3NlbmQtYXJyYXlidWZmZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1MGM1MmUzYjE3
NTM1MDk1MTRmOTE0OTc2NmIzN2JkOWJkNjE3MmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYXJyYXlidWZmZXItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1dlYlNvY2tldDogU2VuZCBBcnJheUJ1ZmZlcnMu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBQQVNTOiBNZXNzYWdlICMwLgor
UEFTUyBQQVNTOiBNZXNzYWdlICMxLgorUEFTUyBQQVNTOiBNZXNzYWdlICMyLgorUEFTUyBjbG9z
ZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYXJyYXlidWZmZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1hcnJheWJ1ZmZlci5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIwZGU1NTM3MGZmYzk4MTk1NDQxYWJiYjA4YWQ0ZWM0NDkyYzliMGUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Nl
bmQtYXJyYXlidWZmZXIuaHRtbApAQCAtMCwwICsxLDc1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL2pz
LXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oIldl
YlNvY2tldDogU2VuZCBBcnJheUJ1ZmZlcnMuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9j
b2xFbmFibGVkIiwgMCk7CisKK2Z1bmN0aW9uIHN0YXJ0c1dpdGgodGFyZ2V0LCBwcmVmaXgpCit7
CisgICAgcmV0dXJuIHRhcmdldC5pbmRleE9mKHByZWZpeCkgPT09IDA7Cit9CisKK2Z1bmN0aW9u
IGNyZWF0ZUFycmF5QnVmZmVyQ29udGFpbmluZ0hlbGxvV29ybGQoKQoreworICAgIHZhciBoZWxs
byA9ICJIZWxsbywgd29ybGQhIjsKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShoZWxs
by5sZW5ndGgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGVsbG8ubGVuZ3RoOyArK2kpCisg
ICAgICAgIGFycmF5W2ldID0gaGVsbG8uY2hhckNvZGVBdChpKTsKKyAgICByZXR1cm4gYXJyYXku
YnVmZmVyOworfQorCitmdW5jdGlvbiBjcmVhdGVFbXB0eUFycmF5QnVmZmVyKCkKK3sKKyAgICBy
ZXR1cm4gbmV3IEFycmF5QnVmZmVyKDApOworfQorCitmdW5jdGlvbiBjcmVhdGVBcnJheUJ1ZmZl
ckNvbnRhaW5pbmdBbGxEaXN0aW5jdEJ5dGVzKCkKK3sKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWlu
dDhBcnJheSgyNTYpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpCisgICAgICAg
IGFycmF5W2ldID0gaTsKKyAgICByZXR1cm4gYXJyYXkuYnVmZmVyOworfQorCit2YXIgdXJsID0g
IndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2hlY2stYmluYXJ5LW1l
c3NhZ2VzIjsKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKK3ZhciBjbG9zZUV2ZW50Owor
Cit3cy5vbm9wZW4gPSBmdW5jdGlvbigpCit7CisgICAgd3Muc2VuZChjcmVhdGVBcnJheUJ1ZmZl
ckNvbnRhaW5pbmdIZWxsb1dvcmxkKCkpOworICAgIHdzLnNlbmQoY3JlYXRlRW1wdHlBcnJheUJ1
ZmZlcigpKTsKKyAgICB3cy5zZW5kKGNyZWF0ZUFycmF5QnVmZmVyQ29udGFpbmluZ0FsbERpc3Rp
bmN0Qnl0ZXMoKSk7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAg
ICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgaWYgKHN0YXJ0c1dpdGgobWVzc2FnZSwg
IlBBU1MiKSkKKyAgICAgICAgdGVzdFBhc3NlZChtZXNzYWdlKTsKKyAgICBlbHNlCisgICAgICAg
IHRlc3RGYWlsZWQobWVzc2FnZSk7Cit9OworCit3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQp
Cit7CisgICAgY2xvc2VFdmVudCA9IGV2ZW50OworICAgIHNob3VsZEJlVHJ1ZSgiY2xvc2VFdmVu
dC53YXNDbGVhbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10
ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9zZW5kLWJsb2IuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5Ymkvc2VuZC1ibG9iLmh0bWwKaW5kZXggZWFiOTM0NmQ3NDgzYTY0YTkyYWFiZjc5MWVkYjlj
OWQwMzc1Zjk5Mi4uYjNjOTVmMjI2YzE1MWIxM2E1ZDkwZGUyMjdiZTc1Mjc0NmI5YjEzZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5k
LWJsb2IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3NlbmQtYmxvYi5odG1sCkBAIC00Miw3ICs0Miw3IEBAIGZ1bmN0aW9uIGNyZWF0ZUJsb2JD
b250YWluaW5nQWxsRGlzdGluY3RCeXRlcygpCiAgICAgcmV0dXJuIGJ1aWxkZXIuZ2V0QmxvYigp
OwogfQogCi12YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5
Ymkvc2VuZC1ibG9iIjsKK3ZhciB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQv
dGVzdHMvaHliaS9jaGVjay1iaW5hcnktbWVzc2FnZXMiOwogdmFyIHdzID0gbmV3IFdlYlNvY2tl
dCh1cmwpOwogdmFyIGNsb3NlRXZlbnQ7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iX3dzaC5weSBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iX3dzaC5weQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI0ZTNmNGQwNzk0NWM5MmNhYWJkYzAzN2VjNTAwODI0
YTQyYTFhMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYmxvYl93c2gu
cHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAotCi0KLWRl
ZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBwYXNzICMgQWx3
YXlzIGFjY2VwdC4KLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgot
ICAgIGV4cGVjdGVkX21lc3NhZ2VzID0gWydIZWxsbywgd29ybGQhJywgJycsIGFsbF9kaXN0aW5j
dF9ieXRlcygpXQotCi0gICAgZm9yIHRlc3RfbnVtYmVyLCBleHBlY3RlZF9tZXNzYWdlIGluIGVu
dW1lcmF0ZShleHBlY3RlZF9tZXNzYWdlcyk6Ci0gICAgICAgIG1lc3NhZ2UgPSBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KQotICAgICAgICBpZiB0eXBlKG1lc3NhZ2UpID09IHN0ciBh
bmQgbWVzc2FnZSA9PSBleHBlY3RlZF9tZXNzYWdlOgotICAgICAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJ1BBU1M6IE1lc3NhZ2UgIyVkLicgJSB0ZXN0X251bWJlcikKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdG
QUlMOiBNZXNzYWdlICMlZDogUmVjZWl2ZWQgdW5leHBlY3RlZCBtZXNzYWdlOiAlcicgJSAodGVz
dF9udW1iZXIsIG1lc3NhZ2UpKQotCi0KLWRlZiBhbGxfZGlzdGluY3RfYnl0ZXMoKToKLSAgICBy
ZXR1cm4gJycuam9pbihbY2hyKGkpIGZvciBpIGluIHhyYW5nZSgyNTYpXSkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNv
dXJjZXMvY2hlY2stYmluYXJ5LW1lc3NhZ2VzX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvY2hlY2stYmluYXJ5LW1l
c3NhZ2VzX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjRlM2Y0ZDA3OTQ1YzkyY2FhYmRjMDM3ZWM1MDA4
MjRhNDJhMWEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jaGVjay1iaW5hcnktbWVzc2FnZXNf
d3NoLnB5CkBAIC0wLDAgKzEsMjEgQEAKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21t
b24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCisKKworZGVmIHdlYl9zb2Nr
ZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MgIyBBbHdheXMgYWNjZXB0
LgorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgZXhwZWN0
ZWRfbWVzc2FnZXMgPSBbJ0hlbGxvLCB3b3JsZCEnLCAnJywgYWxsX2Rpc3RpbmN0X2J5dGVzKCld
CisKKyAgICBmb3IgdGVzdF9udW1iZXIsIGV4cGVjdGVkX21lc3NhZ2UgaW4gZW51bWVyYXRlKGV4
cGVjdGVkX21lc3NhZ2VzKToKKyAgICAgICAgbWVzc2FnZSA9IG1zZ3V0aWwucmVjZWl2ZV9tZXNz
YWdlKHJlcXVlc3QpCisgICAgICAgIGlmIHR5cGUobWVzc2FnZSkgPT0gc3RyIGFuZCBtZXNzYWdl
ID09IGV4cGVjdGVkX21lc3NhZ2U6CisgICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShy
ZXF1ZXN0LCAnUEFTUzogTWVzc2FnZSAjJWQuJyAlIHRlc3RfbnVtYmVyKQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0ZBSUw6IE1lc3Nh
Z2UgIyVkOiBSZWNlaXZlZCB1bmV4cGVjdGVkIG1lc3NhZ2U6ICVyJyAlICh0ZXN0X251bWJlciwg
bWVzc2FnZSkpCisKKworZGVmIGFsbF9kaXN0aW5jdF9ieXRlcygpOgorICAgIHJldHVybiAnJy5q
b2luKFtjaHIoaSkgZm9yIGkgaW4geHJhbmdlKDI1NildKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9zZW5k
LWFycmF5YnVmZmVyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS93b3JrZXJzL3Jlc291cmNlcy9zZW5kLWFycmF5YnVmZmVyLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhh
YWI5ZTg5YmI0MDMwMjdmMDE3NjA5Zjc3YjZjMTg1OTM3NTNjYTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVz
b3VyY2VzL3NlbmQtYXJyYXlidWZmZXIuanMKQEAgLTAsMCArMSw0NSBAQAorZnVuY3Rpb24gY3Jl
YXRlQXJyYXlCdWZmZXJDb250YWluaW5nSGVsbG9Xb3JsZCgpCit7CisgICAgdmFyIGhlbGxvID0g
IkhlbGxvLCB3b3JsZCEiOworICAgIHZhciBhcnJheSA9IG5ldyBVaW50OEFycmF5KGhlbGxvLmxl
bmd0aCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoZWxsby5sZW5ndGg7ICsraSkKKyAgICAg
ICAgYXJyYXlbaV0gPSBoZWxsby5jaGFyQ29kZUF0KGkpOworICAgIHJldHVybiBhcnJheS5idWZm
ZXI7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUVtcHR5QXJyYXlCdWZmZXIoKQoreworICAgIHJldHVy
biBuZXcgQXJyYXlCdWZmZXIoMCk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFycmF5QnVmZmVyQ29u
dGFpbmluZ0FsbERpc3RpbmN0Qnl0ZXMoKQoreworICAgIHZhciBhcnJheSA9IG5ldyBVaW50OEFy
cmF5KDI1Nik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7ICsraSkKKyAgICAgICAgYXJy
YXlbaV0gPSBpOworICAgIHJldHVybiBhcnJheS5idWZmZXI7Cit9CisKK3ZhciB1cmwgPSAid3M6
Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9j
aGVjay1iaW5hcnktbWVzc2FnZXMiOwordmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOworCit3
cy5vbm9wZW4gPSBmdW5jdGlvbigpCit7CisgICAgd3Muc2VuZChjcmVhdGVBcnJheUJ1ZmZlckNv
bnRhaW5pbmdIZWxsb1dvcmxkKCkpOworICAgIHdzLnNlbmQoY3JlYXRlRW1wdHlBcnJheUJ1ZmZl
cigpKTsKKyAgICB3cy5zZW5kKGNyZWF0ZUFycmF5QnVmZmVyQ29udGFpbmluZ0FsbERpc3RpbmN0
Qnl0ZXMoKSk7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBw
b3N0TWVzc2FnZShldmVudC5kYXRhKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihjbG9z
ZUV2ZW50KQoreworICAgIGlmIChjbG9zZUV2ZW50Lndhc0NsZWFuID09PSB0cnVlKQorICAgICAg
ICBwb3N0TWVzc2FnZSgiUEFTUzogY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlLiIpOworICAg
IGVsc2UKKyAgICAgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IGNsb3NlRXZlbnQud2FzQ2xlYW4gc2hv
dWxkIGJlIHRydWUsIGJ1dCB3YXM6ICIgKyBjbG9zZUV2ZW50Lndhc0NsZWFuKTsKKyAgICBwb3N0
TWVzc2FnZSgiRE9ORSIpOworfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvc2VuZC1ibG9iLmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNl
cy9zZW5kLWJsb2IuanMKaW5kZXggY2VhMDUwM2EwOTYwMjM1MmYzOTMxOTAyNjM3OTk4MjUxMDMx
MTNiZi4uYzAxMjBlYjk4YWVhMWNlZThhMzk5OWJlZTQxNjNhNTQzMTI0MTA2NiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jl
c291cmNlcy9zZW5kLWJsb2IuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9zZW5kLWJsb2IuanMKQEAgLTEsOCArMSwz
IEBACi1mdW5jdGlvbiBzdGFydHNXaXRoKHRhcmdldCwgcHJlZml4KQotewotICAgIHJldHVybiB0
YXJnZXQuaW5kZXhPZihwcmVmaXgpID09PSAwOwotfQotCiBmdW5jdGlvbiBjcmVhdGVCbG9iQ29u
dGFpbmluZ0hlbGxvV29ybGQoKQogewogICAgIHZhciBidWlsZGVyID0gbmV3IFdlYktpdEJsb2JC
dWlsZGVyKCk7CkBAIC0yNiw3ICsyMSw3IEBAIGZ1bmN0aW9uIGNyZWF0ZUJsb2JDb250YWluaW5n
QWxsRGlzdGluY3RCeXRlcygpCiAgICAgcmV0dXJuIGJ1aWxkZXIuZ2V0QmxvYigpOwogfQogCi12
YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vy
cy9yZXNvdXJjZXMvc2VuZC1ibG9iIjsKK3ZhciB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93
ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jaGVjay1iaW5hcnktbWVzc2Fn
ZXMiOwogdmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOwogCiB3cy5vbm9wZW4gPSBmdW5jdGlv
bigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3dvcmtlcnMvcmVzb3VyY2VzL3NlbmQtYmxvYl93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL3NlbmQtYmxvYl93
c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyNGUzZjRkMDc5NDVjOTJjYWFi
ZGMwMzdlYzUwMDgyNGE0MmExYTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93
b3JrZXJzL3Jlc291cmNlcy9zZW5kLWJsb2Jfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjEg
KzAsMCBAQAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5k
c2hha2UocmVxdWVzdCk6Ci0gICAgcGFzcyAjIEFsd2F5cyBhY2NlcHQuCi0KLQotZGVmIHdlYl9z
b2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICBleHBlY3RlZF9tZXNzYWdlcyA9IFsn
SGVsbG8sIHdvcmxkIScsICcnLCBhbGxfZGlzdGluY3RfYnl0ZXMoKV0KLQotICAgIGZvciB0ZXN0
X251bWJlciwgZXhwZWN0ZWRfbWVzc2FnZSBpbiBlbnVtZXJhdGUoZXhwZWN0ZWRfbWVzc2FnZXMp
OgotICAgICAgICBtZXNzYWdlID0gbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkKLSAg
ICAgICAgaWYgdHlwZShtZXNzYWdlKSA9PSBzdHIgYW5kIG1lc3NhZ2UgPT0gZXhwZWN0ZWRfbWVz
c2FnZToKLSAgICAgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdQQVNTOiBN
ZXNzYWdlICMlZC4nICUgdGVzdF9udW1iZXIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBt
c2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnRkFJTDogTWVzc2FnZSAjJWQ6IFJlY2VpdmVk
IHVuZXhwZWN0ZWQgbWVzc2FnZTogJXInICUgKHRlc3RfbnVtYmVyLCBtZXNzYWdlKSkKLQotCi1k
ZWYgYWxsX2Rpc3RpbmN0X2J5dGVzKCk6Ci0gICAgcmV0dXJuICcnLmpvaW4oW2NocihpKSBmb3Ig
aSBpbiB4cmFuZ2UoMjU2KV0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvc2VuZC1hcnJheWJ1ZmZlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvc2Vu
ZC1hcnJheWJ1ZmZlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWNiNDk5YzMyZDhjNjBhOTEz
ZDM1M2RiOGM5OWMzOGFjOTg2OTBlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9zZW5kLWFycmF5YnVmZmVyLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitXZWJTb2NrZXQ6IFNlbmQgQXJyYXlCdWZmZXJz
IGluIFdlYiBXb3JrZXJzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgUEFT
UzogTWVzc2FnZSAjMC4KK1BBU1MgUEFTUzogTWVzc2FnZSAjMS4KK1BBU1MgUEFTUzogTWVzc2Fn
ZSAjMi4KK1BBU1MgUEFTUzogY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlLgorRE9ORQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9z
ZW5kLWFycmF5YnVmZmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3dvcmtlcnMvc2VuZC1hcnJheWJ1ZmZlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhMzY1
MTEwYzJkN2MyZjFkZDI3OTdmZDIzZTEwYzU2ODIzZTZjNTMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvc2VuZC1h
cnJheWJ1ZmZlci5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vLi4vanMt
dGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbigi
V2ViU29ja2V0OiBTZW5kIEFycmF5QnVmZmVycyBpbiBXZWIgV29ya2Vycy4iKTsKKword2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGll
NzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKworZnVuY3Rpb24gc3RhcnRzV2l0aChz
dHIsIHByZWZpeCkKK3sKKyAgICByZXR1cm4gc3RyLmluZGV4T2YocHJlZml4KSA9PSAwOworfQor
Cit2YXIgd29ya2VyID0gbmV3IFdvcmtlcigicmVzb3VyY2VzL3NlbmQtYXJyYXlidWZmZXIuanMi
KTsKK3dvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpCit7CisgICAgdmFyIG1lc3Nh
Z2UgPSBldmVudC5kYXRhOworICAgIGlmIChzdGFydHNXaXRoKG1lc3NhZ2UsICJQQVNTIikpCisg
ICAgICAgIHRlc3RQYXNzZWQobWVzc2FnZSk7CisgICAgZWxzZSBpZiAoc3RhcnRzV2l0aChtZXNz
YWdlLCAiRkFJTCIpKQorICAgICAgICB0ZXN0RmFpbGVkKG1lc3NhZ2UpCisgICAgZWxzZQorICAg
ICAgICBkZWJ1ZyhtZXNzYWdlKTsKKyAgICBpZiAobWVzc2FnZSA9PT0gIkRPTkUiKQorICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBlY2QyYTNmYWNiZTdhYmRiOGVlZjYyOTExMmE5ZDRlNWFlYTNmY2M1Li5mNzVkZGM5MDFjZjE5
YTM5ZTkwYTkwM2MzYmYyOGRiOGFkYzFkMjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAK
KzIwMTEtMDktMDIgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgV2ViU29ja2V0OiBTZW5kIEFycmF5QnVmZmVyIGFzIFdlYlNvY2tldCBiaW5hcnkgbWVzc2Fn
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc0NzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czog
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWFycmF5YnVmZmVyLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9zZW5k
LWFycmF5YnVmZmVyLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UuaHRtbCAodXBkYXRlZCkKKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViU29ja2V0OjpzZW5kKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJTb2NrZXRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJTb2NrZXQ6OnNlbmRD
YWxsYmFjayk6CisgICAgICAgICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcjo6c2VuZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI6OnNldFNlbmRSZXN1bHQpOgorICAgICAgICAqIHdlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmg6CisgICAgICAgIFJl
bmFtZSAic2VudCIgdG8gInNlbmRSZXN1bHQiIHRvIGNsYXJpZnkgdGhlIG1lYW5pbmcuIE1lc3Nh
Z2VzIGZyb20gdGhlIHNjcmlwdCBtYXkgbm90IGJlIHNlbnQKKyAgICAgICAgaW1tZWRpYXRlbHks
IHRodXMgdGhlIHJldHVybiB2YWx1ZSBvZiBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKCkgaW5kaWNh
dGVzIHdoZXRoZXIgdGhlIG1lc3NhZ2UKKyAgICAgICAgaGFzIGJlZW4gcXVldWVkIHN1Y2Nlc3Nm
dWxseSwgcmF0aGVyIHRoYW4gd2hldGhlciB0aGUgbWVzc2FnZSBoYXMgYmVlbiBzZW50IG9yIG5v
dC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXQ6OnNlbmQpOgorICAgICAgICBDYXNlIG9mIHNlbmRpbmcgIltvYmplY3QgQXJy
YXlCdWZmZXJdIiBpcyBjb3ZlcmVkIGJ5IGFuIGV4aXN0aW5nIHRlc3QKKyAgICAgICAgaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMve2h5YmksaGl4aWU3Nn0vc2VuZC1vYmplY3QuaHRtbC4KKyAg
ICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvV2Vi
U29ja2V0LmlkbDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZCk6CisgICAgICAgICogd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjp3b3Jr
ZXJDb250ZXh0RGlkU2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFNlbmRBcnJheUJ1ZmZlcik6CisgICAg
ICAgIENvbnN0cnVjdCBhbiBBcnJheUJ1ZmZlciBmcm9tIHRoZSBkYXRhIG9uIFZlY3RvcjxjaGFy
Pi4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpC
cmlkZ2U6OnNlbmQpOgorICAgICAgICBDb3B5IHRoZSBjb250ZW50IGludG8gdGVtcG9yYXJ5IGJ1
ZmZlciBvZiBWZWN0b3I8Y2hhcj4sIGFuZCBzZW5kIGl0IHRvIHRoZSBtYWluIHRocmVhZC4KKyAg
ICAgICAgKiB3ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisK
IDIwMTEtMDktMDIgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAg
IERlLXZpcnR1YWxpemUgcmVjYWxjU3R5bGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCmluZGV4IDRmOTJmNDA3YmU4NTkyOTJlMmUxOGRi
MmY5NWVjOWY0OGVlMjVlOGQuLjQ5YTgyOGNjODg1NWFkNWQzMzllNGEzN2MwODY1NTA5ZjE0OTMz
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3Rv
bS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJKU1dlYlNvY2tldC5oIgogCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNs
dWRlICJKU0Jsb2IuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJL
VVJMLmgiCkBAIC05Nyw3ICs5OCw5IEBAIEpTVmFsdWUgSlNXZWJTb2NrZXQ6OnNlbmQoRXhlY1N0
YXRlKiBleGVjKQogICAgIEpTVmFsdWUgbWVzc2FnZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGJvb2wgcmVzdWx0OwotICAgIGlmIChtZXNzYWdl
LmluaGVyaXRzKCZKU0Jsb2I6OnNfaW5mbykpCisgICAgaWYgKG1lc3NhZ2UuaW5oZXJpdHMoJkpT
QXJyYXlCdWZmZXI6OnNfaW5mbykpCisgICAgICAgIHJlc3VsdCA9IGltcGwoKS0+c2VuZCh0b0Fy
cmF5QnVmZmVyKG1lc3NhZ2UpLCBlYyk7CisgICAgZWxzZSBpZiAobWVzc2FnZS5pbmhlcml0cygm
SlNCbG9iOjpzX2luZm8pKQogICAgICAgICByZXN1bHQgPSBpbXBsKCktPnNlbmQodG9CbG9iKG1l
c3NhZ2UpLCBlYyk7CiAgICAgZWxzZSB7CiAgICAgICAgIFN0cmluZyBzdHJpbmdNZXNzYWdlID0g
dXN0cmluZ1RvU3RyaW5nKG1lc3NhZ2UudG9TdHJpbmcoZXhlYykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKaW5k
ZXggZDIzNzA0NzczODk4MjYxY2M1MDA0NjIzYmI2NTY4YmZlMjYxNGFiYS4uMmVlMTE2ZTVhNzRk
N2UzZTk4YmVkMjQ3NDVlOWMzYWMwZTk0NGY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCiAjaW5jbHVk
ZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCbG9iLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5o
IgpAQCAtMTIzLDcgKzEyNCwxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6
OnNlbmRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBtZXNzYWdlID0gYXJnc1swXTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICBib29sIHJlc3VsdDsKLSAgICBpZiAoVjhCbG9iOjpIYXNJbnN0YW5jZShtZXNzYWdlKSkg
eworICAgIGlmIChWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZShtZXNzYWdlKSkgeworICAgICAg
ICBBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIgPSBWOEFycmF5QnVmZmVyOjp0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG1lc3NhZ2UpKTsKKyAgICAgICAgQVNTRVJUKGFycmF5
QnVmZmVyKTsKKyAgICAgICAgcmVzdWx0ID0gd2ViU29ja2V0LT5zZW5kKGFycmF5QnVmZmVyLCBl
Yyk7CisgICAgfSBlbHNlIGlmIChWOEJsb2I6Okhhc0luc3RhbmNlKG1lc3NhZ2UpKSB7CiAgICAg
ICAgIEJsb2IqIGJsb2IgPSBWOEJsb2I6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QobWVzc2FnZSkpOwogICAgICAgICBBU1NFUlQoYmxvYik7CiAgICAgICAgIHJlc3VsdCA9
IHdlYlNvY2tldC0+c2VuZChibG9iLCBlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggY2EwYjM3MmFkOWNm
MmMwMTA3Y2M4NjQ4MDBhMzdlNmJkNDI3ZmYzMS4uN2ExZjI5NzFjNTExMTQ4OTRiMTA1YTdlYzRm
YmFjMzM2N2Q3NTI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtMzksNiArMzksNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFycmF5QnVmZmVyOwogY2xhc3MgQmxvYjsKIGNsYXNzIEtV
Ukw7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpAQCAtNTQsNiArNTUsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpID0gMDsgLy8g
V2lsbCBiZSBhdmFpbGFibGUgYWZ0ZXIgZGlkQ29ubmVjdCgpIGNhbGxiYWNrIGlzIGludm9rZWQu
CiAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CisgICAg
dmlydHVhbCBib29sIHNlbmQoY29uc3QgQXJyYXlCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCBi
b29sIHNlbmQoY29uc3QgQmxvYiYpID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVm
ZmVyZWRBbW91bnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2Rl
LCBjb25zdCBTdHJpbmcmIHJlYXNvbikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXIuY3BwCmluZGV4IGQxYjk3MjkyNzEzYjZkZDVmM2U5ODljMmMwNDg4MzgwZWY0YmM4
MzYuLmZmY2NmNDcyMTQ0NDgyZDZkZmQyZjE0NTU0NTRhMzBhMmUzYmU0MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXIKICAgICAsIG1fc3luY01ldGhvZERvbmUoZmFsc2UpCiAgICAgLCBt
X3VzZUhpeGllNzZQcm90b2NvbCh0cnVlKQogICAgICwgbV9zdWJwcm90b2NvbCgiIikKLSAgICAs
IG1fc2VudChmYWxzZSkKKyAgICAsIG1fc2VuZFJlc3VsdChmYWxzZSkKICAgICAsIG1fYnVmZmVy
ZWRBbW91bnQoMCkKICAgICAsIG1fc3VzcGVuZGVkKGZhbHNlKQogewpAQCAtOTEsMTQgKzkxLDE0
IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpzZXRTdWJw
cm90b2NvbChjb25zdCBTdHJpbmcmIHN1YnByCiAgICAgbV9zdWJwcm90b2NvbCA9IHN1YnByb3Rv
Y29sOwogfQogCi1ib29sIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6
c2VudCgpIGNvbnN0Citib29sIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cjo6c2VuZFJlc3VsdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2VudDsKKyAgICByZXR1cm4g
bV9zZW5kUmVzdWx0OwogfQogCi12b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6c2V0U2VudChib29sIHNlbnQpCit2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6c2V0U2VuZFJlc3VsdChib29sIHNlbmRSZXN1bHQpCiB7Ci0gICAg
bV9zZW50ID0gc2VudDsKKyAgICBtX3NlbmRSZXN1bHQgPSBzZW5kUmVzdWx0OwogICAgIG1fc3lu
Y01ldGhvZERvbmUgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXIuaAppbmRleCA4OTE3ZjgzZjdjODBkZjBmZmIwZTU3YTYxMzdlNDY2YTYxZjcyYWI3Li44OTYw
NWRiYjc5YTY2NWIyOGYzOGJhMzdlOWRmZjYzZTc2MjA0NzRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyLmgKQEAgLTYzLDggKzYzLDggQEAgcHVibGljOgogICAgIFN0cmlu
ZyBzdWJwcm90b2NvbCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U3VicHJvdG9jb2woY29uc3QgU3Ry
aW5nJik7CiAKLSAgICBib29sIHNlbnQoKSBjb25zdDsKLSAgICB2b2lkIHNldFNlbnQoYm9vbCk7
CisgICAgYm9vbCBzZW5kUmVzdWx0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRTZW5kUmVzdWx0KGJv
b2wpOwogCiAgICAgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0OwogICAgIHZv
aWQgc2V0QnVmZmVyZWRBbW91bnQodW5zaWduZWQgbG9uZyk7CkBAIC05NCw3ICs5NCw3IEBAIHBy
b3RlY3RlZDoKICAgICBib29sIG1fc3luY01ldGhvZERvbmU7CiAgICAgYm9vbCBtX3VzZUhpeGll
NzZQcm90b2NvbDsKICAgICBTdHJpbmcgbV9zdWJwcm90b2NvbDsKLSAgICBib29sIG1fc2VudDsK
KyAgICBib29sIG1fc2VuZFJlc3VsdDsKICAgICB1bnNpZ25lZCBsb25nIG1fYnVmZmVyZWRBbW91
bnQ7CiAgICAgYm9vbCBtX3N1c3BlbmRlZDsKICAgICBWZWN0b3I8T3duUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+ID4gbV9wZW5kaW5nVGFza3M7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggZjNiMTg0NWI3ZjBhYTBhYzg5NzNhNjZhZTA2MGMyMDFl
NDUxMWUyOS4uMTBlZGQ1MTkyMzlmODI4MjNhMzIyYTJhYWExNTA1NmMxNjE5MWQ4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMjY1LDYgKzI2NSwyNCBAQCBi
b29sIFdlYlNvY2tldDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQobWVzc2FnZSk7CiB9CiAKK2Jvb2wgV2Vi
U29ja2V0OjpzZW5kKEFycmF5QnVmZmVyKiBiaW5hcnlEYXRhLCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBzZW5kIGFycmF5YnVmZmVyICVwIiwg
dGhpcywgYmluYXJ5RGF0YSk7CisgICAgQVNTRVJUKGJpbmFyeURhdGEpOworICAgIGlmIChtX3Vz
ZUhpeGllNzZQcm90b2NvbCkKKyAgICAgICAgcmV0dXJuIHNlbmQoIltvYmplY3QgQXJyYXlCdWZm
ZXJdIiwgZWMpOworICAgIGlmIChtX3N0YXRlID09IENPTk5FQ1RJTkcpIHsKKyAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBp
ZiAobV9zdGF0ZSA9PSBDTE9TSU5HIHx8IG1fc3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIG1f
YnVmZmVyZWRBbW91bnRBZnRlckNsb3NlICs9IGJpbmFyeURhdGEtPmJ5dGVMZW5ndGgoKSArIGdl
dEZyYW1pbmdPdmVyaGVhZChiaW5hcnlEYXRhLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIEFTU0VSVChtX2NoYW5uZWwpOworICAgIHJldHVybiBtX2No
YW5uZWwtPnNlbmQoKmJpbmFyeURhdGEpOworfQorCiBib29sIFdlYlNvY2tldDo6c2VuZChCbG9i
KiBiaW5hcnlEYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldCAlcCBzZW5kIGJsb2IgJXMiLCB0aGlzLCBiaW5hcnlEYXRhLT51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4
IGNiYjhkNjAzZWY4Nzg3YmY5ZDY1NmM2NzIzMDU3NjJjN2ZjYWQ5ZGIuLmM2MjFlM2QxNzU5MzI0
ZjA1MmI2YTEyMjQ1YWYyNTAzNzRmNTk5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaApAQCAtNDYsNiArNDYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IEFycmF5QnVmZmVyOwogY2xhc3MgQmxvYjsKIGNsYXNzIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOwogCkBAIC02OCw2ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbm5lY3QoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm90b2NvbHMsIEV4Y2VwdGlvbkNv
ZGUmKTsKIAogICAgIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBib29sIHNlbmQoQXJyYXlCdWZmZXIqLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
Ym9vbCBzZW5kKEJsb2IqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIGNsb3NlKGludCBj
b2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsIGIvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCmluZGV4IDBkYzIzZTdmN2EyODFiODlkMDQ5YTNlMGQx
MzEyOTE0OGNkZjliODUuLmRmMjBiYTZlYzkzZjk5YmUxYzQ4ZDA1ZGY1YWE0YjYwZDk4MzVlZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKQEAgLTY2LDggKzY2LDkg
QEAgbW9kdWxlIHdlYnNvY2tldHMgewogICAgICAgICAvLyBGSVhNRTogVXNlIG92ZXJsb2FkaW5n
IHByb3ZpZGVkIGJ5IG91ciBJREwgY29kZSBnZW5lcmF0b3IuCiAgICAgICAgIC8vIEFjY29yZGlu
ZyB0byBXZWIgSURMIHNwZWNpZmljYXRpb24sIG92ZXJsb2FkZWQgZnVuY3Rpb24gd2l0aCBET01T
dHJpbmcgYXJndW1lbnQKICAgICAgICAgLy8gc2hvdWxkIGFjY2VwdCBhbnl0aGluZyB0aGF0IGNh
biBiZSBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgKGluY2x1ZGluZyBudW1iZXJzLAotICAgICAgICAv
LyBib29sZWFucywgbnVsbCwgdW5kZWZpbmVkIGFuZCBvYmplY3RzIGV4Y2VwdCBCbG9iKS4gQ3Vy
cmVudCBjb2RlIGdlbmVyYXRvciBkb2VzCi0gICAgICAgIC8vIG5vdCBoYW5kbGUgdGhpcyBydWxl
IGNvcnJlY3RseS4KKyAgICAgICAgLy8gYm9vbGVhbnMsIG51bGwsIHVuZGVmaW5lZCBhbmQgb2Jq
ZWN0cyBleGNlcHQgQXJyYXlCdWZmZXIgYW5kIEJsb2IpLiBDdXJyZW50IGNvZGUKKyAgICAgICAg
Ly8gZ2VuZXJhdG9yIGRvZXMgbm90IGhhbmRsZSB0aGlzIHJ1bGUgY29ycmVjdGx5LgorICAgICAg
ICAvLyBbUmVxdWlyZXNBbGxBcmd1bWVudHNdIGJvb2xlYW4gc2VuZChpbiBBcnJheUJ1ZmZlciBk
YXRhKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgLy8gW1JlcXVpcmVzQWxsQXJndW1l
bnRzXSBib29sZWFuIHNlbmQoaW4gQmxvYiBkYXRhKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAg
ICAgICAgLy8gW1JlcXVpcmVzQWxsQXJndW1lbnRzXSBib29sZWFuIHNlbmQoaW4gRE9NU3RyaW5n
IGRhdGEpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBbQ3VzdG9tXSBib29sZWFuIHNl
bmQoaW4gRE9NU3RyaW5nIGRhdGEpIHJhaXNlcyhET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggYWU1YzFhYzhkYzlk
NTMzOTQzNTg1ZjFkZDU0ODdlNmIyZDJkOGQ1OS4uYzExMzViNTljMTJkODljOWFhN2VjNDQyNGJk
MTY5M2U3ZjE4NDlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuY3BwCkBAIC0xNzAsNiArMTcwLDE0IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6
c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wg
V2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSkKK3sK
KyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCBhcnJheWJ1ZmZlciAl
cCIsIHRoaXMsICZiaW5hcnlEYXRhKTsKKyAgICBBU1NFUlQoIW1fdXNlSGl4aWU3NlByb3RvY29s
KTsKKyAgICBlbnF1ZXVlUmF3RnJhbWUoT3BDb2RlQmluYXJ5LCBzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4oYmluYXJ5RGF0YS5kYXRhKCkpLCBiaW5hcnlEYXRhLmJ5dGVMZW5ndGgoKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBCbG9i
JiBiaW5hcnlEYXRhKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBz
ZW5kIGJsb2IgJXMiLCB0aGlzLCBiaW5hcnlEYXRhLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRl
eCAzZTg5ZTg1Yzk4ZTExMDZhMzNiN2I1M2M0NTk3MTRmOTMzODM0ODdkLi44OTdlZjYwYWUwMjZm
ZGU0MTFjMmJkYjAwNDg4NDdkZWYwNzYyOTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtNDUsNiArNDUsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIEFycmF5QnVmZmVyOwogY2xhc3MgQmxvYjsKIGNsYXNzIEZpbGVSZWFk
ZXJMb2FkZXI7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpAQCAtNjYsNiArNjcsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wpOwogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCk7CiAgICAg
dmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2aXJ0dWFsIGJv
b2wgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYpOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0
IEJsb2ImKTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25z
dDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29u
KTsgLy8gU3RhcnQgY2xvc2luZyBoYW5kc2hha2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3Bw
CmluZGV4IDYwNDY0NWFkNjY0ZjdmZjBhNDIyNTlhMTUwYTQ5Zjg1MjdjYjM5YzMuLjJlOWI0ODA4
OTc2YzRmZmQyMjQwZDQyMGRmOTE4Y2NhODdkMzY1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oIgogCisjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJC
bG9iLmgiCiAjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKQEAgLTg4LDYgKzg5LDEzIEBAIGJvb2wgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIHJldHVybiBtX2JyaWRn
ZS0+c2VuZChtZXNzYWdlKTsKIH0KIAorYm9vbCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSkKK3sKKyAgICBpZiAoIW1f
YnJpZGdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fYnJpZGdlLT5zZW5k
KGJpbmFyeURhdGEpOworfQorCiBib29sIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpzZW5kKGNvbnN0IEJsb2ImIGJpbmFyeURhdGEpCiB7CiAgICAgaWYgKCFtX2JyaWRnZSkKQEAg
LTE2NSwxMCArMTczLDEwIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlBlZXI6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpCiAgICAgbV9tYWluV2Vi
U29ja2V0Q2hhbm5lbC0+Y29ubmVjdCh1cmwsIHByb3RvY29sKTsKIH0KIAotc3RhdGljIHZvaWQg
d29ya2VyQ29udGV4dERpZFNlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNs
aWVudFdyYXBwZXIsIGJvb2wgc2VudCkKK3N0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRTZW5k
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBib29sIHNl
bmRSZXN1bHQpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtl
ckNvbnRleHQoKSk7Ci0gICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0U2VudChzZW50KTsKKyAg
ICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRTZW5kUmVzdWx0KHNlbmRSZXN1bHQpOwogfQogCiB2
b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpzZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKQEAgLTE3Niw4ICsxODQsMTcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1fbWFpbldlYlNvY2tldENoYW5uZWwg
fHwgIW1fd29ya2VyQ2xpZW50V3JhcHBlcikKICAgICAgICAgcmV0dXJuOwotICAgIGJvb2wgc2Vu
dCA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnNlbmQobWVzc2FnZSk7Ci0gICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3
b3JrZXJDb250ZXh0RGlkU2VuZCwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBzZW50KSwgbV90YXNr
TW9kZSk7CisgICAgYm9vbCBzZW5kUmVzdWx0ID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c2Vu
ZChtZXNzYWdlKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29u
dGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRTZW5kLCBtX3dvcmtlckNs
aWVudFdyYXBwZXIsIHNlbmRSZXN1bHQpLCBtX3Rhc2tNb2RlKTsKK30KKwordm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYg
YmluYXJ5RGF0YSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmICghbV9t
YWluV2ViU29ja2V0Q2hhbm5lbCB8fCAhbV93b3JrZXJDbGllbnRXcmFwcGVyKQorICAgICAgICBy
ZXR1cm47CisgICAgYm9vbCBzZW5kUmVzdWx0ID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c2Vu
ZChiaW5hcnlEYXRhKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
Q29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRTZW5kLCBtX3dvcmtl
ckNsaWVudFdyYXBwZXIsIHNlbmRSZXN1bHQpLCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChjb25zdCBCbG9iJiBiaW5h
cnlEYXRhKQpAQCAtMTg1LDggKzIwMiw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlBlZXI6OnNlbmQoY29uc3QgQmxvYiYgYmluYXJ5RGF0YSkKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9tYWluV2ViU29ja2V0Q2hhbm5lbCB8fCAhbV93
b3JrZXJDbGllbnRXcmFwcGVyKQogICAgICAgICByZXR1cm47Ci0gICAgYm9vbCBzZW50ID0gbV9t
YWluV2ViU29ja2V0Q2hhbm5lbC0+c2VuZChiaW5hcnlEYXRhKTsKLSAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtl
ckNvbnRleHREaWRTZW5kLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHNlbnQpLCBtX3Rhc2tNb2Rl
KTsKKyAgICBib29sIHNlbmRSZXN1bHQgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5zZW5kKGJp
bmFyeURhdGEpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250
ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERpZFNlbmQsIG1fd29ya2VyQ2xp
ZW50V3JhcHBlciwgc2VuZFJlc3VsdCksIG1fdGFza01vZGUpOwogfQogCiBzdGF0aWMgdm9pZCB3
b3JrZXJDb250ZXh0RGlkR2V0QnVmZmVyZWRBbW91bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQpCkBA
IC0zNzUsNiArMzkyLDE2IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
Om1haW5UaHJlYWRTZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiAgICAgcGVlci0+c2Vu
ZChtZXNzYWdlKTsKIH0KIAordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
bWFpblRocmVhZFNlbmRBcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQZWVyKiBwZWVyLCBQYXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+IGRhdGEpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQt
PmlzRG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKHBlZXIpOworCisgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgIHBlZXItPnNlbmQoKmFycmF5QnVmZmVyKTsKK30KKwogdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFNlbmRCbG9iKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIsIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwpAQCAtMzk1LDcgKzQyMiwyNCBAQCBib29sIFdvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIFJlZlB0
cjxCcmlkZ2U+IHByb3RlY3QodGhpcyk7CiAgICAgd2FpdEZvck1ldGhvZENvbXBsZXRpb24oKTsK
ICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIqIGNsaWVudFdyYXBw
ZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCk7Ci0gICAgcmV0dXJuIGNsaWVudFdyYXBw
ZXIgJiYgY2xpZW50V3JhcHBlci0+c2VudCgpOworICAgIHJldHVybiBjbGllbnRXcmFwcGVyICYm
IGNsaWVudFdyYXBwZXItPnNlbmRSZXN1bHQoKTsKK30KKworYm9vbCBXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiBiaW5hcnlE
YXRhKQoreworICAgIGlmICghbV93b3JrZXJDbGllbnRXcmFwcGVyKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgQVNTRVJUKG1fcGVlcik7CisgICAgT3duUHRyPFZlY3RvcjxjaGFyPiA+IGRh
dGEgPSBhZG9wdFB0cihuZXcgVmVjdG9yPGNoYXI+KTsKKyAgICBkYXRhLT5yZXNpemUoYmluYXJ5
RGF0YS5ieXRlTGVuZ3RoKCkpOworICAgIGlmIChiaW5hcnlEYXRhLmJ5dGVMZW5ndGgoKSkKKyAg
ICAgICAgbWVtY3B5KGRhdGEtPmRhdGEoKSwgYmluYXJ5RGF0YS5kYXRhKCksIGJpbmFyeURhdGEu
Ynl0ZUxlbmd0aCgpKTsKKyAgICBzZXRNZXRob2ROb3RDb21wbGV0ZWQoKTsKKyAgICBtX2xvYWRl
clByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFNlbmRBcnJheUJ1ZmZlciwgQWxsb3dDcm9z
c1RocmVhZEFjY2VzcyhtX3BlZXIpLCBkYXRhLnJlbGVhc2UoKSkpOworICAgIFJlZlB0cjxCcmlk
Z2U+IHByb3RlY3QodGhpcyk7CisgICAgd2FpdEZvck1ldGhvZENvbXBsZXRpb24oKTsKKyAgICBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIqIGNsaWVudFdyYXBwZXIgPSBt
X3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCk7CisgICAgcmV0dXJuIGNsaWVudFdyYXBwZXIgJiYg
Y2xpZW50V3JhcHBlci0+c2VuZFJlc3VsdCgpOwogfQogCiBib29sIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQoY29uc3QgQmxvYiYgYmluYXJ5RGF0YSkKQEAg
LTQwOCw3ICs0NTIsNyBAQCBib29sIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpC
cmlkZ2U6OnNlbmQoY29uc3QgQmxvYiYgYmluYXJ5RGF0YSkKICAgICBSZWZQdHI8QnJpZGdlPiBw
cm90ZWN0KHRoaXMpOwogICAgIHdhaXRGb3JNZXRob2RDb21wbGV0aW9uKCk7CiAgICAgVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKiBjbGllbnRXcmFwcGVyID0gbV93b3Jr
ZXJDbGllbnRXcmFwcGVyLmdldCgpOwotICAgIHJldHVybiBjbGllbnRXcmFwcGVyICYmIGNsaWVu
dFdyYXBwZXItPnNlbnQoKTsKKyAgICByZXR1cm4gY2xpZW50V3JhcHBlciAmJiBjbGllbnRXcmFw
cGVyLT5zZW5kUmVzdWx0KCk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6Om1haW5UaHJlYWRCdWZmZXJlZEFtb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQZWVyKiBwZWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDdlMmVjMWJj
ZGVhNjE4YjA1Mjc5YzNlODg4NDk0ZTU2NGY3ZDM4NzQuLjRkOWFhODk2MTJhMTM5NDUwYzE3ZWQy
NGRlMDIzMzc1ZDFjYjM2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY0LDYgKzY0
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmIHByb3RvY29sKTsKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpOwog
ICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdmlydHVh
bCBib29sIHNlbmQoY29uc3QgQXJyYXlCdWZmZXImKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZChj
b25zdCBCbG9iJik7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkg
Y29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJl
YXNvbik7CkBAIC05NCw2ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgdXNlSGl4aWU3
NlByb3RvY29sKCk7CiAgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCk7CiAgICAgICAgIHZvaWQgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
OworICAgICAgICB2b2lkIHNlbmQoY29uc3QgQXJyYXlCdWZmZXImKTsKICAgICAgICAgdm9pZCBz
ZW5kKGNvbnN0IEJsb2ImKTsKICAgICAgICAgdm9pZCBidWZmZXJlZEFtb3VudCgpOwogICAgICAg
ICB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CkBAIC0xMjcsNiAr
MTI5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfkJyaWRnZSgpOwogICAgICAgICB2b2lkIGNvbm5l
Y3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAgICAgICBib29sIHNl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICAgICAgYm9vbCBzZW5kKGNvbnN0IEFycmF5
QnVmZmVyJik7CiAgICAgICAgIGJvb2wgc2VuZChjb25zdCBCbG9iJik7CiAgICAgICAgIHVuc2ln
bmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKTsKICAgICAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwg
Y29uc3QgU3RyaW5nJiByZWFzb24pOwpAQCAtMTYzLDYgKzE2Niw3IEBAIHByaXZhdGU6CiAKICAg
ICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ29ubmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGVlciosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICBzdGF0aWMg
dm9pZCBtYWluVGhyZWFkU2VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CisgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZFNlbmRBcnJheUJ1
ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIFBhc3NPd25QdHI8VmVjdG9yPGNo
YXI+ID4pOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRTZW5kQmxvYihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGVlciosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcg
bG9uZyBzaXplKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQnVmZmVyZWRBbW91bnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFk
Q2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBpbnQgY29kZSwgY29uc3QgU3Ry
aW5nJiByZWFzb24pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106248</attachid>
            <date>2011-09-02 23:25:30 -0700</date>
            <delta_ts>2011-09-03 00:44:30 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-67477-20110903152528.patch</filename>
            <type>text/plain</type>
            <size>38337</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ0NjkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNTJlZGFhNzMzOWUxMmFhMGY3MDFm
YTA0ZmY4OWQ1ZDZjN2IwMjRlLi4zNjI5ZDY0MGMzODc1MzRhMmNmM2VlNzE1NWM1YmI2MjQ2MTRh
NjM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDktMDIgIFl1dGEgS2l0YW11cmEgIDx5
dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViU29ja2V0OiBTZW5kIEFycmF5QnVmZmVy
IGFzIFdlYlNvY2tldCBiaW5hcnkgbWVzc2FnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc0NzcKKworICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRh
bXVyYS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVy
ZWRBbW91bnQtYWZ0ZXItY2xvc2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UuaHRtbDoKKyAg
ICAgICAgQWRkIHRlc3RzIHRvIHNlbmQgQXJyYXlCdWZmZXJzLgorICAgICAgICAqIGh0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2hlY2stYmluYXJ5LW1lc3NhZ2VzX3dzaC5weToKKyAg
ICAgICAgUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5Ymkvc2VuZC1ibG9iX3dzaC5weSwgYmVjYXVzZSB0aGlzIGhhbmRsZXIKKyAgICAgICAgaXMg
dXNlZCBmcm9tIHNlbmQtYmxvYi5odG1sIGFuZCBzZW5kLWFycmF5YnVmZmVyLmh0bWwuCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWFycmF5YnVmZmVyLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9zZW5kLWFycmF5YnVmZmVyLmh0bWw6CisgICAgICAgIEFkZGVkLiBTZW5kIHRocmVlIHNt
YWxsIGJpbmFyeSBtZXNzYWdlcyBhcyBBcnJheUJ1ZmZlcnMuCisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWJsb2IuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2NoZWNrLWJpbmFyeS1t
ZXNzYWdlc193c2gucHk6CisgICAgICAgIFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL3NlbmQtYmxvYl93c2gu
cHkuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jl
c291cmNlcy9zZW5kLWFycmF5YnVmZmVyLmpzOgorICAgICAgICBBZGRlZC4gU2FtZSBhcyBzZW5k
LWFycmF5YnVmZmVyLmh0bWwsIGV4Y2VwdCB0aGF0IHRoaXMgdGVzdCBpcyBydW4gb24gdGhlIHdv
cmtlci4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMv
cmVzb3VyY2VzL3NlbmQtYmxvYi5qczoKKyAgICAgICAgUmVtb3ZlZCB0aGUgZGVmaW5pdGlvbiBv
ZiB1bm5lY2Vzc2FyeSBmdW5jdGlvbiBzdGFydHNXaXRoKCkuCisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3NlbmQtYXJyYXlidWZmZXItZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dv
cmtlcnMvc2VuZC1hcnJheWJ1ZmZlci5odG1sOiBBZGRlZAorCiAyMDExLTA5LTAyICBKYW1lcyBS
b2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBVcGRh
dGUgYmFzZWxpbmVzIGFuZCBleHBlY3RhdGlvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3Nl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UtZXhwZWN0ZWQudHh0CmluZGV4IDdjNmQ1NWVi
NjRkZWUzOWI4MWUyMDFkNmMxOGJmNTNlYTU3Yjk1OWIuLjA0NGZlMGY5YjRlODVjN2IzNjlkYTMx
M2U1YzM3NWMyN2Q2YzM1ZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVy
ZWRBbW91bnQtYWZ0ZXItY2xvc2UtZXhwZWN0ZWQudHh0CkBAIC0yMSw2ICsyMSwxOSBAQCBQQVNT
IHdzLnNlbmQobWVzc2FnZVRvU2VuZCkgaXMgZmFsc2UKIFBBU1MgYnVmZmVyZWRBbW91bnREaWZm
ZXJlbmNlIGlzIDY1NTQzCiBQQVNTIHdzLnNlbmQobWVzc2FnZVRvU2VuZCkgaXMgZmFsc2UKIFBB
U1MgYnVmZmVyZWRBbW91bnREaWZmZXJlbmNlIGlzIDY1NTUwCitUZXN0aW5nIHNlbmQoQXJyYXlC
dWZmZXIpLi4uCitQQVNTIHdzLnNlbmQobWVzc2FnZVRvU2VuZCkgaXMgZmFsc2UKK1BBU1MgYnVm
ZmVyZWRBbW91bnREaWZmZXJlbmNlIGlzIDYKK1BBU1Mgd3Muc2VuZChtZXNzYWdlVG9TZW5kKSBp
cyBmYWxzZQorUEFTUyBidWZmZXJlZEFtb3VudERpZmZlcmVuY2UgaXMgNworUEFTUyB3cy5zZW5k
KG1lc3NhZ2VUb1NlbmQpIGlzIGZhbHNlCitQQVNTIGJ1ZmZlcmVkQW1vdW50RGlmZmVyZW5jZSBp
cyAxMzEKK1BBU1Mgd3Muc2VuZChtZXNzYWdlVG9TZW5kKSBpcyBmYWxzZQorUEFTUyBidWZmZXJl
ZEFtb3VudERpZmZlcmVuY2UgaXMgMTM0CitQQVNTIHdzLnNlbmQobWVzc2FnZVRvU2VuZCkgaXMg
ZmFsc2UKK1BBU1MgYnVmZmVyZWRBbW91bnREaWZmZXJlbmNlIGlzIDY1NTQzCitQQVNTIHdzLnNl
bmQobWVzc2FnZVRvU2VuZCkgaXMgZmFsc2UKK1BBU1MgYnVmZmVyZWRBbW91bnREaWZmZXJlbmNl
IGlzIDY1NTUwCiBUZXN0aW5nIHNlbmQoQmxvYikuLi4KIFBBU1Mgd3Muc2VuZChtZXNzYWdlVG9T
ZW5kKSBpcyBmYWxzZQogUEFTUyBidWZmZXJlZEFtb3VudERpZmZlcmVuY2UgaXMgNgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJl
ZEFtb3VudC1hZnRlci1jbG9zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS5odG1sCmluZGV4IGM2YjI2
MDQyZTU5ZDhmMDQyYThiNjMxNmU1NzU4OTEyODg2MTQ4NjQuLjIzMzNkNzMyODk4MjE4NmI1MDMz
NGEzNThmZTk3NmYyNjA3ODY1Y2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1v
dW50LWFmdGVyLWNsb3NlLmh0bWwKQEAgLTUzLDYgKzUzLDE0IEBAIHdzLm9uY2xvc2UgPSBmdW5j
dGlvbigpCiAgICAgdGVzdEJ1ZmZlcmVkQW1vdW50KGNyZWF0ZVN0cmluZ1dpdGhMZW5ndGgoMHhG
RkZGKSwgMHhGRkZGICsgYmFzZU92ZXJoZWFkICsgMik7CiAgICAgdGVzdEJ1ZmZlcmVkQW1vdW50
KGNyZWF0ZVN0cmluZ1dpdGhMZW5ndGgoMHgxMDAwMCksIDB4MTAwMDAgKyBiYXNlT3ZlcmhlYWQg
KyA4KTsgLy8gV2l0aCA2NC1iaXQgZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGggZmllbGQuCiAKKyAg
ICBkZWJ1ZygiVGVzdGluZyBzZW5kKEFycmF5QnVmZmVyKS4uLiIpOworICAgIHRlc3RCdWZmZXJl
ZEFtb3VudChuZXcgQXJyYXlCdWZmZXIoMCksIGJhc2VPdmVyaGVhZCk7CisgICAgdGVzdEJ1ZmZl
cmVkQW1vdW50KG5ldyBBcnJheUJ1ZmZlcigxKSwgMSArIGJhc2VPdmVyaGVhZCk7CisgICAgdGVz
dEJ1ZmZlcmVkQW1vdW50KG5ldyBBcnJheUJ1ZmZlcigxMjUpLCAxMjUgKyBiYXNlT3ZlcmhlYWQp
OworICAgIHRlc3RCdWZmZXJlZEFtb3VudChuZXcgQXJyYXlCdWZmZXIoMTI2KSwgMTI2ICsgYmFz
ZU92ZXJoZWFkICsgMik7CisgICAgdGVzdEJ1ZmZlcmVkQW1vdW50KG5ldyBBcnJheUJ1ZmZlcigw
eEZGRkYpLCAweEZGRkYgKyBiYXNlT3ZlcmhlYWQgKyAyKTsKKyAgICB0ZXN0QnVmZmVyZWRBbW91
bnQobmV3IEFycmF5QnVmZmVyKDB4MTAwMDApLCAweDEwMDAwICsgYmFzZU92ZXJoZWFkICsgOCk7
CisKICAgICBkZWJ1ZygiVGVzdGluZyBzZW5kKEJsb2IpLi4uIik7CiAgICAgdGVzdEJ1ZmZlcmVk
QW1vdW50KGNyZWF0ZUJsb2JXaXRoTGVuZ3RoKDApLCBiYXNlT3ZlcmhlYWQpOwogICAgIHRlc3RC
dWZmZXJlZEFtb3VudChjcmVhdGVCbG9iV2l0aExlbmd0aCgxKSwgMSArIGJhc2VPdmVyaGVhZCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2NoZWNrLWJpbmFyeS1tZXNzYWdlc193c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2NoZWNrLWJpbmFyeS1tZXNzYWdlc193c2gucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDI0ZTNmNGQwNzk0NWM5MmNhYWJkYzAzN2VjNTAwODI0YTQyYTFhMgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2hlY2st
YmluYXJ5LW1lc3NhZ2VzX3dzaC5weQpAQCAtMCwwICsxLDIxIEBACitmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAor
CisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNz
ICMgQWx3YXlzIGFjY2VwdC4KKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVl
c3QpOgorICAgIGV4cGVjdGVkX21lc3NhZ2VzID0gWydIZWxsbywgd29ybGQhJywgJycsIGFsbF9k
aXN0aW5jdF9ieXRlcygpXQorCisgICAgZm9yIHRlc3RfbnVtYmVyLCBleHBlY3RlZF9tZXNzYWdl
IGluIGVudW1lcmF0ZShleHBlY3RlZF9tZXNzYWdlcyk6CisgICAgICAgIG1lc3NhZ2UgPSBtc2d1
dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KQorICAgICAgICBpZiB0eXBlKG1lc3NhZ2UpID09
IHN0ciBhbmQgbWVzc2FnZSA9PSBleHBlY3RlZF9tZXNzYWdlOgorICAgICAgICAgICAgbXNndXRp
bC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1BBU1M6IE1lc3NhZ2UgIyVkLicgJSB0ZXN0X251bWJl
cikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVl
c3QsICdGQUlMOiBNZXNzYWdlICMlZDogUmVjZWl2ZWQgdW5leHBlY3RlZCBtZXNzYWdlOiAlcicg
JSAodGVzdF9udW1iZXIsIG1lc3NhZ2UpKQorCisKK2RlZiBhbGxfZGlzdGluY3RfYnl0ZXMoKToK
KyAgICByZXR1cm4gJycuam9pbihbY2hyKGkpIGZvciBpIGluIHhyYW5nZSgyNTYpXSkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1h
cnJheWJ1ZmZlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3NlbmQtYXJyYXlidWZmZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1
MGM1MmUzYjE3NTM1MDk1MTRmOTE0OTc2NmIzN2JkOWJkNjE3MmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYXJyYXli
dWZmZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1dlYlNvY2tldDogU2VuZCBBcnJh
eUJ1ZmZlcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBQQVNTOiBNZXNz
YWdlICMwLgorUEFTUyBQQVNTOiBNZXNzYWdlICMxLgorUEFTUyBQQVNTOiBNZXNzYWdlICMyLgor
UEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYXJyYXlidWZmZXIuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1hcnJheWJ1ZmZlci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIwZGU1NTM3MGZmYzk4MTk1NDQxYWJiYjA4YWQ0ZWM0NDkyYzliMGUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3NlbmQtYXJyYXlidWZmZXIuaHRtbApAQCAtMCwwICsxLDc1IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3Jp
cHRpb24oIldlYlNvY2tldDogU2VuZCBBcnJheUJ1ZmZlcnMuIik7CisKK3dpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29j
a2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK2Z1bmN0aW9uIHN0YXJ0c1dpdGgodGFyZ2V0LCBw
cmVmaXgpCit7CisgICAgcmV0dXJuIHRhcmdldC5pbmRleE9mKHByZWZpeCkgPT09IDA7Cit9CisK
K2Z1bmN0aW9uIGNyZWF0ZUFycmF5QnVmZmVyQ29udGFpbmluZ0hlbGxvV29ybGQoKQoreworICAg
IHZhciBoZWxsbyA9ICJIZWxsbywgd29ybGQhIjsKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhB
cnJheShoZWxsby5sZW5ndGgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGVsbG8ubGVuZ3Ro
OyArK2kpCisgICAgICAgIGFycmF5W2ldID0gaGVsbG8uY2hhckNvZGVBdChpKTsKKyAgICByZXR1
cm4gYXJyYXkuYnVmZmVyOworfQorCitmdW5jdGlvbiBjcmVhdGVFbXB0eUFycmF5QnVmZmVyKCkK
K3sKKyAgICByZXR1cm4gbmV3IEFycmF5QnVmZmVyKDApOworfQorCitmdW5jdGlvbiBjcmVhdGVB
cnJheUJ1ZmZlckNvbnRhaW5pbmdBbGxEaXN0aW5jdEJ5dGVzKCkKK3sKKyAgICB2YXIgYXJyYXkg
PSBuZXcgVWludDhBcnJheSgyNTYpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyArK2kp
CisgICAgICAgIGFycmF5W2ldID0gaTsKKyAgICByZXR1cm4gYXJyYXkuYnVmZmVyOworfQorCit2
YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2hlY2st
YmluYXJ5LW1lc3NhZ2VzIjsKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKK3ZhciBjbG9z
ZUV2ZW50OworCit3cy5vbm9wZW4gPSBmdW5jdGlvbigpCit7CisgICAgd3Muc2VuZChjcmVhdGVB
cnJheUJ1ZmZlckNvbnRhaW5pbmdIZWxsb1dvcmxkKCkpOworICAgIHdzLnNlbmQoY3JlYXRlRW1w
dHlBcnJheUJ1ZmZlcigpKTsKKyAgICB3cy5zZW5kKGNyZWF0ZUFycmF5QnVmZmVyQ29udGFpbmlu
Z0FsbERpc3RpbmN0Qnl0ZXMoKSk7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVu
dCkKK3sKKyAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgaWYgKHN0YXJ0c1dpdGgo
bWVzc2FnZSwgIlBBU1MiKSkKKyAgICAgICAgdGVzdFBhc3NlZChtZXNzYWdlKTsKKyAgICBlbHNl
CisgICAgICAgIHRlc3RGYWlsZWQobWVzc2FnZSk7Cit9OworCit3cy5vbmNsb3NlID0gZnVuY3Rp
b24oZXZlbnQpCit7CisgICAgY2xvc2VFdmVudCA9IGV2ZW50OworICAgIHNob3VsZEJlVHJ1ZSgi
Y2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9zZW5kLWJsb2IuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iLmh0bWwKaW5kZXggZWFiOTM0NmQ3NDgzYTY0YTkyYWFi
Zjc5MWVkYjljOWQwMzc1Zjk5Mi4uYjNjOTVmMjI2YzE1MWIxM2E1ZDkwZGUyMjdiZTc1Mjc0NmI5
YjEzZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9zZW5kLWJsb2IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3NlbmQtYmxvYi5odG1sCkBAIC00Miw3ICs0Miw3IEBAIGZ1bmN0aW9uIGNy
ZWF0ZUJsb2JDb250YWluaW5nQWxsRGlzdGluY3RCeXRlcygpCiAgICAgcmV0dXJuIGJ1aWxkZXIu
Z2V0QmxvYigpOwogfQogCi12YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0
L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iIjsKK3ZhciB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93
ZWJzb2NrZXQvdGVzdHMvaHliaS9jaGVjay1iaW5hcnktbWVzc2FnZXMiOwogdmFyIHdzID0gbmV3
IFdlYlNvY2tldCh1cmwpOwogdmFyIGNsb3NlRXZlbnQ7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iX3dzaC5weSBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iX3dzaC5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI0ZTNmNGQwNzk0NWM5MmNhYWJkYzAz
N2VjNTAwODI0YTQyYTFhMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQt
YmxvYl93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1mcm9tIG1vZF9weXdl
YnNvY2tldCBpbXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRp
bAotCi0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBw
YXNzICMgQWx3YXlzIGFjY2VwdC4KLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJl
cXVlc3QpOgotICAgIGV4cGVjdGVkX21lc3NhZ2VzID0gWydIZWxsbywgd29ybGQhJywgJycsIGFs
bF9kaXN0aW5jdF9ieXRlcygpXQotCi0gICAgZm9yIHRlc3RfbnVtYmVyLCBleHBlY3RlZF9tZXNz
YWdlIGluIGVudW1lcmF0ZShleHBlY3RlZF9tZXNzYWdlcyk6Ci0gICAgICAgIG1lc3NhZ2UgPSBt
c2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KQotICAgICAgICBpZiB0eXBlKG1lc3NhZ2Up
ID09IHN0ciBhbmQgbWVzc2FnZSA9PSBleHBlY3RlZF9tZXNzYWdlOgotICAgICAgICAgICAgbXNn
dXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1BBU1M6IE1lc3NhZ2UgIyVkLicgJSB0ZXN0X251
bWJlcikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJl
cXVlc3QsICdGQUlMOiBNZXNzYWdlICMlZDogUmVjZWl2ZWQgdW5leHBlY3RlZCBtZXNzYWdlOiAl
cicgJSAodGVzdF9udW1iZXIsIG1lc3NhZ2UpKQotCi0KLWRlZiBhbGxfZGlzdGluY3RfYnl0ZXMo
KToKLSAgICByZXR1cm4gJycuam9pbihbY2hyKGkpIGZvciBpIGluIHhyYW5nZSgyNTYpXSkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29y
a2Vycy9yZXNvdXJjZXMvY2hlY2stYmluYXJ5LW1lc3NhZ2VzX3dzaC5weSBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvY2hlY2st
YmluYXJ5LW1lc3NhZ2VzX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjRlM2Y0ZDA3OTQ1YzkyY2FhYmRj
MDM3ZWM1MDA4MjRhNDJhMWEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jaGVjay1iaW5hcnkt
bWVzc2FnZXNfd3NoLnB5CkBAIC0wLDAgKzEsMjEgQEAKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCisKKworZGVm
IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MgIyBBbHdh
eXMgYWNjZXB0LgorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Cisg
ICAgZXhwZWN0ZWRfbWVzc2FnZXMgPSBbJ0hlbGxvLCB3b3JsZCEnLCAnJywgYWxsX2Rpc3RpbmN0
X2J5dGVzKCldCisKKyAgICBmb3IgdGVzdF9udW1iZXIsIGV4cGVjdGVkX21lc3NhZ2UgaW4gZW51
bWVyYXRlKGV4cGVjdGVkX21lc3NhZ2VzKToKKyAgICAgICAgbWVzc2FnZSA9IG1zZ3V0aWwucmVj
ZWl2ZV9tZXNzYWdlKHJlcXVlc3QpCisgICAgICAgIGlmIHR5cGUobWVzc2FnZSkgPT0gc3RyIGFu
ZCBtZXNzYWdlID09IGV4cGVjdGVkX21lc3NhZ2U6CisgICAgICAgICAgICBtc2d1dGlsLnNlbmRf
bWVzc2FnZShyZXF1ZXN0LCAnUEFTUzogTWVzc2FnZSAjJWQuJyAlIHRlc3RfbnVtYmVyKQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0ZB
SUw6IE1lc3NhZ2UgIyVkOiBSZWNlaXZlZCB1bmV4cGVjdGVkIG1lc3NhZ2U6ICVyJyAlICh0ZXN0
X251bWJlciwgbWVzc2FnZSkpCisKKworZGVmIGFsbF9kaXN0aW5jdF9ieXRlcygpOgorICAgIHJl
dHVybiAnJy5qb2luKFtjaHIoaSkgZm9yIGkgaW4geHJhbmdlKDI1NildKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291
cmNlcy9zZW5kLWFycmF5YnVmZmVyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9zZW5kLWFycmF5YnVmZmVyLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhhYWI5ZTg5YmI0MDMwMjdmMDE3NjA5Zjc3YjZjMTg1OTM3NTNjYTEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dv
cmtlcnMvcmVzb3VyY2VzL3NlbmQtYXJyYXlidWZmZXIuanMKQEAgLTAsMCArMSw0NSBAQAorZnVu
Y3Rpb24gY3JlYXRlQXJyYXlCdWZmZXJDb250YWluaW5nSGVsbG9Xb3JsZCgpCit7CisgICAgdmFy
IGhlbGxvID0gIkhlbGxvLCB3b3JsZCEiOworICAgIHZhciBhcnJheSA9IG5ldyBVaW50OEFycmF5
KGhlbGxvLmxlbmd0aCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoZWxsby5sZW5ndGg7ICsr
aSkKKyAgICAgICAgYXJyYXlbaV0gPSBoZWxsby5jaGFyQ29kZUF0KGkpOworICAgIHJldHVybiBh
cnJheS5idWZmZXI7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUVtcHR5QXJyYXlCdWZmZXIoKQorewor
ICAgIHJldHVybiBuZXcgQXJyYXlCdWZmZXIoMCk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFycmF5
QnVmZmVyQ29udGFpbmluZ0FsbERpc3RpbmN0Qnl0ZXMoKQoreworICAgIHZhciBhcnJheSA9IG5l
dyBVaW50OEFycmF5KDI1Nik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7ICsraSkKKyAg
ICAgICAgYXJyYXlbaV0gPSBpOworICAgIHJldHVybiBhcnJheS5idWZmZXI7Cit9CisKK3ZhciB1
cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jl
c291cmNlcy9jaGVjay1iaW5hcnktbWVzc2FnZXMiOwordmFyIHdzID0gbmV3IFdlYlNvY2tldCh1
cmwpOworCit3cy5vbm9wZW4gPSBmdW5jdGlvbigpCit7CisgICAgd3Muc2VuZChjcmVhdGVBcnJh
eUJ1ZmZlckNvbnRhaW5pbmdIZWxsb1dvcmxkKCkpOworICAgIHdzLnNlbmQoY3JlYXRlRW1wdHlB
cnJheUJ1ZmZlcigpKTsKKyAgICB3cy5zZW5kKGNyZWF0ZUFycmF5QnVmZmVyQ29udGFpbmluZ0Fs
bERpc3RpbmN0Qnl0ZXMoKSk7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkK
K3sKKyAgICBwb3N0TWVzc2FnZShldmVudC5kYXRhKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5j
dGlvbihjbG9zZUV2ZW50KQoreworICAgIGlmIChjbG9zZUV2ZW50Lndhc0NsZWFuID09PSB0cnVl
KQorICAgICAgICBwb3N0TWVzc2FnZSgiUEFTUzogY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVl
LiIpOworICAgIGVsc2UKKyAgICAgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IGNsb3NlRXZlbnQud2Fz
Q2xlYW4gc2hvdWxkIGJlIHRydWUsIGJ1dCB3YXM6ICIgKyBjbG9zZUV2ZW50Lndhc0NsZWFuKTsK
KyAgICBwb3N0TWVzc2FnZSgiRE9ORSIpOworfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvc2VuZC1ibG9i
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJz
L3Jlc291cmNlcy9zZW5kLWJsb2IuanMKaW5kZXggY2VhMDUwM2EwOTYwMjM1MmYzOTMxOTAyNjM3
OTk4MjUxMDMxMTNiZi4uYzAxMjBlYjk4YWVhMWNlZThhMzk5OWJlZTQxNjNhNTQzMTI0MTA2NiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93
b3JrZXJzL3Jlc291cmNlcy9zZW5kLWJsb2IuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9zZW5kLWJsb2IuanMKQEAg
LTEsOCArMSwzIEBACi1mdW5jdGlvbiBzdGFydHNXaXRoKHRhcmdldCwgcHJlZml4KQotewotICAg
IHJldHVybiB0YXJnZXQuaW5kZXhPZihwcmVmaXgpID09PSAwOwotfQotCiBmdW5jdGlvbiBjcmVh
dGVCbG9iQ29udGFpbmluZ0hlbGxvV29ybGQoKQogewogICAgIHZhciBidWlsZGVyID0gbmV3IFdl
YktpdEJsb2JCdWlsZGVyKCk7CkBAIC0yNiw3ICsyMSw3IEBAIGZ1bmN0aW9uIGNyZWF0ZUJsb2JD
b250YWluaW5nQWxsRGlzdGluY3RCeXRlcygpCiAgICAgcmV0dXJuIGJ1aWxkZXIuZ2V0QmxvYigp
OwogfQogCi12YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5
Ymkvd29ya2Vycy9yZXNvdXJjZXMvc2VuZC1ibG9iIjsKK3ZhciB1cmwgPSAid3M6Ly8xMjcuMC4w
LjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jaGVjay1iaW5h
cnktbWVzc2FnZXMiOwogdmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOwogCiB3cy5vbm9wZW4g
PSBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL3NlbmQtYmxvYl93c2gucHkgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL3Nl
bmQtYmxvYl93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyNGUzZjRkMDc5
NDVjOTJjYWFiZGMwMzdlYzUwMDgyNGE0MmExYTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9zZW5kLWJsb2Jfd3NoLnB5CisrKyAvZGV2L251bGwK
QEAgLTEsMjEgKzAsMCBAQAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKLQotCi1kZWYgd2ViX3NvY2tldF9kb19l
eHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcGFzcyAjIEFsd2F5cyBhY2NlcHQuCi0KLQot
ZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICBleHBlY3RlZF9tZXNz
YWdlcyA9IFsnSGVsbG8sIHdvcmxkIScsICcnLCBhbGxfZGlzdGluY3RfYnl0ZXMoKV0KLQotICAg
IGZvciB0ZXN0X251bWJlciwgZXhwZWN0ZWRfbWVzc2FnZSBpbiBlbnVtZXJhdGUoZXhwZWN0ZWRf
bWVzc2FnZXMpOgotICAgICAgICBtZXNzYWdlID0gbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVx
dWVzdCkKLSAgICAgICAgaWYgdHlwZShtZXNzYWdlKSA9PSBzdHIgYW5kIG1lc3NhZ2UgPT0gZXhw
ZWN0ZWRfbWVzc2FnZToKLSAgICAgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3Qs
ICdQQVNTOiBNZXNzYWdlICMlZC4nICUgdGVzdF9udW1iZXIpCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnRkFJTDogTWVzc2FnZSAjJWQ6
IFJlY2VpdmVkIHVuZXhwZWN0ZWQgbWVzc2FnZTogJXInICUgKHRlc3RfbnVtYmVyLCBtZXNzYWdl
KSkKLQotCi1kZWYgYWxsX2Rpc3RpbmN0X2J5dGVzKCk6Ci0gICAgcmV0dXJuICcnLmpvaW4oW2No
cihpKSBmb3IgaSBpbiB4cmFuZ2UoMjU2KV0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvc2VuZC1hcnJheWJ1ZmZlci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dv
cmtlcnMvc2VuZC1hcnJheWJ1ZmZlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWNiNDk5YzMy
ZDhjNjBhOTEzZDM1M2RiOGM5OWMzOGFjOTg2OTBlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9zZW5kLWFycmF5
YnVmZmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitXZWJTb2NrZXQ6IFNlbmQgQXJy
YXlCdWZmZXJzIGluIFdlYiBXb3JrZXJzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
K1BBU1MgUEFTUzogTWVzc2FnZSAjMC4KK1BBU1MgUEFTUzogTWVzc2FnZSAjMS4KK1BBU1MgUEFT
UzogTWVzc2FnZSAjMi4KK1BBU1MgUEFTUzogY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlLgor
RE9ORQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
d29ya2Vycy9zZW5kLWFycmF5YnVmZmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvc2VuZC1hcnJheWJ1ZmZlci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNhMzY1MTEwYzJkN2MyZjFkZDI3OTdmZDIzZTEwYzU2ODIzZTZjNTMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtl
cnMvc2VuZC1hcnJheWJ1ZmZlci5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
Li4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNj
cmlwdGlvbigiV2ViU29ja2V0OiBTZW5kIEFycmF5QnVmZmVycyBpbiBXZWIgV29ya2Vycy4iKTsK
Kword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKworZnVuY3Rpb24gc3Rh
cnRzV2l0aChzdHIsIHByZWZpeCkKK3sKKyAgICByZXR1cm4gc3RyLmluZGV4T2YocHJlZml4KSA9
PSAwOworfQorCit2YXIgd29ya2VyID0gbmV3IFdvcmtlcigicmVzb3VyY2VzL3NlbmQtYXJyYXli
dWZmZXIuanMiKTsKK3dvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpCit7CisgICAg
dmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIGlmIChzdGFydHNXaXRoKG1lc3NhZ2UsICJQ
QVNTIikpCisgICAgICAgIHRlc3RQYXNzZWQobWVzc2FnZSk7CisgICAgZWxzZSBpZiAoc3RhcnRz
V2l0aChtZXNzYWdlLCAiRkFJTCIpKQorICAgICAgICB0ZXN0RmFpbGVkKG1lc3NhZ2UpCisgICAg
ZWxzZQorICAgICAgICBkZWJ1ZyhtZXNzYWdlKTsKKyAgICBpZiAobWVzc2FnZSA9PT0gIkRPTkUi
KQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vanMtdGVzdC1y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBjM2FkYmZiYWQ5MzBhZDIzMWUxNjI1YTlhMzQzZmRlNDhlZDZkZGNmLi5jODg1
YWQ2MzcwNDMxZDY4OGQwMWYyODFjOTg1NDc4ODk3OTkzZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDYgQEAKKzIwMTEtMDktMDIgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgV2ViU29ja2V0OiBTZW5kIEFycmF5QnVmZmVyIGFzIFdlYlNvY2tldCBiaW5h
cnkgbWVzc2FnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njc0NzcKKworICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KKworICAgICAgICBU
ZXN0czogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWFycmF5YnVmZmVyLmh0
bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vy
cy9zZW5kLWFycmF5YnVmZmVyLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UuaHRtbCAodXBkYXRlZCkK
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTV2ViU29ja2V0OjpzZW5kKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJTb2NrZXQ6
OnNlbmRDYWxsYmFjayk6CisgICAgICAgICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6c2VuZFJlcXVlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpzZXRTZW5kUmVxdWVzdFJlc3VsdCk6
CisgICAgICAgICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXIuaDoKKyAgICAgICAgUmVuYW1lICJzZW50IiB0byAic2VuZFJlcXVlc3RSZXN1bHQiIHRv
IGNsYXJpZnkgdGhlIG1lYW5pbmcuIE1lc3NhZ2VzIGZyb20gdGhlIHNjcmlwdCBtYXkgbm90Cisg
ICAgICAgIGJlIHNlbnQgaW1tZWRpYXRlbHksIHRodXMgdGhlIHJldHVybiB2YWx1ZSBvZiBXZWJT
b2NrZXRDaGFubmVsOjpzZW5kKCkgaW5kaWNhdGVzIHdoZXRoZXIgdGhlCisgICAgICAgIG1lc3Nh
Z2UgaGFzIGJlZW4gcXVldWVkIHN1Y2Nlc3NmdWxseSwgcmF0aGVyIHRoYW4gd2hldGhlciB0aGUg
bWVzc2FnZSBoYXMgYmVlbiBzZW50IG9yIG5vdC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNlbmQpOgorICAgICAgICBD
YXNlIG9mIHNlbmRpbmcgIltvYmplY3QgQXJyYXlCdWZmZXJdIiBpcyBjb3ZlcmVkIGJ5IGFuIGV4
aXN0aW5nIHRlc3QKKyAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMve2h5YmksaGl4
aWU3Nn0vc2VuZC1vYmplY3QuaHRtbC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5o
OgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmlkbDoKKyAgICAgICAgKiB3ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hh
bm5lbDo6c2VuZCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6Cisg
ICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6c2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjp3b3JrZXJDb250ZXh0RGlkU2VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRo
cmVhZFNlbmRBcnJheUJ1ZmZlcik6CisgICAgICAgIENvbnN0cnVjdCBhbiBBcnJheUJ1ZmZlciBm
cm9tIHRoZSBkYXRhIG9uIFZlY3RvcjxjaGFyPi4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQpOgorICAgICAgICBDb3B5IHRo
ZSBjb250ZW50IGludG8gdGVtcG9yYXJ5IGJ1ZmZlciBvZiBWZWN0b3I8Y2hhcj4sIGFuZCBzZW5k
IGl0IHRvIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisKIDIwMTEtMDktMDIgIEJpbGwgQnVkZ2UgIDxiYnVk
Z2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBhICdkaWREb3dubG9hZERhdGEnIG1ldGhv
ZCB0byBSZXNvdXJjZUxvYWRlciwgU3VicmVzb3VyY2VMb2FkZXIsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKaW5kZXggNGY5MmY0MDdiZTg1
OTI5MmUyZTE4ZGIyZjk1ZWM5ZjQ4ZWUyNWU4ZC4uNDlhODI4Y2M4ODU1YWQ1ZDMzOWU0YTM3YzA4
NjU1MDlmMTQ5MzM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJTb2NrZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2Vi
U29ja2V0Q3VzdG9tLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkpTV2ViU29ja2V0
LmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNBcnJheUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIkpTQmxvYi5oIgogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgog
I2luY2x1ZGUgIktVUkwuaCIKQEAgLTk3LDcgKzk4LDkgQEAgSlNWYWx1ZSBKU1dlYlNvY2tldDo6
c2VuZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1l
bnQoMCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYm9vbCByZXN1bHQ7Ci0gICAg
aWYgKG1lc3NhZ2UuaW5oZXJpdHMoJkpTQmxvYjo6c19pbmZvKSkKKyAgICBpZiAobWVzc2FnZS5p
bmhlcml0cygmSlNBcnJheUJ1ZmZlcjo6c19pbmZvKSkKKyAgICAgICAgcmVzdWx0ID0gaW1wbCgp
LT5zZW5kKHRvQXJyYXlCdWZmZXIobWVzc2FnZSksIGVjKTsKKyAgICBlbHNlIGlmIChtZXNzYWdl
LmluaGVyaXRzKCZKU0Jsb2I6OnNfaW5mbykpCiAgICAgICAgIHJlc3VsdCA9IGltcGwoKS0+c2Vu
ZCh0b0Jsb2IobWVzc2FnZSksIGVjKTsKICAgICBlbHNlIHsKICAgICAgICAgU3RyaW5nIHN0cmlu
Z01lc3NhZ2UgPSB1c3RyaW5nVG9TdHJpbmcobWVzc2FnZS50b1N0cmluZyhleGVjKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3Vz
dG9tLmNwcAppbmRleCBkMjM3MDQ3NzM4OTgyNjFjYzUwMDQ2MjNiYjY1NjhiZmUyNjE0YWJhLi4y
ZWUxMTZlNWE3NGQ3ZTNlOThiZWQyNDc0NWU5YzNhYzBlOTQ0ZjdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAK
QEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXIu
aCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEJsb2IuaCIKICNpbmNsdWRl
ICJWOFByb3h5LmgiCkBAIC0xMjMsNyArMTI0LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFdlYlNvY2tldDo6c2VuZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IG1lc3NhZ2UgPSBhcmdzWzBdOwogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgIGJvb2wgcmVzdWx0OwotICAgIGlmIChWOEJsb2I6Okhhc0luc3RhbmNl
KG1lc3NhZ2UpKSB7CisgICAgaWYgKFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKG1lc3NhZ2Up
KSB7CisgICAgICAgIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlciA9IFY4QXJyYXlCdWZmZXI6OnRv
TmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QobWVzc2FnZSkpOworICAgICAgICBB
U1NFUlQoYXJyYXlCdWZmZXIpOworICAgICAgICByZXN1bHQgPSB3ZWJTb2NrZXQtPnNlbmQoYXJy
YXlCdWZmZXIsIGVjKTsKKyAgICB9IGVsc2UgaWYgKFY4QmxvYjo6SGFzSW5zdGFuY2UobWVzc2Fn
ZSkpIHsKICAgICAgICAgQmxvYiogYmxvYiA9IFY4QmxvYjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdChtZXNzYWdlKSk7CiAgICAgICAgIEFTU0VSVChibG9iKTsKICAgICAg
ICAgcmVzdWx0ID0gd2ViU29ja2V0LT5zZW5kKGJsb2IsIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCBj
YTBiMzcyYWQ5Y2YyYzAxMDdjYzg2NDgwMGEzN2U2YmQ0MjdmZjMxLi43YTFmMjk3MWM1MTExNDg5
NGIxMDVhN2VjNGZiYWMzMzY3ZDc1MjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0zOSw2ICszOSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXJyYXlCdWZmZXI7CiBjbGFzcyBCbG9i
OwogY2xhc3MgS1VSTDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CkBAIC01NCw2ICs1
NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJiBwcm90b2NvbCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29s
KCkgPSAwOyAvLyBXaWxsIGJlIGF2YWlsYWJsZSBhZnRlciBkaWRDb25uZWN0KCkgY2FsbGJhY2sg
aXMgaW52b2tlZC4KICAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBCbG9iJikgPSAwOwogICAgIHZpcnR1YWwgdW5zaWdu
ZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xv
c2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlci5jcHAKaW5kZXggZDFiOTcyOTI3MTNiNmRkNWYzZTk4OWMyYzA0
ODgzODBlZjRiYzgzNi4uMmVlY2M2OTU2MmVhZTE0MjkwNzI3MzMwMTk3NDIzZTIyOTQ1ZGEwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcApAQCAtNDUsNyArNDUs
NyBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OlRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcgogICAgICwgbV9zeW5jTWV0aG9kRG9uZShmYWxz
ZSkKICAgICAsIG1fdXNlSGl4aWU3NlByb3RvY29sKHRydWUpCiAgICAgLCBtX3N1YnByb3RvY29s
KCIiKQotICAgICwgbV9zZW50KGZhbHNlKQorICAgICwgbV9zZW5kUmVxdWVzdFJlc3VsdChmYWxz
ZSkKICAgICAsIG1fYnVmZmVyZWRBbW91bnQoMCkKICAgICAsIG1fc3VzcGVuZGVkKGZhbHNlKQog
ewpAQCAtOTEsMTQgKzkxLDE0IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyOjpzZXRTdWJwcm90b2NvbChjb25zdCBTdHJpbmcmIHN1YnByCiAgICAgbV9zdWJw
cm90b2NvbCA9IHN1YnByb3RvY29sOwogfQogCi1ib29sIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6c2VudCgpIGNvbnN0Citib29sIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6c2VuZFJlcXVlc3RSZXN1bHQoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3NlbnQ7CisgICAgcmV0dXJuIG1fc2VuZFJlcXVlc3RSZXN1bHQ7CiB9CiAKLXZvaWQg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpzZXRTZW50KGJvb2wgc2Vu
dCkKK3ZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpzZXRTZW5k
UmVxdWVzdFJlc3VsdChib29sIHNlbmRSZXF1ZXN0UmVzdWx0KQogewotICAgIG1fc2VudCA9IHNl
bnQ7CisgICAgbV9zZW5kUmVxdWVzdFJlc3VsdCA9IHNlbmRSZXF1ZXN0UmVzdWx0OwogICAgIG1f
c3luY01ldGhvZERvbmUgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXIuaAppbmRleCA4OTE3ZjgzZjdjODBkZjBmZmIwZTU3YTYxMzdlNDY2YTYxZjcyYWI3Li5k
ZDNlNmE3MGMxMWFlNzRlOTgyYmUyOGVhMTIxMDdlNGExNmQ1ZWEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyLmgKQEAgLTYzLDggKzYzLDggQEAgcHVibGljOgogICAgIFN0
cmluZyBzdWJwcm90b2NvbCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U3VicHJvdG9jb2woY29uc3Qg
U3RyaW5nJik7CiAKLSAgICBib29sIHNlbnQoKSBjb25zdDsKLSAgICB2b2lkIHNldFNlbnQoYm9v
bCk7CisgICAgYm9vbCBzZW5kUmVxdWVzdFJlc3VsdCgpIGNvbnN0OworICAgIHZvaWQgc2V0U2Vu
ZFJlcXVlc3RSZXN1bHQoYm9vbCk7CiAKICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBsb25nKTsKQEAg
LTk0LDcgKzk0LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9zeW5jTWV0aG9kRG9uZTsKICAg
ICBib29sIG1fdXNlSGl4aWU3NlByb3RvY29sOwogICAgIFN0cmluZyBtX3N1YnByb3RvY29sOwot
ICAgIGJvb2wgbV9zZW50OworICAgIGJvb2wgbV9zZW5kUmVxdWVzdFJlc3VsdDsKICAgICB1bnNp
Z25lZCBsb25nIG1fYnVmZmVyZWRBbW91bnQ7CiAgICAgYm9vbCBtX3N1c3BlbmRlZDsKICAgICBW
ZWN0b3I8T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+ID4gbV9wZW5kaW5nVGFz
a3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggZjNiMTg0NWI3
ZjBhYTBhYzg5NzNhNjZhZTA2MGMyMDFlNDUxMWUyOS4uMTBlZGQ1MTkyMzlmODI4MjNhMzIyYTJh
YWExNTA1NmMxNjE5MWQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cApAQCAtMjY1LDYgKzI2NSwyNCBAQCBib29sIFdlYlNvY2tldDo6c2VuZChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQo
bWVzc2FnZSk7CiB9CiAKK2Jvb2wgV2ViU29ja2V0OjpzZW5kKEFycmF5QnVmZmVyKiBiaW5hcnlE
YXRhLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAl
cCBzZW5kIGFycmF5YnVmZmVyICVwIiwgdGhpcywgYmluYXJ5RGF0YSk7CisgICAgQVNTRVJUKGJp
bmFyeURhdGEpOworICAgIGlmIChtX3VzZUhpeGllNzZQcm90b2NvbCkKKyAgICAgICAgcmV0dXJu
IHNlbmQoIltvYmplY3QgQXJyYXlCdWZmZXJdIiwgZWMpOworICAgIGlmIChtX3N0YXRlID09IENP
Tk5FQ1RJTkcpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAobV9zdGF0ZSA9PSBDTE9TSU5HIHx8IG1fc3RhdGUg
PT0gQ0xPU0VEKSB7CisgICAgICAgIG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlICs9IGJpbmFy
eURhdGEtPmJ5dGVMZW5ndGgoKSArIGdldEZyYW1pbmdPdmVyaGVhZChiaW5hcnlEYXRhLT5ieXRl
TGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEFTU0VSVChtX2No
YW5uZWwpOworICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQoKmJpbmFyeURhdGEpOworfQorCiBi
b29sIFdlYlNvY2tldDo6c2VuZChCbG9iKiBiaW5hcnlEYXRhLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBzZW5kIGJsb2IgJXMiLCB0aGlzLCBi
aW5hcnlEYXRhLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IGNiYjhkNjAzZWY4Nzg3YmY5ZDY1NmM2NzIzMDU3NjJj
N2ZjYWQ5ZGIuLmM2MjFlM2QxNzU5MzI0ZjA1MmI2YTEyMjQ1YWYyNTAzNzRmNTk5MmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtNDYsNiArNDYsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFycmF5QnVmZmVyOwogY2xhc3MgQmxvYjsKIGNsYXNz
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOwogCkBAIC02OCw2ICs2OSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwcm90b2NvbHMsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIGJvb2wgc2VuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBib29sIHNlbmQoQXJyYXlCdWZmZXIq
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCBzZW5kKEJsb2IqLCBFeGNlcHRpb25Db2RlJik7
CiAKICAgICB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgRXhjZXB0
aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCmluZGV4IDBk
YzIzZTdmN2EyODFiODlkMDQ5YTNlMGQxMzEyOTE0OGNkZjliODUuLmRmMjBiYTZlYzkzZjk5YmUx
YzQ4ZDA1ZGY1YWE0YjYwZDk4MzVlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5pZGwKQEAgLTY2LDggKzY2LDkgQEAgbW9kdWxlIHdlYnNvY2tldHMgewogICAgICAgICAv
LyBGSVhNRTogVXNlIG92ZXJsb2FkaW5nIHByb3ZpZGVkIGJ5IG91ciBJREwgY29kZSBnZW5lcmF0
b3IuCiAgICAgICAgIC8vIEFjY29yZGluZyB0byBXZWIgSURMIHNwZWNpZmljYXRpb24sIG92ZXJs
b2FkZWQgZnVuY3Rpb24gd2l0aCBET01TdHJpbmcgYXJndW1lbnQKICAgICAgICAgLy8gc2hvdWxk
IGFjY2VwdCBhbnl0aGluZyB0aGF0IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgKGluY2x1
ZGluZyBudW1iZXJzLAotICAgICAgICAvLyBib29sZWFucywgbnVsbCwgdW5kZWZpbmVkIGFuZCBv
YmplY3RzIGV4Y2VwdCBCbG9iKS4gQ3VycmVudCBjb2RlIGdlbmVyYXRvciBkb2VzCi0gICAgICAg
IC8vIG5vdCBoYW5kbGUgdGhpcyBydWxlIGNvcnJlY3RseS4KKyAgICAgICAgLy8gYm9vbGVhbnMs
IG51bGwsIHVuZGVmaW5lZCBhbmQgb2JqZWN0cyBleGNlcHQgQXJyYXlCdWZmZXIgYW5kIEJsb2Ip
LiBDdXJyZW50IGNvZGUKKyAgICAgICAgLy8gZ2VuZXJhdG9yIGRvZXMgbm90IGhhbmRsZSB0aGlz
IHJ1bGUgY29ycmVjdGx5LgorICAgICAgICAvLyBbUmVxdWlyZXNBbGxBcmd1bWVudHNdIGJvb2xl
YW4gc2VuZChpbiBBcnJheUJ1ZmZlciBkYXRhKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAg
ICAgLy8gW1JlcXVpcmVzQWxsQXJndW1lbnRzXSBib29sZWFuIHNlbmQoaW4gQmxvYiBkYXRhKSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgLy8gW1JlcXVpcmVzQWxsQXJndW1lbnRzXSBi
b29sZWFuIHNlbmQoaW4gRE9NU3RyaW5nIGRhdGEpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAg
ICAgICBbQ3VzdG9tXSBib29sZWFuIHNlbmQoaW4gRE9NU3RyaW5nIGRhdGEpIHJhaXNlcyhET01F
eGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKaW5kZXggYWU1YzFhYzhkYzlkNTMzOTQzNTg1ZjFkZDU0ODdlNmIyZDJkOGQ1OS4uYzEx
MzViNTljMTJkODljOWFhN2VjNDQyNGJkMTY5M2U3ZjE4NDlmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xNzAsNiArMTcwLDE0IEBA
IGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBBcnJh
eUJ1ZmZlciYgYmluYXJ5RGF0YSkKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5u
ZWwgJXAgc2VuZCBhcnJheWJ1ZmZlciAlcCIsIHRoaXMsICZiaW5hcnlEYXRhKTsKKyAgICBBU1NF
UlQoIW1fdXNlSGl4aWU3NlByb3RvY29sKTsKKyAgICBlbnF1ZXVlUmF3RnJhbWUoT3BDb2RlQmlu
YXJ5LCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYmluYXJ5RGF0YS5kYXRhKCkpLCBiaW5hcnlE
YXRhLmJ5dGVMZW5ndGgoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgV2ViU29ja2V0
Q2hhbm5lbDo6c2VuZChjb25zdCBCbG9iJiBiaW5hcnlEYXRhKQogewogICAgIExPRyhOZXR3b3Jr
LCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kIGJsb2IgJXMiLCB0aGlzLCBiaW5hcnlEYXRhLnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuaAppbmRleCAzZTg5ZTg1Yzk4ZTExMDZhMzNiN2I1M2M0NTk3MTRm
OTMzODM0ODdkLi44OTdlZjYwYWUwMjZmZGU0MTFjMmJkYjAwNDg4NDdkZWYwNzYyOTE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtNDUsNiAr
NDUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFycmF5QnVmZmVyOwogY2xh
c3MgQmxvYjsKIGNsYXNzIEZpbGVSZWFkZXJMb2FkZXI7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwpAQCAtNjYsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbm5l
Y3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAgIHZpcnR1YWwgU3Ry
aW5nIHN1YnByb3RvY29sKCk7CiAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYpOwogICAg
IHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEJsb2ImKTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxv
bmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNv
ZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsgLy8gU3RhcnQgY2xvc2luZyBoYW5kc2hha2UuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDYwNDY0NWFkNjY0ZjdmZjBhNDIyNTlhMTUw
YTQ5Zjg1MjdjYjM5YzMuLjkyMWJkNzRkN2I3OTk2OTNmMTcxNDliNmMxYTYwZmMzMGEwNDRlNDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNs
dWRlICJXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIgogCisjaW5jbHVkZSAiQXJy
YXlCdWZmZXIuaCIKICNpbmNsdWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNr
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKQEAgLTg4LDYgKzg5LDEzIEBAIGJvb2wg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogICAgIHJldHVybiBtX2JyaWRnZS0+c2VuZChtZXNzYWdlKTsKIH0KIAorYm9vbCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmlu
YXJ5RGF0YSkKK3sKKyAgICBpZiAoIW1fYnJpZGdlKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIG1fYnJpZGdlLT5zZW5kKGJpbmFyeURhdGEpOworfQorCiBib29sIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEJsb2ImIGJpbmFyeURhdGEpCiB7
CiAgICAgaWYgKCFtX2JyaWRnZSkKQEAgLTE2NSwxMCArMTczLDEwIEBAIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpCiAgICAgbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+Y29ubmVjdCh1cmwsIHByb3Rv
Y29sKTsKIH0KIAotc3RhdGljIHZvaWQgd29ya2VyQ29udGV4dERpZFNlbmQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIGJvb2wgc2VudCkKK3N0YXRpYyB2
b2lkIHdvcmtlckNvbnRleHREaWRTZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3Jr
ZXJDbGllbnRXcmFwcGVyLCBib29sIHNlbmRSZXF1ZXN0UmVzdWx0KQogewogICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwotICAgIHdvcmtlckNs
aWVudFdyYXBwZXItPnNldFNlbnQoc2VudCk7CisgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0
U2VuZFJlcXVlc3RSZXN1bHQoc2VuZFJlcXVlc3RSZXN1bHQpOwogfQogCiB2b2lkIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKQEAgLTE3Niw4ICsxODQsMTcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6UGVlcjo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBpZiAoIW1fbWFpbldlYlNvY2tldENoYW5uZWwgfHwgIW1fd29ya2Vy
Q2xpZW50V3JhcHBlcikKICAgICAgICAgcmV0dXJuOwotICAgIGJvb2wgc2VudCA9IG1fbWFpbldl
YlNvY2tldENoYW5uZWwtPnNlbmQobWVzc2FnZSk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0
RGlkU2VuZCwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBzZW50KSwgbV90YXNrTW9kZSk7CisgICAg
Ym9vbCBzZW5kUmVxdWVzdFJlc3VsdCA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnNlbmQobWVz
c2FnZSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQo
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkU2VuZCwgbV93b3JrZXJDbGllbnRX
cmFwcGVyLCBzZW5kUmVxdWVzdFJlc3VsdCksIG1fdGFza01vZGUpOworfQorCit2b2lkIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpzZW5kKGNvbnN0IEFycmF5QnVmZmVy
JiBiaW5hcnlEYXRhKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFt
X21haW5XZWJTb2NrZXRDaGFubmVsIHx8ICFtX3dvcmtlckNsaWVudFdyYXBwZXIpCisgICAgICAg
IHJldHVybjsKKyAgICBib29sIHNlbmRSZXF1ZXN0UmVzdWx0ID0gbV9tYWluV2ViU29ja2V0Q2hh
bm5lbC0+c2VuZChiaW5hcnlEYXRhKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9k
ZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRTZW5k
LCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHNlbmRSZXF1ZXN0UmVzdWx0KSwgbV90YXNrTW9kZSk7
CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQo
Y29uc3QgQmxvYiYgYmluYXJ5RGF0YSkKQEAgLTE4NSw4ICsyMDIsOCBAQCB2b2lkIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpzZW5kKGNvbnN0IEJsb2ImIGJpbmFyeURh
dGEpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1fbWFpbldlYlNvY2tl
dENoYW5uZWwgfHwgIW1fd29ya2VyQ2xpZW50V3JhcHBlcikKICAgICAgICAgcmV0dXJuOwotICAg
IGJvb2wgc2VudCA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnNlbmQoYmluYXJ5RGF0YSk7Ci0g
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkU2VuZCwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBz
ZW50KSwgbV90YXNrTW9kZSk7CisgICAgYm9vbCBzZW5kUmVxdWVzdFJlc3VsdCA9IG1fbWFpbldl
YlNvY2tldENoYW5uZWwtPnNlbmQoYmluYXJ5RGF0YSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250
ZXh0RGlkU2VuZCwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBzZW5kUmVxdWVzdFJlc3VsdCksIG1f
dGFza01vZGUpOwogfQogCiBzdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkR2V0QnVmZmVyZWRB
bW91bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIHVu
c2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQpCkBAIC0zNzUsNiArMzkyLDE2IEBAIHZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTZW5kKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvCiAgICAgcGVlci0+c2VuZChtZXNzYWdlKTsKIH0KIAordm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFNlbmRBcnJheUJ1ZmZlcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyLCBQYXNzT3duUHRyPFZl
Y3RvcjxjaGFyPiA+IGRhdGEpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgQVNTRVJU
KHBlZXIpOworCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IEFycmF5QnVm
ZmVyOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIHBlZXItPnNlbmQo
KmFycmF5QnVmZmVyKTsKK30KKwogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6bWFpblRocmVhZFNlbmRCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBl
ZXIqIHBlZXIsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcg
c2l6ZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtMzk1LDcgKzQyMiwyNCBA
QCBib29sIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIFJlZlB0cjxCcmlkZ2U+IHByb3RlY3QodGhpcyk7CiAg
ICAgd2FpdEZvck1ldGhvZENvbXBsZXRpb24oKTsKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXIqIGNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIu
Z2V0KCk7Ci0gICAgcmV0dXJuIGNsaWVudFdyYXBwZXIgJiYgY2xpZW50V3JhcHBlci0+c2VudCgp
OworICAgIHJldHVybiBjbGllbnRXcmFwcGVyICYmIGNsaWVudFdyYXBwZXItPnNlbmRSZXF1ZXN0
UmVzdWx0KCk7Cit9CisKK2Jvb2wgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJy
aWRnZTo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSkKK3sKKyAgICBpZiAoIW1f
d29ya2VyQ2xpZW50V3JhcHBlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVCht
X3BlZXIpOworICAgIC8vIEFycmF5QnVmZmVyIGlzbid0IHRocmVhZC1zYWZlLCBoZW5jZSB0aGUg
Y29udGVudCBvZiBBcnJheUJ1ZmZlciBpcyBjb3BpZWQgaW50byBWZWN0b3I8Y2hhcj4uCisgICAg
T3duUHRyPFZlY3RvcjxjaGFyPiA+IGRhdGEgPSBhZG9wdFB0cihuZXcgVmVjdG9yPGNoYXI+KGJp
bmFyeURhdGEuYnl0ZUxlbmd0aCgpKSk7CisgICAgaWYgKGJpbmFyeURhdGEuYnl0ZUxlbmd0aCgp
KQorICAgICAgICBtZW1jcHkoZGF0YS0+ZGF0YSgpLCBiaW5hcnlEYXRhLmRhdGEoKSwgYmluYXJ5
RGF0YS5ieXRlTGVuZ3RoKCkpOworICAgIHNldE1ldGhvZE5vdENvbXBsZXRlZCgpOworICAgIG1f
bG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2VuZEFycmF5QnVmZmVyLCBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlciksIGRhdGEucmVsZWFzZSgpKSk7CisgICAgUmVmUHRy
PEJyaWRnZT4gcHJvdGVjdCh0aGlzKTsKKyAgICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwor
ICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBl
ciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKTsKKyAgICByZXR1cm4gY2xpZW50V3JhcHBl
ciAmJiBjbGllbnRXcmFwcGVyLT5zZW5kUmVxdWVzdFJlc3VsdCgpOwogfQogCiBib29sIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQoY29uc3QgQmxvYiYgYmlu
YXJ5RGF0YSkKQEAgLTQwOCw3ICs0NTIsNyBAQCBib29sIFdvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQoY29uc3QgQmxvYiYgYmluYXJ5RGF0YSkKICAgICBSZWZQ
dHI8QnJpZGdlPiBwcm90ZWN0KHRoaXMpOwogICAgIHdhaXRGb3JNZXRob2RDb21wbGV0aW9uKCk7
CiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKiBjbGllbnRXcmFw
cGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpOwotICAgIHJldHVybiBjbGllbnRXcmFw
cGVyICYmIGNsaWVudFdyYXBwZXItPnNlbnQoKTsKKyAgICByZXR1cm4gY2xpZW50V3JhcHBlciAm
JiBjbGllbnRXcmFwcGVyLT5zZW5kUmVxdWVzdFJlc3VsdCgpOwogfQogCiB2b2lkIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQnVmZmVyZWRBbW91bnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBi
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuaAppbmRleCA3ZTJlYzFiY2RlYTYxOGIwNTI3OWMzZTg4ODQ5NGU1NjRmN2QzODc0Li40ZDlh
YTg5NjEyYTEzOTQ1MGMxN2VkMjRkZTAyMzM3NWQxY2IzNjcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5oCkBAIC02NCw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVj
dChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgdmlydHVhbCBTdHJp
bmcgc3VicHJvdG9jb2woKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOworICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEFycmF5QnVmZmVyJik7CiAgICAg
dmlydHVhbCBib29sIHNlbmQoY29uc3QgQmxvYiYpOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9u
ZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29k
ZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwpAQCAtOTQsNiArOTUsNyBAQCBwcml2YXRlOgogICAg
ICAgICBib29sIHVzZUhpeGllNzZQcm90b2NvbCgpOwogICAgICAgICB2b2lkIGNvbm5lY3QoY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAgICAgICB2b2lkIHNlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICAgICAgdm9pZCBzZW5kKGNvbnN0IEFycmF5QnVmZmVy
Jik7CiAgICAgICAgIHZvaWQgc2VuZChjb25zdCBCbG9iJik7CiAgICAgICAgIHZvaWQgYnVmZmVy
ZWRBbW91bnQoKTsKICAgICAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiBy
ZWFzb24pOwpAQCAtMTI3LDYgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH5CcmlkZ2UoKTsK
ICAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29s
KTsKICAgICAgICAgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgICAgIGJv
b2wgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYpOwogICAgICAgICBib29sIHNlbmQoY29uc3QgQmxv
YiYpOwogICAgICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCk7CiAgICAgICAgIHZv
aWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKQEAgLTE2Myw2ICsxNjYs
NyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENvbm5lY3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90
b2NvbCk7CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZFNlbmQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBlZXIqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHN0YXRpYyB2b2lkIG1h
aW5UaHJlYWRTZW5kQXJyYXlCdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBQ
YXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+KTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkU2Vu
ZEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSk7CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVh
ZEJ1ZmZlcmVkQW1vdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKik7CiAgICAgc3Rh
dGljIHZvaWQgbWFpblRocmVhZENsb3NlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwg
aW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>