<?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>154837</bug_id>
          
          <creation_ts>2016-02-29 14:23:49 -0800</creation_ts>
          <short_desc>Modern IDB: WebKit 2 IPC layer easily confused about multiple web processes being connected</short_desc>
          <delta_ts>2016-02-29 15:13:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>Safari 9</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1169269</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-02-29 14:23:49 -0800</bug_when>
    <thetext>Modern IDB: WebKit 2 IPC layer easily confused about multiple web processes being connected

Can result in weird behavior, including (most obviously) ASSERTs in debug builds.

&lt;rdar://problem/24857351&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169270</commentid>
    <comment_count>1</comment_count>
      <attachid>272518</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-02-29 14:26:40 -0800</bug_when>
    <thetext>Created attachment 272518
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169278</commentid>
    <comment_count>2</comment_count>
      <attachid>272518</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-02-29 14:50:55 -0800</bug_when>
    <thetext>Comment on attachment 272518
Patch v1

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

&gt; Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.cpp:99
&gt; +static uint64_t generateConnectionToServerIdentifier()

It makes sense to have this in the DatabaseProcess.  Do we have any protection against invalid identifiers being used if the DatabaseProcess crashes?

&gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:62
&gt; +    m_isOpenInServer = sendSync(Messages::DatabaseToWebProcessConnection::EstablishIDBConnectionToServer(), m_identifier);

Why can&apos;t we send asynchronously?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169282</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-02-29 15:00:19 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 272518 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=272518&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.cpp:99
&gt; &gt; +static uint64_t generateConnectionToServerIdentifier()
&gt; 
&gt; It makes sense to have this in the DatabaseProcess.  Do we have any
&gt; protection against invalid identifiers being used if the DatabaseProcess
&gt; crashes?

DatabaseProcess goes away, all related objects in the web process are invalidated.

&gt; &gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:62
&gt; &gt; +    m_isOpenInServer = sendSync(Messages::DatabaseToWebProcessConnection::EstablishIDBConnectionToServer(), m_identifier);
&gt; 
&gt; Why can&apos;t we send asynchronously?

New connections can start queuing up operations in the WebProcess via javascript immediately.

This is at most one sync message per tab without any complicated/long-running work behind it. NBD.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169285</commentid>
    <comment_count>4</comment_count>
      <attachid>272518</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-02-29 15:08:05 -0800</bug_when>
    <thetext>Comment on attachment 272518
Patch v1

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

&gt;&gt;&gt; Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.cpp:99
&gt;&gt;&gt; +static uint64_t generateConnectionToServerIdentifier()
&gt;&gt; 
&gt;&gt; It makes sense to have this in the DatabaseProcess.  Do we have any protection against invalid identifiers being used if the DatabaseProcess crashes?
&gt; 
&gt; DatabaseProcess goes away, all related objects in the web process are invalidated.

It makes sense to have this in the DatabaseProcess.  Do we have any protection against invalid identifiers being used if the DatabaseProcess crashes?

&gt;&gt;&gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:62
&gt;&gt;&gt; +    m_isOpenInServer = sendSync(Messages::DatabaseToWebProcessConnection::EstablishIDBConnectionToServer(), m_identifier);
&gt;&gt; 
&gt;&gt; Why can&apos;t we send asynchronously?
&gt; 
&gt; New connections can start queuing up operations in the WebProcess via javascript immediately.
&gt; 
&gt; This is at most one sync message per tab without any complicated/long-running work behind it. NBD.

Why can&apos;t we send asynchronously?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169287</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-02-29 15:13:48 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/197372</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272518</attachid>
            <date>2016-02-29 14:26:40 -0800</date>
            <delta_ts>2016-02-29 15:08:05 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>23408</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjZjNkYWNiLi45YTJiZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTYtMDItMjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIE1vZGVybiBJREI6IFdlYktpdCAyIElQQyBsYXllciBlYXNpbHkgY29uZnVzZWQgYWJvdXQg
bXVsdGlwbGUgd2ViIHByb2Nlc3NlcyBiZWluZyBjb25uZWN0ZWQuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ4MzcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY3J1eCBvZiB0aGUgYnVnIGlzIHRo
YXQgV2ViUHJvY2Vzc2VzIGNhbm5vdCBhc3NpZ24gdGhlbXNlbHZlcyBzZXJ2ZXItdW5pcXVlIGlk
ZW50aWZpZXJzLi4uCisgICAgICAgIFRoZSBzZXJ2ZXIgbXVzdCBkbyB0aGF0IGZvciB0aGVtLgor
ICAgICAgICAKKyAgICAgICAgQSBvbmNlLXBlci1zZXNzaW9uLXBlci1XZWJQcm9jZXNzIHN5bmMg
bWVzc2FnZSBhbmQgYSBmZXcgdXBkYXRlcyB0byBjb25uZWN0aW9uIG1hbmFnZW1lbnQgZml4IHRo
aXMuCisgICAgICAgIAorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVRvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVRvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Omdl
bmVyYXRlQ29ubmVjdGlvblRvU2VydmVySWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OkRh
dGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2Vy
dmVyKToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25u
ZWN0aW9uLmg6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlVG9XZWJQcm9jZXNz
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2Vz
L0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlQ29ubmVjdGlvblRvU2VydmVySWRlbnRpZmllcik6IERl
bGV0ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJUb0RhdGFiYXNlUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJUb0RhdGFiYXNlUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG9E
YXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzaW9u
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb24uaDoKKwogMjAxNi0wMi0yOSAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5
YW5kZXgucnU+CiAKICAgICAgICAgRml4ZWQgY29tcGlsYXRpb24gd2l0aCAhRU5BQkxFKERBVEFC
QVNFX1BST0NFU1MpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRh
YmFzZVByb2Nlc3MvRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA4MDNk
YWNkLi4wZjY4NTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
RGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9E
YXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNzIs
NiArNzIsMTYgQEAgdm9pZCBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGkKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIH0KIAordm9pZCBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZURl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYgcmVw
bHlFbmNvZGVyKQoreworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBN
ZXNzYWdlczo6RGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKKyAgICAgICAgZGlkUmVjZWl2ZVN5bmNEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBE
YXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYp
CiB7CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC04NSw4ICs5NSwxNyBAQCB2b2lk
IERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsCiB9CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLXZv
aWQgRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjplc3RhYmxpc2hJREJDb25uZWN0aW9u
VG9TZXJ2ZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpCisKK3N0YXRpYyB1
aW50NjRfdCBnZW5lcmF0ZUNvbm5lY3Rpb25Ub1NlcnZlcklkZW50aWZpZXIoKQoreworICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXIg
PSAwOworICAgIHJldHVybiArK2lkZW50aWZpZXI7Cit9CisKK3ZvaWQgRGF0YWJhc2VUb1dlYlBy
b2Nlc3NDb25uZWN0aW9uOjplc3RhYmxpc2hJREJDb25uZWN0aW9uVG9TZXJ2ZXIodWludDY0X3Qm
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKQogeworICAgIHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyID0gZ2VuZXJhdGVDb25uZWN0aW9uVG9TZXJ2ZXJJZGVudGlmaWVyKCk7CiAgICAgTE9H
KEluZGV4ZWREQiwgIkRhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZXN0YWJsaXNoSURC
Q29ubmVjdGlvblRvU2VydmVyIC0gJSIgUFJJdTY0LCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
cik7CiAgICAgQVNTRVJUKCFtX3dlYklEQkNvbm5lY3Rpb25zLmNvbnRhaW5zKHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNl
UHJvY2Vzcy9EYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQy
L0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCBk
MjFiZDBkLi5hMTA2ZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC00OSwx
MSArNDksMTMgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
TmFtZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBJUEM6OlByb2Nlc3NUeXBlIGxvY2FsUHJvY2Vz
c1R5cGUoKSBvdmVycmlkZSB7IHJldHVybiBJUEM6OlByb2Nlc3NUeXBlOjpEYXRhYmFzZTsgfQog
ICAgIHZpcnR1YWwgSVBDOjpQcm9jZXNzVHlwZSByZW1vdGVQcm9jZXNzVHlwZSgpIG92ZXJyaWRl
IHsgcmV0dXJuIElQQzo6UHJvY2Vzc1R5cGU6OldlYjsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpNZXNzYWdlRGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNEYXRhYmFzZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURl
Y29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4mKTsKIAogICAgIC8v
IElQQzo6TWVzc2FnZVNlbmRlcgogICAgIHZpcnR1YWwgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsg
fQpAQCAtNjEsNyArNjMsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCiAgICAgLy8gTWVzc2FnZXMgaGFuZGxlcnMgKE1vZGVybiBJREIpCi0gICAgdm9pZCBlc3Rh
Ymxpc2hJREJDb25uZWN0aW9uVG9TZXJ2ZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIpOworICAgIHZvaWQgZXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKHVpbnQ2NF90
JiBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcik7CiAgICAgdm9pZCByZW1vdmVJREJDb25uZWN0
aW9uVG9TZXJ2ZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCiAgICAg
SGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudD4+IG1fd2Vi
SURCQ29ubmVjdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbgppbmRleCA3ZWIwN2RmLi42MGJlYzZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VUb1dlYlBy
b2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBACiBtZXNzYWdlcyAt
PiBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgICMgQ3JlYXRlcyBhIGNvbm5lY3Rpb24gZm9yIGNv
bW11bmljYXRpb24gd2l0aCBhIFdlYlByb2Nlc3MKLSAgICBFc3RhYmxpc2hJREJDb25uZWN0aW9u
VG9TZXJ2ZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgRXN0YWJs
aXNoSURCQ29ubmVjdGlvblRvU2VydmVyKCkgLT4gKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKQogICAgIFJlbW92ZUlEQkNvbm5lY3Rpb25Ub1NlcnZlcih1aW50NjRfdCBzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIv
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAppbmRleCA3ZThkZjM1Li42ZjY5MDExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtNDks
MjcgKzQ5LDE3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlQ29ubmVjdGlvblRvU2VydmVySWRlbnRpZmll
cigpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBzdGF0aWMgdWludDY0
X3QgaWRlbnRpZmllciA9IDA7Ci0gICAgcmV0dXJuICsraWRlbnRpZmllcjsKLX0KLQogUmVmPFdl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcj4gV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpjcmVhdGUo
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcik7
CiB9CiAKIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVy
KCkKLSAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZUNvbm5lY3Rpb25Ub1NlcnZlcklkZW50aWZp
ZXIoKSkKIHsKICAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKICAgICBtX2Nvbm5lY3Rp
b25Ub1NlcnZlciA9IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpjcmVhdGUoKnRo
aXMpOwogCi0gICAgc2VuZChNZXNzYWdlczo6RGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
OjpFc3RhYmxpc2hJREJDb25uZWN0aW9uVG9TZXJ2ZXIobV9pZGVudGlmaWVyKSk7Ci0KLSAgICBt
X2lzT3BlbkluU2VydmVyID0gdHJ1ZTsKKyAgICBtX2lzT3BlbkluU2VydmVyID0gc2VuZFN5bmMo
TWVzc2FnZXM6OkRhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6RXN0YWJsaXNoSURCQ29u
bmVjdGlvblRvU2VydmVyKCksIG1faWRlbnRpZmllcik7CiB9CiAKIFdlYklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6fldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2ViVG9EYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA1MzEwMWZhLi5mZDUxZmRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJUb0RhdGFiYXNlUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2Vz
L1dlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTUyLDggKzUyLDggQEAgdm9p
ZCBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGkKIHsKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGF1dG8g
aXRlcmF0b3IgPSBtX3dlYklEQkNvbm5lY3Rpb25zLmZpbmQoZGVjb2Rlci5kZXN0aW5hdGlvbklE
KCkpOwotICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbV93ZWJJREJDb25uZWN0aW9ucy5lbmQoKSkK
KyAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fd2ViSURCQ29ubmVjdGlvbnNCeUlkZW50aWZpZXIu
ZmluZChkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CisgICAgICAgIGlmIChpdGVyYXRvciAhPSBt
X3dlYklEQkNvbm5lY3Rpb25zQnlJZGVudGlmaWVyLmVuZCgpKQogICAgICAgICAgICAgaXRlcmF0
b3ItPnZhbHVlLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTc0LDkgKzc0LDEyIEBAIHZvaWQgV2ViVG9EYXRhYmFzZVBy
b2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
ciYgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJG
b3JTZXNzaW9uKGNvbnN0IFNlc3Npb25JRCYgc2Vzc2lvbklEKQogewotICAgIGF1dG8gcmVzdWx0
ID0gbV93ZWJJREJDb25uZWN0aW9ucy5hZGQoc2Vzc2lvbklELnNlc3Npb25JRCgpLCBudWxscHRy
KTsKLSAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCisgICAgYXV0byByZXN1bHQgPSBtX3dlYklE
QkNvbm5lY3Rpb25zQnlTZXNzaW9uLmFkZChzZXNzaW9uSUQsIG51bGxwdHIpOworICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyOjpjcmVhdGUoKTsKKyAgICAgICAgQVNTRVJUKCFtX3dlYklE
QkNvbm5lY3Rpb25zQnlJZGVudGlmaWVyLmNvbnRhaW5zKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUt
PmlkZW50aWZpZXIoKSkpOworICAgICAgICBtX3dlYklEQkNvbm5lY3Rpb25zQnlJZGVudGlmaWVy
LnNldChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5pZGVudGlmaWVyKCksIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUpOworICAgIH0KIAogICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL1dlYlRv
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggYmQwNzQyNi4u
OWVkZjQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMv
V2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9EYXRhYmFzZXMvV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNl
bmRlci5oIgogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogI2lm
IEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQpAQCAtNzEsNyArNzIsOCBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKIAogI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI+PiBtX3dlYklEQkNvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6
U2Vzc2lvbklELCBSZWZQdHI8V2ViSURCQ29ubmVjdGlvblRvU2VydmVyPj4gbV93ZWJJREJDb25u
ZWN0aW9uc0J5U2Vzc2lvbjsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViSURCQ29u
bmVjdGlvblRvU2VydmVyPj4gbV93ZWJJREJDb25uZWN0aW9uc0J5SWRlbnRpZmllcjsKICNlbmRp
ZgogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGQzOTRiMzkuLmU1OTJhN2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wMi0yOSAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuIElEQjogV2ViS2l0IDIgSVBD
IGxheWVyIGVhc2lseSBjb25mdXNlZCBhYm91dCBtdWx0aXBsZSB3ZWIgcHJvY2Vzc2VzIGJlaW5n
IGNvbm5lY3RlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NDgzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvSW5kZXhlZERC
TXVsdGlQcm9jZXNzLTEuaHRtbDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvSW5kZXhlZERCTXVsdGlQcm9j
ZXNzLm1tOiBBZGRlZC4KKwogMjAxNi0wMi0yOCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJlaW1wbGVtZW50IFdLUGFnZUdyb3VwIGluIHRlcm1zIG9mIFdLVXNlckNv
bnRlbnRDb250cm9sbGVyCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU3ZmU4MGE2Li5mMzY4
OTk2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjYsNiArNjYsOSBAQAogCQk1MUIxRUU5
NjFDODBGQUVGMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjFFRTk0MUM4
MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0xLmh0bWwgKi87IH07CiAJCTUx
QjFFRTk3MUM4MEZBRUYwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMUVF
OTUxQzgwRkFERDAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCAqLzsgfTsK
IAkJNTFCNDU0RUMxQjRFMjM2QjAwODVFQUE2IC8qIFdlYlZpZXdDbG9zZUluc2lkZURpZEZpbmlz
aExvYWRGb3JGcmFtZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQjQ1NEVCMUI0RTIzNkIwMDg1RUFBNiAvKiBXZWJWaWV3Q2xvc2VJbnNpZGVEaWRG
aW5pc2hMb2FkRm9yRnJhbWUubW0gKi87IH07CisJCTUxQkNFRTRBMUM4NEY0QUYwMDQyQzgyRSAv
KiBJbmRleGVkREJNdWx0aVByb2Nlc3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUJDRUU0OTFDODRGNEFGMDA0MkM4MkUgLyogSW5kZXhlZERCTXVs
dGlQcm9jZXNzLm1tICovOyB9OworCQk1MUJDRUU0RTFDODRGNTNCMDA0MkM4MkUgLyogSW5kZXhl
ZERCTXVsdGlQcm9jZXNzLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJDRUU0QzFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERC
TXVsdGlQcm9jZXNzLTEuaHRtbCAqLzsgfTsKKwkJNTFCQ0VFNEYxQzg0RjUzQjAwNDJDODJFIC8q
IEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQ0VFNEQxQzg0RjUyQzAwNDJDODJFIC8qIElu
ZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgKi87IH07CiAJCTUxQ0I0QUQ4MUIzQTA3OUMwMEMx
QjFDNiAvKiBNb2RhbEFsZXJ0c1NQSS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUNCNEFENzFCM0EwNzlDMDBDMUIxQzYgLyogTW9kYWxBbGVydHNT
UEkuY3BwICovOyB9OwogCQk1MUNEMUM2QzFCMzhDRTQzMDAxNDJDQTUgLyogTW9kYWxBbGVydHMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNEMUM2
QTFCMzhDRTM2MDAxNDJDQTUgLyogTW9kYWxBbGVydHMubW0gKi87IH07CiAJCTUxQ0QxQzcyMUIz
OEQ0ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQ0QxQzcxMUIzOEQ0ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJs
YW5rLXdpbmRvdy5odG1sICovOyB9OwpAQCAtMzk1LDYgKzM5OCw4IEBACiAJCQlkc3RQYXRoID0g
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZp
bGVzID0gKAorCQkJCTUxQkNFRTRFMUM4NEY1M0IwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVBy
b2Nlc3MtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTUxQkNFRTRGMUM4NEY1M0Iw
MDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCTUxQjFFRTk2MUM4MEZBRUYwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5j
ZS0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTFCMUVFOTcxQzgwRkFFRjAwNjRG
Qjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQk1N0Y1NkE1QzFDN0Y4Q0MxMDBGMzFEN0UgLyogSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3Rl
ZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtNTk4LDYgKzYwMyw5IEBACiAJCTUxQjFF
RTk0MUM4MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0xLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERCUGVyc2lzdGVuY2UtMS5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMUVFOTUxQzgwRkFERDAwNjRGQjk4IC8qIElu
ZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJ
bmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MUI0NTRFQjFCNEUyMzZCMDA4NUVBQTYgLyogV2ViVmlld0Nsb3NlSW5zaWRlRGlkRmluaXNo
TG9hZEZvckZyYW1lLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViVmlld0Nsb3NlSW5zaWRlRGlkRmluaXNoTG9hZEZvckZyYW1lLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MUJDRUU0OTFDODRGNEFGMDA0MkM4MkUgLyogSW5kZXhlZERCTXVs
dGlQcm9jZXNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5k
ZXhlZERCTXVsdGlQcm9jZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUJD
RUU0QzFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCQ0VFNEQxQzg0RjUyQzAwNDJDODJFIC8q
IEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAiSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxQ0I0QUQ3MUIzQTA3OUMwMEMxQjFDNiAvKiBNb2RhbEFsZXJ0c1NQSS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2RhbEFsZXJ0c1NQSS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0QxQzZBMUIzOENFMzYwMDE0MkNBNSAvKiBN
b2RhbEFsZXJ0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1v
ZGFsQWxlcnRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUNEMUM3MTFCMzhE
NDg0MDAxNDJDQTUgLyogbW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFuay13aW5kb3cuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9ICJtb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1s
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk4MSw2ICs5ODksNyBAQAogCQkJCUEx
QTRGRTVEMThERDNEQjcwMEI1RUE4QSAvKiBEb3dubG9hZC5tbSAqLywKIAkJCQkyRDgxMDRDQjFC
RUMxM0U3MDAyMERBNDYgLyogRmluZEluUGFnZS5tbSAqLywKIAkJCQkyRDFGRTBBRjFBRDQ2NUMx
MDA2Q0Q5RTYgLyogRml4ZWRMYXlvdXRTaXplLm1tICovLAorCQkJCTUxQkNFRTQ5MUM4NEY0QUYw
MDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MubW0gKi8sCiAJCQkJNTFCMUVFOEQxQzgw
RjU4ODAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLm1tICovLAogCQkJCTM3RDM2RUQ2
MUFGNDJFQ0QwMEJBRjVEOSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZy5tbSAqLywKIAkJCQk1
MUNEMUM2QTFCMzhDRTM2MDAxNDJDQTUgLyogTW9kYWxBbGVydHMubW0gKi8sCkBAIC0xMDc1LDYg
KzEwODQsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBMTZG
NjZCOTFDNDBFQTIwMDBCRDREMjQgLyogQ29udGVudEZpbHRlcmluZy5odG1sICovLAorCQkJCTUx
QkNFRTRDMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sICov
LAorCQkJCTUxQkNFRTREMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3Mt
Mi5odG1sICovLAogCQkJCTUxQjFFRTk0MUM4MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJz
aXN0ZW5jZS0xLmh0bWwgKi8sCiAJCQkJNTFCMUVFOTUxQzgwRkFERDAwNjRGQjk4IC8qIEluZGV4
ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCAqLywKIAkJCSk7CkBAIC0xODkzLDYgKzE5MDQsNyBAQAog
CQkJCTJEODEwNENDMUJFQzEzRTcwMDIwREE0NiAvKiBGaW5kSW5QYWdlLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0QyMjVDMDgxQzQ1QTY5MjAwMTQwNzYxIC8qIFBhcnNlZENvbnRlbnRSYW5nZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTk3M0I1RDFBRjIyODc1MDA2QzdCMzYgLyogU2hhcmVk
QnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxQkNFRTRBMUM4NEY0QUYwMDQyQzgyRSAv
KiBJbmRleGVkREJNdWx0aVByb2Nlc3MubW0gaW4gU291cmNlcyAqLywKIAkJCQk1N0YxMEQ5MzFD
N0U3QjM4MDBFQ0RGMzAgLyogSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3RlZC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTJERDM1NTM2MUJEMDgzNzgwMDVERjRBNyAvKiBBdXRvTGF5b3V0SW50ZWdyYXRp
b24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QUE2QTE1MjFBQUMwQjMxMDAyQjJFRDMgLyogV29y
a1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyQ29jb2EvSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0luZGV4ZWREQk11bHRpUHJvY2Vzcy0x
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNlODU1MgotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0luZGV4
ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPHNjcmlwdD4KKwordmFy
IHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCJJbmRleGVkREJNdWx0
aVByb2Nlc3MiKTsKK3JlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkKK3sKKyAgICBjb250
aW51ZVRlc3QoKTsKK30KK3JlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpCit7CisgICAgLy8g
VW5leHBlY3RlZCBlcnJvcgorICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RI
YW5kbGVyLnBvc3RNZXNzYWdlKCdFcnJvciBvcGVuaW5nIGRhdGFiYXNlJyk7Cit9CisKK2Z1bmN0
aW9uIGNvbnRpbnVlVGVzdCgpCit7CisgICAgdmFyIHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERC
Lm9wZW4oIkluZGV4ZWREQk11bHRpUHJvY2VzcyIsIDIpOworCisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpCisgICAgeworICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5k
bGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnU3VjY2VzcycpOworICAgIH0KKworICAgIHJl
cXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIC8vIFVuZXhwZWN0ZWQg
ZXJyb3IKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIu
cG9zdE1lc3NhZ2UoJ0Vycm9yJyk7CisgICAgfQorCisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVk
ZWQgPSBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2Fn
ZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdVcGdyYWRlTmVlZGVkJyk7CisKKyAg
ICAgICAgdmFyIHN0b3JlID0gZXZlbnQudGFyZ2V0LnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZSgi
VGVzdE9iamVjdFN0b3JlIik7CisKKyAgICAgICAgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9u
Y29tcGxldGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2Fn
ZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdUcmFuc2FjdGlvbiBjb21wbGV0ZScp
OworICAgICAgICB9CisKKyAgICAgICAgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9uZXJyb3Ig
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
LnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdUcmFuc2FjdGlvbiBlcnJvcmVkIScpOworICAgICAg
ICB9CisKKyAgICAgICAgc3RvcmUucHV0KCJiYXIiLCAiZm9vIik7CisgICAgfQorfQorPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9J
bmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4zZTRlMmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRt
bApAQCAtMCwwICsxLDMyIEBACis8c2NyaXB0PgorCit2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRl
eGVkREIub3BlbigiSW5kZXhlZERCTXVsdGlQcm9jZXNzIiwgMik7CisKK3JlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdmFyIHJlcSA9IGV2ZW50LnRhcmdldC5yZXN1
bHQudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RTdG9yZSIpLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0
U3RvcmUiKS5nZXQoImZvbyIpOworCisgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50
KQorICAgIHsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRs
ZXIucG9zdE1lc3NhZ2UoJ1ZhbHVlIG9mIGZvbzogJyArIHJlcS5yZXN1bHQpOworICAgIH0KKwor
ICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICAvLyBVbmV4
cGVjdGVkIGVycm9yCisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RI
YW5kbGVyLnBvc3RNZXNzYWdlKCdVbmV4cGVjdGVkIGVycm9yJyk7CisgICAgfQorfQorCityZXF1
ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpCit7CisgICAgLy8gVW5leHBlY3RlZCBlcnJvcgorICAg
IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdV
bmV4cGVjdGVkIGVycm9yJyk7Cit9CisKK3JlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rp
b24oZXZlbnQpCit7CisgICAgLy8gVW5leHBlY3RlZCB1cGdyYWRlIG5lZWRlZAorICAgIHdpbmRv
dy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdVbmV4cGVj
dGVkIFVwZ3JhZGVOZWVkZWQnKTsKK30KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvSW5kZXhlZERCTXVsdGlQcm9j
ZXNzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxZjgzZDQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9JbmRl
eGVkREJNdWx0aVByb2Nlc3MubW0KQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAi
VGVzdC5oIgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJv
Y2Vzc1Bvb2xQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXJQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLVXNlclN0eWxlU2hlZXQuaD4KKyNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK3N0YXRpYyBib29sIHJlY2VpdmVk
U2NyaXB0TWVzc2FnZTsKK3N0YXRpYyBSZXRhaW5QdHI8V0tTY3JpcHRNZXNzYWdlPiBsYXN0U2Ny
aXB0TWVzc2FnZTsKKworQGludGVyZmFjZSBJbmRleGVkREJNUE1lc3NhZ2VIYW5kbGVyIDogTlNP
YmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBJ
bmRleGVkREJNUE1lc3NhZ2VIYW5kbGVyCisKKy0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVy
OihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNl
aXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZQoreworICAgIHJlY2Vp
dmVkU2NyaXB0TWVzc2FnZSA9IHRydWU7CisgICAgbGFzdFNjcmlwdE1lc3NhZ2UgPSBtZXNzYWdl
OworfQorCitAZW5kCisKK1RFU1QoSW5kZXhlZERCLCBJbmRleGVkREJNdWx0aVByb2Nlc3MpCit7
CisgICAgUmV0YWluUHRyPEluZGV4ZWREQk1QTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9w
dE5TKFtbSW5kZXhlZERCTVBNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24g
dXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdl
dCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nl
c3NQb29sIF90ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3NdOworCisgICAgUmV0YWluUHRyPFdLV2Vi
Vmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJJbmRleGVk
REJNdWx0aVByb2Nlc3MtMSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVl
c3RdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3Nh
Z2UpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgIFJldGFpblB0cjxO
U1N0cmluZz4gc3RyaW5nMSA9IChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XTsK
KworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsK
KyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJp
bmc+IHN0cmluZzIgPSAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV07CisKKyAg
ICAvLyBNYWtlIGEgbmV3IHdlYiB2aWV3IHdpdGggYSBuZXcgd2ViIHByb2Nlc3MgdG8gZmluaXNo
IHRoZSB0ZXN0CisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldzIgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgcmVxdWVzdCA9IFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAIkluZGV4ZWREQk11bHRpUHJvY2Vzcy0yIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgW3dlYlZpZXcy
IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZy
ZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNl
OworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5nMyA9IChOU1N0cmluZyAqKVtsYXN0U2Ny
aXB0TWVzc2FnZSBib2R5XTsKKworICAgIEVYUEVDVF9XS19TVFJFUShAIlVwZ3JhZGVOZWVkZWQi
LCBzdHJpbmcxLmdldCgpKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJUcmFuc2FjdGlvbiBjb21w
bGV0ZSIsIHN0cmluZzIuZ2V0KCkpOworICAgIEVYUEVDVF9XS19TVFJFUShAIlZhbHVlIG9mIGZv
bzogYmFyIiwgc3RyaW5nMy5nZXQoKSk7Cit9CisKKyNlbmRpZgo=
</data>
<flag name="review"
          id="297299"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>