<?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>94706</bug_id>
          
          <creation_ts>2012-08-22 07:01:09 -0700</creation_ts>
          <short_desc>[V8] Move runScript() from V8Proxy to ScriptRunner</short_desc>
          <delta_ts>2012-08-22 18:27:41 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>85330</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>701864</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-22 07:01:09 -0700</bug_when>
    <thetext>To kill V8Proxy, we can move runScript() from V8Proxy to ScriptSourceCode.

- ScriptSourceCode::runScript() should be a static method. It should receive ScriptExecutionContext on which the script is evaluated.
- After this patch is landed, I&apos;ll remove WorkerContextExecutionContext::runScript() and ScriptDebugServer::runScript().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701868</commentid>
    <comment_count>1</comment_count>
      <attachid>159927</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-22 07:05:50 -0700</bug_when>
    <thetext>Created attachment 159927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702182</commentid>
    <comment_count>2</comment_count>
      <attachid>159927</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-22 12:22:02 -0700</bug_when>
    <thetext>Comment on attachment 159927
Patch

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

&gt; Source/WebCore/bindings/v8/ScriptSourceCode.cpp:45
&gt; +v8::Local&lt;v8::Value&gt; ScriptSourceCode::runScript(v8::Handle&lt;v8::Script&gt; script, ScriptExecutionContext* context)

Hum...  I think of ScriptSourceCode has being a model class for the code.  This feels more like something that should go in a controller class, like ScriptController since we&apos;re instructing V8 to do something (i.e., execute script).

Is this function called on multiple threads?  If it&apos;s only the main thread, I&apos;d put it on ScriptController and try to use m_frame-&gt;document() rather than passing in a ScriptExecutionContext* function.  If this is something we call from worker threads as well, we might need to introduce a new header, something like V8Executive, that we use for actually executing code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702184</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-22 12:22:55 -0700</bug_when>
    <thetext>I&apos;m going to give this some more thought after I make it through some other tasks for today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702261</commentid>
    <comment_count>4</comment_count>
      <attachid>159927</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-22 13:24:21 -0700</bug_when>
    <thetext>Comment on attachment 159927
Patch

I like the idea, but I agree with dr. barth that this is the wrong place to put this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702596</commentid>
    <comment_count>5</comment_count>
      <attachid>160057</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-22 18:13:12 -0700</bug_when>
    <thetext>Created attachment 160057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702597</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-22 18:13:35 -0700</bug_when>
    <thetext>Put runScript() in ScriptRunner.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702600</commentid>
    <comment_count>7</comment_count>
      <attachid>160058</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-22 18:16:51 -0700</bug_when>
    <thetext>Created attachment 160058
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702602</commentid>
    <comment_count>8</comment_count>
      <attachid>160058</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-22 18:20:56 -0700</bug_when>
    <thetext>Comment on attachment 160058
Patch

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

&gt; Source/WebCore/bindings/v8/ScriptRunner.h:38
&gt; +    // Run an already compiled script.
&gt; +    static v8::Local&lt;v8::Value&gt; runScript(v8::Handle&lt;v8::Script&gt;, ScriptExecutionContext*);

runScript -&gt; runCompiledScript and delete the comment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702604</commentid>
    <comment_count>9</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-22 18:27:12 -0700</bug_when>
    <thetext>Committed r126377: &lt;http://trac.webkit.org/changeset/126377&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702605</commentid>
    <comment_count>10</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-22 18:27:41 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; Source/WebCore/bindings/v8/ScriptRunner.h:38
&gt; &gt; +    // Run an already compiled script.
&gt; &gt; +    static v8::Local&lt;v8::Value&gt; runScript(v8::Handle&lt;v8::Script&gt;, ScriptExecutionContext*);
&gt; 
&gt; runScript -&gt; runCompiledScript and delete the comment?

Done. Thanks.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159927</attachid>
            <date>2012-08-22 07:05:50 -0700</date>
            <delta_ts>2012-08-22 18:13:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94706-20120822230548.patch</filename>
            <type>text/plain</type>
            <size>9014</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Mjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDk5MmU0N2FlZjJlNTQ3
NmM2YTRlMTY3OWZkMGMzZGYwYTE0ODE1Zi4uOWQ1YjM3NmYzMDdkN2FjNGJmOGE4MDI2ODQ0OGFi
MWYwMzYzMmFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA4LTIyICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIE1vdmUgcnVu
U2NyaXB0KCkgZnJvbSBWOFByb3h5IHRvIFNjcmlwdFNvdXJjZUNvZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NzA2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8ga2lsbCBWOFByb3h5LCB3ZSBjYW4g
bW92ZSBydW5TY3JpcHQoKSBmcm9tIFY4UHJveHkgdG8gU2NyaXB0U291cmNlQ29kZS4KKworICAg
ICAgICAtIFNjcmlwdFNvdXJjZUNvZGU6OnJ1blNjcmlwdCgpIHNob3VsZCBiZSBhIHN0YXRpYyBt
ZXRob2QuCisgICAgICAgIEl0IHNob3VsZCByZWNlaXZlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
b24gd2hpY2ggdGhlIHNjcmlwdCBpcyBldmFsdWF0ZWQuCisKKyAgICAgICAgLSBBZnRlciB0aGlz
IHBhdGNoIGlzIGxhbmRlZCwgSSdsbCByZW1vdmUgV29ya2VyQ29udGV4dEV4ZWN1dGlvbkNvbnRl
eHQ6OnJ1blNjcmlwdCgpCisgICAgICAgIGFuZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuU2NyaXB0
KCkuCisKKyAgICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1NjcmlwdFNvdXJjZUNvZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0U291cmNl
Q29kZTo6cnVuU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1NjcmlwdFNvdXJjZUNvZGUuaDoKKyAgICAgICAgKFNjcmlwdFNvdXJjZUNvZGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5k
bGVNYXhSZWN1cnNpb25EZXB0aEV4Y2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5Ojpl
dmFsdWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5oOgorICAgICAgICAoVjhQ
cm94eSk6CisKIDIwMTItMDgtMjIgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgW0VGTF0gU3VwcG9ydCBzbGlkZXIgdGljayBtYXJrIHNuYXBwaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4
IDk5NTVjYTkwNzBmMTMwYjgyNGJjMzMzODRkOWY0ZjhiYjI0ZDcxZDIuLjY1NzdkZDAyZTg1MjFk
M2RmMWJlNzQxY2RlNWQ3ZWI2MDRlNTIwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xOTgsMTIgKzE5OCw2IEBAIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IFNjcmlwdENvbnRyb2xsZXI6OmNhbGxGdW5jdGlvbih2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvbj4gZnVuCiAgICAgcmV0dXJuIFNjcmlwdENvbnRyb2xsZXI6OmNhbGxGdW5jdGlv
bldpdGhJbnN0cnVtZW50YXRpb24obV9mcmFtZSA/IG1fZnJhbWUtPmRvY3VtZW50KCkgOiAwLCBm
dW5jdGlvbiwgcmVjZWl2ZXIsIGFyZ2MsIGFyZ3MpOwogfQogCi1zdGF0aWMgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gaGFuZGxlTWF4UmVjdXJzaW9uRGVwdGhFeGNlZWRlZCgpCi17Ci0gICAgdGhyb3dF
cnJvcihSYW5nZUVycm9yLCAiTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQuIik7Ci0g
ICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgdm9p
ZCByZXNvdXJjZUluZm8oY29uc3Qgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uLCBT
dHJpbmcmIHJlc291cmNlTmFtZSwgaW50JiBsaW5lTnVtYmVyKQogewogICAgIHY4OjpTY3JpcHRP
cmlnaW4gb3JpZ2luID0gZnVuY3Rpb24tPkdldFNjcmlwdE9yaWdpbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0U291cmNlQ29kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRTb3VyY2VDb2RlLmNwcAppbmRleCBhNDc4ZTY4MTdk
NGU2ZmQwZjY1MWZjZWNmMjFhNDQ5OTRkZmZjMjdlLi4wOWZiYTY5MGY4OTI2MTBhNGFkN2Q5ZDRi
Mzg4MWY5ZTVlY2FlYTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRTb3VyY2VDb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRTb3VyY2VDb2RlLmNwcApAQCAtMjYsNyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKIAorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lv
blNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsNCArNDIsNDEgQEAgdjg6
OkhhbmRsZTx2ODo6U2NyaXB0PiBTY3JpcHRTb3VyY2VDb2RlOjpjb21waWxlU2NyaXB0KHY4OjpI
YW5kbGU8djg6OlN0cmluZz4gY28KICAgICByZXR1cm4gc2NyaXB0OwogfQogCit2ODo6TG9jYWw8
djg6OlZhbHVlPiBTY3JpcHRTb3VyY2VDb2RlOjpydW5TY3JpcHQodjg6OkhhbmRsZTx2ODo6U2Ny
aXB0PiBzY3JpcHQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgaWYg
KHNjcmlwdC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigp
OworCisgICAgVjhHQ0NvbnRyb2xsZXI6OmNoZWNrTWVtb3J5VXNhZ2UoKTsKKyAgICBpZiAoVjhS
ZWN1cnNpb25TY29wZTo6cmVjdXJzaW9uTGV2ZWwoKSA+PSBrTWF4UmVjdXJzaW9uRGVwdGgpCisg
ICAgICAgIHJldHVybiBoYW5kbGVNYXhSZWN1cnNpb25EZXB0aEV4Y2VlZGVkKCk7CisKKyAgICBp
ZiAoaGFuZGxlT3V0T2ZNZW1vcnkoKSkKKyAgICAgICAgQVNTRVJUKHNjcmlwdC5Jc0VtcHR5KCkp
OworCisgICAgLy8gUnVuIHRoZSBzY3JpcHQgYW5kIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQg
cmVjdXJzaW9uIGRlcHRoLgorICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHJlc3VsdDsKKyAgICB2
ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CisgICAgdHJ5Q2F0Y2guU2V0VmVyYm9zZSh0cnVlKTsKKyAg
ICB7CisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGUgcmVjdXJzaW9uU2NvcGUoY29udGV4dCk7Cisg
ICAgICAgIHJlc3VsdCA9IHNjcmlwdC0+UnVuKCk7CisgICAgfQorCisgICAgaWYgKGhhbmRsZU91
dE9mTWVtb3J5KCkpCisgICAgICAgIEFTU0VSVChyZXN1bHQuSXNFbXB0eSgpKTsKKworICAgIC8v
IEhhbmRsZSBWOCBpbnRlcm5hbCBlcnJvciBzaXR1YXRpb24uCisgICAgaWYgKHRyeUNhdGNoLkhh
c0NhdWdodCgpKSB7CisgICAgICAgIEFTU0VSVChyZXN1bHQuSXNFbXB0eSgpKTsKKyAgICAgICAg
cmV0dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7CisgICAgfQorCisgICAgaWYgKHJlc3VsdC5J
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOworCisgICAg
Y3Jhc2hJZlY4SXNEZWFkKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
U291cmNlQ29kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0U291cmNlQ29k
ZS5oCmluZGV4IGE2NTQzY2E4MTM2MDBmMWQ4YTQ1NGVjMTU3YWY5MDJmYzRkNzNiMDIuLjI2Y2M1
ODM2YmQwMDJlMTA1ODE0Mzc2MTczMTg5YmY0NTFhZDBiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFNvdXJjZUNvZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRTb3VyY2VDb2RlLmgKQEAgLTc1LDYgKzc1LDkgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gY29tcGlsZVNjcmlwdCh2ODo6
SGFuZGxlPHY4OjpTdHJpbmc+LCBjb25zdCBTdHJpbmcmLCBjb25zdCBUZXh0UG9zaXRpb24mLCB2
ODo6U2NyaXB0RGF0YSogPSAwKTsKIAorICAgIC8vIFJ1biBhbiBhbHJlYWR5IGNvbXBpbGVkIHNj
cmlwdC4KKyAgICBzdGF0aWMgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcnVuU2NyaXB0KHY4OjpIYW5k
bGU8djg6OlNjcmlwdD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKwogcHJpdmF0ZToKICAg
ICBTdHJpbmcgbV9zb3VyY2U7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0
PiBtX2NhY2hlZFNjcmlwdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3Bw
CmluZGV4IDgzZjEyNmNiOWNiZTJkZmI4ODAyMDExYzJjNWRlZjdhNGYzYzM4MWQuLmE2ZjU3NDYw
MjZiMTE0NjVhZTc1NTY0YWU2ZGZiZDM2ZGQxMWQ4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtMzA3LDYgKzMwNywxMiBAQCBib29sIGhhbmRsZU91dE9m
TWVtb3J5KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordjg6OkxvY2FsPHY4OjpWYWx1ZT4gaGFu
ZGxlTWF4UmVjdXJzaW9uRGVwdGhFeGNlZWRlZCgpCit7CisgICAgdGhyb3dFcnJvcihSYW5nZUVy
cm9yLCAiTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQuIik7CisgICAgcmV0dXJuIHY4
OjpMb2NhbDx2ODo6VmFsdWU+KCk7Cit9CisKIHZvaWQgY3Jhc2hJZlY4SXNEZWFkKCkKIHsKICAg
ICBpZiAodjg6OlY4OjpJc0RlYWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuaAppbmRleCA1YmI0YzAxNTRjMzhkMTZlNmU3MTczYzcwMzIxYTMzNjYyMDgzY2M3Li42Y2Ux
NDRkYmY1ZGQ4ZTE4Yjc3MzdhYzU3MjVmMDEyYmY3M2ExOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuaApAQCAtMzY1LDYgKzM2NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAvLyBJZiB0aGUgY3VycmVudCBjb250ZXh0IGNhdXNlcyBvdXQgb2YgbWVtb3J5LCBK
YXZhU2NyaXB0IHNldHRpbmcKICAgICAvLyBpcyBkaXNhYmxlZCBhbmQgaXQgcmV0dXJucyB0cnVl
LgogICAgIGJvb2wgaGFuZGxlT3V0T2ZNZW1vcnkoKTsKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVl
PiBoYW5kbGVNYXhSZWN1cnNpb25EZXB0aEV4Y2VlZGVkKCk7CiAKICAgICB2b2lkIGNyYXNoSWZW
OElzRGVhZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCmluZGV4IDBj
MDI1YzE3NmU3NzA4YjYyYTY5MDljZWJjOTY0ZWYwYTUyOTVkNjkuLmJiMzYxMWRkNTEwNDg1MjE5
NDY4OWQwYTRhMzQyMjM1OWZhYjgwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJv
eHkuY3BwCkBAIC03NywxMyArNzcsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEZJ
WE1FOiBUaGlzIHdpbGwgYmUgc29vbiByZW1vdmVkIHdoZW4gd2UgbW92ZSBydW5TY3JpcHQoKSB0
byBTY3JpcHRDb250cm9sbGVyLgotc3RhdGljIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGhhbmRsZU1h
eFJlY3Vyc2lvbkRlcHRoRXhjZWVkZWQoKQotewotICAgIHRocm93RXJyb3IoUmFuZ2VFcnJvciwg
Ik1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLiIpOwotICAgIHJldHVybiB2ODo6TG9j
YWw8djg6OlZhbHVlPigpOwotfQotCiBWOFByb3h5OjpWOFByb3h5KEZyYW1lKiBmcmFtZSkKICAg
ICA6IG1fZnJhbWUoZnJhbWUpCiB7CkBAIC0xNDcsNTEgKzE0MCwxNCBAQCB2ODo6TG9jYWw8djg6
OlZhbHVlPiBWOFByb3h5OjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2Us
IE5vZGUqIG5vZAogICAgICAgICBUUkFDRV9FVkVOVF9FTkQwKCJ2OCIsICJ2OC5jb21waWxlIik7
CiAgICAgICAgIFRSQUNFX0VWRU5UMCgidjgiLCAidjgucnVuIik7CiAjZW5kaWYKLSAgICAgICAg
cmVzdWx0ID0gcnVuU2NyaXB0KHNjcmlwdCk7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChjb29raWUpOwotCi0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhQcm94eTo6cnVuU2NyaXB0KHY4OjpIYW5k
bGU8djg6OlNjcmlwdD4gc2NyaXB0KQotewotICAgIGlmIChzY3JpcHQuSXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpWYWx1ZT4oKTsKIAotICAgIFY4R0NDb250cm9sbGVy
OjpjaGVja01lbW9yeVVzYWdlKCk7Ci0gICAgaWYgKFY4UmVjdXJzaW9uU2NvcGU6OnJlY3Vyc2lv
bkxldmVsKCkgPj0ga01heFJlY3Vyc2lvbkRlcHRoKQotICAgICAgICByZXR1cm4gaGFuZGxlTWF4
UmVjdXJzaW9uRGVwdGhFeGNlZWRlZCgpOwotCi0gICAgaWYgKGhhbmRsZU91dE9mTWVtb3J5KCkp
Ci0gICAgICAgIEFTU0VSVChzY3JpcHQuSXNFbXB0eSgpKTsKLQotICAgIC8vIEtlZXAgRnJhbWUg
KGFuZCB0aGVyZWZvcmUgU2NyaXB0Q29udHJvbGxlciBhbmQgVjhQcm94eSkgYWxpdmUuCi0gICAg
UmVmUHRyPEZyYW1lPiBwcm90ZWN0KGZyYW1lKCkpOwotCi0gICAgLy8gUnVuIHRoZSBzY3JpcHQg
YW5kIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgcmVjdXJzaW9uIGRlcHRoLgotICAgIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHJlc3VsdDsKLSAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7Ci0gICAg
dHJ5Q2F0Y2guU2V0VmVyYm9zZSh0cnVlKTsKLSAgICB7Ci0gICAgICAgIFY4UmVjdXJzaW9uU2Nv
cGUgcmVjdXJzaW9uU2NvcGUoZnJhbWUoKS0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgIHJlc3VsdCA9
IHNjcmlwdC0+UnVuKCk7CisgICAgICAgIC8vIEtlZXAgRnJhbWUgKGFuZCB0aGVyZWZvcmUgU2Ny
aXB0Q29udHJvbGxlcikgYWxpdmUuCisgICAgICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdChmcmFt
ZSgpKTsKKyAgICAgICAgcmVzdWx0ID0gU2NyaXB0U291cmNlQ29kZTo6cnVuU2NyaXB0KHNjcmlw
dCwgZnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAgICAgfQogCi0gICAgaWYgKGhhbmRsZU91dE9mTWVt
b3J5KCkpCi0gICAgICAgIEFTU0VSVChyZXN1bHQuSXNFbXB0eSgpKTsKLQotICAgIC8vIEhhbmRs
ZSBWOCBpbnRlcm5hbCBlcnJvciBzaXR1YXRpb24gKE91dC1vZi1tZW1vcnkpLgotICAgIGlmICh0
cnlDYXRjaC5IYXNDYXVnaHQoKSkgewotICAgICAgICBBU1NFUlQocmVzdWx0LklzRW1wdHkoKSk7
Ci0gICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOwotICAgIH0KLQotICAgIGlm
IChyZXN1bHQuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpWYWx1ZT4o
KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KGNvb2tp
ZSk7CiAKLSAgICBjcmFzaElmVjhJc0RlYWQoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKaW5kZXggYTYyYTYwODYyMTNhZGEyYmIzNGFi
NjBmZjE0ZTRlM2ZkZmFlNDdjMy4uNjcxZmI1YTEyNDU1YzYxZjMwNDNkYjdmMGU0ZTljNTNlM2Zj
MWI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaApAQCAtOTQsOSArOTQsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIElmIGNhbm5vdCBldmFsdXRlIHRoZSBz
Y3JpcHQsIGl0IHJldHVybnMgYW4gZXJyb3IuCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBOb2RlKik7CiAKLSAgICAgICAgLy8g
UnVuIGFuIGFscmVhZHkgY29tcGlsZWQgc2NyaXB0LgotICAgICAgICB2ODo6TG9jYWw8djg6OlZh
bHVlPiBydW5TY3JpcHQodjg6OkhhbmRsZTx2ODo6U2NyaXB0Pik7Ci0KICAgICAgICAgLy8gUmV0
dXJucyBWOCBDb250ZXh0IG9mIGEgZnJhbWUuIElmIG5vbmUgZXhpc3RzLCBjcmVhdGVzCiAgICAg
ICAgIC8vIGEgbmV3IGNvbnRleHQuIEl0IGlzIHBvdGVudGlhbGx5IHNsb3cgYW5kIGNvbnN1bWVz
IG1lbW9yeS4KICAgICAgICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dChG
cmFtZSopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160057</attachid>
            <date>2012-08-22 18:13:12 -0700</date>
            <delta_ts>2012-08-22 18:16:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94706-20120823101309.patch</filename>
            <type>text/plain</type>
            <size>12786</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODk0ZTIzMzJiMGU4M2M2
MTYwYzBiZWNjZjNlOGE4NDc2NDhhM2JiYy4uOWUyM2NjYjc1ZDkyOTYyZDNiNTBiZWQyYTE3OTY1
M2NhOWY4YzlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA4LTIyICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIE1vdmUgcnVu
U2NyaXB0KCkgZnJvbSBWOFByb3h5IHRvIFNjcmlwdFJ1bm5lcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ3MDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBraWxsIFY4UHJveHksIHdlIGNhbiBtb3Zl
IHJ1blNjcmlwdCgpIGZyb20gVjhQcm94eSB0byBTY3JpcHRSdW5uZXIuCisKKyAgICAgICAgLSBT
Y3JpcHRSdW5uZXI6OnJ1blNjcmlwdCgpIHNob3VsZCBiZSBhIHN0YXRpYyBtZXRob2QuCisgICAg
ICAgIEl0IHNob3VsZCByZWNlaXZlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgb24gd2hpY2ggdGhl
IHNjcmlwdCBpcyBldmFsdWF0ZWQuCisKKyAgICAgICAgLSBBZnRlciB0aGlzIHBhdGNoIGlzIGxh
bmRlZCwgSSdsbCByZW1vdmUgV29ya2VyQ29udGV4dEV4ZWN1dGlvbkNvbnRleHQ6OnJ1blNjcmlw
dCgpCisgICAgICAgIGFuZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuU2NyaXB0KCkuCisKKyAgICAg
ICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFVzZVY4LmNt
YWtlOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3Jp
cHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRSdW5uZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVu
bmVyOjpydW5TY3JpcHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFJ1bm5lci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2NyaXB0UnVubmVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxl
TWF4UmVjdXJzaW9uRGVwdGhFeGNlZWRlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6ZXZh
bHVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuaDoKKyAgICAgICAgKFY4UHJv
eHkpOgorCiAyMDEyLTA4LTIxICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbVjhdIE1vdmUgbWF0Y2hlc0N1cnJlbnRDb250ZXh0KCkgZnJvbSBWOFByb3h5
IHRvIFNjcmlwdENvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1VzZVY4LmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKaW5kZXggM2RlZjI1NmU5NmFjYTY4MmE4
Y2JlNzc5NTY1OTM3MDZmODgyZGMzMC4uOTFjZTgzNTJlNTk2Y2NkYmI2NDY3YTU4ZTdiZjgyZTM5
NDgwZmEzZSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKQEAgLTM5LDYgKzM5LDcgQEAgTElTVChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvdjgvU2NyaXB0R0NFdmVudC5jcHAKICAgICBiaW5k
aW5ncy92OC9TY3JpcHRJbnN0YW5jZS5jcHAKICAgICBiaW5kaW5ncy92OC9TY3JpcHRPYmplY3Qu
Y3BwCisgICAgYmluZGluZ3MvdjgvU2NyaXB0UnVubmVyLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Nj
cmlwdFNjb3BlLmNwcAogICAgIGJpbmRpbmdzL3Y4L1NjcmlwdFNvdXJjZUNvZGUuY3BwCiAgICAg
YmluZGluZ3MvdjgvU2NyaXB0U3RhdGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOWRjMWFlMjg1
ZTA3M2MwMjRhYmEwNjVmNzVjNmYxYjM4OGE1NjdhZS4uODY3ZThmYTFlOTVlMzY4MmE1OGJlNDA5
ZjZhMWM2N2UyMzUyNTc2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjI0MCw2ICsyMjQwLDggQEAK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlTm9kZS5oJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Njcmlw
dFJ1bm5lci5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdFJ1bm5lci5oJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRTY29wZS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1NjcmlwdFNjb3BlLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Nj
cmlwdFNvdXJjZUNvZGUuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q29udHJvbGxlci5jcHAKaW5kZXggYWMyZWM0MjIxY2UwNmZjMzAzMzEyNjAwZjY5YTYwMmEw
MjQ4MzBjNS4uYWY1YWQ2OTJkMDI2OTkwZTY1N2ZkOWQ0YWVmZDI1NGRiNDlmZWZiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTE5
OCwxMiArMTk4LDYgQEAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gU2NyaXB0Q29udHJvbGxlcjo6Y2Fs
bEZ1bmN0aW9uKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW4KICAgICByZXR1cm4gU2NyaXB0
Q29udHJvbGxlcjo6Y2FsbEZ1bmN0aW9uV2l0aEluc3RydW1lbnRhdGlvbihtX2ZyYW1lID8gbV9m
cmFtZS0+ZG9jdW1lbnQoKSA6IDAsIGZ1bmN0aW9uLCByZWNlaXZlciwgYXJnYywgYXJncyk7CiB9
CiAKLXN0YXRpYyB2ODo6TG9jYWw8djg6OlZhbHVlPiBoYW5kbGVNYXhSZWN1cnNpb25EZXB0aEV4
Y2VlZGVkKCkKLXsKLSAgICB0aHJvd0Vycm9yKFJhbmdlRXJyb3IsICJNYXhpbXVtIGNhbGwgc3Rh
Y2sgc2l6ZSBleGNlZWRlZC4iKTsKLSAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpWYWx1ZT4oKTsK
LX0KLQogc3RhdGljIGlubGluZSB2b2lkIHJlc291cmNlSW5mbyhjb25zdCB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvbj4gZnVuY3Rpb24sIFN0cmluZyYgcmVzb3VyY2VOYW1lLCBpbnQmIGxpbmVOdW1i
ZXIpCiB7CiAgICAgdjg6OlNjcmlwdE9yaWdpbiBvcmlnaW4gPSBmdW5jdGlvbi0+R2V0U2NyaXB0
T3JpZ2luKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRS
dW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UnVubmVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44ODYzOWEwMGM3ZGIyMzNiYjcwMWE1YjgwMjM3OTI0NGJhNmRjOTAyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UnVubmVyLmNw
cApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTY3JpcHRSdW5uZXIuaCIKKworI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3Bl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordjg6OkxvY2FsPHY4OjpWYWx1ZT4gU2NyaXB0
UnVubmVyOjpydW5TY3JpcHQodjg6OkhhbmRsZTx2ODo6U2NyaXB0PiBzY3JpcHQsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgaWYgKHNjcmlwdC5Jc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOworCisgICAgVjhHQ0NvbnRyb2xs
ZXI6OmNoZWNrTWVtb3J5VXNhZ2UoKTsKKyAgICBpZiAoVjhSZWN1cnNpb25TY29wZTo6cmVjdXJz
aW9uTGV2ZWwoKSA+PSBrTWF4UmVjdXJzaW9uRGVwdGgpCisgICAgICAgIHJldHVybiBoYW5kbGVN
YXhSZWN1cnNpb25EZXB0aEV4Y2VlZGVkKCk7CisKKyAgICBpZiAoaGFuZGxlT3V0T2ZNZW1vcnko
KSkKKyAgICAgICAgQVNTRVJUKHNjcmlwdC5Jc0VtcHR5KCkpOworCisgICAgLy8gUnVuIHRoZSBz
Y3JpcHQgYW5kIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgcmVjdXJzaW9uIGRlcHRoLgorICAg
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHJlc3VsdDsKKyAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7
CisgICAgdHJ5Q2F0Y2guU2V0VmVyYm9zZSh0cnVlKTsKKyAgICB7CisgICAgICAgIFY4UmVjdXJz
aW9uU2NvcGUgcmVjdXJzaW9uU2NvcGUoY29udGV4dCk7CisgICAgICAgIHJlc3VsdCA9IHNjcmlw
dC0+UnVuKCk7CisgICAgfQorCisgICAgaWYgKGhhbmRsZU91dE9mTWVtb3J5KCkpCisgICAgICAg
IEFTU0VSVChyZXN1bHQuSXNFbXB0eSgpKTsKKworICAgIC8vIEhhbmRsZSBWOCBpbnRlcm5hbCBl
cnJvciBzaXR1YXRpb24uCisgICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKSB7CisgICAgICAg
IEFTU0VSVChyZXN1bHQuSXNFbXB0eSgpKTsKKyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6
VmFsdWU+KCk7CisgICAgfQorCisgICAgaWYgKHJlc3VsdC5Jc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOworCisgICAgY3Jhc2hJZlY4SXNEZWFkKCk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UnVubmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRSdW5uZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTg3YjJmYzc5YTll
OGE5ODhiYjllZTU2Yjg5NmQ2NzY5OGIwNGIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UnVubmVyLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFNjcmlwdFJ1bm5lcl9oCisjZGVmaW5lIFNjcmlwdFJ1bm5lcl9oCisK
KyNpbmNsdWRlIDx2OC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIFNjcmlwdFJ1bm5lciB7CitwdWJsaWM6CisgICAgLy8g
UnVuIGFuIGFscmVhZHkgY29tcGlsZWQgc2NyaXB0LgorICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6
OlZhbHVlPiBydW5TY3JpcHQodjg6OkhhbmRsZTx2ODo6U2NyaXB0PiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2Ny
aXB0UnVubmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Qmlu
ZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4
IDgzZjEyNmNiOWNiZTJkZmI4ODAyMDExYzJjNWRlZjdhNGYzYzM4MWQuLmE2ZjU3NDYwMjZiMTE0
NjVhZTc1NTY0YWU2ZGZiZDM2ZGQxMWQ4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmNwcApAQCAtMzA3LDYgKzMwNywxMiBAQCBib29sIGhhbmRsZU91dE9mTWVtb3J5
KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordjg6OkxvY2FsPHY4OjpWYWx1ZT4gaGFuZGxlTWF4
UmVjdXJzaW9uRGVwdGhFeGNlZWRlZCgpCit7CisgICAgdGhyb3dFcnJvcihSYW5nZUVycm9yLCAi
TWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQuIik7CisgICAgcmV0dXJuIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+KCk7Cit9CisKIHZvaWQgY3Jhc2hJZlY4SXNEZWFkKCkKIHsKICAgICBpZiAo
djg6OlY4OjpJc0RlYWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApp
bmRleCAxNGU2Njc4MTdlNjY4YjUwZDMyYjY3YjA3NmUyZTE0YjJmZmU2ODFhLi45MmYxNTg1Zjk5
NGYyOTQ3ZDVlMGI2ZTIzNmJiZmRkMDA5ODYwODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEJpbmRpbmcuaApAQCAtMzcxLDYgKzM3MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAvLyBJZiB0aGUgY3VycmVudCBjb250ZXh0IGNhdXNlcyBvdXQgb2YgbWVtb3J5LCBKYXZhU2Ny
aXB0IHNldHRpbmcKICAgICAvLyBpcyBkaXNhYmxlZCBhbmQgaXQgcmV0dXJucyB0cnVlLgogICAg
IGJvb2wgaGFuZGxlT3V0T2ZNZW1vcnkoKTsKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBoYW5k
bGVNYXhSZWN1cnNpb25EZXB0aEV4Y2VlZGVkKCk7CiAKICAgICB2b2lkIGNyYXNoSWZWOElzRGVh
ZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCmluZGV4IDYzNmNjNWZj
OTY4NTU2ZTlkNmI4ZGRmMWU0MDQ1OTU0ZWY3YzlkNTUuLjc0N2I1Y2NlNWI0ZTYwNzI0MmRkYzFk
NGFkZGE1Y2NmOTUwNzFjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3Bw
CkBAIC03NywxMyArNzcsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEZJWE1FOiBU
aGlzIHdpbGwgYmUgc29vbiByZW1vdmVkIHdoZW4gd2UgbW92ZSBydW5TY3JpcHQoKSB0byBTY3Jp
cHRDb250cm9sbGVyLgotc3RhdGljIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGhhbmRsZU1heFJlY3Vy
c2lvbkRlcHRoRXhjZWVkZWQoKQotewotICAgIHRocm93RXJyb3IoUmFuZ2VFcnJvciwgIk1heGlt
dW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLiIpOwotICAgIHJldHVybiB2ODo6TG9jYWw8djg6
OlZhbHVlPigpOwotfQotCiBWOFByb3h5OjpWOFByb3h5KEZyYW1lKiBmcmFtZSkKICAgICA6IG1f
ZnJhbWUoZnJhbWUpCiB7CkBAIC0xMjUsNTEgKzExOCwxNCBAQCB2ODo6TG9jYWw8djg6OlZhbHVl
PiBWOFByb3h5OjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2UsIE5vZGUq
IG5vZAogICAgICAgICBUUkFDRV9FVkVOVF9FTkQwKCJ2OCIsICJ2OC5jb21waWxlIik7CiAgICAg
ICAgIFRSQUNFX0VWRU5UMCgidjgiLCAidjgucnVuIik7CiAjZW5kaWYKLSAgICAgICAgcmVzdWx0
ID0gcnVuU2NyaXB0KHNjcmlwdCk7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChjb29raWUpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhQcm94eTo6cnVuU2NyaXB0KHY4OjpIYW5kbGU8djg6
OlNjcmlwdD4gc2NyaXB0KQotewotICAgIGlmIChzY3JpcHQuSXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gdjg6OkxvY2FsPHY4OjpWYWx1ZT4oKTsKIAotICAgIFY4R0NDb250cm9sbGVyOjpjaGVj
a01lbW9yeVVzYWdlKCk7Ci0gICAgaWYgKFY4UmVjdXJzaW9uU2NvcGU6OnJlY3Vyc2lvbkxldmVs
KCkgPj0ga01heFJlY3Vyc2lvbkRlcHRoKQotICAgICAgICByZXR1cm4gaGFuZGxlTWF4UmVjdXJz
aW9uRGVwdGhFeGNlZWRlZCgpOwotCi0gICAgaWYgKGhhbmRsZU91dE9mTWVtb3J5KCkpCi0gICAg
ICAgIEFTU0VSVChzY3JpcHQuSXNFbXB0eSgpKTsKLQotICAgIC8vIEtlZXAgRnJhbWUgKGFuZCB0
aGVyZWZvcmUgU2NyaXB0Q29udHJvbGxlciBhbmQgVjhQcm94eSkgYWxpdmUuCi0gICAgUmVmUHRy
PEZyYW1lPiBwcm90ZWN0KGZyYW1lKCkpOwotCi0gICAgLy8gUnVuIHRoZSBzY3JpcHQgYW5kIGtl
ZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgcmVjdXJzaW9uIGRlcHRoLgotICAgIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHJlc3VsdDsKLSAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7Ci0gICAgdHJ5Q2F0
Y2guU2V0VmVyYm9zZSh0cnVlKTsKLSAgICB7Ci0gICAgICAgIFY4UmVjdXJzaW9uU2NvcGUgcmVj
dXJzaW9uU2NvcGUoZnJhbWUoKS0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgIHJlc3VsdCA9IHNjcmlw
dC0+UnVuKCk7CisgICAgICAgIC8vIEtlZXAgRnJhbWUgKGFuZCB0aGVyZWZvcmUgU2NyaXB0Q29u
dHJvbGxlcikgYWxpdmUuCisgICAgICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdChmcmFtZSgpKTsK
KyAgICAgICAgcmVzdWx0ID0gU2NyaXB0UnVubmVyOjpydW5TY3JpcHQoc2NyaXB0LCBmcmFtZSgp
LT5kb2N1bWVudCgpKTsKICAgICB9CiAKLSAgICBpZiAoaGFuZGxlT3V0T2ZNZW1vcnkoKSkKLSAg
ICAgICAgQVNTRVJUKHJlc3VsdC5Jc0VtcHR5KCkpOwotCi0gICAgLy8gSGFuZGxlIFY4IGludGVy
bmFsIGVycm9yIHNpdHVhdGlvbiAoT3V0LW9mLW1lbW9yeSkuCi0gICAgaWYgKHRyeUNhdGNoLkhh
c0NhdWdodCgpKSB7Ci0gICAgICAgIEFTU0VSVChyZXN1bHQuSXNFbXB0eSgpKTsKLSAgICAgICAg
cmV0dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7Ci0gICAgfQotCi0gICAgaWYgKHJlc3VsdC5J
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOworICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQoY29va2llKTsKIAotICAg
IGNyYXNoSWZWOElzRGVhZCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4UHJveHkuaAppbmRleCAyYWM2YmU4ZjBhYmE1Njk4MGUxZGM3NTY2OWYwMTY0
MzJjZThjYWVjLi42MzAwYTE5ZTc4OWMxNWFjMjQyMDIwMzIyODY4YzlkOWQwZTkzYWExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCkBAIC05Miw5ICs5Miw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgLy8gSWYgY2Fubm90IGV2YWx1dGUgdGhlIHNjcmlwdCwgaXQg
cmV0dXJucyBhbiBlcnJvci4KICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZXZhbHVhdGUo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYsIE5vZGUqKTsKIAotICAgICAgICAvLyBSdW4gYW4gYWxy
ZWFkeSBjb21waWxlZCBzY3JpcHQuCi0gICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHJ1blNj
cmlwdCh2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+KTsKLQogICAgICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgZXZlbnR1YWxseSB0YWtlIERPTVdyYXBwZXJXb3JsZCBhcmd1bWVudCEKICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgbWV0aG9kIHdpbGwgYmUgc29vbiByZW1vdmVkLCBhcyBhbGwgbWV0aG9k
cyB0aGF0IGFjY2VzcyB3aW5kb3dTaGVsbCgpCiAgICAgICAgIC8vIHdpbGwgYmUgbW92ZWQgdG8g
U2NyaXB0Q29udHJvbGxlci4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160058</attachid>
            <date>2012-08-22 18:16:51 -0700</date>
            <delta_ts>2012-08-22 18:20:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94706-20120823101648.patch</filename>
            <type>text/plain</type>
            <size>13011</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODk0ZTIzMzJiMGU4M2M2
MTYwYzBiZWNjZjNlOGE4NDc2NDhhM2JiYy4uOWUyM2NjYjc1ZDkyOTYyZDNiNTBiZWQyYTE3OTY1
M2NhOWY4YzlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA4LTIyICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIE1vdmUgcnVu
U2NyaXB0KCkgZnJvbSBWOFByb3h5IHRvIFNjcmlwdFJ1bm5lcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ3MDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBraWxsIFY4UHJveHksIHdlIGNhbiBtb3Zl
IHJ1blNjcmlwdCgpIGZyb20gVjhQcm94eSB0byBTY3JpcHRSdW5uZXIuCisKKyAgICAgICAgLSBT
Y3JpcHRSdW5uZXI6OnJ1blNjcmlwdCgpIHNob3VsZCBiZSBhIHN0YXRpYyBtZXRob2QuCisgICAg
ICAgIEl0IHNob3VsZCByZWNlaXZlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgb24gd2hpY2ggdGhl
IHNjcmlwdCBpcyBldmFsdWF0ZWQuCisKKyAgICAgICAgLSBBZnRlciB0aGlzIHBhdGNoIGlzIGxh
bmRlZCwgSSdsbCByZW1vdmUgV29ya2VyQ29udGV4dEV4ZWN1dGlvbkNvbnRleHQ6OnJ1blNjcmlw
dCgpCisgICAgICAgIGFuZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuU2NyaXB0KCkuCisKKyAgICAg
ICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFVzZVY4LmNt
YWtlOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3Jp
cHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRSdW5uZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVu
bmVyOjpydW5TY3JpcHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFJ1bm5lci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2NyaXB0UnVubmVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxl
TWF4UmVjdXJzaW9uRGVwdGhFeGNlZWRlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6ZXZh
bHVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuaDoKKyAgICAgICAgKFY4UHJv
eHkpOgorCiAyMDEyLTA4LTIxICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbVjhdIE1vdmUgbWF0Y2hlc0N1cnJlbnRDb250ZXh0KCkgZnJvbSBWOFByb3h5
IHRvIFNjcmlwdENvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1VzZVY4LmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKaW5kZXggM2RlZjI1NmU5NmFjYTY4MmE4
Y2JlNzc5NTY1OTM3MDZmODgyZGMzMC4uOTFjZTgzNTJlNTk2Y2NkYmI2NDY3YTU4ZTdiZjgyZTM5
NDgwZmEzZSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKQEAgLTM5LDYgKzM5LDcgQEAgTElTVChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvdjgvU2NyaXB0R0NFdmVudC5jcHAKICAgICBiaW5k
aW5ncy92OC9TY3JpcHRJbnN0YW5jZS5jcHAKICAgICBiaW5kaW5ncy92OC9TY3JpcHRPYmplY3Qu
Y3BwCisgICAgYmluZGluZ3MvdjgvU2NyaXB0UnVubmVyLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Nj
cmlwdFNjb3BlLmNwcAogICAgIGJpbmRpbmdzL3Y4L1NjcmlwdFNvdXJjZUNvZGUuY3BwCiAgICAg
YmluZGluZ3MvdjgvU2NyaXB0U3RhdGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOWRjMWFlMjg1
ZTA3M2MwMjRhYmEwNjVmNzVjNmYxYjM4OGE1NjdhZS4uODY3ZThmYTFlOTVlMzY4MmE1OGJlNDA5
ZjZhMWM2N2UyMzUyNTc2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjI0MCw2ICsyMjQwLDggQEAK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlTm9kZS5oJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Njcmlw
dFJ1bm5lci5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdFJ1bm5lci5oJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRTY29wZS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1NjcmlwdFNjb3BlLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Nj
cmlwdFNvdXJjZUNvZGUuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q29udHJvbGxlci5jcHAKaW5kZXggYWMyZWM0MjIxY2UwNmZjMzAzMzEyNjAwZjY5YTYwMmEw
MjQ4MzBjNS4uYWY1YWQ2OTJkMDI2OTkwZTY1N2ZkOWQ0YWVmZDI1NGRiNDlmZWZiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTE5
OCwxMiArMTk4LDYgQEAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gU2NyaXB0Q29udHJvbGxlcjo6Y2Fs
bEZ1bmN0aW9uKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW4KICAgICByZXR1cm4gU2NyaXB0
Q29udHJvbGxlcjo6Y2FsbEZ1bmN0aW9uV2l0aEluc3RydW1lbnRhdGlvbihtX2ZyYW1lID8gbV9m
cmFtZS0+ZG9jdW1lbnQoKSA6IDAsIGZ1bmN0aW9uLCByZWNlaXZlciwgYXJnYywgYXJncyk7CiB9
CiAKLXN0YXRpYyB2ODo6TG9jYWw8djg6OlZhbHVlPiBoYW5kbGVNYXhSZWN1cnNpb25EZXB0aEV4
Y2VlZGVkKCkKLXsKLSAgICB0aHJvd0Vycm9yKFJhbmdlRXJyb3IsICJNYXhpbXVtIGNhbGwgc3Rh
Y2sgc2l6ZSBleGNlZWRlZC4iKTsKLSAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpWYWx1ZT4oKTsK
LX0KLQogc3RhdGljIGlubGluZSB2b2lkIHJlc291cmNlSW5mbyhjb25zdCB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvbj4gZnVuY3Rpb24sIFN0cmluZyYgcmVzb3VyY2VOYW1lLCBpbnQmIGxpbmVOdW1i
ZXIpCiB7CiAgICAgdjg6OlNjcmlwdE9yaWdpbiBvcmlnaW4gPSBmdW5jdGlvbi0+R2V0U2NyaXB0
T3JpZ2luKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRS
dW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UnVubmVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44ODYzOWEwMGM3ZGIyMzNiYjcwMWE1YjgwMjM3OTI0NGJhNmRjOTAyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UnVubmVyLmNw
cApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTY3JpcHRSdW5uZXIuaCIKKworI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3Bl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordjg6OkxvY2FsPHY4OjpWYWx1ZT4gU2NyaXB0
UnVubmVyOjpydW5TY3JpcHQodjg6OkhhbmRsZTx2ODo6U2NyaXB0PiBzY3JpcHQsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgaWYgKHNjcmlwdC5Jc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOworCisgICAgVjhHQ0NvbnRyb2xs
ZXI6OmNoZWNrTWVtb3J5VXNhZ2UoKTsKKyAgICBpZiAoVjhSZWN1cnNpb25TY29wZTo6cmVjdXJz
aW9uTGV2ZWwoKSA+PSBrTWF4UmVjdXJzaW9uRGVwdGgpCisgICAgICAgIHJldHVybiBoYW5kbGVN
YXhSZWN1cnNpb25EZXB0aEV4Y2VlZGVkKCk7CisKKyAgICBpZiAoaGFuZGxlT3V0T2ZNZW1vcnko
KSkKKyAgICAgICAgQVNTRVJUKHNjcmlwdC5Jc0VtcHR5KCkpOworCisgICAgLy8gUnVuIHRoZSBz
Y3JpcHQgYW5kIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgcmVjdXJzaW9uIGRlcHRoLgorICAg
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHJlc3VsdDsKKyAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7
CisgICAgdHJ5Q2F0Y2guU2V0VmVyYm9zZSh0cnVlKTsKKyAgICB7CisgICAgICAgIFY4UmVjdXJz
aW9uU2NvcGUgcmVjdXJzaW9uU2NvcGUoY29udGV4dCk7CisgICAgICAgIHJlc3VsdCA9IHNjcmlw
dC0+UnVuKCk7CisgICAgfQorCisgICAgaWYgKGhhbmRsZU91dE9mTWVtb3J5KCkpCisgICAgICAg
IEFTU0VSVChyZXN1bHQuSXNFbXB0eSgpKTsKKworICAgIC8vIEhhbmRsZSBWOCBpbnRlcm5hbCBl
cnJvciBzaXR1YXRpb24uCisgICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKSB7CisgICAgICAg
IEFTU0VSVChyZXN1bHQuSXNFbXB0eSgpKTsKKyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6
VmFsdWU+KCk7CisgICAgfQorCisgICAgaWYgKHJlc3VsdC5Jc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOworCisgICAgY3Jhc2hJZlY4SXNEZWFkKCk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UnVubmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRSdW5uZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTg3YjJmYzc5YTll
OGE5ODhiYjllZTU2Yjg5NmQ2NzY5OGIwNGIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UnVubmVyLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFNjcmlwdFJ1bm5lcl9oCisjZGVmaW5lIFNjcmlwdFJ1bm5lcl9oCisK
KyNpbmNsdWRlIDx2OC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIFNjcmlwdFJ1bm5lciB7CitwdWJsaWM6CisgICAgLy8g
UnVuIGFuIGFscmVhZHkgY29tcGlsZWQgc2NyaXB0LgorICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6
OlZhbHVlPiBydW5TY3JpcHQodjg6OkhhbmRsZTx2ODo6U2NyaXB0PiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2Ny
aXB0UnVubmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Qmlu
ZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4
IDgzZjEyNmNiOWNiZTJkZmI4ODAyMDExYzJjNWRlZjdhNGYzYzM4MWQuLmE2ZjU3NDYwMjZiMTE0
NjVhZTc1NTY0YWU2ZGZiZDM2ZGQxMWQ4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmNwcApAQCAtMzA3LDYgKzMwNywxMiBAQCBib29sIGhhbmRsZU91dE9mTWVtb3J5
KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordjg6OkxvY2FsPHY4OjpWYWx1ZT4gaGFuZGxlTWF4
UmVjdXJzaW9uRGVwdGhFeGNlZWRlZCgpCit7CisgICAgdGhyb3dFcnJvcihSYW5nZUVycm9yLCAi
TWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQuIik7CisgICAgcmV0dXJuIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+KCk7Cit9CisKIHZvaWQgY3Jhc2hJZlY4SXNEZWFkKCkKIHsKICAgICBpZiAo
djg6OlY4OjpJc0RlYWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApp
bmRleCAxNGU2Njc4MTdlNjY4YjUwZDMyYjY3YjA3NmUyZTE0YjJmZmU2ODFhLi45MmYxNTg1Zjk5
NGYyOTQ3ZDVlMGI2ZTIzNmJiZmRkMDA5ODYwODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEJpbmRpbmcuaApAQCAtMzcxLDYgKzM3MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAvLyBJZiB0aGUgY3VycmVudCBjb250ZXh0IGNhdXNlcyBvdXQgb2YgbWVtb3J5LCBKYXZhU2Ny
aXB0IHNldHRpbmcKICAgICAvLyBpcyBkaXNhYmxlZCBhbmQgaXQgcmV0dXJucyB0cnVlLgogICAg
IGJvb2wgaGFuZGxlT3V0T2ZNZW1vcnkoKTsKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBoYW5k
bGVNYXhSZWN1cnNpb25EZXB0aEV4Y2VlZGVkKCk7CiAKICAgICB2b2lkIGNyYXNoSWZWOElzRGVh
ZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCmluZGV4IDYzNmNjNWZj
OTY4NTU2ZTlkNmI4ZGRmMWU0MDQ1OTU0ZWY3YzlkNTUuLjIzMTQ5OTA4ODY2NjJhMDUxOWI3MmVi
Yjc2ZWQ1MTJmMzkxOTM0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3Bw
CkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5o
IgorI2luY2x1ZGUgIlNjcmlwdFJ1bm5lci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBA
IC03NywxMyArNzgsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEZJWE1FOiBUaGlz
IHdpbGwgYmUgc29vbiByZW1vdmVkIHdoZW4gd2UgbW92ZSBydW5TY3JpcHQoKSB0byBTY3JpcHRD
b250cm9sbGVyLgotc3RhdGljIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGhhbmRsZU1heFJlY3Vyc2lv
bkRlcHRoRXhjZWVkZWQoKQotewotICAgIHRocm93RXJyb3IoUmFuZ2VFcnJvciwgIk1heGltdW0g
Y2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLiIpOwotICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZh
bHVlPigpOwotfQotCiBWOFByb3h5OjpWOFByb3h5KEZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJh
bWUoZnJhbWUpCiB7CkBAIC0xMjUsNTEgKzExOSwxNCBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBW
OFByb3h5OjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2UsIE5vZGUqIG5v
ZAogICAgICAgICBUUkFDRV9FVkVOVF9FTkQwKCJ2OCIsICJ2OC5jb21waWxlIik7CiAgICAgICAg
IFRSQUNFX0VWRU5UMCgidjgiLCAidjgucnVuIik7CiAjZW5kaWYKLSAgICAgICAgcmVzdWx0ID0g
cnVuU2NyaXB0KHNjcmlwdCk7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRFdmFsdWF0ZVNjcmlwdChjb29raWUpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
djg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhQcm94eTo6cnVuU2NyaXB0KHY4OjpIYW5kbGU8djg6OlNj
cmlwdD4gc2NyaXB0KQotewotICAgIGlmIChzY3JpcHQuSXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gdjg6OkxvY2FsPHY4OjpWYWx1ZT4oKTsKIAotICAgIFY4R0NDb250cm9sbGVyOjpjaGVja01l
bW9yeVVzYWdlKCk7Ci0gICAgaWYgKFY4UmVjdXJzaW9uU2NvcGU6OnJlY3Vyc2lvbkxldmVsKCkg
Pj0ga01heFJlY3Vyc2lvbkRlcHRoKQotICAgICAgICByZXR1cm4gaGFuZGxlTWF4UmVjdXJzaW9u
RGVwdGhFeGNlZWRlZCgpOwotCi0gICAgaWYgKGhhbmRsZU91dE9mTWVtb3J5KCkpCi0gICAgICAg
IEFTU0VSVChzY3JpcHQuSXNFbXB0eSgpKTsKLQotICAgIC8vIEtlZXAgRnJhbWUgKGFuZCB0aGVy
ZWZvcmUgU2NyaXB0Q29udHJvbGxlciBhbmQgVjhQcm94eSkgYWxpdmUuCi0gICAgUmVmUHRyPEZy
YW1lPiBwcm90ZWN0KGZyYW1lKCkpOwotCi0gICAgLy8gUnVuIHRoZSBzY3JpcHQgYW5kIGtlZXAg
dHJhY2sgb2YgdGhlIGN1cnJlbnQgcmVjdXJzaW9uIGRlcHRoLgotICAgIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHJlc3VsdDsKLSAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7Ci0gICAgdHJ5Q2F0Y2gu
U2V0VmVyYm9zZSh0cnVlKTsKLSAgICB7Ci0gICAgICAgIFY4UmVjdXJzaW9uU2NvcGUgcmVjdXJz
aW9uU2NvcGUoZnJhbWUoKS0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgIHJlc3VsdCA9IHNjcmlwdC0+
UnVuKCk7CisgICAgICAgIC8vIEtlZXAgRnJhbWUgKGFuZCB0aGVyZWZvcmUgU2NyaXB0Q29udHJv
bGxlcikgYWxpdmUuCisgICAgICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdChmcmFtZSgpKTsKKyAg
ICAgICAgcmVzdWx0ID0gU2NyaXB0UnVubmVyOjpydW5TY3JpcHQoc2NyaXB0LCBmcmFtZSgpLT5k
b2N1bWVudCgpKTsKICAgICB9CiAKLSAgICBpZiAoaGFuZGxlT3V0T2ZNZW1vcnkoKSkKLSAgICAg
ICAgQVNTRVJUKHJlc3VsdC5Jc0VtcHR5KCkpOwotCi0gICAgLy8gSGFuZGxlIFY4IGludGVybmFs
IGVycm9yIHNpdHVhdGlvbiAoT3V0LW9mLW1lbW9yeSkuCi0gICAgaWYgKHRyeUNhdGNoLkhhc0Nh
dWdodCgpKSB7Ci0gICAgICAgIEFTU0VSVChyZXN1bHQuSXNFbXB0eSgpKTsKLSAgICAgICAgcmV0
dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7Ci0gICAgfQotCi0gICAgaWYgKHJlc3VsdC5Jc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOworICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQoY29va2llKTsKIAotICAgIGNy
YXNoSWZWOElzRGVhZCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4UHJveHkuaAppbmRleCAyYWM2YmU4ZjBhYmE1Njk4MGUxZGM3NTY2OWYwMTY0MzJj
ZThjYWVjLi42MzAwYTE5ZTc4OWMxNWFjMjQyMDIwMzIyODY4YzlkOWQwZTkzYWExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCkBAIC05Miw5ICs5Miw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gSWYgY2Fubm90IGV2YWx1dGUgdGhlIHNjcmlwdCwgaXQgcmV0
dXJucyBhbiBlcnJvci4KICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZXZhbHVhdGUoY29u
c3QgU2NyaXB0U291cmNlQ29kZSYsIE5vZGUqKTsKIAotICAgICAgICAvLyBSdW4gYW4gYWxyZWFk
eSBjb21waWxlZCBzY3JpcHQuCi0gICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHJ1blNjcmlw
dCh2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+KTsKLQogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgZXZlbnR1YWxseSB0YWtlIERPTVdyYXBwZXJXb3JsZCBhcmd1bWVudCEKICAgICAgICAgLy8g
RklYTUU6IFRoaXMgbWV0aG9kIHdpbGwgYmUgc29vbiByZW1vdmVkLCBhcyBhbGwgbWV0aG9kcyB0
aGF0IGFjY2VzcyB3aW5kb3dTaGVsbCgpCiAgICAgICAgIC8vIHdpbGwgYmUgbW92ZWQgdG8gU2Ny
aXB0Q29udHJvbGxlci4K
</data>
<flag name="review"
          id="170526"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>