<?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>125736</bug_id>
          
          <creation_ts>2013-12-14 03:46:55 -0800</creation_ts>
          <short_desc>jsCStack: Fix exception handling for the baseline JIT.</short_desc>
          <delta_ts>2013-12-16 12:44:27 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>959816</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-14 03:46:55 -0800</bug_when>
    <thetext>After the LLINT exception handling fixes, the baseline JIT had 2 remaining issues in :
1. After returning from a native / host function, it did not pop the native / host frame before executing to exception handling code.  This resulted in the VM trying to &quot;unwind&quot; the native / host frame which is not possible.
2. The exception handling thunk (after returning from a native / host function) was wrongly popping a non-existant return address on the stack.  This caused the callerFrame pointer of the current frame to be popped off the stack, and havoc ensues.

Patch coming up soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959818</commentid>
    <comment_count>1</comment_count>
      <attachid>219247</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-14 04:05:23 -0800</bug_when>
    <thetext>Created attachment 219247
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959838</commentid>
    <comment_count>2</comment_count>
      <attachid>219247</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-14 09:37:17 -0800</bug_when>
    <thetext>Comment on attachment 219247
the patch.

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

&gt; Source/JavaScriptCore/jit/ThunkGenerators.cpp:-390
&gt; -    // Grab the return address.
&gt; -    jit.preserveReturnAddressAfterCall(JSInterfaceJIT::regT1);
&gt; -    

If you remove this, what is in regT1 that the storePtr below uses for its source?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959843</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-14 09:54:19 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 219247 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=219247&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/jit/ThunkGenerators.cpp:-390
&gt; &gt; -    // Grab the return address.
&gt; &gt; -    jit.preserveReturnAddressAfterCall(JSInterfaceJIT::regT1);
&gt; &gt; -    
&gt; 
&gt; If you remove this, what is in regT1 that the storePtr below uses for its source?

You are right.  This is not correct.  Will take another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959855</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-14 12:14:45 -0800</bug_when>
    <thetext>&gt; (In reply to comment #2)
&gt; &gt; If you remove this, what is in regT1 that the storePtr below uses for its source?

This turned out to be a non-issue.  It was storing regT1 into VM::m_exceptionLocation, but no one uses VM::m_exceptionLocation anymore.  So, I simply removed the dead code.

That said, while investigating this, I thought to re-test a scenario that I thought was caused by &lt;https://bugs.webkit.org/show_bug.cgi?id=125694&gt; (trying to reduce a test case for it was what led to my discovering https://bugs.webkit.org/show_bug.cgi?id=125694).  It turned out that that scenario is still not resolved.  Here&apos;s the scenario in question:

    function b() {
        try {
            throw { }
        } catch(e) {
            throw e;
        }
    }

    try {
        var array = [ 1 ];
        array.forEach(b);
    } catch (e) {
        print(&quot;Caught in a(): &quot; + e); // This line is key to reproducing the issue.
    }

This results in an alignment trap in callToNativeFunction.  Some debugging reveals that the stack was already misaligned a lot further back in C code before we got to the callToNativeFunction call that fell on the trap.  The damage was done elsewhere and just happened to be discovered here.

Another issue is scenario:

    function b() {
          throw { }
    }

    // A try catch block around the Array.forEach() is necessary for reproducing the issue.
    try {
        var array = [ 1 ];
        array.forEach(b);
    } catch (e) {
    }

With this, I get a crash in __CFRunLoopFindMode().

The first issue may or may not have to do with exception handling, but the second one obviously is related.  These issue do not reproduce if only run on the LLINT.  They are baseline JIT issues.

Continuing to investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959873</commentid>
    <comment_count>5</comment_count>
      <attachid>219261</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-14 16:49:56 -0800</bug_when>
    <thetext>Created attachment 219261
patch 2

All issues fixed now AFAIK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960160</commentid>
    <comment_count>6</comment_count>
      <attachid>219261</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-12-16 11:42:30 -0800</bug_when>
    <thetext>Comment on attachment 219261
patch 2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960186</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-16 12:44:27 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r160656 on the jsCStack branch: &lt;http://trac.webkit.org/r160656&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219247</attachid>
            <date>2013-12-14 04:05:23 -0800</date>
            <delta_ts>2013-12-14 16:49:56 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-125736.patch</filename>
            <type>text/plain</type>
            <size>5031</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwNTk0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDEzLTEyLTE0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXggZXhjZXB0aW9uIGhhbmRsaW5nIGZvciB0aGUgYmFzZWxpbmUgSklULgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1NzM2LgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjp1bndpbmRDYWxsRnJhbWUpOgorICAgICAgICBSZW1v
dmVkIHNvbWUgdW5uZWVkZWQgY29kZS4KKyAgICAgICAgMS4gUmVtb3ZlZCB1c2Ugb2YgdGhlIG9s
ZENvZGVCbG9jayB2YXJpYWJsZSB3aGljaCBpcyBvbmx5IGEgY29weSBvZgorICAgICAgICAgICB0
aGUgY29kZUJsb2NrIHZhcmlhYmxlLiBUaGVyZSBpcyBubyBsb25nZXIgYW55IHJlYXNvbiB0byB1
c2UgYSBjb3B5LgorICAgICAgICAgICBKdXN0IHVzZSBjb2RlQmxvY2sgZGlyZWN0bHkgaW5zdGVh
ZC4KKyAgICAgICAgMi4gVGhlcmUncyBubyBuZWVkIHRvIHNldCBWTTo6dG9wQ2FsbEZyYW1lLiBU
aGUgVW53aW5kRnVuY3RvcgorICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdGhlIGlu
Y29taW5nIGNhbGxGcmFtZSBwb2ludGVyIHJlZmVyZW5jZSB0bworICAgICAgICAgICB0aGUgZnJh
bWUgdGhhdCBzaG91bGQgYmUgY2F0Y2hpbmcgLyBoYW5kbGluZyB0aGUgZXhjZXB0aW9uLCBhbmQg
dGhhdAorICAgICAgICAgICBpcyBhZGVxdWF0ZSBmb3Igd2hhdCB3ZSBuZWVkLgorCisgICAgICAg
ICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6Om5hdGl2ZUZvckdlbmVy
YXRvcik6CisgICAgICAgIEZpeGVkIDIgaXNzdWVzOgorICAgICAgICAxLiBBZnRlciByZXR1cm5p
bmcgZnJvbSBhIG5hdGl2ZSAvIGhvc3QgZnVuY3Rpb24sIHRoZSB0aHVuayBkaWQgbm90IHBvcAor
ICAgICAgICAgICB0aGUgbmF0aXZlIC8gaG9zdCBmcmFtZSBiZWZvcmUgZXhlY3V0aW5nIGV4Y2Vw
dGlvbiBoYW5kbGluZyBjb2RlLgorICAgICAgICAgICBUaGlzIHJlc3VsdGVkIGluIHRoZSBWTSB0
cnlpbmcgdG8gInVud2luZCIgdGhlIG5hdGl2ZSAvIGhvc3QgZnJhbWUKKyAgICAgICAgICAgd2hp
Y2ggaXMgbm90IHBvc3NpYmxlLCBhbmQgY3Jhc2hlcyBlbnN1ZS4KKyAgICAgICAgMi4gQWZ0ZXIg
cmV0dXJuaW5nIGZyb20gYSBuYXRpdmUgLyBob3N0IGZ1bmN0aW9uIGFuZCBkaXNjb3ZlcmluZyB0
aGUKKyAgICAgICAgICAgbmVlZCB0byBoYW5kbGUgYW4gZXhjZXB0aW9uLCB0aGUgdGh1bmsgd2Fz
IHdyb25nbHkgcG9wcGluZyBhCisgICAgICAgICAgIG5vbi1leGlzdGFudCByZXR1cm4gYWRkcmVz
cyBvZmYgdGhlIHN0YWNrLiBUaGlzIGNhdXNlZCB0aGUKKyAgICAgICAgICAgY2FsbGVyRnJhbWUg
cG9pbnRlciBvZiB0aGUgY3VycmVudCBmcmFtZSB0byBiZSBwb3BwZWQgb2ZmIHRoZSBzdGFjaywK
KyAgICAgICAgICAgYW5kIGhhdm9jIGVuc3Vlcy4KKwogMjAxMy0xMi0xMyAgTWljaGFlbCBTYWJv
ZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBDU3RhY2sgQnJhbmNoOiBSZW1vdmUg
V1RGX1VTRV9TRVBBUkFURV9DX0FORF9KU19TVEFDSwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxNjA1OTQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MjEsNyArNDIxLDYgQEAgc3RhdGljIGJvb2wgdW53aW5kQ2FsbEZy
YW1lKFN0YWNrVmlzaXRvcgogewogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gdmlzaXRvci0+
Y2FsbEZyYW1lKCk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSB2aXNpdG9yLT5jb2RlQmxv
Y2soKTsKLSAgICBDb2RlQmxvY2sqIG9sZENvZGVCbG9jayA9IGNvZGVCbG9jazsKICAgICBKU1Nj
b3BlKiBzY29wZSA9IGNhbGxGcmFtZS0+c2NvcGUoKTsKIAogICAgIGlmIChEZWJ1Z2dlciogZGVi
dWdnZXIgPSBjYWxsRnJhbWUtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkgewpA
QCAtNDMyLDE2ICs0MzEsMTYgQEAgc3RhdGljIGJvb2wgdW53aW5kQ2FsbEZyYW1lKFN0YWNrVmlz
aXRvcgogICAgIH0KIAogICAgIEpTVmFsdWUgYWN0aXZhdGlvbjsKLSAgICBpZiAob2xkQ29kZUJs
b2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSAmJiBvbGRDb2RlQmxvY2stPm5lZWRzQWN0
aXZhdGlvbigpKSB7CisgICAgaWYgKGNvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNv
ZGUgJiYgY29kZUJsb2NrLT5uZWVkc0FjdGl2YXRpb24oKSkgewogI2lmIEVOQUJMRShERkdfSklU
KQogICAgICAgICBSRUxFQVNFX0FTU0VSVCghdmlzaXRvci0+aXNJbmxpbmVkRnJhbWUoKSk7CiAj
ZW5kaWYKLSAgICAgICAgYWN0aXZhdGlvbiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihvbGRDb2Rl
QmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpLm9mZnNldCgpKS5qc1ZhbHVlKCk7CisgICAgICAg
IGFjdGl2YXRpb24gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoY29kZUJsb2NrLT5hY3RpdmF0aW9u
UmVnaXN0ZXIoKS5vZmZzZXQoKSkuanNWYWx1ZSgpOwogICAgICAgICBpZiAoYWN0aXZhdGlvbikK
ICAgICAgICAgICAgIGpzQ2FzdDxKU0FjdGl2YXRpb24qPihhY3RpdmF0aW9uKS0+dGVhck9mZigq
c2NvcGUtPnZtKCkpOwogICAgIH0KIAotICAgIGlmIChvbGRDb2RlQmxvY2stPmNvZGVUeXBlKCkg
PT0gRnVuY3Rpb25Db2RlICYmIG9sZENvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpKSB7CisgICAg
aWYgKGNvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYgY29kZUJsb2NrLT51
c2VzQXJndW1lbnRzKCkpIHsKICAgICAgICAgaWYgKEFyZ3VtZW50cyogYXJndW1lbnRzID0gdmlz
aXRvci0+ZXhpc3RpbmdBcmd1bWVudHMoKSkgewogICAgICAgICAgICAgaWYgKGFjdGl2YXRpb24p
CiAgICAgICAgICAgICAgICAgYXJndW1lbnRzLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihjYWxsRnJh
bWUsIGpzQ2FzdDxKU0FjdGl2YXRpb24qPihhY3RpdmF0aW9uKSk7CkBAIC00NTUsMTQgKzQ1NCw3
IEBAIHN0YXRpYyBib29sIHVud2luZENhbGxGcmFtZShTdGFja1Zpc2l0b3IKICAgICB9CiAKICAg
ICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwotICAg
IGlmIChjYWxsZXJGcmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKSkgewotICAgICAgICBpZiAoY2Fs
bGVyRnJhbWUtPnZtRW50cnlTZW50aW5lbENhbGxlckZyYW1lKCkpCi0gICAgICAgICAgICBjYWxs
RnJhbWUtPnZtKCkudG9wQ2FsbEZyYW1lID0gY2FsbGVyRnJhbWUtPnZtRW50cnlTZW50aW5lbENh
bGxlckZyYW1lKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+dm0oKS50
b3BDYWxsRnJhbWUgPSBjYWxsRnJhbWU7IC8vIF9oYW5kbGVVbmNhdWdodEV4Y2VwdGlvbiB3aWxs
IHBvcCB0aGUgZnJhbWUgb2ZmLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiAhY2FsbGVyRnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVsKCk7
CiB9CiAKIHN0YXRpYyBTdGFja0ZyYW1lQ29kZVR5cGUgZ2V0U3RhY2tGcmFtZUNvZGVUeXBlKFN0
YWNrVmlzaXRvciYgdmlzaXRvcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDE2MDU5NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDYg
KzM2Nyw4IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlRm9yR2UKICAgICBi
cmVha3BvaW50KCk7CiAjZW5kaWYKIAorICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwor
CiAgICAgLy8gQ2hlY2sgZm9yIGFuIGV4Y2VwdGlvbgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
aml0LmxvYWQ2NCh2bS0+YWRkcmVzc09mRXhjZXB0aW9uKCksIEpTSW50ZXJmYWNlSklUOjpyZWdU
Mik7CkBAIC0zNzksMTUgKzM4MSwxMSBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5h
dGl2ZUZvckdlCiAjZW5kaWYKIAogICAgIC8vIFJldHVybi4KLSAgICBqaXQuZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoKTsKICAgICBqaXQucmV0KCk7CiAKICAgICAvLyBIYW5kbGUgYW4gZXhjZXB0aW9u
CiAgICAgZXhjZXB0aW9uSGFuZGxlci5saW5rKCZqaXQpOwogCi0gICAgLy8gR3JhYiB0aGUgcmV0
dXJuIGFkZHJlc3MuCi0gICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChKU0lu
dGVyZmFjZUpJVDo6cmVnVDEpOwotICAgIAogICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpU
cnVzdGVkSW1tUHRyKCZ2bS0+ZXhjZXB0aW9uTG9jYXRpb24pLCBKU0ludGVyZmFjZUpJVDo6cmVn
VDIpOwogICAgIGppdC5zdG9yZVB0cihKU0ludGVyZmFjZUpJVDo6cmVnVDEsIEpTSW50ZXJmYWNl
SklUOjpyZWdUMik7CiAK
</data>
<flag name="review"
          id="242842"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219261</attachid>
            <date>2013-12-14 16:49:56 -0800</date>
            <delta_ts>2013-12-16 11:42:30 -0800</delta_ts>
            <desc>patch 2</desc>
            <filename>bug-125736.patch</filename>
            <type>text/plain</type>
            <size>10645</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwNjA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDEzLTEyLTE0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXggZXhjZXB0aW9uIGhhbmRsaW5nIGZvciB0aGUgYmFzZWxpbmUgSklULgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1NzM2LgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjp1bndpbmRDYWxsRnJhbWUpOgorICAgICAgICBSZW1v
dmVkIHNvbWUgdW5uZWVkZWQgY29kZS4KKyAgICAgICAgMS4gUmVtb3ZlZCB1c2Ugb2YgdGhlIG9s
ZENvZGVCbG9jayB2YXJpYWJsZSB3aGljaCBpcyBvbmx5IGEgY29weSBvZgorICAgICAgICAgICB0
aGUgY29kZUJsb2NrIHZhcmlhYmxlLiBUaGVyZSBpcyBubyBsb25nZXIgYW55IHJlYXNvbiB0byB1
c2UgYSBjb3B5LgorICAgICAgICAgICBKdXN0IHVzZSBjb2RlQmxvY2sgZGlyZWN0bHkgaW5zdGVh
ZC4KKyAgICAgICAgMi4gVGhlcmUncyBubyBuZWVkIHRvIHNldCBWTTo6dG9wQ2FsbEZyYW1lLiBU
aGUgVW53aW5kRnVuY3RvcgorICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdGhlIGlu
Y29taW5nIGNhbGxGcmFtZSBwb2ludGVyIHJlZmVyZW5jZSB0bworICAgICAgICAgICB0aGUgZnJh
bWUgdGhhdCBzaG91bGQgYmUgY2F0Y2hpbmcgLyBoYW5kbGluZyB0aGUgZXhjZXB0aW9uLCBhbmQg
dGhhdAorICAgICAgICAgICBpcyBhZGVxdWF0ZSBmb3Igd2hhdCB3ZSBuZWVkLgorCisgICAgICAg
ICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2F0Y2gp
OgorICAgICAgICAtIFJlc3RvcmVkIHNwLgorCisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRpdmVDYWxsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NhdGNoKToKKyAgICAgICAgKiBqaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6bmF0aXZlRm9yR2VuZXJhdG9yKToKKyAgICAg
ICAgRml4ZWQgMiBpc3N1ZXM6CisgICAgICAgIDEuIEFmdGVyIHJldHVybmluZyBmcm9tIGEgbmF0
aXZlIC8gaG9zdCBmdW5jdGlvbiwgdGhlIHRodW5rIGRpZCBub3QgcG9wCisgICAgICAgICAgIHRo
ZSBuYXRpdmUgLyBob3N0IGZyYW1lIGJlZm9yZSBleGVjdXRpbmcgZXhjZXB0aW9uIGhhbmRsaW5n
IGNvZGUuCisgICAgICAgICAgIFRoaXMgcmVzdWx0ZWQgaW4gdGhlIFZNIHRyeWluZyB0byAidW53
aW5kIiB0aGUgbmF0aXZlIC8gaG9zdCBmcmFtZQorICAgICAgICAgICB3aGljaCBpcyBub3QgcG9z
c2libGUsIGFuZCBjcmFzaGVzIGVuc3VlLgorICAgICAgICAyLiBBZnRlciByZXR1cm5pbmcgZnJv
bSBhIG5hdGl2ZSAvIGhvc3QgZnVuY3Rpb24gYW5kIGRpc2NvdmVyaW5nIHRoZQorICAgICAgICAg
ICBuZWVkIHRvIGhhbmRsZSBhbiBleGNlcHRpb24sIHRoZSB0aHVuayB3YXMgd3JvbmdseSBwb3Bw
aW5nIGEKKyAgICAgICAgICAgbm9uLWV4aXN0YW50IHJldHVybiBhZGRyZXNzIG9mZiB0aGUgc3Rh
Y2suIFRoaXMgY2F1c2VkIHRoZQorICAgICAgICAgICBjYWxsZXJGcmFtZSBwb2ludGVyIG9mIHRo
ZSBjdXJyZW50IGZyYW1lIHRvIGJlIHBvcHBlZCBvZmYgdGhlIHN0YWNrLAorICAgICAgICAgICBh
bmQgaGF2b2MgZW5zdWVzLgorCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbToKKyAgICAgICAgLSBVcGRhdGVkIHRvIG1hdGNoIGV4Y2VwdGlvbiBoYW5kbGluZyBj
b2RlIGluIExvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20uCisKKyAgICAgICAgKiBydW50aW1lL1ZN
Lmg6CisgICAgICAgIC0gUmVtb3ZlZCBkZWFkIGNvZGUuCisKIDIwMTMtMTItMTQgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBjU3RhY2s6IENhbGxpbmcgaW50byBG
VEwtZ2VuZXJhdGVkIGNvZGUgc2hvdWxkIGJlIGZhc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTYwNTk0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDIxLDcgKzQyMSw2IEBAIHN0YXRpYyBib29sIHVud2luZENhbGxG
cmFtZShTdGFja1Zpc2l0b3IKIHsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHZpc2l0b3It
PmNhbGxGcmFtZSgpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gdmlzaXRvci0+Y29kZUJs
b2NrKCk7Ci0gICAgQ29kZUJsb2NrKiBvbGRDb2RlQmxvY2sgPSBjb2RlQmxvY2s7CiAgICAgSlNT
Y29wZSogc2NvcGUgPSBjYWxsRnJhbWUtPnNjb3BlKCk7CiAKICAgICBpZiAoRGVidWdnZXIqIGRl
YnVnZ2VyID0gY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpIHsK
QEAgLTQzMiwxNiArNDMxLDE2IEBAIHN0YXRpYyBib29sIHVud2luZENhbGxGcmFtZShTdGFja1Zp
c2l0b3IKICAgICB9CiAKICAgICBKU1ZhbHVlIGFjdGl2YXRpb247Ci0gICAgaWYgKG9sZENvZGVC
bG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYgb2xkQ29kZUJsb2NrLT5uZWVkc0Fj
dGl2YXRpb24oKSkgeworICAgIGlmIChjb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25D
b2RlICYmIGNvZGVCbG9jay0+bmVlZHNBY3RpdmF0aW9uKCkpIHsKICNpZiBFTkFCTEUoREZHX0pJ
VCkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXZpc2l0b3ItPmlzSW5saW5lZEZyYW1lKCkpOwog
I2VuZGlmCi0gICAgICAgIGFjdGl2YXRpb24gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIob2xkQ29k
ZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKS5vZmZzZXQoKSkuanNWYWx1ZSgpOworICAgICAg
ICBhY3RpdmF0aW9uID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGNvZGVCbG9jay0+YWN0aXZhdGlv
blJlZ2lzdGVyKCkub2Zmc2V0KCkpLmpzVmFsdWUoKTsKICAgICAgICAgaWYgKGFjdGl2YXRpb24p
CiAgICAgICAgICAgICBqc0Nhc3Q8SlNBY3RpdmF0aW9uKj4oYWN0aXZhdGlvbiktPnRlYXJPZmYo
KnNjb3BlLT52bSgpKTsKICAgICB9CiAKLSAgICBpZiAob2xkQ29kZUJsb2NrLT5jb2RlVHlwZSgp
ID09IEZ1bmN0aW9uQ29kZSAmJiBvbGRDb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSkgeworICAg
IGlmIChjb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlICYmIGNvZGVCbG9jay0+
dXNlc0FyZ3VtZW50cygpKSB7CiAgICAgICAgIGlmIChBcmd1bWVudHMqIGFyZ3VtZW50cyA9IHZp
c2l0b3ItPmV4aXN0aW5nQXJndW1lbnRzKCkpIHsKICAgICAgICAgICAgIGlmIChhY3RpdmF0aW9u
KQogICAgICAgICAgICAgICAgIGFyZ3VtZW50cy0+ZGlkVGVhck9mZkFjdGl2YXRpb24oY2FsbEZy
YW1lLCBqc0Nhc3Q8SlNBY3RpdmF0aW9uKj4oYWN0aXZhdGlvbikpOwpAQCAtNDU1LDE0ICs0NTQs
NyBAQCBzdGF0aWMgYm9vbCB1bndpbmRDYWxsRnJhbWUoU3RhY2tWaXNpdG9yCiAgICAgfQogCiAg
ICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKLSAg
ICBpZiAoY2FsbGVyRnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVsKCkpIHsKLSAgICAgICAgaWYgKGNh
bGxlckZyYW1lLT52bUVudHJ5U2VudGluZWxDYWxsZXJGcmFtZSgpKQotICAgICAgICAgICAgY2Fs
bEZyYW1lLT52bSgpLnRvcENhbGxGcmFtZSA9IGNhbGxlckZyYW1lLT52bUVudHJ5U2VudGluZWxD
YWxsZXJGcmFtZSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjYWxsRnJhbWUtPnZtKCku
dG9wQ2FsbEZyYW1lID0gY2FsbEZyYW1lOyAvLyBfaGFuZGxlVW5jYXVnaHRFeGNlcHRpb24gd2ls
bCBwb3AgdGhlIGZyYW1lIG9mZi4KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gIWNhbGxlckZyYW1lLT5pc1ZNRW50cnlTZW50aW5lbCgp
OwogfQogCiBzdGF0aWMgU3RhY2tGcmFtZUNvZGVUeXBlIGdldFN0YWNrRnJhbWVDb2RlVHlwZShT
dGFja1Zpc2l0b3ImIHZpc2l0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAxNjA1OTQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYg
KzM5LDcgQEAKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
SlNWYXJpYWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJN
YXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5o
IgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogCkBAIC0xMTksMTEgKzEyMCw2IEBAIEpJ
VDo6Q29kZVJlZiBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTmF0aXYKICAgICAvLyBIYW5kbGUgYW4g
ZXhjZXB0aW9uCiAgICAgc2F3RXhjZXB0aW9uLmxpbmsodGhpcyk7CiAKLSAgICAvLyBHcmFiIHRo
ZSByZXR1cm4gYWRkcmVzcy4KLSAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwocmVn
VDEpOwotCi0gICAgbW92ZShUcnVzdGVkSW1tUHRyKCZ2bS0+ZXhjZXB0aW9uTG9jYXRpb24pLCBy
ZWdUMik7Ci0gICAgc3RvcmVQdHIocmVnVDEsIHJlZ1QyKTsKICAgICBzdG9yZVB0cihjYWxsRnJh
bWVSZWdpc3RlciwgJm1fdm0tPnRvcENhbGxGcmFtZSk7CiAKICNpZiBDUFUoWDg2KQpAQCAtOTI3
LDYgKzkyMywxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3VyCiAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fdm0pLCByZWdUMyk7CiAgICAgLy8gb3BlcmF0aW9uVGhy
b3cgcmV0dXJucyB0aGUgY2FsbEZyYW1lIGZvciB0aGUgaGFuZGxlci4KICAgICBsb2FkMzIoQWRk
cmVzcyhyZWdUMywgVk06OmNhbGxGcmFtZUZvclRocm93T2Zmc2V0KCkpLCBjYWxsRnJhbWVSZWdp
c3Rlcik7CisKKyAgICBzaXplX3QgZnJhbWVFeHRlbnQgPSBKSVQ6OmZyYW1lUmVnaXN0ZXJDb3Vu
dEZvcihjb2RlQmxvY2soKSkgKiBzaXplb2YoUmVnaXN0ZXIpICsgbWF4RnJhbWVFeHRlbnRGb3JT
bG93UGF0aENhbGw7CisgICAgQVNTRVJUKGZyYW1lRXh0ZW50ID09IFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIGZyYW1lRXh0ZW50KSk7CisgICAgYWRkUHRy
KFRydXN0ZWRJbW0zMigtZnJhbWVFeHRlbnQpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2lu
dGVyUmVnaXN0ZXIpOworCiAgICAgLy8gTm93IHN0b3JlIHRoZSBleGNlcHRpb24gcmV0dXJuZWQg
Ynkgb3BlcmF0aW9uVGhyb3cuCiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDMsIFZNOjpleGNlcHRp
b25PZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSks
IHJlZ1QwKTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMywgVk06OmV4Y2VwdGlvbk9mZnNldCgp
ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZWdUMSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE2MDU5
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNp
bmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlNsb3dQ
YXRoQ2FsbC5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogCkBAIC02MzUsNiArNjM2
LDExIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKIHsKICAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIobV92bSksIHJlZ1QzKTsKICAgICBsb2FkNjQoQWRkcmVzcyhyZWdU
MywgVk06OmNhbGxGcmFtZUZvclRocm93T2Zmc2V0KCkpLCBjYWxsRnJhbWVSZWdpc3Rlcik7CisK
KyAgICBzaXplX3QgZnJhbWVFeHRlbnQgPSBKSVQ6OmZyYW1lUmVnaXN0ZXJDb3VudEZvcihjb2Rl
QmxvY2soKSkgKiBzaXplb2YoUmVnaXN0ZXIpICsgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENh
bGw7CisgICAgQVNTRVJUKGZyYW1lRXh0ZW50ID09IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihz
dGFja0FsaWdubWVudEJ5dGVzKCksIGZyYW1lRXh0ZW50KSk7CisgICAgYWRkUHRyKFRydXN0ZWRJ
bW0zMigtZnJhbWVFeHRlbnQpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0
ZXIpOworCiAgICAgbG9hZDY0KEFkZHJlc3MocmVnVDMsIFZNOjpleGNlcHRpb25PZmZzZXQoKSks
IHJlZ1QwKTsKICAgICBzdG9yZTY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZSgpKSksIEFkZHJlc3MocmVnVDMsIFZNOjpleGNlcHRpb25PZmZzZXQoKSkpOwogICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZp
c2lvbiAxNjA1OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Nyw2ICszNjcsOCBAQCBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIG5hdGl2ZUZvckdlCiAgICAgYnJlYWtwb2ludCgpOwogI2VuZGlmCiAKKyAg
ICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKwogICAgIC8vIENoZWNrIGZvciBhbiBleGNl
cHRpb24KICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGppdC5sb2FkNjQodm0tPmFkZHJlc3NPZkV4
Y2VwdGlvbigpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwpAQCAtMzc5LDE4ICszODEsMTEgQEAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZQogI2VuZGlmCiAKICAgICAv
LyBSZXR1cm4uCi0gICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgaml0LnJldCgp
OwogCiAgICAgLy8gSGFuZGxlIGFuIGV4Y2VwdGlvbgogICAgIGV4Y2VwdGlvbkhhbmRsZXIubGlu
aygmaml0KTsKIAotICAgIC8vIEdyYWIgdGhlIHJldHVybiBhZGRyZXNzLgotICAgIGppdC5wcmVz
ZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxKTsKLSAgICAK
LSAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cigmdm0tPmV4Y2VwdGlv
bkxvY2F0aW9uKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKTsKLSAgICBqaXQuc3RvcmVQdHIoSlNJ
bnRlcmZhY2VKSVQ6OnJlZ1QxLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwotCiAgICAgaml0LnN0
b3JlUHRyKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtLT50b3BDYWxsRnJh
bWUpOwogCiAjaWYgQ1BVKFg4NikgJiYgVVNFKEpTVkFMVUUzMl82NCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCShyZXZpc2lvbiAxNjA1OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMzQ0LDcgKzM0
NCw3IEBAIG1hY3JvIG1ha2VIb3N0RnVuY3Rpb25DYWxsKGVudHJ5LCB0ZW1wKQogZW5kCiAKIF9o
YW5kbGVVbmNhdWdodEV4Y2VwdGlvbjoKLSAgICBsb2FkcCBTY29wZUNoYWluW2Nmcl0sIHQzCisg
ICAgbG9hZHAgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDMKICAgICBhbmRwIE1h
cmtlZEJsb2NrTWFzaywgdDMKICAgICBsb2FkcCBNYXJrZWRCbG9jazo6bV93ZWFrU2V0ICsgV2Vh
a1NldDo6bV92bVt0M10sIHQzCiAgICAgbG9hZHAgVk06OmNhbGxGcmFtZUZvclRocm93W3QzXSwg
Y2ZyCkBAIC0zNTIsMTAgKzM1MiwxMCBAQCBfaGFuZGxlVW5jYXVnaHRFeGNlcHRpb246CiAgICAg
IyBTbyBmYXIsIHdlJ3ZlIHVud291bmQgdGhlIHN0YWNrIHRvIHRoZSBmcmFtZSBqdXN0IGJlbG93
IHRoZSBzZW50aW5lbCBmcmFtZS4KICAgICAjIFdlIG5lZWQgdG8gcG9wIHRvIHRoZSBzZW50aW5l
bCBmcmFtZSBhbmQgZG8gdGhlIG5lY2Vzc2FyeSBjbGVhbiB1cCBmb3IKICAgICAjIHJldHVybmlu
ZyB0byB0aGUgY2FsbGVyIEMgZnJhbWUuCi0gICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgY2Zy
CisgICAgbG9hZHAgQ2FsbGVyRnJhbWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIGNmcgogCi0gICAg
bG9hZHAgQ2FsbGVlW2Nmcl0sIHQzICMgVk0udG9wQ2FsbEZyYW1lCi0gICAgbG9hZHAgU2NvcGVD
aGFpbltjZnJdLCB0NgorICAgIGxvYWRwIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDMg
IyBWTS50b3BDYWxsRnJhbWUKKyAgICBsb2FkcCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtj
ZnJdLCB0NgogICAgIHN0b3JlcCB0NiwgW3QzXQogCiAgICAgY2FsbFRvSmF2YVNjcmlwdEVwaWxv
Z3VlKCkKQEAgLTIwMDIsMTAgKzIwMDIsMTIgQEAgX2xsaW50X29wX2NhdGNoOgogICAgICMgdGhl
IGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190cmFtcG9s
aW5lKS4KICAgICAjIFRoZSB0aHJvd2luZyBjb2RlIG11c3QgaGF2ZSBrbm93biB0aGF0IHdlIHdl
cmUgdGhyb3dpbmcgdG8gdGhlIGludGVycHJldGVyLAogICAgICMgYW5kIGhhdmUgc2V0IFZNOjp0
YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3cuCi0gICAgbG9hZHAgU2NvcGVDaGFpbltjZnJdLCB0
MworICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQzCiAgICAgYW5k
cCBNYXJrZWRCbG9ja01hc2ssIHQzCiAgICAgbG9hZHAgTWFya2VkQmxvY2s6Om1fd2Vha1NldCAr
IFdlYWtTZXQ6Om1fdm1bdDNdLCB0MwogICAgIGxvYWRwIFZNOjpjYWxsRnJhbWVGb3JUaHJvd1t0
M10sIGNmcgorICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQorCiAgICAgbG9hZGkg
Vk06OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCiAgICAgbG9hZGkgVk06Om1f
ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10sIHQwCiAgICAgbG9hZGkgVk06Om1fZXhjZXB0
aW9uICsgVGFnT2Zmc2V0W3QzXSwgdDEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkocmV2aXNpb24gMTYwNTk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkod29ya2luZyBjb3B5KQpAQCAtMzgxLDcgKzM4MSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzQXJyYXlDbGFzc0luZm87CiAgICAgICAgIGNv
bnN0IENsYXNzSW5mbyogY29uc3QganNGaW5hbE9iamVjdENsYXNzSW5mbzsKIAotICAgICAgICBS
ZXR1cm5BZGRyZXNzUHRyIGV4Y2VwdGlvbkxvY2F0aW9uOwogICAgICAgICBKU1ZhbHVlIGhvc3RD
YWxsUmV0dXJuVmFsdWU7CiAgICAgICAgIEV4ZWNTdGF0ZSogbmV3Q2FsbEZyYW1lUmV0dXJuVmFs
dWU7CiAgICAgICAgIEV4ZWNTdGF0ZSogY2FsbEZyYW1lRm9yVGhyb3c7Cg==
</data>
<flag name="review"
          id="242858"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>