<?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>116753</bug_id>
          
          <creation_ts>2013-05-24 20:28:53 -0700</creation_ts>
          <short_desc>Remove Interpreter::retrieveLastCaller().</short_desc>
          <delta_ts>2013-05-25 13:23:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>893551</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-05-24 20:28:53 -0700</bug_when>
    <thetext>Reduce the number of stack walking functions, and we&apos;re starting by removing Interpreter::retrieveLastCaller().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893559</commentid>
    <comment_count>1</comment_count>
      <attachid>202873</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-05-24 21:15:46 -0700</bug_when>
    <thetext>Created attachment 202873
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893564</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-05-24 21:44:20 -0700</bug_when>
    <thetext>I&apos;ve run the riun-javascriptcode-tests and the layout tests for:
    fast/js
    fast/regex
    ietestcenter/JavaScript
    sputnik

No new failures were seen.  The remaining layout tests are still slowly cooking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893568</commentid>
    <comment_count>3</comment_count>
      <attachid>202873</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-05-24 22:54:36 -0700</bug_when>
    <thetext>Comment on attachment 202873
the patch

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

r=me

&gt; Source/JavaScriptCore/API/JSContextRef.cpp:183
&gt; +    for (Vector&lt;StackFrame&gt;::const_iterator iter = stackTrace.begin(); iter &lt; stackTrace.end(); iter++) {

WebKit style prefers index over iterator in Vector iterations for a terse, easier-to-read code. (See http://www.webkit.org/coding/coding-style.html.)

&gt; Source/JavaScriptCore/interpreter/Interpreter.h:250
&gt; +        JS_EXPORT_PRIVATE void getStackTrace(Vector&lt;StackFrame&gt;&amp; results, unsigned maxStackSize = INT_MAX);

Since this is an unsigned, it should be UINT_MAX.

&gt; Source/WebCore/bindings/js/ScriptCallStackFactory.cpp:81
&gt; +    exec-&gt;interpreter()-&gt;getStackTrace(stackTrace);

You can pass maxStackSize here, and remove the code to check it below.

&gt; Source/WebCore/bindings/js/ScriptCallStackFactory.cpp:85
&gt; +    Vector&lt;StackFrame&gt;::const_iterator iter = stackTrace.begin();
&gt; +    iter++;
&gt; +    for (; iter &lt; stackTrace.end(); iter++) {
&gt; +        frames.append(ScriptCallFrame(iter-&gt;friendlyFunctionName(exec), iter-&gt;friendlySourceURL(), iter-&gt;friendlyLineNumber()));

This case particularly benefits from index-style iteration, since index-style iteration doesn&apos;t need the dummy iter++ at the start.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893633</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-05-25 13:23:21 -0700</bug_when>
    <thetext>Thanks for the review.  Addressed issues in Geoff&apos;s feedback.  Also fix 2 bugs in the patch:

1. In JSXMLHttpRequestCustom.cpp&apos;s JSXMLHttpRequest::send(), we need to explicitly specify size of the stackTrace Vector to guarantee that we have an entry at index 1.

2. In ScriptCallStackFactory.cpp&apos;s createScriptCallStack(), we need to increment maxStackSize by 1 before passing it to getStackTrace() since we&apos;re going to skip the 1st frame.

The updated patch has been tested with run-javascriptcore-tests and layout tests fast/js, fast/regex, ietestcenter/JavaScript, and sputnik.

Landed in r150690: &lt;http://trac.webkit.org/changeset/150690&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202873</attachid>
            <date>2013-05-24 21:15:46 -0700</date>
            <delta_ts>2013-05-24 22:54:36 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>bug-116753.patch</filename>
            <type>text/plain</type>
            <size>16503</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUwNjc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDEzLTA1LTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmUgSW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcigpLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2NzUzLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgcGFydCBvZiB0aGUgcmVm
YWN0b3JpbmcgZWZmb3J0IHRvIGdldCByaWQgb2YgZnVuY3Rpb25zIHdhbGtpbmcKKyAgICAgICAg
dGhlIEpTIHN0YWNrIGluIHRoZWlyIG93biB3YXkuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0
UmVmLmNwcDoKKyAgICAgICAgKEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZSk6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpJbnRlcnByZXRlcik6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OmFkZFN0YWNrVHJhY2VJZk5lY2Vzc2FyeSk6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKFN0YWNrRnJhbWUpOgorICAgICAgICAoSlNDOjpT
dGFja0ZyYW1lOjpTdGFja0ZyYW1lKToKKyAgICAgICAgKEludGVycHJldGVyKToKKyAgICAgICAg
KiBqc2MuY3BwOgorICAgICAgICAoZnVuY3Rpb25KU0NTdGFjayk6CisgICAgICAgICogcHJvZmls
ZXIvUHJvZmlsZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OlByb2ZpbGVHZW5lcmF0b3I6
OmFkZFBhcmVudEZvckNvbnNvbGVTdGFydCk6CisKIDIwMTMtMDUtMjQgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBmb3VydGhUaWVyOiBGVEwgYm9vbGlmeSBzaG91
bGQgc3VwcG9ydCBPYmplY3RPck90aGVyVXNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2
aXNpb24gMTUwNjc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyNyw3ICszMjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uSlNDCiAgICAgdHJhY2UuYXBwZW5kTGl0ZXJhbCgiLS0+IFN0YWNrIHRyYWNlOlxuIik7
CiAKICAgICBWZWN0b3I8U3RhY2tGcmFtZT4gc3RhY2tUcmFjZTsKLSAgICBJbnRlcnByZXRlcjo6
Z2V0U3RhY2tUcmFjZSgmZXhlYy0+dm0oKSwgc3RhY2tUcmFjZSk7CisgICAgZXhlYy0+aW50ZXJw
cmV0ZXIoKS0+Z2V0U3RhY2tUcmFjZShzdGFja1RyYWNlKTsKICAgICBpbnQgaSA9IDA7CiAKICAg
ICBmb3IgKFZlY3RvcjxTdGFja0ZyYW1lPjo6aXRlcmF0b3IgaXRlciA9IHN0YWNrVHJhY2UuYmVn
aW4oKTsgaXRlciA8IHN0YWNrVHJhY2UuZW5kKCk7IGl0ZXIrKykgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAkocmV2aXNpb24gMTUwNjc5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzgsNDkgKzE3OCwyMSBAQCBKU1N0cmluZ1JlZiBKU0NvbnRleHRDcmVhdGVCYWNrdHJh
Y2UoSlNDCiAKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gZXhlYzsKLSAgICBTdHJpbmcgZnVuY3Rp
b25OYW1lOwotICAgIGlmIChleGVjLT5jYWxsZWUoKSkgewotICAgICAgICBpZiAoYXNPYmplY3Qo
ZXhlYy0+Y2FsbGVlKCkpLT5pbmhlcml0cygmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvKSkgewot
ICAgICAgICAgICAgZnVuY3Rpb25OYW1lID0gYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxl
ZSgpKS0+bmFtZShleGVjKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIzAg
Iik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChmdW5jdGlvbk5hbWUpOwotICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoKSAiKTsKLSAgICAgICAgICAgIGNvdW50Kys7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlQoY2FsbEZyYW1lKTsKLSAgICAgICAgaW50IHNpZ25lZExpbmVOdW1iZXI7Ci0gICAgICAgIGlu
dHB0cl90IHNvdXJjZUlEOwotICAgICAgICBTdHJpbmcgdXJsU3RyaW5nOwotICAgICAgICBKU1Zh
bHVlIGZ1bmN0aW9uOwotCi0gICAgICAgIGV4ZWMtPmludGVycHJldGVyKCktPnJldHJpZXZlTGFz
dENhbGxlcihjYWxsRnJhbWUsIHNpZ25lZExpbmVOdW1iZXIsIHNvdXJjZUlELCB1cmxTdHJpbmcs
IGZ1bmN0aW9uKTsKLQotICAgICAgICBpZiAoZnVuY3Rpb24pCi0gICAgICAgICAgICBmdW5jdGlv
bk5hbWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKS0+bmFtZShleGVjKTsKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyBDYWxsZXIgaXMgdW5rbm93biwgYnV0IGlmIGZyYW1l
IGlzIGVtcHR5IHdlIHNob3VsZCBzdGlsbCBhZGQgdGhlIGZyYW1lLCBiZWNhdXNlCi0gICAgICAg
ICAgICAvLyBzb21ldGhpbmcgY2FsbGVkIHVzLCBhbmQgZ2F2ZSB1cyBhcmd1bWVudHMuCi0gICAg
ICAgICAgICBpZiAoY291bnQpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgdW5zaWduZWQgbGluZU51bWJlciA9IHNpZ25lZExpbmVOdW1iZXIgPj0gMCA/IHNpZ25l
ZExpbmVOdW1iZXIgOiAwOworICAgIFZlY3RvcjxTdGFja0ZyYW1lPiBzdGFja1RyYWNlOworICAg
IGV4ZWMtPmludGVycHJldGVyKCktPmdldFN0YWNrVHJhY2Uoc3RhY2tUcmFjZSwgbWF4U3RhY2tT
aXplKTsKKyAgICBmb3IgKFZlY3RvcjxTdGFja0ZyYW1lPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9
IHN0YWNrVHJhY2UuYmVnaW4oKTsgaXRlciA8IHN0YWNrVHJhY2UuZW5kKCk7IGl0ZXIrKykgewog
ICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJ1xuJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcjJyk7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kTnVtYmVyKGNvdW50KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoY291bnQr
Kyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGZ1bmN0aW9uTmFtZSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGl0ZXItPmZyaWVuZGx5RnVu
Y3Rpb25OYW1lKGV4ZWMpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoKSBhdCAi
KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQodXJsU3RyaW5nKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoaXRlci0+ZnJpZW5kbHlTb3VyY2VVUkwoKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCc6Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGxpbmVOdW1iZXIpOwotICAgICAg
ICBpZiAoIWZ1bmN0aW9uIHx8ICsrY291bnQgPT0gbWF4U3RhY2tTaXplKQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoaXRlci0+ZnJpZW5kbHlMaW5lTnVtYmVyKCkpOwog
ICAgIH0KKwogICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGJ1aWxkZXIudG9TdHJp
bmcoKSkubGVha1JlZigpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkocmV2aXNpb24gMTUwNjc5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDE3ICszMyw2IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogI2lmbmRlZiBOREVCVUcKLXZvaWQg
Q2FsbEZyYW1lOjpkdW1wQ2FsbGVyKCkKLXsKLSAgICBpbnQgc2lnbmVkTGluZU51bWJlcjsKLSAg
ICBpbnRwdHJfdCBzb3VyY2VJRDsKLSAgICBTdHJpbmcgdXJsU3RyaW5nOwotICAgIEpTVmFsdWUg
ZnVuY3Rpb247Ci0gICAgCi0gICAgaW50ZXJwcmV0ZXIoKS0+cmV0cmlldmVMYXN0Q2FsbGVyKHRo
aXMsIHNpZ25lZExpbmVOdW1iZXIsIHNvdXJjZUlELCB1cmxTdHJpbmcsIGZ1bmN0aW9uKTsKLSAg
ICBkYXRhTG9nRigiQ2FsbHBvaW50ID0+ICVzOiVkXG4iLCB1cmxTdHJpbmcudXRmOCgpLmRhdGEo
KSwgc2lnbmVkTGluZU51bWJlcik7Ci19Ci0KIEpTU3RhY2sqIENhbGxGcmFtZTo6c3RhY2soKQog
ewogICAgIHJldHVybiAmaW50ZXJwcmV0ZXIoKS0+c3RhY2soKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24g
MTUwNjc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM5LDYgKzMzOSw3IEBAIENhbGxGcmFtZSogbG9hZFZh
cmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnIKIAogSW50ZXJwcmV0ZXI6OkludGVycHJldGVyKFZNJiB2
bSkKICAgICA6IG1fc2FtcGxlRW50cnlEZXB0aCgwKQorICAgICwgbV92bSh2bSkKICAgICAsIG1f
c3RhY2sodm0pCiAgICAgLCBtX2Vycm9ySGFuZGxpbmdNb2RlUmVlbnRyeSgwKQogI2lmICFBU1NF
UlRfRElTQUJMRUQKQEAgLTY4NCwyNyArNjg1LDI4IEBAIHN0YXRpYyBTdGFja0ZyYW1lQ29kZVR5
cGUgZ2V0U3RhY2tGcmFtZUMKICAgICByZXR1cm4gU3RhY2tGcmFtZUdsb2JhbENvZGU7CiB9CiAK
LXZvaWQgSW50ZXJwcmV0ZXI6OmdldFN0YWNrVHJhY2UoVk0qIHZtLCBWZWN0b3I8U3RhY2tGcmFt
ZT4mIHJlc3VsdHMpCit2b2lkIEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKFZlY3RvcjxTdGFj
a0ZyYW1lPiYgcmVzdWx0cywgdW5zaWduZWQgbWF4U3RhY2tTaXplKQogewotICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gdm0tPnRvcENhbGxGcmFtZS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWco
KTsKKyAgICBWTSYgdm0gPSBtX3ZtOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gdm0udG9w
Q2FsbEZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpOwogICAgIGlmICghY2FsbEZyYW1l
IHx8IGNhbGxGcmFtZSA9PSBDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpIAogICAgICAgICByZXR1cm47
Ci0gICAgaW50IGxpbmUgPSBnZXRMaW5lTnVtYmVyRm9yQ2FsbEZyYW1lKHZtLCBjYWxsRnJhbWUp
OworICAgIGludCBsaW5lID0gZ2V0TGluZU51bWJlckZvckNhbGxGcmFtZSgmdm0sIGNhbGxGcmFt
ZSk7CiAKICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUtPnRydWVDYWxsRnJhbWVGcm9tVk1Db2Rl
KCk7CiAKLSAgICB3aGlsZSAoY2FsbEZyYW1lICYmIGNhbGxGcmFtZSAhPSBDYWxsRnJhbWU6Om5v
Q2FsbGVyKCkpIHsKKyAgICB3aGlsZSAoY2FsbEZyYW1lICYmIGNhbGxGcmFtZSAhPSBDYWxsRnJh
bWU6Om5vQ2FsbGVyKCkgJiYgbWF4U3RhY2tTaXplLS0pIHsKICAgICAgICAgU3RyaW5nIHNvdXJj
ZVVSTDsKICAgICAgICAgaWYgKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkpIHsKICAgICAgICAgICAg
IHNvdXJjZVVSTCA9IGdldFNvdXJjZVVSTEZyb21DYWxsRnJhbWUoY2FsbEZyYW1lKTsKLSAgICAg
ICAgICAgIFN0YWNrRnJhbWUgcyA9IHsgU3Ryb25nPEpTT2JqZWN0Pigqdm0sIGNhbGxGcmFtZS0+
Y2FsbGVlKCkpLCBnZXRTdGFja0ZyYW1lQ29kZVR5cGUoY2FsbEZyYW1lKSwgU3Ryb25nPEV4ZWN1
dGFibGVCYXNlPigqdm0sIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgp
KSwgbGluZSwgc291cmNlVVJMfTsKKyAgICAgICAgICAgIFN0YWNrRnJhbWUgcyhTdHJvbmc8SlNP
YmplY3Q+KHZtLCBjYWxsRnJhbWUtPmNhbGxlZSgpKSwgZ2V0U3RhY2tGcmFtZUNvZGVUeXBlKGNh
bGxGcmFtZSksIFN0cm9uZzxFeGVjdXRhYmxlQmFzZT4odm0sIGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCktPm93bmVyRXhlY3V0YWJsZSgpKSwgbGluZSwgc291cmNlVVJMKTsKICAgICAgICAgICAgIHJl
c3VsdHMuYXBwZW5kKHMpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgU3RhY2tGcmFt
ZSBzID0geyBTdHJvbmc8SlNPYmplY3Q+KCp2bSwgY2FsbEZyYW1lLT5jYWxsZWUoKSksIFN0YWNr
RnJhbWVOYXRpdmVDb2RlLCBTdHJvbmc8RXhlY3V0YWJsZUJhc2U+KCksIC0xLCBTdHJpbmcoKX07
CisgICAgICAgICAgICBTdGFja0ZyYW1lIHMoU3Ryb25nPEpTT2JqZWN0Pih2bSwgY2FsbEZyYW1l
LT5jYWxsZWUoKSksIFN0YWNrRnJhbWVOYXRpdmVDb2RlLCBTdHJvbmc8RXhlY3V0YWJsZUJhc2U+
KCksIC0xLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChzKTsKICAgICAg
ICAgfQogICAgICAgICB1bnNpZ25lZCB1bnVzZWRCeXRlY29kZU9mZnNldCA9IDA7Ci0gICAgICAg
IGNhbGxGcmFtZSA9IGdldENhbGxlckluZm8odm0sIGNhbGxGcmFtZSwgbGluZSwgdW51c2VkQnl0
ZWNvZGVPZmZzZXQpOworICAgICAgICBjYWxsRnJhbWUgPSBnZXRDYWxsZXJJbmZvKCZ2bSwgY2Fs
bEZyYW1lLCBsaW5lLCB1bnVzZWRCeXRlY29kZU9mZnNldCk7CiAgICAgfQogfQogCkBAIC03MTYs
NyArNzE4LDcgQEAgdm9pZCBJbnRlcnByZXRlcjo6YWRkU3RhY2tUcmFjZUlmTmVjZXNzYQogICAg
ICAgICByZXR1cm47CiAKICAgICBWZWN0b3I8U3RhY2tGcmFtZT4gc3RhY2tUcmFjZTsKLSAgICBn
ZXRTdGFja1RyYWNlKCZjYWxsRnJhbWUtPnZtKCksIHN0YWNrVHJhY2UpOworICAgIHZtLT5pbnRl
cnByZXRlci0+Z2V0U3RhY2tUcmFjZShzdGFja1RyYWNlKTsKICAgICAKICAgICBpZiAoc3RhY2tU
cmFjZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE0MTMsMjcgKzE0MTUsNiBAQCBK
U1ZhbHVlIEludGVycHJldGVyOjpyZXRyaWV2ZUNhbGxlckZyb21WCiAgICAgcmV0dXJuIGNhbGxl
cjsKIH0KIAotdm9pZCBJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBpbnQmIGxpbmVOdW1iZXIsIGludHB0cl90JiBzb3VyY2VJRCwgU3RyaW5nJiBz
b3VyY2VVUkwsIEpTVmFsdWUmIGZ1bmN0aW9uKSBjb25zdAotewotICAgIGZ1bmN0aW9uID0gSlNW
YWx1ZSgpOwotICAgIGxpbmVOdW1iZXIgPSAtMTsKLSAgICBzb3VyY2VVUkwgPSBTdHJpbmcoKTsK
LQotICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCk7
Ci0gICAgaWYgKGNhbGxlckZyYW1lLT5oYXNIb3N0Q2FsbEZyYW1lRmxhZygpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5j
b2RlQmxvY2soKTsKLSAgICBpZiAoIWNhbGxlckNvZGVCbG9jaykKLSAgICAgICAgcmV0dXJuOwot
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsKLSAgICBieXRlY29kZU9mZnNldCA9IGNh
bGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0
dXJuUEMoKSk7Ci0gICAgbGluZU51bWJlciA9IGNhbGxlckNvZGVCbG9jay0+bGluZU51bWJlckZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7Ci0gICAgc291cmNlSUQgPSBjYWxs
ZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpOwotICAgIHNvdXJjZVVS
TCA9IGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZVVSTCgpOwotICAg
IGZ1bmN0aW9uID0gY2FsbGVyRnJhbWUtPmNhbGxlZSgpOwotfQotCiBDYWxsRnJhbWUqIEludGVy
cHJldGVyOjpmaW5kRnVuY3Rpb25DYWxsRnJhbWVGcm9tVk1Db2RlKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbikKIHsKICAgICBmb3IgKENhbGxGcmFtZSogY2FuZGlk
YXRlID0gY2FsbEZyYW1lLT50cnVlQ2FsbEZyYW1lRnJvbVZNQ29kZSgpOyBjYW5kaWRhdGU7IGNh
bmRpZGF0ZSA9IGNhbmRpZGF0ZS0+dHJ1ZUNhbGxlckZyYW1lKCkpIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAx
NTA2NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsMjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFN0cm9uZzxFeGVjdXRhYmxlQmFzZT4gZXhlY3V0YWJsZTsKICAgICAgICAgaW50IGxpbmU7
CiAgICAgICAgIFN0cmluZyBzb3VyY2VVUkw7CisKKyAgICAgICAgU3RhY2tGcmFtZSgpCisgICAg
ICAgICAgICA6IGNvZGVUeXBlKFN0YWNrRnJhbWVOYXRpdmVDb2RlKQorICAgICAgICAgICAgLCBs
aW5lKDApCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFN0YWNrRnJhbWUoU3Ryb25n
PEpTT2JqZWN0PiBvdGhlckNhbGxlZSwgU3RhY2tGcmFtZUNvZGVUeXBlIG90aGVyQ29kZVR5cGUs
IFN0cm9uZzxFeGVjdXRhYmxlQmFzZT4gb3RoZXJFeGVjdXRhYmxlLCBpbnQgb3RoZXJMaW5lLCBT
dHJpbmcgb3RoZXJTb3VyY2VVUkwpCisgICAgICAgICAgICA6IGNhbGxlZShvdGhlckNhbGxlZSkK
KyAgICAgICAgICAgICwgY29kZVR5cGUob3RoZXJDb2RlVHlwZSkKKyAgICAgICAgICAgICwgZXhl
Y3V0YWJsZShvdGhlckV4ZWN1dGFibGUpCisgICAgICAgICAgICAsIGxpbmUob3RoZXJMaW5lKQor
ICAgICAgICAgICAgLCBzb3VyY2VVUkwob3RoZXJTb3VyY2VVUkwpCisgICAgICAgIHsKKyAgICAg
ICAgfQorCiAgICAgICAgIFN0cmluZyB0b1N0cmluZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkgY29u
c3QKICAgICAgICAgewogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciB0cmFjZUJ1aWxkOwpAQCAt
MjIzLDcgKzIzOSw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEpTVmFsdWUgcmV0cmll
dmVBcmd1bWVudHNGcm9tVk1Db2RlKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qKSBjb25zdDsKICAg
ICAgICAgSlNWYWx1ZSByZXRyaWV2ZUNhbGxlckZyb21WTUNvZGUoQ2FsbEZyYW1lKiwgSlNGdW5j
dGlvbiopIGNvbnN0OwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJldHJpZXZlTGFz
dENhbGxlcihDYWxsRnJhbWUqLCBpbnQmIGxpbmVOdW1iZXIsIGludHB0cl90JiBzb3VyY2VJRCwg
U3RyaW5nJiBzb3VyY2VVUkwsIEpTVmFsdWUmIGZ1bmN0aW9uKSBjb25zdDsKICAgICAgICAgCiAg
ICAgICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0YShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiYsIHB0
cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0ZXIqJiBhcmd2LCBpbnQmIGFyZ2Mp
OwogICAgICAgICAKQEAgLTIzMiw3ICsyNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
TkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiB0aHJvd0V4Y2VwdGlvbihDYWxsRnJhbWUqJiwgSlNW
YWx1ZSYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKICAgICAgICAgTkVWRVJfSU5MSU5FIHZv
aWQgZGVidWcoQ2FsbEZyYW1lKiwgRGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0
TGluZSwgaW50IGNoYXJQb3NpdGlvbik7CiAgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgZ2V0
VHJhY2VMaW5lKENhbGxGcmFtZSosIFN0YWNrRnJhbWVDb2RlVHlwZSwgY29uc3QgU3RyaW5nJiwg
aW50KTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0U3RhY2tUcmFj
ZShWTSosIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cyk7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZ2V0U3RhY2tUcmFjZShWZWN0b3I8U3RhY2tGcmFtZT4mIHJlc3VsdHMsIHVu
c2lnbmVkIG1heFN0YWNrU2l6ZSA9IElOVF9NQVgpOwogICAgICAgICBzdGF0aWMgdm9pZCBhZGRT
dGFja1RyYWNlSWZOZWNlc3NhcnkoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGVycm9yKTsKIAogICAg
ICAgICB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSogZXhlYyk7CkBAIC0yNzAsNiArMjg1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludCBtX3NhbXBsZUVudHJ5RGVwdGg7CiAg
ICAgICAgIE93blB0cjxTYW1wbGluZ1Rvb2w+IG1fc2FtcGxlcjsKIAorICAgICAgICBWTSYgbV92
bTsKICAgICAgICAgSlNTdGFjayBtX3N0YWNrOwogICAgICAgICBpbnQgbV9lcnJvckhhbmRsaW5n
TW9kZVJlZW50cnk7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTUwNjc5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OCwxMyArNTgsMTAgQEAgUHJvZmlsZUdlbmVyYXRvcjo6UHJvZmlsZUdl
bmVyYXRvcihFeGVjUwogCiB2b2lkIFByb2ZpbGVHZW5lcmF0b3I6OmFkZFBhcmVudEZvckNvbnNv
bGVTdGFydChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgaW50IGxpbmVOdW1iZXI7Ci0gICAgaW50
cHRyX3Qgc291cmNlSUQ7Ci0gICAgU3RyaW5nIHNvdXJjZVVSTDsKLSAgICBKU1ZhbHVlIGZ1bmN0
aW9uOworICAgIFZlY3RvcjxTdGFja0ZyYW1lPiBzdGFja1RyYWNlOworICAgIGV4ZWMtPmludGVy
cHJldGVyKCktPmdldFN0YWNrVHJhY2Uoc3RhY2tUcmFjZSwgMik7CiAKLSAgICBleGVjLT5pbnRl
cnByZXRlcigpLT5yZXRyaWV2ZUxhc3RDYWxsZXIoZXhlYywgbGluZU51bWJlciwgc291cmNlSUQs
IHNvdXJjZVVSTCwgZnVuY3Rpb24pOwotICAgIG1fY3VycmVudE5vZGUgPSBQcm9maWxlTm9kZTo6
Y3JlYXRlKGV4ZWMsIExlZ2FjeVByb2ZpbGVyOjpjcmVhdGVDYWxsSWRlbnRpZmllcihleGVjLCBm
dW5jdGlvbiwgc291cmNlVVJMLCBsaW5lTnVtYmVyKSwgbV9oZWFkLmdldCgpLCBtX2hlYWQuZ2V0
KCkpOworICAgIG1fY3VycmVudE5vZGUgPSBQcm9maWxlTm9kZTo6Y3JlYXRlKGV4ZWMsIExlZ2Fj
eVByb2ZpbGVyOjpjcmVhdGVDYWxsSWRlbnRpZmllcihleGVjLCBzdGFja1RyYWNlWzFdLmNhbGxl
ZS5nZXQoKSwgc3RhY2tUcmFjZVsxXS5zb3VyY2VVUkwsIHN0YWNrVHJhY2VbMV0ubGluZSksIG1f
aGVhZC5nZXQoKSwgbV9oZWFkLmdldCgpKTsKICAgICBtX2hlYWQtPmluc2VydE5vZGUobV9jdXJy
ZW50Tm9kZS5nZXQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MDY3OSkKKysr
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDEzLTA1LTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmUgSW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcigpLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2NzUzLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgcGFydCBvZiB0aGUgcmVm
YWN0b3JpbmcgZWZmb3J0IHRvIGdldCByaWQgb2YgZnVuY3Rpb25zIHdhbGtpbmcKKyAgICAgICAg
dGhlIEpTIHN0YWNrIGluIHRoZWlyIG93biB3YXkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0OjpzZW5kKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVNjcmlwdENhbGxTdGFjayk6CisKIDIwMTMtMDUtMDYgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVu
QGFwcGxlLmNvbT4KIAogICAgICAgICBDaGVycnktcGljayBtZXJnZWQgc29tZSBwYXRjaGVzIHRv
IHRoZSBGVEwgYnJhbmNoLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDE1MDY3OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzMsMTMgKzEzMywxMCBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6
OnNlbmQoRXhlY1N0YXRlCiAgICAgICAgICAgICBpbXBsKCktPnNlbmQodmFsLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKSwgZWMpOwogICAgIH0KIAotICAgIGludCBzaWduZWRMaW5lTnVtYmVy
OwotICAgIGludHB0cl90IHNvdXJjZUlEOwotICAgIFN0cmluZyBzb3VyY2VVUkw7Ci0gICAgSlNW
YWx1ZSBmdW5jdGlvbjsKLSAgICBleGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUxhc3RDYWxs
ZXIoZXhlYywgc2lnbmVkTGluZU51bWJlciwgc291cmNlSUQsIHNvdXJjZVVSTCwgZnVuY3Rpb24p
OwotICAgIGltcGwoKS0+c2V0TGFzdFNlbmRMaW5lTnVtYmVyKHNpZ25lZExpbmVOdW1iZXIgPj0g
MCA/IHNpZ25lZExpbmVOdW1iZXIgOiAwKTsKLSAgICBpbXBsKCktPnNldExhc3RTZW5kVVJMKHNv
dXJjZVVSTCk7CisgICAgVmVjdG9yPFN0YWNrRnJhbWU+IHN0YWNrVHJhY2U7CisgICAgZXhlYy0+
aW50ZXJwcmV0ZXIoKS0+Z2V0U3RhY2tUcmFjZShzdGFja1RyYWNlLCAyKTsKKyAgICBpbXBsKCkt
PnNldExhc3RTZW5kTGluZU51bWJlcihzdGFja1RyYWNlWzFdLmxpbmUpOworICAgIGltcGwoKS0+
c2V0TGFzdFNlbmRVUkwoc3RhY2tUcmFjZVsxXS5zb3VyY2VVUkwpOwogCiAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3Rvcnku
Y3BwCShyZXZpc2lvbiAxNTA2NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBQ
YXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0CiAgICAgVmVjdG9yPFNjcmlw
dENhbGxGcmFtZT4gZnJhbWVzOwogICAgIGlmIChKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IEpTTWFp
blRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCkpIHsKICAgICAgICAgVmVjdG9yPFN0YWNr
RnJhbWU+IHN0YWNrVHJhY2U7Ci0gICAgICAgIEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKCZl
eGVjLT52bSgpLCBzdGFja1RyYWNlKTsKKyAgICAgICAgZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Z2V0
U3RhY2tUcmFjZShzdGFja1RyYWNlKTsKICAgICAgICAgZm9yIChWZWN0b3I8U3RhY2tGcmFtZT46
OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBzdGFja1RyYWNlLmJlZ2luKCk7IGl0ZXIgPCBzdGFja1Ry
YWNlLmVuZCgpOyBpdGVyKyspIHsKICAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQoU2NyaXB0Q2Fs
bEZyYW1lKGl0ZXItPmZyaWVuZGx5RnVuY3Rpb25OYW1lKGV4ZWMpLCBpdGVyLT5mcmllbmRseVNv
dXJjZVVSTCgpLCBpdGVyLT5mcmllbmRseUxpbmVOdW1iZXIoKSkpOwogICAgICAgICAgICAgaWYg
KGZyYW1lcy5zaXplKCkgPj0gbWF4U3RhY2tTaXplKQpAQCAtNzcsMjkgKzc3LDE0IEBAIFBhc3NS
ZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHQKIFBhc3NSZWZQdHI8U2NyaXB0Q2Fs
bFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHNpemVf
dCBtYXhTdGFja1NpemUpCiB7CiAgICAgVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4gZnJhbWVzOwot
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gZXhlYzsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAg
ICAgICBBU1NFUlQoY2FsbEZyYW1lKTsKLSAgICAgICAgaW50IHNpZ25lZExpbmVOdW1iZXI7Ci0g
ICAgICAgIGludHB0cl90IHNvdXJjZUlEOwotICAgICAgICBTdHJpbmcgdXJsU3RyaW5nOwotICAg
ICAgICBKU1ZhbHVlIGZ1bmN0aW9uOwotCi0gICAgICAgIGV4ZWMtPmludGVycHJldGVyKCktPnJl
dHJpZXZlTGFzdENhbGxlcihjYWxsRnJhbWUsIHNpZ25lZExpbmVOdW1iZXIsIHNvdXJjZUlELCB1
cmxTdHJpbmcsIGZ1bmN0aW9uKTsKLSAgICAgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZTsKLSAgICAg
ICAgaWYgKGZ1bmN0aW9uKQotICAgICAgICAgICAgZnVuY3Rpb25OYW1lID0ganNDYXN0PEpTRnVu
Y3Rpb24qPihmdW5jdGlvbiktPm5hbWUoZXhlYyk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgLy8gQ2FsbGVyIGlzIHVua25vd24sIGJ1dCBpZiBmcmFtZXMgaXMgZW1wdHkgd2Ugc2hvdWxk
IHN0aWxsIGFkZCB0aGUgZnJhbWUsIGJlY2F1c2UKLSAgICAgICAgICAgIC8vIHNvbWV0aGluZyBj
YWxsZWQgdXMsIGFuZCBnYXZlIHVzIGFyZ3VtZW50cy4KLSAgICAgICAgICAgIGlmICghZnJhbWVz
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB1
bnNpZ25lZCBsaW5lTnVtYmVyID0gc2lnbmVkTGluZU51bWJlciA+PSAwID8gc2lnbmVkTGluZU51
bWJlciA6IDA7Ci0gICAgICAgIGZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKGZ1bmN0aW9u
TmFtZSwgdXJsU3RyaW5nLCBsaW5lTnVtYmVyKSk7Ci0gICAgICAgIGlmICghZnVuY3Rpb24gfHwg
ZnJhbWVzLnNpemUoKSA9PSBtYXhTdGFja1NpemUpCisgICAgVmVjdG9yPFN0YWNrRnJhbWU+IHN0
YWNrVHJhY2U7CisgICAgZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Z2V0U3RhY2tUcmFjZShzdGFja1Ry
YWNlKTsKKyAgICBWZWN0b3I8U3RhY2tGcmFtZT46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBzdGFj
a1RyYWNlLmJlZ2luKCk7CisgICAgaXRlcisrOworICAgIGZvciAoOyBpdGVyIDwgc3RhY2tUcmFj
ZS5lbmQoKTsgaXRlcisrKSB7CisgICAgICAgIGZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1l
KGl0ZXItPmZyaWVuZGx5RnVuY3Rpb25OYW1lKGV4ZWMpLCBpdGVyLT5mcmllbmRseVNvdXJjZVVS
TCgpLCBpdGVyLT5mcmllbmRseUxpbmVOdW1iZXIoKSkpOworICAgICAgICBpZiAoZnJhbWVzLnNp
emUoKSA+PSBtYXhTdGFja1NpemUpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FsbEZy
YW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwogICAgIH0KICAgICByZXR1cm4gU2NyaXB0
Q2FsbFN0YWNrOjpjcmVhdGUoZnJhbWVzKTsKIH0K
</data>
<flag name="review"
          id="224284"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>