<?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>129265</bug_id>
          
          <creation_ts>2014-02-24 12:22:10 -0800</creation_ts>
          <short_desc>Need to initialize VM stack data even when the VM is on an exclusive thread</short_desc>
          <delta_ts>2014-02-25 16:58:58 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>129325</dependson>
    
    <dependson>129341</dependson>
          <blocked>128766</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mkwst</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>983996</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-24 12:22:10 -0800</bug_when>
    <thetext>We check VM::exclusiveThread as an optimization to forego the need to do JSLock locking.  However, we recently started pigging backing on JSLock&apos;s lock() and unlock() to initialize VM stack data (stackPointerAtVMEntry and lastStackTop) to appropriate values for the current thread.  As a result, we ended up not initializing the VM stack data when VM::exclusiveThread causes us to bypass the locking activity.

The fix is to make the APIEntryShim initialize the VM stack data even when locking is bypassed.

This bug was the reason for a release assertion failing in ErrorHandlingScope (as seen in https://bugs.webkit.org/show_bug.cgi?id=129227).

ref: &lt;rdar://problem/16142775&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984087</commentid>
    <comment_count>1</comment_count>
      <attachid>225100</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-24 15:09:23 -0800</bug_when>
    <thetext>Created attachment 225100
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984095</commentid>
    <comment_count>2</comment_count>
      <attachid>225100</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-24 16:00:32 -0800</bug_when>
    <thetext>Comment on attachment 225100
the patch.

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

&gt; Source/JavaScriptCore/runtime/JSLock.cpp:79
&gt;  void JSLockHolder::init()
&gt;  {
&gt; -    if (m_vm)
&gt; +    if (!m_vm-&gt;exclusiveThread)
&gt;          m_vm-&gt;apiLock().lock();
&gt; +
&gt; +    m_didInitializeStackPointerAtVMEntry = m_vm-&gt;initializeStackDataIfNeeded();
&gt;  }

JSLockHolder is a convenience object, but this patch would turn it into an API that&apos;s required for correctness. I don&apos;t think that&apos;s a great match because we already have a corresponding API that&apos;s required for correctness: JSLock. Instead of copying JSLock logic up into JSLockHolder, let&apos;s move the exclusive thread optimization down into JSLock.

&gt; Source/WebCore/bindings/js/JSDOMBinding.cpp:157
&gt;  void reportException(ExecState* exec, JSValue exception, CachedScript* cachedScript)
&gt;  {
&gt; +    APIEntryShim entryShim(exec);

Let&apos;s make this an ASSERT, and put the shim higher in the stack. Since this function takes JSC:: arguments, it&apos;s likely incorrect for its caller not to lock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984160</commentid>
    <comment_count>3</comment_count>
      <attachid>225114</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-24 19:28:06 -0800</bug_when>
    <thetext>Created attachment 225114
patch 2: extensiveThread pushed down into JSLock + other fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984161</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-24 19:34:35 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; Source/WebCore/bindings/js/JSDOMBinding.cpp:157
&gt; &gt;  void reportException(ExecState* exec, JSValue exception, CachedScript* cachedScript)
&gt; &gt;  {
&gt; &gt; +    APIEntryShim entryShim(exec);
&gt; 
&gt; Let&apos;s make this an ASSERT, and put the shim higher in the stack. Since this function takes JSC:: arguments, it&apos;s likely incorrect for its caller not to lock.

After I rebased to ToT, the test failure that necessitated this change no longer manifested.  It appears the issue is already resolved.  No additional fix is necessary.  I did add the assertion though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984164</commentid>
    <comment_count>5</comment_count>
      <attachid>225114</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-24 19:52:42 -0800</bug_when>
    <thetext>Comment on attachment 225114
patch 2: extensiveThread pushed down into JSLock + other fixes.

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

&gt; Source/JavaScriptCore/runtime/JSLock.cpp:83
&gt; +    : m_ownerThreadID(std::thread::id())

m_ownerThreadID is supposed to be the thread that took the lock. But in the constructor, no thread has taken the lock. So, I don&apos;t think this is right.

&gt; Source/JavaScriptCore/runtime/JSLock.cpp:104
&gt; +    m_hasExclusiveThread = (threadId != std::thread::id());

Why does it matter if threadId != std::thread::id()? setExclusiveThread() should always establish an exclusive thread.

&gt; Source/JavaScriptCore/runtime/JSLock.cpp:105
&gt; +    m_ownerThreadID = threadId;

I don&apos;t think you should use m_ownerThreadID in this way. (See above.)

Perhaps the right answer is to use an m_exclusiveThread data member instead of an m_hasExclusiveThread boolean, and store the exclusive thread in that data member. You can use the null threadID if there is no exclusive thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984170</commentid>
    <comment_count>6</comment_count>
      <attachid>225114</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-24 20:04:56 -0800</bug_when>
    <thetext>Comment on attachment 225114
patch 2: extensiveThread pushed down into JSLock + other fixes.

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

&gt;&gt; Source/JavaScriptCore/runtime/JSLock.cpp:83
&gt;&gt; +    : m_ownerThreadID(std::thread::id())
&gt; 
&gt; m_ownerThreadID is supposed to be the thread that took the lock. But in the constructor, no thread has taken the lock. So, I don&apos;t think this is right.

This is correct.  std::thread::id() means no thread has taken ownership.  See http://en.cppreference.com/w/cpp/thread/thread/id/id.  I think you have it confused with std::thread::get_id() which returns the id for the current thread.

&gt;&gt; Source/JavaScriptCore/runtime/JSLock.cpp:104
&gt;&gt; +    m_hasExclusiveThread = (threadId != std::thread::id());
&gt; 
&gt; Why does it matter if threadId != std::thread::id()? setExclusiveThread() should always establish an exclusive thread.

I&apos;m being conservative in case the caller passes in std::thread::id() which means the null thread id i.e. no exclusive thread.  Alternatively, I can add an assert that ensures that the incoming threadId is not std::thread::id() i.e. not null.

&gt;&gt; Source/JavaScriptCore/runtime/JSLock.cpp:105
&gt;&gt; +    m_ownerThreadID = threadId;
&gt; 
&gt; I don&apos;t think you should use m_ownerThreadID in this way. (See above.)
&gt; 
&gt; Perhaps the right answer is to use an m_exclusiveThread data member instead of an m_hasExclusiveThread boolean, and store the exclusive thread in that data member. You can use the null threadID if there is no exclusive thread.

The m_hasExclusiveThread boolean is meant as an optimization because the platform gets to define how std::thread::id is implemented.  I also didn&apos;t see an conversion operators in the spec to convert the thread id to a boolean for our test (See http://en.cppreference.com/w/cpp/thread/thread/id).  I compare it to std::thread::id() because std::thread::id() is the portable way to express a null thread id (for whatever way the platform wants to define the null thread id).  I don&apos;t think we should assume that std::thread::id() is actually encoded as null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984176</commentid>
    <comment_count>7</comment_count>
      <attachid>225114</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-24 20:32:49 -0800</bug_when>
    <thetext>Comment on attachment 225114
patch 2: extensiveThread pushed down into JSLock + other fixes.

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

r=me

&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSLock.cpp:83
&gt;&gt;&gt; +    : m_ownerThreadID(std::thread::id())
&gt;&gt; 
&gt;&gt; m_ownerThreadID is supposed to be the thread that took the lock. But in the constructor, no thread has taken the lock. So, I don&apos;t think this is right.
&gt; 
&gt; This is correct.  std::thread::id() means no thread has taken ownership.  See http://en.cppreference.com/w/cpp/thread/thread/id/id.  I think you have it confused with std::thread::get_id() which returns the id for the current thread.

Yeah, I read that as get_id(). Oops!

&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSLock.cpp:104
&gt;&gt;&gt; +    m_hasExclusiveThread = (threadId != std::thread::id());
&gt;&gt; 
&gt;&gt; Why does it matter if threadId != std::thread::id()? setExclusiveThread() should always establish an exclusive thread.
&gt; 
&gt; I&apos;m being conservative in case the caller passes in std::thread::id() which means the null thread id i.e. no exclusive thread.  Alternatively, I can add an assert that ensures that the incoming threadId is not std::thread::id() i.e. not null.

Same here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984177</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-24 20:39:19 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r164627: &lt;http://trac.webkit.org/r164627&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984456</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-25 13:06:33 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 129325</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984458</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-02-25 13:08:01 -0800</bug_when>
    <thetext>This broke SubtleCrypto tests. Mark is not online, so I&apos;m going to roll out.

http://build.webkit.org/results/Apple%20Mavericks%20Debug%20WK2%20(Tests)/r164659%20(2882)/crypto/subtle/rsa-oaep-generate-non-extractable-key-crash-log.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984531</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-02-25 16:32:22 -0800</bug_when>
    <thetext>Sounds like this can be re-landed now, after &lt;http://trac.webkit.org/r164679&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984548</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-25 16:58:58 -0800</bug_when>
    <thetext>Patch re-landed in r164683: &lt;http://trac.webkit.org/r164683&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225100</attachid>
            <date>2014-02-24 15:09:23 -0800</date>
            <delta_ts>2014-02-24 19:28:06 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-129265.patch</filename>
            <type>text/plain</type>
            <size>7808</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0NjExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBA
CisyMDE0LTAyLTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBO
ZWVkIHRvIGluaXRpYWxpemUgVk0gc3RhY2sgZGF0YSBldmVuIHdoZW4gdGhlIFZNIGlzIG9uIGFu
IGV4Y2x1c2l2ZSB0aHJlYWQuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjkyNjU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY2hl
Y2sgVk06OmV4Y2x1c2l2ZVRocmVhZCBhcyBhbiBvcHRpbWl6YXRpb24gdG8gZm9yZWdvIHRoZSBu
ZWVkIHRvIGRvCisgICAgICAgIEpTTG9jayBsb2NraW5nLiBIb3dldmVyLCB3ZSByZWNlbnRseSBz
dGFydGVkIHBpZ2dpbmcgYmFja2luZyBvbiBKU0xvY2sncworICAgICAgICBsb2NrKCkgYW5kIHVu
bG9jaygpIHRvIGluaXRpYWxpemUgVk0gc3RhY2sgZGF0YSAoc3RhY2tQb2ludGVyQXRWTUVudHJ5
CisgICAgICAgIGFuZCBsYXN0U3RhY2tUb3ApIHRvIGFwcHJvcHJpYXRlIHZhbHVlcyBmb3IgdGhl
IGN1cnJlbnQgdGhyZWFkLiBUaGlzIGlzCisgICAgICAgIG5lZWRlZCBiZWNhdXNlIHdlIG1heSBi
ZSBhY3F1aXJpbmcgdGhlIGxvY2sgdG8gZW50ZXIgdGhlIFZNIG9uIGEgZGlmZmVyZW50CisgICAg
ICAgIHRocmVhZC4KKworICAgICAgICBBcyBhIHJlc3VsdCwgd2UgZW5kZWQgdXAgbm90IGluaXRp
YWxpemluZyB0aGUgVk0gc3RhY2sgZGF0YSB3aGVuCisgICAgICAgIFZNOjpleGNsdXNpdmVUaHJl
YWQgY2F1c2VzIHVzIHRvIGJ5cGFzcyB0aGUgbG9ja2luZyBhY3Rpdml0eS4gRXZlbiB0aG91Z2gK
KyAgICAgICAgdGhlIFZNOjpleGNsdXNpdmVUaHJlYWQgd2lsbCBub3QgaGF2ZSB0byBkZWFsIHdp
dGggdGhlIFZNIGJlaW5nIGVudGVyZWQKKyAgICAgICAgb24gYSBkaWZmZXJlbnQgdGhyZWFkLCBp
dCBzdGlsbCBuZWVkcyB0byBpbml0aWFsaXplIHRoZSBWTSBzdGFjayBkYXRhLgorICAgICAgICBU
aGUgVk0gcmVsaWVzIG9uIHRoYXQgZGF0YSBiZWluZyBpbml0aWFsaXplZCBwcm9wZXJseSBvbmNl
IGl0IGhhcyBiZWVuCisgICAgICAgIGVudGVyZWQuCisKKyAgICAgICAgVGhlIGZpeCBpcyB0byBt
YWtlIHRoZSBBUElFbnRyeVNoaW0gKHZpYSB0aGUgSlNMb2NrSG9sZGVyKSBpbml0aWFsaXplCisg
ICAgICAgIHRoZSBWTSBzdGFjayBkYXRhIGV2ZW4gd2hlbiBsb2NraW5nIGlzIGJ5cGFzc2VkLgor
CisgICAgICAgICogQVBJL0FQSVNoaW1zLmg6CisgICAgICAgIChKU0M6OkFQSUVudHJ5U2hpbTo6
QVBJRW50cnlTaGltKToKKyAgICAgICAgKiBydW50aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChK
U0M6OkpTTG9ja0hvbGRlcjo6SlNMb2NrSG9sZGVyKToKKyAgICAgICAgKEpTQzo6SlNMb2NrSG9s
ZGVyOjppbml0KToKKyAgICAgICAgKEpTQzo6SlNMb2NrSG9sZGVyOjp+SlNMb2NrSG9sZGVyKToK
KyAgICAgICAgKEpTQzo6SlNMb2NrOjpsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0pTTG9jay5o
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6aW5pdGlhbGl6
ZVN0YWNrRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTQtMDIt
MjQgIFRhbWFzIEdlcmdlbHkgIDx0Z2VyZ2VseS51LXN6ZWdlZEBwYXJ0bmVyLnNhbXN1bmcuY29t
PgogCiAgICAgICAgIENvZGUgY2xlYW51cDogcmVtb3ZlIGxlZnRvdmVyIEVOQUJMRShXT1JLRVJT
KSBtYWNyb3MgYW5kIHN1cHBvcnQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQ
SVNoaW1zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElTaGlt
cy5oCShyZXZpc2lvbiAxNjQ1NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSVNo
aW1zLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDEzICs1OCwxMyBAQCBjbGFzcyBBUElFbnRyeVNo
aW0gOiBwdWJsaWMgQVBJRW50cnlTaGltCiBwdWJsaWM6CiAgICAgQVBJRW50cnlTaGltKEV4ZWNT
dGF0ZSogZXhlYywgYm9vbCByZWdpc3RlclRocmVhZCA9IHRydWUpCiAgICAgICAgIDogQVBJRW50
cnlTaGltV2l0aG91dExvY2soJmV4ZWMtPnZtKCksIHJlZ2lzdGVyVGhyZWFkKQotICAgICAgICAs
IG1fbG9ja0hvbGRlcihleGVjLT52bSgpLmV4Y2x1c2l2ZVRocmVhZCA/IDAgOiBleGVjKQorICAg
ICAgICAsIG1fbG9ja0hvbGRlcigmZXhlYy0+dm0oKSkKICAgICB7CiAgICAgfQogCiAgICAgQVBJ
RW50cnlTaGltKFZNKiB2bSwgYm9vbCByZWdpc3RlclRocmVhZCA9IHRydWUpCiAgICAgICAgIDog
QVBJRW50cnlTaGltV2l0aG91dExvY2sodm0sIHJlZ2lzdGVyVGhyZWFkKQotICAgICAgICAsIG1f
bG9ja0hvbGRlcih2bS0+ZXhjbHVzaXZlVGhyZWFkID8gMCA6IHZtKQorICAgICAgICAsIG1fbG9j
a0hvbGRlcih2bSkKICAgICB7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTG9jay5jcHAJKHJldmlzaW9uIDE2NDU1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDM3ICs1MCw0NCBA
QCB2b2lkIEdsb2JhbEpTTG9jazo6aW5pdGlhbGl6ZSgpCiB9CiAKIEpTTG9ja0hvbGRlcjo6SlNM
b2NrSG9sZGVyKEV4ZWNTdGF0ZSogZXhlYykKLSAgICA6IG1fdm0oZXhlYyA/ICZleGVjLT52bSgp
IDogMCkKKyAgICA6IG1fdm0oJmV4ZWMtPnZtKCkpCisgICAgLCBtX2RpZEluaXRpYWxpemVTdGFj
a1BvaW50ZXJBdFZNRW50cnkoZmFsc2UpCiB7CiAgICAgaW5pdCgpOwogfQogCiBKU0xvY2tIb2xk
ZXI6OkpTTG9ja0hvbGRlcihWTSogdm0pCiAgICAgOiBtX3ZtKHZtKQorICAgICwgbV9kaWRJbml0
aWFsaXplU3RhY2tQb2ludGVyQXRWTUVudHJ5KGZhbHNlKQogewogICAgIGluaXQoKTsKIH0KIAog
SlNMb2NrSG9sZGVyOjpKU0xvY2tIb2xkZXIoVk0mIHZtKQogICAgIDogbV92bSgmdm0pCisgICAg
LCBtX2RpZEluaXRpYWxpemVTdGFja1BvaW50ZXJBdFZNRW50cnkoZmFsc2UpCiB7CiAgICAgaW5p
dCgpOwogfQogCiB2b2lkIEpTTG9ja0hvbGRlcjo6aW5pdCgpCiB7Ci0gICAgaWYgKG1fdm0pCisg
ICAgaWYgKCFtX3ZtLT5leGNsdXNpdmVUaHJlYWQpCiAgICAgICAgIG1fdm0tPmFwaUxvY2soKS5s
b2NrKCk7CisKKyAgICBtX2RpZEluaXRpYWxpemVTdGFja1BvaW50ZXJBdFZNRW50cnkgPSBtX3Zt
LT5pbml0aWFsaXplU3RhY2tEYXRhSWZOZWVkZWQoKTsKIH0KIAogSlNMb2NrSG9sZGVyOjp+SlNM
b2NrSG9sZGVyKCkKIHsKLSAgICBpZiAoIW1fdm0pCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAo
bV9kaWRJbml0aWFsaXplU3RhY2tQb2ludGVyQXRWTUVudHJ5KQorICAgICAgICBtX3ZtLT5zZXRT
dGFja1BvaW50ZXJBdFZNRW50cnkobnVsbHB0cik7CiAKKyAgICBib29sIHZtSGFzRXhjbHVzaXpl
VGhyZWFkID0gISFtX3ZtLT5leGNsdXNpdmVUaHJlYWQ7CiAgICAgUmVmUHRyPEpTTG9jaz4gYXBp
TG9jaygmbV92bS0+YXBpTG9jaygpKTsKICAgICBtX3ZtLmNsZWFyKCk7Ci0gICAgYXBpTG9jay0+
dW5sb2NrKCk7CisgICAgaWYgKCF2bUhhc0V4Y2x1c2l6ZVRocmVhZCkKKyAgICAgICAgYXBpTG9j
ay0+dW5sb2NrKCk7CiB9CiAKIEpTTG9jazo6SlNMb2NrKFZNKiB2bSkKQEAgLTEyMiwxMyArMTI5
LDcgQEAgdm9pZCBKU0xvY2s6OmxvY2soaW50cHRyX3QgbG9ja0NvdW50KQogICAgIGlmICghbV92
bSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0
ZlRocmVhZERhdGEoKTsKLQotICAgIFJFTEVBU0VfQVNTRVJUKCFtX3ZtLT5zdGFja1BvaW50ZXJB
dFZNRW50cnkoKSk7Ci0gICAgdm9pZCogcCA9ICZwOyAvLyBBIHByb3h5IGZvciB0aGUgY3VycmVu
dCBzdGFjayBwb2ludGVyLgotICAgIG1fdm0tPnNldFN0YWNrUG9pbnRlckF0Vk1FbnRyeShwKTsK
LQotICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWREYXRhLnNhdmVkTGFzdFN0YWNrVG9w
KCkpOworICAgIG1fdm0tPmluaXRpYWxpemVTdGFja0RhdGFJZk5lZWRlZCgpOwogfQogCiB2b2lk
IEpTTG9jazo6dW5sb2NrKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9j
ay5oCShyZXZpc2lvbiAxNjQ1NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0xvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBpbml0KCk7CiAKICAgICAgICAgUmVmUHRyPFZNPiBtX3ZtOworICAgICAg
ICBib29sIG1fZGlkSW5pdGlhbGl6ZVN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKICAgICB9OwogCiAg
ICAgY2xhc3MgSlNMb2NrIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEpTTG9jaz4gewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTY0NTUzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MzQsNiArNzM0LDE5IEBAIHZvaWQgVk06OiBjbGVhckV4Y2VwdGlvblN0YWNrKCkKICAgICBt
X2V4Y2VwdGlvblN0YWNrID0gUmVmQ291bnRlZEFycmF5PFN0YWNrRnJhbWU+KCk7CiB9CiAKK2Jv
b2wgVk06OmluaXRpYWxpemVTdGFja0RhdGFJZk5lZWRlZCgpCit7CisgICAgaWYgKCFzdGFja1Bv
aW50ZXJBdFZNRW50cnkoKSkgeworICAgICAgICB2b2lkKiBwID0gJnA7IC8vIEEgcHJveHkgZm9y
IHRoZSBjdXJyZW50IHN0YWNrIHBvaW50ZXIuCisgICAgICAgIHNldFN0YWNrUG9pbnRlckF0Vk1F
bnRyeShwKTsKKworICAgICAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFk
RGF0YSgpOworICAgICAgICBzZXRMYXN0U3RhY2tUb3AodGhyZWFkRGF0YS5zYXZlZExhc3RTdGFj
a1RvcCgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K30KKwogdm9pZCBWTTo6c2V0U3RhY2tQb2ludGVyQXRWTUVudHJ5KHZvaWQqIHNwKQogewogICAg
IG1fc3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gc3A7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgJKHJldmlzaW9uIDE2NDU1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3Nyw3ICszNzcsOSBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRocm93RXhjZXB0aW9uKEV4
ZWNTdGF0ZSosIEpTVmFsdWUpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKLSAgICAgICAgCisKKyAgICAg
ICAgYm9vbCBpbml0aWFsaXplU3RhY2tEYXRhSWZOZWVkZWQoKTsKKwogICAgICAgICB2b2lkKiBz
dGFja1BvaW50ZXJBdFZNRW50cnkoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrUG9pbnRlckF0Vk1F
bnRyeTsgfQogICAgICAgICB2b2lkIHNldFN0YWNrUG9pbnRlckF0Vk1FbnRyeSh2b2lkKik7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDYxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAyLTI0ICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBOZWVkIHRvIGluaXRpYWxpemUgVk0g
c3RhY2sgZGF0YSBldmVuIHdoZW4gdGhlIFZNIGlzIG9uIGFuIGV4Y2x1c2l2ZSB0aHJlYWQuCisg
ICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjkyNjU+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydEV4
Y2VwdGlvbik6CisgICAgICAgIC0gTmVlZCB0byBpbnN0YW50aWF0ZSB0aGUgSlNDIEFQSUVudHJ5
U2hpbSB0byBhY3F1aXJlIHRoZSBWTSBKU0xvY2sgYmVmb3JlCisgICAgICAgICAgd2Ugd29yayB3
aXRoIFZNIGRhdGEgc3RydWN0dXJlcy4KKwogMjAxNC0wMi0yNCAgTWFydGluIEhvY2sgIDxtaG9j
a0BhcHBsZS5jb20+CiAKICAgICAgICAgQ3JlYXRlIFNlc3Npb25JRCB2YWx1ZS1zdHlsZSBjbGFz
cyBmb3Igc2Vzc2lvbiBJRHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5jcHAJKHJldmlzaW9uIDE2NDU1MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTRXhjZXB0aW9uQmFz
ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQVBJU2hpbXMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CiAj
aW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxp
bnRlcnByZXRlci9JbnRlcnByZXRlci5oPgpAQCAtMTUzLDYgKzE1NCw3IEBAIEpTQzo6SlNWYWx1
ZSBqc0FycmF5KEpTQzo6RXhlY1N0YXRlKiBleGUKIAogdm9pZCByZXBvcnRFeGNlcHRpb24oRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGV4Y2VwdGlvbiwgQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3Jp
cHQpCiB7CisgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKICAgICBpZiAoaXNUZXJt
aW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGV4Y2VwdGlvbikpCiAgICAgICAgIHJldHVybjsKIAo=
</data>
<flag name="review"
          id="249217"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225114</attachid>
            <date>2014-02-24 19:28:06 -0800</date>
            <delta_ts>2014-02-24 20:32:49 -0800</delta_ts>
            <desc>patch 2: extensiveThread pushed down into JSLock + other fixes.</desc>
            <filename>bug-129265.patch</filename>
            <type>text/plain</type>
            <size>12477</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0NjIwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBA
CisyMDE0LTAyLTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBO
ZWVkIHRvIGluaXRpYWxpemUgVk0gc3RhY2sgZGF0YSBldmVuIHdoZW4gdGhlIFZNIGlzIG9uIGFu
IGV4Y2x1c2l2ZSB0aHJlYWQuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjkyNjU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY2hl
Y2sgVk06OmV4Y2x1c2l2ZVRocmVhZCBhcyBhbiBvcHRpbWl6YXRpb24gdG8gZm9yZWdvIHRoZSBu
ZWVkIHRvIGRvCisgICAgICAgIEpTTG9jayBsb2NraW5nLiBIb3dldmVyLCB3ZSByZWNlbnRseSBz
dGFydGVkIHBpZ2d5IGJhY2tpbmcgb24gSlNMb2NrJ3MKKyAgICAgICAgbG9jaygpIGFuZCB1bmxv
Y2soKSB0byBpbml0aWFsaXplIFZNIHN0YWNrIGRhdGEgKHN0YWNrUG9pbnRlckF0Vk1FbnRyeQor
ICAgICAgICBhbmQgbGFzdFN0YWNrVG9wKSB0byBhcHByb3ByaWF0ZSB2YWx1ZXMgZm9yIHRoZSBj
dXJyZW50IHRocmVhZC4gVGhpcyBpcworICAgICAgICBuZWVkZWQgYmVjYXVzZSB3ZSBtYXkgYmUg
YWNxdWlyaW5nIHRoZSBsb2NrIHRvIGVudGVyIHRoZSBWTSBvbiBhIGRpZmZlcmVudAorICAgICAg
ICB0aHJlYWQuCisKKyAgICAgICAgQXMgYSByZXN1bHQsIHdlIGVuZGVkIHVwIG5vdCBpbml0aWFs
aXppbmcgdGhlIFZNIHN0YWNrIGRhdGEgd2hlbgorICAgICAgICBWTTo6ZXhjbHVzaXZlVGhyZWFk
IGNhdXNlcyB1cyB0byBieXBhc3MgdGhlIGxvY2tpbmcgYWN0aXZpdHkuIEV2ZW4gdGhvdWdoCisg
ICAgICAgIHRoZSBWTTo6ZXhjbHVzaXZlVGhyZWFkIHdpbGwgbm90IGhhdmUgdG8gZGVhbCB3aXRo
IHRoZSBWTSBiZWluZyBlbnRlcmVkCisgICAgICAgIG9uIGEgZGlmZmVyZW50IHRocmVhZCwgaXQg
c3RpbGwgbmVlZHMgdG8gaW5pdGlhbGl6ZSB0aGUgVk0gc3RhY2sgZGF0YS4KKyAgICAgICAgVGhl
IFZNIHJlbGllcyBvbiB0aGF0IGRhdGEgYmVpbmcgaW5pdGlhbGl6ZWQgcHJvcGVybHkgb25jZSBp
dCBoYXMgYmVlbgorICAgICAgICBlbnRlcmVkLgorCisgICAgICAgIFdpdGggdGhpcyBmaXgsIHdl
IHB1c2ggdGhlIGNoZWNrIGZvciBleGNsdXNpdmVUaHJlYWQgZG93biBpbnRvIHRoZSBKU0xvY2ss
CisgICAgICAgIGFuZCBoYW5kbGUgdGhlIGJ5cGFzc2luZyBvZiB1bm5lZWRlZCBsb2NraW5nIGFj
dGl2aXR5IHRoZXJlIHdoaWxlIHN0aWxsCisgICAgICAgIGV4ZWN1dGluZyB0aGUgbmVjZXNzYXJ5
IHRoZSBWTSBzdGFjayBkYXRhIGluaXRpYWxpemF0aW9uLgorCisgICAgICAgICogQVBJL0FQSVNo
aW1zLmg6CisgICAgICAgIChKU0M6OkFQSUVudHJ5U2hpbTo6QVBJRW50cnlTaGltKToKKyAgICAg
ICAgKEpTQzo6QVBJQ2FsbGJhY2tTaGltOjpzaG91bGREcm9wQWxsTG9ja3MpOgorICAgICAgICAq
IGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcDoKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVh
ZHM6OmFkZEN1cnJlbnRUaHJlYWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNMb2NrSG9sZGVyOjpKU0xvY2tIb2xkZXIpOgorICAgICAgICAoSlNDOjpK
U0xvY2tIb2xkZXI6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0xvY2tIb2xkZXI6On5KU0xvY2tI
b2xkZXIpOgorICAgICAgICAoSlNDOjpKU0xvY2s6OkpTTG9jayk6CisgICAgICAgIChKU0M6OkpT
TG9jazo6c2V0RXhjbHVzaXZlVGhyZWFkKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpsb2NrKToK
KyAgICAgICAgKEpTTG9jazo6dW5sb2NrKToKKyAgICAgICAgKEpTTG9jazo6Y3VycmVudFRocmVh
ZElzSG9sZGluZ0xvY2spOgorICAgICAgICAoSlNMb2NrOjpkcm9wQWxsTG9ja3MpOgorICAgICAg
ICAoSlNMb2NrOjpncmFiQWxsTG9ja3MpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmg6Cisg
ICAgICAgIChKU0M6OkpTTG9jazo6ZXhjbHVzaXZlVGhyZWFkKToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6
CisgICAgICAgIChKU0M6OlZNOjpleGNsdXNpdmVUaHJlYWQpOgorICAgICAgICAoSlNDOjpWTTo6
c2V0RXhjbHVzaXZlVGhyZWFkKToKKyAgICAgICAgKEpTQzo6Vk06OmN1cnJlbnRUaHJlYWRJc0hv
bGRpbmdBUElMb2NrKToKKwogMjAxNC0wMi0yNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIEZUTCBzaG91bGQgZG8gcG9seW1vcnBoaWMgUHV0QnlJZCBpbmxpbmlu
ZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElTaGltcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJU2hpbXMuaAkocmV2aXNpb24gMTY0NjA1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElTaGltcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC01OCwxMyArNTgsMTMgQEAgY2xhc3MgQVBJRW50cnlTaGltIDogcHVibGljIEFQSUVudHJ5
U2hpbQogcHVibGljOgogICAgIEFQSUVudHJ5U2hpbShFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgcmVn
aXN0ZXJUaHJlYWQgPSB0cnVlKQogICAgICAgICA6IEFQSUVudHJ5U2hpbVdpdGhvdXRMb2NrKCZl
eGVjLT52bSgpLCByZWdpc3RlclRocmVhZCkKLSAgICAgICAgLCBtX2xvY2tIb2xkZXIoZXhlYy0+
dm0oKS5leGNsdXNpdmVUaHJlYWQgPyAwIDogZXhlYykKKyAgICAgICAgLCBtX2xvY2tIb2xkZXIo
JmV4ZWMtPnZtKCkpCiAgICAgewogICAgIH0KIAogICAgIEFQSUVudHJ5U2hpbShWTSogdm0sIGJv
b2wgcmVnaXN0ZXJUaHJlYWQgPSB0cnVlKQogICAgICAgICA6IEFQSUVudHJ5U2hpbVdpdGhvdXRM
b2NrKHZtLCByZWdpc3RlclRocmVhZCkKLSAgICAgICAgLCBtX2xvY2tIb2xkZXIodm0tPmV4Y2x1
c2l2ZVRocmVhZCA/IDAgOiB2bSkKKyAgICAgICAgLCBtX2xvY2tIb2xkZXIodm0pCiAgICAgewog
ICAgIH0KIApAQCAtMTAyLDkgKzEwMiw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RhdGlj
IGJvb2wgc2hvdWxkRHJvcEFsbExvY2tzKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIGlmICh2bS5l
eGNsdXNpdmVUaHJlYWQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAgICAgLy8g
SWYgdGhlIFZNIGlzIGluIHRoZSBtaWRkbGUgb2YgYmVpbmcgZGVzdHJveWVkIHRoZW4gd2UgZG9u
J3Qgd2FudCB0byByZXN1cnJlY3QgaXQKICAgICAgICAgLy8gYnkgYWxsb3dpbmcgRHJvcEFsbExv
Y2tzIHRvIHJlZiBpdC4gQnkgdGhpcyBwb2ludCB0aGUgQVBJTG9jayBoYXMgYWxyZWFkeSBiZWVu
IAogICAgICAgICAvLyByZWxlYXNlZCBhbnl3YXlzLCBzbyBpdCBkb2Vzbid0IG1hdHRlciB0aGF0
IERyb3BBbGxMb2NrcyBpcyBhIG5vLW9wLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCShyZXZpc2lvbiAxNjQ2MDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBNYWNoaW5lVGhyZWFkczo6bWFrZVVzYWJs
ZUZyb21NdWx0aQogCiB2b2lkIE1hY2hpbmVUaHJlYWRzOjphZGRDdXJyZW50VGhyZWFkKCkKIHsK
LSAgICBBU1NFUlQoIW1faGVhcC0+dm0oKS0+ZXhjbHVzaXZlVGhyZWFkIHx8IG1faGVhcC0+dm0o
KS0+ZXhjbHVzaXZlVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKCFtX2hl
YXAtPnZtKCktPmhhc0V4Y2x1c2l2ZVRocmVhZCgpIHx8IG1faGVhcC0+dm0oKS0+ZXhjbHVzaXZl
VGhyZWFkKCkgPT0gc3RkOjp0aGlzX3RocmVhZDo6Z2V0X2lkKCkpOwogCiAgICAgaWYgKCFtX3Ro
cmVhZFNwZWNpZmljIHx8IHRocmVhZFNwZWNpZmljR2V0KG1fdGhyZWFkU3BlY2lmaWMpKQogICAg
ICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5j
cHAJKHJldmlzaW9uIDE2NDYwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBHbG9iYWxKU0xv
Y2s6OmluaXRpYWxpemUoKQogfQogCiBKU0xvY2tIb2xkZXI6OkpTTG9ja0hvbGRlcihFeGVjU3Rh
dGUqIGV4ZWMpCi0gICAgOiBtX3ZtKGV4ZWMgPyAmZXhlYy0+dm0oKSA6IDApCisgICAgOiBtX3Zt
KCZleGVjLT52bSgpKQogewogICAgIGluaXQoKTsKIH0KQEAgLTY5LDIzICs2OSwyMSBAQCBKU0xv
Y2tIb2xkZXI6OkpTTG9ja0hvbGRlcihWTSYgdm0pCiAKIHZvaWQgSlNMb2NrSG9sZGVyOjppbml0
KCkKIHsKLSAgICBpZiAobV92bSkKLSAgICAgICAgbV92bS0+YXBpTG9jaygpLmxvY2soKTsKKyAg
ICBtX3ZtLT5hcGlMb2NrKCkubG9jaygpOwogfQogCiBKU0xvY2tIb2xkZXI6On5KU0xvY2tIb2xk
ZXIoKQogewotICAgIGlmICghbV92bSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgUmVmUHRyPEpT
TG9jaz4gYXBpTG9jaygmbV92bS0+YXBpTG9jaygpKTsKICAgICBtX3ZtLmNsZWFyKCk7CiAgICAg
YXBpTG9jay0+dW5sb2NrKCk7CiB9CiAKIEpTTG9jazo6SlNMb2NrKFZNKiB2bSkKLSAgICA6IG1f
bG9ja0NvdW50KDApCisgICAgOiBtX293bmVyVGhyZWFkSUQoc3RkOjp0aHJlYWQ6OmlkKCkpCisg
ICAgLCBtX2xvY2tDb3VudCgwKQogICAgICwgbV9sb2NrRHJvcERlcHRoKDApCisgICAgLCBtX2hh
c0V4Y2x1c2l2ZVRocmVhZChmYWxzZSkKICAgICAsIG1fdm0odm0pCiB7CiB9CkBAIC0xMDAsNiAr
OTgsMTMgQEAgdm9pZCBKU0xvY2s6OndpbGxEZXN0cm95Vk0oVk0qIHZtKQogICAgIG1fdm0gPSAw
OwogfQogCit2b2lkIEpTTG9jazo6c2V0RXhjbHVzaXZlVGhyZWFkKHN0ZDo6dGhyZWFkOjppZCB0
aHJlYWRJZCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9sb2NrQ291bnQgJiYgbV9vd25lclRo
cmVhZElEID09IHN0ZDo6dGhyZWFkOjppZCgpKTsKKyAgICBtX2hhc0V4Y2x1c2l2ZVRocmVhZCA9
ICh0aHJlYWRJZCAhPSBzdGQ6OnRocmVhZDo6aWQoKSk7CisgICAgbV9vd25lclRocmVhZElEID0g
dGhyZWFkSWQ7Cit9CisKIHZvaWQgSlNMb2NrOjpsb2NrKCkKIHsKICAgICBsb2NrKDEpOwpAQCAt
MTEzLDIxICsxMTgsMjEgQEAgdm9pZCBKU0xvY2s6OmxvY2soaW50cHRyX3QgbG9ja0NvdW50KQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9sb2NrLmxvY2soKTsKLQotICAgIG1fb3du
ZXJUaHJlYWRJRCA9IHN0ZDo6dGhpc190aHJlYWQ6OmdldF9pZCgpOworICAgIGlmICghbV9oYXNF
eGNsdXNpdmVUaHJlYWQpIHsKKyAgICAgICAgbV9sb2NrLmxvY2soKTsKKyAgICAgICAgbV9vd25l
clRocmVhZElEID0gc3RkOjp0aGlzX3RocmVhZDo6Z2V0X2lkKCk7CisgICAgfQogICAgIEFTU0VS
VCghbV9sb2NrQ291bnQpOwogICAgIG1fbG9ja0NvdW50ID0gbG9ja0NvdW50OwogCiAgICAgaWYg
KCFtX3ZtKQogICAgICAgICByZXR1cm47CiAKLSAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRh
ID0gd3RmVGhyZWFkRGF0YSgpOwotCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0tPnN0YWNrUG9p
bnRlckF0Vk1FbnRyeSgpKTsKICAgICB2b2lkKiBwID0gJnA7IC8vIEEgcHJveHkgZm9yIHRoZSBj
dXJyZW50IHN0YWNrIHBvaW50ZXIuCiAgICAgbV92bS0+c2V0U3RhY2tQb2ludGVyQXRWTUVudHJ5
KHApOwogCisgICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsK
ICAgICBtX3ZtLT5zZXRMYXN0U3RhY2tUb3AodGhyZWFkRGF0YS5zYXZlZExhc3RTdGFja1RvcCgp
KTsKIH0KIApAQCAtMTQ2LDggKzE1MSwxMSBAQCB2b2lkIEpTTG9jazo6dW5sb2NrKGludHB0cl90
IHVubG9ja0NvdW50CiAgICAgaWYgKCFtX2xvY2tDb3VudCkgewogICAgICAgICBpZiAobV92bSkK
ICAgICAgICAgICAgIG1fdm0tPnNldFN0YWNrUG9pbnRlckF0Vk1FbnRyeShudWxscHRyKTsKLSAg
ICAgICAgbV9vd25lclRocmVhZElEID0gc3RkOjp0aHJlYWQ6OmlkKCk7Ci0gICAgICAgIG1fbG9j
ay51bmxvY2soKTsKKworICAgICAgICBpZiAoIW1faGFzRXhjbHVzaXZlVGhyZWFkKSB7CisgICAg
ICAgICAgICBtX293bmVyVGhyZWFkSUQgPSBzdGQ6OnRocmVhZDo6aWQoKTsKKyAgICAgICAgICAg
IG1fbG9jay51bmxvY2soKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMTYzLDEyICsxNzEs
MjAgQEAgdm9pZCBKU0xvY2s6OnVubG9jayhFeGVjU3RhdGUqIGV4ZWMpCiAKIGJvb2wgSlNMb2Nr
OjpjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpCiB7CisgICAgQVNTRVJUKCFtX2hhc0V4Y2x1
c2l2ZVRocmVhZCB8fCAoZXhjbHVzaXZlVGhyZWFkKCkgPT0gc3RkOjp0aGlzX3RocmVhZDo6Z2V0
X2lkKCkpKTsKKyAgICBpZiAobV9oYXNFeGNsdXNpdmVUaHJlYWQpCisgICAgICAgIHJldHVybiAh
IW1fbG9ja0NvdW50OwogICAgIHJldHVybiBtX293bmVyVGhyZWFkSUQgPT0gc3RkOjp0aGlzX3Ro
cmVhZDo6Z2V0X2lkKCk7CiB9CiAKIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVtYmVy
IG9mIGxvY2tzIHRoYXQgd2VyZSBkcm9wcGVkLgogdW5zaWduZWQgSlNMb2NrOjpkcm9wQWxsTG9j
a3MoRHJvcEFsbExvY2tzKiBkcm9wcGVyKQogeworICAgIGlmIChtX2hhc0V4Y2x1c2l2ZVRocmVh
ZCkgeworICAgICAgICBBU1NFUlQoZXhjbHVzaXZlVGhyZWFkKCkgPT0gc3RkOjp0aGlzX3RocmVh
ZDo6Z2V0X2lkKCkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICAvLyBDaGVjayBp
ZiB0aGlzIHRocmVhZCBpcyBjdXJyZW50bHkgaG9sZGluZyB0aGUgbG9jay4KICAgICAvLyBGSVhN
RTogTWF5YmUgd2Ugd2FudCB0byByZXF1aXJlIHRoaXMsIGd1YXJkIHdpdGggYW4gQVNTRVJUPwog
ICAgIGlmICghY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSkKQEAgLTE5Myw2ICsyMDksOCBA
QCB1bnNpZ25lZCBKU0xvY2s6OmRyb3BBbGxMb2NrcyhEcm9wQWxsTG9jCiAKIHZvaWQgSlNMb2Nr
OjpncmFiQWxsTG9ja3MoRHJvcEFsbExvY2tzKiBkcm9wcGVyLCB1bnNpZ25lZCBkcm9wcGVkTG9j
a0NvdW50KQogeworICAgIEFTU0VSVCghbV9oYXNFeGNsdXNpdmVUaHJlYWQgfHwgIWRyb3BwZWRM
b2NrQ291bnQpOworCiAgICAgLy8gSWYgbm8gbG9ja3Mgd2VyZSBkcm9wcGVkLCBub3RoaW5nIHRv
IGRvIQogICAgIGlmICghZHJvcHBlZExvY2tDb3VudCkKICAgICAgICAgcmV0dXJuOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJKHJldmlzaW9uIDE2NDYwNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC05NCw2ICs5NCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBWTSogdm0oKSB7IHJl
dHVybiBtX3ZtOyB9CiAKKyAgICAgICAgYm9vbCBoYXNFeGNsdXNpdmVUaHJlYWQoKSBjb25zdCB7
IHJldHVybiBtX2hhc0V4Y2x1c2l2ZVRocmVhZDsgfQorICAgICAgICBzdGQ6OnRocmVhZDo6aWQg
ZXhjbHVzaXZlVGhyZWFkKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1f
aGFzRXhjbHVzaXZlVGhyZWFkKTsKKyAgICAgICAgICAgIHJldHVybiBtX293bmVyVGhyZWFkSUQ7
CisgICAgICAgIH0KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRFeGNsdXNpdmVU
aHJlYWQoc3RkOjp0aHJlYWQ6OmlkKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBj
dXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpOwogCiAgICAgICAgIHZvaWQgd2lsbERlc3Ryb3lW
TShWTSopOwpAQCAtMTI5LDYgKzEzNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGQ6
OnRocmVhZDo6aWQgbV9vd25lclRocmVhZElEOwogICAgICAgICBpbnRwdHJfdCBtX2xvY2tDb3Vu
dDsKICAgICAgICAgdW5zaWduZWQgbV9sb2NrRHJvcERlcHRoOworICAgICAgICBib29sIG1faGFz
RXhjbHVzaXZlVGhyZWFkOwogICAgICAgICBWTSogbV92bTsKICAgICB9OwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAxNjQ2MDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw3ICsy
MDgsNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjaWYgRU5B
QkxFKFJFR0VYUF9UUkFDSU5HKQogICAgICwgbV9ydFRyYWNlTGlzdChuZXcgUlRUcmFjZUxpc3Qo
KSkKICNlbmRpZgotICAgICwgZXhjbHVzaXZlVGhyZWFkKDApCiAgICAgLCBtX25ld1N0cmluZ3NT
aW5jZUxhc3RIYXNoQ29ucygwKQogI2lmIEVOQUJMRShBU1NFTUJMRVIpCiAgICAgLCBtX2NhblVz
ZUFzc2VtYmxlcihlbmFibGVBc3NlbWJsZXIoZXhlY3V0YWJsZUFsbG9jYXRvcikpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE2NDYwNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2Myw3ICs0NjMs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUlRUcmFjZUxpc3QqIG1fcnRUcmFjZUxpc3Q7
CiAjZW5kaWYKIAotICAgICAgICBUaHJlYWRJZGVudGlmaWVyIGV4Y2x1c2l2ZVRocmVhZDsKKyAg
ICAgICAgYm9vbCBoYXNFeGNsdXNpdmVUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2FwaUxvY2st
Pmhhc0V4Y2x1c2l2ZVRocmVhZCgpOyB9CisgICAgICAgIHN0ZDo6dGhyZWFkOjppZCBleGNsdXNp
dmVUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2FwaUxvY2stPmV4Y2x1c2l2ZVRocmVhZCgpOyB9
CisgICAgICAgIHZvaWQgc2V0RXhjbHVzaXZlVGhyZWFkKHN0ZDo6dGhyZWFkOjppZCB0aHJlYWRJ
ZCkgeyBtX2FwaUxvY2stPnNldEV4Y2x1c2l2ZVRocmVhZCh0aHJlYWRJZCk7IH0KIAogICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlc2V0RGF0ZUNhY2hlKCk7CiAKQEAgLTQ5MSwxMCAr
NDkzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaGF2ZUVub3VnaE5ld1N0cmlu
Z3NUb0hhc2hDb25zKCkgeyByZXR1cm4gbV9uZXdTdHJpbmdzU2luY2VMYXN0SGFzaENvbnMgPiBz
X21pbk51bWJlck9mTmV3U3RyaW5nc1RvSGFzaENvbnM7IH0KICAgICAgICAgdm9pZCByZXNldE5l
d1N0cmluZ3NTaW5jZUxhc3RIYXNoQ29ucygpIHsgbV9uZXdTdHJpbmdzU2luY2VMYXN0SGFzaENv
bnMgPSAwOyB9CiAKLSAgICAgICAgYm9vbCBjdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygp
IGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2FwaUxvY2stPmN1cnJlbnRU
aHJlYWRJc0hvbGRpbmdMb2NrKCkgfHwgZXhjbHVzaXZlVGhyZWFkID09IGN1cnJlbnRUaHJlYWQo
KTsKLSAgICAgICAgfQorICAgICAgICBib29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2Nr
KCkgY29uc3QgeyByZXR1cm4gbV9hcGlMb2NrLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygp
OyB9CiAKICAgICAgICAgSlNMb2NrJiBhcGlMb2NrKCkgeyByZXR1cm4gKm1fYXBpTG9jazsgfQog
ICAgICAgICBDb2RlQ2FjaGUqIGNvZGVDYWNoZSgpIHsgcmV0dXJuIG1fY29kZUNhY2hlLmdldCgp
OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjQ2MjApCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxNC0wMi0yNCAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTmVlZCB0byBpbml0aWFsaXpl
IFZNIHN0YWNrIGRhdGEgZXZlbiB3aGVuIHRoZSBWTSBpcyBvbiBhbiBleGNsdXNpdmUgdGhyZWFk
LgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTI5MjY1PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBv
cnRFeGNlcHRpb24pOgorICAgICAgICAtIEFkZGVkIGFuIGFzc2VydGlvbiB0byBlbnN1cmUgdGhh
dCB3ZSBhcmUgaG9sZGluZyB0aGUgSlNMb2NrLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNvbW1v
blZNKToKKyAgICAgICAgLSBVcGRhdGVkIHRvIHVzZSB0aGUgbmV3IFZNOjpzZXRFeGNsdXNpdmVU
aHJlYWQoKS4KKwogMjAxNC0wMi0yNCAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+
CiAKICAgICAgICAgV0syIEFWS2l0IGZ1bGxzY3JlZW4gZG9lc24ndCBkaXNwbGF5IHZpZGVvLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZp
c2lvbiAxNjQ2MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDcgQEAgSlNDOjpKU1ZhbHVlIGpzQXJy
YXkoSlNDOjpFeGVjU3RhdGUqIGV4ZQogCiB2b2lkIHJlcG9ydEV4Y2VwdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgZXhjZXB0aW9uLCBDYWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCkKIHsK
KyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElM
b2NrKCkpOwogICAgIGlmIChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oZXhjZXB0aW9u
KSkKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDE2NDYwNSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIy
NCw3ICsyMjQsNyBAQCBWTSogSlNET01XaW5kb3dCYXNlOjpjb21tb25WTSgpCiAgICAgICAgIHZt
LT5tYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcygpOwogICAgICAgICB2bS0+aGVhcC5tYWNo
aW5lVGhyZWFkcygpLmFkZEN1cnJlbnRUaHJlYWQoKTsKICNlbHNlCi0gICAgICAgIHZtLT5leGNs
dXNpdmVUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7CisgICAgICAgIHZtLT5zZXRFeGNsdXNpdmVU
aHJlYWQoc3RkOjp0aGlzX3RocmVhZDo6Z2V0X2lkKCkpOwogI2VuZGlmIC8vICFQTEFURk9STShJ
T1MpCiAgICAgICAgIGluaXROb3JtYWxXb3JsZENsaWVudERhdGEodm0pOwogICAgIH0K
</data>
<flag name="review"
          id="249236"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>