<?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>94561</bug_id>
          
          <creation_ts>2012-08-20 19:14:16 -0700</creation_ts>
          <short_desc>[V8] Move compileScript() from V8Proxy to ScriptSourceCode</short_desc>
          <delta_ts>2012-08-21 16:51:21 -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>700348</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-20 19:14:16 -0700</bug_when>
    <thetext>To kill V8Proxy, we can move compileScript() from V8Proxy to ScriptController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700353</commentid>
    <comment_count>1</comment_count>
      <attachid>159589</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-20 19:17:59 -0700</bug_when>
    <thetext>Created attachment 159589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700492</commentid>
    <comment_count>2</comment_count>
      <attachid>159589</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-20 23:03:43 -0700</bug_when>
    <thetext>Comment on attachment 159589
Patch

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

&gt; Source/WebCore/bindings/v8/ScriptController.cpp:342
&gt; +    const uint16_t* fileNameString = fromWebCoreString(fileName);

What is fromWebCoreString ?

&gt; Source/WebCore/bindings/v8/ScriptController.h:91
&gt; +    static v8::Handle&lt;v8::Script&gt; compileScript(v8::Handle&lt;v8::String&gt; code, const String&amp; fileName, const TextPosition&amp; scriptStartPosition, v8::ScriptData* = 0);

Should this really go on script controller?  I guess I would have expected this to be related to ScriptSourceCode....  I guess the types don&apos;t quite line up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700496</commentid>
    <comment_count>3</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-20 23:13:15 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; Source/WebCore/bindings/v8/ScriptController.cpp:342
&gt; &gt; +    const uint16_t* fileNameString = fromWebCoreString(fileName);
&gt; 
&gt; What is fromWebCoreString ?

fromWebCoreString() retrieves uint16 from WebCore String. Maybe should we rename it to uint16OfWebCoreString()?

&gt; &gt; Source/WebCore/bindings/v8/ScriptController.h:91
&gt; &gt; +    static v8::Handle&lt;v8::Script&gt; compileScript(v8::Handle&lt;v8::String&gt; code, const String&amp; fileName, const TextPosition&amp; scriptStartPosition, v8::ScriptData* = 0);
&gt; 
&gt; Should this really go on script controller?  I guess I would have expected this to be related to ScriptSourceCode....  I guess the types don&apos;t quite line up.

Makes sense. I&apos;ll update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700499</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-20 23:24:04 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; &gt; Source/WebCore/bindings/v8/ScriptController.cpp:342
&gt; &gt; &gt; +    const uint16_t* fileNameString = fromWebCoreString(fileName);
&gt; &gt; 
&gt; &gt; What is fromWebCoreString ?
&gt; 
&gt; fromWebCoreString() retrieves uint16 from WebCore String. Maybe should we rename it to uint16OfWebCoreString()?

    inline const uint16_t* fromWebCoreString(const String&amp; str)
    {
        return reinterpret_cast&lt;const uint16_t*&gt;(str.characters());
    }

It might be clearer to just inline this function into all it&apos;s call sites.  Having the body of the function makes it clear that the memory is still owned by the string...

Up to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700603</commentid>
    <comment_count>5</comment_count>
      <attachid>159650</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-21 04:09:39 -0700</bug_when>
    <thetext>Created attachment 159650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700733</commentid>
    <comment_count>6</comment_count>
      <attachid>159686</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-21 07:31:11 -0700</bug_when>
    <thetext>Created attachment 159686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700737</commentid>
    <comment_count>7</comment_count>
      <attachid>159686</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-21 07:39:32 -0700</bug_when>
    <thetext>Comment on attachment 159686
Patch

Even better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701303</commentid>
    <comment_count>8</comment_count>
      <attachid>159686</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 16:51:17 -0700</bug_when>
    <thetext>Comment on attachment 159686
Patch

Clearing flags on attachment: 159686

Committed r126222: &lt;http://trac.webkit.org/changeset/126222&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701304</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 16:51:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159589</attachid>
            <date>2012-08-20 19:17:59 -0700</date>
            <delta_ts>2012-08-21 04:09:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94561-20120821111719.patch</filename>
            <type>text/plain</type>
            <size>9422</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FhMjhiY2ExMjFlY2I4
NjIwNjVjNDNmZTZkODA5MjVhNzBmN2VlOC4uYTdkZjVjZjZkMzlhZTEzMjNkODRmMmZkYjA1MWRh
YTY5MGRhZGVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDEyLTA4LTIwICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbVjhdIE1vdmUgY29t
cGlsZVNjcmlwdCgpIGZyb20gVjhQcm94eSB0byBTY3JpcHRDb250cm9sbGVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDU2MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIGtpbGwgVjhQcm94eSwgdGhp
cyBwYXRjaCBtb3ZlcyBjb21waWxlU2NyaXB0KCkgZnJvbSBWOFByb3h5IHRvIFNjcmlwdENvbnRy
b2xsZXIuCisKKyAgICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6Y29tcGlsZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmg6IFJlbW92ZWQgYW4gb3V0
LW9mLWRhdGUgY29tbWVudC4KKyAgICAgICAgKFNjcmlwdENvbnRyb2xsZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OmV2YWx1
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5Lmg6IG5ld0luc3RhbmNlKCkgbm8g
bG9uZ2VyIGV4aXN0cy4gU28gSSByZW1vdmVkIGl0LgorICAgICAgICAoVjhQcm94eSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6ZXZhbHVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpydW5TY3JpcHQpOgor
CisyMDEyLTA4LTIwICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKwogICAg
ICAgICBbVjhdIE1vdmUgaW5zdHJ1bWVudGVkQ2FsbEZ1bmN0aW9uKCkgZnJvbSBWOFByb3h5IHRv
IFNjcmlwdENvbnRyb2xsZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk0NDU2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
Q29udHJvbGxlci5jcHAKaW5kZXggMWE0ZjlmNmNkMzY3ZTlkMzU4ZDQ5YWU5NjViZDg2YmE1MTM3
NjdjZC4uNTU2OTM2ZjAwYTNkZGI1ZjA3OTdmOTU3ZjVkZjVkZTExNmY3YTczMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTMzNyw2
ICszMzcsMTcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpzZXRJc29sYXRlZFdvcmxkU2VjdXJp
dHlPcmlnaW4oaW50IHdvcmxkSUQsIFBhc3NSZWZQdHI8U2UKICAgICAgICAgaXRlci0+c2Vjb25k
LT5zZXRTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbik7CiB9CiAKK3Y4OjpIYW5kbGU8djg6
OlNjcmlwdD4gU2NyaXB0Q29udHJvbGxlcjo6Y29tcGlsZVNjcmlwdCh2ODo6SGFuZGxlPHY4OjpT
dHJpbmc+IGNvZGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFRleHRQb3NpdGlvbiYg
c2NyaXB0U3RhcnRQb3NpdGlvbiwgdjg6OlNjcmlwdERhdGEqIHNjcmlwdERhdGEpCit7CisgICAg
Y29uc3QgdWludDE2X3QqIGZpbGVOYW1lU3RyaW5nID0gZnJvbVdlYkNvcmVTdHJpbmcoZmlsZU5h
bWUpOworICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gbmFtZSA9IHY4OjpTdHJpbmc6Ok5ldyhm
aWxlTmFtZVN0cmluZywgZmlsZU5hbWUubGVuZ3RoKCkpOworICAgIHY4OjpIYW5kbGU8djg6Oklu
dGVnZXI+IGxpbmUgPSB2OEludGVnZXIoc2NyaXB0U3RhcnRQb3NpdGlvbi5tX2xpbmUuemVyb0Jh
c2VkSW50KCkpOworICAgIHY4OjpIYW5kbGU8djg6OkludGVnZXI+IGNvbHVtbiA9IHY4SW50ZWdl
cihzY3JpcHRTdGFydFBvc2l0aW9uLm1fY29sdW1uLnplcm9CYXNlZEludCgpKTsKKyAgICB2ODo6
U2NyaXB0T3JpZ2luIG9yaWdpbihuYW1lLCBsaW5lLCBjb2x1bW4pOworICAgIHY4OjpIYW5kbGU8
djg6OlNjcmlwdD4gc2NyaXB0ID0gdjg6OlNjcmlwdDo6Q29tcGlsZShjb2RlLCAmb3JpZ2luLCBz
Y3JpcHREYXRhKTsKKyAgICByZXR1cm4gc2NyaXB0OworfQorCiAvLyBFdmFsdWF0ZSBhIHNjcmlw
dCBmaWxlIGluIHRoZSBlbnZpcm9ubWVudCBvZiB0aGlzIHByb3h5LgogU2NyaXB0VmFsdWUgU2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29k
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaApp
bmRleCBkYTZlZjkyZGJmYzQ3ODgwYTQ2Yzk1Y2IzZjk4ZTM3NTJjODdmMzI2Li43Y2U3Y2U0OGQw
MTllYTc2Nzk2ZWY1ZWQzMDE5NDA1ODk4ZTE5ZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCkBAIC04OCw5ICs4OCw5IEBAIHB1YmxpYzoKICAg
ICAvLyBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLiBJ
dCBpcyBzYWZlIHRvIGNhbGwgaXQgcmVwZWF0ZWRseS4KICAgICBzdGF0aWMgdm9pZCBpbml0aWFs
aXplVGhyZWFkaW5nKCk7CiAKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6U2NyaXB0PiBjb21w
aWxlU2NyaXB0KHY4OjpIYW5kbGU8djg6OlN0cmluZz4gY29kZSwgY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uLCB2ODo6U2NyaXB0
RGF0YSogPSAwKTsKKwogICAgIC8vIEV2YWx1YXRlIGEgc2NyaXB0IGZpbGUgaW4gdGhlIGVudmly
b25tZW50IG9mIHRoaXMgcHJveHkuCi0gICAgLy8gSWYgc3VjY2VlZGVkLCAnc3VjYycgaXMgc2V0
IHRvIHRydWUgYW5kIHJlc3VsdCBpcyByZXR1cm5lZAotICAgIC8vIGFzIGEgc3RyaW5nLgogICAg
IFNjcmlwdFZhbHVlIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKIAogICAgIC8v
IEV2YWx1YXRlIEphdmFTY3JpcHQgaW4gYSBuZXcgaXNvbGF0ZWQgd29ybGQuIFRoZSBzY3JpcHQg
Z2V0cyBpdHMgb3duCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExh
enlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2
ZW50TGlzdGVuZXIuY3BwCmluZGV4IGYxMDcxNDY2OTE4ZGFkZmUxZjc4NmRhZTQ2YjcwMGYyMGUy
NTAwZWQuLjg0Yzg3MDQ0MDIwNDdjZWMzM2Y0MTI0YTZmYjYxMTM1NmM5MGZmYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwCkBA
IC0xNTgsNyArMTU4LDcgQEAgdm9pZCBWOExhenlFdmVudExpc3RlbmVyOjpwcmVwYXJlTGlzdGVu
ZXJPYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBjb2RlLmFwcGVu
ZCgiXG59O319fX0pIik7CiAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBjb2RlRXh0ZXJuYWxT
dHJpbmcgPSB2OEV4dGVybmFsU3RyaW5nKGNvZGUpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6U2Ny
aXB0PiBzY3JpcHQgPSBWOFByb3h5Ojpjb21waWxlU2NyaXB0KGNvZGVFeHRlcm5hbFN0cmluZywg
bV9zb3VyY2VVUkwsIG1fcG9zaXRpb24pOworICAgIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gc2Ny
aXB0ID0gU2NyaXB0Q29udHJvbGxlcjo6Y29tcGlsZVNjcmlwdChjb2RlRXh0ZXJuYWxTdHJpbmcs
IG1fc291cmNlVVJMLCBtX3Bvc2l0aW9uKTsKICAgICBpZiAoc2NyaXB0LklzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCmluZGV4
IGVhYmUwMmE0ZjM2ZTk4YzAxNTY5MmI4MWQxMGMzZTk1ZTc4YTg5ZDQuLmM3MzJlNDVjNjY4YzZh
ZjMyOTgyNmE0YjllYTA4NjI0MDE1N2NhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UHJveHkuY3BwCkBAIC0xMjEsMTcgKzEyMSw2IEBAIFY4UHJveHk6On5WOFByb3h5KCkKICAgICB3
aW5kb3dTaGVsbCgpLT5kZXN0cm95R2xvYmFsKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlNjcmlw
dD4gVjhQcm94eTo6Y29tcGlsZVNjcmlwdCh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGNvZGUsIGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3Np
dGlvbiwgdjg6OlNjcmlwdERhdGEqIHNjcmlwdERhdGEpCi17Ci0gICAgY29uc3QgdWludDE2X3Qq
IGZpbGVOYW1lU3RyaW5nID0gZnJvbVdlYkNvcmVTdHJpbmcoZmlsZU5hbWUpOwotICAgIHY4OjpI
YW5kbGU8djg6OlN0cmluZz4gbmFtZSA9IHY4OjpTdHJpbmc6Ok5ldyhmaWxlTmFtZVN0cmluZywg
ZmlsZU5hbWUubGVuZ3RoKCkpOwotICAgIHY4OjpIYW5kbGU8djg6OkludGVnZXI+IGxpbmUgPSB2
OEludGVnZXIoc2NyaXB0U3RhcnRQb3NpdGlvbi5tX2xpbmUuemVyb0Jhc2VkSW50KCkpOwotICAg
IHY4OjpIYW5kbGU8djg6OkludGVnZXI+IGNvbHVtbiA9IHY4SW50ZWdlcihzY3JpcHRTdGFydFBv
c2l0aW9uLm1fY29sdW1uLnplcm9CYXNlZEludCgpKTsKLSAgICB2ODo6U2NyaXB0T3JpZ2luIG9y
aWdpbihuYW1lLCBsaW5lLCBjb2x1bW4pOwotICAgIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gc2Ny
aXB0ID0gdjg6OlNjcmlwdDo6Q29tcGlsZShjb2RlLCAmb3JpZ2luLCBzY3JpcHREYXRhKTsKLSAg
ICByZXR1cm4gc2NyaXB0OwotfQotCiBib29sIFY4UHJveHk6OmhhbmRsZU91dE9mTWVtb3J5KCkK
IHsKICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0
Q3VycmVudCgpOwpAQCAtMjA1LDcgKzE5NCw3IEBAIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4UHJv
eHk6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZSwgTm9kZSogbm9kCiAK
ICAgICAgICAgLy8gTk9URTogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXZWJDb3JlLCBTY3JpcHRT
b3VyY2VDb2RlJ3MgbGluZSBzdGFydHMgYXQKICAgICAgICAgLy8gMSwgd2hlcmVhcyB2OCBzdGFy
dHMgYXQgMC4KLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6U2NyaXB0PiBzY3JpcHQgPSBjb21waWxl
U2NyaXB0KGNvZGUsIHNvdXJjZS51cmwoKSwgc291cmNlLnN0YXJ0UG9zaXRpb24oKSwgc2NyaXB0
RGF0YS5nZXQoKSk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gc2NyaXB0ID0gU2Ny
aXB0Q29udHJvbGxlcjo6Y29tcGlsZVNjcmlwdChjb2RlLCBzb3VyY2UudXJsKCksIHNvdXJjZS5z
dGFydFBvc2l0aW9uKCksIHNjcmlwdERhdGEuZ2V0KCkpOwogI2lmIFBMQVRGT1JNKENIUk9NSVVN
KQogICAgICAgICBUUkFDRV9FVkVOVF9FTkQwKCJ2OCIsICJ2OC5jb21waWxlIik7CiAgICAgICAg
IFRSQUNFX0VWRU5UMCgidjgiLCAidjgucnVuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBy
b3h5LmgKaW5kZXggYWZiMDQwMzdkY2Y4YzFkYzgwMmJmMTcxNWRjZmM5ZWYwZTQ2NTA0NS4uYmY1
ZjlkOGUxNjk2YzUzYWE4OGNhNzI3NjliY2M2NDM1MzM1MWFjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4UHJveHkuaApAQCAtOTcsOSArOTcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIC8vIFJ1biBhbiBhbHJlYWR5IGNvbXBpbGVkIHNjcmlwdC4KICAgICAgICAgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gcnVuU2NyaXB0KHY4OjpIYW5kbGU8djg6OlNjcmlwdD4pOwogCi0gICAg
ICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIGFzIGNvbnN0cnVjdG9yIHdpdGggdGhlIGdpdmVuIGFy
Z3VtZW50cy4KLSAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbmV3SW5zdGFuY2Uodjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb24+LCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3Zb
XSk7Ci0KICAgICAgICAgLy8gUmV0dXJucyBWOCBDb250ZXh0IG9mIGEgZnJhbWUuIElmIG5vbmUg
ZXhpc3RzLCBjcmVhdGVzCiAgICAgICAgIC8vIGEgbmV3IGNvbnRleHQuIEl0IGlzIHBvdGVudGlh
bGx5IHNsb3cgYW5kIGNvbnN1bWVzIG1lbW9yeS4KICAgICAgICAgc3RhdGljIHY4OjpMb2NhbDx2
ODo6Q29udGV4dD4gY29udGV4dChGcmFtZSopOwpAQCAtMTA4LDggKzEwNSw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgLy8gaXMgZGlzYWJsZWQgYW5kIGl0IHJldHVybnMgdHJ1ZS4K
ICAgICAgICAgc3RhdGljIGJvb2wgaGFuZGxlT3V0T2ZNZW1vcnkoKTsKIAotICAgICAgICBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6U2NyaXB0PiBjb21waWxlU2NyaXB0KHY4OjpIYW5kbGU8djg6OlN0
cmluZz4gY29kZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBz
Y3JpcHRTdGFydFBvc2l0aW9uLCB2ODo6U2NyaXB0RGF0YSogPSAwKTsKLQogICAgICAgICB2ODo6
TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQoKTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250
ZXh0PiBpc29sYXRlZFdvcmxkQ29udGV4dChpbnQgd29ybGRJZCk7CiAgICAgICAgIGJvb2wgbWF0
Y2hlc0N1cnJlbnRDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAppbmRleCBlMDMyNTVmODI4
NzZmZDliZDE5MzlmMTMzODM1YmY5NGM4MWM4ZTQwLi4zNGFjMzQ3NzZjYWIyOGJhYjVmNDI2OTM1
ZjRiYzhiMzM4ZjkwNDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9X
b3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIK
ICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgpAQCAtNDYsNyArNDcsNiBAQAogI2luY2x1
ZGUgIlY4RGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4T2JqZWN0Q29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJWOFBlckNvbnRleHREYXRhLmgiCi0jaW5jbHVkZSAiVjhQcm94
eS5oIgogI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlICJWOFNoYXJlZFdv
cmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXIuaCIKQEAgLTIxMyw3ICsyMTMsNyBAQCBT
Y3JpcHRWYWx1ZSBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OmV2YWx1YXRlKGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBjb25zdCBTdAogICAgIHY4OjpUcnlDYXRjaCBleGNlcHRpb25DYXRjaGVy
OwogCiAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IHNjcmlwdFN0cmluZyA9IHY4RXh0ZXJuYWxT
dHJpbmcoc2NyaXB0KTsKLSAgICB2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IGNvbXBpbGVkU2NyaXB0
ID0gVjhQcm94eTo6Y29tcGlsZVNjcmlwdChzY3JpcHRTdHJpbmcsIGZpbGVOYW1lLCBzY3JpcHRT
dGFydFBvc2l0aW9uKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IGNvbXBpbGVkU2NyaXB0
ID0gU2NyaXB0Q29udHJvbGxlcjo6Y29tcGlsZVNjcmlwdChzY3JpcHRTdHJpbmcsIGZpbGVOYW1l
LCBzY3JpcHRTdGFydFBvc2l0aW9uKTsKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXN1bHQg
PSBydW5TY3JpcHQoY29tcGlsZWRTY3JpcHQpOwogCiAgICAgaWYgKCFleGNlcHRpb25DYXRjaGVy
LkNhbkNvbnRpbnVlKCkpIHsKQEAgLTI1MCw3ICsyNTAsNyBAQCB2ODo6TG9jYWw8djg6OlZhbHVl
PiBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OnJ1blNjcmlwdCh2ODo6SGFuZGxlPHY4OjpT
Y3JpcAogICAgIC8vIENvbXB1dGUgdGhlIHNvdXJjZSBzdHJpbmcgYW5kIHByZXZlbnQgYWdhaW5z
dCBpbmZpbml0ZSByZWN1cnNpb24uCiAgICAgaWYgKFY4UmVjdXJzaW9uU2NvcGU6OnJlY3Vyc2lv
bkxldmVsKCkgPj0ga01heFJlY3Vyc2lvbkRlcHRoKSB7CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBjb2RlID0gdjhFeHRlcm5hbFN0cmluZygidGhyb3cgUmFuZ2VFcnJvcignUmVjdXJz
aW9uIHRvbyBkZWVwJykiKTsKLSAgICAgICAgc2NyaXB0ID0gVjhQcm94eTo6Y29tcGlsZVNjcmlw
dChjb2RlLCAiIiwgVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSk7CisgICAgICAgIHNj
cmlwdCA9IFNjcmlwdENvbnRyb2xsZXI6OmNvbXBpbGVTY3JpcHQoY29kZSwgIiIsIFRleHRQb3Np
dGlvbjo6bWluaW11bVBvc2l0aW9uKCkpOwogICAgIH0KIAogICAgIGlmIChWOFByb3h5OjpoYW5k
bGVPdXRPZk1lbW9yeSgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159650</attachid>
            <date>2012-08-21 04:09:39 -0700</date>
            <delta_ts>2012-08-21 07:31:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94561-20120821200858.patch</filename>
            <type>text/plain</type>
            <size>16916</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FhMjhiY2ExMjFlY2I4
NjIwNjVjNDNmZTZkODA5MjVhNzBmN2VlOC4uOTI3NTZhMDBkY2VmYmI5ZTYyMDhkNDQ4MjhiNjYw
Nzg4OTIwNzc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA4LTIxICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIE1vdmUgY29t
cGlsZVNjcmlwdCgpIGZyb20gVjhQcm94eSB0byBTY3JpcHRTb3VyY2VDb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDU2MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIGtpbGwgVjhQcm94eSwgdGhp
cyBwYXRjaCBtb3ZlcyBjb21waWxlU2NyaXB0KCkgZnJvbSBWOFByb3h5CisgICAgICAgIHRvIFNj
cmlwdFNvdXJjZUNvZGUuIFRoaXMgcGF0Y2ggYWxzbyByZW1vdmVzIGZyb21XZWJDb3JlU3RyaW5n
KCkuCisKKyAgICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAg
ICAqIFVzZVY4LmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChTY3JpcHRDb250cm9sbGVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRTb3VyY2VDb2RlLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGU6OmNvbXBp
bGVTY3JpcHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFNvdXJjZUNvZGUuaDoKKyAg
ICAgICAgKFNjcmlwdFNvdXJjZUNvZGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4UHJveHk6OmV2YWx1YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5Lmg6Cisg
ICAgICAgIChWOFByb3h5KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dEV4ZWN1dGlv
blByb3h5OjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RXhlY3V0
aW9uUHJveHk6OnJ1blNjcmlwdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5q
ZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRT
Y3JpcHRIb3N0OjpnZXRFdmVudExpc3RlbmVyc0NhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhNZXNzYWdlRXZlbnQ6OmRhdGFBY2Nlc3NvckdldHRlcik6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvVjhPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnNDYWxsYmFjayk6CisKIDIwMTItMDgtMjAgIEtl
bnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gTW92ZSBp
bnN0cnVtZW50ZWRDYWxsRnVuY3Rpb24oKSBmcm9tIFY4UHJveHkgdG8gU2NyaXB0Q29udHJvbGxl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9Vc2VWOC5jbWFrZQppbmRleCAyOWQ3ZTU4NzI4ZGI5MDc0ZDIyMmJhNTBjYmNiMDk4YTViMGM3
YmYyLi4zZjJjMTMwNDM3MTk4MGZjODAxZGMwNThiNDZjNGQ4ZGM4NGIyYjE4IDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5j
bWFrZQpAQCAtNDAsNiArNDAsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBi
aW5kaW5ncy92OC9TY3JpcHRJbnN0YW5jZS5jcHAKICAgICBiaW5kaW5ncy92OC9TY3JpcHRPYmpl
Y3QuY3BwCiAgICAgYmluZGluZ3MvdjgvU2NyaXB0U2NvcGUuY3BwCisgICAgYmluZGluZ3Mvdjgv
U2NyaXB0U291cmNlQ29kZS5jcHAKICAgICBiaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5jcHAKICAg
ICBiaW5kaW5ncy92OC9TY3JpcHRWYWx1ZS5jcHAKICAgICBiaW5kaW5ncy92OC9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOTUyYjgwMDFkYzkwMzQ0MGZlMzk4
MTQ3MDZiNDc5NTM3ZjYzOWNiZC4uNjM4MzliMDA2M2I1NTAzMjg4ZjMwNTlkNDlkMzRmY2UyOTRi
MjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjIzMCw2ICsyMjMwLDcgQEAKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9TY3JpcHRTY29wZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdFNjb3Bl
LmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdFNvdXJjZUNvZGUuY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRTb3VyY2VDb2RlLmgnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1NjcmlwdFN0YXRlLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
U2NyaXB0U3RhdGUuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250
cm9sbGVyLmgKaW5kZXggZGE2ZWY5MmRiZmM0Nzg4MGE0NmM5NWNiM2Y5OGUzNzUyYzg3ZjMyNi4u
ZDY3ODM2MDMwMTU4ZGQ4NWM0YWU0MzNmZThmYmI3NWRiZTFhMDc1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtODksOCArODksNiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCiAgICAgLy8g
RXZhbHVhdGUgYSBzY3JpcHQgZmlsZSBpbiB0aGUgZW52aXJvbm1lbnQgb2YgdGhpcyBwcm94eS4K
LSAgICAvLyBJZiBzdWNjZWVkZWQsICdzdWNjJyBpcyBzZXQgdG8gdHJ1ZSBhbmQgcmVzdWx0IGlz
IHJldHVybmVkCi0gICAgLy8gYXMgYSBzdHJpbmcuCiAgICAgU2NyaXB0VmFsdWUgZXZhbHVhdGUo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwogCiAgICAgLy8gRXZhbHVhdGUgSmF2YVNjcmlwdCBp
biBhIG5ldyBpc29sYXRlZCB3b3JsZC4gVGhlIHNjcmlwdCBnZXRzIGl0cyBvd24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFNvdXJjZUNvZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0U291cmNlQ29kZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTQ3OGU2ODE3ZDRlNmZkMGY2NTFmY2VjZjIxYTQ0OTk0ZGZmYzI3ZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFNvdXJjZUNvZGUuY3BwCkBAIC0w
LDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlNjcmlwdFNvdXJjZUNvZGUuaCIKKworI2luY2x1ZGUgIlY4QmluZGluZy5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3Y4OjpIYW5kbGU8djg6OlNjcmlwdD4gU2NyaXB0U291cmNlQ29kZTo6
Y29tcGlsZVNjcmlwdCh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGNvZGUsIGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlvbiwgdjg6OlNj
cmlwdERhdGEqIHNjcmlwdERhdGEpCit7CisgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBuYW1l
ID0gdjhTdHJpbmcoZmlsZU5hbWUpOworICAgIHY4OjpIYW5kbGU8djg6OkludGVnZXI+IGxpbmUg
PSB2OEludGVnZXIoc2NyaXB0U3RhcnRQb3NpdGlvbi5tX2xpbmUuemVyb0Jhc2VkSW50KCkpOwor
ICAgIHY4OjpIYW5kbGU8djg6OkludGVnZXI+IGNvbHVtbiA9IHY4SW50ZWdlcihzY3JpcHRTdGFy
dFBvc2l0aW9uLm1fY29sdW1uLnplcm9CYXNlZEludCgpKTsKKyAgICB2ODo6U2NyaXB0T3JpZ2lu
IG9yaWdpbihuYW1lLCBsaW5lLCBjb2x1bW4pOworICAgIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4g
c2NyaXB0ID0gdjg6OlNjcmlwdDo6Q29tcGlsZShjb2RlLCAmb3JpZ2luLCBzY3JpcHREYXRhKTsK
KyAgICByZXR1cm4gc2NyaXB0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRTb3VyY2VDb2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRTb3VyY2VDb2RlLmgKaW5kZXggMGM2OGExNTYx
OTA4NDViZTMzMDNiNDlkNDE2NDI1MjllMjMxN2MwYS4uYTY1NDNjYTgxMzYwMGYxZDhhNDU0ZWMx
NTdhZjkwMmZjNGQ3M2IwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0U291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dFNvdXJjZUNvZGUuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5o
IgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1
ZGUgPHY4Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTcyLDYgKzczLDggQEAgcHVibGljOgogICAgIGludCBzdGFydExpbmUo
KSBjb25zdCB7IHJldHVybiBtX3N0YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCk7IH0K
ICAgICBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3N0YXJ0UG9zaXRpb247IH0KIAorICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IGNv
bXBpbGVTY3JpcHQodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
VGV4dFBvc2l0aW9uJiwgdjg6OlNjcmlwdERhdGEqID0gMCk7CisKIHByaXZhdGU6CiAgICAgU3Ry
aW5nIG1fc291cmNlOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gbV9j
YWNoZWRTY3JpcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJp
bmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IDM0
MTllYjYwZjkwNmJhNDFhNDg4NDJhOGMzNjVhNTk2MmU1Y2E4ZDkuLjUwNWQxMjllZGZkMjRhYzE4
OWZjZjNhNjA0ZmUwZmIzNmQxNDM1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Qmlu
ZGluZy5oCkBAIC0yODIsMTMgKzI4Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4odmFsdWUtPkludGVnZXJWYWx1ZSgpKTsKICAg
ICB9CiAKLSAgICAvLyBUaGUgc3RyaW5nIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gaXMgc3Rp
bGwgb3duZWQgYnkgdGhlIGFyZ3VtZW50Ci0gICAgLy8gYW5kIHdpbGwgYmUgZGVhbGxvY2F0ZWQg
d2hlbiB0aGUgYXJndW1lbnQgaXMgZGVhbGxvY2F0ZWQuCi0gICAgaW5saW5lIGNvbnN0IHVpbnQx
Nl90KiBmcm9tV2ViQ29yZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cikKLSAgICB7Ci0gICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc3RyLmNoYXJhY3RlcnMo
KSk7Ci0gICAgfQotCiAgICAgaW5saW5lIGJvb2wgaXNVbmRlZmluZWRPck51bGwodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHZhbHVlLT5Jc051bGwo
KSB8fCB2YWx1ZS0+SXNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggZjEwNzE0NjY5MThkYWRmZTFmNzg2
ZGFlNDZiNzAwZjIwZTI1MDBlZC4uOTFmNzgyODg4M2YwMDU4Yjc3MzdhNTEzOGQyMWU0ZDY0ODMw
ZWY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRM
aXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRM
aXN0ZW5lci5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFY4TGF6eUV2ZW50TGlzdGVuZXI6
OnByZXBhcmVMaXN0ZW5lck9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ICAgIGNvZGUuYXBwZW5kKCJcbn07fX19fSkiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+
IGNvZGVFeHRlcm5hbFN0cmluZyA9IHY4RXh0ZXJuYWxTdHJpbmcoY29kZSk7CiAKLSAgICB2ODo6
SGFuZGxlPHY4OjpTY3JpcHQ+IHNjcmlwdCA9IFY4UHJveHk6OmNvbXBpbGVTY3JpcHQoY29kZUV4
dGVybmFsU3RyaW5nLCBtX3NvdXJjZVVSTCwgbV9wb3NpdGlvbik7CisgICAgdjg6OkhhbmRsZTx2
ODo6U2NyaXB0PiBzY3JpcHQgPSBTY3JpcHRTb3VyY2VDb2RlOjpjb21waWxlU2NyaXB0KGNvZGVF
eHRlcm5hbFN0cmluZywgbV9zb3VyY2VVUkwsIG1fcG9zaXRpb24pOwogICAgIGlmIChzY3JpcHQu
SXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFY4
TGF6eUV2ZW50TGlzdGVuZXI6OnByZXBhcmVMaXN0ZW5lck9iamVjdChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQogICAgICAgICB3cmFwcGVkRnVuY3Rpb24tPlNldCh2ODo6U3RyaW5n
OjpOZXdTeW1ib2woInRvU3RyaW5nIiksIHRvU3RyaW5nRnVuY3Rpb24pOwogICAgIH0KIAotICAg
IHdyYXBwZWRGdW5jdGlvbi0+U2V0TmFtZSh2ODo6U3RyaW5nOjpOZXcoZnJvbVdlYkNvcmVTdHJp
bmcobV9mdW5jdGlvbk5hbWUpLCBtX2Z1bmN0aW9uTmFtZS5sZW5ndGgoKSkpOworICAgIHdyYXBw
ZWRGdW5jdGlvbi0+U2V0TmFtZSh2OFN0cmluZyhtX2Z1bmN0aW9uTmFtZSkpOwogCiAgICAgLy8g
RklYTUU6IFJlbW92ZSB0aGUgZm9sbG93aW5nIGNvbW1lbnQtb3V0cy4KICAgICAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1MTUyIGZvciBtb3JlIGRldGFp
bHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCmluZGV4IGVhYmUwMmE0ZjM2
ZTk4YzAxNTY5MmI4MWQxMGMzZTk1ZTc4YTg5ZDQuLmZjNzExZjZhYzA3OWRhMGE0ZmY5Njg4Yzhm
YWQ4NDAwYWFjMDcxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCkBA
IC0xMjEsMTcgKzEyMSw2IEBAIFY4UHJveHk6On5WOFByb3h5KCkKICAgICB3aW5kb3dTaGVsbCgp
LT5kZXN0cm95R2xvYmFsKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlNjcmlwdD4gVjhQcm94eTo6
Y29tcGlsZVNjcmlwdCh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGNvZGUsIGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlvbiwgdjg6OlNj
cmlwdERhdGEqIHNjcmlwdERhdGEpCi17Ci0gICAgY29uc3QgdWludDE2X3QqIGZpbGVOYW1lU3Ry
aW5nID0gZnJvbVdlYkNvcmVTdHJpbmcoZmlsZU5hbWUpOwotICAgIHY4OjpIYW5kbGU8djg6OlN0
cmluZz4gbmFtZSA9IHY4OjpTdHJpbmc6Ok5ldyhmaWxlTmFtZVN0cmluZywgZmlsZU5hbWUubGVu
Z3RoKCkpOwotICAgIHY4OjpIYW5kbGU8djg6OkludGVnZXI+IGxpbmUgPSB2OEludGVnZXIoc2Ny
aXB0U3RhcnRQb3NpdGlvbi5tX2xpbmUuemVyb0Jhc2VkSW50KCkpOwotICAgIHY4OjpIYW5kbGU8
djg6OkludGVnZXI+IGNvbHVtbiA9IHY4SW50ZWdlcihzY3JpcHRTdGFydFBvc2l0aW9uLm1fY29s
dW1uLnplcm9CYXNlZEludCgpKTsKLSAgICB2ODo6U2NyaXB0T3JpZ2luIG9yaWdpbihuYW1lLCBs
aW5lLCBjb2x1bW4pOwotICAgIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gc2NyaXB0ID0gdjg6OlNj
cmlwdDo6Q29tcGlsZShjb2RlLCAmb3JpZ2luLCBzY3JpcHREYXRhKTsKLSAgICByZXR1cm4gc2Ny
aXB0OwotfQotCiBib29sIFY4UHJveHk6OmhhbmRsZU91dE9mTWVtb3J5KCkKIHsKICAgICB2ODo6
TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOwpA
QCAtMjA1LDcgKzE5NCw3IEBAIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4UHJveHk6OmV2YWx1YXRl
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZSwgTm9kZSogbm9kCiAKICAgICAgICAgLy8g
Tk9URTogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXZWJDb3JlLCBTY3JpcHRTb3VyY2VDb2RlJ3Mg
bGluZSBzdGFydHMgYXQKICAgICAgICAgLy8gMSwgd2hlcmVhcyB2OCBzdGFydHMgYXQgMC4KLSAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6U2NyaXB0PiBzY3JpcHQgPSBjb21waWxlU2NyaXB0KGNvZGUs
IHNvdXJjZS51cmwoKSwgc291cmNlLnN0YXJ0UG9zaXRpb24oKSwgc2NyaXB0RGF0YS5nZXQoKSk7
CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gc2NyaXB0ID0gU2NyaXB0U291cmNlQ29k
ZTo6Y29tcGlsZVNjcmlwdChjb2RlLCBzb3VyY2UudXJsKCksIHNvdXJjZS5zdGFydFBvc2l0aW9u
KCksIHNjcmlwdERhdGEuZ2V0KCkpOwogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgICAgICBU
UkFDRV9FVkVOVF9FTkQwKCJ2OCIsICJ2OC5jb21waWxlIik7CiAgICAgICAgIFRSQUNFX0VWRU5U
MCgidjgiLCAidjgucnVuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKaW5kZXgg
YWZiMDQwMzdkY2Y4YzFkYzgwMmJmMTcxNWRjZmM5ZWYwZTQ2NTA0NS4uYmY1ZjlkOGUxNjk2YzUz
YWE4OGNhNzI3NjliY2M2NDM1MzM1MWFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJv
eHkuaApAQCAtOTcsOSArOTcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFJ1
biBhbiBhbHJlYWR5IGNvbXBpbGVkIHNjcmlwdC4KICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gcnVuU2NyaXB0KHY4OjpIYW5kbGU8djg6OlNjcmlwdD4pOwogCi0gICAgICAgIC8vIENhbGwg
dGhlIGZ1bmN0aW9uIGFzIGNvbnN0cnVjdG9yIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4KLSAg
ICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb24+LCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSk7Ci0KICAgICAg
ICAgLy8gUmV0dXJucyBWOCBDb250ZXh0IG9mIGEgZnJhbWUuIElmIG5vbmUgZXhpc3RzLCBjcmVh
dGVzCiAgICAgICAgIC8vIGEgbmV3IGNvbnRleHQuIEl0IGlzIHBvdGVudGlhbGx5IHNsb3cgYW5k
IGNvbnN1bWVzIG1lbW9yeS4KICAgICAgICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4g
Y29udGV4dChGcmFtZSopOwpAQCAtMTA4LDggKzEwNSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgLy8gaXMgZGlzYWJsZWQgYW5kIGl0IHJldHVybnMgdHJ1ZS4KICAgICAgICAgc3Rh
dGljIGJvb2wgaGFuZGxlT3V0T2ZNZW1vcnkoKTsKIAotICAgICAgICBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6U2NyaXB0PiBjb21waWxlU2NyaXB0KHY4OjpIYW5kbGU8djg6OlN0cmluZz4gY29kZSwg
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBv
c2l0aW9uLCB2ODo6U2NyaXB0RGF0YSogPSAwKTsKLQogICAgICAgICB2ODo6TG9jYWw8djg6OkNv
bnRleHQ+IGNvbnRleHQoKTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBpc29sYXRl
ZFdvcmxkQ29udGV4dChpbnQgd29ybGRJZCk7CiAgICAgICAgIGJvb2wgbWF0Y2hlc0N1cnJlbnRD
b250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJD
b250ZXh0RXhlY3V0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29y
a2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAppbmRleCBlMDMyNTVmODI4NzZmZDliZDE5Mzlm
MTMzODM1YmY5NGM4MWM4ZTQwLi5lMDgzMWQxZjE0ZTg1M2E1NDNmMmMyZDhiNjQ2NDFlYmFlYWY5
MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0
RXhlY3V0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtl
ckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJT
Y3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkV29ya2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlY4QmluZGluZy5oIgpAQCAtNDYsNyArNDcsNiBAQAogI2luY2x1ZGUgIlY4RGVkaWNh
dGVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4T2JqZWN0Q29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJWOFBlckNvbnRleHREYXRhLmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1
ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlICJWOFNoYXJlZFdvcmtlckNvbnRleHQu
aCIKICNpbmNsdWRlICJXb3JrZXIuaCIKQEAgLTIxMyw3ICsyMTMsNyBAQCBTY3JpcHRWYWx1ZSBX
b3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBjb25zdCBTdAogICAgIHY4OjpUcnlDYXRjaCBleGNlcHRpb25DYXRjaGVyOwogCiAgICAgdjg6
OkxvY2FsPHY4OjpTdHJpbmc+IHNjcmlwdFN0cmluZyA9IHY4RXh0ZXJuYWxTdHJpbmcoc2NyaXB0
KTsKLSAgICB2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IGNvbXBpbGVkU2NyaXB0ID0gVjhQcm94eTo6
Y29tcGlsZVNjcmlwdChzY3JpcHRTdHJpbmcsIGZpbGVOYW1lLCBzY3JpcHRTdGFydFBvc2l0aW9u
KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IGNvbXBpbGVkU2NyaXB0ID0gU2NyaXB0U291
cmNlQ29kZTo6Y29tcGlsZVNjcmlwdChzY3JpcHRTdHJpbmcsIGZpbGVOYW1lLCBzY3JpcHRTdGFy
dFBvc2l0aW9uKTsKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXN1bHQgPSBydW5TY3JpcHQo
Y29tcGlsZWRTY3JpcHQpOwogCiAgICAgaWYgKCFleGNlcHRpb25DYXRjaGVyLkNhbkNvbnRpbnVl
KCkpIHsKQEAgLTI1MCw3ICsyNTAsNyBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBXb3JrZXJDb250
ZXh0RXhlY3V0aW9uUHJveHk6OnJ1blNjcmlwdCh2ODo6SGFuZGxlPHY4OjpTY3JpcAogICAgIC8v
IENvbXB1dGUgdGhlIHNvdXJjZSBzdHJpbmcgYW5kIHByZXZlbnQgYWdhaW5zdCBpbmZpbml0ZSBy
ZWN1cnNpb24uCiAgICAgaWYgKFY4UmVjdXJzaW9uU2NvcGU6OnJlY3Vyc2lvbkxldmVsKCkgPj0g
a01heFJlY3Vyc2lvbkRlcHRoKSB7CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBjb2Rl
ID0gdjhFeHRlcm5hbFN0cmluZygidGhyb3cgUmFuZ2VFcnJvcignUmVjdXJzaW9uIHRvbyBkZWVw
JykiKTsKLSAgICAgICAgc2NyaXB0ID0gVjhQcm94eTo6Y29tcGlsZVNjcmlwdChjb2RlLCAiIiwg
VGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSk7CisgICAgICAgIHNjcmlwdCA9IFNjcmlw
dFNvdXJjZUNvZGU6OmNvbXBpbGVTY3JpcHQoY29kZSwgIiIsIFRleHRQb3NpdGlvbjo6bWluaW11
bVBvc2l0aW9uKCkpOwogICAgIH0KIAogICAgIGlmIChWOFByb3h5OjpoYW5kbGVPdXRPZk1lbW9y
eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5q
ZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKaW5kZXggNGRkMTgxYjg4YmZlZTk5
YjhlMTI1NzljZGZlNjYyNTRjNTNmNmViNi4uMTkxOTFjMDkyMzBjZmM2ZDM0NmJlZGVlYTJmMzAx
YzJkNTU2ZDQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC0yNTMsNyAr
MjUzLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRF
dmVudExpc3RlbmVyc0NhbGxiYWNrKGNvbnN0IHY4OjoKICAgICAgICAgaWYgKCFsaXN0ZW5lcnMt
Pkxlbmd0aCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEF0b21pY1N0cmluZyBl
dmVudFR5cGUgPSBsaXN0ZW5lcnNBcnJheVtpXS5ldmVudFR5cGU7Ci0gICAgICAgIHJlc3VsdC0+
U2V0KHY4OjpTdHJpbmc6Ok5ldyhmcm9tV2ViQ29yZVN0cmluZyhldmVudFR5cGUpLCBldmVudFR5
cGUubGVuZ3RoKCkpLCBsaXN0ZW5lcnMpOworICAgICAgICByZXN1bHQtPlNldCh2OFN0cmluZyhl
dmVudFR5cGUpLCBsaXN0ZW5lcnMpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2
ZW50Q3VzdG9tLmNwcAppbmRleCAyYzAyMDlhNDYwMWU5NjcyODUyZjlkMjVjZmMzMTdiYWQwNjVi
ZjkwLi45MjJhYmIxNTMzNTMyNDAyZjMyMzUzNDc1MTg2OGJmNTFmZWZkNTY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVu
dEN1c3RvbS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVz
c2FnZUV2ZW50OjpkYXRhQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KIAog
ICAgIGNhc2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZVN0cmluZzogewogICAgICAgICBTdHJpbmcg
c3RyaW5nVmFsdWUgPSBldmVudC0+ZGF0YUFzU3RyaW5nKCk7Ci0gICAgICAgIHJlc3VsdCA9IHY4
OjpTdHJpbmc6Ok5ldyhmcm9tV2ViQ29yZVN0cmluZyhzdHJpbmdWYWx1ZSksIHN0cmluZ1ZhbHVl
Lmxlbmd0aCgpKTsKKyAgICAgICAgcmVzdWx0ID0gdjhTdHJpbmcoc3RyaW5nVmFsdWUpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
CmluZGV4IDM5MDRiYTE2YTM0MjBmZThhZjdmMzBkMmY0NDE5MzFkOGNkMmE3Y2EuLjcwZDc4MGQz
OTczMTQ5NmFjMjUwMmE1YjYyM2M0NWY2ODY2NWUxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOE9iamVjdChjb25zdCBXZWJHTEdldEluZm8mIGluZm8sIHY4OjpJc29sYXRl
KiBpCiAgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlTnVsbDoKICAgICAgICAgcmV0dXJuIHY4
OjpOdWxsKGlzb2xhdGUpOwogICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVN0cmluZzoKLSAg
ICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ldyhmcm9tV2ViQ29yZVN0cmluZyhpbmZvLmdldFN0
cmluZygpKSwgaW5mby5nZXRTdHJpbmcoKS5sZW5ndGgoKSk7CisgICAgICAgIHJldHVybiB2OFN0
cmluZyhpbmZvLmdldFN0cmluZygpKTsKICAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVVbnNp
Z25lZEludDoKICAgICAgICAgcmV0dXJuIHY4VW5zaWduZWRJbnRlZ2VyKGluZm8uZ2V0VW5zaWdu
ZWRJbnQoKSwgaXNvbGF0ZSk7CiAgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xCdWZm
ZXI6CkBAIC0zOTcsNyArMzk3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zQ2FsbGJhY2soY28KICAgICBWZWN0
b3I8U3RyaW5nPiB2YWx1ZSA9IGltcC0+Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpOwogICAgIHY4
OjpMb2NhbDx2ODo6QXJyYXk+IGFycmF5ID0gdjg6OkFycmF5OjpOZXcodmFsdWUuc2l6ZSgpKTsK
ICAgICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgdmFsdWUuc2l6ZSgpOyArK2lpKQotICAgICAg
ICBhcnJheS0+U2V0KHY4SW50ZWdlcihpaSwgYXJncy5HZXRJc29sYXRlKCkpLCB2ODo6U3RyaW5n
OjpOZXcoZnJvbVdlYkNvcmVTdHJpbmcodmFsdWVbaWldKSwgdmFsdWVbaWldLmxlbmd0aCgpKSk7
CisgICAgICAgIGFycmF5LT5TZXQodjhJbnRlZ2VyKGlpLCBhcmdzLkdldElzb2xhdGUoKSksIHY4
U3RyaW5nKHZhbHVlW2lpXSkpOwogICAgIHJldHVybiBhcnJheTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159686</attachid>
            <date>2012-08-21 07:31:11 -0700</date>
            <delta_ts>2012-08-21 16:51:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94561-20120821233110.patch</filename>
            <type>text/plain</type>
            <size>16892</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDY2M2E0NmQzYzdmYWQy
NDM5MDE2YzVmY2EzYWY4Yjc0NzdkYmZhYS4uNTkzMGIxMjRkOWUwMjUwNDFjN2U1YmNjYzdkN2M5
M2QwNmU4YzU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA4LTIxICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIE1vdmUgY29t
cGlsZVNjcmlwdCgpIGZyb20gVjhQcm94eSB0byBTY3JpcHRTb3VyY2VDb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDU2MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIGtpbGwgVjhQcm94eSwgdGhp
cyBwYXRjaCBtb3ZlcyBjb21waWxlU2NyaXB0KCkgZnJvbSBWOFByb3h5CisgICAgICAgIHRvIFNj
cmlwdFNvdXJjZUNvZGUuIFRoaXMgcGF0Y2ggYWxzbyByZW1vdmVzIGZyb21XZWJDb3JlU3RyaW5n
KCkuCisKKyAgICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAg
ICAqIFVzZVY4LmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChTY3JpcHRDb250cm9sbGVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRTb3VyY2VDb2RlLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGU6OmNvbXBp
bGVTY3JpcHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFNvdXJjZUNvZGUuaDoKKyAg
ICAgICAgKFNjcmlwdFNvdXJjZUNvZGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4UHJveHk6OmV2YWx1YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5Lmg6Cisg
ICAgICAgIChWOFByb3h5KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dEV4ZWN1dGlv
blByb3h5OjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RXhlY3V0
aW9uUHJveHk6OnJ1blNjcmlwdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5q
ZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRT
Y3JpcHRIb3N0OjpnZXRFdmVudExpc3RlbmVyc0NhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhNZXNzYWdlRXZlbnQ6OmRhdGFBY2Nlc3NvckdldHRlcik6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvVjhPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnNDYWxsYmFjayk6CisKIDIwMTItMDgtMjEgIEls
eWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IE5NSTogcmVuYW1lIGFkZE1lbWJlciBmb3Igc3RyaW5ncyBhbmQgS1VSTCB0byBhZGRJ
bnN0cnVtZW50ZWRNZW1iZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCmluZGV4IGMzYWUxNjYxNDAzMWQ1NTdlMDU4
ZjhmNGY3MTgyYzQ2Yzc0NWZhODYuLjNkZWYyNTZlOTZhY2E2ODJhOGNiZTc3OTU2NTkzNzA2Zjg4
MmRjMzAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1VzZVY4LmNtYWtlCkBAIC00MCw2ICs0MCw3IEBAIExJU1QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgIGJpbmRpbmdzL3Y4L1NjcmlwdEluc3RhbmNlLmNwcAogICAgIGJpbmRp
bmdzL3Y4L1NjcmlwdE9iamVjdC5jcHAKICAgICBiaW5kaW5ncy92OC9TY3JpcHRTY29wZS5jcHAK
KyAgICBiaW5kaW5ncy92OC9TY3JpcHRTb3VyY2VDb2RlLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Nj
cmlwdFN0YXRlLmNwcAogICAgIGJpbmRpbmdzL3Y4L1NjcmlwdFZhbHVlLmNwcAogICAgIGJpbmRp
bmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA0NmFj
NDQwZWNmNjM1YjFlNTNmZjkwNzg2ODgwMDQ2NjQwOWU0NDU4Li44NThhOWMzOTc3MmQ3NDM0ZmY4
MTk0NjI1Y2U0M2Q3YjM5ZjI2YjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMjMwLDYgKzIyMzAs
NyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdFNjb3BlLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvU2NyaXB0U2NvcGUuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0U291
cmNlQ29kZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdFNvdXJjZUNvZGUu
aCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0U3RhdGUuY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCBkYTZlZjkyZGJmYzQ3ODgwYTQ2Yzk1Y2Iz
Zjk4ZTM3NTJjODdmMzI2Li5kNjc4MzYwMzAxNThkZDg1YzRhZTQzM2ZlOGZiYjc1ZGJlMWEwNzU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCkBA
IC04OSw4ICs4OSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFk
aW5nKCk7CiAKICAgICAvLyBFdmFsdWF0ZSBhIHNjcmlwdCBmaWxlIGluIHRoZSBlbnZpcm9ubWVu
dCBvZiB0aGlzIHByb3h5LgotICAgIC8vIElmIHN1Y2NlZWRlZCwgJ3N1Y2MnIGlzIHNldCB0byB0
cnVlIGFuZCByZXN1bHQgaXMgcmV0dXJuZWQKLSAgICAvLyBhcyBhIHN0cmluZy4KICAgICBTY3Jp
cHRWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CiAKICAgICAvLyBFdmFs
dWF0ZSBKYXZhU2NyaXB0IGluIGEgbmV3IGlzb2xhdGVkIHdvcmxkLiBUaGUgc2NyaXB0IGdldHMg
aXRzIG93bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0U291
cmNlQ29kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRTb3VyY2VDb2Rl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hNDc4ZTY4MTdkNGU2ZmQwZjY1MWZjZWNmMjFhNDQ5OTRkZmZjMjdl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0U291
cmNlQ29kZS5jcHAKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgorCisjaW5jbHVkZSAiVjhCaW5k
aW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordjg6OkhhbmRsZTx2ODo6U2NyaXB0PiBT
Y3JpcHRTb3VyY2VDb2RlOjpjb21waWxlU2NyaXB0KHY4OjpIYW5kbGU8djg6OlN0cmluZz4gY29k
ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFy
dFBvc2l0aW9uLCB2ODo6U2NyaXB0RGF0YSogc2NyaXB0RGF0YSkKK3sKKyAgICB2ODo6SGFuZGxl
PHY4OjpTdHJpbmc+IG5hbWUgPSB2OFN0cmluZyhmaWxlTmFtZSk7CisgICAgdjg6OkhhbmRsZTx2
ODo6SW50ZWdlcj4gbGluZSA9IHY4SW50ZWdlcihzY3JpcHRTdGFydFBvc2l0aW9uLm1fbGluZS56
ZXJvQmFzZWRJbnQoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6SW50ZWdlcj4gY29sdW1uID0gdjhJ
bnRlZ2VyKHNjcmlwdFN0YXJ0UG9zaXRpb24ubV9jb2x1bW4uemVyb0Jhc2VkSW50KCkpOworICAg
IHY4OjpTY3JpcHRPcmlnaW4gb3JpZ2luKG5hbWUsIGxpbmUsIGNvbHVtbik7CisgICAgdjg6Okhh
bmRsZTx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2NyaXB0OjpDb21waWxlKGNvZGUsICZvcmln
aW4sIHNjcmlwdERhdGEpOworICAgIHJldHVybiBzY3JpcHQ7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFNv
dXJjZUNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFNvdXJjZUNvZGUu
aAppbmRleCAwYzY4YTE1NjE5MDg0NWJlMzMwM2I0OWQ0MTY0MjUyOWUyMzE3YzBhLi5hNjU0M2Nh
ODEzNjAwZjFkOGE0NTRlYzE1N2FmOTAyZmM0ZDczYjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRTb3VyY2VDb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0U291cmNlQ29kZS5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCisjaW5jbHVkZSA8djguaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRp
b24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzIsNiArNzMsOCBAQCBwdWJsaWM6CiAg
ICAgaW50IHN0YXJ0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRQb3NpdGlvbi5tX2xpbmUu
b25lQmFzZWRJbnQoKTsgfQogICAgIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRQb3NpdGlvbjsgfQogCisgICAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlNjcmlwdD4gY29tcGlsZVNjcmlwdCh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+LCBjb25z
dCBTdHJpbmcmLCBjb25zdCBUZXh0UG9zaXRpb24mLCB2ODo6U2NyaXB0RGF0YSogPSAwKTsKKwog
cHJpdmF0ZToKICAgICBTdHJpbmcgbV9zb3VyY2U7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkU2NyaXB0PiBtX2NhY2hlZFNjcmlwdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nLmgKaW5kZXggYTc5Y2RiMTYwNzQ4M2NjMjY1YzlhMGE5MGVhOWU4MWUxYzcxMGQxZC4u
MmU4ZmQ1MGI4NjFjMmU4NTUzZjMzODg3MTEyOGE5MmE4OWM2MDUxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTI3NSwxMyArMjc1LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPih2YWx1ZS0+SW50
ZWdlclZhbHVlKCkpOwogICAgIH0KIAotICAgIC8vIFRoZSBzdHJpbmcgcmV0dXJuZWQgYnkgdGhp
cyBmdW5jdGlvbiBpcyBzdGlsbCBvd25lZCBieSB0aGUgYXJndW1lbnQKLSAgICAvLyBhbmQgd2ls
bCBiZSBkZWFsbG9jYXRlZCB3aGVuIHRoZSBhcmd1bWVudCBpcyBkZWFsbG9jYXRlZC4KLSAgICBp
bmxpbmUgY29uc3QgdWludDE2X3QqIGZyb21XZWJDb3JlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3Qq
PihzdHIuY2hhcmFjdGVycygpKTsKLSAgICB9Ci0KICAgICBpbmxpbmUgYm9vbCBpc1VuZGVmaW5l
ZE9yTnVsbCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCiAgICAgewogICAgICAgICByZXR1
cm4gdmFsdWUtPklzTnVsbCgpIHx8IHZhbHVlLT5Jc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcAppbmRleCBmMTA3
MTQ2NjkxOGRhZGZlMWY3ODZkYWU0NmI3MDBmMjBlMjUwMGVkLi45MWY3ODI4ODgzZjAwNThiNzcz
N2E1MTM4ZDIxZTRkNjQ4MzBlZjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgVjhM
YXp5RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCiAgICAgY29kZS5hcHBlbmQoIlxufTt9fX19KSIpOwogICAgIHY4OjpI
YW5kbGU8djg6OlN0cmluZz4gY29kZUV4dGVybmFsU3RyaW5nID0gdjhFeHRlcm5hbFN0cmluZyhj
b2RlKTsKIAotICAgIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gc2NyaXB0ID0gVjhQcm94eTo6Y29t
cGlsZVNjcmlwdChjb2RlRXh0ZXJuYWxTdHJpbmcsIG1fc291cmNlVVJMLCBtX3Bvc2l0aW9uKTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IHNjcmlwdCA9IFNjcmlwdFNvdXJjZUNvZGU6OmNv
bXBpbGVTY3JpcHQoY29kZUV4dGVybmFsU3RyaW5nLCBtX3NvdXJjZVVSTCwgbV9wb3NpdGlvbik7
CiAgICAgaWYgKHNjcmlwdC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjMxLDcg
KzIzMSw3IEBAIHZvaWQgVjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgICAgIHdyYXBwZWRGdW5jdGlv
bi0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgidG9TdHJpbmciKSwgdG9TdHJpbmdGdW5jdGlv
bik7CiAgICAgfQogCi0gICAgd3JhcHBlZEZ1bmN0aW9uLT5TZXROYW1lKHY4OjpTdHJpbmc6Ok5l
dyhmcm9tV2ViQ29yZVN0cmluZyhtX2Z1bmN0aW9uTmFtZSksIG1fZnVuY3Rpb25OYW1lLmxlbmd0
aCgpKSk7CisgICAgd3JhcHBlZEZ1bmN0aW9uLT5TZXROYW1lKHY4U3RyaW5nKG1fZnVuY3Rpb25O
YW1lKSk7CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBmb2xsb3dpbmcgY29tbWVudC1vdXRz
LgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUx
NTIgZm9yIG1vcmUgZGV0YWlscy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAK
aW5kZXggYjFhMGZhMGE0MDAwZTU0YmE0NWFiZDBiYzJiOTRlN2Q3YzNmNjRiNC4uYjkxMjljMzU1
ODJjMGMzYzlhMzkzNGRlM2NiZDcyOGE0Mzg3ZDU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhQcm94eS5jcHAKQEAgLTEyMSwxNyArMTIxLDYgQEAgVjhQcm94eTo6flY4UHJveHkoKQog
ICAgIHdpbmRvd1NoZWxsKCktPmRlc3Ryb3lHbG9iYWwoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6
U2NyaXB0PiBWOFByb3h5Ojpjb21waWxlU2NyaXB0KHY4OjpIYW5kbGU8djg6OlN0cmluZz4gY29k
ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFy
dFBvc2l0aW9uLCB2ODo6U2NyaXB0RGF0YSogc2NyaXB0RGF0YSkKLXsKLSAgICBjb25zdCB1aW50
MTZfdCogZmlsZU5hbWVTdHJpbmcgPSBmcm9tV2ViQ29yZVN0cmluZyhmaWxlTmFtZSk7Ci0gICAg
djg6OkhhbmRsZTx2ODo6U3RyaW5nPiBuYW1lID0gdjg6OlN0cmluZzo6TmV3KGZpbGVOYW1lU3Ry
aW5nLCBmaWxlTmFtZS5sZW5ndGgoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6SW50ZWdlcj4gbGlu
ZSA9IHY4SW50ZWdlcihzY3JpcHRTdGFydFBvc2l0aW9uLm1fbGluZS56ZXJvQmFzZWRJbnQoKSk7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6SW50ZWdlcj4gY29sdW1uID0gdjhJbnRlZ2VyKHNjcmlwdFN0
YXJ0UG9zaXRpb24ubV9jb2x1bW4uemVyb0Jhc2VkSW50KCkpOwotICAgIHY4OjpTY3JpcHRPcmln
aW4gb3JpZ2luKG5hbWUsIGxpbmUsIGNvbHVtbik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6U2NyaXB0
PiBzY3JpcHQgPSB2ODo6U2NyaXB0OjpDb21waWxlKGNvZGUsICZvcmlnaW4sIHNjcmlwdERhdGEp
OwotICAgIHJldHVybiBzY3JpcHQ7Ci19Ci0KIFBhc3NPd25QdHI8djg6OlNjcmlwdERhdGE+IFY4
UHJveHk6OnByZWNvbXBpbGVTY3JpcHQodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBjb2RlLCBDYWNo
ZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCkKIHsKICAgICAvLyBBIHBzZXVkby1yYW5kb21seSBjaG9z
ZW4gSUQgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgVjggU2NyaXB0RGF0YSBmcm9tCkBAIC0x
ODAsNyArMTY5LDcgQEAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhQcm94eTo6ZXZhbHVhdGUoY29u
c3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlLCBOb2RlKiBub2QKIAogICAgICAgICAvLyBOT1RF
OiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdlYkNvcmUsIFNjcmlwdFNvdXJjZUNvZGUncyBsaW5l
IHN0YXJ0cyBhdAogICAgICAgICAvLyAxLCB3aGVyZWFzIHY4IHN0YXJ0cyBhdCAwLgotICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IHNjcmlwdCA9IGNvbXBpbGVTY3JpcHQoY29kZSwgc291
cmNlLnVybCgpLCBzb3VyY2Uuc3RhcnRQb3NpdGlvbigpLCBzY3JpcHREYXRhLmdldCgpKTsKKyAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6U2NyaXB0PiBzY3JpcHQgPSBTY3JpcHRTb3VyY2VDb2RlOjpj
b21waWxlU2NyaXB0KGNvZGUsIHNvdXJjZS51cmwoKSwgc291cmNlLnN0YXJ0UG9zaXRpb24oKSwg
c2NyaXB0RGF0YS5nZXQoKSk7CiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgICAgIFRSQUNF
X0VWRU5UX0VORDAoInY4IiwgInY4LmNvbXBpbGUiKTsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJ2
OCIsICJ2OC5ydW4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAppbmRleCAxZTNk
NjdiNDY4N2VkNjAyYWViZjJiYmNiOTk3OGViZDM5ODFkY2ViLi45YWVjYjk4MDBlNWFkNDQ2MGU1
ZTg5N2JhYzAxOTIxZmI2NWNjZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5o
CkBAIC05NywxNSArOTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBSdW4g
YW4gYWxyZWFkeSBjb21waWxlZCBzY3JpcHQuCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHJ1blNjcmlwdCh2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+KTsKIAotICAgICAgICAvLyBDYWxsIHRo
ZSBmdW5jdGlvbiBhcyBjb25zdHJ1Y3RvciB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuCi0gICAg
ICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IG5ld0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uPiwgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pOwotCiAgICAgICAg
IC8vIFJldHVybnMgVjggQ29udGV4dCBvZiBhIGZyYW1lLiBJZiBub25lIGV4aXN0cywgY3JlYXRl
cwogICAgICAgICAvLyBhIG5ldyBjb250ZXh0LiBJdCBpcyBwb3RlbnRpYWxseSBzbG93IGFuZCBj
b25zdW1lcyBtZW1vcnkuCiAgICAgICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNv
bnRleHQoRnJhbWUqKTsKIAotICAgICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6U2NyaXB0PiBj
b21waWxlU2NyaXB0KHY4OjpIYW5kbGU8djg6OlN0cmluZz4gY29kZSwgY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uLCB2ODo6U2Ny
aXB0RGF0YSogPSAwKTsKLQogICAgICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQo
KTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBpc29sYXRlZFdvcmxkQ29udGV4dChp
bnQgd29ybGRJZCk7CiAgICAgICAgIGJvb2wgbWF0Y2hlc0N1cnJlbnRDb250ZXh0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1
dGlvblByb3h5LmNwcAppbmRleCAwN2EzNjc5NmIzNzY0YmFkNGM3YjBlMmIxMGIzNDBmZWUwZWIz
ZTE0Li5iMGYwNTFlOGY0M2U1MGNjOTJiN2FkOWMxMTg2YzQ2NmRlNjNiZTU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2su
aCIKKyNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2Vy
LmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgpAQCAtNDYsNyArNDcsNiBAQAogI2luY2x1ZGUgIlY4RGVkaWNhdGVkV29ya2VyQ29udGV4
dC5oIgogI2luY2x1ZGUgIlY4T2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJWOFBlckNv
bnRleHREYXRhLmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4UmVjdXJzaW9u
U2NvcGUuaCIKICNpbmNsdWRlICJWOFNoYXJlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJX
b3JrZXIuaCIKQEAgLTIxMyw3ICsyMTMsNyBAQCBTY3JpcHRWYWx1ZSBXb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHk6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBTdAogICAg
IHY4OjpUcnlDYXRjaCBleGNlcHRpb25DYXRjaGVyOwogCiAgICAgdjg6OkxvY2FsPHY4OjpTdHJp
bmc+IHNjcmlwdFN0cmluZyA9IHY4RXh0ZXJuYWxTdHJpbmcoc2NyaXB0KTsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpTY3JpcHQ+IGNvbXBpbGVkU2NyaXB0ID0gVjhQcm94eTo6Y29tcGlsZVNjcmlwdChz
Y3JpcHRTdHJpbmcsIGZpbGVOYW1lLCBzY3JpcHRTdGFydFBvc2l0aW9uKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpTY3JpcHQ+IGNvbXBpbGVkU2NyaXB0ID0gU2NyaXB0U291cmNlQ29kZTo6Y29tcGls
ZVNjcmlwdChzY3JpcHRTdHJpbmcsIGZpbGVOYW1lLCBzY3JpcHRTdGFydFBvc2l0aW9uKTsKICAg
ICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXN1bHQgPSBydW5TY3JpcHQoY29tcGlsZWRTY3JpcHQp
OwogCiAgICAgaWYgKCFleGNlcHRpb25DYXRjaGVyLkNhbkNvbnRpbnVlKCkpIHsKQEAgLTI1MCw3
ICsyNTAsNyBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJv
eHk6OnJ1blNjcmlwdCh2ODo6SGFuZGxlPHY4OjpTY3JpcAogICAgIC8vIENvbXB1dGUgdGhlIHNv
dXJjZSBzdHJpbmcgYW5kIHByZXZlbnQgYWdhaW5zdCBpbmZpbml0ZSByZWN1cnNpb24uCiAgICAg
aWYgKFY4UmVjdXJzaW9uU2NvcGU6OnJlY3Vyc2lvbkxldmVsKCkgPj0ga01heFJlY3Vyc2lvbkRl
cHRoKSB7CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBjb2RlID0gdjhFeHRlcm5hbFN0
cmluZygidGhyb3cgUmFuZ2VFcnJvcignUmVjdXJzaW9uIHRvbyBkZWVwJykiKTsKLSAgICAgICAg
c2NyaXB0ID0gVjhQcm94eTo6Y29tcGlsZVNjcmlwdChjb2RlLCAiIiwgVGV4dFBvc2l0aW9uOjpt
aW5pbXVtUG9zaXRpb24oKSk7CisgICAgICAgIHNjcmlwdCA9IFNjcmlwdFNvdXJjZUNvZGU6OmNv
bXBpbGVTY3JpcHQoY29kZSwgIiIsIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkpOwog
ICAgIH0KIAogICAgIGlmIChoYW5kbGVPdXRPZk1lbW9yeSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9z
dEN1c3RvbS5jcHAKaW5kZXggNGRkMTgxYjg4YmZlZTk5YjhlMTI1NzljZGZlNjYyNTRjNTNmNmVi
Ni4uMTkxOTFjMDkyMzBjZmM2ZDM0NmJlZGVlYTJmMzAxYzJkNTU2ZDQ2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3Rl
ZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC0yNTMsNyArMjUzLDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRFdmVudExpc3RlbmVyc0NhbGxiYWNrKGNv
bnN0IHY4OjoKICAgICAgICAgaWYgKCFsaXN0ZW5lcnMtPkxlbmd0aCgpKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIEF0b21pY1N0cmluZyBldmVudFR5cGUgPSBsaXN0ZW5lcnNBcnJh
eVtpXS5ldmVudFR5cGU7Ci0gICAgICAgIHJlc3VsdC0+U2V0KHY4OjpTdHJpbmc6Ok5ldyhmcm9t
V2ViQ29yZVN0cmluZyhldmVudFR5cGUpLCBldmVudFR5cGUubGVuZ3RoKCkpLCBsaXN0ZW5lcnMp
OworICAgICAgICByZXN1bHQtPlNldCh2OFN0cmluZyhldmVudFR5cGUpLCBsaXN0ZW5lcnMpOwog
ICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCAyYzAy
MDlhNDYwMWU5NjcyODUyZjlkMjVjZmMzMTdiYWQwNjViZjkwLi45MjJhYmIxNTMzNTMyNDAyZjMy
MzUzNDc1MTg2OGJmNTFmZWZkNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAgLTY4LDcgKzY4
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2ZW50OjpkYXRhQWNjZXNzb3JH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KIAogICAgIGNhc2UgTWVzc2FnZUV2ZW50OjpE
YXRhVHlwZVN0cmluZzogewogICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSBldmVudC0+ZGF0
YUFzU3RyaW5nKCk7Ci0gICAgICAgIHJlc3VsdCA9IHY4OjpTdHJpbmc6Ok5ldyhmcm9tV2ViQ29y
ZVN0cmluZyhzdHJpbmdWYWx1ZSksIHN0cmluZ1ZhbHVlLmxlbmd0aCgpKTsKKyAgICAgICAgcmVz
dWx0ID0gdjhTdHJpbmcoc3RyaW5nVmFsdWUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCmluZGV4IDM5MDRiYTE2YTM0MjBmZThh
ZjdmMzBkMmY0NDE5MzFkOGNkMmE3Y2EuLjcwZDc4MGQzOTczMTQ5NmFjMjUwMmE1YjYyM2M0NWY2
ODY2NWUxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtMTM0
LDcgKzEzNCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOE9iamVjdChjb25z
dCBXZWJHTEdldEluZm8mIGluZm8sIHY4OjpJc29sYXRlKiBpCiAgICAgY2FzZSBXZWJHTEdldElu
Zm86OmtUeXBlTnVsbDoKICAgICAgICAgcmV0dXJuIHY4OjpOdWxsKGlzb2xhdGUpOwogICAgIGNh
c2UgV2ViR0xHZXRJbmZvOjprVHlwZVN0cmluZzoKLSAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6
Ok5ldyhmcm9tV2ViQ29yZVN0cmluZyhpbmZvLmdldFN0cmluZygpKSwgaW5mby5nZXRTdHJpbmco
KS5sZW5ndGgoKSk7CisgICAgICAgIHJldHVybiB2OFN0cmluZyhpbmZvLmdldFN0cmluZygpKTsK
ICAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVVbnNpZ25lZEludDoKICAgICAgICAgcmV0dXJu
IHY4VW5zaWduZWRJbnRlZ2VyKGluZm8uZ2V0VW5zaWduZWRJbnQoKSwgaXNvbGF0ZSk7CiAgICAg
Y2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xCdWZmZXI6CkBAIC0zOTcsNyArMzk3LDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0
ZWRFeHRlbnNpb25zQ2FsbGJhY2soY28KICAgICBWZWN0b3I8U3RyaW5nPiB2YWx1ZSA9IGltcC0+
Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpOwogICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IGFycmF5
ID0gdjg6OkFycmF5OjpOZXcodmFsdWUuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpaSA9IDA7
IGlpIDwgdmFsdWUuc2l6ZSgpOyArK2lpKQotICAgICAgICBhcnJheS0+U2V0KHY4SW50ZWdlcihp
aSwgYXJncy5HZXRJc29sYXRlKCkpLCB2ODo6U3RyaW5nOjpOZXcoZnJvbVdlYkNvcmVTdHJpbmco
dmFsdWVbaWldKSwgdmFsdWVbaWldLmxlbmd0aCgpKSk7CisgICAgICAgIGFycmF5LT5TZXQodjhJ
bnRlZ2VyKGlpLCBhcmdzLkdldElzb2xhdGUoKSksIHY4U3RyaW5nKHZhbHVlW2lpXSkpOwogICAg
IHJldHVybiBhcnJheTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>