<?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>90877</bug_id>
          
          <creation_ts>2012-07-10 06:22:15 -0700</creation_ts>
          <short_desc>WebSocket.send() should accept ArrayBufferView</short_desc>
          <delta_ts>2012-08-06 21:06:38 -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>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>85961</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>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>665706</commentid>
    <comment_count>0</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-07-10 06:22:15 -0700</bug_when>
    <thetext>This is a child bug of bug 85961.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666488</commentid>
    <comment_count>1</comment_count>
      <attachid>151637</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-07-11 01:06:07 -0700</bug_when>
    <thetext>Created attachment 151637
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666759</commentid>
    <comment_count>2</comment_count>
      <attachid>151637</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-07-11 07:58:48 -0700</bug_when>
    <thetext>Comment on attachment 151637
Patch

(Drive-by comment)

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

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:294
&gt; +    return m_channel-&gt;send(*binaryData, 0, binaryData-&gt;byteLength()) == ThreadableWebSocketChannel::SendSuccess;

Might be nicer to show deprecation warning message (and optionally collect metrics) if ArrayBuffer is given as well as we do in Blob constructor and XHR.send?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667411</commentid>
    <comment_count>3</comment_count>
      <attachid>151861</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-07-11 22:39:05 -0700</bug_when>
    <thetext>Created attachment 151861
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667413</commentid>
    <comment_count>4</comment_count>
      <attachid>151637</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-07-11 22:41:06 -0700</bug_when>
    <thetext>Comment on attachment 151637
Patch

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

&gt;&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:294
&gt;&gt; +    return m_channel-&gt;send(*binaryData, 0, binaryData-&gt;byteLength()) == ThreadableWebSocketChannel::SendSuccess;
&gt; 
&gt; Might be nicer to show deprecation warning message (and optionally collect metrics) if ArrayBuffer is given as well as we do in Blob constructor and XHR.send?

Thanks, I added these in patch v2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686206</commentid>
    <comment_count>5</comment_count>
      <attachid>151861</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-08-02 21:27:31 -0700</bug_when>
    <thetext>Comment on attachment 151861
Patch v2

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

&gt; Source/WebCore/ChangeLog:16
&gt; +        Also, histogram metrics collection is added in WebSocket.send() to keep track of
&gt; +        the usage of WebSocket.send() family.

This can be a separated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688641</commentid>
    <comment_count>6</comment_count>
      <attachid>151861</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-08-06 18:17:42 -0700</bug_when>
    <thetext>Comment on attachment 151861
Patch v2

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

http://dev.w3.org/html5/websockets/

WebSocket API draft was updated and now it includes *both* send(ArrayBuffer) and
send(ArrayBufferView). So, deprecation warning for send(ArrayBuffer) does not
make sense, thus I&apos;m going to update the patch to remove it.

&gt;&gt; Source/WebCore/ChangeLog:16
&gt;&gt; +        the usage of WebSocket.send() family.
&gt; 
&gt; This can be a separated patch.

Will be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688692</commentid>
    <comment_count>7</comment_count>
      <attachid>156830</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-08-06 19:16:40 -0700</bug_when>
    <thetext>Created attachment 156830
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688733</commentid>
    <comment_count>8</comment_count>
      <attachid>156830</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-08-06 20:12:58 -0700</bug_when>
    <thetext>Comment on attachment 156830
Patch v3

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688770</commentid>
    <comment_count>9</comment_count>
      <attachid>156830</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 21:06:33 -0700</bug_when>
    <thetext>Comment on attachment 156830
Patch v3

Clearing flags on attachment: 156830

Committed r124846: &lt;http://trac.webkit.org/changeset/124846&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688772</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 21:06:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151637</attachid>
            <date>2012-07-11 01:06:07 -0700</date>
            <delta_ts>2012-07-11 22:41:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90877-20120711170606.patch</filename>
            <type>text/plain</type>
            <size>24954</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE0MmVhNjk4MWRmODg0
M2RiODkwMDMwOTYzYTFkY2FiZmVhMThlNy4uNWE3MmE5NDUxMWI2ZjM5ZTBlMWJkNzZkNDliYjMy
ZDJhOGYwMzZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTA3LTExICBZdXRh
IEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYlNvY2tldC5zZW5k
KCkgc2hvdWxkIGFjY2VwdCBBcnJheUJ1ZmZlclZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwODc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjZXB0IEFycmF5QnVmZmVyVmlldyBhcyBhbiBhcmd1
bWVudCBvZiBXZWJTb2NrZXQuc2VuZCgpIHRvIGNvbXBseSB3aXRoIHJlY2VudAorICAgICAgICBz
cGVjaWZpY2F0aW9uIGNoYW5nZTogPGh0dHA6Ly9odG1sNS5vcmcvdG9vbHMvd2ViLWFwcHMtdHJh
Y2tlcj9mcm9tPTcwODQmdG89NzA4NT4uCisKKyAgICAgICAgV2ViU29ja2V0LnNlbmQoQXJyYXlC
dWZmZXIpIGRpc2FwcGVhcmVkIGZyb20gdGhlIHNwZWNpZmljYXRpb24sIGJ1dCBpdHMgaW1wbGVt
ZW50YXRpb24KKyAgICAgICAgaXMgbm90IHJlbW92ZWQgeWV0IHRvIGtlZXAgY29tcGF0aWJpbGl0
eSBvZiBleGlzdGluZyBzY3JpcHRzLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3NlbmQtYXJyYXlidWZmZXJ2aWV3Lmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9zZW5kLWFycmF5YnVmZmVy
dmlldy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuaDoKKyAgICAgICAgQ2hhbmdlIHRoZSBzaWduYXR1cmUgb2Ygc2VuZCgpIHRv
IHJlY2VpdmUgb2Zmc2V0IGFuZCBsZW5ndGggc28gdGhlIGNsaWVudHMgY2FuIHNlbmQKKyAgICAg
ICAgc3VicmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIuCisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNlbmQpOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFu
bmVsOjpzZW5kKToKKyAgICAgICAgUHV0IHRoZSBzdWIgcmVnaW9uIG9mIHRoZSBnaXZlbiBBcnJh
eUJ1ZmZlciBpbnRvIHRoZSBvdXRnb2luZyBmcmFtZSBxdWV1ZS4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAoV2ViU29ja2V0Q2hhbm5l
bCk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpQZWVyOjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQpOgorICAgICAgICBTZW5kIG9ubHkg
bmVjZXNzYXJ5IGRhdGEgdG8gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
c29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAoV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAoQnJpZGdlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dlYlNvY2tldDo6c2VuZCk6CisgICAgICAgIEFjY2VwdCBBcnJheUJ1ZmZlclZpZXcgaW4g
c2VuZCgpLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYlNvY2tldDo6c2VuZENhbGxiYWNrKToKKyAgICAg
ICAgRGl0dG8uCisKIDIwMTItMDctMTAgIEtldmluIEVsbGlzICA8a2V2ZXJzQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBJbnB1dCBlbGVtZW50cyB3aXRoIHR5cGU9cmFuZ2UgZG8gbm90IGhhdmUg
ZGVmYXVsdCB0b3VjaCBoYW5kbGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYTVi
YmUyZTMzZGYwMzNlMGIzZTlhYzhjYzhhMTI4MTMzNTMxYjFlOC4uN2I4ODdjMTU5MzVhMzQ4Mjkw
MTVmNDAwYmQzYWE1MTE4YzllMGFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wNy0xMSAgWXV0YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBXZWJTb2NrZXQuc2VuZCgpIHNob3VsZCBhY2NlcHQgQXJyYXlCdWZmZXJW
aWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDg3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3Jj
L1dlYlNvY2tldEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpzZW5k
QXJyYXlCdWZmZXIpOgorICAgICAgICBBcHBseSBjaGFuZ2UgaW4gdGhlIGZ1bmN0aW9uIHNpZ25h
dHVyZSBvZiBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKCkuCisKIDIwMTItMDctMTAgIEtldmluIEVs
bGlzICA8a2V2ZXJzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbnB1dCBlbGVtZW50cyB3aXRo
IHR5cGU9cmFuZ2UgZG8gbm90IGhhdmUgZGVmYXVsdCB0b3VjaCBoYW5kbGVycy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggNzJiZGM4NzhmOTA2OGYwMTljNjI1MmNkODVlZDU0YzY2
YmIxM2Q2OC4uMThkOTlhOWYwYWFmMDJkNWU5NGY1ZDVlOGVhNGU4M2Y1MzI4NGJhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCkgPSAwOyAvLyBXaWxsIGJlIGF2YWlsYWJsZSBhZnRl
ciBkaWRDb25uZWN0KCkgY2FsbGJhY2sgaXMgaW52b2tlZC4KICAgICB2aXJ0dWFsIFN0cmluZyBl
eHRlbnNpb25zKCkgPSAwOyAvLyBXaWxsIGJlIGF2YWlsYWJsZSBhZnRlciBkaWRDb25uZWN0KCkg
Y2FsbGJhY2sgaXMgaW52b2tlZC4KICAgICB2aXJ0dWFsIFNlbmRSZXN1bHQgc2VuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpID0gMDsKLSAgICB2aXJ0dWFsIFNlbmRSZXN1bHQgc2VuZChjb25zdCBB
cnJheUJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIFNlbmRSZXN1bHQgc2VuZChjb25zdCBBcnJh
eUJ1ZmZlciYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpID0gMDsK
ICAgICB2aXJ0dWFsIFNlbmRSZXN1bHQgc2VuZChjb25zdCBCbG9iJikgPSAwOwogICAgIHZpcnR1
YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGM2MmI2
NTVhMTlhZTRjMjA3MWRhMjMxYTBkYjFmNmJkMDg4ODA2ODAuLjI5MDY4YjYzMzMzNmQ3MDZkYjQz
ZThkMmZjZThiMWI3Yjc1YWNlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC01MSw2ICs1MSw4IEBACiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIgogI2lu
Y2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKKyNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4K
KyNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
QEAgLTI4OSw3ICsyOTEsMjYgQEAgYm9vbCBXZWJTb2NrZXQ6OnNlbmQoQXJyYXlCdWZmZXIqIGJp
bmFyeURhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIEFTU0VSVChtX2NoYW5uZWwpOwotICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQoKmJp
bmFyeURhdGEpID09IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3VjY2VzczsKKyAg
ICByZXR1cm4gbV9jaGFubmVsLT5zZW5kKCpiaW5hcnlEYXRhLCAwLCBiaW5hcnlEYXRhLT5ieXRl
TGVuZ3RoKCkpID09IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3VjY2VzczsKK30K
KworYm9vbCBXZWJTb2NrZXQ6OnNlbmQoQXJyYXlCdWZmZXJWaWV3KiBhcnJheUJ1ZmZlclZpZXcs
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIHNl
bmQgYXJyYXlidWZmZXJ2aWV3ICVwIiwgdGhpcywgYXJyYXlCdWZmZXJWaWV3KTsKKyAgICBBU1NF
UlQoYXJyYXlCdWZmZXJWaWV3KTsKKyAgICBpZiAobV9zdGF0ZSA9PSBDT05ORUNUSU5HKSB7Cisg
ICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgaWYgKG1fc3RhdGUgPT0gQ0xPU0lORyB8fCBtX3N0YXRlID09IENMT1NFRCkgewor
ICAgICAgICB1bnNpZ25lZCBwYXlsb2FkU2l6ZSA9IGFycmF5QnVmZmVyVmlldy0+Ynl0ZUxlbmd0
aCgpOworICAgICAgICBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZSA9IHNhdHVyYXRlQWRkKG1f
YnVmZmVyZWRBbW91bnRBZnRlckNsb3NlLCBwYXlsb2FkU2l6ZSk7CisgICAgICAgIG1fYnVmZmVy
ZWRBbW91bnRBZnRlckNsb3NlID0gc2F0dXJhdGVBZGQobV9idWZmZXJlZEFtb3VudEFmdGVyQ2xv
c2UsIGdldEZyYW1pbmdPdmVyaGVhZChwYXlsb2FkU2l6ZSkpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIEFTU0VSVChtX2NoYW5uZWwpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gYXJyYXlCdWZmZXIoYXJyYXlCdWZmZXJWaWV3LT5idWZmZXIoKSk7CisgICAgcmV0dXJuIG1f
Y2hhbm5lbC0+c2VuZCgqYXJyYXlCdWZmZXIsIGFycmF5QnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgp
LCBhcnJheUJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgoKSkgPT0gVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OlNlbmRTdWNjZXNzOwogfQogCiBib29sIFdlYlNvY2tldDo6c2VuZChCbG9iKiBiaW5h
cnlEYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCBjZmI2MWZiNjBkOWYwMDU2NDJlYjRmM2RkNDE1MWE2
NzFhZTIyZTg4Li43MWE4OGEzYmI3ZmY0MjU1Nzg4YWI0MmUwOGE1OTQ3NWJiOTkwODNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC03MCw2
ICs3MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIHNlbmQoQXJyYXlCdWZmZXIqLCBFeGNlcHRpb25D
b2RlJik7CisgICAgYm9vbCBzZW5kKEFycmF5QnVmZmVyVmlldyosIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICBib29sIHNlbmQoQmxvYiosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgY2xvc2Uo
aW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCmluZGV4IDkyODM1
YWU0MzViNTU4NzkyMzliZjNjNDFjMzk3MjgzMDNmMmRlNzEuLjcwYTNlMmU5MGI3ZWU1MWZkM2Zm
YzdkYjlmOTJkNmJjYWJiZWQ0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuaWRsCkBAIC02OSw4ICs2OSwxMiBAQCBtb2R1bGUgd2Vic29ja2V0
cyB7CiAgICAgICAgIC8vIGJvb2xlYW5zLCBudWxsLCB1bmRlZmluZWQgYW5kIG9iamVjdHMgZXhj
ZXB0IEFycmF5QnVmZmVyIGFuZCBCbG9iKS4gQ3VycmVudCBjb2RlCiAgICAgICAgIC8vIGdlbmVy
YXRvciBkb2VzIG5vdCBoYW5kbGUgdGhpcyBydWxlIGNvcnJlY3RseS4KICAgICAgICAgLy8gYm9v
bGVhbiBzZW5kKGluIEFycmF5QnVmZmVyIGRhdGEpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAg
ICAgICAvLyBib29sZWFuIHNlbmQoaW4gQXJyYXlCdWZmZXJWaWV3IGRhdGEpIHJhaXNlcyhET01F
eGNlcHRpb24pOwogICAgICAgICAvLyBib29sZWFuIHNlbmQoaW4gQmxvYiBkYXRhKSByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKICAgICAgICAgLy8gYm9vbGVhbiBzZW5kKGluIERPTVN0cmluZyBkYXRh
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgLy8KKyAgICAgICAgLy8gUmVjZW50IGNo
YW5nZSBpbiBXZWJTb2NrZXQgQVBJIHNwZWNpZmljYXRpb24gcmVwbGFjZWQgc2VuZChBcnJheUJ1
ZmZlcikgd2l0aAorICAgICAgICAvLyBzZW5kKEFycmF5QnVmZmVyVmlldykuIEZvciBub3csIHdl
IGFjY2VwdCBib3RoIHRvIGtlZXAgY29tcGF0aWJsaXR5IG9mIG9sZCBzY3JpcHRzLgogICAgICAg
ICBbQ3VzdG9tXSBib29sZWFuIHNlbmQoaW4gRE9NU3RyaW5nIGRhdGEpIHJhaXNlcyhET01FeGNl
cHRpb24pOwogCiAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgYW5kIGFwcGx5IFtDbGFtcF0g
YXR0cmlidXRlIGluc3RlYWQgb2YgW0N1c3RvbV0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggZmFlYWZkMmQ1
ZTZmZDdkNDE4NmYxNmEzMmNjNTI1OTY1ZjZmZTE3MS4uODk1MzY1MGEzYzRjZWU2YzgyMmI0NmU5
MTI0MThlN2JhMWM4YzdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMTUzLDEwICsxNTMsMTAgQEAgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2Vu
ZChjb25zdCBTdHJpbmcmIG1lc3MKICAgICByZXR1cm4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlNlbmRTdWNjZXNzOwogfQogCi1UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJl
c3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiBiaW5hcnlEYXRh
KQorVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5l
bDo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENo
YW5uZWwgJXAgc2VuZCBhcnJheWJ1ZmZlciAlcCIsIHRoaXMsICZiaW5hcnlEYXRhKTsKLSAgICBl
bnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZUJpbmFyeSwgc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGJpbmFyeURhdGEuZGF0YSgpKSwgYmluYXJ5RGF0YS5ieXRlTGVuZ3RoKCkp
OworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kIGFycmF5YnVmZmVy
ICVwICV1ICV1IiwgdGhpcywgJmJpbmFyeURhdGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwor
ICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQmluYXJ5LCBzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxl
bmd0aCk7CiAgICAgcmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3VjY2Vz
czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmgKaW5kZXggMDkwOTVjMTVhYWFiYjRjYzFiZDk4YjZmODJiNmY0ZDAyYTM4
MTBhOC4uM2RkZTY0OGVjMWYwNDY4MGFlOTNmYmY5ZDMxMDE0MDcwMTIyNmY5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5o
CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2Nv
bCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQXJyYXlCdWZmZXImKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0
IHNlbmQoY29uc3QgQXJyYXlCdWZmZXImLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBi
eXRlTGVuZ3RoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQmxvYiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pIE9WRVJSSURFOyAv
LyBTdGFydCBjbG9zaW5nIGhhbmRzaGFrZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwCmluZGV4IDI1MGMwMTk2MWFkZDhmMjZhOGVjYmQ4NzA1ODdkMjQ1MzFjODlj
NWUuLjgxM2U2ZTg5ZTlhNDhjOGE4NDZjYTZjNzk5ZDhjOGFhMjk3MTFjZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtOTEsMTEgKzkxLDExIEBAIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpzZW5kKGNvCiAgICAgcmV0dXJuIG1fYnJpZGdlLT5zZW5kKG1lc3NhZ2Up
OwogfQogCi1UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0
YSkKK1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiBiaW5hcnlEYXRhLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQogewogICAgIGlmICghbV9i
cmlkZ2UpCiAgICAgICAgIHJldHVybiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZEZh
aWw7Ci0gICAgcmV0dXJuIG1fYnJpZGdlLT5zZW5kKGJpbmFyeURhdGEpOworICAgIHJldHVybiBt
X2JyaWRnZS0+c2VuZChiaW5hcnlEYXRhLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKTsKIH0KIAog
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgQmxvYiYgYmluYXJ5RGF0YSkKQEAgLTE4OCw3ICsx
ODgsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpzZW5k
KGNvbnN0IEFycmF5QnVmZmVyJiBiaW5hcnlEYXRhKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgaWYgKCFtX21haW5XZWJTb2NrZXRDaGFubmVsIHx8ICFtX3dvcmtlckNsaWVudFdy
YXBwZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
U2VuZFJlc3VsdCBzZW5kUmVxdWVzdFJlc3VsdCA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnNl
bmQoYmluYXJ5RGF0YSk7CisgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1
bHQgc2VuZFJlcXVlc3RSZXN1bHQgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5zZW5kKGJpbmFy
eURhdGEsIDAsIGJpbmFyeURhdGEuYnl0ZUxlbmd0aCgpKTsKICAgICBtX2xvYWRlclByb3h5LnBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNv
bnRleHREaWRTZW5kLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHNlbmRSZXF1ZXN0UmVzdWx0KSwg
bV90YXNrTW9kZSk7CiB9CiAKQEAgLTQ4OCwxNCArNDg4LDE0IEBAIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpC
cmlkZ2U6CiAgICAgcmV0dXJuIGNsaWVudFdyYXBwZXItPnNlbmRSZXF1ZXN0UmVzdWx0KCk7CiB9
CiAKLVRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQoY29uc3QgQXJyYXlCdWZmZXImIGJpbmFy
eURhdGEpCitUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiBi
aW5hcnlEYXRhLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQogewog
ICAgIGlmICghbV93b3JrZXJDbGllbnRXcmFwcGVyIHx8ICFtX3BlZXIpCiAgICAgICAgIHJldHVy
biBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZEZhaWw7CiAgICAgLy8gQXJyYXlCdWZm
ZXIgaXNuJ3QgdGhyZWFkLXNhZmUsIGhlbmNlIHRoZSBjb250ZW50IG9mIEFycmF5QnVmZmVyIGlz
IGNvcGllZCBpbnRvIFZlY3RvcjxjaGFyPi4KLSAgICBPd25QdHI8VmVjdG9yPGNoYXI+ID4gZGF0
YSA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8Y2hhcj4oYmluYXJ5RGF0YS5ieXRlTGVuZ3RoKCkpKTsK
KyAgICBPd25QdHI8VmVjdG9yPGNoYXI+ID4gZGF0YSA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8Y2hh
cj4oYnl0ZUxlbmd0aCkpOwogICAgIGlmIChiaW5hcnlEYXRhLmJ5dGVMZW5ndGgoKSkKLSAgICAg
ICAgbWVtY3B5KGRhdGEtPmRhdGEoKSwgYmluYXJ5RGF0YS5kYXRhKCksIGJpbmFyeURhdGEuYnl0
ZUxlbmd0aCgpKTsKKyAgICAgICAgbWVtY3B5KGRhdGEtPmRhdGEoKSwgc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwog
ICAgIHNldE1ldGhvZE5vdENvbXBsZXRlZCgpOwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tU
b0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjptYWluVGhyZWFkU2VuZEFycmF5QnVmZmVyLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1f
cGVlciksIGRhdGEucmVsZWFzZSgpKSk7CiAgICAgUmVmUHRyPEJyaWRnZT4gcHJvdGVjdCh0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggNDcyYjk4MjA5
ZWY0YjA3MDU2ZmE2ODBmZmJlN2U5NjlhN2U1MzM0Mi4uMmRhNWRhMzk0ODdkYzUzYzkwZTNhYzEz
MDUzNTEyMmRiODIxYWQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3Rv
Y29sKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgZXh0ZW5zaW9ucygpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2Vu
ZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1
bHQgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBCbG9iJikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikgT1ZFUlJJREU7
CkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBpbml0aWFsaXplKCk7
CiAgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCk7CiAgICAgICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYpOworICAgICAgICBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiwg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CiAgICAgICAgIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQmxvYiYpOwogICAg
ICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCk7CiAgICAgICAgIHZvaWQgY2xvc2Uo
aW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcAppbmRleCA0OWI4MjJhNjJkMjhmMDdlMTYy
MGVlYjEwMDQ5YzNjMDZlNTJjODJhLi43ZDMwNDJiMjdhMmZjODYzY2VhYzkyZDM0MWYwOGVlZjM3
OTliMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tl
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRD
dXN0b20uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3
LmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAj
aW5jbHVkZSAiS1VSTC5oIgpAQCAtMTAwLDYgKzEwMSw4IEBAIEpTVmFsdWUgSlNXZWJTb2NrZXQ6
OnNlbmQoRXhlY1N0YXRlKiBleGVjKQogICAgIGJvb2wgcmVzdWx0OwogICAgIGlmIChtZXNzYWdl
LmluaGVyaXRzKCZKU0FycmF5QnVmZmVyOjpzX2luZm8pKQogICAgICAgICByZXN1bHQgPSBpbXBs
KCktPnNlbmQodG9BcnJheUJ1ZmZlcihtZXNzYWdlKSwgZWMpOworICAgIGVsc2UgaWYgKG1lc3Nh
Z2UuaW5oZXJpdHMoJkpTQXJyYXlCdWZmZXJWaWV3OjpzX2luZm8pKQorICAgICAgICByZXN1bHQg
PSBpbXBsKCktPnNlbmQodG9BcnJheUJ1ZmZlclZpZXcobWVzc2FnZSksIGVjKTsKICAgICBlbHNl
IGlmIChtZXNzYWdlLmluaGVyaXRzKCZKU0Jsb2I6OnNfaW5mbykpCiAgICAgICAgIHJlc3VsdCA9
IGltcGwoKS0+c2VuZCh0b0Jsb2IobWVzc2FnZSksIGVjKTsKICAgICBlbHNlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20u
Y3BwCmluZGV4IGYwMTA5YzdlMTQ5Y2JlMzUyZmQwNTMxOTJkMzE0ZmQ3ZDE0NzdlZTcuLjE5MWQ1
NWVhM2MzYzNjNmNiZWU4Y2ExZTI2NTNkZmIyNzQyZTNiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcApAQCAt
MzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
ICNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiVjhBcnJheUJ1ZmZlclZpZXcu
aCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEJsb2IuaCIKICNpbmNsdWRl
ICJWOFByb3h5LmgiCkBAIC0xMjcsNiArMTI4LDEwIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFdlYlNvY2tldDo6c2VuZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAg
ICAgIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlciA9IFY4QXJyYXlCdWZmZXI6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QobWVzc2FnZSkpOwogICAgICAgICBBU1NFUlQoYXJy
YXlCdWZmZXIpOwogICAgICAgICByZXN1bHQgPSB3ZWJTb2NrZXQtPnNlbmQoYXJyYXlCdWZmZXIs
IGVjKTsKKyAgICB9IGVsc2UgaWYgKFY4QXJyYXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZShtZXNz
YWdlKSkgeworICAgICAgICBBcnJheUJ1ZmZlclZpZXcqIGFycmF5QnVmZmVyVmlldyA9IFY4QXJy
YXlCdWZmZXJWaWV3Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG1lc3Nh
Z2UpKTsKKyAgICAgICAgQVNTRVJUKGFycmF5QnVmZmVyVmlldyk7CisgICAgICAgIHJlc3VsdCA9
IHdlYlNvY2tldC0+c2VuZChhcnJheUJ1ZmZlclZpZXcsIGVjKTsKICAgICB9IGVsc2UgaWYgKFY4
QmxvYjo6SGFzSW5zdGFuY2UobWVzc2FnZSkpIHsKICAgICAgICAgQmxvYiogYmxvYiA9IFY4Qmxv
Yjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChtZXNzYWdlKSk7CiAgICAg
ICAgIEFTU0VSVChibG9iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNvY2tldEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29ja2V0
SW1wbC5jcHAKaW5kZXggMTc5MzAzYWQ5YjRkYmQ3MmE1MzQ5YTZjN2ZmMTVjZDllNzFkNTNiMS4u
NzU0OGM2MzE1YTFmMjg4MzNjNTk5NWU3MGFmNDA0MzkxNjI0OGZkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29ja2V0SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU29ja2V0SW1wbC5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCBi
b29sIFdlYlNvY2tldEltcGw6OnNlbmRUZXh0KGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKIGJv
b2wgV2ViU29ja2V0SW1wbDo6c2VuZEFycmF5QnVmZmVyKGNvbnN0IFdlYkFycmF5QnVmZmVyJiB3
ZWJBcnJheUJ1ZmZlcikKIHsKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgcmV0dXJuIG1f
cHJpdmF0ZS0+c2VuZCgqUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4od2ViQXJyYXlCdWZmZXIpKSA9
PSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFN1Y2Nlc3M7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+c2VuZCgqUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4od2ViQXJyYXlCdWZmZXIpLCAw
LCB3ZWJBcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKCkpID09IFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpTZW5kU3VjY2VzczsKICNlbHNlCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA1Yjc3YWI3ZWRhOTJiYzVkMjM5NWQ0YmMwZGI2MDc2YjQ0ZDNhNTkyLi42MzY5
NzFiM2Q4MjQyN2U1NmUwMDZmOTA1ODY3YTE4MjA2ZmMyNDE0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTItMDctMTEgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgV2ViU29ja2V0LnNlbmQoKSBzaG91bGQgYWNjZXB0IEFycmF5QnVmZmVyVmlldworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA4NzcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdHdvIHRlc3Rz
IHRvIHRlc3Qgd2hldGhlciBXZWJTb2NrZXQuc2VuZChBcnJheUJ1ZmZlclZpZXcpIHdvcmtzIGlu
IHRoZSBtYWluIHRocmVhZAorICAgICAgICBhbmQgaW4gYSB3b3JrZXIuCisKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYXJyYXlidWZmZXJ2aWV3LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9zZW5kLWFycmF5YnVmZmVydmlldy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL3NlbmQtYXJyYXlidWZmZXJ2
aWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3dvcmtlcnMvc2VuZC1hcnJheWJ1ZmZlcnZpZXctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvc2VuZC1hcnJheWJ1
ZmZlcnZpZXcuaHRtbDogQWRkZWQuCisKIDIwMTItMDctMTAgIEtldmluIEVsbGlzICA8a2V2ZXJz
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbnB1dCBlbGVtZW50cyB3aXRoIHR5cGU9cmFuZ2Ug
ZG8gbm90IGhhdmUgZGVmYXVsdCB0b3VjaCBoYW5kbGVycy4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1hcnJheWJ1ZmZlcnZpZXct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9zZW5kLWFycmF5YnVmZmVydmlldy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTkzOWVhZTlk
ZjkwZjEyNTg1ODQ0OGMwMGUyNzkwN2QwMjczM2RhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1hcnJheWJ1ZmZlcnZp
ZXctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1dlYlNvY2tldDogU2VuZCBBcnJheUJ1
ZmZlclZpZXdzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgUEFTUzogTWVz
c2FnZSAjMC4KK1BBU1MgUEFTUzogTWVzc2FnZSAjMS4KK1BBU1MgUEFTUzogTWVzc2FnZSAjMi4K
K1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWFycmF5YnVmZmVydmlldy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWFycmF5YnVm
ZmVydmlldy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5NmRmYmFkNGI1YmZhNmJjOTQ3NDk4OWU5Y2VjOTA4
N2MzMWQxZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3NlbmQtYXJyYXlidWZmZXJ2aWV3Lmh0bWwKQEAgLTAsMCArMSw3MyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbigiV2Vi
U29ja2V0OiBTZW5kIEFycmF5QnVmZmVyVmlld3MuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworZnVuY3Rpb24gc3RhcnRzV2l0aCh0YXJnZXQsIHByZWZpeCkKK3sKKyAgICBy
ZXR1cm4gdGFyZ2V0LmluZGV4T2YocHJlZml4KSA9PT0gMDsKK30KKworZnVuY3Rpb24gY3JlYXRl
QXJyYXlCdWZmZXJWaWV3Q29udGFpbmluZ0hlbGxvV29ybGQoKQoreworICAgIHZhciBoZWxsbyA9
ICJIZWxsbywgd29ybGQhIjsKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShoZWxsby5s
ZW5ndGgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGVsbG8ubGVuZ3RoOyArK2kpCisgICAg
ICAgIGFycmF5W2ldID0gaGVsbG8uY2hhckNvZGVBdChpKTsKKyAgICByZXR1cm4gYXJyYXk7Cit9
CisKK2Z1bmN0aW9uIGNyZWF0ZUVtcHR5QXJyYXlCdWZmZXJWaWV3KCkKK3sKKyAgICByZXR1cm4g
bmV3IFVpbnQ4QXJyYXkoMCk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFycmF5QnVmZmVyVmlld0Nv
bnRhaW5pbmdBbGxEaXN0aW5jdEJ5dGVzKCkKK3sKKyAgICAvLyBSZXR1cm4gYSBzbGljZSBvZiBB
cnJheUJ1ZmZlci4KKyAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDEwMDApOworICAg
IHZhciBhcnJheSA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlciwgMTIzLCAyNTYpOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpCisgICAgICAgIGFycmF5W2ldID0gaTsKKyAgICByZXR1
cm4gYXJyYXk7Cit9CisKK3ZhciB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQv
dGVzdHMvaHliaS9jaGVjay1iaW5hcnktbWVzc2FnZXMiOwordmFyIHdzID0gbmV3IFdlYlNvY2tl
dCh1cmwpOwordmFyIGNsb3NlRXZlbnQ7CisKK3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAg
ICB3cy5zZW5kKGNyZWF0ZUFycmF5QnVmZmVyVmlld0NvbnRhaW5pbmdIZWxsb1dvcmxkKCkpOwor
ICAgIHdzLnNlbmQoY3JlYXRlRW1wdHlBcnJheUJ1ZmZlclZpZXcoKSk7CisgICAgd3Muc2VuZChj
cmVhdGVBcnJheUJ1ZmZlclZpZXdDb250YWluaW5nQWxsRGlzdGluY3RCeXRlcygpKTsKK307CisK
K3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHZhciBtZXNzYWdlID0gZXZl
bnQuZGF0YTsKKyAgICBpZiAoc3RhcnRzV2l0aChtZXNzYWdlLCAiUEFTUyIpKQorICAgICAgICB0
ZXN0UGFzc2VkKG1lc3NhZ2UpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZChtZXNzYWdl
KTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBjbG9zZUV2ZW50
ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVUcnVlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9zZW5kLWFycmF5YnVmZmVydmlldy5qcyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMv
c2VuZC1hcnJheWJ1ZmZlcnZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Y0ODI3MmViODU3YTYzMDAyYzkx
ZWExY2MzNjZkOGEwOWEyMGVmNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvc2VuZC1hcnJheWJ1
ZmZlcnZpZXcuanMKQEAgLTAsMCArMSw0NyBAQAorZnVuY3Rpb24gY3JlYXRlQXJyYXlCdWZmZXJW
aWV3Q29udGFpbmluZ0hlbGxvV29ybGQoKQoreworICAgIHZhciBoZWxsbyA9ICJIZWxsbywgd29y
bGQhIjsKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShoZWxsby5sZW5ndGgpOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgaGVsbG8ubGVuZ3RoOyArK2kpCisgICAgICAgIGFycmF5W2ld
ID0gaGVsbG8uY2hhckNvZGVBdChpKTsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKK2Z1bmN0aW9u
IGNyZWF0ZUVtcHR5QXJyYXlCdWZmZXJWaWV3KCkKK3sKKyAgICByZXR1cm4gbmV3IFVpbnQ4QXJy
YXkoMCk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFycmF5QnVmZmVyVmlld0NvbnRhaW5pbmdBbGxE
aXN0aW5jdEJ5dGVzKCkKK3sKKyAgICAvLyBSZXR1cm4gYSBzbGljZSBvZiBBcnJheUJ1ZmZlci4K
KyAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDEwMDApOworICAgIHZhciBhcnJheSA9
IG5ldyBVaW50OEFycmF5KGJ1ZmZlciwgMTIzLCAyNTYpOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMjU2OyArK2kpCisgICAgICAgIGFycmF5W2ldID0gaTsKKyAgICByZXR1cm4gYXJyYXk7Cit9
CisKK3ZhciB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS93
b3JrZXJzL3Jlc291cmNlcy9jaGVjay1iaW5hcnktbWVzc2FnZXMiOwordmFyIHdzID0gbmV3IFdl
YlNvY2tldCh1cmwpOworCit3cy5vbm9wZW4gPSBmdW5jdGlvbigpCit7CisgICAgd3Muc2VuZChj
cmVhdGVBcnJheUJ1ZmZlclZpZXdDb250YWluaW5nSGVsbG9Xb3JsZCgpKTsKKyAgICB3cy5zZW5k
KGNyZWF0ZUVtcHR5QXJyYXlCdWZmZXJWaWV3KCkpOworICAgIHdzLnNlbmQoY3JlYXRlQXJyYXlC
dWZmZXJWaWV3Q29udGFpbmluZ0FsbERpc3RpbmN0Qnl0ZXMoKSk7Cit9OworCit3cy5vbm1lc3Nh
Z2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBwb3N0TWVzc2FnZShldmVudC5kYXRhKTsKK307
CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihjbG9zZUV2ZW50KQoreworICAgIGlmIChjbG9zZUV2
ZW50Lndhc0NsZWFuID09PSB0cnVlKQorICAgICAgICBwb3N0TWVzc2FnZSgiUEFTUzogY2xvc2VF
dmVudC53YXNDbGVhbiBpcyB0cnVlLiIpOworICAgIGVsc2UKKyAgICAgICAgcG9zdE1lc3NhZ2Uo
IkZBSUw6IGNsb3NlRXZlbnQud2FzQ2xlYW4gc2hvdWxkIGJlIHRydWUsIGJ1dCB3YXM6ICIgKyBj
bG9zZUV2ZW50Lndhc0NsZWFuKTsKKyAgICBwb3N0TWVzc2FnZSgiRE9ORSIpOworfTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vy
cy9zZW5kLWFycmF5YnVmZmVydmlldy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvc2VuZC1hcnJheWJ1ZmZlcnZpZXctZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlMjY0NTU3MmNiYzI5YTlkODExNGVmNmMwN2IxMGVlYWJm
ODQ4NWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3dvcmtlcnMvc2VuZC1hcnJheWJ1ZmZlcnZpZXctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTMgQEAKK1dlYlNvY2tldDogU2VuZCBBcnJheUJ1ZmZlclZpZXdzIGluIFdlYiBX
b3JrZXJzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgUEFTUzogTWVzc2Fn
ZSAjMC4KK1BBU1MgUEFTUzogTWVzc2FnZSAjMS4KK1BBU1MgUEFTUzogTWVzc2FnZSAjMi4KK1BB
U1MgUEFTUzogY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlLgorRE9ORQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9zZW5kLWFycmF5
YnVmZmVydmlldy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS93b3JrZXJzL3NlbmQtYXJyYXlidWZmZXJ2aWV3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY1MGE0
MzIyYmI2ZTYzMDE3NmJkZWNkNDhhZTdjYmUyNjA1NmQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9zZW5kLWFy
cmF5YnVmZmVydmlldy5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oIldlYlNvY2tldDogU2VuZCBBcnJheUJ1
ZmZlclZpZXdzIGluIFdlYiBXb3JrZXJzLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKK2Z1bmN0aW9uIHN0YXJ0c1dpdGgoc3RyLCBwcmVmaXgpCit7CisgICAgcmV0dXJuIHN0
ci5pbmRleE9mKHByZWZpeCkgPT0gMDsKK30KKwordmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoInJl
c291cmNlcy9zZW5kLWFycmF5YnVmZmVydmlldy5qcyIpOword29ya2VyLm9ubWVzc2FnZSA9IGZ1
bmN0aW9uIChldmVudCkKK3sKKyAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgaWYg
KHN0YXJ0c1dpdGgobWVzc2FnZSwgIlBBU1MiKSkKKyAgICAgICAgdGVzdFBhc3NlZChtZXNzYWdl
KTsKKyAgICBlbHNlIGlmIChzdGFydHNXaXRoKG1lc3NhZ2UsICJGQUlMIikpCisgICAgICAgIHRl
c3RGYWlsZWQobWVzc2FnZSkKKyAgICBlbHNlCisgICAgICAgIGRlYnVnKG1lc3NhZ2UpOworICAg
IGlmIChtZXNzYWdlID09PSAiRE9ORSIpCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151861</attachid>
            <date>2012-07-11 22:39:05 -0700</date>
            <delta_ts>2012-08-06 19:16:35 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-90877-20120712143903.patch</filename>
            <type>text/plain</type>
            <size>36885</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTFjMmYxMjk1NTE2ZDNi
ZjZmMmEyMjk3NzczNThlZjMxMGEyZGNhMi4uOWQyZWM5M2U0NzBmOWRjMGRiMGFlY2U4Y2Y1NDky
M2Y0MzE1MGJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA3LTExICBZdXRh
IEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYlNvY2tldC5zZW5k
KCkgc2hvdWxkIGFjY2VwdCBBcnJheUJ1ZmZlclZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwODc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjZXB0IEFycmF5QnVmZmVyVmlldyBhcyBhbiBhcmd1
bWVudCBvZiBXZWJTb2NrZXQuc2VuZCgpIHRvIGNvbXBseSB3aXRoIHJlY2VudAorICAgICAgICBz
cGVjaWZpY2F0aW9uIGNoYW5nZTogPGh0dHA6Ly9odG1sNS5vcmcvdG9vbHMvd2ViLWFwcHMtdHJh
Y2tlcj9mcm9tPTcwODQmdG89NzA4NT4uCisKKyAgICAgICAgV2ViU29ja2V0LnNlbmQoQXJyYXlC
dWZmZXIpIGRpc2FwcGVhcmVkIGZyb20gdGhlIHNwZWNpZmljYXRpb24sIGJ1dCB3ZSBzdGlsbCBh
Y2NlcHQKKyAgICAgICAgaXQgdG8ga2VlcCBjb21wYXRpYmlsaXR5IG9mIGV4aXN0aW5nIHNjcmlw
dHMuIFdoZW4gV2ViU29ja2V0LnNlbmQoQXJyYXlCdWZmZXIpIGlzCisgICAgICAgIGNhbGxlZCwg
YSBkZXByZWNhdGlvbiB3YXJuaW5nIGlzIGVtaXR0ZWQgdG8gdGhlIGNvbnNvbGUuCisKKyAgICAg
ICAgQWxzbywgaGlzdG9ncmFtIG1ldHJpY3MgY29sbGVjdGlvbiBpcyBhZGRlZCBpbiBXZWJTb2Nr
ZXQuc2VuZCgpIHRvIGtlZXAgdHJhY2sgb2YKKyAgICAgICAgdGhlIHVzYWdlIG9mIFdlYlNvY2tl
dC5zZW5kKCkgZmFtaWx5LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3NlbmQtYXJyYXlidWZmZXJ2aWV3Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9zZW5kLWFycmF5YnVmZmVydmlldy5o
dG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuaDoKKyAgICAgICAgQ2hhbmdlIHRoZSBzaWduYXR1cmUgb2Ygc2VuZCgpIHRvIHJlY2Vp
dmUgb2Zmc2V0IGFuZCBsZW5ndGggc28gdGhlIGNsaWVudHMgY2FuIHNlbmQKKyAgICAgICAgc3Vi
cmFuZ2Ugb2YgYW4gQXJyYXlCdWZmZXIuCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OldlYlNvY2tldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNlbmQpOgorICAgICAgICBFbWl0IGEgd2Fybmlu
ZyB3aGVuIFdlYlNvY2tldC5zZW5kKEFycmF5QnVmZmVyKSBpcyB1c2VkIGZvciB0aGUgZmlyc3Qg
dGltZSBpbiB0aGUKKyAgICAgICAgY2hhbm5lbCwgYW5kIGNvbGxlY3QgdGhlIG1ldHJpY3Mgb2Yg
c2VuZCgpIGNhbGxzIGZvciBlYWNoIG1lc3NhZ2UgdHlwZSAoU3RyaW5nLAorICAgICAgICBBcnJh
eUJ1ZmZlciwgQXJyYXlCdWZmZXJWaWV3IGFuZCBCbG9iKS4gTWV0cmljIGNvbGxlY3Rpb24gaXMg
ZG9uZSBvbmx5IG9uY2UgZm9yCisgICAgICAgIGVhY2ggbWVzc2FnZSB0eXBlIGluIGEgc2luZ2xl
IGNvbm5lY3Rpb24sIGJlY2F1c2Ugd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbgorICAgICAgICB3
aGV0aGVyIGVhY2ggb3ZlcmxvYWQgaXMgdXNlZCBvciBub3QuCisgICAgICAgIFdlYlNvY2tldC5z
ZW5kKEFycmF5QnVmZmVyVmlldykgaXMgYWRkZWQsIHdoaWNoIHB1dHMgdGhlIHN1YiByZWdpb24g
b2YgdGhlIGdpdmVuCisgICAgICAgIEFycmF5QnVmZmVyIGludG8gdGhlIG91dGdvaW5nIGZyYW1l
IHF1ZXVlLgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRDaGFubmVsOjpzZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5oOgorICAgICAgICAoV2ViU29ja2V0Q2hhbm5lbCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpzZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVy
OjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpCcmlkZ2U6OnNlbmQpOgorICAgICAgICBTZW5kIG9ubHkgbmVjZXNzYXJ5IGRhdGEgdG8g
dGhlIG1haW4gdGhyZWFkLgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAoV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwpOgorICAgICAgICAoQnJpZGdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1dlYlNvY2tldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYlNvY2tldDo6c2Vu
ZCk6IEFjY2VwdCBBcnJheUJ1ZmZlclZpZXcgaW4gc2VuZCgpLgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdl
YlNvY2tldDo6c2VuZENhbGxiYWNrKTogRGl0dG8uCisKIDIwMTItMDctMTEgIEtlbm5ldGggUnVz
c2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIGNvbXBvc2l0aW5nL3dlYmdsL3dlYmds
LW5vbnByZW11bHRpcGxpZWQtYmxlbmQuaHRtbCBpcyBmbGFreSBvbiBMaW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IGNlY2FkMDgxNzhmNjZiODRiNmU3YjM4NGM4ZTdjNzYzODMyNTc2
NDguLjhiZGNiZjM4M2U5OWMzNzczNjgyOGRjZTc4ODA3MTIyMzlmMWIxNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMTEgIFl1dGEgS2l0YW11
cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViU29ja2V0LnNlbmQoKSBzaG91
bGQgYWNjZXB0IEFycmF5QnVmZmVyVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTA4NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHNyYy9XZWJTb2NrZXRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViU29ja2V0SW1wbDo6c2VuZEFycmF5QnVmZmVyKToKKyAgICAgICAgQXBwbHkgY2hhbmdl
IGluIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZCgpLgor
CiAyMDEyLTA3LTEwICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXgg
NzJiZGM4NzhmOTA2OGYwMTljNjI1MmNkODVlZDU0YzY2YmIxM2Q2OC4uMThkOTlhOWYwYWFmMDJk
NWU5NGY1ZDVlOGVhNGU4M2Y1MzI4NGJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgK
QEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29s
KCkgPSAwOyAvLyBXaWxsIGJlIGF2YWlsYWJsZSBhZnRlciBkaWRDb25uZWN0KCkgY2FsbGJhY2sg
aXMgaW52b2tlZC4KICAgICB2aXJ0dWFsIFN0cmluZyBleHRlbnNpb25zKCkgPSAwOyAvLyBXaWxs
IGJlIGF2YWlsYWJsZSBhZnRlciBkaWRDb25uZWN0KCkgY2FsbGJhY2sgaXMgaW52b2tlZC4KICAg
ICB2aXJ0dWFsIFNlbmRSZXN1bHQgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKLSAg
ICB2aXJ0dWFsIFNlbmRSZXN1bHQgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYpID0gMDsKKyAgICB2
aXJ0dWFsIFNlbmRSZXN1bHQgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIFNlbmRSZXN1bHQg
c2VuZChjb25zdCBCbG9iJikgPSAwOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJl
ZEFtb3VudCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNv
bnN0IFN0cmluZyYgcmVhc29uKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGM2MmI2NTVhMTlhZTRjMjA3MWRhMjMxYTBkYjFm
NmJkMDg4ODA2ODAuLjA4MDU3ODI3OWExYjhjYWU1ODZkNDUwZTAwOTc2OWZmNTExNjZjMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBA
IC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSGlzdG9n
cmFtU3VwcG9ydC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZl
bnQuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKQEAgLTUxLDYgKzUyLDggQEAKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgorI2luY2x1ZGUgPHd0Zi9B
cnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgpAQCAtMTIzLDYgKzEyNiwxNiBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBz
YXR1cmF0ZUFkZCh1bnNpZ25lZCBsb25nIGEsIHVuc2lnbmVkIGxvbmcgYikKIAogc3RhdGljIGJv
b2wgd2ViU29ja2V0c0F2YWlsYWJsZSA9IGZhbHNlOwogCitlbnVtIFdlYlNvY2tldFNlbmRNZXNz
YWdlVHlwZSB7CisgICAgV2ViU29ja2V0U2VuZFN0cmluZywKKyAgICBXZWJTb2NrZXRTZW5kQXJy
YXlCdWZmZXIsCisgICAgV2ViU29ja2V0U2VuZEFycmF5QnVmZmVyVmlldywKKyAgICBXZWJTb2Nr
ZXRTZW5kQmxvYiwKKyAgICBXZWJTb2NrZXRTZW5kTWVzc2FnZVR5cGVNYXgKK307CisKK2NvbnN0
IGNoYXIqIGhpc3RvZ3JhbU5hbWVGb3JTZW5kTWVzc2FnZVR5cGUgPSAiV2ViQ29yZS5XZWJTb2Nr
ZXQuc2VuZC5NZXNzYWdlVHlwZSI7CisKIHZvaWQgV2ViU29ja2V0OjpzZXRJc0F2YWlsYWJsZShi
b29sIGF2YWlsYWJsZSkKIHsKICAgICB3ZWJTb2NrZXRzQXZhaWxhYmxlID0gYXZhaWxhYmxlOwpA
QCAtMTQ2LDYgKzE1OSwxMCBAQCBXZWJTb2NrZXQ6OldlYlNvY2tldChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQogICAgICwgbV9iaW5hcnlUeXBlKEJpbmFyeVR5cGVCbG9iKQogICAg
ICwgbV9zdWJwcm90b2NvbCgiIikKICAgICAsIG1fZXh0ZW5zaW9ucygiIikKKyAgICAsIG1fY2Fs
bGVkU2VuZFN0cmluZyhmYWxzZSkKKyAgICAsIG1fY2FsbGVkU2VuZEFycmF5QnVmZmVyKGZhbHNl
KQorICAgICwgbV9jYWxsZWRTZW5kQXJyYXlCdWZmZXJWaWV3KGZhbHNlKQorICAgICwgbV9jYWxs
ZWRTZW5kQmxvYihmYWxzZSkKIHsKIH0KIApAQCAtMjUzLDYgKzI3MCwxMSBAQCB2b2lkIFdlYlNv
Y2tldDo6Y29ubmVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBy
b3RvY29scywgRXhjZQogYm9vbCBXZWJTb2NrZXQ6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBz
ZW5kICVzIiwgdGhpcywgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoIW1fY2FsbGVk
U2VuZFN0cmluZykgeworICAgICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJh
dGlvbihoaXN0b2dyYW1OYW1lRm9yU2VuZE1lc3NhZ2VUeXBlLCBXZWJTb2NrZXRTZW5kU3RyaW5n
LCBXZWJTb2NrZXRTZW5kTWVzc2FnZVR5cGVNYXgpOworICAgICAgICBtX2NhbGxlZFNlbmRTdHJp
bmcgPSB0cnVlOworICAgIH0KKwogICAgIGlmIChtX3N0YXRlID09IENPTk5FQ1RJTkcpIHsKICAg
ICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
Mjc4LDYgKzMwMCwxMiBAQCBib29sIFdlYlNvY2tldDo6c2VuZChBcnJheUJ1ZmZlciogYmluYXJ5
RGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQg
JXAgc2VuZCBhcnJheWJ1ZmZlciAlcCIsIHRoaXMsIGJpbmFyeURhdGEpOwogICAgIEFTU0VSVChi
aW5hcnlEYXRhKTsKKyAgICBpZiAoIW1fY2FsbGVkU2VuZEFycmF5QnVmZmVyKSB7CisgICAgICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291
cmNlLCBMb2dNZXNzYWdlVHlwZSwgV2FybmluZ01lc3NhZ2VMZXZlbCwgIkFycmF5QnVmZmVyIGlz
IGRlcHJlY2F0ZWQgaW4gV2ViU29ja2V0LnNlbmQoKS4gVXNlIEFycmF5QnVmZmVyVmlldyBpbnN0
ZWFkLiIpOworICAgICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbiho
aXN0b2dyYW1OYW1lRm9yU2VuZE1lc3NhZ2VUeXBlLCBXZWJTb2NrZXRTZW5kQXJyYXlCdWZmZXIs
IFdlYlNvY2tldFNlbmRNZXNzYWdlVHlwZU1heCk7CisgICAgICAgIG1fY2FsbGVkU2VuZEFycmF5
QnVmZmVyID0gdHJ1ZTsKKyAgICB9CisKICAgICBpZiAobV9zdGF0ZSA9PSBDT05ORUNUSU5HKSB7
CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTI4OSwxMyArMzE3LDQyIEBAIGJvb2wgV2ViU29ja2V0OjpzZW5kKEFycmF5QnVmZmVyKiBi
aW5hcnlEYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICBBU1NFUlQobV9jaGFubmVsKTsKLSAgICByZXR1cm4gbV9jaGFubmVsLT5zZW5kKCpi
aW5hcnlEYXRhKSA9PSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFN1Y2Nlc3M7Cisg
ICAgcmV0dXJuIG1fY2hhbm5lbC0+c2VuZCgqYmluYXJ5RGF0YSwgMCwgYmluYXJ5RGF0YS0+Ynl0
ZUxlbmd0aCgpKSA9PSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFN1Y2Nlc3M7Cit9
CisKK2Jvb2wgV2ViU29ja2V0OjpzZW5kKEFycmF5QnVmZmVyVmlldyogYXJyYXlCdWZmZXJWaWV3
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBz
ZW5kIGFycmF5YnVmZmVydmlldyAlcCIsIHRoaXMsIGFycmF5QnVmZmVyVmlldyk7CisgICAgQVNT
RVJUKGFycmF5QnVmZmVyVmlldyk7CisgICAgaWYgKCFtX2NhbGxlZFNlbmRBcnJheUJ1ZmZlclZp
ZXcpIHsKKyAgICAgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oaGlz
dG9ncmFtTmFtZUZvclNlbmRNZXNzYWdlVHlwZSwgV2ViU29ja2V0U2VuZEFycmF5QnVmZmVyVmll
dywgV2ViU29ja2V0U2VuZE1lc3NhZ2VUeXBlTWF4KTsKKyAgICAgICAgbV9jYWxsZWRTZW5kQXJy
YXlCdWZmZXJWaWV3ID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBDT05ORUNU
SU5HKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgaWYgKG1fc3RhdGUgPT0gQ0xPU0lORyB8fCBtX3N0YXRlID09IENM
T1NFRCkgeworICAgICAgICB1bnNpZ25lZCBwYXlsb2FkU2l6ZSA9IGFycmF5QnVmZmVyVmlldy0+
Ynl0ZUxlbmd0aCgpOworICAgICAgICBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZSA9IHNhdHVy
YXRlQWRkKG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlLCBwYXlsb2FkU2l6ZSk7CisgICAgICAg
IG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlID0gc2F0dXJhdGVBZGQobV9idWZmZXJlZEFtb3Vu
dEFmdGVyQ2xvc2UsIGdldEZyYW1pbmdPdmVyaGVhZChwYXlsb2FkU2l6ZSkpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEFTU0VSVChtX2NoYW5uZWwpOworICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIoYXJyYXlCdWZmZXJWaWV3LT5idWZmZXIoKSk7CisgICAg
cmV0dXJuIG1fY2hhbm5lbC0+c2VuZCgqYXJyYXlCdWZmZXIsIGFycmF5QnVmZmVyVmlldy0+Ynl0
ZU9mZnNldCgpLCBhcnJheUJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgoKSkgPT0gVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlNlbmRTdWNjZXNzOwogfQogCiBib29sIFdlYlNvY2tldDo6c2VuZChC
bG9iKiBiaW5hcnlEYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBMT0coTmV0d29yaywg
IldlYlNvY2tldCAlcCBzZW5kIGJsb2IgJXMiLCB0aGlzLCBiaW5hcnlEYXRhLT51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBBU1NFUlQoYmluYXJ5RGF0YSk7CisgICAgaWYgKCFt
X2NhbGxlZFNlbmRCbG9iKSB7CisgICAgICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVu
dW1lcmF0aW9uKGhpc3RvZ3JhbU5hbWVGb3JTZW5kTWVzc2FnZVR5cGUsIFdlYlNvY2tldFNlbmRC
bG9iLCBXZWJTb2NrZXRTZW5kTWVzc2FnZVR5cGVNYXgpOworICAgICAgICBtX2NhbGxlZFNlbmRC
bG9iID0gdHJ1ZTsKKyAgICB9CisKICAgICBpZiAobV9zdGF0ZSA9PSBDT05ORUNUSU5HKSB7CiAg
ICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCBjZmI2
MWZiNjBkOWYwMDU2NDJlYjRmM2RkNDE1MWE2NzFhZTIyZTg4Li5hNzUyMDExMWRlMWZiMjhiYTll
NzMwOTQ1YjE1Nzg0ZWViODVhZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5oCkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIHNl
bmQoQXJyYXlCdWZmZXIqLCBFeGNlcHRpb25Db2RlJik7CisgICAgYm9vbCBzZW5kKEFycmF5QnVm
ZmVyVmlldyosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIHNlbmQoQmxvYiosIEV4Y2VwdGlv
bkNvZGUmKTsKIAogICAgIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29u
LCBFeGNlcHRpb25Db2RlJik7CkBAIC0xMzcsNiArMTM4LDExIEBAIHByaXZhdGU6CiAgICAgQmlu
YXJ5VHlwZSBtX2JpbmFyeVR5cGU7CiAgICAgU3RyaW5nIG1fc3VicHJvdG9jb2w7CiAgICAgU3Ry
aW5nIG1fZXh0ZW5zaW9uczsKKworICAgIGJvb2wgbV9jYWxsZWRTZW5kU3RyaW5nOworICAgIGJv
b2wgbV9jYWxsZWRTZW5kQXJyYXlCdWZmZXI7CisgICAgYm9vbCBtX2NhbGxlZFNlbmRBcnJheUJ1
ZmZlclZpZXc7CisgICAgYm9vbCBtX2NhbGxlZFNlbmRCbG9iOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmlkbAppbmRleCA5MjgzNWFlNDM1YjU1ODc5MjM5YmYzYzQxYzM5NzI4MzAzZjJkZTcxLi43
OGJiZTc0YmQ1MGE2OWMyOWMzMThjNDhkZDc5ZmJiN2U1ZjMwMmQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbApAQCAtNjksOCArNjksMTMg
QEAgbW9kdWxlIHdlYnNvY2tldHMgewogICAgICAgICAvLyBib29sZWFucywgbnVsbCwgdW5kZWZp
bmVkIGFuZCBvYmplY3RzIGV4Y2VwdCBBcnJheUJ1ZmZlciBhbmQgQmxvYikuIEN1cnJlbnQgY29k
ZQogICAgICAgICAvLyBnZW5lcmF0b3IgZG9lcyBub3QgaGFuZGxlIHRoaXMgcnVsZSBjb3JyZWN0
bHkuCiAgICAgICAgIC8vIGJvb2xlYW4gc2VuZChpbiBBcnJheUJ1ZmZlciBkYXRhKSByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKKyAgICAgICAgLy8gYm9vbGVhbiBzZW5kKGluIEFycmF5QnVmZmVyVmll
dyBkYXRhKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgLy8gYm9vbGVhbiBzZW5kKGlu
IEJsb2IgZGF0YSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIC8vIGJvb2xlYW4gc2Vu
ZChpbiBET01TdHJpbmcgZGF0YSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIC8vCisg
ICAgICAgIC8vIFJlY2VudCBjaGFuZ2UgaW4gV2ViU29ja2V0IEFQSSBzcGVjaWZpY2F0aW9uIHJl
cGxhY2VkIHNlbmQoQXJyYXlCdWZmZXIpIHdpdGgKKyAgICAgICAgLy8gc2VuZChBcnJheUJ1ZmZl
clZpZXcpLiBGb3Igbm93LCB3ZSBzdGlsbCBhY2NlcHQgQXJyYXlCdWZmZXIgYnV0IHByaW50Cisg
ICAgICAgIC8vIGEgZGVwcmVjYXRpb24gd2FybmluZyB0byB0aGUgY29uc29sZSB3aGVuIHNlbmQo
QXJyYXlCdWZmZXIpIGlzIGNhbGxlZC4KICAgICAgICAgW0N1c3RvbV0gYm9vbGVhbiBzZW5kKGlu
IERPTVN0cmluZyBkYXRhKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IGFuZCBhcHBseSBbQ2xhbXBdIGF0dHJpYnV0ZSBpbnN0ZWFkIG9mIFtDdXN0
b21dLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwCmluZGV4IGZhZWFmZDJkNWU2ZmQ3ZDQxODZmMTZhMzJjYzUyNTk2NWY2
ZmUxNzEuLjg5NTM2NTBhM2M0Y2VlNmM4MjJiNDZlOTEyNDE4ZTdiYTFjOGM3ZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKQEAgLTE1MywxMCArMTUzLDEwIEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpT
ZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzCiAgICAg
cmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3VjY2VzczsKIH0KIAotVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2Vu
ZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSkKK1RocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgQXJyYXlCdWZmZXIm
IGJpbmFyeURhdGEsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiB7
Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQgYXJyYXlidWZmZXIg
JXAiLCB0aGlzLCAmYmluYXJ5RGF0YSk7Ci0gICAgZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZy
YW1lOjpPcENvZGVCaW5hcnksIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihiaW5hcnlEYXRhLmRh
dGEoKSksIGJpbmFyeURhdGEuYnl0ZUxlbmd0aCgpKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNv
Y2tldENoYW5uZWwgJXAgc2VuZCBhcnJheWJ1ZmZlciAlcCAldSAldSIsIHRoaXMsICZiaW5hcnlE
YXRhLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKTsKKyAgICBlbnF1ZXVlUmF3RnJhbWUoV2ViU29j
a2V0RnJhbWU6Ok9wQ29kZUJpbmFyeSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJpbmFyeURh
dGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwogICAgIHJldHVybiBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFN1Y2Nlc3M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDA5MDk1
YzE1YWFhYmI0Y2MxYmQ5OGI2ZjgyYjZmNGQwMmEzODEwYTguLjNkZGU2NDhlYzFmMDQ2ODBhZTkz
ZmJmOWQzMTAxNDA3MDEyMjZmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFN0cmluZyBleHRlbnNpb25zKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3Vs
dCBzZW5kKGNvbnN0IEFycmF5QnVmZmVyJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiwg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0
IEJsb2ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91
bnQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNv
bnN0IFN0cmluZyYgcmVhc29uKSBPVkVSUklERTsgLy8gU3RhcnQgY2xvc2luZyBoYW5kc2hha2Uu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCAyNTBjMDE5
NjFhZGQ4ZjI2YThlY2JkODcwNTg3ZDI0NTMxYzg5YzVlLi44MTNlNmU4OWU5YTQ4YzhhODQ2Y2E2
Yzc5OWQ4YzhhYTI5NzExY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5jcHAKQEAgLTkxLDExICs5MSwxMSBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
U2VuZFJlc3VsdCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjbwogICAg
IHJldHVybiBtX2JyaWRnZS0+c2VuZChtZXNzYWdlKTsKIH0KIAotVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OnNl
bmQoY29uc3QgQXJyYXlCdWZmZXImIGJpbmFyeURhdGEpCitUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChj
b25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBpZiAoIW1fYnJpZGdlKQogICAgICAgICByZXR1cm4gVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRGYWlsOwotICAgIHJldHVybiBtX2JyaWRnZS0+
c2VuZChiaW5hcnlEYXRhKTsKKyAgICByZXR1cm4gbV9icmlkZ2UtPnNlbmQoYmluYXJ5RGF0YSwg
Ynl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7CiB9CiAKIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpTZW5kUmVzdWx0IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0
IEJsb2ImIGJpbmFyeURhdGEpCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5
RGF0YSkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9tYWluV2ViU29j
a2V0Q2hhbm5lbCB8fCAhbV93b3JrZXJDbGllbnRXcmFwcGVyKQogICAgICAgICByZXR1cm47Ci0g
ICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZFJlcXVlc3RSZXN1
bHQgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5zZW5kKGJpbmFyeURhdGEpOworICAgIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmRSZXF1ZXN0UmVzdWx0ID0gbV9t
YWluV2ViU29ja2V0Q2hhbm5lbC0+c2VuZChiaW5hcnlEYXRhLCAwLCBiaW5hcnlEYXRhLmJ5dGVM
ZW5ndGgoKSk7CiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRl
eHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkU2VuZCwgbV93b3JrZXJDbGll
bnRXcmFwcGVyLCBzZW5kUmVxdWVzdFJlc3VsdCksIG1fdGFza01vZGUpOwogfQogCkBAIC00ODgs
MTQgKzQ4OCwxNCBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOgogICAgIHJldHVybiBjbGllbnRX
cmFwcGVyLT5zZW5kUmVxdWVzdFJlc3VsdCgpOwogfQogCi1UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdl
OjpzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiBiaW5hcnlEYXRhKQorVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJy
aWRnZTo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBpZiAoIW1fd29ya2VyQ2xpZW50V3Jh
cHBlciB8fCAhbV9wZWVyKQogICAgICAgICByZXR1cm4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlNlbmRGYWlsOwogICAgIC8vIEFycmF5QnVmZmVyIGlzbid0IHRocmVhZC1zYWZlLCBoZW5j
ZSB0aGUgY29udGVudCBvZiBBcnJheUJ1ZmZlciBpcyBjb3BpZWQgaW50byBWZWN0b3I8Y2hhcj4u
Ci0gICAgT3duUHRyPFZlY3RvcjxjaGFyPiA+IGRhdGEgPSBhZG9wdFB0cihuZXcgVmVjdG9yPGNo
YXI+KGJpbmFyeURhdGEuYnl0ZUxlbmd0aCgpKSk7CisgICAgT3duUHRyPFZlY3RvcjxjaGFyPiA+
IGRhdGEgPSBhZG9wdFB0cihuZXcgVmVjdG9yPGNoYXI+KGJ5dGVMZW5ndGgpKTsKICAgICBpZiAo
YmluYXJ5RGF0YS5ieXRlTGVuZ3RoKCkpCi0gICAgICAgIG1lbWNweShkYXRhLT5kYXRhKCksIGJp
bmFyeURhdGEuZGF0YSgpLCBiaW5hcnlEYXRhLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIG1lbWNw
eShkYXRhLT5kYXRhKCksIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihiaW5hcnlEYXRhLmRhdGEo
KSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKTsKICAgICBzZXRNZXRob2ROb3RDb21wbGV0ZWQo
KTsKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNr
KCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFNlbmRBcnJheUJ1
ZmZlciwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhtX3BlZXIpLCBkYXRhLnJlbGVhc2UoKSkpOwog
ICAgIFJlZlB0cjxCcmlkZ2U+IHByb3RlY3QodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oCmluZGV4IDQ3MmI5ODIwOWVmNGIwNzA1NmZhNjgwZmZiZTdlOTY5YTdl
NTMzNDIuLjJkYTVkYTM5NDg3ZGM1M2M5MGUzYWMxMzA1MzUxMjJkYjgyMWFkNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVz
dWx0IHNlbmQoY29uc3QgQXJyYXlCdWZmZXImKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQXJyYXlCdWZmZXIm
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29u
c3QgQmxvYiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFt
b3VudCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwg
Y29uc3QgU3RyaW5nJiByZWFzb24pIE9WRVJSSURFOwpAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwogICAgICAgICB2b2lkIGNvbm5lY3QoY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAgICAgICBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0g
ICAgICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3Qg
QXJyYXlCdWZmZXImKTsKKyAgICAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRS
ZXN1bHQgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgpOwogICAgICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2Vu
ZFJlc3VsdCBzZW5kKGNvbnN0IEJsb2ImKTsKICAgICAgICAgdW5zaWduZWQgbG9uZyBidWZmZXJl
ZEFtb3VudCgpOwogICAgICAgICB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJl
YXNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tl
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3Rv
bS5jcHAKaW5kZXggNDliODIyYTYyZDI4ZjA3ZTE2MjBlZWIxMDA0OWMzYzA2ZTUyYzgyYS4uN2Qz
MDQyYjI3YTJmYzg2M2NlYWM5MmQzNDFmMDhlZWYzNzk5YjA1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcApAQCAtMzcsNiArMzcsNyBA
QAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIu
aCIKKyNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIkpTQmxvYi5oIgog
I2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIktVUkwuaCIKQEAgLTEwMCw2
ICsxMDEsOCBAQCBKU1ZhbHVlIEpTV2ViU29ja2V0OjpzZW5kKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBib29sIHJlc3VsdDsKICAgICBpZiAobWVzc2FnZS5pbmhlcml0cygmSlNBcnJheUJ1ZmZlcjo6
c19pbmZvKSkKICAgICAgICAgcmVzdWx0ID0gaW1wbCgpLT5zZW5kKHRvQXJyYXlCdWZmZXIobWVz
c2FnZSksIGVjKTsKKyAgICBlbHNlIGlmIChtZXNzYWdlLmluaGVyaXRzKCZKU0FycmF5QnVmZmVy
Vmlldzo6c19pbmZvKSkKKyAgICAgICAgcmVzdWx0ID0gaW1wbCgpLT5zZW5kKHRvQXJyYXlCdWZm
ZXJWaWV3KG1lc3NhZ2UpLCBlYyk7CiAgICAgZWxzZSBpZiAobWVzc2FnZS5pbmhlcml0cygmSlNC
bG9iOjpzX2luZm8pKQogICAgICAgICByZXN1bHQgPSBpbXBsKCktPnNlbmQodG9CbG9iKG1lc3Nh
Z2UpLCBlYyk7CiAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcAppbmRleCBmMDEwOWM3ZTE0OWNiZTM1
MmZkMDUzMTkyZDMxNGZkN2QxNDc3ZWU3Li4xOTFkNTVlYTNjM2MzYzZjYmVlOGNhMWUyNjUzZGZi
Mjc0MmUzYjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhXZWJTb2NrZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVjhBcnJheUJ1ZmZlci5o
IgorI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
CiAjaW5jbHVkZSAiVjhCbG9iLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgpAQCAtMTI3LDYgKzEy
OCwxMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6OnNlbmRDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgICAgICBBcnJheUJ1ZmZlciogYXJyYXlCdWZm
ZXIgPSBWOEFycmF5QnVmZmVyOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KG1lc3NhZ2UpKTsKICAgICAgICAgQVNTRVJUKGFycmF5QnVmZmVyKTsKICAgICAgICAgcmVzdWx0
ID0gd2ViU29ja2V0LT5zZW5kKGFycmF5QnVmZmVyLCBlYyk7CisgICAgfSBlbHNlIGlmIChWOEFy
cmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UobWVzc2FnZSkpIHsKKyAgICAgICAgQXJyYXlCdWZm
ZXJWaWV3KiBhcnJheUJ1ZmZlclZpZXcgPSBWOEFycmF5QnVmZmVyVmlldzo6dG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChtZXNzYWdlKSk7CisgICAgICAgIEFTU0VSVChhcnJh
eUJ1ZmZlclZpZXcpOworICAgICAgICByZXN1bHQgPSB3ZWJTb2NrZXQtPnNlbmQoYXJyYXlCdWZm
ZXJWaWV3LCBlYyk7CiAgICAgfSBlbHNlIGlmIChWOEJsb2I6Okhhc0luc3RhbmNlKG1lc3NhZ2Up
KSB7CiAgICAgICAgIEJsb2IqIGJsb2IgPSBWOEJsb2I6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QobWVzc2FnZSkpOwogICAgICAgICBBU1NFUlQoYmxvYik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2NrZXRJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvY2tldEltcGwuY3BwCmluZGV4IDE3OTMwM2FkOWI0
ZGJkNzJhNTM0OWE2YzdmZjE1Y2Q5ZTcxZDUzYjEuLjc1NDhjNjMxNWExZjI4ODMzYzU5OTVlNzBh
ZjQwNDM5MTYyNDhmZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNvY2tldEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvY2tl
dEltcGwuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgYm9vbCBXZWJTb2NrZXRJbXBsOjpzZW5kVGV4
dChjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpCiBib29sIFdlYlNvY2tldEltcGw6OnNlbmRBcnJh
eUJ1ZmZlcihjb25zdCBXZWJBcnJheUJ1ZmZlciYgd2ViQXJyYXlCdWZmZXIpCiB7CiAjaWYgRU5B
QkxFKFdFQl9TT0NLRVRTKQotICAgIHJldHVybiBtX3ByaXZhdGUtPnNlbmQoKlBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+KHdlYkFycmF5QnVmZmVyKSkgPT0gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlNlbmRTdWNjZXNzOworICAgIHJldHVybiBtX3ByaXZhdGUtPnNlbmQoKlBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+KHdlYkFycmF5QnVmZmVyKSwgMCwgd2ViQXJyYXlCdWZmZXIuYnl0ZUxlbmd0
aCgpKSA9PSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFN1Y2Nlc3M7CiAjZWxzZQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzQ5YWNmNDk4NmY0MjZh
NGRjMDEzMzZlYTllNGQyYmE4OTllNWRlMi4uZWQwNzQ2OWYwMmY5ZDE2MTY3M2RjODdmZTZjOTdh
N2I2NGE5YjdjMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA3LTExICBZdXRhIEtpdGFt
dXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYlNvY2tldC5zZW5kKCkgc2hv
dWxkIGFjY2VwdCBBcnJheUJ1ZmZlclZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkwODc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVHdvIHRlc3RzIChib3RoIG5hbWVkIHNlbmQtYXJyYXlidWZmZXJ2
aWV3Lmh0bWwpIGFyZSBhZGRlZCB0byB0ZXN0IHdoZXRoZXIKKyAgICAgICAgV2ViU29ja2V0LnNl
bmQoQXJyYXlCdWZmZXJWaWV3KSB3b3JrcyBpbiB0aGUgbWFpbiB0aHJlYWQgYW5kIGluIGEgd29y
a2VyLiBTb21lIHRlc3QKKyAgICAgICAgcmVzdWx0cyBuZWVkIHRvIGJlIHVwZGF0ZWQgYmVjYXVz
ZSBhIGNhbGwgdG8gV2ViU29ja2V0LnNlbmQoQXJyYXlCdWZmZXIpIG5vdyBjYXVzZXMKKyAgICAg
ICAgYSBkZXByZWNhdGlvbiB3YXJuaW5nIGluIHRoZSBjb25zb2xlLgorCisgICAgICAgICogaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9i
dWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS1pbi1idXN5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNs
b3NlLWluLWJ1c3kuaHRtbDoKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIEFycmF5QnVmZmVyVmll
dywgd2hpY2ggaXMgcXVpdGUgc2ltaWxhciB0byBBcnJheUJ1ZmZlcidzLgorICAgICAgICAqIGh0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2Uu
aHRtbDogRGl0dG8uCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9z
ZW5kLWFycmF5YnVmZmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3NlbmQtYXJyYXlidWZmZXJ2aWV3LWV4cGVjdGVkLnR4dDogQ29waWVk
IGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWFy
cmF5YnVmZmVyLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3NlbmQtYXJyYXlidWZmZXJ2aWV3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvc2VuZC1hcnJh
eWJ1ZmZlcnZpZXcuanM6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5Ymkvd29ya2Vycy9zZW5kLWFycmF5YnVmZmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvc2VuZC1hcnJheWJ1ZmZl
cnZpZXctZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvc2VuZC1hcnJheWJ1ZmZlci1leHBlY3RlZC50eHQu
CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3NlbmQt
YXJyYXlidWZmZXJ2aWV3Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTA3LTExICBaYW4gRG9iZXJzZWsg
IDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsgZ2FyZGVu
aW5nLCBhZGRpbmcgYW4gaW1hZ2UgZXhwZWN0YXRpb24gZm9yIHRoZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1h
ZnRlci1jbG9zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLWV4cGVjdGVkLnR4dAppbmRl
eCAwNDRmZTBmOWI0ZTg1YzdiMzY5ZGEzMTNlNWMzNzVjMjdkNmMzNWUxLi5hNTQ5OWRmOTc5M2Ni
OWIwNGVhNDQ1ODdhZGIzMWU2NjQ5MGYyZTBmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDQg
QEAKK0NPTlNPTEUgTUVTU0FHRTogQXJyYXlCdWZmZXIgaXMgZGVwcmVjYXRlZCBpbiBXZWJTb2Nr
ZXQuc2VuZCgpLiBVc2UgQXJyYXlCdWZmZXJWaWV3IGluc3RlYWQuCiBXZWIgU29ja2V0IGJ1ZmZl
cmVkQW1vdW50IGFmdGVyIGNsb3NlZAogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCkBAIC0z
NCw2ICszNSwxOSBAQCBQQVNTIHdzLnNlbmQobWVzc2FnZVRvU2VuZCkgaXMgZmFsc2UKIFBBU1Mg
YnVmZmVyZWRBbW91bnREaWZmZXJlbmNlIGlzIDY1NTQzCiBQQVNTIHdzLnNlbmQobWVzc2FnZVRv
U2VuZCkgaXMgZmFsc2UKIFBBU1MgYnVmZmVyZWRBbW91bnREaWZmZXJlbmNlIGlzIDY1NTUwCitU
ZXN0aW5nIHNlbmQoQXJyYXlCdWZmZXJWaWV3KS4uLgorUEFTUyB3cy5zZW5kKG1lc3NhZ2VUb1Nl
bmQpIGlzIGZhbHNlCitQQVNTIGJ1ZmZlcmVkQW1vdW50RGlmZmVyZW5jZSBpcyA2CitQQVNTIHdz
LnNlbmQobWVzc2FnZVRvU2VuZCkgaXMgZmFsc2UKK1BBU1MgYnVmZmVyZWRBbW91bnREaWZmZXJl
bmNlIGlzIDcKK1BBU1Mgd3Muc2VuZChtZXNzYWdlVG9TZW5kKSBpcyBmYWxzZQorUEFTUyBidWZm
ZXJlZEFtb3VudERpZmZlcmVuY2UgaXMgMTMxCitQQVNTIHdzLnNlbmQobWVzc2FnZVRvU2VuZCkg
aXMgZmFsc2UKK1BBU1MgYnVmZmVyZWRBbW91bnREaWZmZXJlbmNlIGlzIDEzNAorUEFTUyB3cy5z
ZW5kKG1lc3NhZ2VUb1NlbmQpIGlzIGZhbHNlCitQQVNTIGJ1ZmZlcmVkQW1vdW50RGlmZmVyZW5j
ZSBpcyA2NTU0MworUEFTUyB3cy5zZW5kKG1lc3NhZ2VUb1NlbmQpIGlzIGZhbHNlCitQQVNTIGJ1
ZmZlcmVkQW1vdW50RGlmZmVyZW5jZSBpcyA2NTU1MAogVGVzdGluZyBzZW5kKEJsb2IpLi4uCiBQ
QVNTIHdzLnNlbmQobWVzc2FnZVRvU2VuZCkgaXMgZmFsc2UKIFBBU1MgYnVmZmVyZWRBbW91bnRE
aWZmZXJlbmNlIGlzIDYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UtaW4tYnVzeS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZl
cmVkQW1vdW50LWFmdGVyLWNsb3NlLWluLWJ1c3ktZXhwZWN0ZWQudHh0CmluZGV4IGM1NDc4MGM3
MGZiNDhjM2IyZGUwYTYyMDM4ZjE0ODgwNmUyMThlNDcuLmE5MjUwMjNiMzRiZDdkZjE1ZDYzMjgz
Y2FlZGJiODg3OGU4MzYyNGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UtaW4tYnVzeS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS1pbi1idXN5LWV4cGVjdGVkLnR4dApAQCAtMSwz
ICsxLDQgQEAKK0NPTlNPTEUgTUVTU0FHRTogQXJyYXlCdWZmZXIgaXMgZGVwcmVjYXRlZCBpbiBX
ZWJTb2NrZXQuc2VuZCgpLiBVc2UgQXJyYXlCdWZmZXJWaWV3IGluc3RlYWQuCiBXZWIgU29ja2V0
IGJ1ZmZlcmVkQW1vdW50IGFmdGVyIGNsb3NlZCBpbiBidXN5CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KQEAgLTM1LDYgKzM2LDE5IEBAIFBBU1Mgd3Muc2VuZChtZXNzYWdlVG9TZW5kKSBp
cyBmYWxzZQogUEFTUyBidWZmZXJlZEFtb3VudERpZmZlcmVuY2UgaXMgNjU1NDMKIFBBU1Mgd3Mu
c2VuZChtZXNzYWdlVG9TZW5kKSBpcyBmYWxzZQogUEFTUyBidWZmZXJlZEFtb3VudERpZmZlcmVu
Y2UgaXMgNjU1NTAKK1Rlc3Rpbmcgc2VuZChBcnJheUJ1ZmZlclZpZXcpLi4uCitQQVNTIHdzLnNl
bmQobWVzc2FnZVRvU2VuZCkgaXMgZmFsc2UKK1BBU1MgYnVmZmVyZWRBbW91bnREaWZmZXJlbmNl
IGlzIDYKK1BBU1Mgd3Muc2VuZChtZXNzYWdlVG9TZW5kKSBpcyBmYWxzZQorUEFTUyBidWZmZXJl
ZEFtb3VudERpZmZlcmVuY2UgaXMgNworUEFTUyB3cy5zZW5kKG1lc3NhZ2VUb1NlbmQpIGlzIGZh
bHNlCitQQVNTIGJ1ZmZlcmVkQW1vdW50RGlmZmVyZW5jZSBpcyAxMzEKK1BBU1Mgd3Muc2VuZCht
ZXNzYWdlVG9TZW5kKSBpcyBmYWxzZQorUEFTUyBidWZmZXJlZEFtb3VudERpZmZlcmVuY2UgaXMg
MTM0CitQQVNTIHdzLnNlbmQobWVzc2FnZVRvU2VuZCkgaXMgZmFsc2UKK1BBU1MgYnVmZmVyZWRB
bW91bnREaWZmZXJlbmNlIGlzIDY1NTQzCitQQVNTIHdzLnNlbmQobWVzc2FnZVRvU2VuZCkgaXMg
ZmFsc2UKK1BBU1MgYnVmZmVyZWRBbW91bnREaWZmZXJlbmNlIGlzIDY1NTUwCiBUZXN0aW5nIHNl
bmQoQmxvYikuLi4KIFBBU1Mgd3Muc2VuZChtZXNzYWdlVG9TZW5kKSBpcyBmYWxzZQogUEFTUyBi
dWZmZXJlZEFtb3VudERpZmZlcmVuY2UgaXMgNgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS1p
bi1idXN5Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLWluLWJ1c3kuaHRtbAppbmRleCBkNWY3NjIyYTZm
MjVlMGJjYjk3Y2I1NjQxY2I1ODAyNGQ5MmU2Mzc5Li41ZDFkNjI5M2M2ZTQyYTFjNzU5N2VmODc5
N2FjMzI4NTdiOWQ1NjY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLWluLWJ1c3kuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVk
QW1vdW50LWFmdGVyLWNsb3NlLWluLWJ1c3kuaHRtbApAQCAtNzEsNiArNzEsMTUgQEAgd3Mub25j
bG9zZSA9IGZ1bmN0aW9uKCkKICAgICB0ZXN0QnVmZmVyZWRBbW91bnQobmV3IEFycmF5QnVmZmVy
KDB4RkZGRiksIDB4RkZGRiArIGJhc2VPdmVyaGVhZCArIDIpOwogICAgIHRlc3RCdWZmZXJlZEFt
b3VudChuZXcgQXJyYXlCdWZmZXIoMHgxMDAwMCksIDB4MTAwMDAgKyBiYXNlT3ZlcmhlYWQgKyA4
KTsKIAorICAgIGRlYnVnKCJUZXN0aW5nIHNlbmQoQXJyYXlCdWZmZXJWaWV3KS4uLiIpOworICAg
IHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoMHgyMDAwMCk7CisgICAgdGVzdEJ1ZmZlcmVk
QW1vdW50KG5ldyBJbnQ4QXJyYXkoYnVmZmVyLCAxMjM0LCAwKSwgYmFzZU92ZXJoZWFkKTsKKyAg
ICB0ZXN0QnVmZmVyZWRBbW91bnQobmV3IEludDhBcnJheShidWZmZXIsIDEyMzQsIDEpLCAxICsg
YmFzZU92ZXJoZWFkKTsKKyAgICB0ZXN0QnVmZmVyZWRBbW91bnQobmV3IEludDhBcnJheShidWZm
ZXIsIDEyMzQsIDEyNSksIDEyNSArIGJhc2VPdmVyaGVhZCk7CisgICAgdGVzdEJ1ZmZlcmVkQW1v
dW50KG5ldyBJbnQ4QXJyYXkoYnVmZmVyLCAxMjM0LCAxMjYpLCAxMjYgKyBiYXNlT3ZlcmhlYWQg
KyAyKTsKKyAgICB0ZXN0QnVmZmVyZWRBbW91bnQobmV3IEludDhBcnJheShidWZmZXIsIDEyMzQs
IDB4RkZGRiksIDB4RkZGRiArIGJhc2VPdmVyaGVhZCArIDIpOworICAgIHRlc3RCdWZmZXJlZEFt
b3VudChuZXcgSW50OEFycmF5KGJ1ZmZlciwgMTIzNCwgMHgxMDAwMCksIDB4MTAwMDAgKyBiYXNl
T3ZlcmhlYWQgKyA4KTsKKwogICAgIGRlYnVnKCJUZXN0aW5nIHNlbmQoQmxvYikuLi4iKTsKICAg
ICB0ZXN0QnVmZmVyZWRBbW91bnQoY3JlYXRlQmxvYldpdGhMZW5ndGgoMCksIGJhc2VPdmVyaGVh
ZCk7CiAgICAgdGVzdEJ1ZmZlcmVkQW1vdW50KGNyZWF0ZUJsb2JXaXRoTGVuZ3RoKDEpLCAxICsg
YmFzZU92ZXJoZWFkKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXIt
Y2xvc2UuaHRtbAppbmRleCBlNTdhNGNhMDkwZjdmMmY5M2VmZGY0NjljNmQ4MmUyYjk2MjUzYWMx
Li42MzQ3MjBjNTVkZGJhMmEwZTRhZGMyMzVlOWEzN2EzZDhlYzkwMWVkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50
LWFmdGVyLWNsb3NlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS5odG1sCkBAIC01Niw2ICs1Niwx
NSBAQCB3cy5vbmNsb3NlID0gZnVuY3Rpb24oKQogICAgIHRlc3RCdWZmZXJlZEFtb3VudChuZXcg
QXJyYXlCdWZmZXIoMHhGRkZGKSwgMHhGRkZGICsgYmFzZU92ZXJoZWFkICsgMik7CiAgICAgdGVz
dEJ1ZmZlcmVkQW1vdW50KG5ldyBBcnJheUJ1ZmZlcigweDEwMDAwKSwgMHgxMDAwMCArIGJhc2VP
dmVyaGVhZCArIDgpOwogCisgICAgZGVidWcoIlRlc3Rpbmcgc2VuZChBcnJheUJ1ZmZlclZpZXcp
Li4uIik7CisgICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigweDIwMDAwKTsKKyAgICB0
ZXN0QnVmZmVyZWRBbW91bnQobmV3IEludDhBcnJheShidWZmZXIsIDEyMzQsIDApLCBiYXNlT3Zl
cmhlYWQpOworICAgIHRlc3RCdWZmZXJlZEFtb3VudChuZXcgSW50OEFycmF5KGJ1ZmZlciwgMTIz
NCwgMSksIDEgKyBiYXNlT3ZlcmhlYWQpOworICAgIHRlc3RCdWZmZXJlZEFtb3VudChuZXcgSW50
OEFycmF5KGJ1ZmZlciwgMTIzNCwgMTI1KSwgMTI1ICsgYmFzZU92ZXJoZWFkKTsKKyAgICB0ZXN0
QnVmZmVyZWRBbW91bnQobmV3IEludDhBcnJheShidWZmZXIsIDEyMzQsIDEyNiksIDEyNiArIGJh
c2VPdmVyaGVhZCArIDIpOworICAgIHRlc3RCdWZmZXJlZEFtb3VudChuZXcgSW50OEFycmF5KGJ1
ZmZlciwgMTIzNCwgMHhGRkZGKSwgMHhGRkZGICsgYmFzZU92ZXJoZWFkICsgMik7CisgICAgdGVz
dEJ1ZmZlcmVkQW1vdW50KG5ldyBJbnQ4QXJyYXkoYnVmZmVyLCAxMjM0LCAweDEwMDAwKSwgMHgx
MDAwMCArIGJhc2VPdmVyaGVhZCArIDgpOworCiAgICAgZGVidWcoIlRlc3Rpbmcgc2VuZChCbG9i
KS4uLiIpOwogICAgIHRlc3RCdWZmZXJlZEFtb3VudChjcmVhdGVCbG9iV2l0aExlbmd0aCgwKSwg
YmFzZU92ZXJoZWFkKTsKICAgICB0ZXN0QnVmZmVyZWRBbW91bnQoY3JlYXRlQmxvYldpdGhMZW5n
dGgoMSksIDEgKyBiYXNlT3ZlcmhlYWQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWFycmF5YnVmZmVyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1hcnJheWJ1
ZmZlci1leHBlY3RlZC50eHQKaW5kZXggODUwYzUyZTNiMTc1MzUwOTUxNGY5MTQ5NzY2YjM3YmQ5
YmQ2MTcyYi4uMzk2ZGUzNTBjODA2ODg0NjY3OGRhYTRhZDBhMDFlMDU4MTU2YTg2YSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWFy
cmF5YnVmZmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3NlbmQtYXJyYXlidWZmZXItZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEs
NCBAQAorQ09OU09MRSBNRVNTQUdFOiBBcnJheUJ1ZmZlciBpcyBkZXByZWNhdGVkIGluIFdlYlNv
Y2tldC5zZW5kKCkuIFVzZSBBcnJheUJ1ZmZlclZpZXcgaW5zdGVhZC4KIFdlYlNvY2tldDogU2Vu
ZCBBcnJheUJ1ZmZlcnMuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1hcnJheWJ1
ZmZlcnZpZXctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9zZW5kLWFycmF5YnVmZmVydmlldy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTkzOWVhZTlkZjkwZjEyNTg1ODQ0OGMwMGUyNzkwN2QwMjczM2RhMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1hcnJh
eWJ1ZmZlcnZpZXctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1dlYlNvY2tldDogU2Vu
ZCBBcnJheUJ1ZmZlclZpZXdzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mg
UEFTUzogTWVzc2FnZSAjMC4KK1BBU1MgUEFTUzogTWVzc2FnZSAjMS4KK1BBU1MgUEFTUzogTWVz
c2FnZSAjMi4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWFycmF5YnVmZmVydmll
dy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5k
LWFycmF5YnVmZmVydmlldy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5NmRmYmFkNGI1YmZhNmJjOTQ3NDk4
OWU5Y2VjOTA4N2MzMWQxZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYXJyYXlidWZmZXJ2aWV3Lmh0bWwKQEAgLTAs
MCArMSw3MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlw
dGlvbigiV2ViU29ja2V0OiBTZW5kIEFycmF5QnVmZmVyVmlld3MuIik7CisKK3dpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gc3RhcnRzV2l0aCh0YXJnZXQsIHByZWZpeCkK
K3sKKyAgICByZXR1cm4gdGFyZ2V0LmluZGV4T2YocHJlZml4KSA9PT0gMDsKK30KKworZnVuY3Rp
b24gY3JlYXRlQXJyYXlCdWZmZXJWaWV3Q29udGFpbmluZ0hlbGxvV29ybGQoKQoreworICAgIHZh
ciBoZWxsbyA9ICJIZWxsbywgd29ybGQhIjsKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJh
eShoZWxsby5sZW5ndGgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGVsbG8ubGVuZ3RoOyAr
K2kpCisgICAgICAgIGFycmF5W2ldID0gaGVsbG8uY2hhckNvZGVBdChpKTsKKyAgICByZXR1cm4g
YXJyYXk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUVtcHR5QXJyYXlCdWZmZXJWaWV3KCkKK3sKKyAg
ICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFycmF5QnVm
ZmVyVmlld0NvbnRhaW5pbmdBbGxEaXN0aW5jdEJ5dGVzKCkKK3sKKyAgICAvLyBSZXR1cm4gYSBz
bGljZSBvZiBBcnJheUJ1ZmZlci4KKyAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDEw
MDApOworICAgIHZhciBhcnJheSA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlciwgMTIzLCAyNTYpOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpCisgICAgICAgIGFycmF5W2ldID0gaTsK
KyAgICByZXR1cm4gYXJyYXk7Cit9CisKK3ZhciB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93
ZWJzb2NrZXQvdGVzdHMvaHliaS9jaGVjay1iaW5hcnktbWVzc2FnZXMiOwordmFyIHdzID0gbmV3
IFdlYlNvY2tldCh1cmwpOwordmFyIGNsb3NlRXZlbnQ7CisKK3dzLm9ub3BlbiA9IGZ1bmN0aW9u
KCkKK3sKKyAgICB3cy5zZW5kKGNyZWF0ZUFycmF5QnVmZmVyVmlld0NvbnRhaW5pbmdIZWxsb1dv
cmxkKCkpOworICAgIHdzLnNlbmQoY3JlYXRlRW1wdHlBcnJheUJ1ZmZlclZpZXcoKSk7CisgICAg
d3Muc2VuZChjcmVhdGVBcnJheUJ1ZmZlclZpZXdDb250YWluaW5nQWxsRGlzdGluY3RCeXRlcygp
KTsKK307CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHZhciBtZXNz
YWdlID0gZXZlbnQuZGF0YTsKKyAgICBpZiAoc3RhcnRzV2l0aChtZXNzYWdlLCAiUEFTUyIpKQor
ICAgICAgICB0ZXN0UGFzc2VkKG1lc3NhZ2UpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxl
ZChtZXNzYWdlKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBj
bG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVUcnVlKCJjbG9zZUV2ZW50Lndhc0NsZWFu
Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9zZW5kLWFycmF5YnVmZmVydmlldy5q
cyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9y
ZXNvdXJjZXMvc2VuZC1hcnJheWJ1ZmZlcnZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Y0ODI3MmViODU3
YTYzMDAyYzkxZWExY2MzNjZkOGEwOWEyMGVmNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvc2Vu
ZC1hcnJheWJ1ZmZlcnZpZXcuanMKQEAgLTAsMCArMSw0NyBAQAorZnVuY3Rpb24gY3JlYXRlQXJy
YXlCdWZmZXJWaWV3Q29udGFpbmluZ0hlbGxvV29ybGQoKQoreworICAgIHZhciBoZWxsbyA9ICJI
ZWxsbywgd29ybGQhIjsKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShoZWxsby5sZW5n
dGgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGVsbG8ubGVuZ3RoOyArK2kpCisgICAgICAg
IGFycmF5W2ldID0gaGVsbG8uY2hhckNvZGVBdChpKTsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisK
K2Z1bmN0aW9uIGNyZWF0ZUVtcHR5QXJyYXlCdWZmZXJWaWV3KCkKK3sKKyAgICByZXR1cm4gbmV3
IFVpbnQ4QXJyYXkoMCk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFycmF5QnVmZmVyVmlld0NvbnRh
aW5pbmdBbGxEaXN0aW5jdEJ5dGVzKCkKK3sKKyAgICAvLyBSZXR1cm4gYSBzbGljZSBvZiBBcnJh
eUJ1ZmZlci4KKyAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDEwMDApOworICAgIHZh
ciBhcnJheSA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlciwgMTIzLCAyNTYpOworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMjU2OyArK2kpCisgICAgICAgIGFycmF5W2ldID0gaTsKKyAgICByZXR1cm4g
YXJyYXk7Cit9CisKK3ZhciB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVz
dHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jaGVjay1iaW5hcnktbWVzc2FnZXMiOwordmFyIHdz
ID0gbmV3IFdlYlNvY2tldCh1cmwpOworCit3cy5vbm9wZW4gPSBmdW5jdGlvbigpCit7CisgICAg
d3Muc2VuZChjcmVhdGVBcnJheUJ1ZmZlclZpZXdDb250YWluaW5nSGVsbG9Xb3JsZCgpKTsKKyAg
ICB3cy5zZW5kKGNyZWF0ZUVtcHR5QXJyYXlCdWZmZXJWaWV3KCkpOworICAgIHdzLnNlbmQoY3Jl
YXRlQXJyYXlCdWZmZXJWaWV3Q29udGFpbmluZ0FsbERpc3RpbmN0Qnl0ZXMoKSk7Cit9OworCit3
cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBwb3N0TWVzc2FnZShldmVudC5k
YXRhKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihjbG9zZUV2ZW50KQoreworICAgIGlm
IChjbG9zZUV2ZW50Lndhc0NsZWFuID09PSB0cnVlKQorICAgICAgICBwb3N0TWVzc2FnZSgiUEFT
UzogY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlLiIpOworICAgIGVsc2UKKyAgICAgICAgcG9z
dE1lc3NhZ2UoIkZBSUw6IGNsb3NlRXZlbnQud2FzQ2xlYW4gc2hvdWxkIGJlIHRydWUsIGJ1dCB3
YXM6ICIgKyBjbG9zZUV2ZW50Lndhc0NsZWFuKTsKKyAgICBwb3N0TWVzc2FnZSgiRE9ORSIpOwor
fTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
Ymkvd29ya2Vycy9zZW5kLWFycmF5YnVmZmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9zZW5kLWFycmF5YnVmZmVyLWV4
cGVjdGVkLnR4dAppbmRleCA1Y2I0OTljMzJkOGM2MGE5MTNkMzUzZGI4Yzk5YzM4YWM5ODY5MGVh
Li5jYjA4MWFlYjhhZmJiYzYyOWZiZjY2YzQ5MmMwNjQzNjkwM2Y3ZjU5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvc2VuZC1h
cnJheWJ1ZmZlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3NlbmQtYXJyYXlidWZmZXItZXhwZWN0ZWQudHh0CkBA
IC0xLDMgKzEsNCBAQAorQ09OU09MRSBNRVNTQUdFOiBBcnJheUJ1ZmZlciBpcyBkZXByZWNhdGVk
IGluIFdlYlNvY2tldC5zZW5kKCkuIFVzZSBBcnJheUJ1ZmZlclZpZXcgaW5zdGVhZC4KIFdlYlNv
Y2tldDogU2VuZCBBcnJheUJ1ZmZlcnMgaW4gV2ViIFdvcmtlcnMuCiAKIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5Ymkvd29ya2Vycy9zZW5kLWFycmF5YnVmZmVydmlldy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvc2VuZC1h
cnJheWJ1ZmZlcnZpZXctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlMjY0NTU3MmNiYzI5YTlk
ODExNGVmNmMwN2IxMGVlYWJmODQ4NWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvc2VuZC1hcnJheWJ1ZmZlcnZp
ZXctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1dlYlNvY2tldDogU2VuZCBBcnJheUJ1
ZmZlclZpZXdzIGluIFdlYiBXb3JrZXJzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
K1BBU1MgUEFTUzogTWVzc2FnZSAjMC4KK1BBU1MgUEFTUzogTWVzc2FnZSAjMS4KK1BBU1MgUEFT
UzogTWVzc2FnZSAjMi4KK1BBU1MgUEFTUzogY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlLgor
RE9ORQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
d29ya2Vycy9zZW5kLWFycmF5YnVmZmVydmlldy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3NlbmQtYXJyYXlidWZmZXJ2aWV3Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWY1MGE0MzIyYmI2ZTYzMDE3NmJkZWNkNDhhZTdjYmUyNjA1NmQ0ZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
Ymkvd29ya2Vycy9zZW5kLWFycmF5YnVmZmVydmlldy5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8u
Li9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oIldlYlNv
Y2tldDogU2VuZCBBcnJheUJ1ZmZlclZpZXdzIGluIFdlYiBXb3JrZXJzLiIpOworCit3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIHN0YXJ0c1dpdGgoc3RyLCBwcmVmaXgp
Cit7CisgICAgcmV0dXJuIHN0ci5pbmRleE9mKHByZWZpeCkgPT0gMDsKK30KKwordmFyIHdvcmtl
ciA9IG5ldyBXb3JrZXIoInJlc291cmNlcy9zZW5kLWFycmF5YnVmZmVydmlldy5qcyIpOword29y
a2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkKK3sKKyAgICB2YXIgbWVzc2FnZSA9IGV2
ZW50LmRhdGE7CisgICAgaWYgKHN0YXJ0c1dpdGgobWVzc2FnZSwgIlBBU1MiKSkKKyAgICAgICAg
dGVzdFBhc3NlZChtZXNzYWdlKTsKKyAgICBlbHNlIGlmIChzdGFydHNXaXRoKG1lc3NhZ2UsICJG
QUlMIikpCisgICAgICAgIHRlc3RGYWlsZWQobWVzc2FnZSkKKyAgICBlbHNlCisgICAgICAgIGRl
YnVnKG1lc3NhZ2UpOworICAgIGlmIChtZXNzYWdlID09PSAiRE9ORSIpCisgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworfTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4v
anMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156830</attachid>
            <date>2012-08-06 19:16:40 -0700</date>
            <delta_ts>2012-08-06 21:06:32 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-90877-20120807111616.patch</filename>
            <type>text/plain</type>
            <size>24799</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmNTM1ZWIyYTkyOWMw
ZGRjMjk3M2YxYzliOTJjNTAxMmU2ODhjYy4uN2RmODc4OWI2MDUzMzgwYTc4MjA0NmUwZGE5YzEx
NzJhNzFiZTcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTA4LTA2ICBZdXRh
IEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYlNvY2tldC5zZW5k
KCkgc2hvdWxkIGFjY2VwdCBBcnJheUJ1ZmZlclZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwODc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjZXB0IEFycmF5QnVmZmVyVmlldyBhcyBhbiBhcmd1
bWVudCBvZiBXZWJTb2NrZXQuc2VuZCgpIHRvIGNvbXBseSB3aXRoIHJlY2VudCBjaGFuZ2UKKyAg
ICAgICAgaW4gc3BlY2lmaWNhdGlvbjogPGh0dHA6Ly9odG1sNS5vcmcvdG9vbHMvd2ViLWFwcHMt
dHJhY2tlcj9mcm9tPTcwODQmdG89NzA4NT4uCisKKyAgICAgICAgT25jZSBXZWJTb2NrZXQuc2Vu
ZChBcnJheUJ1ZmZlcikgd2FzIHJlbW92ZWQgZnJvbSB0aGUgc3BlY2lmaWNhdGlvbiwgYnV0IGFk
ZGVkIGJhY2sKKyAgICAgICAgaW4gPGh0dHA6Ly9odG1sNS5vcmcvdG9vbHMvd2ViLWFwcHMtdHJh
Y2tlcj9mcm9tPTcyMDImdG89NzIwMz4uIFRodXMgdGhlIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAg
b2Ygc2VuZChBcnJheUJ1ZmZlcikgaXMga2VwdCBhcy1pcy4KKworICAgICAgICBUZXN0czogaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWFycmF5YnVmZmVydmlldy5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvc2Vu
ZC1hcnJheWJ1ZmZlcnZpZXcuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgIENoYW5nZSB0aGUgc2lnbmF0dXJl
IG9mIHNlbmQoKSB0byByZWNlaXZlIG9mZnNldCBhbmQgbGVuZ3RoIHNvIHRoZSBjbGllbnRzIGNh
biBzZW5kCisgICAgICAgIHN1YnJhbmdlIG9mIGFuIEFycmF5QnVmZmVyLgorICAgICAgICAqIE1v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjpzZW5kKToKKyAgICAgICAgV2ViU29ja2V0LnNlbmQoQXJyYXlCdWZmZXJWaWV3KSBpcyBh
ZGRlZCwgd2hpY2ggcHV0cyB0aGUgc3ViIHJlZ2lvbiBvZiB0aGUgZ2l2ZW4KKyAgICAgICAgQXJy
YXlCdWZmZXIgaW50byB0aGUgb3V0Z29pbmcgZnJhbWUgcXVldWUuCisgICAgICAgICogTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgIChX
ZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c2VuZCk6CisgICAg
ICAgIFNlbmQgb25seSBuZWNlc3NhcnkgcGFydCBvZiBkYXRhIHRvIHRoZSBtYWluIHRocmVhZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuaDoKKyAgICAgICAgKFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKToKKyAg
ICAgICAgKEJyaWRnZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJTb2NrZXQ6OnNlbmQpOiBBY2NlcHQgQXJyYXlC
dWZmZXJWaWV3IGluIHNlbmQoKS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJT
b2NrZXRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJTb2NrZXQ6OnNlbmRDYWxs
YmFjayk6IERpdHRvLgorCiAyMDEyLTA4LTA2ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNv
bT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMx
OTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZWVkYzAyMjM4ZDNiNzRiYjdjMDFlNzVk
NzViOWQxNzc5OWQ0MTk4OC4uNzk3ODhiYzM0OWM3YzcyNzA3MTM5Y2MxZmUzNGY3N2QzMGQ1NWJi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOC0w
NiAgWXV0YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWJTb2Nr
ZXQuc2VuZCgpIHNob3VsZCBhY2NlcHQgQXJyYXlCdWZmZXJWaWV3CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDg3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYlNvY2tldEltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRJbXBsOjpzZW5kQXJyYXlCdWZmZXIpOgorICAgICAg
ICBBcHBseSBjaGFuZ2UgaW4gZnVuY3Rpb24gc2lnbmF0dXJlIG9mIFdlYlNvY2tldENoYW5uZWw6
OnNlbmQoKS4KKwogMjAxMi0wOC0wNiAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29t
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gUkVHUkVTU0lPTihyMTI0NzE0KTogd2Via2l0X3VuaXRf
dGVzdHMgYXNzZXJ0cyBpbiBEZWJ1ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCA3
MmJkYzg3OGY5MDY4ZjAxOWM2MjUyY2Q4NWVkNTRjNjZiYjEzZDY4Li4xOGQ5OWE5ZjBhYWYwMmQ1
ZTk0ZjVkNWU4ZWE0ZTgzZjUzMjg0YmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApA
QCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2wo
KSA9IDA7IC8vIFdpbGwgYmUgYXZhaWxhYmxlIGFmdGVyIGRpZENvbm5lY3QoKSBjYWxsYmFjayBp
cyBpbnZva2VkLgogICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSA9IDA7IC8vIFdpbGwg
YmUgYXZhaWxhYmxlIGFmdGVyIGRpZENvbm5lY3QoKSBjYWxsYmFjayBpcyBpbnZva2VkLgogICAg
IHZpcnR1YWwgU2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwotICAg
IHZpcnR1YWwgU2VuZFJlc3VsdCBzZW5kKGNvbnN0IEFycmF5QnVmZmVyJikgPSAwOworICAgIHZp
cnR1YWwgU2VuZFJlc3VsdCBzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgU2VuZFJlc3VsdCBz
ZW5kKGNvbnN0IEJsb2ImKSA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVk
QW1vdW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29u
c3QgU3RyaW5nJiByZWFzb24pID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggYzYyYjY1NWExOWFlNGMyMDcxZGEyMzFhMGRiMWY2
YmQwODg4MDY4MC4uMjkwNjhiNjMzMzM2ZDcwNmRiNDNlOGQyZmNlOGIxYjdiNzVhY2UwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAg
LTUxLDYgKzUxLDggQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5o
IgorI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZl
clZpZXcuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtMjg5LDcgKzI5MSwyNiBAQCBib29s
IFdlYlNvY2tldDo6c2VuZChBcnJheUJ1ZmZlciogYmluYXJ5RGF0YSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgQVNTRVJUKG1fY2hhbm5lbCk7
Ci0gICAgcmV0dXJuIG1fY2hhbm5lbC0+c2VuZCgqYmluYXJ5RGF0YSkgPT0gVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlNlbmRTdWNjZXNzOworICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQo
KmJpbmFyeURhdGEsIDAsIGJpbmFyeURhdGEtPmJ5dGVMZW5ndGgoKSkgPT0gVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlNlbmRTdWNjZXNzOworfQorCitib29sIFdlYlNvY2tldDo6c2VuZChB
cnJheUJ1ZmZlclZpZXcqIGFycmF5QnVmZmVyVmlldywgRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisg
ICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgc2VuZCBhcnJheWJ1ZmZlcnZpZXcgJXAiLCB0
aGlzLCBhcnJheUJ1ZmZlclZpZXcpOworICAgIEFTU0VSVChhcnJheUJ1ZmZlclZpZXcpOworICAg
IGlmIChtX3N0YXRlID09IENPTk5FQ1RJTkcpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAobV9zdGF0ZSA9PSBD
TE9TSU5HIHx8IG1fc3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIHVuc2lnbmVkIHBheWxvYWRT
aXplID0gYXJyYXlCdWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCk7CisgICAgICAgIG1fYnVmZmVyZWRB
bW91bnRBZnRlckNsb3NlID0gc2F0dXJhdGVBZGQobV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2Us
IHBheWxvYWRTaXplKTsKKyAgICAgICAgbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UgPSBzYXR1
cmF0ZUFkZChtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZSwgZ2V0RnJhbWluZ092ZXJoZWFkKHBh
eWxvYWRTaXplKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgQVNTRVJUKG1f
Y2hhbm5lbCk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlcihhcnJheUJ1ZmZl
clZpZXctPmJ1ZmZlcigpKTsKKyAgICByZXR1cm4gbV9jaGFubmVsLT5zZW5kKCphcnJheUJ1ZmZl
ciwgYXJyYXlCdWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGFycmF5QnVmZmVyVmlldy0+Ynl0ZUxl
bmd0aCgpKSA9PSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFN1Y2Nlc3M7CiB9CiAK
IGJvb2wgV2ViU29ja2V0OjpzZW5kKEJsb2IqIGJpbmFyeURhdGEsIEV4Y2VwdGlvbkNvZGUmIGVj
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4
IDY4MTg3MzIzZjg0NDA0Njg2OTI2MGZlNTAyOWNlYWY1OGY5MDQ2MGIuLjU2OThlNmY1ZDgxYWZm
OTg4N2QyYzdhZDFlMjU5ODg1NzliOTNiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJv
b2wgc2VuZChBcnJheUJ1ZmZlciosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBib29sIHNlbmQoQXJy
YXlCdWZmZXJWaWV3KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJvb2wgc2VuZChCbG9iKiwgRXhj
ZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiBy
ZWFzb24sIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5pZGwKaW5kZXggYjNiYjFjZjY2YjE1ZDY5MzIyNmY5MDFkYTVjYTE0
NGQ1ZTJmZDc4YS4uZTYxMjZmYzcxNjcxZGJkNjQ4YjQ1ZDYzYTBjNzA0MmJkYzQzNmZlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKQEAg
LTY5LDYgKzY5LDcgQEAgbW9kdWxlIHdlYnNvY2tldHMgewogICAgICAgICAvLyBib29sZWFucywg
bnVsbCwgdW5kZWZpbmVkIGFuZCBvYmplY3RzIGV4Y2VwdCBBcnJheUJ1ZmZlciBhbmQgQmxvYiku
IEN1cnJlbnQgY29kZQogICAgICAgICAvLyBnZW5lcmF0b3IgZG9lcyBub3QgaGFuZGxlIHRoaXMg
cnVsZSBjb3JyZWN0bHkuCiAgICAgICAgIC8vIGJvb2xlYW4gc2VuZChpbiBBcnJheUJ1ZmZlciBk
YXRhKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgLy8gYm9vbGVhbiBzZW5kKGluIEFy
cmF5QnVmZmVyVmlldyBkYXRhKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgLy8gYm9v
bGVhbiBzZW5kKGluIEJsb2IgZGF0YSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIC8v
IGJvb2xlYW4gc2VuZChpbiBET01TdHJpbmcgZGF0YSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAg
ICAgICAgIFtDdXN0b21dIGJvb2xlYW4gc2VuZChpbiBET01TdHJpbmcgZGF0YSkgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggZmFlYWZkMmQ1ZTZmZDdkNDE4NmYxNmEzMmNj
NTI1OTY1ZjZmZTE3MS4uODk1MzY1MGEzYzRjZWU2YzgyMmI0NmU5MTI0MThlN2JhMWM4YzdkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcApAQCAtMTUzLDEwICsxNTMsMTAgQEAgVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1l
c3MKICAgICByZXR1cm4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRTdWNjZXNzOwog
fQogCi1UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFu
bmVsOjpzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiBiaW5hcnlEYXRhKQorVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBBcnJh
eUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxl
bmd0aCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCBhcnJh
eWJ1ZmZlciAlcCIsIHRoaXMsICZiaW5hcnlEYXRhKTsKLSAgICBlbnF1ZXVlUmF3RnJhbWUoV2Vi
U29ja2V0RnJhbWU6Ok9wQ29kZUJpbmFyeSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJpbmFy
eURhdGEuZGF0YSgpKSwgYmluYXJ5RGF0YS5ieXRlTGVuZ3RoKCkpOworICAgIExPRyhOZXR3b3Jr
LCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kIGFycmF5YnVmZmVyICVwICV1ICV1IiwgdGhpcywg
JmJpbmFyeURhdGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOworICAgIGVucXVldWVSYXdGcmFt
ZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQmluYXJ5LCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
YmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJu
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3VjY2VzczsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5k
ZXggMDkwOTVjMTVhYWFiYjRjYzFiZDk4YjZmODJiNmY0ZDAyYTM4MTBhOC4uM2RkZTY0OGVjMWYw
NDY4MGFlOTNmYmY5ZDMxMDE0MDcwMTIyNmY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC03Miw3ICs3Miw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpT
ZW5kUmVzdWx0IHNlbmQoY29uc3QgQXJyYXlCdWZmZXImKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQXJyYXlC
dWZmZXImLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNl
bmQoY29uc3QgQmxvYiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZm
ZXJlZEFtb3VudCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQg
Y29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pIE9WRVJSSURFOyAvLyBTdGFydCBjbG9zaW5nIGhh
bmRzaGFrZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4
IDI1MGMwMTk2MWFkZDhmMjZhOGVjYmQ4NzA1ODdkMjQ1MzFjODljNWUuLjgxM2U2ZTg5ZTlhNDhj
OGE4NDZjYTZjNzk5ZDhjOGFhMjk3MTFjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmNwcApAQCAtOTEsMTEgKzkxLDExIEBAIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpzZW5k
KGNvCiAgICAgcmV0dXJuIG1fYnJpZGdlLT5zZW5kKG1lc3NhZ2UpOwogfQogCi1UaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSkKK1RocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiBiaW5hcnlEYXRhLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQogewogICAgIGlmICghbV9icmlkZ2UpCiAgICAgICAgIHJl
dHVybiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZEZhaWw7Ci0gICAgcmV0dXJuIG1f
YnJpZGdlLT5zZW5kKGJpbmFyeURhdGEpOworICAgIHJldHVybiBtX2JyaWRnZS0+c2VuZChiaW5h
cnlEYXRhLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKTsKIH0KIAogVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OnNl
bmQoY29uc3QgQmxvYiYgYmluYXJ5RGF0YSkKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpzZW5kKGNvbnN0IEFycmF5QnVmZmVy
JiBiaW5hcnlEYXRhKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFtX21h
aW5XZWJTb2NrZXRDaGFubmVsIHx8ICFtX3dvcmtlckNsaWVudFdyYXBwZXIpCiAgICAgICAgIHJl
dHVybjsKLSAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kUmVx
dWVzdFJlc3VsdCA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnNlbmQoYmluYXJ5RGF0YSk7Cisg
ICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZFJlcXVlc3RSZXN1
bHQgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5zZW5kKGJpbmFyeURhdGEsIDAsIGJpbmFyeURh
dGEuYnl0ZUxlbmd0aCgpKTsKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRTZW5kLCBtX3dv
cmtlckNsaWVudFdyYXBwZXIsIHNlbmRSZXF1ZXN0UmVzdWx0KSwgbV90YXNrTW9kZSk7CiB9CiAK
QEAgLTQ4OCwxNCArNDg4LDE0IEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVz
dWx0IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6CiAgICAgcmV0dXJu
IGNsaWVudFdyYXBwZXItPnNlbmRSZXF1ZXN0UmVzdWx0KCk7CiB9CiAKLVRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpCcmlkZ2U6OnNlbmQoY29uc3QgQXJyYXlCdWZmZXImIGJpbmFyeURhdGEpCitUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6QnJpZGdlOjpzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiBiaW5hcnlEYXRhLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQogewogICAgIGlmICghbV93b3JrZXJD
bGllbnRXcmFwcGVyIHx8ICFtX3BlZXIpCiAgICAgICAgIHJldHVybiBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6U2VuZEZhaWw7CiAgICAgLy8gQXJyYXlCdWZmZXIgaXNuJ3QgdGhyZWFkLXNh
ZmUsIGhlbmNlIHRoZSBjb250ZW50IG9mIEFycmF5QnVmZmVyIGlzIGNvcGllZCBpbnRvIFZlY3Rv
cjxjaGFyPi4KLSAgICBPd25QdHI8VmVjdG9yPGNoYXI+ID4gZGF0YSA9IGFkb3B0UHRyKG5ldyBW
ZWN0b3I8Y2hhcj4oYmluYXJ5RGF0YS5ieXRlTGVuZ3RoKCkpKTsKKyAgICBPd25QdHI8VmVjdG9y
PGNoYXI+ID4gZGF0YSA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8Y2hhcj4oYnl0ZUxlbmd0aCkpOwog
ICAgIGlmIChiaW5hcnlEYXRhLmJ5dGVMZW5ndGgoKSkKLSAgICAgICAgbWVtY3B5KGRhdGEtPmRh
dGEoKSwgYmluYXJ5RGF0YS5kYXRhKCksIGJpbmFyeURhdGEuYnl0ZUxlbmd0aCgpKTsKKyAgICAg
ICAgbWVtY3B5KGRhdGEtPmRhdGEoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJpbmFyeURh
dGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwogICAgIHNldE1ldGhvZE5vdENv
bXBsZXRlZCgpOwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxs
YmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2Vu
ZEFycmF5QnVmZmVyLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlciksIGRhdGEucmVsZWFz
ZSgpKSk7CiAgICAgUmVmUHRyPEJyaWRnZT4gcHJvdGVjdCh0aGlzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggNDcyYjk4MjA5ZWY0YjA3MDU2ZmE2ODBmZmJl
N2U5NjlhN2U1MzM0Mi4uMmRhNWRhMzk0ODdkYzUzYzkwZTNhYzEzMDUzNTEyMmRiODIxYWQ3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY2LDcgKzY2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBTdHJpbmcgZXh0ZW5zaW9ucygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlNlbmRSZXN1bHQgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBBcnJh
eUJ1ZmZlciYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQg
c2VuZChjb25zdCBCbG9iJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1
ZmZlcmVkQW1vdW50KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKGlu
dCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikgT1ZFUlJJREU7CkBAIC0xMzQsNyArMTM0LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBpbml0aWFsaXplKCk7CiAgICAgICAgIHZvaWQgY29u
bmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgICAgIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKLSAgICAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2Vu
ZChjb25zdCBBcnJheUJ1ZmZlciYpOworICAgICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CiAgICAgICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQmxvYiYpOwogICAgICAgICB1bnNpZ25lZCBsb25n
IGJ1ZmZlcmVkQW1vdW50KCk7CiAgICAgICAgIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0
cmluZyYgcmVhc29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V2ViU29ja2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29j
a2V0Q3VzdG9tLmNwcAppbmRleCBiYmQ1YzhjMDU5YWZlNGIxNzNmNjM0YTYyY2JjOWRkYjllMWVi
MTg2Li5jNDJiM2NiZGZlZGM2ZGQ5YTQwZjBmMTA0MDU0MGExYjk3ODAwYjMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC0zNyw2
ICszNyw3IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eUJ1ZmZlci5oIgorI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNC
bG9iLmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgpA
QCAtMTAwLDYgKzEwMSw4IEBAIEpTVmFsdWUgSlNXZWJTb2NrZXQ6OnNlbmQoRXhlY1N0YXRlKiBl
eGVjKQogICAgIGJvb2wgcmVzdWx0OwogICAgIGlmIChtZXNzYWdlLmluaGVyaXRzKCZKU0FycmF5
QnVmZmVyOjpzX2luZm8pKQogICAgICAgICByZXN1bHQgPSBpbXBsKCktPnNlbmQodG9BcnJheUJ1
ZmZlcihtZXNzYWdlKSwgZWMpOworICAgIGVsc2UgaWYgKG1lc3NhZ2UuaW5oZXJpdHMoJkpTQXJy
YXlCdWZmZXJWaWV3OjpzX2luZm8pKQorICAgICAgICByZXN1bHQgPSBpbXBsKCktPnNlbmQodG9B
cnJheUJ1ZmZlclZpZXcobWVzc2FnZSksIGVjKTsKICAgICBlbHNlIGlmIChtZXNzYWdlLmluaGVy
aXRzKCZKU0Jsb2I6OnNfaW5mbykpCiAgICAgICAgIHJlc3VsdCA9IGltcGwoKS0+c2VuZCh0b0Js
b2IobWVzc2FnZSksIGVjKTsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwCmluZGV4IDJkODMxOGM0
ODI2ZjVjNTRmMzBkMTFiODJkOTk3NDQ2MTRkMTk4NmMuLjY5ZTI5NzI5MzBmOTVlNDViZjI0ZjE5
MTU3YWQ4ZmE4NWMzZGQyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJWOEFycmF5
QnVmZmVyLmgiCisjaW5jbHVkZSAiVjhBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJWOEJp
bmRpbmcuaCIKICNpbmNsdWRlICJWOEJsb2IuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCkBAIC0x
MjcsNiArMTI4LDEwIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYlNvY2tldDo6c2VuZENh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgICAgIEFycmF5QnVmZmVyKiBh
cnJheUJ1ZmZlciA9IFY4QXJyYXlCdWZmZXI6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QobWVzc2FnZSkpOwogICAgICAgICBBU1NFUlQoYXJyYXlCdWZmZXIpOwogICAgICAg
ICByZXN1bHQgPSB3ZWJTb2NrZXQtPnNlbmQoYXJyYXlCdWZmZXIsIGVjKTsKKyAgICB9IGVsc2Ug
aWYgKFY4QXJyYXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZShtZXNzYWdlKSkgeworICAgICAgICBB
cnJheUJ1ZmZlclZpZXcqIGFycmF5QnVmZmVyVmlldyA9IFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05h
dGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG1lc3NhZ2UpKTsKKyAgICAgICAgQVNT
RVJUKGFycmF5QnVmZmVyVmlldyk7CisgICAgICAgIHJlc3VsdCA9IHdlYlNvY2tldC0+c2VuZChh
cnJheUJ1ZmZlclZpZXcsIGVjKTsKICAgICB9IGVsc2UgaWYgKFY4QmxvYjo6SGFzSW5zdGFuY2Uo
bWVzc2FnZSkpIHsKICAgICAgICAgQmxvYiogYmxvYiA9IFY4QmxvYjo6dG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChtZXNzYWdlKSk7CiAgICAgICAgIEFTU0VSVChibG9iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvY2tldEltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29ja2V0SW1wbC5jcHAKaW5kZXggMTc5
MzAzYWQ5YjRkYmQ3MmE1MzQ5YTZjN2ZmMTVjZDllNzFkNTNiMS4uNzU0OGM2MzE1YTFmMjg4MzNj
NTk5NWU3MGFmNDA0MzkxNjI0OGZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU29ja2V0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU29ja2V0SW1wbC5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCBib29sIFdlYlNvY2tldEltcGw6
OnNlbmRUZXh0KGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKIGJvb2wgV2ViU29ja2V0SW1wbDo6
c2VuZEFycmF5QnVmZmVyKGNvbnN0IFdlYkFycmF5QnVmZmVyJiB3ZWJBcnJheUJ1ZmZlcikKIHsK
ICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2VuZCgqUGFz
c1JlZlB0cjxBcnJheUJ1ZmZlcj4od2ViQXJyYXlCdWZmZXIpKSA9PSBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6U2VuZFN1Y2Nlc3M7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2VuZCgqUGFz
c1JlZlB0cjxBcnJheUJ1ZmZlcj4od2ViQXJyYXlCdWZmZXIpLCAwLCB3ZWJBcnJheUJ1ZmZlci5i
eXRlTGVuZ3RoKCkpID09IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3VjY2VzczsK
ICNlbHNlCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1OGNkMDBh
NTQ0OTY5ZWY5MDIzMjdkN2E4NjE5NWEzMTViZThjZjMzLi40YWJkNGI4MGI1YTA0ODQ0MzQ5MTEz
YmNiZTQ4NTY4YTllYzZjZWRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDgtMDYgIFl1
dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViU29ja2V0LnNl
bmQoKSBzaG91bGQgYWNjZXB0IEFycmF5QnVmZmVyVmlldworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA4NzcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUd28gdGVzdHMgYXJlIGFkZGVkIHRvIGNoZWNrIHdo
ZXRoZXIgV2ViU29ja2V0LnNlbmQoQXJyYXlCdWZmZXJWaWV3KSB3b3JrcyBpbiB0aGUKKyAgICAg
ICAgbWFpbiB0aHJlYWQgYW5kIGluIGEgd29ya2VyLgorCisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWFycmF5YnVmZmVydmlldy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1hcnJh
eWJ1ZmZlcnZpZXcuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9zZW5kLWFycmF5YnVmZmVydmlldy5qczogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Nl
bmQtYXJyYXlidWZmZXJ2aWV3LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3NlbmQtYXJyYXlidWZmZXJ2aWV3Lmh0
bWw6IEFkZGVkLgorCiAyMDEyLTA4LTA2ICBQcmF2aW4gRCAgPHByYXZpbmQuMms0QGdtYWkuY29t
PgogCiAgICAgICAgIFRlc3RjYXNlIExheW91dFRlc3RzL2VkaXRpbmcvaW5wdXQvZWRpdGFibGUt
Y29udGFpbmVyLXdpdGgtd29yZC13cmFwLW5vcm1hbC5odG1sIGZhaWxpbmcgb24gTWFjCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQt
YXJyYXlidWZmZXJ2aWV3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1hcnJheWJ1ZmZlcnZpZXctZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU5MzllYWU5ZGY5MGYxMjU4NTg0NDhjMDBlMjc5MDdkMDI3MzNkYTEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Nl
bmQtYXJyYXlidWZmZXJ2aWV3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitXZWJTb2Nr
ZXQ6IFNlbmQgQXJyYXlCdWZmZXJWaWV3cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CitQQVNTIFBBU1M6IE1lc3NhZ2UgIzAuCitQQVNTIFBBU1M6IE1lc3NhZ2UgIzEuCitQQVNTIFBB
U1M6IE1lc3NhZ2UgIzIuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1hcnJheWJ1
ZmZlcnZpZXcuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
Ymkvc2VuZC1hcnJheWJ1ZmZlcnZpZXcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTZkZmJhZDRiNWJmYTZi
Yzk0NzQ5ODllOWNlYzkwODdjMzFkMWVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWFycmF5YnVmZmVydmlldy5odG1s
CkBAIC0wLDAgKzEsNzMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgor
ZGVzY3JpcHRpb24oIldlYlNvY2tldDogU2VuZCBBcnJheUJ1ZmZlclZpZXdzLiIpOworCit3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIHN0YXJ0c1dpdGgodGFyZ2V0LCBw
cmVmaXgpCit7CisgICAgcmV0dXJuIHRhcmdldC5pbmRleE9mKHByZWZpeCkgPT09IDA7Cit9CisK
K2Z1bmN0aW9uIGNyZWF0ZUFycmF5QnVmZmVyVmlld0NvbnRhaW5pbmdIZWxsb1dvcmxkKCkKK3sK
KyAgICB2YXIgaGVsbG8gPSAiSGVsbG8sIHdvcmxkISI7CisgICAgdmFyIGFycmF5ID0gbmV3IFVp
bnQ4QXJyYXkoaGVsbG8ubGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhlbGxvLmxl
bmd0aDsgKytpKQorICAgICAgICBhcnJheVtpXSA9IGhlbGxvLmNoYXJDb2RlQXQoaSk7CisgICAg
cmV0dXJuIGFycmF5OworfQorCitmdW5jdGlvbiBjcmVhdGVFbXB0eUFycmF5QnVmZmVyVmlldygp
Cit7CisgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KDApOworfQorCitmdW5jdGlvbiBjcmVhdGVB
cnJheUJ1ZmZlclZpZXdDb250YWluaW5nQWxsRGlzdGluY3RCeXRlcygpCit7CisgICAgLy8gUmV0
dXJuIGEgc2xpY2Ugb2YgQXJyYXlCdWZmZXIuCisgICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1
ZmZlcigxMDAwKTsKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShidWZmZXIsIDEyMywg
MjU2KTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgKytpKQorICAgICAgICBhcnJheVtp
XSA9IGk7CisgICAgcmV0dXJuIGFycmF5OworfQorCit2YXIgdXJsID0gIndzOi8vMTI3LjAuMC4x
Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2hlY2stYmluYXJ5LW1lc3NhZ2VzIjsKK3ZhciB3
cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKK3ZhciBjbG9zZUV2ZW50OworCit3cy5vbm9wZW4gPSBm
dW5jdGlvbigpCit7CisgICAgd3Muc2VuZChjcmVhdGVBcnJheUJ1ZmZlclZpZXdDb250YWluaW5n
SGVsbG9Xb3JsZCgpKTsKKyAgICB3cy5zZW5kKGNyZWF0ZUVtcHR5QXJyYXlCdWZmZXJWaWV3KCkp
OworICAgIHdzLnNlbmQoY3JlYXRlQXJyYXlCdWZmZXJWaWV3Q29udGFpbmluZ0FsbERpc3RpbmN0
Qnl0ZXMoKSk7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICB2
YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgaWYgKHN0YXJ0c1dpdGgobWVzc2FnZSwgIlBB
U1MiKSkKKyAgICAgICAgdGVzdFBhc3NlZChtZXNzYWdlKTsKKyAgICBlbHNlCisgICAgICAgIHRl
c3RGYWlsZWQobWVzc2FnZSk7Cit9OworCit3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCit7
CisgICAgY2xvc2VFdmVudCA9IGV2ZW50OworICAgIHNob3VsZEJlVHJ1ZSgiY2xvc2VFdmVudC53
YXNDbGVhbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvc2VuZC1hcnJheWJ1ZmZl
cnZpZXcuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dv
cmtlcnMvcmVzb3VyY2VzL3NlbmQtYXJyYXlidWZmZXJ2aWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmNDgy
NzJlYjg1N2E2MzAwMmM5MWVhMWNjMzY2ZDhhMDlhMjBlZjYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3Vy
Y2VzL3NlbmQtYXJyYXlidWZmZXJ2aWV3LmpzCkBAIC0wLDAgKzEsNDcgQEAKK2Z1bmN0aW9uIGNy
ZWF0ZUFycmF5QnVmZmVyVmlld0NvbnRhaW5pbmdIZWxsb1dvcmxkKCkKK3sKKyAgICB2YXIgaGVs
bG8gPSAiSGVsbG8sIHdvcmxkISI7CisgICAgdmFyIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoaGVs
bG8ubGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhlbGxvLmxlbmd0aDsgKytpKQor
ICAgICAgICBhcnJheVtpXSA9IGhlbGxvLmNoYXJDb2RlQXQoaSk7CisgICAgcmV0dXJuIGFycmF5
OworfQorCitmdW5jdGlvbiBjcmVhdGVFbXB0eUFycmF5QnVmZmVyVmlldygpCit7CisgICAgcmV0
dXJuIG5ldyBVaW50OEFycmF5KDApOworfQorCitmdW5jdGlvbiBjcmVhdGVBcnJheUJ1ZmZlclZp
ZXdDb250YWluaW5nQWxsRGlzdGluY3RCeXRlcygpCit7CisgICAgLy8gUmV0dXJuIGEgc2xpY2Ug
b2YgQXJyYXlCdWZmZXIuCisgICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigxMDAwKTsK
KyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShidWZmZXIsIDEyMywgMjU2KTsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDI1NjsgKytpKQorICAgICAgICBhcnJheVtpXSA9IGk7CisgICAg
cmV0dXJuIGFycmF5OworfQorCit2YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvY2hlY2stYmluYXJ5LW1lc3NhZ2VzIjsK
K3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKword3Mub25vcGVuID0gZnVuY3Rpb24oKQor
eworICAgIHdzLnNlbmQoY3JlYXRlQXJyYXlCdWZmZXJWaWV3Q29udGFpbmluZ0hlbGxvV29ybGQo
KSk7CisgICAgd3Muc2VuZChjcmVhdGVFbXB0eUFycmF5QnVmZmVyVmlldygpKTsKKyAgICB3cy5z
ZW5kKGNyZWF0ZUFycmF5QnVmZmVyVmlld0NvbnRhaW5pbmdBbGxEaXN0aW5jdEJ5dGVzKCkpOwor
fTsKKword3Mub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgcG9zdE1lc3NhZ2Uo
ZXZlbnQuZGF0YSk7Cit9OworCit3cy5vbmNsb3NlID0gZnVuY3Rpb24oY2xvc2VFdmVudCkKK3sK
KyAgICBpZiAoY2xvc2VFdmVudC53YXNDbGVhbiA9PT0gdHJ1ZSkKKyAgICAgICAgcG9zdE1lc3Nh
Z2UoIlBBU1M6IGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZS4iKTsKKyAgICBlbHNlCisgICAg
ICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBjbG9zZUV2ZW50Lndhc0NsZWFuIHNob3VsZCBiZSB0cnVl
LCBidXQgd2FzOiAiICsgY2xvc2VFdmVudC53YXNDbGVhbik7CisgICAgcG9zdE1lc3NhZ2UoIkRP
TkUiKTsKK307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3dvcmtlcnMvc2VuZC1hcnJheWJ1ZmZlcnZpZXctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3NlbmQtYXJy
YXlidWZmZXJ2aWV3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTI2NDU1NzJjYmMyOWE5ZDgx
MTRlZjZjMDdiMTBlZWFiZjg0ODVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3NlbmQtYXJyYXlidWZmZXJ2aWV3
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitXZWJTb2NrZXQ6IFNlbmQgQXJyYXlCdWZm
ZXJWaWV3cyBpbiBXZWIgV29ya2Vycy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQ
QVNTIFBBU1M6IE1lc3NhZ2UgIzAuCitQQVNTIFBBU1M6IE1lc3NhZ2UgIzEuCitQQVNTIFBBU1M6
IE1lc3NhZ2UgIzIuCitQQVNTIFBBU1M6IGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZS4KK0RP
TkUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dv
cmtlcnMvc2VuZC1hcnJheWJ1ZmZlcnZpZXcuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9zZW5kLWFycmF5YnVmZmVydmlldy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjlmNTBhNDMyMmJiNmU2MzAxNzZiZGVjZDQ4YWU3Y2JlMjYwNTZkNGQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3dvcmtlcnMvc2VuZC1hcnJheWJ1ZmZlcnZpZXcuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4v
anMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCJXZWJTb2Nr
ZXQ6IFNlbmQgQXJyYXlCdWZmZXJWaWV3cyBpbiBXZWIgV29ya2Vycy4iKTsKKword2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBzdGFydHNXaXRoKHN0ciwgcHJlZml4KQor
eworICAgIHJldHVybiBzdHIuaW5kZXhPZihwcmVmaXgpID09IDA7Cit9CisKK3ZhciB3b3JrZXIg
PSBuZXcgV29ya2VyKCJyZXNvdXJjZXMvc2VuZC1hcnJheWJ1ZmZlcnZpZXcuanMiKTsKK3dvcmtl
ci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVu
dC5kYXRhOworICAgIGlmIChzdGFydHNXaXRoKG1lc3NhZ2UsICJQQVNTIikpCisgICAgICAgIHRl
c3RQYXNzZWQobWVzc2FnZSk7CisgICAgZWxzZSBpZiAoc3RhcnRzV2l0aChtZXNzYWdlLCAiRkFJ
TCIpKQorICAgICAgICB0ZXN0RmFpbGVkKG1lc3NhZ2UpCisgICAgZWxzZQorICAgICAgICBkZWJ1
ZyhtZXNzYWdlKTsKKyAgICBpZiAobWVzc2FnZSA9PT0gIkRPTkUiKQorICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKK307CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2pz
LXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>