<?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>41186</bug_id>
          
          <creation_ts>2010-06-24 17:37:19 -0700</creation_ts>
          <short_desc>Make DocumentParser API private on subclasses to catch misuse bugs</short_desc>
          <delta_ts>2010-07-27 22:30:16 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>tonyg</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>242762</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-24 17:37:19 -0700</bug_when>
    <thetext>Make DocumentParser API private on subclasses to catch misuse bugs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242773</commentid>
    <comment_count>1</comment_count>
      <attachid>59715</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-24 18:00:46 -0700</bug_when>
    <thetext>Created attachment 59715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242819</commentid>
    <comment_count>2</comment_count>
      <attachid>59731</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-24 21:53:54 -0700</bug_when>
    <thetext>Created attachment 59731
Got rid of reference hackery</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242820</commentid>
    <comment_count>3</comment_count>
      <attachid>59731</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-24 21:56:17 -0700</bug_when>
    <thetext>Comment on attachment 59731
Got rid of reference hackery

Much better.  Thank you.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242868</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-25 00:10:23 -0700</bug_when>
    <thetext>Committed r61835: &lt;http://trac.webkit.org/changeset/61835&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255787</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-07-24 21:55:45 -0700</bug_when>
    <thetext>This change broke WML support by changing the visibility of the functions wellFormed(), lineNumber(), and columnNumber() from public to private. These functions are used in WMLErrorHandling::reportWMLError(). For instance, wellFormed() is called on line 48 &lt;http://trac.webkit.org/browser/trunk/WebCore/wml/WMLErrorHandling.cpp?rev=61104#L48&gt;.

I&apos;m not familiar with this area of the code. Is there an alternative way to get this information? Should we use the NVI idiom here? Or should we re-expose these as public?

CC&apos;ing Nikolas Zimmermann since he worked on the WML code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255789</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-07-24 22:04:19 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; This change broke WML support by changing the visibility of the functions wellFormed(), lineNumber(), and columnNumber() from public to private. These functions are used in WMLErrorHandling::reportWMLError(). For instance, wellFormed() is called on line 48 &lt;http://trac.webkit.org/browser/trunk/WebCore/wml/WMLErrorHandling.cpp?rev=61104#L48&gt;.
&gt; 
&gt; I&apos;m not familiar with this area of the code. Is there an alternative way to get this information? Should we use the NVI idiom here? Or should we re-expose these as public?
&gt; 
&gt; CC&apos;ing Nikolas Zimmermann since he worked on the WML code.

I should be more precise. This change contributed to breaking WML support. WML support is broken in other places as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255790</commentid>
    <comment_count>7</comment_count>
      <attachid>59731</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-24 22:11:29 -0700</bug_when>
    <thetext>Comment on attachment 59731
Got rid of reference hackery

Rejecting patch 59731 from commit-queue.

Failed to run &quot;[u&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Adam Barth&apos;, u&apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
LegacyHTMLTreeBuilder.cpp
Hunk #1 FAILED at 1648.
Hunk #2 FAILED at 1672.
2 out of 2 hunks FAILED -- saving rejects to file WebCore/html/LegacyHTMLTreeBuilder.cpp.rej
patching file WebCore/loader/DocumentWriter.cpp
Hunk #1 FAILED at 72.
1 out of 1 hunk FAILED -- saving rejects to file WebCore/loader/DocumentWriter.cpp.rej
patching file WebCore/loader/TextDocument.cpp
Hunk #1 FAILED at 44.
Hunk #2 FAILED at 61.
2 out of 2 hunks FAILED -- saving rejects to file WebCore/loader/TextDocument.cpp.rej

Full output: http://queues.webkit.org/results/3617103</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255818</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-25 08:17:56 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; This change broke WML support by changing the visibility of the functions wellFormed(), lineNumber(), and columnNumber() from public to private. These functions are used in WMLErrorHandling::reportWMLError(). For instance, wellFormed() is called on line 48 &lt;http://trac.webkit.org/browser/trunk/WebCore/wml/WMLErrorHandling.cpp?rev=61104#L48&gt;.

That&apos;s incorrect.  wellFormed, lineNumber and columnNumber no longer exist on DocumentParser, only on the subclass ScriptableDocumentParser.

What does WML use for parsing?  Its own DocumentParser subclass?  If so, that should be a subclass of ScriptableDocumentParser.  In any case, WML code should be dealing with more specific pointer types when possible.

Please open a new bug.

Also, WML is broken and really should be ripped out from the tree in its broken, unmaintained, poorly-written state.  If WML ever wants to be a real boy, its going to need a build-bot, as well as some cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256393</commentid>
    <comment_count>9</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-07-26 22:44:38 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #5)
&gt; &gt; This change broke WML support by changing the visibility of the functions wellFormed(), lineNumber(), and columnNumber() from public to private. These functions are used in WMLErrorHandling::reportWMLError(). For instance, wellFormed() is called on line 48 &lt;http://trac.webkit.org/browser/trunk/WebCore/wml/WMLErrorHandling.cpp?rev=61104#L48&gt;.
&gt; 
&gt; That&apos;s incorrect.  wellFormed, lineNumber and columnNumber no longer exist on DocumentParser, only on the subclass ScriptableDocumentParser.
&gt; 
&gt; What does WML use for parsing?  Its own DocumentParser subclass?  If so, that should be a subclass of ScriptableDocumentParser.  In any case, WML code should be dealing with more specific pointer types when possible.
WML is not scriptable, that should be remembered.
&gt; 
&gt; Please open a new bug.
&gt; 
&gt; Also, WML is broken and really should be ripped out from the tree in its broken, unmaintained, poorly-written state.  If WML ever wants to be a real boy, its going to need a build-bot, as well as some cleanup.
WML is unmaintained at the moment, that&apos;s true, but it&apos;s _not_ poorly written. I rewrote the WML support from scratch, and don&apos;t think it contains any poor code, except the parsing bits.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59715</attachid>
            <date>2010-06-24 18:00:46 -0700</date>
            <delta_ts>2010-06-24 21:53:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41186-20100624180040.patch</filename>
            <type>text/plain</type>
            <size>11288</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGFjYzdkM2Q0NDkyYzVmZDYxMmZiNTI3MmM2Nzk2NjM3OGRlZTBhYy4uYmM5YjA1NTUxYTAxNWU4
ZmJmYjIzNTUyYTQ5ZjZjMDJjNWJkMWVlNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMC0wNi0yNCAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTWFrZSBEb2N1bWVudFBhcnNlciBBUEkgcHJpdmF0ZSBvbiBz
dWJjbGFzc2VzIHRvIGNhdGNoIG1pc3VzZSBidWdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTE4NgorCisgICAgICAgIFRoaXMgYWxyZWFkeSBmb3Vu
ZCBvbmUgYnVnOgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDExODcKKworICAgICAgICBUaGUgb25seSAidHJpY2t5IiBwYXJ0IG9mIHRoaXMgY2hhbmdl
IGlzIHVzaW5nIGEKKyAgICAgICAgRG9jdW1lbnRQYXJzZXIqIHRvIHRoZSBzdGFjayBvYmplY3Qg
cGFyc2VyIHdoZW4gcGFyc2luZworICAgICAgICBEb2N1bWVudEZyYWdtZW50cy4gIFdlIHNob3Vs
ZCBleHBsb3JlIHVzaW5nIGEgbm9uLXN0YWNrCisgICAgICAgIGFsbG9jYXRlZCBEb2N1bWVudFBh
cnNlciBpbiB0aGVzZSBjYXNlcyBpbiBhIGxhdGVyIHBhdGNoLgorCisgICAgICAgICogZG9tL0Rv
Y3VtZW50RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6
cGFyc2VIVE1MKToKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpzZXRJc1hIVE1MRG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmlzWEhUTUxEb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6c2V0SXNYSFRNTE1QRG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmlzWEhUTUxNUERvY3VtZW50KToKKyAg
ICAgICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGh0bWwvTGVnYWN5
SFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTGVnYWN5SFRN
TERvY3VtZW50RnJhZ21lbnQpOgorICAgICAgICAqIGh0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFy
c2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OmZvcmNl
U3luY2hyb25vdXMpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTERvY3VtZW50UGFyc2Vy
Ojpwcm9jZXNzaW5nQ29udGVudFdyaXR0ZW5CeVNjcmlwdCk6CisgICAgICAgICogaHRtbC9MZWdh
Y3lIVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTFRyZWVC
dWlsZGVyOjpyZXBvcnRFcnJvclRvQ29uc29sZSk6CisgICAgICAgICogbG9hZGVyL1RleHREb2N1
bWVudC5jcHA6CisKIDIwMTAtMDYtMjQgIFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxl
LmNvbT4KIAogICAgICAgICBXaW5kb3dzIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5j
cHAKaW5kZXggZDI3MjczZDkzM2IzMWQ0MjEwYTVjYWU4MTIxZDU3MGRhNWU5MGZjMC4uMmYwYTBk
ZDFkOTMzMDg4NzcyZjU2MzJiNmQ0ZWYyZWY2ZDM5ZWU5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vRG9jdW1lbnRGcmFnbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVu
dC5jcHAKQEAgLTg3LDEwICs4NywxMyBAQCB2b2lkIERvY3VtZW50RnJhZ21lbnQ6OnBhcnNlSFRN
TChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaQogICAgIGlm
IChzaG91bGRVc2VMZWdhY3lIVE1MUGFyc2VyKCkpCiAgICAgICAgIHJldHVybiBwYXJzZUxlZ2Fj
eUhUTUxEb2N1bWVudEZyYWdtZW50KHNvdXJjZSwgdGhpcywgc2NyaXB0aW5nUGVybWlzc2lvbik7
CiAKLSAgICBIVE1MRG9jdW1lbnRQYXJzZXIgcGFyc2VyKHRoaXMsIHNjcmlwdGluZ1Blcm1pc3Np
b24pOwotICAgIHBhcnNlci53cml0ZShzb3VyY2UsIGZhbHNlKTsKLSAgICBwYXJzZXIuZmluaXNo
KCk7Ci0gICAgQVNTRVJUKCFwYXJzZXIucHJvY2Vzc2luZ0RhdGEoKSk7IC8vIE1ha2Ugc3VyZSB3
ZSdyZSBkb25lLiA8cmRhcjovL3Byb2JsZW0vMzk2MzE1MT4KKyAgICBIVE1MRG9jdW1lbnRQYXJz
ZXIgaHRtbFBhcnNlcih0aGlzLCBzY3JpcHRpbmdQZXJtaXNzaW9uKTsKKyAgICAvLyBDYWxsIERv
Y3VtZW50UGFyc2VyIEFQSSB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzIHNvIHRoYXQgc3ViY2xhc3Nl
cworICAgIC8vIGNhbiBtYXJrIERvY3VtZW50UGFyc2VyIEFQSSBhcyBwcml2YXRlIHRvIHByZXZl
bnQgbWlzLXVzZS4KKyAgICBEb2N1bWVudFBhcnNlciogcGFyc2VyID0gJmh0bWxQYXJzZXI7Cisg
ICAgcGFyc2VyLT53cml0ZShzb3VyY2UsIGZhbHNlKTsKKyAgICBwYXJzZXItPmZpbmlzaCgpOwor
ICAgIEFTU0VSVCghcGFyc2VyLT5wcm9jZXNzaW5nRGF0YSgpKTsgLy8gTWFrZSBzdXJlIHdlJ3Jl
IGRvbmUuIDxyZGFyOi8vcHJvYmxlbS8zOTYzMTUxPgogfQogCiBib29sIERvY3VtZW50RnJhZ21l
bnQ6OnBhcnNlWE1MKGNvbnN0IFN0cmluZyYgc291cmNlLCBFbGVtZW50KiBwYXJlbnQsIEZyYWdt
ZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50
UGFyc2VyLmgKaW5kZXggYTU1MDNmM2YzYmI2MmEzYmZlMzU1YjU3MmYxNmFkNTcxYmRjMjU0MC4u
OTUyMGVjNGY1YTM0MmYxZDA4YjI1OWYzOTc4Zjc4NWYzY2NkMzUwNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9XZWJDb3JlL2RvbS9YTUxEb2N1bWVu
dFBhcnNlci5oCkBAIC03Niw4ICs3NiwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqLCBFbGVtZW50KiwgRnJhZ21lbnRT
Y3JpcHRpbmdQZXJtaXNzaW9uKTsKICAgICAgICAgflhNTERvY3VtZW50UGFyc2VyKCk7CiAKKyAg
ICAgICAgLy8gRXhwb3NlZCBmb3IgY2FsbGJhY2tzOgogICAgICAgICBlbnVtIEVycm9yVHlwZSB7
IHdhcm5pbmcsIG5vbkZhdGFsLCBmYXRhbCB9OworICAgICAgICB2b2lkIGhhbmRsZUVycm9yKEVy
cm9yVHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIpOworCisgICAgICAgIHZvaWQgc2V0SXNYSFRNTERvY3VtZW50KGJvb2wgaXNYSFRNTCkg
eyBtX2lzWEhUTUxEb2N1bWVudCA9IGlzWEhUTUw7IH0KKyAgICAgICAgYm9vbCBpc1hIVE1MRG9j
dW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lzWEhUTUxEb2N1bWVudDsgfQorI2lmIEVOQUJMRShY
SFRNTE1QKQorICAgICAgICB2b2lkIHNldElzWEhUTUxNUERvY3VtZW50KGJvb2wgaXNYSFRNTCkg
eyBtX2lzWEhUTUxNUERvY3VtZW50ID0gaXNYSFRNTDsgfQorICAgICAgICBib29sIGlzWEhUTUxN
UERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1hIVE1MTVBEb2N1bWVudDsgfQorI2VuZGlm
CisjaWYgRU5BQkxFKFdNTCkKKyAgICAgICAgYm9vbCBpc1dNTERvY3VtZW50KCkgY29uc3Q7Cisj
ZW5kaWYKIAorICAgIHByaXZhdGU6CiAgICAgICAgIC8vIEZyb20gRG9jdW1lbnRQYXJzZXIKICAg
ICAgICAgdmlydHVhbCB2b2lkIHdyaXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYsIGJvb2wgYXBw
ZW5kRGF0YSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5pc2goKTsKQEAgLTg4LDI2ICsxMDEs
MTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGludCBsaW5lTnVtYmVy
KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgaW50IGNvbHVtbk51bWJlcigpIGNvbnN0OwogCisg
ICAgICAgIC8vIGZyb20gQ2FjaGVkUmVzb3VyY2VDbGllbnQKKyAgICAgICAgdmlydHVhbCB2b2lk
IG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CisKICAgICAgICAgdm9pZCBlbmQoKTsK
IAogICAgICAgICB2b2lkIHBhdXNlUGFyc2luZygpOwogICAgICAgICB2b2lkIHJlc3VtZVBhcnNp
bmcoKTsKIAotICAgICAgICB2b2lkIHNldElzWEhUTUxEb2N1bWVudChib29sIGlzWEhUTUwpIHsg
bV9pc1hIVE1MRG9jdW1lbnQgPSBpc1hIVE1MOyB9Ci0gICAgICAgIGJvb2wgaXNYSFRNTERvY3Vt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1hIVE1MRG9jdW1lbnQ7IH0KLSNpZiBFTkFCTEUoWEhU
TUxNUCkKLSAgICAgICAgdm9pZCBzZXRJc1hIVE1MTVBEb2N1bWVudChib29sIGlzWEhUTUwpIHsg
bV9pc1hIVE1MTVBEb2N1bWVudCA9IGlzWEhUTUw7IH0KLSAgICAgICAgYm9vbCBpc1hIVE1MTVBE
b2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNYSFRNTE1QRG9jdW1lbnQ7IH0KLSNlbmRpZgot
I2lmIEVOQUJMRShXTUwpCi0gICAgICAgIGJvb2wgaXNXTUxEb2N1bWVudCgpIGNvbnN0OwotI2Vu
ZGlmCi0KLSAgICAgICAgLy8gZnJvbSBDYWNoZWRSZXNvdXJjZUNsaWVudAotICAgICAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIGZpbmlzaGVkT2JqKTsKLQot
ICAgICAgICB2b2lkIGhhbmRsZUVycm9yKEVycm9yVHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOwotCiAjaWYgVVNFKFFYTUxTVFJFQU0p
CiBwcml2YXRlOgogICAgICAgICB2b2lkIHBhcnNlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvSFRNTERvY3VtZW50UGFyc2VyLmggYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2Vy
LmgKaW5kZXggZWE1M2Y0MTU5NDNkYWIwYTU5MGMyOWUwOGYwMzJjNDdlYzIyNjY2ZS4uMjIzMzdj
NGNhOTU0NGM1YzkwNTE1NzVhZDFjNzg4MTAxZTE3MmJmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQ
YXJzZXIuaApAQCAtNTcsMTAgKzU3LDEzIEBAIHB1YmxpYzoKICAgICBIVE1MRG9jdW1lbnRQYXJz
ZXIoRG9jdW1lbnRGcmFnbWVudCosIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbik7CiAgICAg
dmlydHVhbCB+SFRNTERvY3VtZW50UGFyc2VyKCk7CiAKKyAgICAvLyBFeHBvc2VkIGZvciBIVE1M
UGFyc2VyU2NoZWR1bGVyCisgICAgdm9pZCByZXN1bWVQYXJzaW5nQWZ0ZXJZaWVsZCgpOworCitw
cml2YXRlOgogICAgIC8vIERvY3VtZW50UGFyc2VyCiAgICAgdmlydHVhbCB2b2lkIGJlZ2luKCk7
CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYsIGJvb2wgaXNG
cm9tTmV0d29yayk7Ci0gICAgdmlydHVhbCB2b2lkIGVuZCgpOwogICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2goKTsKICAgICB2aXJ0dWFsIGJvb2wgZmluaXNoV2FzQ2FsbGVkKCk7CiAgICAgdmlydHVh
bCBib29sIHByb2Nlc3NpbmdEYXRhKCkgY29uc3Q7CkBAIC04MywxMCArODYsNiBAQCBwdWJsaWM6
CiAgICAgLy8gQ2FjaGVkUmVzb3VyY2VDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKIAotICAgIC8vIEV4cG9zZWQgZm9yIEhUTUxQYXJzZXJT
Y2hlZHVsZXIKLSAgICB2b2lkIHJlc3VtZVBhcnNpbmdBZnRlcllpZWxkKCk7Ci0KLXByaXZhdGU6
CiAgICAgdm9pZCB3aWxsUHVtcExleGVyKCk7CiAgICAgdm9pZCBkaWRQdW1wTGV4ZXIoKTsKIApA
QCAtMTAyLDYgKzEwMSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGF0dGVtcHRUb0VuZCgpOwog
ICAgIHZvaWQgZW5kSWZEZWxheWVkKCk7CisgICAgdm9pZCBlbmQoKTsKIAogICAgIGJvb2wgaXNT
Y2hlZHVsZWRGb3JSZXN1bWUoKSBjb25zdDsKICAgICBib29sIGluU2NyaXB0RXhlY3V0aW9uKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2Vy
LmNwcCBiL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDlk
OGExOWI2NGYwMzgzZGFlNTEyZmUwMGZlNTlmYzIxNWRlYzRhNWIuLjZiMTAxOTI0ZDhiMDhiMzQ2
ZDBkYjBiMzYxN2VmOTg1M2U1MDZiMTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9MZWdhY3lI
VE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1l
bnRQYXJzZXIuY3BwCkBAIC0yMDkwLDExICsyMDkwLDE0IEBAIHZvaWQgTGVnYWN5SFRNTERvY3Vt
ZW50UGFyc2VyOjpzZXRTcmMoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAKIHZvaWQg
cGFyc2VMZWdhY3lIVE1MRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRG9j
dW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3Jp
cHRpbmdQZXJtaXNzaW9uKQogewotICAgIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlciBwYXJzZXIo
ZnJhZ21lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24pOwotICAgIHBhcnNlci5zZXRGb3JjZVN5bmNo
cm9ub3VzKHRydWUpOwotICAgIHBhcnNlci53cml0ZShzb3VyY2UsIHRydWUpOwotICAgIHBhcnNl
ci5maW5pc2goKTsKLSAgICBBU1NFUlQoIXBhcnNlci5wcm9jZXNzaW5nRGF0YSgpKTsgICAgICAv
LyBtYWtlIHN1cmUgd2UncmUgZG9uZSAoc2VlIDM5NjMxNTEpCisgICAgTGVnYWN5SFRNTERvY3Vt
ZW50UGFyc2VyIGh0bWxQYXJzZXIoZnJhZ21lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24pOworICAg
IGh0bWxQYXJzZXIuc2V0Rm9yY2VTeW5jaHJvbm91cyh0cnVlKTsKKyAgICAvLyBDYWxsIERvY3Vt
ZW50UGFyc2VyIEFQSSB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzIHNvIHRoYXQgc3ViY2xhc3Nlcwor
ICAgIC8vIGNhbiBtYXJrIERvY3VtZW50UGFyc2VyIEFQSSBhcyBwcml2YXRlIHRvIHByZXZlbnQg
bWlzLXVzZS4KKyAgICBEb2N1bWVudFBhcnNlciogcGFyc2VyID0gJmh0bWxQYXJzZXI7CisgICAg
cGFyc2VyLT53cml0ZShzb3VyY2UsIHRydWUpOworICAgIHBhcnNlci0+ZmluaXNoKCk7CisgICAg
QVNTRVJUKCFwYXJzZXItPnByb2Nlc3NpbmdEYXRhKCkpOyAvLyBtYWtlIHN1cmUgd2UncmUgZG9u
ZSAoc2VlIDM5NjMxNTEpCiB9CiAKIFVDaGFyIGRlY29kZU5hbWVkRW50aXR5KGNvbnN0IGNoYXIq
IG5hbWUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2Vy
LmggYi9XZWJDb3JlL2h0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmgKaW5kZXggMWE5MmVj
ZDI0NzhkMjUwYTQzYjJlZjIzOTBmY2ZjODA0M2VlNWY5Zi4uOGMzNjg3NGE4NzJhMjRkZjViZDky
NDhjNmY2MWFhOGU3OWU1OTEyMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0xlZ2FjeUhUTUxE
b2N1bWVudFBhcnNlci5oCisrKyBiL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJz
ZXIuaApAQCAtMTQ3LDExICsxNDcsMjAgQEAgcHVibGljOgogICAgIExlZ2FjeUhUTUxEb2N1bWVu
dFBhcnNlcihEb2N1bWVudEZyYWdtZW50KiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0g
RnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKICAgICB2aXJ0dWFsIH5MZWdhY3lIVE1MRG9jdW1l
bnRQYXJzZXIoKTsKIAorICAgIGJvb2wgZm9yY2VTeW5jaHJvbm91cygpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUuZm9yY2VTeW5jaHJvbm91cygpOyB9CisgICAgdm9pZCBzZXRGb3JjZVN5bmNocm9u
b3VzKGJvb2wgZm9yY2UpOworCisgICAgLy8gRXhwb3NlZCBmb3IgTGVnYWN5SFRNTFRyZWVCdWls
ZGVyOjpyZXBvcnRFcnJvclRvQ29uc29sZQorICAgIGJvb2wgcHJvY2Vzc2luZ0NvbnRlbnRXcml0
dGVuQnlTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NyYy5leGNsdWRlTGluZU51bWJlcnMoKTsg
fQorCitwcm90ZWN0ZWQ6CisgICAgLy8gRXhwb3NlZCBmb3IgRlRQRGlyZWN0b3J5RG9jdW1lbnRQ
YXJzZXIKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiwgYm9v
bCBhcHBlbmREYXRhKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCk7CisKK3ByaXZhdGU6Cisg
ICAgLy8gRG9jdW1lbnRQYXJzZXIKICAgICB2aXJ0dWFsIGJvb2wgZmluaXNoV2FzQ2FsbGVkKCk7
Ci0gICAgdmlydHVhbCBib29sIGZvcmNlU3luY2hyb25vdXMoKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlLmZvcmNlU3luY2hyb25vdXMoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JjZVN5bmNo
cm9ub3VzKGJvb2wgZm9yY2UpOwogICAgIHZpcnR1YWwgYm9vbCBpc1dhaXRpbmdGb3JTY3JpcHRz
KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BQYXJzaW5nKCk7CiAgICAgdmlydHVhbCBi
b29sIHByb2Nlc3NpbmdEYXRhKCkgY29uc3Q7CkBAIC0xNjAsMjAgKzE2OSwxNSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBpbnQgbGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZU51bWJl
cjsgfQogICAgIHZpcnR1YWwgaW50IGNvbHVtbk51bWJlcigpIGNvbnN0IHsgcmV0dXJuIDE7IH0K
IAotICAgIGJvb2wgcHJvY2Vzc2luZ0NvbnRlbnRXcml0dGVuQnlTY3JpcHQoKSBjb25zdCB7IHJl
dHVybiBtX3NyYy5leGNsdWRlTGluZU51bWJlcnMoKTsgfQotCiAgICAgdmlydHVhbCB2b2lkIGV4
ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCk7CiAKICAgICB2aXJ0dWFsIExlZ2Fj
eUhUTUxUcmVlQnVpbGRlciogaHRtbFRyZWVCdWlsZGVyKCkgY29uc3QgeyByZXR1cm4gbV90cmVl
QnVpbGRlci5nZXQoKTsgfQogICAgIHZpcnR1YWwgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKiBh
c0hUTUxEb2N1bWVudFBhcnNlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAotcHJpdmF0ZToKICAgICBj
bGFzcyBTdGF0ZTsKIAotICAgIC8vIFdoZXJlIHdlIGFyZSBpbiBwYXJzaW5nIGEgdGFnCiAgICAg
dm9pZCBiZWdpbigpOwogICAgIHZvaWQgZW5kKCk7Ci0KICAgICB2b2lkIHJlc2V0KCk7CiAKICAg
ICB2b2lkIHdpbGxXcml0ZUhUTUwoY29uc3QgU2VnbWVudGVkU3RyaW5nJik7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvTGVnYWN5SFRNTFRyZWVCdWlsZGVyLmNwcCBiL1dlYkNvcmUvaHRtbC9M
ZWdhY3lIVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IDdiNDUxMTlkZmM3ZmRiYjg4YzE1ZjNiOGJi
OTQ3MWNhZGQ5MjFhMTEuLjdiNDQ5NDNmZGI5ODdlNDY3NjAzYmVmMjM1NWU1NzQ2NTNkZjczMTEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC0xNjQ4LDggKzE2NDgs
NyBAQCB2b2lkIExlZ2FjeUhUTUxUcmVlQnVpbGRlcjo6cmVwb3J0RXJyb3JUb0NvbnNvbGUoSFRN
TFBhcnNlckVycm9yQ29kZSBlcnJvckNvZGUsCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlciogaHRtbFRva2VuaXplciA9
IHN0YXRpY19jYXN0PExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcio+KG1fZG9jdW1lbnQtPnBhcnNl
cigpKTsKLSAgICBpbnQgbGluZU51bWJlciA9IGh0bWxUb2tlbml6ZXItPmxpbmVOdW1iZXIoKSAr
IDE7CisgICAgaW50IGxpbmVOdW1iZXIgPSBtX2RvY3VtZW50LT5wYXJzZXIoKS0+bGluZU51bWJl
cigpICsgMTsKIAogICAgIEF0b21pY1N0cmluZyB0YWcxOwogICAgIEF0b21pY1N0cmluZyB0YWcy
OwpAQCAtMTY3Myw5ICsxNjcyLDExIEBAIHZvaWQgTGVnYWN5SFRNTFRyZWVCdWlsZGVyOjpyZXBv
cnRFcnJvclRvQ29uc29sZShIVE1MUGFyc2VyRXJyb3JDb2RlIGVycm9yQ29kZSwKICAgICBjb25z
dCBjaGFyKiBlcnJvck1zZyA9IGh0bWxQYXJzZXJFcnJvck1lc3NhZ2VUZW1wbGF0ZShlcnJvckNv
ZGUpOwogICAgIGlmICghZXJyb3JNc2cpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAg
ICBTdHJpbmcgbWVzc2FnZTsKLSAgICBpZiAoaHRtbFRva2VuaXplci0+cHJvY2Vzc2luZ0NvbnRl
bnRXcml0dGVuQnlTY3JpcHQoKSkKKyAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IHdvcmsgZm9y
IHRoZSBuZXcgSFRNTERvY3VtZW50UGFyc2VyIGFuZCBzaG91bGQuCisgICAgTGVnYWN5SFRNTERv
Y3VtZW50UGFyc2VyKiBodG1sUGFyc2VyID0gbV9kb2N1bWVudC0+cGFyc2VyKCktPmFzSFRNTERv
Y3VtZW50UGFyc2VyKCk7CisgICAgaWYgKGh0bWxQYXJzZXIgJiYgaHRtbFBhcnNlci0+cHJvY2Vz
c2luZ0NvbnRlbnRXcml0dGVuQnlTY3JpcHQoKSkKICAgICAgICAgbWVzc2FnZSArPSBodG1sUGFy
c2VyRG9jdW1lbnRXcml0ZU1lc3NhZ2UoKTsKICAgICBtZXNzYWdlICs9IGVycm9yTXNnOwogICAg
IG1lc3NhZ2UucmVwbGFjZSgiJXRhZzEiLCB0YWcxKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9h
ZGVyL1RleHREb2N1bWVudC5jcHAgYi9XZWJDb3JlL2xvYWRlci9UZXh0RG9jdW1lbnQuY3BwCmlu
ZGV4IDYyMmUxNDgxNTUzMDIxMjAxZmU5ZWU0MGQxY2NiN2M4ZmU5MWMzYjguLjljNjE2MTA3ODM4
ZWIzNmNkYmMzNjdjNDNhOTkzOTczZDk0OWExZjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVy
L1RleHREb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvVGV4dERvY3VtZW50LmNwcApA
QCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4dERvY3VtZW50UGFyc2Vy
KCk7CiAgICAgVGV4dERvY3VtZW50UGFyc2VyKEhUTUxWaWV3U291cmNlRG9jdW1lbnQqKTsKIAor
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiwg
Ym9vbCBhcHBlbmREYXRhKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCk7CiAgICAgdmlydHVh
bCBib29sIGZpbmlzaFdhc0NhbGxlZCgpOwpAQCAtNjAsOCArNjEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBtX3NpemUgPSBuZXdTaXplOwogICAgICAgICB9CiAgICAgfQotICAgICAgICAKLXBy
aXZhdGU6CisKICAgICBFbGVtZW50KiBtX3ByZUVsZW1lbnQ7CiAKICAgICBib29sIG1fc2tpcExG
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59731</attachid>
            <date>2010-06-24 21:53:54 -0700</date>
            <delta_ts>2010-07-24 22:11:29 -0700</delta_ts>
            <desc>Got rid of reference hackery</desc>
            <filename>bug-41186-20100624215352.patch</filename>
            <type>text/plain</type>
            <size>13128</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTVkM2M1ZDc5NTk0OGRlODhiOGE3YzhkOGQ0ZmI5MTE2MzQ4ZDQ0ZS4uYTM1ODc4ZTE0NWVhZGIw
YWEzNDc1ZDZmNTg3MmVhNWNmMjMwNTllNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMC0wNi0yNCAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTWFrZSBEb2N1bWVudFBhcnNlciBBUEkgcHJpdmF0ZSBvbiBz
dWJjbGFzc2VzIHRvIGNhdGNoIG1pc3VzZSBidWdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTE4NgorCisgICAgICAgIFRoaXMgYWxyZWFkeSBmb3Vu
ZCBvbmUgYnVnOgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDExODcKKworICAgICAgICBBZGRlZCBhIG5ldyBIVE1MRG9jdW1lbnRQYXJhc2VyOjpwYXJz
ZURvY3VtZW50RnJhZ21lbnQgc28gdGhhdAorICAgICAgICBEb2N1bWVudEZyYWdtZW50LmNwcCBk
b2VzIG5vdCBuZWVkIHRvIHVzZSBwcml2YXRlIG1ldGhvZHMuCisKKyAgICAgICAgKiBkb20vRG9j
dW1lbnRGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50Ojpw
YXJzZUhUTUwpOgorICAgICAgICAqIGRvbS9YTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAo
V2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnNldElzWEhUTUxEb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6aXNYSFRNTERvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpzZXRJc1hIVE1MTVBEb2N1bWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6aXNYSFRNTE1QRG9jdW1lbnQpOgorICAg
ICAgICAqIGh0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KToKKyAgICAgICAgKiBodG1s
L0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGh0bWwvTGVnYWN5SFRNTERvY3VtZW50
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6
cGFyc2VEb2N1bWVudEZyYWdtZW50KToKKyAgICAgICAgKiBodG1sL0xlZ2FjeUhUTUxEb2N1bWVu
dFBhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpm
b3JjZVN5bmNocm9ub3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxEb2N1bWVudFBh
cnNlcjo6cHJvY2Vzc2luZ0NvbnRlbnRXcml0dGVuQnlTY3JpcHQpOgorICAgICAgICAqIGh0bWwv
TGVnYWN5SFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxU
cmVlQnVpbGRlcjo6cmVwb3J0RXJyb3JUb0NvbnNvbGUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudFdyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6cmVwbGFj
ZURvY3VtZW50KToKKyAgICAgICAgKiBsb2FkZXIvVGV4dERvY3VtZW50LmNwcDoKKwogMjAxMC0w
Ni0yMiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXZpZCBIeWF0dC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJh
Z21lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKaW5kZXggZDI3Mjcz
ZDkzM2IzMWQ0MjEwYTVjYWU4MTIxZDU3MGRhNWU5MGZjMC4uNzI4NzQzOTYyNmYyNmQxMGRjYjQy
ODJkNzUyMDZhZDdhZTg1NzRiOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFn
bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKQEAgLTg1LDEy
ICs4NSw4IEBAIGJvb2wgRG9jdW1lbnRGcmFnbWVudDo6c2hvdWxkVXNlTGVnYWN5SFRNTFBhcnNl
cigpIGNvbnN0CiB2b2lkIERvY3VtZW50RnJhZ21lbnQ6OnBhcnNlSFRNTChjb25zdCBTdHJpbmcm
IHNvdXJjZSwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24p
CiB7CiAgICAgaWYgKHNob3VsZFVzZUxlZ2FjeUhUTUxQYXJzZXIoKSkKLSAgICAgICAgcmV0dXJu
IHBhcnNlTGVnYWN5SFRNTERvY3VtZW50RnJhZ21lbnQoc291cmNlLCB0aGlzLCBzY3JpcHRpbmdQ
ZXJtaXNzaW9uKTsKLQotICAgIEhUTUxEb2N1bWVudFBhcnNlciBwYXJzZXIodGhpcywgc2NyaXB0
aW5nUGVybWlzc2lvbik7Ci0gICAgcGFyc2VyLndyaXRlKHNvdXJjZSwgZmFsc2UpOwotICAgIHBh
cnNlci5maW5pc2goKTsKLSAgICBBU1NFUlQoIXBhcnNlci5wcm9jZXNzaW5nRGF0YSgpKTsgLy8g
TWFrZSBzdXJlIHdlJ3JlIGRvbmUuIDxyZGFyOi8vcHJvYmxlbS8zOTYzMTUxPgorICAgICAgICBy
ZXR1cm4gTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoc291
cmNlLCB0aGlzLCBzY3JpcHRpbmdQZXJtaXNzaW9uKTsKKyAgICBIVE1MRG9jdW1lbnRQYXJzZXI6
OnBhcnNlRG9jdW1lbnRGcmFnbWVudChzb3VyY2UsIHRoaXMsIHNjcmlwdGluZ1Blcm1pc3Npb24p
OwogfQogCiBib29sIERvY3VtZW50RnJhZ21lbnQ6OnBhcnNlWE1MKGNvbnN0IFN0cmluZyYgc291
cmNlLCBFbGVtZW50KiBwYXJlbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRp
bmdQZXJtaXNzaW9uKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIu
aCBiL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmgKaW5kZXggYTU1MDNmM2YzYmI2MmEz
YmZlMzU1YjU3MmYxNmFkNTcxYmRjMjU0MC4uOTUyMGVjNGY1YTM0MmYxZDA4YjI1OWYzOTc4Zjc4
NWYzY2NkMzUwNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuaAor
KysgYi9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5oCkBAIC03Niw4ICs3NiwyMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJh
Z21lbnQqLCBFbGVtZW50KiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKICAgICAgICAg
flhNTERvY3VtZW50UGFyc2VyKCk7CiAKKyAgICAgICAgLy8gRXhwb3NlZCBmb3IgY2FsbGJhY2tz
OgogICAgICAgICBlbnVtIEVycm9yVHlwZSB7IHdhcm5pbmcsIG5vbkZhdGFsLCBmYXRhbCB9Owor
ICAgICAgICB2b2lkIGhhbmRsZUVycm9yKEVycm9yVHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOworCisgICAgICAgIHZvaWQgc2V0SXNY
SFRNTERvY3VtZW50KGJvb2wgaXNYSFRNTCkgeyBtX2lzWEhUTUxEb2N1bWVudCA9IGlzWEhUTUw7
IH0KKyAgICAgICAgYm9vbCBpc1hIVE1MRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lzWEhU
TUxEb2N1bWVudDsgfQorI2lmIEVOQUJMRShYSFRNTE1QKQorICAgICAgICB2b2lkIHNldElzWEhU
TUxNUERvY3VtZW50KGJvb2wgaXNYSFRNTCkgeyBtX2lzWEhUTUxNUERvY3VtZW50ID0gaXNYSFRN
TDsgfQorICAgICAgICBib29sIGlzWEhUTUxNUERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9p
c1hIVE1MTVBEb2N1bWVudDsgfQorI2VuZGlmCisjaWYgRU5BQkxFKFdNTCkKKyAgICAgICAgYm9v
bCBpc1dNTERvY3VtZW50KCkgY29uc3Q7CisjZW5kaWYKIAorICAgIHByaXZhdGU6CiAgICAgICAg
IC8vIEZyb20gRG9jdW1lbnRQYXJzZXIKICAgICAgICAgdmlydHVhbCB2b2lkIHdyaXRlKGNvbnN0
IFNlZ21lbnRlZFN0cmluZyYsIGJvb2wgYXBwZW5kRGF0YSk7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBmaW5pc2goKTsKQEAgLTg4LDI2ICsxMDEsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIGludCBsaW5lTnVtYmVyKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgaW50
IGNvbHVtbk51bWJlcigpIGNvbnN0OwogCisgICAgICAgIC8vIGZyb20gQ2FjaGVkUmVzb3VyY2VD
bGllbnQKKyAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
Kik7CisKICAgICAgICAgdm9pZCBlbmQoKTsKIAogICAgICAgICB2b2lkIHBhdXNlUGFyc2luZygp
OwogICAgICAgICB2b2lkIHJlc3VtZVBhcnNpbmcoKTsKIAotICAgICAgICB2b2lkIHNldElzWEhU
TUxEb2N1bWVudChib29sIGlzWEhUTUwpIHsgbV9pc1hIVE1MRG9jdW1lbnQgPSBpc1hIVE1MOyB9
Ci0gICAgICAgIGJvb2wgaXNYSFRNTERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1hIVE1M
RG9jdW1lbnQ7IH0KLSNpZiBFTkFCTEUoWEhUTUxNUCkKLSAgICAgICAgdm9pZCBzZXRJc1hIVE1M
TVBEb2N1bWVudChib29sIGlzWEhUTUwpIHsgbV9pc1hIVE1MTVBEb2N1bWVudCA9IGlzWEhUTUw7
IH0KLSAgICAgICAgYm9vbCBpc1hIVE1MTVBEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNY
SFRNTE1QRG9jdW1lbnQ7IH0KLSNlbmRpZgotI2lmIEVOQUJMRShXTUwpCi0gICAgICAgIGJvb2wg
aXNXTUxEb2N1bWVudCgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICAgICAgLy8gZnJvbSBDYWNoZWRS
ZXNvdXJjZUNsaWVudAotICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UqIGZpbmlzaGVkT2JqKTsKLQotICAgICAgICB2b2lkIGhhbmRsZUVycm9yKEVycm9y
VHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpOwotCiAjaWYgVVNFKFFYTUxTVFJFQU0pCiBwcml2YXRlOgogICAgICAgICB2b2lkIHBhcnNl
KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1dl
YkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDlkNWJhNTk4ODczODAyNjZk
NjMwNDY5ZDFjYWI2Mzg3MjY0ZWM5YjcuLjVjMzE4ZjcxNTk3YTYzMjkxOThlMmQxNWQzODdiYzU0
MWVlNjBkZmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0zOTUsNCArMzk1
LDEyIEBAIFNjcmlwdENvbnRyb2xsZXIqIEhUTUxEb2N1bWVudFBhcnNlcjo6c2NyaXB0KCkgY29u
c3QKICAgICByZXR1cm4gbV9kb2N1bWVudC0+ZnJhbWUoKSA/IG1fZG9jdW1lbnQtPmZyYW1lKCkt
PnNjcmlwdCgpIDogMDsKIH0KIAordm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1l
bnRGcmFnbWVudChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRG9jdW1lbnRGcmFnbWVudCogZnJhZ21l
bnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQorewor
ICAgIEhUTUxEb2N1bWVudFBhcnNlciBwYXJzZXIoZnJhZ21lbnQsIHNjcmlwdGluZ1Blcm1pc3Np
b24pOworICAgIHBhcnNlci53cml0ZShzb3VyY2UsIGZhbHNlKTsKKyAgICBwYXJzZXIuZmluaXNo
KCk7CisgICAgQVNTRVJUKCFwYXJzZXIucHJvY2Vzc2luZ0RhdGEoKSk7IC8vIE1ha2Ugc3VyZSB3
ZSdyZSBkb25lLiA8cmRhcjovL3Byb2JsZW0vMzk2MzE1MT4KK30KKwogfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5oIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1
bWVudFBhcnNlci5oCmluZGV4IGVhNTNmNDE1OTQzZGFiMGE1OTBjMjllMDhmMDMyYzQ3ZWMyMjY2
NmUuLmMyZTc1MmY0ZTQyY2MzMTE5ZjQzNzMxZTI3N2Q3MDcxY2FiNTM1NjUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TERvY3VtZW50UGFyc2VyLmgKQEAgLTU3LDEwICs1NywxNSBAQCBwdWJsaWM6CiAgICAgSFRNTERv
Y3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Np
b24pOwogICAgIHZpcnR1YWwgfkhUTUxEb2N1bWVudFBhcnNlcigpOwogCisgICAgLy8gRXhwb3Nl
ZCBmb3IgSFRNTFBhcnNlclNjaGVkdWxlcgorICAgIHZvaWQgcmVzdW1lUGFyc2luZ0FmdGVyWWll
bGQoKTsKKworICAgIHN0YXRpYyB2b2lkIHBhcnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJp
bmcmLCBEb2N1bWVudEZyYWdtZW50KiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0gRnJh
Z21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKKworcHJpdmF0ZToKICAgICAvLyBEb2N1bWVudFBhcnNl
cgogICAgIHZpcnR1YWwgdm9pZCBiZWdpbigpOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZShjb25z
dCBTZWdtZW50ZWRTdHJpbmcmLCBib29sIGlzRnJvbU5ldHdvcmspOwotICAgIHZpcnR1YWwgdm9p
ZCBlbmQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCk7CiAgICAgdmlydHVhbCBib29sIGZp
bmlzaFdhc0NhbGxlZCgpOwogICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzaW5nRGF0YSgpIGNvbnN0
OwpAQCAtODMsMTAgKzg4LDYgQEAgcHVibGljOgogICAgIC8vIENhY2hlZFJlc291cmNlQ2xpZW50
CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAKLSAg
ICAvLyBFeHBvc2VkIGZvciBIVE1MUGFyc2VyU2NoZWR1bGVyCi0gICAgdm9pZCByZXN1bWVQYXJz
aW5nQWZ0ZXJZaWVsZCgpOwotCi1wcml2YXRlOgogICAgIHZvaWQgd2lsbFB1bXBMZXhlcigpOwog
ICAgIHZvaWQgZGlkUHVtcExleGVyKCk7CiAKQEAgLTEwMiw2ICsxMDMsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBhdHRlbXB0VG9FbmQoKTsKICAgICB2b2lkIGVuZElmRGVsYXllZCgpOworICAg
IHZvaWQgZW5kKCk7CiAKICAgICBib29sIGlzU2NoZWR1bGVkRm9yUmVzdW1lKCkgY29uc3Q7CiAg
ICAgYm9vbCBpblNjcmlwdEV4ZWN1dGlvbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9XZWJDb3JlL2h0bWwvTGVnYWN5SFRN
TERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA5ZDhhMTliNjRmMDM4M2RhZTUxMmZlMDBmZTU5ZmMy
MTVkZWM0YTViLi4zOGM4YTc1MmVkOTA2ZTc2OGYxN2YwZTI0MjkzMTk5OWUxMWY2NGU1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjA4OCwxMyArMjA4
OCwxMyBAQCB2b2lkIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6c2V0U3JjKGNvbnN0IFNlZ21l
bnRlZFN0cmluZyYgc291cmNlKQogICAgIG1fc3JjID0gc291cmNlOwogfQogCi12b2lkIHBhcnNl
TGVnYWN5SFRNTERvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIERvY3VtZW50
RnJhZ21lbnQqIGZyYWdtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5n
UGVybWlzc2lvbikKK3ZvaWQgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50
RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50
LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKIHsKICAg
ICBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIgcGFyc2VyKGZyYWdtZW50LCBzY3JpcHRpbmdQZXJt
aXNzaW9uKTsKICAgICBwYXJzZXIuc2V0Rm9yY2VTeW5jaHJvbm91cyh0cnVlKTsKICAgICBwYXJz
ZXIud3JpdGUoc291cmNlLCB0cnVlKTsKICAgICBwYXJzZXIuZmluaXNoKCk7Ci0gICAgQVNTRVJU
KCFwYXJzZXIucHJvY2Vzc2luZ0RhdGEoKSk7ICAgICAgLy8gbWFrZSBzdXJlIHdlJ3JlIGRvbmUg
KHNlZSAzOTYzMTUxKQorICAgIEFTU0VSVCghcGFyc2VyLnByb2Nlc3NpbmdEYXRhKCkpOyAvLyBt
YWtlIHN1cmUgd2UncmUgZG9uZSAoc2VlIDM5NjMxNTEpCiB9CiAKIFVDaGFyIGRlY29kZU5hbWVk
RW50aXR5KGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvTGVnYWN5
SFRNTERvY3VtZW50UGFyc2VyLmggYi9XZWJDb3JlL2h0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFy
c2VyLmgKaW5kZXggMWE5MmVjZDI0NzhkMjUwYTQzYjJlZjIzOTBmY2ZjODA0M2VlNWY5Zi4uNWI5
NmJjMzE3MzQyOTVhMmM5NTFiM2YwN2U5ODM5N2U4YjQ0YmUyOSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1dlYkNvcmUvaHRtbC9MZWdh
Y3lIVE1MRG9jdW1lbnRQYXJzZXIuaApAQCAtMTQ3LDExICsxNDcsMjIgQEAgcHVibGljOgogICAg
IExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50KiwgRnJhZ21lbnRTY3Jp
cHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKICAgICB2aXJ0dWFs
IH5MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIoKTsKIAorICAgIGJvb2wgZm9yY2VTeW5jaHJvbm91
cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZm9yY2VTeW5jaHJvbm91cygpOyB9CisgICAgdm9p
ZCBzZXRGb3JjZVN5bmNocm9ub3VzKGJvb2wgZm9yY2UpOworCisgICAgLy8gRXhwb3NlZCBmb3Ig
TGVnYWN5SFRNTFRyZWVCdWlsZGVyOjpyZXBvcnRFcnJvclRvQ29uc29sZQorICAgIGJvb2wgcHJv
Y2Vzc2luZ0NvbnRlbnRXcml0dGVuQnlTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NyYy5leGNs
dWRlTGluZU51bWJlcnMoKTsgfQorCisgICAgc3RhdGljIHZvaWQgcGFyc2VEb2N1bWVudEZyYWdt
ZW50KGNvbnN0IFN0cmluZyYsIERvY3VtZW50RnJhZ21lbnQqLCBGcmFnbWVudFNjcmlwdGluZ1Bl
cm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGluZ0FsbG93ZWQpOworCitwcm90ZWN0ZWQ6CisgICAg
Ly8gRXhwb3NlZCBmb3IgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXIKICAgICB2aXJ0dWFsIHZv
aWQgd3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiwgYm9vbCBhcHBlbmREYXRhKTsKICAgICB2
aXJ0dWFsIHZvaWQgZmluaXNoKCk7CisKK3ByaXZhdGU6CisgICAgLy8gRG9jdW1lbnRQYXJzZXIK
ICAgICB2aXJ0dWFsIGJvb2wgZmluaXNoV2FzQ2FsbGVkKCk7Ci0gICAgdmlydHVhbCBib29sIGZv
cmNlU3luY2hyb25vdXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZvcmNlU3luY2hyb25vdXMo
KTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JjZVN5bmNocm9ub3VzKGJvb2wgZm9yY2UpOwog
ICAgIHZpcnR1YWwgYm9vbCBpc1dhaXRpbmdGb3JTY3JpcHRzKCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHN0b3BQYXJzaW5nKCk7CiAgICAgdmlydHVhbCBib29sIHByb2Nlc3NpbmdEYXRhKCkg
Y29uc3Q7CkBAIC0xNjAsMjAgKzE3MSwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgbGlu
ZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZU51bWJlcjsgfQogICAgIHZpcnR1YWwgaW50
IGNvbHVtbk51bWJlcigpIGNvbnN0IHsgcmV0dXJuIDE7IH0KIAotICAgIGJvb2wgcHJvY2Vzc2lu
Z0NvbnRlbnRXcml0dGVuQnlTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NyYy5leGNsdWRlTGlu
ZU51bWJlcnMoKTsgfQotCiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0Zv
clN0eWxlc2hlZXRzKCk7CiAKICAgICB2aXJ0dWFsIExlZ2FjeUhUTUxUcmVlQnVpbGRlciogaHRt
bFRyZWVCdWlsZGVyKCkgY29uc3QgeyByZXR1cm4gbV90cmVlQnVpbGRlci5nZXQoKTsgfQogICAg
IHZpcnR1YWwgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKiBhc0hUTUxEb2N1bWVudFBhcnNlcigp
IHsgcmV0dXJuIHRoaXM7IH0KIAotcHJpdmF0ZToKICAgICBjbGFzcyBTdGF0ZTsKIAotICAgIC8v
IFdoZXJlIHdlIGFyZSBpbiBwYXJzaW5nIGEgdGFnCiAgICAgdm9pZCBiZWdpbigpOwogICAgIHZv
aWQgZW5kKCk7Ci0KICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICB2b2lkIHdpbGxXcml0ZUhUTUwo
Y29uc3QgU2VnbWVudGVkU3RyaW5nJik7CkBAIC00MzksOCArNDQ1LDYgQEAgcHJpdmF0ZToKICAg
ICBPd25QdHI8TGVnYWN5UHJlbG9hZFNjYW5uZXI+IG1fcHJlbG9hZFNjYW5uZXI7CiB9OwogCi12
b2lkIHBhcnNlTGVnYWN5SFRNTERvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiwgRG9jdW1l
bnRGcmFnbWVudCosIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0
aW5nQWxsb3dlZCk7Ci0KIFVDaGFyIGRlY29kZU5hbWVkRW50aXR5KGNvbnN0IGNoYXIqKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0xlZ2FjeUhU
TUxUcmVlQnVpbGRlci5jcHAgYi9XZWJDb3JlL2h0bWwvTGVnYWN5SFRNTFRyZWVCdWlsZGVyLmNw
cAppbmRleCA3YjQ1MTE5ZGZjN2ZkYmI4OGMxNWYzYjhiYjk0NzFjYWRkOTIxYTExLi43YjQ0OTQz
ZmRiOTg3ZTQ2NzYwM2JlZjIzNTVlNTc0NjUzZGY3MzExIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvTGVnYWN5SFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvTGVnYWN5SFRN
TFRyZWVCdWlsZGVyLmNwcApAQCAtMTY0OCw4ICsxNjQ4LDcgQEAgdm9pZCBMZWdhY3lIVE1MVHJl
ZUJ1aWxkZXI6OnJlcG9ydEVycm9yVG9Db25zb2xlKEhUTUxQYXJzZXJFcnJvckNvZGUgZXJyb3JD
b2RlLAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBMZWdhY3lI
VE1MRG9jdW1lbnRQYXJzZXIqIGh0bWxUb2tlbml6ZXIgPSBzdGF0aWNfY2FzdDxMZWdhY3lIVE1M
RG9jdW1lbnRQYXJzZXIqPihtX2RvY3VtZW50LT5wYXJzZXIoKSk7Ci0gICAgaW50IGxpbmVOdW1i
ZXIgPSBodG1sVG9rZW5pemVyLT5saW5lTnVtYmVyKCkgKyAxOworICAgIGludCBsaW5lTnVtYmVy
ID0gbV9kb2N1bWVudC0+cGFyc2VyKCktPmxpbmVOdW1iZXIoKSArIDE7CiAKICAgICBBdG9taWNT
dHJpbmcgdGFnMTsKICAgICBBdG9taWNTdHJpbmcgdGFnMjsKQEAgLTE2NzMsOSArMTY3MiwxMSBA
QCB2b2lkIExlZ2FjeUhUTUxUcmVlQnVpbGRlcjo6cmVwb3J0RXJyb3JUb0NvbnNvbGUoSFRNTFBh
cnNlckVycm9yQ29kZSBlcnJvckNvZGUsCiAgICAgY29uc3QgY2hhciogZXJyb3JNc2cgPSBodG1s
UGFyc2VyRXJyb3JNZXNzYWdlVGVtcGxhdGUoZXJyb3JDb2RlKTsKICAgICBpZiAoIWVycm9yTXNn
KQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgU3RyaW5nIG1lc3NhZ2U7Ci0gICAg
aWYgKGh0bWxUb2tlbml6ZXItPnByb2Nlc3NpbmdDb250ZW50V3JpdHRlbkJ5U2NyaXB0KCkpCisg
ICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB3b3JrIGZvciB0aGUgbmV3IEhUTUxEb2N1bWVudFBh
cnNlciBhbmQgc2hvdWxkLgorICAgIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlciogaHRtbFBhcnNl
ciA9IG1fZG9jdW1lbnQtPnBhcnNlcigpLT5hc0hUTUxEb2N1bWVudFBhcnNlcigpOworICAgIGlm
IChodG1sUGFyc2VyICYmIGh0bWxQYXJzZXItPnByb2Nlc3NpbmdDb250ZW50V3JpdHRlbkJ5U2Ny
aXB0KCkpCiAgICAgICAgIG1lc3NhZ2UgKz0gaHRtbFBhcnNlckRvY3VtZW50V3JpdGVNZXNzYWdl
KCk7CiAgICAgbWVzc2FnZSArPSBlcnJvck1zZzsKICAgICBtZXNzYWdlLnJlcGxhY2UoIiV0YWcx
IiwgdGFnMSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAg
Yi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKaW5kZXggMWQyYzVlNzg3YjA0NDAw
MDQ5NWQxODc1NGYzN2UxNWMwNGZkNzI1Mi4uMjc3MTQ0NzYzY2QxYjE5ZTM0Yzk2MjcxMzQ2NDA2
YzExODZlOTRkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3Bw
CisrKyBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcApAQCAtNzIsNiArNzIsOSBA
QCB2b2lkIERvY3VtZW50V3JpdGVyOjpyZXBsYWNlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBzb3Vy
Y2UpCiAgICAgICAgICAgICBtX3JlY2VpdmVkRGF0YSA9IHRydWU7CiAgICAgICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5zZXRQYXJzZU1vZGUoRG9jdW1lbnQ6OlN0cmljdCk7CiAgICAgICAg
IH0KKworICAgICAgICAvLyBGSVhNRTogSWYgd2Ugd2FudGVkIHRvIHN1cHBvcnQgdGhlIDxpbWcg
c3JjPSdqYXZhc2NyaXB0OidpbWFnZWRhdGEnPgorICAgICAgICAvLyBjYXNlIHRoZW4gd2Ugd291
bGQgbmVlZCB0byBjYWxsIGFkZERhdGEoY2hhciosIGludCkgaW5zdGVhZC4KICAgICAgICAgaWYg
KERvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKSkK
ICAgICAgICAgICAgIHBhcnNlci0+d3JpdGUoc291cmNlLCB0cnVlKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2xvYWRlci9UZXh0RG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9sb2FkZXIvVGV4
dERvY3VtZW50LmNwcAppbmRleCA2MjJlMTQ4MTU1MzAyMTIwMWZlOWVlNDBkMWNjYjdjOGZlOTFj
M2I4Li45YzYxNjEwNzgzOGViMzZjZGJjMzY3YzQzYTk5Mzk3M2Q5NDlhMWY4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2xvYWRlci9UZXh0RG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL1Rl
eHREb2N1bWVudC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflRl
eHREb2N1bWVudFBhcnNlcigpOwogICAgIFRleHREb2N1bWVudFBhcnNlcihIVE1MVmlld1NvdXJj
ZURvY3VtZW50Kik7CiAKK3ByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlKGNvbnN0IFNl
Z21lbnRlZFN0cmluZyYsIGJvb2wgYXBwZW5kRGF0YSk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aCgpOwogICAgIHZpcnR1YWwgYm9vbCBmaW5pc2hXYXNDYWxsZWQoKTsKQEAgLTYwLDggKzYxLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgbV9zaXplID0gbmV3U2l6ZTsKICAgICAgICAgfQogICAg
IH0KLSAgICAgICAgCi1wcml2YXRlOgorCiAgICAgRWxlbWVudCogbV9wcmVFbGVtZW50OwogCiAg
ICAgYm9vbCBtX3NraXBMRjsK
</data>
<flag name="review"
          id="46778"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="46779"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>