<?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>47906</bug_id>
          
          <creation_ts>2010-10-19 08:08:40 -0700</creation_ts>
          <short_desc>The number of recursive match calls isn&apos;t limited in YARR Interpreter</short_desc>
          <delta_ts>2010-11-16 15:27:34 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>46719</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Peter Varga">pvarga</reporter>
          <assigned_to name="Peter Varga">pvarga</assigned_to>
          <cc>abecsi</cc>
    
    <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>msaboff</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>296196</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Varga">pvarga</who>
    <bug_when>2010-10-19 08:08:40 -0700</bug_when>
    <thetext>The YARR Interpreter fails on the fast/regex/slow.html layout test 
because the number of recursive match calls is unbounded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296203</commentid>
    <comment_count>1</comment_count>
      <attachid>71172</attachid>
    <who name="Peter Varga">pvarga</who>
    <bug_when>2010-10-19 08:16:19 -0700</bug_when>
    <thetext>Created attachment 71172
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296230</commentid>
    <comment_count>2</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-10-19 09:31:01 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=71172) [details]
&gt; proposed patch

If I&apos;m correct this should fix the fast/regex/slow.html time out of bug 46719. Does this patch affect the performance somehow, especially because of the newly introduced checks? Would be great to see some perf results, too.
Great work, btw!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296245</commentid>
    <comment_count>3</comment_count>
    <who name="Peter Varga">pvarga</who>
    <bug_when>2010-10-19 09:59:43 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; If I&apos;m correct this should fix the fast/regex/slow.html time out of bug 46719. Does this patch affect the performance somehow, especially because of the newly introduced checks? Would be great to see some perf results, too.
&gt; Great work, btw!

Performance results:
                                       ref                mod
regexp-dna:   1.008x as fast   564.7ms +/- 0.2%   560.3ms +/- 0.3%
v8-regexp:    1.016x as fast  3497.1ms +/- 0.3%  3441.3ms +/- 0.3%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296260</commentid>
    <comment_count>4</comment_count>
      <attachid>71181</attachid>
    <who name="Peter Varga">pvarga</who>
    <bug_when>2010-10-19 10:26:24 -0700</bug_when>
    <thetext>Created attachment 71181
proposed patch v2

Fix to free allocated memory in case of failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296286</commentid>
    <comment_count>5</comment_count>
      <attachid>71181</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-10-19 11:03:49 -0700</bug_when>
    <thetext>Comment on attachment 71181
proposed patch v2

Hmmm, I&apos;m pondering.  So, I don&apos;t think this is the perfect solution, but it&apos;s probably the best solution right now.

I think we want to move away as much as possible from arbitrary limits like this, and instead be using the timeout approach used by the JS language VM.  This presently requires polling, but we may be able to make this more asynchronous.  But this is likely a much more involved change, and best handled separately – just reintroducing the fixed limit for now is probably sufficient, and a sensible step.  Let me cogitate a little more.  By the way, 1000000 is the same limit as PCRE I assume?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296288</commentid>
    <comment_count>6</comment_count>
    <who name="Peter Varga">pvarga</who>
    <bug_when>2010-10-19 11:07:33 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 71181 [details])
&gt; By the way, 1000000 is the same limit as PCRE I assume?

Yes, it&apos;s same. The limit and the logic of check are from pcre.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304581</commentid>
    <comment_count>7</comment_count>
    <who name="Peter Varga">pvarga</who>
    <bug_when>2010-11-04 04:28:47 -0700</bug_when>
    <thetext>ping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309969</commentid>
    <comment_count>8</comment_count>
      <attachid>71181</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-16 15:27:29 -0800</bug_when>
    <thetext>Comment on attachment 71181
proposed patch v2

Clearing flags on attachment: 71181

Committed r72140: &lt;http://trac.webkit.org/changeset/72140&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309970</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-16 15:27:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71172</attachid>
            <date>2010-10-19 08:16:19 -0700</date>
            <delta_ts>2010-10-19 10:26:24 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>0001-interpreter-hitlimit-final.patch</filename>
            <type>text/plain</type>
            <size>19791</size>
            <attacher name="Peter Varga">pvarga</attacher>
            
              <data encoding="base64">RnJvbSA2YTMzNzE5ZTk1ZmU0MTRkNmYyMWEwYTlmYmY0YzQ5YTI1YjgxMzk0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBWYXJnYSA8cHZhcmdhQGluZi51LXN6ZWdlZC5odT4K
RGF0ZTogVHVlLCAxOSBPY3QgMjAxMCAwODoxNDoyNCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIGlu
dGVycHJldGVyIGhpdGxpbWl0IGZpbmFsCgotLS0KIEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgfCAgIDI0ICsrKysrCiBKYXZhU2NyaXB0Q29yZS95YXJyL1JlZ2V4SW50
ZXJwcmV0ZXIuY3BwIHwgIDE2NCArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogSmF2YVNj
cmlwdENvcmUveWFyci9SZWdleEludGVycHJldGVyLmggICB8ICAgMTUgKysrCiAzIGZpbGVzIGNo
YW5nZWQsIDE1MiBpbnNlcnRpb25zKCspLCA1MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGFhOTY4MC4uNjY3MDdjNCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEwLTEwLTE5
ICBQZXRlciBWYXJnYSAgPHB2YXJnYUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG51bWJlciBvZiByZWN1cnNpdmUg
bWF0Y2ggY2FsbHMgaXNuJ3QgbGltaXRlZCBpbiBZQVJSIEludGVycHJldGVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzkwNgorCisgICAgICAgIENo
ZWNrIHRoZSBudW1iZXIgb2YgdGhlIG1hdGNoRGlzanVuY3Rpb24gcmVjdXJzaXZlIGNhbGxzIHRv
IGF2b2lkIHVuYm91bmRlZAorICAgICAgICByZWN1cnNpb24uCisgICAgICAgIE5vdyB0aGUgbWF0
Y2hEaXNqdW5jdGlvbiBmdW5jdGlvbiByZXR1cm5zIEpTUmVnRXhwUmVzdWx0IGluc3RlYWQgb2Yg
Ym9vbC4KKyAgICAgICAgVGhlIEpTUmVnRXhwUmVzdWx0IGVudW0gY29udGFpbnMgdGhlIHJlc3Vs
dCBvZiBtYXRjaGluZyBvciB0aGUgZXJyb3IgY29kZQorICAgICAgICBvZiB0aGUgZmFpbHVyZSAo
bGlrZSBIaXRMaW1pdCkgd2hpY2ggdGVybWluYXRlcyB0aGUgbWF0Y2hpbmcuCisgICAgICAgIFRo
ZSBlcnJvciBjb2RlcyBhcmUgYmFzZWQgb24gcGNyZSdzIGpzUmVnRXhwRXhlY3V0ZSBlcnJvciBj
b2Rlcy4KKworICAgICAgICAqIHlhcnIvUmVnZXhJbnRlcnByZXRlci5jcHA6CisgICAgICAgIChK
U0M6OllhcnI6OkludGVycHJldGVyOjpwYXJlbnRoZXNlc0RvQmFja3RyYWNrKToKKyAgICAgICAg
KEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6Om1hdGNoUGFyZW50aGVzZXMpOgorICAgICAgICAoSlND
OjpZYXJyOjpJbnRlcnByZXRlcjo6YmFja3RyYWNrUGFyZW50aGVzZXMpOgorICAgICAgICAoSlND
OjpZYXJyOjpJbnRlcnByZXRlcjo6bWF0Y2hEaXNqdW5jdGlvbik6CisgICAgICAgIChKU0M6Ollh
cnI6OkludGVycHJldGVyOjptYXRjaE5vblplcm9EaXNqdW5jdGlvbik6CisgICAgICAgIChKU0M6
OllhcnI6OkludGVycHJldGVyOjppbnRlcnByZXQpOgorICAgICAgICAoSlNDOjpZYXJyOjpJbnRl
cnByZXRlcjo6SW50ZXJwcmV0ZXIpOgorICAgICAgICAqIHlhcnIvUmVnZXhJbnRlcnByZXRlci5o
OgorCiAyMDEwLTEwLTE5ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1JlZ2V4SW50ZXJwcmV0ZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUveWFyci9S
ZWdleEludGVycHJldGVyLmNwcAppbmRleCAzM2YzYzg5Li5kMmUyYTIyIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS95YXJyL1JlZ2V4SW50ZXJwcmV0ZXIuY3BwCisrKyBiL0phdmFTY3JpcHRD
b3JlL3lhcnIvUmVnZXhJbnRlcnByZXRlci5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCBQZXRlciBWYXJnYSAocHZhcmdhQGluZi51LXN6ZWdlZC5odSksIFVuaXZl
cnNpdHkgb2YgU3plZ2VkCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU5OCwy
MCArNTk5LDI0IEBAIHB1YmxpYzoKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IChj
b3VudCA8PCAxKTsgKytpKQogICAgICAgICAgICAgb3V0cHV0WyhmaXJzdFN1YnBhdHRlcm5JZCA8
PCAxKSArIGldID0gLTE7CiAgICAgfQotICAgIGJvb2wgcGFyZW50aGVzZXNEb0JhY2t0cmFjayhC
eXRlVGVybSYgdGVybSwgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzKiBiYWNrVHJhY2spCisgICAg
SlNSZWdFeHBSZXN1bHQgcGFyZW50aGVzZXNEb0JhY2t0cmFjayhCeXRlVGVybSYgdGVybSwgQmFj
a1RyYWNrSW5mb1BhcmVudGhlc2VzKiBiYWNrVHJhY2spCiAgICAgewogICAgICAgICB3aGlsZSAo
YmFja1RyYWNrLT5tYXRjaEFtb3VudCkgewogICAgICAgICAgICAgUGFyZW50aGVzZXNEaXNqdW5j
dGlvbkNvbnRleHQqIGNvbnRleHQgPSBiYWNrVHJhY2stPmxhc3RDb250ZXh0OwogCi0gICAgICAg
ICAgICBpZiAobWF0Y2hEaXNqdW5jdGlvbih0ZXJtLmF0b20ucGFyZW50aGVzZXNEaXNqdW5jdGlv
biwgY29udGV4dC0+Z2V0RGlzanVuY3Rpb25Db250ZXh0KHRlcm0pLCB0cnVlKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIEpTUmVnRXhwUmVzdWx0IHJlc3VsdCA9
IG1hdGNoRGlzanVuY3Rpb24odGVybS5hdG9tLnBhcmVudGhlc2VzRGlzanVuY3Rpb24sIGNvbnRl
eHQtPmdldERpc2p1bmN0aW9uQ29udGV4dCh0ZXJtKSwgdHJ1ZSk7CisgICAgICAgICAgICBpZiAo
cmVzdWx0ID09IEpTUmVnRXhwTWF0Y2gpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhw
TWF0Y2g7CiAKICAgICAgICAgICAgIHJlc2V0TWF0Y2hlcyh0ZXJtLCBjb250ZXh0KTsKICAgICAg
ICAgICAgIHBvcFBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KGJhY2tUcmFjayk7CiAgICAg
ICAgICAgICBmcmVlUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQoY29udGV4dCk7CisKKyAg
ICAgICAgICAgIGlmIChyZXN1bHQgIT0gSlNSZWdFeHBOb01hdGNoKQorICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiBKU1JlZ0V4cE5vTWF0Y2g7CiAgICAgfQogCiAgICAgYm9vbCBtYXRjaFBhcmVu
dGhlc2VzT25jZUJlZ2luKEJ5dGVUZXJtJiB0ZXJtLCBEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRl
eHQpCkBAIC03NzIsNyArNzc3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgYm9vbCBtYXRjaFBhcmVudGhlc2VzKEJ5dGVUZXJtJiB0ZXJtLCBEaXNqdW5j
dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgSlNSZWdFeHBSZXN1bHQgbWF0Y2hQYXJlbnRoZXNl
cyhCeXRlVGVybSYgdGVybSwgRGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKHRlcm0udHlwZSA9PSBCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0
dGVybik7CiAKQEAgLTc5MywzMSArNzk4LDQyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHdoaWxl
IChiYWNrVHJhY2stPm1hdGNoQW1vdW50IDwgdGVybS5hdG9tLnF1YW50aXR5Q291bnQpIHsKICAg
ICAgICAgICAgICAgICAvLyBUcnkgdG8gZG8gYSBtYXRjaCwgYW5kIGl0IGl0IHN1Y2NlZWRzLCBh
ZGQgaXQgdG8gdGhlIGxpc3QuCiAgICAgICAgICAgICAgICAgUGFyZW50aGVzZXNEaXNqdW5jdGlv
bkNvbnRleHQqIGNvbnRleHQgPSBhbGxvY1BhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KGRp
c2p1bmN0aW9uQm9keSwgb3V0cHV0LCB0ZXJtKTsKLSAgICAgICAgICAgICAgICBpZiAobWF0Y2hE
aXNqdW5jdGlvbihkaXNqdW5jdGlvbkJvZHksIGNvbnRleHQtPmdldERpc2p1bmN0aW9uQ29udGV4
dCh0ZXJtKSkpCisgICAgICAgICAgICAgICAgSlNSZWdFeHBSZXN1bHQgcmVzdWx0ID0gbWF0Y2hE
aXNqdW5jdGlvbihkaXNqdW5jdGlvbkJvZHksIGNvbnRleHQtPmdldERpc2p1bmN0aW9uQ29udGV4
dCh0ZXJtKSk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBKU1JlZ0V4cE1hdGNoKQog
ICAgICAgICAgICAgICAgICAgICBhcHBlbmRQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChi
YWNrVHJhY2ssIGNvbnRleHQpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICAvLyBUaGUgbWF0Y2ggZmFpbGVkOyB0cnkgdG8gZmluZCBhbiBhbHRlcm5hdGUgcG9p
bnQgdG8gY2Fycnkgb24gZnJvbS4KICAgICAgICAgICAgICAgICAgICAgcmVzZXRNYXRjaGVzKHRl
cm0sIGNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgICBmcmVlUGFyZW50aGVzZXNEaXNqdW5j
dGlvbkNvbnRleHQoY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcGFyZW50aGVz
ZXNEb0JhY2t0cmFjayh0ZXJtLCBiYWNrVHJhY2spKQotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gSlNSZWdF
eHBOb01hdGNoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBKU1JlZ0V4cFJlc3VsdCBiYWNr
dHJhY2tSZXN1bHQgPSBwYXJlbnRoZXNlc0RvQmFja3RyYWNrKHRlcm0sIGJhY2tUcmFjayk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFja3RyYWNrUmVzdWx0ICE9IEpTUmVnRXhwTWF0
Y2gpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJhY2t0cmFja1Jlc3VsdDsK
KyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgQVNTRVJUKGJhY2tUcmFjay0+bWF0Y2hBbW91bnQgPT0gdGVybS5hdG9tLnF1YW50aXR5Q291
bnQpOwogICAgICAgICAgICAgUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQg
PSBiYWNrVHJhY2stPmxhc3RDb250ZXh0OwogICAgICAgICAgICAgcmVjb3JkUGFyZW50aGVzZXNN
YXRjaCh0ZXJtLCBjb250ZXh0KTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgcmV0dXJuIEpTUmVnRXhwTWF0Y2g7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFF1YW50
aWZpZXJHcmVlZHk6IHsKICAgICAgICAgICAgIHdoaWxlIChiYWNrVHJhY2stPm1hdGNoQW1vdW50
IDwgdGVybS5hdG9tLnF1YW50aXR5Q291bnQpIHsKICAgICAgICAgICAgICAgICBQYXJlbnRoZXNl
c0Rpc2p1bmN0aW9uQ29udGV4dCogY29udGV4dCA9IGFsbG9jUGFyZW50aGVzZXNEaXNqdW5jdGlv
bkNvbnRleHQoZGlzanVuY3Rpb25Cb2R5LCBvdXRwdXQsIHRlcm0pOwotICAgICAgICAgICAgICAg
IGlmIChtYXRjaE5vblplcm9EaXNqdW5jdGlvbihkaXNqdW5jdGlvbkJvZHksIGNvbnRleHQtPmdl
dERpc2p1bmN0aW9uQ29udGV4dCh0ZXJtKSkpCisgICAgICAgICAgICAgICAgSlNSZWdFeHBSZXN1
bHQgcmVzdWx0ID0gbWF0Y2hOb25aZXJvRGlzanVuY3Rpb24oZGlzanVuY3Rpb25Cb2R5LCBjb250
ZXh0LT5nZXREaXNqdW5jdGlvbkNvbnRleHQodGVybSkpOworICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQgPT0gSlNSZWdFeHBNYXRjaCkKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUGFyZW50
aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQoYmFja1RyYWNrLCBjb250ZXh0KTsKICAgICAgICAgICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgcmVzZXRNYXRjaGVzKHRlcm0sIGNvbnRl
eHQpOwogICAgICAgICAgICAgICAgICAgICBmcmVlUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRl
eHQoY29udGV4dCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBKU1JlZ0V4
cE5vTWF0Y2gpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
QEAgLTgyNiwxNSArODQyLDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBQYXJlbnRoZXNl
c0Rpc2p1bmN0aW9uQ29udGV4dCogY29udGV4dCA9IGJhY2tUcmFjay0+bGFzdENvbnRleHQ7CiAg
ICAgICAgICAgICAgICAgcmVjb3JkUGFyZW50aGVzZXNNYXRjaCh0ZXJtLCBjb250ZXh0KTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJu
IEpTUmVnRXhwTWF0Y2g7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFF1YW50aWZpZXJOb25H
cmVlZHk6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBKU1Jl
Z0V4cE1hdGNoOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEpTUmVnRXhwRXJyb3JOb01hdGNo
OwogICAgIH0KIAogICAgIC8vIFJ1bGVzIGZvciBiYWNrdHJhY2tpbmcgZGlmZmVyIGRlcGVuZGlu
ZyBvbiB3aGV0aGVyIHRoaXMgaXMgZ3JlZWR5IG9yIG5vbi1ncmVlZHkuCkBAIC04NDcsNyArODYz
LDcgQEAgcHVibGljOgogICAgIC8vIE5vbi1ncmVlZHksIHdlJ3ZlIGFscmVhZHkgZG9uZSB0aGUg
b25lIGxlc3MgY2FzZSwgc28gZG9uJ3QgbWF0Y2ggb24gcG9wcGluZy4KICAgICAvLyBXZSBoYXZl
bid0IGRvbmUgdGhlIG9uZSBtb3JlIGNhc2UsIHNvIGFsd2F5cyB0cnkgdG8gYWRkIHRoYXQuCiAg
ICAgLy8KLSAgICBib29sIGJhY2t0cmFja1BhcmVudGhlc2VzKEJ5dGVUZXJtJiB0ZXJtLCBEaXNq
dW5jdGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgSlNSZWdFeHBSZXN1bHQgYmFja3RyYWNrUGFy
ZW50aGVzZXMoQnl0ZVRlcm0mIHRlcm0sIERpc2p1bmN0aW9uQ29udGV4dCogY29udGV4dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVCh0ZXJtLnR5cGUgPT0gQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNl
c1N1YnBhdHRlcm4pOwogCkBAIC04NjYsNDQgKzg4Miw1OCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBBU1NFUlQoYmFja1RyYWNrLT5tYXRjaEFtb3VudCA9PSB0ZXJtLmF0b20ucXVhbnRpdHlDb3Vu
dCk7CiAKICAgICAgICAgICAgIFBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0
ID0gMDsKKyAgICAgICAgICAgIEpTUmVnRXhwUmVzdWx0IHJlc3VsdCA9IHBhcmVudGhlc2VzRG9C
YWNrdHJhY2sodGVybSwgYmFja1RyYWNrKTsKIAotICAgICAgICAgICAgaWYgKCFwYXJlbnRoZXNl
c0RvQmFja3RyYWNrKHRlcm0sIGJhY2tUcmFjaykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBKU1JlZ0V4cE1hdGNoKQorICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAgIC8vIFdoaWxlIHdlIGhhdmVuJ3Qg
eWV0IHJlYWNoZWQgb3VyIGZpeGVkIGxpbWl0LAogICAgICAgICAgICAgd2hpbGUgKGJhY2tUcmFj
ay0+bWF0Y2hBbW91bnQgPCB0ZXJtLmF0b20ucXVhbnRpdHlDb3VudCkgewogICAgICAgICAgICAg
ICAgIC8vIFRyeSB0byBkbyBhIG1hdGNoLCBhbmQgaXQgaXQgc3VjY2VlZHMsIGFkZCBpdCB0byB0
aGUgbGlzdC4KICAgICAgICAgICAgICAgICBjb250ZXh0ID0gYWxsb2NQYXJlbnRoZXNlc0Rpc2p1
bmN0aW9uQ29udGV4dChkaXNqdW5jdGlvbkJvZHksIG91dHB1dCwgdGVybSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKG1hdGNoRGlzanVuY3Rpb24oZGlzanVuY3Rpb25Cb2R5LCBjb250ZXh0LT5nZXRE
aXNqdW5jdGlvbkNvbnRleHQodGVybSkpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1hdGNo
RGlzanVuY3Rpb24oZGlzanVuY3Rpb25Cb2R5LCBjb250ZXh0LT5nZXREaXNqdW5jdGlvbkNvbnRl
eHQodGVybSkpOworCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBKU1JlZ0V4cE1hdGNo
KQogICAgICAgICAgICAgICAgICAgICBhcHBlbmRQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4
dChiYWNrVHJhY2ssIGNvbnRleHQpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAvLyBUaGUgbWF0Y2ggZmFpbGVkOyB0cnkgdG8gZmluZCBhbiBhbHRlcm5hdGUg
cG9pbnQgdG8gY2Fycnkgb24gZnJvbS4KICAgICAgICAgICAgICAgICAgICAgcmVzZXRNYXRjaGVz
KHRlcm0sIGNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgICBmcmVlUGFyZW50aGVzZXNEaXNq
dW5jdGlvbkNvbnRleHQoY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcGFyZW50
aGVzZXNEb0JhY2t0cmFjayh0ZXJtLCBiYWNrVHJhY2spKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gSlNS
ZWdFeHBOb01hdGNoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBKU1JlZ0V4cFJlc3VsdCBi
YWNrdHJhY2tSZXN1bHQgPSBwYXJlbnRoZXNlc0RvQmFja3RyYWNrKHRlcm0sIGJhY2tUcmFjayk7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFja3RyYWNrUmVzdWx0ICE9IEpTUmVnRXhw
TWF0Y2gpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJhY2t0cmFja1Jlc3Vs
dDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgQVNTRVJUKGJhY2tUcmFjay0+bWF0Y2hBbW91bnQgPT0gdGVybS5hdG9tLnF1YW50aXR5
Q291bnQpOwogICAgICAgICAgICAgY29udGV4dCA9IGJhY2tUcmFjay0+bGFzdENvbnRleHQ7CiAg
ICAgICAgICAgICByZWNvcmRQYXJlbnRoZXNlc01hdGNoKHRlcm0sIGNvbnRleHQpOwotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBNYXRjaDsKICAg
ICAgICAgfQogCiAgICAgICAgIGNhc2UgUXVhbnRpZmllckdyZWVkeTogewogICAgICAgICAgICAg
aWYgKCFiYWNrVHJhY2stPm1hdGNoQW1vdW50KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBOb01hdGNoOwogCiAgICAgICAgICAg
ICBQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dCogY29udGV4dCA9IGJhY2tUcmFjay0+bGFz
dENvbnRleHQ7Ci0gICAgICAgICAgICBpZiAobWF0Y2hOb25aZXJvRGlzanVuY3Rpb24oZGlzanVu
Y3Rpb25Cb2R5LCBjb250ZXh0LT5nZXREaXNqdW5jdGlvbkNvbnRleHQodGVybSksIHRydWUpKSB7
CisgICAgICAgICAgICBKU1JlZ0V4cFJlc3VsdCByZXN1bHQgPSBtYXRjaE5vblplcm9EaXNqdW5j
dGlvbihkaXNqdW5jdGlvbkJvZHksIGNvbnRleHQtPmdldERpc2p1bmN0aW9uQ29udGV4dCh0ZXJt
KSwgdHJ1ZSk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IEpTUmVnRXhwTWF0Y2gpIHsKICAg
ICAgICAgICAgICAgICB3aGlsZSAoYmFja1RyYWNrLT5tYXRjaEFtb3VudCA8IHRlcm0uYXRvbS5x
dWFudGl0eUNvdW50KSB7CiAgICAgICAgICAgICAgICAgICAgIFBhcmVudGhlc2VzRGlzanVuY3Rp
b25Db250ZXh0KiBjb250ZXh0ID0gYWxsb2NQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChk
aXNqdW5jdGlvbkJvZHksIG91dHB1dCwgdGVybSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICht
YXRjaE5vblplcm9EaXNqdW5jdGlvbihkaXNqdW5jdGlvbkJvZHksIGNvbnRleHQtPmdldERpc2p1
bmN0aW9uQ29udGV4dCh0ZXJtKSkpCisgICAgICAgICAgICAgICAgICAgIEpTUmVnRXhwUmVzdWx0
IHBhcmVudGhlc2VzUmVzdWx0ID0gbWF0Y2hOb25aZXJvRGlzanVuY3Rpb24oZGlzanVuY3Rpb25C
b2R5LCBjb250ZXh0LT5nZXREaXNqdW5jdGlvbkNvbnRleHQodGVybSkpOworICAgICAgICAgICAg
ICAgICAgICBpZiAocGFyZW50aGVzZXNSZXN1bHQgPT0gSlNSZWdFeHBNYXRjaCkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZFBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KGJhY2tU
cmFjaywgY29udGV4dCk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzZXRNYXRjaGVzKHRlcm0sIGNvbnRleHQpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgZnJlZVBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KGNvbnRleHQpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50aGVzZXNSZXN1bHQgIT0gSlNSZWdFeHBO
b01hdGNoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNlc1Jl
c3VsdDsKKwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC05MTEsNjAgKzk0MSw3MyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgcmVzZXRNYXRjaGVzKHRlcm0sIGNvbnRleHQpOwogICAgICAgICAgICAg
ICAgIHBvcFBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KGJhY2tUcmFjayk7CiAgICAgICAg
ICAgICAgICAgZnJlZVBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KGNvbnRleHQpOworCisg
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBKU1JlZ0V4cE5vTWF0Y2gpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
IChiYWNrVHJhY2stPm1hdGNoQW1vdW50KSB7CiAgICAgICAgICAgICAgICAgUGFyZW50aGVzZXNE
aXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQgPSBiYWNrVHJhY2stPmxhc3RDb250ZXh0OwogICAg
ICAgICAgICAgICAgIHJlY29yZFBhcmVudGhlc2VzTWF0Y2godGVybSwgY29udGV4dCk7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBK
U1JlZ0V4cE1hdGNoOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBRdWFudGlmaWVyTm9uR3Jl
ZWR5OiB7CiAgICAgICAgICAgICAvLyBJZiB3ZSd2ZSBub3QgcmVhY2hlZCB0aGUgbGltaXQsIHRy
eSB0byBhZGQgb25lIG1vcmUgbWF0Y2guCiAgICAgICAgICAgICBpZiAoYmFja1RyYWNrLT5tYXRj
aEFtb3VudCA8IHRlcm0uYXRvbS5xdWFudGl0eUNvdW50KSB7CiAgICAgICAgICAgICAgICAgUGFy
ZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQgPSBhbGxvY1BhcmVudGhlc2VzRGlz
anVuY3Rpb25Db250ZXh0KGRpc2p1bmN0aW9uQm9keSwgb3V0cHV0LCB0ZXJtKTsKLSAgICAgICAg
ICAgICAgICBpZiAobWF0Y2hOb25aZXJvRGlzanVuY3Rpb24oZGlzanVuY3Rpb25Cb2R5LCBjb250
ZXh0LT5nZXREaXNqdW5jdGlvbkNvbnRleHQodGVybSkpKSB7CisgICAgICAgICAgICAgICAgSlNS
ZWdFeHBSZXN1bHQgcmVzdWx0ID0gbWF0Y2hOb25aZXJvRGlzanVuY3Rpb24oZGlzanVuY3Rpb25C
b2R5LCBjb250ZXh0LT5nZXREaXNqdW5jdGlvbkNvbnRleHQodGVybSkpOworICAgICAgICAgICAg
ICAgIGlmIChyZXN1bHQgPT0gSlNSZWdFeHBNYXRjaCkgewogICAgICAgICAgICAgICAgICAgICBh
cHBlbmRQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChiYWNrVHJhY2ssIGNvbnRleHQpOwog
ICAgICAgICAgICAgICAgICAgICByZWNvcmRQYXJlbnRoZXNlc01hdGNoKHRlcm0sIGNvbnRleHQp
OwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICByZXNldE1hdGNoZXModGVybSwgY29udGV4dCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGZyZWVQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChjb250
ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwTWF0Y2g7CiAgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmVzZXRNYXRjaGVzKHRlcm0sIGNvbnRleHQp
OworICAgICAgICAgICAgICAgIGZyZWVQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChjb250
ZXh0KTsKKworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gSlNSZWdFeHBOb01hdGNoKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAvLyBOb3BlIC0gb2theSBiYWNrdHJhY2sgbG9va2luZyBmb3IgYW4gYWx0ZXJuYXRp
dmUuCiAgICAgICAgICAgICB3aGlsZSAoYmFja1RyYWNrLT5tYXRjaEFtb3VudCkgewogICAgICAg
ICAgICAgICAgIFBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0ID0gYmFja1Ry
YWNrLT5sYXN0Q29udGV4dDsKLSAgICAgICAgICAgICAgICBpZiAobWF0Y2hOb25aZXJvRGlzanVu
Y3Rpb24oZGlzanVuY3Rpb25Cb2R5LCBjb250ZXh0LT5nZXREaXNqdW5jdGlvbkNvbnRleHQodGVy
bSksIHRydWUpKSB7CisgICAgICAgICAgICAgICAgSlNSZWdFeHBSZXN1bHQgcmVzdWx0ID0gbWF0
Y2hOb25aZXJvRGlzanVuY3Rpb24oZGlzanVuY3Rpb25Cb2R5LCBjb250ZXh0LT5nZXREaXNqdW5j
dGlvbkNvbnRleHQodGVybSksIHRydWUpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0g
SlNSZWdFeHBNYXRjaCkgewogICAgICAgICAgICAgICAgICAgICAvLyBzdWNjZXNzZnVsIGJhY2t0
cmFjayEgd2UncmUgYmFjayBpbiB0aGUgZ2FtZSEKICAgICAgICAgICAgICAgICAgICAgaWYgKGJh
Y2tUcmFjay0+bWF0Y2hBbW91bnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQg
PSBiYWNrVHJhY2stPmxhc3RDb250ZXh0OwogICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3Jk
UGFyZW50aGVzZXNNYXRjaCh0ZXJtLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTUmVnRXhwTWF0Y2g7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
Ly8gcG9wIGEgbWF0Y2ggb2ZmIHRoZSBzdGFjawogICAgICAgICAgICAgICAgIHJlc2V0TWF0Y2hl
cyh0ZXJtLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICBwb3BQYXJlbnRoZXNlc0Rpc2p1bmN0
aW9uQ29udGV4dChiYWNrVHJhY2spOwogICAgICAgICAgICAgICAgIGZyZWVQYXJlbnRoZXNlc0Rp
c2p1bmN0aW9uQ29udGV4dChjb250ZXh0KTsKKworICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIHJldHVybiBKU1JlZ0V4cE5vTWF0Y2g7CiAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiBKU1JlZ0V4cEVycm9yTm9NYXRjaDsKICAgICB9CiAKICNkZWZpbmUgTUFUQ0hfTkVY
VCgpIHsgKytjb250ZXh0LT50ZXJtOyBnb3RvIG1hdGNoQWdhaW47IH0KICNkZWZpbmUgQkFDS1RS
QUNLKCkgeyAtLWNvbnRleHQtPnRlcm07IGdvdG8gYmFja3RyYWNrOyB9CiAjZGVmaW5lIGN1cnJl
bnRUZXJtKCkgKGRpc2p1bmN0aW9uLT50ZXJtc1tjb250ZXh0LT50ZXJtXSkKLSAgICBib29sIG1h
dGNoRGlzanVuY3Rpb24oQnl0ZURpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwgRGlzanVuY3Rpb25D
b250ZXh0KiBjb250ZXh0LCBib29sIGJ0cmFjayA9IGZhbHNlKQorICAgIEpTUmVnRXhwUmVzdWx0
IG1hdGNoRGlzanVuY3Rpb24oQnl0ZURpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwgRGlzanVuY3Rp
b25Db250ZXh0KiBjb250ZXh0LCBib29sIGJ0cmFjayA9IGZhbHNlKQogICAgIHsKKyAgICAgICAg
aWYgKCEtLXJlbWFpbmluZ01hdGNoQ291bnQpCisgICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBF
cnJvckhpdExpbWl0OworCiAgICAgICAgIGlmIChidHJhY2spCiAgICAgICAgICAgICBCQUNLVFJB
Q0soKTsKIApAQCAtOTc5LDE0ICsxMDIyLDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIE1BVENI
X05FWFQoKTsKICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVN1YnBhdHRlcm5FbmQ6CiAgICAg
ICAgICAgICBjb250ZXh0LT5tYXRjaEVuZCA9IGlucHV0LmdldFBvcygpOwotICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBNYXRjaDsKIAogICAgICAg
ICBjYXNlIEJ5dGVUZXJtOjpUeXBlQm9keUFsdGVybmF0aXZlQmVnaW46CiAgICAgICAgICAgICBN
QVRDSF9ORVhUKCk7CiAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVCb2R5QWx0ZXJuYXRpdmVE
aXNqdW5jdGlvbjoKICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUJvZHlBbHRlcm5hdGl2ZUVu
ZDoKICAgICAgICAgICAgIGNvbnRleHQtPm1hdGNoRW5kID0gaW5wdXQuZ2V0UG9zKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4cE1hdGNoOwog
CiAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVBbHRlcm5hdGl2ZUJlZ2luOgogICAgICAgICAg
ICAgTUFUQ0hfTkVYVCgpOwpAQCAtMTA3NiwxMCArMTExOSwxNiBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBpZiAobWF0Y2hCYWNrUmVmZXJlbmNlKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQogICAg
ICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotICAg
ICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuOgotICAgICAgICAg
ICAgaWYgKG1hdGNoUGFyZW50aGVzZXMoY3VycmVudFRlcm0oKSwgY29udGV4dCkpCisgICAgICAg
IGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm46IHsKKyAgICAgICAgICAg
IEpTUmVnRXhwUmVzdWx0IHJlc3VsdCA9IG1hdGNoUGFyZW50aGVzZXMoY3VycmVudFRlcm0oKSwg
Y29udGV4dCk7CisKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gSlNSZWdFeHBNYXRjaCkgewog
ICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKKyAgICAgICAgICAgIH0gIGVsc2UgaWYgKHJl
c3VsdCAhPSBKU1JlZ0V4cE5vTWF0Y2gpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KwogICAgICAgICAgICAgQkFDS1RSQUNLKCk7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBCeXRl
VGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbjoKICAgICAgICAgICAgIGlm
IChtYXRjaFBhcmVudGhlc2VzT25jZUJlZ2luKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQogICAg
ICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKQEAgLTExMTEsNyArMTE2MCw3IEBAIHB1YmxpYzoK
IAogICAgICAgICBzd2l0Y2ggKGN1cnJlbnRUZXJtKCkudHlwZSkgewogICAgICAgICBjYXNlIEJ5
dGVUZXJtOjpUeXBlU3VicGF0dGVybkJlZ2luOgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwTm9NYXRjaDsKICAgICAgICAgY2FzZSBCeXRlVGVy
bTo6VHlwZVN1YnBhdHRlcm5FbmQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IApAQCAtMTEyMyw3ICsxMTcyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIE1BVENIX05F
WFQoKTsKIAogICAgICAgICAgICAgaWYgKGlucHV0LmF0RW5kKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4cE5vTWF0Y2g7CiAK
ICAgICAgICAgICAgIGlucHV0Lm5leHQoKTsKICAgICAgICAgICAgIGNvbnRleHQtPm1hdGNoQmVn
aW4gPSBpbnB1dC5nZXRQb3MoKTsKQEAgLTExNzksMTAgKzEyMjgsMTYgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIGlmIChiYWNrdHJhY2tCYWNrUmVmZXJlbmNlKGN1cnJlbnRUZXJtKCksIGNv
bnRleHQpKQogICAgICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CiAgICAgICAgICAgICAg
ICAgQkFDS1RSQUNLKCk7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVz
ZXNTdWJwYXR0ZXJuOgotICAgICAgICAgICAgICAgIGlmIChiYWNrdHJhY2tQYXJlbnRoZXNlcyhj
dXJyZW50VGVybSgpLCBjb250ZXh0KSkKKyAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQ
YXJlbnRoZXNlc1N1YnBhdHRlcm46IHsKKyAgICAgICAgICAgICAgICBKU1JlZ0V4cFJlc3VsdCBy
ZXN1bHQgPSBiYWNrdHJhY2tQYXJlbnRoZXNlcyhjdXJyZW50VGVybSgpLCBjb250ZXh0KTsKKwor
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gSlNSZWdFeHBNYXRjaCkgewogICAgICAgICAg
ICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1
bHQgIT0gSlNSZWdFeHBOb01hdGNoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworCiAgICAgICAgICAgICAgICAgQkFDS1RSQUNLKCk7CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2luOgog
ICAgICAgICAgICAgICAgIGlmIChiYWNrdHJhY2tQYXJlbnRoZXNlc09uY2VCZWdpbihjdXJyZW50
VGVybSgpLCBjb250ZXh0KSkKICAgICAgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwpAQCAt
MTIwNiwyMCArMTI2MSwyMyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gSlNS
ZWdFeHBFcnJvck5vTWF0Y2g7CiAgICAgfQogCi0gICAgYm9vbCBtYXRjaE5vblplcm9EaXNqdW5j
dGlvbihCeXRlRGlzanVuY3Rpb24qIGRpc2p1bmN0aW9uLCBEaXNqdW5jdGlvbkNvbnRleHQqIGNv
bnRleHQsIGJvb2wgYnRyYWNrID0gZmFsc2UpCisgICAgSlNSZWdFeHBSZXN1bHQgbWF0Y2hOb25a
ZXJvRGlzanVuY3Rpb24oQnl0ZURpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwgRGlzanVuY3Rpb25D
b250ZXh0KiBjb250ZXh0LCBib29sIGJ0cmFjayA9IGZhbHNlKQogICAgIHsKLSAgICAgICAgaWYg
KG1hdGNoRGlzanVuY3Rpb24oZGlzanVuY3Rpb24sIGNvbnRleHQsIGJ0cmFjaykpIHsKKyAgICAg
ICAgSlNSZWdFeHBSZXN1bHQgcmVzdWx0ID0gbWF0Y2hEaXNqdW5jdGlvbihkaXNqdW5jdGlvbiwg
Y29udGV4dCwgYnRyYWNrKTsKKworICAgICAgICBpZiAocmVzdWx0ID09IEpTUmVnRXhwTWF0Y2gp
IHsKICAgICAgICAgICAgIHdoaWxlIChjb250ZXh0LT5tYXRjaEJlZ2luID09IGNvbnRleHQtPm1h
dGNoRW5kKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFtYXRjaERpc2p1bmN0aW9uKGRpc2p1bmN0
aW9uLCBjb250ZXh0LCB0cnVlKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1hdGNoRGlzanVuY3Rpb24oZGlzanVuY3Rpb24sIGNv
bnRleHQsIHRydWUpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gSlNSZWdFeHBNYXRj
aCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwTWF0Y2g7
CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCiAgICAgaW50IGludGVycHJldCgpCkBAIC0xMjMzLDEwICsxMjkxLDEyIEBA
IHB1YmxpYzoKIAogICAgICAgICBEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQgPSBhbGxvY0Rp
c2p1bmN0aW9uQ29udGV4dChwYXR0ZXJuLT5tX2JvZHkuZ2V0KCkpOwogCi0gICAgICAgIGlmICht
YXRjaERpc2p1bmN0aW9uKHBhdHRlcm4tPm1fYm9keS5nZXQoKSwgY29udGV4dCkpIHsKKyAgICAg
ICAgSlNSZWdFeHBSZXN1bHQgcmVzdWx0ID0gbWF0Y2hEaXNqdW5jdGlvbihwYXR0ZXJuLT5tX2Jv
ZHkuZ2V0KCksIGNvbnRleHQpOworICAgICAgICBpZiAocmVzdWx0ID09IEpTUmVnRXhwTWF0Y2gp
IHsKICAgICAgICAgICAgIG91dHB1dFswXSA9IGNvbnRleHQtPm1hdGNoQmVnaW47CiAgICAgICAg
ICAgICBvdXRwdXRbMV0gPSBjb250ZXh0LT5tYXRjaEVuZDsKLSAgICAgICAgfQorICAgICAgICB9
IGVsc2UgaWYgKHJlc3VsdCAhPSBKU1JlZ0V4cE5vTWF0Y2gpCisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogCiAgICAgICAgIGZyZWVEaXNqdW5jdGlvbkNvbnRleHQoY29udGV4dCk7CiAKQEAg
LTEyNTAsNiArMTMxMCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBvdXRwdXQob3V0cHV0KQogICAg
ICAgICAsIGlucHV0KGlucHV0Q2hhciwgc3RhcnQsIGxlbmd0aCkKICAgICAgICAgLCBhbGxvY2F0
b3JQb29sKDApCisgICAgICAgICwgcmVtYWluaW5nTWF0Y2hDb3VudChtYXRjaExpbWl0KQogICAg
IHsKICAgICB9CiAKQEAgLTEyNTgsNiArMTMxOSw3IEBAIHByaXZhdGU6CiAgICAgaW50KiBvdXRw
dXQ7CiAgICAgSW5wdXRTdHJlYW0gaW5wdXQ7CiAgICAgQnVtcFBvaW50ZXJQb29sKiBhbGxvY2F0
b3JQb29sOworICAgIHVuc2lnbmVkIHJlbWFpbmluZ01hdGNoQ291bnQ7CiB9OwogCiAKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhJbnRlcnByZXRlci5oIGIvSmF2YVNjcmlw
dENvcmUveWFyci9SZWdleEludGVycHJldGVyLmgKaW5kZXggMzdmMTdmZS4uZmU3NzVhNCAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUveWFyci9SZWdleEludGVycHJldGVyLmgKKysrIGIvSmF2
YVNjcmlwdENvcmUveWFyci9SZWdleEludGVycHJldGVyLmgKQEAgLTQwLDYgKzQwLDIxIEBAIHVz
aW5nIFdURjo6QnVtcFBvaW50ZXJBbGxvY2F0b3I7CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgWWFyciB7CiAKKy8vIFRPRE8gbW92ZSB0aGUgbWF0Y2hMaW1pdCBjb25zdGFudCBhbmQgdGhl
IEpTUmVnRXhwUmVzdWx0IGVudW0gdG8gdGhlIEpTUmVnRXhwLmggd2hlbiBwY3JlIGlzIHJlbW92
ZWQuCisKKy8vIFRoZSBiZWxvdyBsaW1pdCByZXN0cmljdHMgdGhlIG51bWJlciBvZiAicmVjdXJz
aXZlIiBtYXRjaCBjYWxscyBpbiBvcmRlciB0bworLy8gYXZvaWQgc3BlbmRpbmcgZXhwb25lbnRp
YWwgdGltZSBvbiBjb21wbGV4IHJlZ3VsYXIgZXhwcmVzc2lvbnMuCitzdGF0aWMgY29uc3QgdW5z
aWduZWQgbWF0Y2hMaW1pdCA9IDEwMDAwMDA7CisKK2VudW0gSlNSZWdFeHBSZXN1bHQgeworICAg
IEpTUmVnRXhwTWF0Y2ggPSAxLAorICAgIEpTUmVnRXhwTm9NYXRjaCA9IDAsCisgICAgSlNSZWdF
eHBFcnJvck5vTWF0Y2ggPSAtMSwKKyAgICBKU1JlZ0V4cEVycm9ySGl0TGltaXQgPSAtMiwKKyAg
ICBKU1JlZ0V4cEVycm9yTm9NZW1vcnkgPSAtMywKKyAgICBKU1JlZ0V4cEVycm9ySW50ZXJuYWwg
PSAtNAorfTsKKwogY2xhc3MgQnl0ZURpc2p1bmN0aW9uOwogCiBzdHJ1Y3QgQnl0ZVRlcm0gewot
LSAKMS43LjIuMgoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71181</attachid>
            <date>2010-10-19 10:26:24 -0700</date>
            <delta_ts>2010-11-16 15:27:29 -0800</delta_ts>
            <desc>proposed patch v2</desc>
            <filename>0001-interpreter-hitlimit-final-v2.patch</filename>
            <type>text/plain</type>
            <size>19879</size>
            <attacher name="Peter Varga">pvarga</attacher>
            
              <data encoding="base64">RnJvbSA4MTg4ZTdlM2E1ODM1ODVlMGE5MzYwOTc5ZTg5M2ZjMzRmMzNmOWQ2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBWYXJnYSA8cHZhcmdhQGluZi51LXN6ZWdlZC5odT4K
RGF0ZTogVHVlLCAxOSBPY3QgMjAxMCAxMDoxODowNiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIGlu
dGVycHJldGVyIGhpdGxpbWl0IGZpbmFsIHYyCgotLS0KIEphdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgfCAgIDI0ICsrKysrCiBKYXZhU2NyaXB0Q29yZS95YXJyL1JlZ2V4
SW50ZXJwcmV0ZXIuY3BwIHwgIDE2NCArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KIEph
dmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhJbnRlcnByZXRlci5oICAgfCAgIDE1ICsrKwogMyBmaWxl
cyBjaGFuZ2VkLCAxNTMgaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDBhYTk2ODAuLjY2NzA3YzQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZworKysgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0x
MC0xOSAgUGV0ZXIgVmFyZ2EgIDxwdmFyZ2FAaW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBudW1iZXIgb2YgcmVjdXJz
aXZlIG1hdGNoIGNhbGxzIGlzbid0IGxpbWl0ZWQgaW4gWUFSUiBJbnRlcnByZXRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc5MDYKKworICAgICAg
ICBDaGVjayB0aGUgbnVtYmVyIG9mIHRoZSBtYXRjaERpc2p1bmN0aW9uIHJlY3Vyc2l2ZSBjYWxs
cyB0byBhdm9pZCB1bmJvdW5kZWQKKyAgICAgICAgcmVjdXJzaW9uLgorICAgICAgICBOb3cgdGhl
IG1hdGNoRGlzanVuY3Rpb24gZnVuY3Rpb24gcmV0dXJucyBKU1JlZ0V4cFJlc3VsdCBpbnN0ZWFk
IG9mIGJvb2wuCisgICAgICAgIFRoZSBKU1JlZ0V4cFJlc3VsdCBlbnVtIGNvbnRhaW5zIHRoZSBy
ZXN1bHQgb2YgbWF0Y2hpbmcgb3IgdGhlIGVycm9yIGNvZGUKKyAgICAgICAgb2YgdGhlIGZhaWx1
cmUgKGxpa2UgSGl0TGltaXQpIHdoaWNoIHRlcm1pbmF0ZXMgdGhlIG1hdGNoaW5nLgorICAgICAg
ICBUaGUgZXJyb3IgY29kZXMgYXJlIGJhc2VkIG9uIHBjcmUncyBqc1JlZ0V4cEV4ZWN1dGUgZXJy
b3IgY29kZXMuCisKKyAgICAgICAgKiB5YXJyL1JlZ2V4SW50ZXJwcmV0ZXIuY3BwOgorICAgICAg
ICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6cGFyZW50aGVzZXNEb0JhY2t0cmFjayk6CisgICAg
ICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjptYXRjaFBhcmVudGhlc2VzKToKKyAgICAgICAg
KEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6OmJhY2t0cmFja1BhcmVudGhlc2VzKToKKyAgICAgICAg
KEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6Om1hdGNoRGlzanVuY3Rpb24pOgorICAgICAgICAoSlND
OjpZYXJyOjpJbnRlcnByZXRlcjo6bWF0Y2hOb25aZXJvRGlzanVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6aW50ZXJwcmV0KToKKyAgICAgICAgKEpTQzo6WWFycjo6
SW50ZXJwcmV0ZXI6OkludGVycHJldGVyKToKKyAgICAgICAgKiB5YXJyL1JlZ2V4SW50ZXJwcmV0
ZXIuaDoKKwogMjAxMC0xMC0xOSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUveWFyci9SZWdleEludGVycHJldGVyLmNwcCBiL0phdmFTY3JpcHRDb3JlL3lh
cnIvUmVnZXhJbnRlcnByZXRlci5jcHAKaW5kZXggMzNmM2M4OS4uNGI2ZDBkYSAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUveWFyci9SZWdleEludGVycHJldGVyLmNwcAorKysgYi9KYXZhU2Ny
aXB0Q29yZS95YXJyL1JlZ2V4SW50ZXJwcmV0ZXIuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgUGV0ZXIgVmFyZ2EgKHB2YXJnYUBpbmYudS1zemVnZWQuaHUpLCBV
bml2ZXJzaXR5IG9mIFN6ZWdlZAogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01
OTgsMjAgKzU5OSwyNCBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCAoY291bnQgPDwgMSk7ICsraSkKICAgICAgICAgICAgIG91dHB1dFsoZmlyc3RTdWJwYXR0ZXJu
SWQgPDwgMSkgKyBpXSA9IC0xOwogICAgIH0KLSAgICBib29sIHBhcmVudGhlc2VzRG9CYWNrdHJh
Y2soQnl0ZVRlcm0mIHRlcm0sIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlcyogYmFja1RyYWNrKQor
ICAgIEpTUmVnRXhwUmVzdWx0IHBhcmVudGhlc2VzRG9CYWNrdHJhY2soQnl0ZVRlcm0mIHRlcm0s
IEJhY2tUcmFja0luZm9QYXJlbnRoZXNlcyogYmFja1RyYWNrKQogICAgIHsKICAgICAgICAgd2hp
bGUgKGJhY2tUcmFjay0+bWF0Y2hBbW91bnQpIHsKICAgICAgICAgICAgIFBhcmVudGhlc2VzRGlz
anVuY3Rpb25Db250ZXh0KiBjb250ZXh0ID0gYmFja1RyYWNrLT5sYXN0Q29udGV4dDsKIAotICAg
ICAgICAgICAgaWYgKG1hdGNoRGlzanVuY3Rpb24odGVybS5hdG9tLnBhcmVudGhlc2VzRGlzanVu
Y3Rpb24sIGNvbnRleHQtPmdldERpc2p1bmN0aW9uQ29udGV4dCh0ZXJtKSwgdHJ1ZSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBKU1JlZ0V4cFJlc3VsdCByZXN1
bHQgPSBtYXRjaERpc2p1bmN0aW9uKHRlcm0uYXRvbS5wYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLCBj
b250ZXh0LT5nZXREaXNqdW5jdGlvbkNvbnRleHQodGVybSksIHRydWUpOworICAgICAgICAgICAg
aWYgKHJlc3VsdCA9PSBKU1JlZ0V4cE1hdGNoKQorICAgICAgICAgICAgICAgIHJldHVybiBKU1Jl
Z0V4cE1hdGNoOwogCiAgICAgICAgICAgICByZXNldE1hdGNoZXModGVybSwgY29udGV4dCk7CiAg
ICAgICAgICAgICBwb3BQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChiYWNrVHJhY2spOwog
ICAgICAgICAgICAgZnJlZVBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KGNvbnRleHQpOwor
CisgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEpTUmVnRXhwTm9NYXRjaCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4gSlNSZWdFeHBOb01hdGNoOwogICAgIH0KIAogICAgIGJvb2wgbWF0Y2hQ
YXJlbnRoZXNlc09uY2VCZWdpbihCeXRlVGVybSYgdGVybSwgRGlzanVuY3Rpb25Db250ZXh0KiBj
b250ZXh0KQpAQCAtNzcyLDcgKzc3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIGJvb2wgbWF0Y2hQYXJlbnRoZXNlcyhCeXRlVGVybSYgdGVybSwgRGlz
anVuY3Rpb25Db250ZXh0KiBjb250ZXh0KQorICAgIEpTUmVnRXhwUmVzdWx0IG1hdGNoUGFyZW50
aGVzZXMoQnl0ZVRlcm0mIHRlcm0sIERpc2p1bmN0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVCh0ZXJtLnR5cGUgPT0gQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1
YnBhdHRlcm4pOwogCkBAIC03OTMsMzEgKzc5OCw0MiBAQCBwdWJsaWM6CiAgICAgICAgICAgICB3
aGlsZSAoYmFja1RyYWNrLT5tYXRjaEFtb3VudCA8IHRlcm0uYXRvbS5xdWFudGl0eUNvdW50KSB7
CiAgICAgICAgICAgICAgICAgLy8gVHJ5IHRvIGRvIGEgbWF0Y2gsIGFuZCBpdCBpdCBzdWNjZWVk
cywgYWRkIGl0IHRvIHRoZSBsaXN0LgogICAgICAgICAgICAgICAgIFBhcmVudGhlc2VzRGlzanVu
Y3Rpb25Db250ZXh0KiBjb250ZXh0ID0gYWxsb2NQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4
dChkaXNqdW5jdGlvbkJvZHksIG91dHB1dCwgdGVybSk7Ci0gICAgICAgICAgICAgICAgaWYgKG1h
dGNoRGlzanVuY3Rpb24oZGlzanVuY3Rpb25Cb2R5LCBjb250ZXh0LT5nZXREaXNqdW5jdGlvbkNv
bnRleHQodGVybSkpKQorICAgICAgICAgICAgICAgIEpTUmVnRXhwUmVzdWx0IHJlc3VsdCA9IG1h
dGNoRGlzanVuY3Rpb24oZGlzanVuY3Rpb25Cb2R5LCBjb250ZXh0LT5nZXREaXNqdW5jdGlvbkNv
bnRleHQodGVybSkpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gSlNSZWdFeHBNYXRj
aCkKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRl
eHQoYmFja1RyYWNrLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gVGhlIG1hdGNoIGZhaWxlZDsgdHJ5IHRvIGZpbmQgYW4gYWx0ZXJuYXRl
IHBvaW50IHRvIGNhcnJ5IG9uIGZyb20uCiAgICAgICAgICAgICAgICAgICAgIHJlc2V0TWF0Y2hl
cyh0ZXJtLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgZnJlZVBhcmVudGhlc2VzRGlz
anVuY3Rpb25Db250ZXh0KGNvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcmVu
dGhlc2VzRG9CYWNrdHJhY2sodGVybSwgYmFja1RyYWNrKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEpT
UmVnRXhwTm9NYXRjaCkgeworICAgICAgICAgICAgICAgICAgICAgICAgSlNSZWdFeHBSZXN1bHQg
YmFja3RyYWNrUmVzdWx0ID0gcGFyZW50aGVzZXNEb0JhY2t0cmFjayh0ZXJtLCBiYWNrVHJhY2sp
OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhY2t0cmFja1Jlc3VsdCAhPSBKU1JlZ0V4
cE1hdGNoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiYWNrdHJhY2tSZXN1
bHQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIEFTU0VSVChiYWNrVHJhY2stPm1hdGNoQW1vdW50ID09IHRlcm0uYXRvbS5xdWFudGl0
eUNvdW50KTsKICAgICAgICAgICAgIFBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KiBjb250
ZXh0ID0gYmFja1RyYWNrLT5sYXN0Q29udGV4dDsKICAgICAgICAgICAgIHJlY29yZFBhcmVudGhl
c2VzTWF0Y2godGVybSwgY29udGV4dCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIHJldHVybiBKU1JlZ0V4cE1hdGNoOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBR
dWFudGlmaWVyR3JlZWR5OiB7CiAgICAgICAgICAgICB3aGlsZSAoYmFja1RyYWNrLT5tYXRjaEFt
b3VudCA8IHRlcm0uYXRvbS5xdWFudGl0eUNvdW50KSB7CiAgICAgICAgICAgICAgICAgUGFyZW50
aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQgPSBhbGxvY1BhcmVudGhlc2VzRGlzanVu
Y3Rpb25Db250ZXh0KGRpc2p1bmN0aW9uQm9keSwgb3V0cHV0LCB0ZXJtKTsKLSAgICAgICAgICAg
ICAgICBpZiAobWF0Y2hOb25aZXJvRGlzanVuY3Rpb24oZGlzanVuY3Rpb25Cb2R5LCBjb250ZXh0
LT5nZXREaXNqdW5jdGlvbkNvbnRleHQodGVybSkpKQorICAgICAgICAgICAgICAgIEpTUmVnRXhw
UmVzdWx0IHJlc3VsdCA9IG1hdGNoTm9uWmVyb0Rpc2p1bmN0aW9uKGRpc2p1bmN0aW9uQm9keSwg
Y29udGV4dC0+Z2V0RGlzanVuY3Rpb25Db250ZXh0KHRlcm0pKTsKKyAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0ID09IEpTUmVnRXhwTWF0Y2gpCiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFBh
cmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KGJhY2tUcmFjaywgY29udGV4dCk7CiAgICAgICAg
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHJlc2V0TWF0Y2hlcyh0ZXJtLCBj
b250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgZnJlZVBhcmVudGhlc2VzRGlzanVuY3Rpb25D
b250ZXh0KGNvbnRleHQpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gSlNS
ZWdFeHBOb01hdGNoKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CkBAIC04MjYsMTUgKzg0MiwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgUGFyZW50
aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQgPSBiYWNrVHJhY2stPmxhc3RDb250ZXh0
OwogICAgICAgICAgICAgICAgIHJlY29yZFBhcmVudGhlc2VzTWF0Y2godGVybSwgY29udGV4dCk7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJl
dHVybiBKU1JlZ0V4cE1hdGNoOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBRdWFudGlmaWVy
Tm9uR3JlZWR5OgotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4g
SlNSZWdFeHBNYXRjaDsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBKU1JlZ0V4cEVycm9yTm9N
YXRjaDsKICAgICB9CiAKICAgICAvLyBSdWxlcyBmb3IgYmFja3RyYWNraW5nIGRpZmZlciBkZXBl
bmRpbmcgb24gd2hldGhlciB0aGlzIGlzIGdyZWVkeSBvciBub24tZ3JlZWR5LgpAQCAtODQ3LDcg
Kzg2Myw3IEBAIHB1YmxpYzoKICAgICAvLyBOb24tZ3JlZWR5LCB3ZSd2ZSBhbHJlYWR5IGRvbmUg
dGhlIG9uZSBsZXNzIGNhc2UsIHNvIGRvbid0IG1hdGNoIG9uIHBvcHBpbmcuCiAgICAgLy8gV2Ug
aGF2ZW4ndCBkb25lIHRoZSBvbmUgbW9yZSBjYXNlLCBzbyBhbHdheXMgdHJ5IHRvIGFkZCB0aGF0
LgogICAgIC8vCi0gICAgYm9vbCBiYWNrdHJhY2tQYXJlbnRoZXNlcyhCeXRlVGVybSYgdGVybSwg
RGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0KQorICAgIEpTUmVnRXhwUmVzdWx0IGJhY2t0cmFj
a1BhcmVudGhlc2VzKEJ5dGVUZXJtJiB0ZXJtLCBEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQodGVybS50eXBlID09IEJ5dGVUZXJtOjpUeXBlUGFyZW50
aGVzZXNTdWJwYXR0ZXJuKTsKIApAQCAtODY2LDQ0ICs4ODIsNTggQEAgcHVibGljOgogICAgICAg
ICAgICAgQVNTRVJUKGJhY2tUcmFjay0+bWF0Y2hBbW91bnQgPT0gdGVybS5hdG9tLnF1YW50aXR5
Q291bnQpOwogCiAgICAgICAgICAgICBQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dCogY29u
dGV4dCA9IDA7CisgICAgICAgICAgICBKU1JlZ0V4cFJlc3VsdCByZXN1bHQgPSBwYXJlbnRoZXNl
c0RvQmFja3RyYWNrKHRlcm0sIGJhY2tUcmFjayk7CiAKLSAgICAgICAgICAgIGlmICghcGFyZW50
aGVzZXNEb0JhY2t0cmFjayh0ZXJtLCBiYWNrVHJhY2spKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gSlNSZWdFeHBNYXRjaCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAgICAvLyBXaGlsZSB3ZSBoYXZl
bid0IHlldCByZWFjaGVkIG91ciBmaXhlZCBsaW1pdCwKICAgICAgICAgICAgIHdoaWxlIChiYWNr
VHJhY2stPm1hdGNoQW1vdW50IDwgdGVybS5hdG9tLnF1YW50aXR5Q291bnQpIHsKICAgICAgICAg
ICAgICAgICAvLyBUcnkgdG8gZG8gYSBtYXRjaCwgYW5kIGl0IGl0IHN1Y2NlZWRzLCBhZGQgaXQg
dG8gdGhlIGxpc3QuCiAgICAgICAgICAgICAgICAgY29udGV4dCA9IGFsbG9jUGFyZW50aGVzZXNE
aXNqdW5jdGlvbkNvbnRleHQoZGlzanVuY3Rpb25Cb2R5LCBvdXRwdXQsIHRlcm0pOwotICAgICAg
ICAgICAgICAgIGlmIChtYXRjaERpc2p1bmN0aW9uKGRpc2p1bmN0aW9uQm9keSwgY29udGV4dC0+
Z2V0RGlzanVuY3Rpb25Db250ZXh0KHRlcm0pKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBt
YXRjaERpc2p1bmN0aW9uKGRpc2p1bmN0aW9uQm9keSwgY29udGV4dC0+Z2V0RGlzanVuY3Rpb25D
b250ZXh0KHRlcm0pKTsKKworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gSlNSZWdFeHBN
YXRjaCkKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNv
bnRleHQoYmFja1RyYWNrLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgLy8gVGhlIG1hdGNoIGZhaWxlZDsgdHJ5IHRvIGZpbmQgYW4gYWx0ZXJu
YXRlIHBvaW50IHRvIGNhcnJ5IG9uIGZyb20uCiAgICAgICAgICAgICAgICAgICAgIHJlc2V0TWF0
Y2hlcyh0ZXJtLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgZnJlZVBhcmVudGhlc2Vz
RGlzanVuY3Rpb25Db250ZXh0KGNvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXBh
cmVudGhlc2VzRG9CYWNrdHJhY2sodGVybSwgYmFja1RyYWNrKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09
IEpTUmVnRXhwTm9NYXRjaCkgeworICAgICAgICAgICAgICAgICAgICAgICAgSlNSZWdFeHBSZXN1
bHQgYmFja3RyYWNrUmVzdWx0ID0gcGFyZW50aGVzZXNEb0JhY2t0cmFjayh0ZXJtLCBiYWNrVHJh
Y2spOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhY2t0cmFja1Jlc3VsdCAhPSBKU1Jl
Z0V4cE1hdGNoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiYWNrdHJhY2tS
ZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIEFTU0VSVChiYWNrVHJhY2stPm1hdGNoQW1vdW50ID09IHRlcm0uYXRvbS5xdWFu
dGl0eUNvdW50KTsKICAgICAgICAgICAgIGNvbnRleHQgPSBiYWNrVHJhY2stPmxhc3RDb250ZXh0
OwogICAgICAgICAgICAgcmVjb3JkUGFyZW50aGVzZXNNYXRjaCh0ZXJtLCBjb250ZXh0KTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwTWF0Y2g7
CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFF1YW50aWZpZXJHcmVlZHk6IHsKICAgICAgICAg
ICAgIGlmICghYmFja1RyYWNrLT5tYXRjaEFtb3VudCkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwTm9NYXRjaDsKIAogICAgICAg
ICAgICAgUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQgPSBiYWNrVHJhY2st
Pmxhc3RDb250ZXh0OwotICAgICAgICAgICAgaWYgKG1hdGNoTm9uWmVyb0Rpc2p1bmN0aW9uKGRp
c2p1bmN0aW9uQm9keSwgY29udGV4dC0+Z2V0RGlzanVuY3Rpb25Db250ZXh0KHRlcm0pLCB0cnVl
KSkgeworICAgICAgICAgICAgSlNSZWdFeHBSZXN1bHQgcmVzdWx0ID0gbWF0Y2hOb25aZXJvRGlz
anVuY3Rpb24oZGlzanVuY3Rpb25Cb2R5LCBjb250ZXh0LT5nZXREaXNqdW5jdGlvbkNvbnRleHQo
dGVybSksIHRydWUpOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBKU1JlZ0V4cE1hdGNoKSB7
CiAgICAgICAgICAgICAgICAgd2hpbGUgKGJhY2tUcmFjay0+bWF0Y2hBbW91bnQgPCB0ZXJtLmF0
b20ucXVhbnRpdHlDb3VudCkgewogICAgICAgICAgICAgICAgICAgICBQYXJlbnRoZXNlc0Rpc2p1
bmN0aW9uQ29udGV4dCogY29udGV4dCA9IGFsbG9jUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRl
eHQoZGlzanVuY3Rpb25Cb2R5LCBvdXRwdXQsIHRlcm0pOwotICAgICAgICAgICAgICAgICAgICBp
ZiAobWF0Y2hOb25aZXJvRGlzanVuY3Rpb24oZGlzanVuY3Rpb25Cb2R5LCBjb250ZXh0LT5nZXRE
aXNqdW5jdGlvbkNvbnRleHQodGVybSkpKQorICAgICAgICAgICAgICAgICAgICBKU1JlZ0V4cFJl
c3VsdCBwYXJlbnRoZXNlc1Jlc3VsdCA9IG1hdGNoTm9uWmVyb0Rpc2p1bmN0aW9uKGRpc2p1bmN0
aW9uQm9keSwgY29udGV4dC0+Z2V0RGlzanVuY3Rpb25Db250ZXh0KHRlcm0pKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHBhcmVudGhlc2VzUmVzdWx0ID09IEpTUmVnRXhwTWF0Y2gpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBhcHBlbmRQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChi
YWNrVHJhY2ssIGNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc2V0TWF0Y2hlcyh0ZXJtLCBjb250ZXh0KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGZyZWVQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChjb250ZXh0KTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudGhlc2VzUmVzdWx0ICE9IEpTUmVn
RXhwTm9NYXRjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50aGVz
ZXNSZXN1bHQ7CisKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtOTExLDYwICs5NDEsNzMgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIHJlc2V0TWF0Y2hlcyh0ZXJtLCBjb250ZXh0KTsKICAgICAgICAg
ICAgICAgICBwb3BQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChiYWNrVHJhY2spOwogICAg
ICAgICAgICAgICAgIGZyZWVQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChjb250ZXh0KTsK
KworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gSlNSZWdFeHBOb01hdGNoKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBpZiAoYmFja1RyYWNrLT5tYXRjaEFtb3VudCkgewogICAgICAgICAgICAgICAgIFBhcmVudGhl
c2VzRGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0ID0gYmFja1RyYWNrLT5sYXN0Q29udGV4dDsK
ICAgICAgICAgICAgICAgICByZWNvcmRQYXJlbnRoZXNlc01hdGNoKHRlcm0sIGNvbnRleHQpOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1
cm4gSlNSZWdFeHBNYXRjaDsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgUXVhbnRpZmllck5v
bkdyZWVkeTogewogICAgICAgICAgICAgLy8gSWYgd2UndmUgbm90IHJlYWNoZWQgdGhlIGxpbWl0
LCB0cnkgdG8gYWRkIG9uZSBtb3JlIG1hdGNoLgogICAgICAgICAgICAgaWYgKGJhY2tUcmFjay0+
bWF0Y2hBbW91bnQgPCB0ZXJtLmF0b20ucXVhbnRpdHlDb3VudCkgewogICAgICAgICAgICAgICAg
IFBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0ID0gYWxsb2NQYXJlbnRoZXNl
c0Rpc2p1bmN0aW9uQ29udGV4dChkaXNqdW5jdGlvbkJvZHksIG91dHB1dCwgdGVybSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKG1hdGNoTm9uWmVyb0Rpc2p1bmN0aW9uKGRpc2p1bmN0aW9uQm9keSwg
Y29udGV4dC0+Z2V0RGlzanVuY3Rpb25Db250ZXh0KHRlcm0pKSkgeworICAgICAgICAgICAgICAg
IEpTUmVnRXhwUmVzdWx0IHJlc3VsdCA9IG1hdGNoTm9uWmVyb0Rpc2p1bmN0aW9uKGRpc2p1bmN0
aW9uQm9keSwgY29udGV4dC0+Z2V0RGlzanVuY3Rpb25Db250ZXh0KHRlcm0pKTsKKyAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0ID09IEpTUmVnRXhwTWF0Y2gpIHsKICAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQoYmFja1RyYWNrLCBjb250ZXh0
KTsKICAgICAgICAgICAgICAgICAgICAgcmVjb3JkUGFyZW50aGVzZXNNYXRjaCh0ZXJtLCBjb250
ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzZXRNYXRjaGVzKHRlcm0sIGNvbnRleHQp
OwotICAgICAgICAgICAgICAgICAgICBmcmVlUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQo
Y29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4cE1hdGNoOwogICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJlc2V0TWF0Y2hlcyh0ZXJtLCBjb250
ZXh0KTsKKyAgICAgICAgICAgICAgICBmcmVlUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQo
Y29udGV4dCk7CisKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEpTUmVnRXhwTm9NYXRj
aCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgLy8gTm9wZSAtIG9rYXkgYmFja3RyYWNrIGxvb2tpbmcgZm9yIGFuIGFsdGVy
bmF0aXZlLgogICAgICAgICAgICAgd2hpbGUgKGJhY2tUcmFjay0+bWF0Y2hBbW91bnQpIHsKICAg
ICAgICAgICAgICAgICBQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dCogY29udGV4dCA9IGJh
Y2tUcmFjay0+bGFzdENvbnRleHQ7Ci0gICAgICAgICAgICAgICAgaWYgKG1hdGNoTm9uWmVyb0Rp
c2p1bmN0aW9uKGRpc2p1bmN0aW9uQm9keSwgY29udGV4dC0+Z2V0RGlzanVuY3Rpb25Db250ZXh0
KHRlcm0pLCB0cnVlKSkgeworICAgICAgICAgICAgICAgIEpTUmVnRXhwUmVzdWx0IHJlc3VsdCA9
IG1hdGNoTm9uWmVyb0Rpc2p1bmN0aW9uKGRpc2p1bmN0aW9uQm9keSwgY29udGV4dC0+Z2V0RGlz
anVuY3Rpb25Db250ZXh0KHRlcm0pLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0
ID09IEpTUmVnRXhwTWF0Y2gpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gc3VjY2Vzc2Z1bCBi
YWNrdHJhY2shIHdlJ3JlIGJhY2sgaW4gdGhlIGdhbWUhCiAgICAgICAgICAgICAgICAgICAgIGlm
IChiYWNrVHJhY2stPm1hdGNoQW1vdW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0ID0gYmFja1RyYWNrLT5sYXN0Q29udGV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
Y29yZFBhcmVudGhlc2VzTWF0Y2godGVybSwgY29udGV4dCk7CiAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU1JlZ0V4cE1hdGNoOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ICAgIC8vIHBvcCBhIG1hdGNoIG9mZiB0aGUgc3RhY2sKICAgICAgICAgICAgICAgICByZXNldE1h
dGNoZXModGVybSwgY29udGV4dCk7CiAgICAgICAgICAgICAgICAgcG9wUGFyZW50aGVzZXNEaXNq
dW5jdGlvbkNvbnRleHQoYmFja1RyYWNrKTsKICAgICAgICAgICAgICAgICBmcmVlUGFyZW50aGVz
ZXNEaXNqdW5jdGlvbkNvbnRleHQoY29udGV4dCk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICByZXR1cm4gSlNSZWdFeHBOb01hdGNoOwogICAgICAgICB9CiAgICAgICAgIH0KIAog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gSlNSZWdFeHBFcnJvck5vTWF0Y2g7CiAgICAgfQogCiAjZGVmaW5lIE1BVENI
X05FWFQoKSB7ICsrY29udGV4dC0+dGVybTsgZ290byBtYXRjaEFnYWluOyB9CiAjZGVmaW5lIEJB
Q0tUUkFDSygpIHsgLS1jb250ZXh0LT50ZXJtOyBnb3RvIGJhY2t0cmFjazsgfQogI2RlZmluZSBj
dXJyZW50VGVybSgpIChkaXNqdW5jdGlvbi0+dGVybXNbY29udGV4dC0+dGVybV0pCi0gICAgYm9v
bCBtYXRjaERpc2p1bmN0aW9uKEJ5dGVEaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIERpc2p1bmN0
aW9uQ29udGV4dCogY29udGV4dCwgYm9vbCBidHJhY2sgPSBmYWxzZSkKKyAgICBKU1JlZ0V4cFJl
c3VsdCBtYXRjaERpc2p1bmN0aW9uKEJ5dGVEaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIERpc2p1
bmN0aW9uQ29udGV4dCogY29udGV4dCwgYm9vbCBidHJhY2sgPSBmYWxzZSkKICAgICB7CisgICAg
ICAgIGlmICghLS1yZW1haW5pbmdNYXRjaENvdW50KQorICAgICAgICAgICAgcmV0dXJuIEpTUmVn
RXhwRXJyb3JIaXRMaW1pdDsKKwogICAgICAgICBpZiAoYnRyYWNrKQogICAgICAgICAgICAgQkFD
S1RSQUNLKCk7CiAKQEAgLTk3OSwxNCArMTAyMiwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBN
QVRDSF9ORVhUKCk7CiAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVTdWJwYXR0ZXJuRW5kOgog
ICAgICAgICAgICAgY29udGV4dC0+bWF0Y2hFbmQgPSBpbnB1dC5nZXRQb3MoKTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwTWF0Y2g7CiAKICAg
ICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUJvZHlBbHRlcm5hdGl2ZUJlZ2luOgogICAgICAgICAg
ICAgTUFUQ0hfTkVYVCgpOwogICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQm9keUFsdGVybmF0
aXZlRGlzanVuY3Rpb246CiAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVCb2R5QWx0ZXJuYXRp
dmVFbmQ6CiAgICAgICAgICAgICBjb250ZXh0LT5tYXRjaEVuZCA9IGlucHV0LmdldFBvcygpOwot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBNYXRj
aDsKIAogICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQWx0ZXJuYXRpdmVCZWdpbjoKICAgICAg
ICAgICAgIE1BVENIX05FWFQoKTsKQEAgLTEwNzYsMTAgKzExMTksMTYgQEAgcHVibGljOgogICAg
ICAgICAgICAgaWYgKG1hdGNoQmFja1JlZmVyZW5jZShjdXJyZW50VGVybSgpLCBjb250ZXh0KSkK
ICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CiAgICAgICAgICAgICBCQUNLVFJBQ0soKTsK
LSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybjoKLSAgICAg
ICAgICAgIGlmIChtYXRjaFBhcmVudGhlc2VzKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQorICAg
ICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuOiB7CisgICAgICAg
ICAgICBKU1JlZ0V4cFJlc3VsdCByZXN1bHQgPSBtYXRjaFBhcmVudGhlc2VzKGN1cnJlbnRUZXJt
KCksIGNvbnRleHQpOworCisgICAgICAgICAgICBpZiAocmVzdWx0ID09IEpTUmVnRXhwTWF0Y2gp
IHsKICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICB9ICBlbHNlIGlm
IChyZXN1bHQgIT0gSlNSZWdFeHBOb01hdGNoKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CisKICAgICAgICAgICAgIEJBQ0tUUkFDSygpOworICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Qnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW46CiAgICAgICAgICAg
ICBpZiAobWF0Y2hQYXJlbnRoZXNlc09uY2VCZWdpbihjdXJyZW50VGVybSgpLCBjb250ZXh0KSkK
ICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CkBAIC0xMTExLDcgKzExNjAsNyBAQCBwdWJs
aWM6CiAKICAgICAgICAgc3dpdGNoIChjdXJyZW50VGVybSgpLnR5cGUpIHsKICAgICAgICAgY2Fz
ZSBCeXRlVGVybTo6VHlwZVN1YnBhdHRlcm5CZWdpbjoKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4cE5vTWF0Y2g7CiAgICAgICAgIGNhc2UgQnl0
ZVRlcm06OlR5cGVTdWJwYXR0ZXJuRW5kOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAKQEAgLTExMjMsNyArMTE3Miw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBNQVRD
SF9ORVhUKCk7CiAKICAgICAgICAgICAgIGlmIChpbnB1dC5hdEVuZCgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBOb01hdGNo
OwogCiAgICAgICAgICAgICBpbnB1dC5uZXh0KCk7CiAgICAgICAgICAgICBjb250ZXh0LT5tYXRj
aEJlZ2luID0gaW5wdXQuZ2V0UG9zKCk7CkBAIC0xMTc5LDEwICsxMjI4LDE2IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICBpZiAoYmFja3RyYWNrQmFja1JlZmVyZW5jZShjdXJyZW50VGVybSgp
LCBjb250ZXh0KSkKICAgICAgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwogICAgICAgICAg
ICAgICAgIEJBQ0tUUkFDSygpOwotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVu
dGhlc2VzU3VicGF0dGVybjoKLSAgICAgICAgICAgICAgICBpZiAoYmFja3RyYWNrUGFyZW50aGVz
ZXMoY3VycmVudFRlcm0oKSwgY29udGV4dCkpCisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpU
eXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuOiB7CisgICAgICAgICAgICAgICAgSlNSZWdFeHBSZXN1
bHQgcmVzdWx0ID0gYmFja3RyYWNrUGFyZW50aGVzZXMoY3VycmVudFRlcm0oKSwgY29udGV4dCk7
CisKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEpTUmVnRXhwTWF0Y2gpIHsKICAgICAg
ICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
cmVzdWx0ICE9IEpTUmVnRXhwTm9NYXRjaCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKwogICAgICAgICAgICAgICAgIEJBQ0tUUkFDSygpOworICAgICAgICAgICAgfQogICAg
ICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdp
bjoKICAgICAgICAgICAgICAgICBpZiAoYmFja3RyYWNrUGFyZW50aGVzZXNPbmNlQmVnaW4oY3Vy
cmVudFRlcm0oKSwgY29udGV4dCkpCiAgICAgICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsK
QEAgLTEyMDYsMjAgKzEyNjEsMjMgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IEpTUmVnRXhwRXJyb3JOb01hdGNoOwogICAgIH0KIAotICAgIGJvb2wgbWF0Y2hOb25aZXJvRGlz
anVuY3Rpb24oQnl0ZURpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwgRGlzanVuY3Rpb25Db250ZXh0
KiBjb250ZXh0LCBib29sIGJ0cmFjayA9IGZhbHNlKQorICAgIEpTUmVnRXhwUmVzdWx0IG1hdGNo
Tm9uWmVyb0Rpc2p1bmN0aW9uKEJ5dGVEaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIERpc2p1bmN0
aW9uQ29udGV4dCogY29udGV4dCwgYm9vbCBidHJhY2sgPSBmYWxzZSkKICAgICB7Ci0gICAgICAg
IGlmIChtYXRjaERpc2p1bmN0aW9uKGRpc2p1bmN0aW9uLCBjb250ZXh0LCBidHJhY2spKSB7Cisg
ICAgICAgIEpTUmVnRXhwUmVzdWx0IHJlc3VsdCA9IG1hdGNoRGlzanVuY3Rpb24oZGlzanVuY3Rp
b24sIGNvbnRleHQsIGJ0cmFjayk7CisKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBKU1JlZ0V4cE1h
dGNoKSB7CiAgICAgICAgICAgICB3aGlsZSAoY29udGV4dC0+bWF0Y2hCZWdpbiA9PSBjb250ZXh0
LT5tYXRjaEVuZCkgewotICAgICAgICAgICAgICAgIGlmICghbWF0Y2hEaXNqdW5jdGlvbihkaXNq
dW5jdGlvbiwgY29udGV4dCwgdHJ1ZSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtYXRjaERpc2p1bmN0aW9uKGRpc2p1bmN0aW9u
LCBjb250ZXh0LCB0cnVlKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEpTUmVnRXhw
TWF0Y2gpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4cE1h
dGNoOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIAogICAgIGludCBpbnRlcnByZXQoKQpAQCAtMTIzMyw3ICsxMjkxLDgg
QEAgcHVibGljOgogCiAgICAgICAgIERpc2p1bmN0aW9uQ29udGV4dCogY29udGV4dCA9IGFsbG9j
RGlzanVuY3Rpb25Db250ZXh0KHBhdHRlcm4tPm1fYm9keS5nZXQoKSk7CiAKLSAgICAgICAgaWYg
KG1hdGNoRGlzanVuY3Rpb24ocGF0dGVybi0+bV9ib2R5LmdldCgpLCBjb250ZXh0KSkgeworICAg
ICAgICBKU1JlZ0V4cFJlc3VsdCByZXN1bHQgPSBtYXRjaERpc2p1bmN0aW9uKHBhdHRlcm4tPm1f
Ym9keS5nZXQoKSwgY29udGV4dCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gSlNSZWdFeHBNYXRj
aCkgewogICAgICAgICAgICAgb3V0cHV0WzBdID0gY29udGV4dC0+bWF0Y2hCZWdpbjsKICAgICAg
ICAgICAgIG91dHB1dFsxXSA9IGNvbnRleHQtPm1hdGNoRW5kOwogICAgICAgICB9CkBAIC0xMjQy
LDYgKzEzMDEsOSBAQCBwdWJsaWM6CiAKICAgICAgICAgcGF0dGVybi0+bV9hbGxvY2F0b3ItPnN0
b3BBbGxvY2F0b3IoKTsKIAorICAgICAgICBpZiAob3V0cHV0WzBdID09IC0xICYmIHJlc3VsdCAh
PSBKU1JlZ0V4cE5vTWF0Y2gpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCiAgICAgICAg
IHJldHVybiBvdXRwdXRbMF07CiAgICAgfQogCkBAIC0xMjUwLDYgKzEzMTIsNyBAQCBwdWJsaWM6
CiAgICAgICAgICwgb3V0cHV0KG91dHB1dCkKICAgICAgICAgLCBpbnB1dChpbnB1dENoYXIsIHN0
YXJ0LCBsZW5ndGgpCiAgICAgICAgICwgYWxsb2NhdG9yUG9vbCgwKQorICAgICAgICAsIHJlbWFp
bmluZ01hdGNoQ291bnQobWF0Y2hMaW1pdCkKICAgICB7CiAgICAgfQogCkBAIC0xMjU4LDYgKzEz
MjEsNyBAQCBwcml2YXRlOgogICAgIGludCogb3V0cHV0OwogICAgIElucHV0U3RyZWFtIGlucHV0
OwogICAgIEJ1bXBQb2ludGVyUG9vbCogYWxsb2NhdG9yUG9vbDsKKyAgICB1bnNpZ25lZCByZW1h
aW5pbmdNYXRjaENvdW50OwogfTsKIAogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS95YXJy
L1JlZ2V4SW50ZXJwcmV0ZXIuaCBiL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhJbnRlcnByZXRl
ci5oCmluZGV4IDM3ZjE3ZmUuLmZlNzc1YTQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3lh
cnIvUmVnZXhJbnRlcnByZXRlci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhJbnRl
cnByZXRlci5oCkBAIC00MCw2ICs0MCwyMSBAQCB1c2luZyBXVEY6OkJ1bXBQb2ludGVyQWxsb2Nh
dG9yOwogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgewogCisvLyBUT0RPIG1vdmUg
dGhlIG1hdGNoTGltaXQgY29uc3RhbnQgYW5kIHRoZSBKU1JlZ0V4cFJlc3VsdCBlbnVtIHRvIHRo
ZSBKU1JlZ0V4cC5oIHdoZW4gcGNyZSBpcyByZW1vdmVkLgorCisvLyBUaGUgYmVsb3cgbGltaXQg
cmVzdHJpY3RzIHRoZSBudW1iZXIgb2YgInJlY3Vyc2l2ZSIgbWF0Y2ggY2FsbHMgaW4gb3JkZXIg
dG8KKy8vIGF2b2lkIHNwZW5kaW5nIGV4cG9uZW50aWFsIHRpbWUgb24gY29tcGxleCByZWd1bGFy
IGV4cHJlc3Npb25zLgorc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1hdGNoTGltaXQgPSAxMDAwMDAw
OworCitlbnVtIEpTUmVnRXhwUmVzdWx0IHsKKyAgICBKU1JlZ0V4cE1hdGNoID0gMSwKKyAgICBK
U1JlZ0V4cE5vTWF0Y2ggPSAwLAorICAgIEpTUmVnRXhwRXJyb3JOb01hdGNoID0gLTEsCisgICAg
SlNSZWdFeHBFcnJvckhpdExpbWl0ID0gLTIsCisgICAgSlNSZWdFeHBFcnJvck5vTWVtb3J5ID0g
LTMsCisgICAgSlNSZWdFeHBFcnJvckludGVybmFsID0gLTQKK307CisKIGNsYXNzIEJ5dGVEaXNq
dW5jdGlvbjsKIAogc3RydWN0IEJ5dGVUZXJtIHsKLS0gCjEuNy4yLjIKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>