<?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>76996</bug_id>
          
          <creation_ts>2012-01-25 02:31:19 -0800</creation_ts>
          <short_desc>[chromium] Fix ClipboardChromium::validateFilename to actually operate on extensions</short_desc>
          <delta_ts>2012-01-25 21:02:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Cheng">dcheng</reporter>
          <assigned_to name="Daniel Cheng">dcheng</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>542114</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-01-25 02:31:19 -0800</bug_when>
    <thetext>[chromium] Fix ClipboardChromium::validateFilename to actually operate on extensions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542115</commentid>
    <comment_count>1</comment_count>
      <attachid>123905</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-01-25 02:33:59 -0800</bug_when>
    <thetext>Created attachment 123905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542119</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-01-25 02:39:32 -0800</bug_when>
    <thetext>I left the test oops for now because I&apos;m not sure what your opinion here is. Unless I&apos;m missing something very clever, this isn&apos;t currently testable with layout tests. However... we could probably write a webkit unit test for it since it&apos;s a static helper; any idea on the preferred way to handle platform differences Separate ClipboardChromiumWinTest.cpp and ClipboardChromiumMacTest.cpp?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542404</commentid>
    <comment_count>3</comment_count>
      <attachid>123905</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-01-25 10:10:41 -0800</bug_when>
    <thetext>Comment on attachment 123905
Patch

The code change looks fine.  Can you use eventSender.beginDragWithFiles to test?  I would try all file names on all platforms and check in different results for each platform.  If that doesn&apos;t work, a unittest is fine (probably with some #ifs in the cpp file).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542553</commentid>
    <comment_count>4</comment_count>
      <attachid>123994</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-01-25 13:03:45 -0800</bug_when>
    <thetext>Created attachment 123994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542555</commentid>
    <comment_count>5</comment_count>
      <attachid>123994</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-01-25 13:04:27 -0800</bug_when>
    <thetext>Comment on attachment 123994
Patch

Need to update ChangeLogs. Please ignore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542561</commentid>
    <comment_count>6</comment_count>
      <attachid>123995</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-01-25 13:12:18 -0800</bug_when>
    <thetext>Created attachment 123995
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542575</commentid>
    <comment_count>7</comment_count>
      <attachid>123995</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-01-25 13:24:55 -0800</bug_when>
    <thetext>Comment on attachment 123995
Patch

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

&gt; Source/WebCore/platform/chromium/ClipboardChromiumLinux.cpp:36
&gt; +void ClipboardChromium::validateFilename(String&amp; name, String&amp; extension)
&gt;  {
&gt;      notImplemented();

Aren&apos;t null and forward slash not allowed?

&gt; Source/WebKit/chromium/WebKit.gypi:150
&gt; +            [&apos;OS!=&quot;linux&quot;&apos;, {
&gt; +                &apos;webkit_unittest_files&apos;: [
&gt; +                    &apos;tests/ClipboardChromiumTest.cpp&apos;,

We should run this test on Linux too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542616</commentid>
    <comment_count>8</comment_count>
      <attachid>124008</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-01-25 14:18:19 -0800</bug_when>
    <thetext>Created attachment 124008
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542618</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-01-25 14:20:10 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 123995 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123995&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/ClipboardChromiumLinux.cpp:36
&gt; &gt; +void ClipboardChromium::validateFilename(String&amp; name, String&amp; extension)
&gt; &gt;  {
&gt; &gt;      notImplemented();
&gt; 
&gt; Aren&apos;t null and forward slash not allowed?

I was opting to keep the same implementation for simplicity. Examining the FS limits though, it seems easier to just share the Linux/Mac code for this.

&gt; 
&gt; &gt; Source/WebKit/chromium/WebKit.gypi:150
&gt; &gt; +            [&apos;OS!=&quot;linux&quot;&apos;, {
&gt; &gt; +                &apos;webkit_unittest_files&apos;: [
&gt; &gt; +                    &apos;tests/ClipboardChromiumTest.cpp&apos;,
&gt; 
&gt; We should run this test on Linux too.

I omitted it because we didn&apos;t have any implementation before. While I was here, I also adjusted the Win implementation to be more correct--paths are limited to MAX_PATH length with a null terminator, but individual path components are a max of 255 without null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542665</commentid>
    <comment_count>10</comment_count>
      <attachid>124008</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-01-25 15:00:57 -0800</bug_when>
    <thetext>Comment on attachment 124008
Patch

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

&gt; Source/WebCore/platform/chromium/ClipboardChromiumPosix.cpp:40
&gt; +    // HFS+ disallows &apos;/&apos; and Linux systems also disallow null. For sanity&apos;s sake we&apos;ll also
&gt; +    // disallow control characters.

Why would we disallow control characters?  What if the user is trying to drag&amp;drop a file with a control character in it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542677</commentid>
    <comment_count>11</comment_count>
      <attachid>124008</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-01-25 15:06:21 -0800</bug_when>
    <thetext>Comment on attachment 124008
Patch

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

&gt;&gt; Source/WebCore/platform/chromium/ClipboardChromiumPosix.cpp:40
&gt;&gt; +    // disallow control characters.
&gt; 
&gt; Why would we disallow control characters?  What if the user is trying to drag&amp;drop a file with a control character in it?

This is only used when dragging images out of WebKit, IIRC. I don&apos;t know why we disallow, other than whoever wrote the code originally thought it&apos;d be nice. I guess it&apos;s nice to have filenames without too many strange characters in it or causing your terminal to behave strangely after you &apos;ls&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542763</commentid>
    <comment_count>12</comment_count>
      <attachid>124008</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-01-25 16:42:04 -0800</bug_when>
    <thetext>Comment on attachment 124008
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/chromium/ClipboardChromiumPosix.cpp:40
&gt;&gt;&gt; +    // disallow control characters.
&gt;&gt; 
&gt;&gt; Why would we disallow control characters?  What if the user is trying to drag&amp;drop a file with a control character in it?
&gt; 
&gt; This is only used when dragging images out of WebKit, IIRC. I don&apos;t know why we disallow, other than whoever wrote the code originally thought it&apos;d be nice. I guess it&apos;s nice to have filenames without too many strange characters in it or causing your terminal to behave strangely after you &apos;ls&apos;

Ah, I see.  I guess that&apos;s OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542862</commentid>
    <comment_count>13</comment_count>
      <attachid>124008</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-01-25 21:02:19 -0800</bug_when>
    <thetext>Comment on attachment 124008
Patch

Clearing flags on attachment: 124008

Committed r105962: &lt;http://trac.webkit.org/changeset/105962&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542863</commentid>
    <comment_count>14</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-01-25 21:02:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123905</attachid>
            <date>2012-01-25 02:33:59 -0800</date>
            <delta_ts>2012-01-25 13:03:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76996-20120125023358.patch</filename>
            <type>text/plain</type>
            <size>8578</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDcwNTBjYmU0MDU3NTJl
ZDhkMDlhZjU4Yzg3ZGYwZDUwODViNDNjMy4uNjIyNWE0ZjZkZDE1NzE5YWQzOWVlNWFlOWViMzQ1
OWI2MDVkODE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAxLTI1ICBEYW5p
ZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRml4
IENsaXBib2FyZENocm9taXVtOjp2YWxpZGF0ZUZpbGVuYW1lIHRvIGFjdHVhbGx5IG9wZXJhdGUg
b24gZXh0ZW5zaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzY5OTYKKworICAgICAgICBBcyBpdCB0dXJucyBvdXQsIHdlIHdlcmUgYWx3YXlzIGNh
bGxpbmcgdmFsaWRhdGVGaWxlbmFtZSBvbiBhIGRhdGEgb2JqZWN0IHdpdGggYW4gZW1wdHkKKyAg
ICAgICAgZXh0ZW5zaW9uLiBOb3cgd2UgY2FsbCBpdCBvbiBhbiBhY3R1YWwgZXh0ZW5zaW9uIHNv
IHRoYXQgaXQncyBzYW5pdGl6ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0
ZUltYWdlVG9EYXRhT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9h
cmRDaHJvbWl1bS5oOgorICAgICAgICAoQ2xpcGJvYXJkQ2hyb21pdW0pOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtTGludXguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OnZhbGlkYXRlRmlsZW5hbWUpOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtTWFjLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OnZhbGlkYXRlRmlsZW5h
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENocm9taXVtOjp2YWxpZGF0ZUZpbGVuYW1l
KToKKwogMjAxMi0wMS0yNCAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQXR0ZW1wdCB0byBmaXggTWFjIGJ1aWxkIGFmdGVyIGNoYW5nZXNldCA8aHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTA1ODQzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDlhMjY4NzYw
NTdhODBkZmE0ODEyOWU4ZDA1MTQwYjMxMGRhMzgxNWQuLmYyMWQ5YzQxNDg4OTkzYTBiNWRiY2Vm
M2IwZWJhYmNmZGI1M2E2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTI1NSwxMyArMjU1LDE1IEBAIHN0
YXRpYyB2b2lkIHdyaXRlSW1hZ2VUb0RhdGFPYmplY3QoQ2hyb21pdW1EYXRhT2JqZWN0KiBkYXRh
T2JqZWN0LCBFbGVtZW50KiBlbGVtCiAgICAgICAgIGlmIChleHRlbnNpb25JbmRleCAhPSAtMSkK
ICAgICAgICAgICAgIGZpbGVuYW1lLnRydW5jYXRlKGV4dGVuc2lvbkluZGV4KTsKICAgICB9Ci0g
ICAgZmlsZW5hbWUgPSBDbGlwYm9hcmRDaHJvbWl1bTo6dmFsaWRhdGVGaWxlTmFtZShmaWxlbmFt
ZSwgZGF0YU9iamVjdCk7CiAKICAgICBTdHJpbmcgZXh0ZW5zaW9uID0gTUlNRVR5cGVSZWdpc3Ry
eTo6Z2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUoCiAgICAgICAgIGNhY2hlZEltYWdl
LT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOwotICAgIGRhdGFPYmplY3QtPnNldEZpbGVFeHRlbnNp
b24oZXh0ZW5zaW9uLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAiLiIgKyBleHRlbnNpb24p
OworICAgIGV4dGVuc2lvbiA9IGV4dGVuc2lvbi5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDog
Ii4iICsgZXh0ZW5zaW9uOwogCi0gICAgZGF0YU9iamVjdC0+c2V0RmlsZUNvbnRlbnRGaWxlbmFt
ZShmaWxlbmFtZSArIGRhdGFPYmplY3QtPmZpbGVFeHRlbnNpb24oKSk7CisgICAgQ2xpcGJvYXJk
Q2hyb21pdW06OnZhbGlkYXRlRmlsZW5hbWUoZmlsZW5hbWUsIGV4dGVuc2lvbik7CisKKyAgICBk
YXRhT2JqZWN0LT5zZXRGaWxlQ29udGVudEZpbGVuYW1lKGZpbGVuYW1lICsgZXh0ZW5zaW9uKTsK
KyAgICBkYXRhT2JqZWN0LT5zZXRGaWxlRXh0ZW5zaW9uKGV4dGVuc2lvbik7CiB9CiAKIHZvaWQg
Q2xpcGJvYXJkQ2hyb21pdW06OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShFbGVtZW50KiBlbGVt
ZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEZyYW1lKiBmcmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENo
cm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJv
bWl1bS5oCmluZGV4IDMwZTg3MzlhMjM4NzczM2RiMTdmOTQ1ODZjZjc3MDIzMzcyZTM0NWQuLjky
NDIyNmRmMzI1NjVlNjk1NzIzMDEwNjM1YmYyZTZmNGZjMDA5YTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uaApAQCAtNTEs
MTEgKzUxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q2xpcGJvYXJkQ2hyb21pdW0+IGNyZWF0ZSgKICAgICAgICAgICAgIENsaXBib2FyZFR5cGUs
IFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBG
cmFtZSopOwogCi0gICAgICAgIC8vIFJldHVybnMgdGhlIGZpbGUgbmFtZSAobm90IGluY2x1ZGlu
ZyB0aGUgZXh0ZW5zaW9uKS4gVGhpcyByZW1vdmVzIGFueQotICAgICAgICAvLyBpbnZhbGlkIGZp
bGUgc3lzdGVtIGNoYXJhY3RlcnMgYXMgd2VsbCBhcyBtYWtpbmcgc3VyZSB0aGUKLSAgICAgICAg
Ly8gcGF0aCArIGV4dGVuc2lvbiBpcyBub3QgYmlnZ2VyIHRoYW4gYWxsb3dlZCBieSB0aGUgZmls
ZSBzeXN0ZW0uCi0gICAgICAgIC8vIFRoaXMgbWF5IGNoYW5nZSB0aGUgZmlsZSBleHRlbnNpb24g
aW4gZGF0YU9iamVjdC4KLSAgICAgICAgc3RhdGljIFN0cmluZyB2YWxpZGF0ZUZpbGVOYW1lKGNv
bnN0IFN0cmluZyYgdGl0bGUsIENocm9taXVtRGF0YU9iamVjdCogZGF0YU9iamVjdCk7CisgICAg
ICAgIC8vIFZhbGlkYXRlcyBhIGZpbGVuYW1lICh3aXRob3V0IHRoZSBleHRlbnNpb24pIGFuZCB0
aGUgZXh0ZW5zaW9uLiBUaGlzIHJlbW92ZXMgYW55IGludmFsaWQKKyAgICAgICAgLy8gZmlsZSBz
eXN0ZW0gY2hhcmFjdGVycyBhcyB3ZWxsIGFzIG1ha2luZyBzdXJlIHRoZSBwYXRoICsgZXh0ZW5z
aW9uIGlzIG5vdCBiaWdnZXIgdGhhbgorICAgICAgICAvLyBhbGxvd2VkIGJ5IHRoZSBmaWxlIHN5
c3RlbS4KKyAgICAgICAgc3RhdGljIHZvaWQgdmFsaWRhdGVGaWxlbmFtZShTdHJpbmcmIG5hbWUs
IFN0cmluZyYgZXh0ZW5zaW9uKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJEYXRhKGNv
bnN0IFN0cmluZyYgdHlwZSk7CiAgICAgICAgIHZvaWQgY2xlYXJBbGxEYXRhKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bUxp
bnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9t
aXVtTGludXguY3BwCmluZGV4IDJjODlmNmU4ZWU5OTkyMDI5MTJiM2Q4ZGI5YmY1YmI3NzI1Nzdh
OTcuLjk1OWIzNjY1MmZlMzk1NjAxN2Y3ZDY0NTAxMGM1MjM4NTNjM2IzOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtTGludXgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9t
aXVtTGludXguY3BwCkBAIC0yNywxNSArMjcsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJDbGlwYm9hcmRDaHJvbWl1bS5oIgogCi0jaW5jbHVkZSAiQ2hyb21pdW1EYXRhT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1TdHJpbmcgQ2xpcGJvYXJkQ2hyb21pdW06OnZhbGlkYXRlRmlsZU5hbWUoY29uc3QgU3Ry
aW5nJiB0aXRsZSwgQ2hyb21pdW1EYXRhT2JqZWN0KiBkYXRhT2JqZWN0KQordm9pZCBDbGlwYm9h
cmRDaHJvbWl1bTo6dmFsaWRhdGVGaWxlbmFtZShTdHJpbmcmIG5hbWUsIFN0cmluZyYgZXh0ZW5z
aW9uKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHRpdGxlOwogfQogCiB9
ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW1NYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW1NYWMuY3BwCmluZGV4IDM4MDIxNDAyZWI5
MjllM2NjNmUyNTFkMjIzZjAwNzQ2NmFkZjJmMjcuLmJjZWFjZWJkYTg3MDZmMzlmNDA4ZGZkYzU3
NjQ0Y2FiMjczNjUwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0NsaXBib2FyZENocm9taXVtTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bU1hYy5jcHAKQEAgLTI3LDExICsyNyw4IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkQ2hyb21pdW0uaCIKIAotI2lu
Y2x1ZGUgIkNocm9taXVtRGF0YU9iamVjdC5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Ci0KIC8vIEZpbGVuYW1lIGxlbmd0aCBhbmQgY2hhcmFjdGVyLXNldCBsaW1pdHMgdmFyeSBieSBm
aWxlc3lzdGVtLCBhbmQgdGhlcmUncyBubwogLy8gcmVhbCB3YXkgdG8gdGVsbCB3aGF0IGZpbGVz
eXN0ZW0gaXMgaW4gdXNlLiBTaW5jZSBIRlMrIGlzIGJ5IGZhciB0aGUgbW9zdAogLy8gY29tbW9u
LCB3ZSdsbCBhYmlkZSBieSBpdHMgbGltaXRzLCB3aGljaCBhcmUgMjU1IFVuaWNvZGUgY2hhcmFj
dGVycyAoc2xpZ2h0bHkKQEAgLTM5LDcgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8g
cmVhbGx5IHdvcnRoIGRlYWxpbmcgd2l0aCBoZXJlLikKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBN
YXhIRlNGaWxlbmFtZUxlbmd0aCA9IDI1NTsKIAotCiBzdGF0aWMgYm9vbCBpc0ludmFsaWRGaWxl
Q2hhcmFjdGVyKFVDaGFyIGMpCiB7CiAgICAgLy8gSEZTKyBiYXNpY2FsbHkgYWxsb3dzIGFueXRo
aW5nIGJ1dCAnLycuIEZvciBzYW5pdHkncyBzYWtlIHdlJ2xsIGRpc2FsbG93CkBAIC00NywyMyAr
NDMsMTggQEAgc3RhdGljIGJvb2wgaXNJbnZhbGlkRmlsZUNoYXJhY3RlcihVQ2hhciBjKQogICAg
IHJldHVybiBjIDwgJyAnIHx8IGMgPT0gMHg3RiB8fCBjID09ICcvJzsKIH0KIAotU3RyaW5nIENs
aXBib2FyZENocm9taXVtOjp2YWxpZGF0ZUZpbGVOYW1lKGNvbnN0IFN0cmluZyYgdGl0bGUsIENo
cm9taXVtRGF0YU9iamVjdCogZGF0YU9iamVjdCkKK3ZvaWQgQ2xpcGJvYXJkQ2hyb21pdW06OnZh
bGlkYXRlRmlsZW5hbWUoU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAgICAv
LyBSZW1vdmUgYW55IGludmFsaWQgZmlsZSBzeXN0ZW0gY2hhcmFjdGVycywgZXNwZWNpYWxseSAi
LyIuCi0gICAgU3RyaW5nIHJlc3VsdCA9IHRpdGxlLnJlbW92ZUNoYXJhY3RlcnMoaXNJbnZhbGlk
RmlsZUNoYXJhY3Rlcik7Ci0gICAgU3RyaW5nIGV4dGVuc2lvbiA9IGRhdGFPYmplY3QtPmZpbGVF
eHRlbnNpb24oKS5yZW1vdmVDaGFyYWN0ZXJzKCZpc0ludmFsaWRGaWxlQ2hhcmFjdGVyKTsKKyAg
ICBuYW1lID0gbmFtZS5yZW1vdmVDaGFyYWN0ZXJzKCZpc0ludmFsaWRGaWxlQ2hhcmFjdGVyKTsK
KyAgICBleHRlbnNpb24gPSBleHRlbnNpb24ucmVtb3ZlQ2hhcmFjdGVycygmaXNJbnZhbGlkRmls
ZUNoYXJhY3Rlcik7CiAKICAgICAvLyBSZW1vdmUgYSByaWRpY3Vsb3VzbHktbG9uZyBleHRlbnNp
b24uCiAgICAgaWYgKGV4dGVuc2lvbi5sZW5ndGgoKSA+PSBNYXhIRlNGaWxlbmFtZUxlbmd0aCkK
LSAgICAgICAgZXh0ZW5zaW9uID0gIiI7CisgICAgICAgIGV4dGVuc2lvbiA9IFN0cmluZygpOwog
ICAgIAogICAgIC8vIFRydW5jYXRlIGFuIG92ZXJseS1sb25nIGZpbGVuYW1lLgotICAgIGludCBv
dmVyZmxvdyA9IHJlc3VsdC5sZW5ndGgoKSArIGV4dGVuc2lvbi5sZW5ndGgoKSAtIE1heEhGU0Zp
bGVuYW1lTGVuZ3RoOwotICAgIGlmIChvdmVyZmxvdyA+IDApIAotICAgICAgICByZXN1bHQucmVt
b3ZlKHJlc3VsdC5sZW5ndGgoKSAtIG92ZXJmbG93LCBvdmVyZmxvdyk7Ci0gICAgCi0gICAgZGF0
YU9iamVjdC0+c2V0RmlsZUV4dGVuc2lvbihleHRlbnNpb24pOwotICAgIHJldHVybiByZXN1bHQ7
CisgICAgbmFtZS50cnVuY2F0ZShNYXhIRlNGaWxlbmFtZUxlbmd0aCAtIGV4dGVuc2lvbi5sZW5n
dGgoKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bVdpbi5jcHAKaW5k
ZXggZDliYmViNWRkM2QzN2EyNTQ4OTE0YWFiY2VmMDNlZDlhZmMwYmNkNy4uYjhhZjY1ZDY5OTMz
NWNlOTFjMmE1YTY2Zjg1N2E1ZmM5YTRmZjk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW1XaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtV2luLmNwcApAQCAtMjcs
OCArMjcsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNsaXBib2FyZENocm9t
aXVtLmgiCiAKLSNpbmNsdWRlICJDaHJvbWl1bURhdGFPYmplY3QuaCIKLQogI2luY2x1ZGUgPHNo
bHdhcGkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsMTcgKzM4LDE2IEBAIHN0YXRp
YyBib29sIGlzSW52YWxpZEZpbGVDaGFyYWN0ZXIoVUNoYXIgYykKICAgICByZXR1cm4gKFBhdGhH
ZXRDaGFyVHlwZShjKSAmIChHQ1RfTEZOQ0hBUiB8IEdDVF9TSE9SVENIQVIpKSA9PSAwOwogfQog
Ci1TdHJpbmcgQ2xpcGJvYXJkQ2hyb21pdW06OnZhbGlkYXRlRmlsZU5hbWUoY29uc3QgU3RyaW5n
JiB0aXRsZSwgQ2hyb21pdW1EYXRhT2JqZWN0KiBkYXRhT2JqZWN0KQordm9pZCBDbGlwYm9hcmRD
aHJvbWl1bTo6dmFsaWRhdGVGaWxlbmFtZShTdHJpbmcmIG5hbWUsIFN0cmluZyYgZXh0ZW5zaW9u
KQogewogICAgIC8vIFJlbW92ZSBhbnkgaW52YWxpZCBmaWxlIHN5c3RlbSBjaGFyYWN0ZXJzLgot
ICAgIFN0cmluZyByZXN1bHQgPSB0aXRsZS5yZW1vdmVDaGFyYWN0ZXJzKCZpc0ludmFsaWRGaWxl
Q2hhcmFjdGVyKTsKLSAgICBpZiAocmVzdWx0Lmxlbmd0aCgpICsgZGF0YU9iamVjdC0+ZmlsZUV4
dGVuc2lvbigpLmxlbmd0aCgpICsgMSA+PSBNQVhfUEFUSCkgewotICAgICAgICBpZiAoZGF0YU9i
amVjdC0+ZmlsZUV4dGVuc2lvbigpLmxlbmd0aCgpICsgMSA+PSBNQVhfUEFUSCkKLSAgICAgICAg
ICAgIGRhdGFPYmplY3QtPnNldEZpbGVFeHRlbnNpb24oIiIpOwotICAgICAgICBpZiAocmVzdWx0
Lmxlbmd0aCgpICsgZGF0YU9iamVjdC0+ZmlsZUV4dGVuc2lvbigpLmxlbmd0aCgpICsgMSA+PSBN
QVhfUEFUSCkKLSAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdWJzdHJpbmcoMCwgTUFYX1BB
VEggLSBkYXRhT2JqZWN0LT5maWxlRXh0ZW5zaW9uKCkubGVuZ3RoKCkgLSAxKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICBuYW1lID0gbmFtZS5yZW1vdmVDaGFyYWN0ZXJzKCZpc0lu
dmFsaWRGaWxlQ2hhcmFjdGVyKTsKKyAgICBleHRlbnNpb24gPSBleHRlbnNpb24ucmVtb3ZlQ2hh
cmFjdGVycygmaXNJbnZhbGlkRmlsZUNoYXJhY3Rlcik7CisKKyAgICBpZiAoZXh0ZW5zaW9uLmxl
bmd0aCgpICsgMSA+PSBNQVhfUEFUSCkKKyAgICAgICAgZXh0ZW5zaW9uID0gU3RyaW5nKCk7CisK
KyAgICBuYW1lLnRydW5jYXRlKE1BWF9QQVRIIC0gZXh0ZW5zaW9uLmxlbmd0aCgpIC0gMSk7CiB9
CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123994</attachid>
            <date>2012-01-25 13:03:45 -0800</date>
            <delta_ts>2012-01-25 13:12:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76996-20120125130344.patch</filename>
            <type>text/plain</type>
            <size>13382</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzZkZTk0M2NhNTcwM2Zl
ZmJhMTcwZjdlOWYyZGMyZTM4OTc1MzAyYy4uMGZhYjRiYmY3OWZhNjQzNzg2MzM3NzE1OWJiODFj
NTgxZGM1ZTNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAxLTI1ICBEYW5p
ZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRml4
IENsaXBib2FyZENocm9taXVtOjp2YWxpZGF0ZUZpbGVuYW1lIHRvIGFjdHVhbGx5IG9wZXJhdGUg
b24gZXh0ZW5zaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzY5OTYKKworICAgICAgICBBcyBpdCB0dXJucyBvdXQsIHdlIHdlcmUgYWx3YXlzIGNh
bGxpbmcgdmFsaWRhdGVGaWxlbmFtZSBvbiBhIGRhdGEgb2JqZWN0IHdpdGggYW4gZW1wdHkKKyAg
ICAgICAgZXh0ZW5zaW9uLiBOb3cgd2UgY2FsbCBpdCBvbiBhbiBhY3R1YWwgZXh0ZW5zaW9uIHNv
IHRoYXQgaXQncyBzYW5pdGl6ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0
ZUltYWdlVG9EYXRhT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9h
cmRDaHJvbWl1bS5oOgorICAgICAgICAoQ2xpcGJvYXJkQ2hyb21pdW0pOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtTGludXguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OnZhbGlkYXRlRmlsZW5hbWUpOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtTWFjLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OnZhbGlkYXRlRmlsZW5h
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENocm9taXVtOjp2YWxpZGF0ZUZpbGVuYW1l
KToKKwogMjAxMi0wMS0yNSAgQW50b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3IG1hbnVhbCByZXZlcnQgb2YgcjEwNTg0My4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAppbmRl
eCA5YTI2ODc2MDU3YTgwZGZhNDgxMjllOGQwNTE0MGIzMTBkYTM4MTVkLi5mMjFkOWM0MTQ4ODk5
M2EwYjVkYmNlZjNiMGViYWJjZmRiNTNhNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCkBAIC0yNTUsMTMgKzI1
NSwxNSBAQCBzdGF0aWMgdm9pZCB3cml0ZUltYWdlVG9EYXRhT2JqZWN0KENocm9taXVtRGF0YU9i
amVjdCogZGF0YU9iamVjdCwgRWxlbWVudCogZWxlbQogICAgICAgICBpZiAoZXh0ZW5zaW9uSW5k
ZXggIT0gLTEpCiAgICAgICAgICAgICBmaWxlbmFtZS50cnVuY2F0ZShleHRlbnNpb25JbmRleCk7
CiAgICAgfQotICAgIGZpbGVuYW1lID0gQ2xpcGJvYXJkQ2hyb21pdW06OnZhbGlkYXRlRmlsZU5h
bWUoZmlsZW5hbWUsIGRhdGFPYmplY3QpOwogCiAgICAgU3RyaW5nIGV4dGVuc2lvbiA9IE1JTUVU
eXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKAogICAgICAgICBj
YWNoZWRJbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKLSAgICBkYXRhT2JqZWN0LT5zZXRG
aWxlRXh0ZW5zaW9uKGV4dGVuc2lvbi5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIi4iICsg
ZXh0ZW5zaW9uKTsKKyAgICBleHRlbnNpb24gPSBleHRlbnNpb24uaXNFbXB0eSgpID8gZW1wdHlT
dHJpbmcoKSA6ICIuIiArIGV4dGVuc2lvbjsKIAotICAgIGRhdGFPYmplY3QtPnNldEZpbGVDb250
ZW50RmlsZW5hbWUoZmlsZW5hbWUgKyBkYXRhT2JqZWN0LT5maWxlRXh0ZW5zaW9uKCkpOworICAg
IENsaXBib2FyZENocm9taXVtOjp2YWxpZGF0ZUZpbGVuYW1lKGZpbGVuYW1lLCBleHRlbnNpb24p
OworCisgICAgZGF0YU9iamVjdC0+c2V0RmlsZUNvbnRlbnRGaWxlbmFtZShmaWxlbmFtZSArIGV4
dGVuc2lvbik7CisgICAgZGF0YU9iamVjdC0+c2V0RmlsZUV4dGVuc2lvbihleHRlbnNpb24pOwog
fQogCiB2b2lkIENsaXBib2FyZENocm9taXVtOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRWxl
bWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGcmFt
ZSogZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9D
bGlwYm9hcmRDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xp
cGJvYXJkQ2hyb21pdW0uaAppbmRleCAzMGU4NzM5YTIzODc3MzNkYjE3Zjk0NTg2Y2Y3NzAyMzM3
MmUzNDVkLi45MjQyMjZkZjMyNTY1ZTY5NTcyMzAxMDYzNWJmMmU2ZjRmYzAwOWE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVt
LmgKQEAgLTUxLDExICs1MSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPENsaXBib2FyZENocm9taXVtPiBjcmVhdGUoCiAgICAgICAgICAgICBDbGlw
Ym9hcmRUeXBlLCBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4sIENsaXBib2FyZEFjY2Vz
c1BvbGljeSwgRnJhbWUqKTsKIAotICAgICAgICAvLyBSZXR1cm5zIHRoZSBmaWxlIG5hbWUgKG5v
dCBpbmNsdWRpbmcgdGhlIGV4dGVuc2lvbikuIFRoaXMgcmVtb3ZlcyBhbnkKLSAgICAgICAgLy8g
aW52YWxpZCBmaWxlIHN5c3RlbSBjaGFyYWN0ZXJzIGFzIHdlbGwgYXMgbWFraW5nIHN1cmUgdGhl
Ci0gICAgICAgIC8vIHBhdGggKyBleHRlbnNpb24gaXMgbm90IGJpZ2dlciB0aGFuIGFsbG93ZWQg
YnkgdGhlIGZpbGUgc3lzdGVtLgotICAgICAgICAvLyBUaGlzIG1heSBjaGFuZ2UgdGhlIGZpbGUg
ZXh0ZW5zaW9uIGluIGRhdGFPYmplY3QuCi0gICAgICAgIHN0YXRpYyBTdHJpbmcgdmFsaWRhdGVG
aWxlTmFtZShjb25zdCBTdHJpbmcmIHRpdGxlLCBDaHJvbWl1bURhdGFPYmplY3QqIGRhdGFPYmpl
Y3QpOworICAgICAgICAvLyBWYWxpZGF0ZXMgYSBmaWxlbmFtZSAod2l0aG91dCB0aGUgZXh0ZW5z
aW9uKSBhbmQgdGhlIGV4dGVuc2lvbi4gVGhpcyByZW1vdmVzIGFueSBpbnZhbGlkCisgICAgICAg
IC8vIGZpbGUgc3lzdGVtIGNoYXJhY3RlcnMgYXMgd2VsbCBhcyBtYWtpbmcgc3VyZSB0aGUgcGF0
aCArIGV4dGVuc2lvbiBpcyBub3QgYmlnZ2VyIHRoYW4KKyAgICAgICAgLy8gYWxsb3dlZCBieSB0
aGUgZmlsZSBzeXN0ZW0uCisgICAgICAgIHN0YXRpYyB2b2lkIHZhbGlkYXRlRmlsZW5hbWUoU3Ry
aW5nJiBuYW1lLCBTdHJpbmcmIGV4dGVuc2lvbik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGNs
ZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgICAgICB2b2lkIGNsZWFyQWxsRGF0YSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJk
Q2hyb21pdW1MaW51eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlw
Ym9hcmRDaHJvbWl1bUxpbnV4LmNwcAppbmRleCAyYzg5ZjZlOGVlOTk5MjAyOTEyYjNkOGRiOWJm
NWJiNzcyNTc3YTk3Li45NTliMzY2NTJmZTM5NTYwMTdmN2Q2NDUwMTBjNTIzODUzYzNiMzhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJv
bWl1bUxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlw
Ym9hcmRDaHJvbWl1bUxpbnV4LmNwcApAQCAtMjcsMTUgKzI3LDEzIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkQ2hyb21pdW0uaCIKIAotI2luY2x1ZGUgIkNocm9t
aXVtRGF0YU9iamVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotU3RyaW5nIENsaXBib2FyZENocm9taXVtOjp2YWxpZGF0ZUZpbGVOYW1l
KGNvbnN0IFN0cmluZyYgdGl0bGUsIENocm9taXVtRGF0YU9iamVjdCogZGF0YU9iamVjdCkKK3Zv
aWQgQ2xpcGJvYXJkQ2hyb21pdW06OnZhbGlkYXRlRmlsZW5hbWUoU3RyaW5nJiBuYW1lLCBTdHJp
bmcmIGV4dGVuc2lvbikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiB0aXRs
ZTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtTWFjLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtTWFjLmNwcAppbmRleCAz
ODAyMTQwMmViOTI5ZTNjYzZlMjUxZDIyM2YwMDc0NjZhZGYyZjI3Li5lN2NmOGIwY2E5ZDFjZDJi
ZjczZGM4ZmQyNzIzNjFmM2Y3NjMzMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW1NYWMuY3BwCkBAIC0yNywxMSAr
MjcsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNsaXBib2FyZENocm9taXVt
LmgiCiAKLSNpbmNsdWRlICJDaHJvbWl1bURhdGFPYmplY3QuaCIKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIAotCiAvLyBGaWxlbmFtZSBsZW5ndGggYW5kIGNoYXJhY3Rlci1zZXQgbGltaXRz
IHZhcnkgYnkgZmlsZXN5c3RlbSwgYW5kIHRoZXJlJ3Mgbm8KIC8vIHJlYWwgd2F5IHRvIHRlbGwg
d2hhdCBmaWxlc3lzdGVtIGlzIGluIHVzZS4gU2luY2UgSEZTKyBpcyBieSBmYXIgdGhlIG1vc3QK
IC8vIGNvbW1vbiwgd2UnbGwgYWJpZGUgYnkgaXRzIGxpbWl0cywgd2hpY2ggYXJlIDI1NSBVbmlj
b2RlIGNoYXJhY3RlcnMgKHNsaWdodGx5CkBAIC0zOSw3ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIC8vIHJlYWxseSB3b3J0aCBkZWFsaW5nIHdpdGggaGVyZS4pCiBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgTWF4SEZTRmlsZW5hbWVMZW5ndGggPSAyNTU7CiAKLQogc3RhdGljIGJvb2wgaXNJ
bnZhbGlkRmlsZUNoYXJhY3RlcihVQ2hhciBjKQogewogICAgIC8vIEhGUysgYmFzaWNhbGx5IGFs
bG93cyBhbnl0aGluZyBidXQgJy8nLiBGb3Igc2FuaXR5J3Mgc2FrZSB3ZSdsbCBkaXNhbGxvdwpA
QCAtNDcsMjMgKzQzLDE4IEBAIHN0YXRpYyBib29sIGlzSW52YWxpZEZpbGVDaGFyYWN0ZXIoVUNo
YXIgYykKICAgICByZXR1cm4gYyA8ICcgJyB8fCBjID09IDB4N0YgfHwgYyA9PSAnLyc7CiB9CiAK
LVN0cmluZyBDbGlwYm9hcmRDaHJvbWl1bTo6dmFsaWRhdGVGaWxlTmFtZShjb25zdCBTdHJpbmcm
IHRpdGxlLCBDaHJvbWl1bURhdGFPYmplY3QqIGRhdGFPYmplY3QpCit2b2lkIENsaXBib2FyZENo
cm9taXVtOjp2YWxpZGF0ZUZpbGVuYW1lKFN0cmluZyYgbmFtZSwgU3RyaW5nJiBleHRlbnNpb24p
CiB7CiAgICAgLy8gUmVtb3ZlIGFueSBpbnZhbGlkIGZpbGUgc3lzdGVtIGNoYXJhY3RlcnMsIGVz
cGVjaWFsbHkgIi8iLgotICAgIFN0cmluZyByZXN1bHQgPSB0aXRsZS5yZW1vdmVDaGFyYWN0ZXJz
KGlzSW52YWxpZEZpbGVDaGFyYWN0ZXIpOwotICAgIFN0cmluZyBleHRlbnNpb24gPSBkYXRhT2Jq
ZWN0LT5maWxlRXh0ZW5zaW9uKCkucmVtb3ZlQ2hhcmFjdGVycygmaXNJbnZhbGlkRmlsZUNoYXJh
Y3Rlcik7CisgICAgbmFtZSA9IG5hbWUucmVtb3ZlQ2hhcmFjdGVycygmaXNJbnZhbGlkRmlsZUNo
YXJhY3Rlcik7CisgICAgZXh0ZW5zaW9uID0gZXh0ZW5zaW9uLnJlbW92ZUNoYXJhY3RlcnMoJmlz
SW52YWxpZEZpbGVDaGFyYWN0ZXIpOwogCiAgICAgLy8gUmVtb3ZlIGEgcmlkaWN1bG91c2x5LWxv
bmcgZXh0ZW5zaW9uLgogICAgIGlmIChleHRlbnNpb24ubGVuZ3RoKCkgPj0gTWF4SEZTRmlsZW5h
bWVMZW5ndGgpCi0gICAgICAgIGV4dGVuc2lvbiA9ICIiOworICAgICAgICBleHRlbnNpb24gPSBT
dHJpbmcoKTsKICAgICAKICAgICAvLyBUcnVuY2F0ZSBhbiBvdmVybHktbG9uZyBmaWxlbmFtZS4K
LSAgICBpbnQgb3ZlcmZsb3cgPSByZXN1bHQubGVuZ3RoKCkgKyBleHRlbnNpb24ubGVuZ3RoKCkg
LSBNYXhIRlNGaWxlbmFtZUxlbmd0aDsKLSAgICBpZiAob3ZlcmZsb3cgPiAwKSAKLSAgICAgICAg
cmVzdWx0LnJlbW92ZShyZXN1bHQubGVuZ3RoKCkgLSBvdmVyZmxvdywgb3ZlcmZsb3cpOwotICAg
IAotICAgIGRhdGFPYmplY3QtPnNldEZpbGVFeHRlbnNpb24oZXh0ZW5zaW9uKTsKLSAgICByZXR1
cm4gcmVzdWx0OworICAgIG5hbWUudHJ1bmNhdGUoTWF4SEZTRmlsZW5hbWVMZW5ndGggLSBleHRl
bnNpb24ubGVuZ3RoKCkgLSAxKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVt
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9t
aXVtV2luLmNwcAppbmRleCBkOWJiZWI1ZGQzZDM3YTI1NDg5MTRhYWJjZWYwM2VkOWFmYzBiY2Q3
Li41OTJmYWUwYTUxMDBmZWUzOTI3OGI5NDdkYjgyNTNkZWNkMWM3YTMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bVdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW1X
aW4uY3BwCkBAIC0yNyw4ICsyNyw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Q2xpcGJvYXJkQ2hyb21pdW0uaCIKIAotI2luY2x1ZGUgIkNocm9taXVtRGF0YU9iamVjdC5oIgot
CiAjaW5jbHVkZSA8c2hsd2FwaS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCwxNyAr
MzgsMTcgQEAgc3RhdGljIGJvb2wgaXNJbnZhbGlkRmlsZUNoYXJhY3RlcihVQ2hhciBjKQogICAg
IHJldHVybiAoUGF0aEdldENoYXJUeXBlKGMpICYgKEdDVF9MRk5DSEFSIHwgR0NUX1NIT1JUQ0hB
UikpID09IDA7CiB9CiAKLVN0cmluZyBDbGlwYm9hcmRDaHJvbWl1bTo6dmFsaWRhdGVGaWxlTmFt
ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBDaHJvbWl1bURhdGFPYmplY3QqIGRhdGFPYmplY3QpCit2
b2lkIENsaXBib2FyZENocm9taXVtOjp2YWxpZGF0ZUZpbGVuYW1lKFN0cmluZyYgbmFtZSwgU3Ry
aW5nJiBleHRlbnNpb24pCiB7CiAgICAgLy8gUmVtb3ZlIGFueSBpbnZhbGlkIGZpbGUgc3lzdGVt
IGNoYXJhY3RlcnMuCi0gICAgU3RyaW5nIHJlc3VsdCA9IHRpdGxlLnJlbW92ZUNoYXJhY3RlcnMo
JmlzSW52YWxpZEZpbGVDaGFyYWN0ZXIpOwotICAgIGlmIChyZXN1bHQubGVuZ3RoKCkgKyBkYXRh
T2JqZWN0LT5maWxlRXh0ZW5zaW9uKCkubGVuZ3RoKCkgKyAxID49IE1BWF9QQVRIKSB7Ci0gICAg
ICAgIGlmIChkYXRhT2JqZWN0LT5maWxlRXh0ZW5zaW9uKCkubGVuZ3RoKCkgKyAxID49IE1BWF9Q
QVRIKQotICAgICAgICAgICAgZGF0YU9iamVjdC0+c2V0RmlsZUV4dGVuc2lvbigiIik7Ci0gICAg
ICAgIGlmIChyZXN1bHQubGVuZ3RoKCkgKyBkYXRhT2JqZWN0LT5maWxlRXh0ZW5zaW9uKCkubGVu
Z3RoKCkgKyAxID49IE1BWF9QQVRIKQotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnN1YnN0
cmluZygwLCBNQVhfUEFUSCAtIGRhdGFPYmplY3QtPmZpbGVFeHRlbnNpb24oKS5sZW5ndGgoKSAt
IDEpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIG5hbWUgPSBuYW1lLnJlbW92ZUNo
YXJhY3RlcnMoJmlzSW52YWxpZEZpbGVDaGFyYWN0ZXIpOworICAgIGV4dGVuc2lvbiA9IGV4dGVu
c2lvbi5yZW1vdmVDaGFyYWN0ZXJzKCZpc0ludmFsaWRGaWxlQ2hhcmFjdGVyKTsKKworICAgIGlm
IChleHRlbnNpb24ubGVuZ3RoKCkgKyAxID49IE1BWF9QQVRIKQorICAgICAgICBleHRlbnNpb24g
PSBTdHJpbmcoKTsKKworICAgIC8vIFN1YnRyYWN0IDIgYWRkaXRpb25hbCBjaGFyYWN0ZXJzIGZv
ciBkb3QgYW5kIHRlcm1pbmF0aW5nIG51bGwuCisgICAgbmFtZS50cnVuY2F0ZShNQVhfUEFUSCAt
IGV4dGVuc2lvbi5sZW5ndGgoKSAtIDIpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggNzAyNTk5MDUxMTAxYTRlOWYzYzA4NTll
NzkwMTg5ZTg5NzAzZDVmZS4uYmU4Nzk1ZDkxZDBiNGM4OTAwMjg2YmQyZTMyZWI4ZjVhZTBmMGVh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC0xNDUsNiArMTQ1LDExIEBACiAg
ICAgICAgICAgICAgICAgICAgICd0ZXN0cy9TY3JvbGxBbmltYXRvck5vbmVUZXN0LmNwcCcsCiAg
ICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgWydPUyE9Imxp
bnV4IicsIHsKKyAgICAgICAgICAgICAgICAnd2Via2l0X3VuaXR0ZXN0X2ZpbGVzJzogWworICAg
ICAgICAgICAgICAgICAgICAndGVzdHMvQ2xpcGJvYXJkQ2hyb21pdW1UZXN0LmNwcCcsCisgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgWyd0b29sa2l0X3Vz
ZXNfZ3RrID09IDEnLCB7CiAgICAgICAgICAgICAgICAgJ3dlYmtpdF91bml0dGVzdF9maWxlcyc6
IFsKICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYklucHV0RXZlbnRGYWN0b3J5VGVzdEd0
ay5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DbGlwYm9h
cmRDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DbGlwYm9h
cmRDaHJvbWl1bVRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5NTZhY2FiOThlYWMyNzgwN2NlNDg4Yzc3
ZDg3YTE5YTk2N2FmNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NsaXBib2FyZENocm9taXVtVGVzdC5jcHAKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgIkNsaXBib2FyZENocm9taXVtLmgiCisKKyNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNl
IHsKKworI2lmIE9TKERBUldJTikKK2NvbnN0IGNoYXIgaW52YWxpZENoYXJhY3RlcnNbXSA9Cisg
ICAgIlx4MDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XHgwOFx4MDlceDBhXHgwYlx4MGNc
eDBkXHgwZVx4MGYiCisgICAgIlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4
MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYiCisgICAgIlx4N2YvIjsKKyNlbGlmIE9TKFdJTkRP
V1MpCitjb25zdCBjaGFyIGludmFsaWRDaGFyYWN0ZXJzW10gPSAiXHgwMC9cXDoqP1wiPD58IjsK
KyNlbmRpZgorY29uc3QgY2hhciBsb25nU3RyaW5nW10gPQorICAgICIwLDEsMSwyLDMsNSw4LDEz
LDIxLDM0LDU1LDg5LDE0NCwyMzMsMzc3LDYxMCw5ODcsMTU5NywyNTg0LDQxODEsNjc2NSwxMDk0
NiwxNzcxMSwyODY1Nyw0NjM2OCwiCisgICAgIjc1MDI1LDEyMTM5MywxOTY0MTgsMzE3ODExLDUx
NDIyOSw4MzIwNDAsMTM0NjI2OSwyMTc4MzA5LDM1MjQ1NzgsNTcwMjg4Nyw5MjI3NDY1LDE0OTMw
MzUyIjsKKworVEVTVChDbGlwYm9hcmRDaHJvbWl1bVRlc3QsIE5vcm1hbCkKK3sKKyAgICBTdHJp
bmcgbmFtZSA9ICJuYW1lIjsKKyAgICBTdHJpbmcgZXh0ZW5zaW9uID0gImV4dCI7CisgICAgQ2xp
cGJvYXJkQ2hyb21pdW06OnZhbGlkYXRlRmlsZW5hbWUobmFtZSwgZXh0ZW5zaW9uKTsKKyAgICBF
WFBFQ1RfRVEoIm5hbWUiLCBuYW1lKTsKKyAgICBFWFBFQ1RfRVEoImV4dCIsIGV4dGVuc2lvbik7
Cit9CisKK1RFU1QoQ2xpcGJvYXJkQ2hyb21pdW1UZXN0LCBJbnZhbGlkQ2hhcmFjdGVycykKK3sK
KyAgICBTdHJpbmcgbmFtZSA9IG1ha2VTdHJpbmcoIm5hIiwgU3RyaW5nKGludmFsaWRDaGFyYWN0
ZXJzLCBhcnJheXNpemUoaW52YWxpZENoYXJhY3RlcnMpKSwgIm1lIik7CisgICAgU3RyaW5nIGV4
dGVuc2lvbiA9IG1ha2VTdHJpbmcoImUiLCBTdHJpbmcoaW52YWxpZENoYXJhY3RlcnMsIGFycmF5
c2l6ZShpbnZhbGlkQ2hhcmFjdGVycykpLCAieHQiKTsKKyAgICBDbGlwYm9hcmRDaHJvbWl1bTo6
dmFsaWRhdGVGaWxlbmFtZShuYW1lLCBleHRlbnNpb24pOworICAgIEVYUEVDVF9FUSgibmFtZSIs
IG5hbWUpOworICAgIEVYUEVDVF9FUSgiZXh0IiwgZXh0ZW5zaW9uKTsKK30KKworVEVTVChDbGlw
Ym9hcmRDaHJvbWl1bVRlc3QsIEV4dGVuc2lvblRvb0xvbmcpCit7CisgICAgU3RyaW5nIG5hbWU7
CisgICAgU3RyaW5nIGV4dGVuc2lvbiA9IG1ha2VTdHJpbmcobG9uZ1N0cmluZywgbG9uZ1N0cmlu
Zyk7CisgICAgQ2xpcGJvYXJkQ2hyb21pdW06OnZhbGlkYXRlRmlsZW5hbWUobmFtZSwgZXh0ZW5z
aW9uKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCksIGV4dGVuc2lvbik7Cit9CisKK1RFU1QoQ2xp
cGJvYXJkQ2hyb21pdW1UZXN0LCBOYW1lUGx1c0V4dGVuc2lvblRvb0xvbmcpCit7CisgICAgU3Ry
aW5nIG5hbWUgPSBtYWtlU3RyaW5nKGxvbmdTdHJpbmcsIGxvbmdTdHJpbmcpOworICAgIFN0cmlu
ZyBleHRlbnNpb24gPSBsb25nU3RyaW5nOworICAgIENsaXBib2FyZENocm9taXVtOjp2YWxpZGF0
ZUZpbGVuYW1lKG5hbWUsIGV4dGVuc2lvbik7CisjaWYgT1MoREFSV0lOKQorICAgIEVYUEVDVF9F
USgiMCwxLDEsMiwzLDUsOCwxMywyMSwzNCw1NSw4OSwxNDQsMjMzLDM3Nyw2MTAsOTg3LDE1OTcs
MjU4NCw0MTgxLDY3NjUsMTA5IiwgbmFtZSk7CisjZWxpZiBPUyhXSU5ET1dTKQorICAgIEVYUEVD
VF9FUSgiMCwxLDEsMiwzLDUsOCwxMywyMSwzNCw1NSw4OSwxNDQsMjMzLDM3Nyw2MTAsOTg3LDE1
OTcsMjU4NCw0MTgxLDY3NjUsMTA5NDYsMSIsIG5hbWUpOworI2VuZGlmCisgICAgRVhQRUNUX0VR
KGxvbmdTdHJpbmcsIGV4dGVuc2lvbik7CisjaWYgT1MoREFSV0lOKQorICAgIEVYUEVDVF9FUSgy
NTQsIG5hbWUubGVuZ3RoKCkgKyBleHRlbnNpb24ubGVuZ3RoKCkpOworI2VsaWYgT1MoV0lORE9X
UykKKyAgICBFWFBFQ1RfRVEoMjU4LCBuYW1lLmxlbmd0aCgpICsgZXh0ZW5zaW9uLmxlbmd0aCgp
KTsKKyNlbmRpZgorfQorCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123995</attachid>
            <date>2012-01-25 13:12:18 -0800</date>
            <delta_ts>2012-01-25 14:18:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76996-20120125131217.patch</filename>
            <type>text/plain</type>
            <size>14153</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzZkZTk0M2NhNTcwM2Zl
ZmJhMTcwZjdlOWYyZGMyZTM4OTc1MzAyYy4uYzYxNDNiMTlhOWYzMDYwZGJjMjBiNDVjZjMyNjBh
YTUyNWQ4OTQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAxLTI1ICBEYW5p
ZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRml4
IENsaXBib2FyZENocm9taXVtOjp2YWxpZGF0ZUZpbGVuYW1lIHRvIGFjdHVhbGx5IG9wZXJhdGUg
b24gZXh0ZW5zaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzY5OTYKKworICAgICAgICBBcyBpdCB0dXJucyBvdXQsIHdlIHdlcmUgYWx3YXlzIGNh
bGxpbmcgdmFsaWRhdGVGaWxlbmFtZSBvbiBhIGRhdGEgb2JqZWN0IHdpdGggYW4gZW1wdHkKKyAg
ICAgICAgZXh0ZW5zaW9uLiBOb3cgd2UgY2FsbCBpdCBvbiBhbiBhY3R1YWwgZXh0ZW5zaW9uIHNv
IHRoYXQgaXQncyBzYW5pdGl6ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVW5pdCB0ZXN0OiB3ZWJraXRfdW5pdF90ZXN0cyAtLWd0ZXN0X2ZpbHRl
cj1DbGlwYm9hcmRDaHJvbWl1bS4qCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlw
Ym9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUltYWdlVG9EYXRhT2Jq
ZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oOgor
ICAgICAgICAoQ2xpcGJvYXJkQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L0NsaXBib2FyZENocm9taXVtTGludXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
Q2hyb21pdW06OnZhbGlkYXRlRmlsZW5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L0NsaXBib2FyZENocm9taXVtTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OnZhbGlkYXRlRmlsZW5hbWUpOgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNsaXBib2FyZENocm9taXVtOjp2YWxpZGF0ZUZpbGVuYW1lKToKKwogMjAxMi0wMS0y
NSAgQW50b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3
IG1hbnVhbCByZXZlcnQgb2YgcjEwNTg0My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
NmRjMDBjZDliM2IzODA4OWRjNTE1OTNlZjY1Njc0OWU0YmNhODE0NC4uNDk1NTU5YjQ5YTdmYmE4
Mzk5MzIwMzA2NGQ2ZjA1YmVlYzhmMzQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxMi0wMS0yNSAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEZpeCBDbGlwYm9hcmRDaHJvbWl1bTo6dmFsaWRh
dGVGaWxlbmFtZSB0byBhY3R1YWxseSBvcGVyYXRlIG9uIGV4dGVuc2lvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2OTk2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAg
ICAgKiB0ZXN0cy9DbGlwYm9hcmRDaHJvbWl1bVRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTItMDEtMjQgIFZzZXZvbG9k
IFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBjaHJv
bWl1bSB0ZXN0IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0NsaXBib2FyZENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0NsaXBib2FyZENocm9taXVtLmNwcAppbmRleCA5YTI2ODc2MDU3YTgwZGZhNDgxMjllOGQw
NTE0MGIzMTBkYTM4MTVkLi5mMjFkOWM0MTQ4ODk5M2EwYjVkYmNlZjNiMGViYWJjZmRiNTNhNmQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJv
YXJkQ2hyb21pdW0uY3BwCkBAIC0yNTUsMTMgKzI1NSwxNSBAQCBzdGF0aWMgdm9pZCB3cml0ZUlt
YWdlVG9EYXRhT2JqZWN0KENocm9taXVtRGF0YU9iamVjdCogZGF0YU9iamVjdCwgRWxlbWVudCog
ZWxlbQogICAgICAgICBpZiAoZXh0ZW5zaW9uSW5kZXggIT0gLTEpCiAgICAgICAgICAgICBmaWxl
bmFtZS50cnVuY2F0ZShleHRlbnNpb25JbmRleCk7CiAgICAgfQotICAgIGZpbGVuYW1lID0gQ2xp
cGJvYXJkQ2hyb21pdW06OnZhbGlkYXRlRmlsZU5hbWUoZmlsZW5hbWUsIGRhdGFPYmplY3QpOwog
CiAgICAgU3RyaW5nIGV4dGVuc2lvbiA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4
dGVuc2lvbkZvck1JTUVUeXBlKAogICAgICAgICBjYWNoZWRJbWFnZS0+cmVzcG9uc2UoKS5taW1l
VHlwZSgpKTsKLSAgICBkYXRhT2JqZWN0LT5zZXRGaWxlRXh0ZW5zaW9uKGV4dGVuc2lvbi5pc0Vt
cHR5KCkgPyBlbXB0eVN0cmluZygpIDogIi4iICsgZXh0ZW5zaW9uKTsKKyAgICBleHRlbnNpb24g
PSBleHRlbnNpb24uaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6ICIuIiArIGV4dGVuc2lvbjsK
IAotICAgIGRhdGFPYmplY3QtPnNldEZpbGVDb250ZW50RmlsZW5hbWUoZmlsZW5hbWUgKyBkYXRh
T2JqZWN0LT5maWxlRXh0ZW5zaW9uKCkpOworICAgIENsaXBib2FyZENocm9taXVtOjp2YWxpZGF0
ZUZpbGVuYW1lKGZpbGVuYW1lLCBleHRlbnNpb24pOworCisgICAgZGF0YU9iamVjdC0+c2V0Rmls
ZUNvbnRlbnRGaWxlbmFtZShmaWxlbmFtZSArIGV4dGVuc2lvbik7CisgICAgZGF0YU9iamVjdC0+
c2V0RmlsZUV4dGVuc2lvbihleHRlbnNpb24pOwogfQogCiB2b2lkIENsaXBib2FyZENocm9taXVt
OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uaAppbmRleCAzMGU4
NzM5YTIzODc3MzNkYjE3Zjk0NTg2Y2Y3NzAyMzM3MmUzNDVkLi45MjQyMjZkZjMyNTY1ZTY5NTcy
MzAxMDYzNWJmMmU2ZjRmYzAwOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmgKQEAgLTUxLDExICs1MSwxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZENocm9t
aXVtPiBjcmVhdGUoCiAgICAgICAgICAgICBDbGlwYm9hcmRUeXBlLCBQYXNzUmVmUHRyPENocm9t
aXVtRGF0YU9iamVjdD4sIENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsKIAotICAgICAg
ICAvLyBSZXR1cm5zIHRoZSBmaWxlIG5hbWUgKG5vdCBpbmNsdWRpbmcgdGhlIGV4dGVuc2lvbiku
IFRoaXMgcmVtb3ZlcyBhbnkKLSAgICAgICAgLy8gaW52YWxpZCBmaWxlIHN5c3RlbSBjaGFyYWN0
ZXJzIGFzIHdlbGwgYXMgbWFraW5nIHN1cmUgdGhlCi0gICAgICAgIC8vIHBhdGggKyBleHRlbnNp
b24gaXMgbm90IGJpZ2dlciB0aGFuIGFsbG93ZWQgYnkgdGhlIGZpbGUgc3lzdGVtLgotICAgICAg
ICAvLyBUaGlzIG1heSBjaGFuZ2UgdGhlIGZpbGUgZXh0ZW5zaW9uIGluIGRhdGFPYmplY3QuCi0g
ICAgICAgIHN0YXRpYyBTdHJpbmcgdmFsaWRhdGVGaWxlTmFtZShjb25zdCBTdHJpbmcmIHRpdGxl
LCBDaHJvbWl1bURhdGFPYmplY3QqIGRhdGFPYmplY3QpOworICAgICAgICAvLyBWYWxpZGF0ZXMg
YSBmaWxlbmFtZSAod2l0aG91dCB0aGUgZXh0ZW5zaW9uKSBhbmQgdGhlIGV4dGVuc2lvbi4gVGhp
cyByZW1vdmVzIGFueSBpbnZhbGlkCisgICAgICAgIC8vIGZpbGUgc3lzdGVtIGNoYXJhY3RlcnMg
YXMgd2VsbCBhcyBtYWtpbmcgc3VyZSB0aGUgcGF0aCArIGV4dGVuc2lvbiBpcyBub3QgYmlnZ2Vy
IHRoYW4KKyAgICAgICAgLy8gYWxsb3dlZCBieSB0aGUgZmlsZSBzeXN0ZW0uCisgICAgICAgIHN0
YXRpYyB2b2lkIHZhbGlkYXRlRmlsZW5hbWUoU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGV4dGVuc2lv
bik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUp
OwogICAgICAgICB2b2lkIGNsZWFyQWxsRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW1MaW51eC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bUxpbnV4LmNwcAppbmRl
eCAyYzg5ZjZlOGVlOTk5MjAyOTEyYjNkOGRiOWJmNWJiNzcyNTc3YTk3Li45NTliMzY2NTJmZTM5
NTYwMTdmN2Q2NDUwMTBjNTIzODUzYzNiMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bUxpbnV4LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bUxpbnV4LmNwcApAQCAt
MjcsMTUgKzI3LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJk
Q2hyb21pdW0uaCIKIAotI2luY2x1ZGUgIkNocm9taXVtRGF0YU9iamVjdC5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIENsaXBi
b2FyZENocm9taXVtOjp2YWxpZGF0ZUZpbGVOYW1lKGNvbnN0IFN0cmluZyYgdGl0bGUsIENocm9t
aXVtRGF0YU9iamVjdCogZGF0YU9iamVjdCkKK3ZvaWQgQ2xpcGJvYXJkQ2hyb21pdW06OnZhbGlk
YXRlRmlsZW5hbWUoU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiB0aXRsZTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBi
b2FyZENocm9taXVtTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Ns
aXBib2FyZENocm9taXVtTWFjLmNwcAppbmRleCAzODAyMTQwMmViOTI5ZTNjYzZlMjUxZDIyM2Yw
MDc0NjZhZGYyZjI3Li5lN2NmOGIwY2E5ZDFjZDJiZjczZGM4ZmQyNzIzNjFmM2Y3NjMzMzAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJv
bWl1bU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJv
YXJkQ2hyb21pdW1NYWMuY3BwCkBAIC0yNywxMSArMjcsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkNsaXBib2FyZENocm9taXVtLmgiCiAKLSNpbmNsdWRlICJDaHJvbWl1bURh
dGFPYmplY3QuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotCiAvLyBGaWxlbmFtZSBs
ZW5ndGggYW5kIGNoYXJhY3Rlci1zZXQgbGltaXRzIHZhcnkgYnkgZmlsZXN5c3RlbSwgYW5kIHRo
ZXJlJ3Mgbm8KIC8vIHJlYWwgd2F5IHRvIHRlbGwgd2hhdCBmaWxlc3lzdGVtIGlzIGluIHVzZS4g
U2luY2UgSEZTKyBpcyBieSBmYXIgdGhlIG1vc3QKIC8vIGNvbW1vbiwgd2UnbGwgYWJpZGUgYnkg
aXRzIGxpbWl0cywgd2hpY2ggYXJlIDI1NSBVbmljb2RlIGNoYXJhY3RlcnMgKHNsaWdodGx5CkBA
IC0zOSw3ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIHJlYWxseSB3b3J0aCBkZWFs
aW5nIHdpdGggaGVyZS4pCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWF4SEZTRmlsZW5hbWVMZW5n
dGggPSAyNTU7CiAKLQogc3RhdGljIGJvb2wgaXNJbnZhbGlkRmlsZUNoYXJhY3RlcihVQ2hhciBj
KQogewogICAgIC8vIEhGUysgYmFzaWNhbGx5IGFsbG93cyBhbnl0aGluZyBidXQgJy8nLiBGb3Ig
c2FuaXR5J3Mgc2FrZSB3ZSdsbCBkaXNhbGxvdwpAQCAtNDcsMjMgKzQzLDE4IEBAIHN0YXRpYyBi
b29sIGlzSW52YWxpZEZpbGVDaGFyYWN0ZXIoVUNoYXIgYykKICAgICByZXR1cm4gYyA8ICcgJyB8
fCBjID09IDB4N0YgfHwgYyA9PSAnLyc7CiB9CiAKLVN0cmluZyBDbGlwYm9hcmRDaHJvbWl1bTo6
dmFsaWRhdGVGaWxlTmFtZShjb25zdCBTdHJpbmcmIHRpdGxlLCBDaHJvbWl1bURhdGFPYmplY3Qq
IGRhdGFPYmplY3QpCit2b2lkIENsaXBib2FyZENocm9taXVtOjp2YWxpZGF0ZUZpbGVuYW1lKFN0
cmluZyYgbmFtZSwgU3RyaW5nJiBleHRlbnNpb24pCiB7CiAgICAgLy8gUmVtb3ZlIGFueSBpbnZh
bGlkIGZpbGUgc3lzdGVtIGNoYXJhY3RlcnMsIGVzcGVjaWFsbHkgIi8iLgotICAgIFN0cmluZyBy
ZXN1bHQgPSB0aXRsZS5yZW1vdmVDaGFyYWN0ZXJzKGlzSW52YWxpZEZpbGVDaGFyYWN0ZXIpOwot
ICAgIFN0cmluZyBleHRlbnNpb24gPSBkYXRhT2JqZWN0LT5maWxlRXh0ZW5zaW9uKCkucmVtb3Zl
Q2hhcmFjdGVycygmaXNJbnZhbGlkRmlsZUNoYXJhY3Rlcik7CisgICAgbmFtZSA9IG5hbWUucmVt
b3ZlQ2hhcmFjdGVycygmaXNJbnZhbGlkRmlsZUNoYXJhY3Rlcik7CisgICAgZXh0ZW5zaW9uID0g
ZXh0ZW5zaW9uLnJlbW92ZUNoYXJhY3RlcnMoJmlzSW52YWxpZEZpbGVDaGFyYWN0ZXIpOwogCiAg
ICAgLy8gUmVtb3ZlIGEgcmlkaWN1bG91c2x5LWxvbmcgZXh0ZW5zaW9uLgogICAgIGlmIChleHRl
bnNpb24ubGVuZ3RoKCkgPj0gTWF4SEZTRmlsZW5hbWVMZW5ndGgpCi0gICAgICAgIGV4dGVuc2lv
biA9ICIiOworICAgICAgICBleHRlbnNpb24gPSBTdHJpbmcoKTsKICAgICAKICAgICAvLyBUcnVu
Y2F0ZSBhbiBvdmVybHktbG9uZyBmaWxlbmFtZS4KLSAgICBpbnQgb3ZlcmZsb3cgPSByZXN1bHQu
bGVuZ3RoKCkgKyBleHRlbnNpb24ubGVuZ3RoKCkgLSBNYXhIRlNGaWxlbmFtZUxlbmd0aDsKLSAg
ICBpZiAob3ZlcmZsb3cgPiAwKSAKLSAgICAgICAgcmVzdWx0LnJlbW92ZShyZXN1bHQubGVuZ3Ro
KCkgLSBvdmVyZmxvdywgb3ZlcmZsb3cpOwotICAgIAotICAgIGRhdGFPYmplY3QtPnNldEZpbGVF
eHRlbnNpb24oZXh0ZW5zaW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIG5hbWUudHJ1bmNh
dGUoTWF4SEZTRmlsZW5hbWVMZW5ndGggLSBleHRlbnNpb24ubGVuZ3RoKCkgLSAxKTsKIH0KIAog
fSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtV2luLmNwcAppbmRleCBkOWJiZWI1ZGQz
ZDM3YTI1NDg5MTRhYWJjZWYwM2VkOWFmYzBiY2Q3Li41OTJmYWUwYTUxMDBmZWUzOTI3OGI5NDdk
YjgyNTNkZWNkMWM3YTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9DbGlwYm9hcmRDaHJvbWl1bVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW1XaW4uY3BwCkBAIC0yNyw4ICsyNyw2IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkQ2hyb21pdW0uaCIKIAotI2lu
Y2x1ZGUgIkNocm9taXVtRGF0YU9iamVjdC5oIgotCiAjaW5jbHVkZSA8c2hsd2FwaS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCwxNyArMzgsMTcgQEAgc3RhdGljIGJvb2wgaXNJbnZh
bGlkRmlsZUNoYXJhY3RlcihVQ2hhciBjKQogICAgIHJldHVybiAoUGF0aEdldENoYXJUeXBlKGMp
ICYgKEdDVF9MRk5DSEFSIHwgR0NUX1NIT1JUQ0hBUikpID09IDA7CiB9CiAKLVN0cmluZyBDbGlw
Ym9hcmRDaHJvbWl1bTo6dmFsaWRhdGVGaWxlTmFtZShjb25zdCBTdHJpbmcmIHRpdGxlLCBDaHJv
bWl1bURhdGFPYmplY3QqIGRhdGFPYmplY3QpCit2b2lkIENsaXBib2FyZENocm9taXVtOjp2YWxp
ZGF0ZUZpbGVuYW1lKFN0cmluZyYgbmFtZSwgU3RyaW5nJiBleHRlbnNpb24pCiB7CiAgICAgLy8g
UmVtb3ZlIGFueSBpbnZhbGlkIGZpbGUgc3lzdGVtIGNoYXJhY3RlcnMuCi0gICAgU3RyaW5nIHJl
c3VsdCA9IHRpdGxlLnJlbW92ZUNoYXJhY3RlcnMoJmlzSW52YWxpZEZpbGVDaGFyYWN0ZXIpOwot
ICAgIGlmIChyZXN1bHQubGVuZ3RoKCkgKyBkYXRhT2JqZWN0LT5maWxlRXh0ZW5zaW9uKCkubGVu
Z3RoKCkgKyAxID49IE1BWF9QQVRIKSB7Ci0gICAgICAgIGlmIChkYXRhT2JqZWN0LT5maWxlRXh0
ZW5zaW9uKCkubGVuZ3RoKCkgKyAxID49IE1BWF9QQVRIKQotICAgICAgICAgICAgZGF0YU9iamVj
dC0+c2V0RmlsZUV4dGVuc2lvbigiIik7Ci0gICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKCkgKyBk
YXRhT2JqZWN0LT5maWxlRXh0ZW5zaW9uKCkubGVuZ3RoKCkgKyAxID49IE1BWF9QQVRIKQotICAg
ICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnN1YnN0cmluZygwLCBNQVhfUEFUSCAtIGRhdGFPYmpl
Y3QtPmZpbGVFeHRlbnNpb24oKS5sZW5ndGgoKSAtIDEpOwotICAgIH0KLSAgICByZXR1cm4gcmVz
dWx0OworICAgIG5hbWUgPSBuYW1lLnJlbW92ZUNoYXJhY3RlcnMoJmlzSW52YWxpZEZpbGVDaGFy
YWN0ZXIpOworICAgIGV4dGVuc2lvbiA9IGV4dGVuc2lvbi5yZW1vdmVDaGFyYWN0ZXJzKCZpc0lu
dmFsaWRGaWxlQ2hhcmFjdGVyKTsKKworICAgIGlmIChleHRlbnNpb24ubGVuZ3RoKCkgKyAxID49
IE1BWF9QQVRIKQorICAgICAgICBleHRlbnNpb24gPSBTdHJpbmcoKTsKKworICAgIC8vIFN1YnRy
YWN0IDIgYWRkaXRpb25hbCBjaGFyYWN0ZXJzIGZvciBkb3QgYW5kIHRlcm1pbmF0aW5nIG51bGwu
CisgICAgbmFtZS50cnVuY2F0ZShNQVhfUEFUSCAtIGV4dGVuc2lvbi5sZW5ndGgoKSAtIDIpOwog
fQogCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkK
aW5kZXggNzAyNTk5MDUxMTAxYTRlOWYzYzA4NTllNzkwMTg5ZTg5NzAzZDVmZS4uYmU4Nzk1ZDkx
ZDBiNGM4OTAwMjg2YmQyZTMyZWI4ZjVhZTBmMGVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXBpCkBAIC0xNDUsNiArMTQ1LDExIEBACiAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9T
Y3JvbGxBbmltYXRvck5vbmVUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgIH1dLAorICAgICAgICAgICAgWydPUyE9ImxpbnV4IicsIHsKKyAgICAgICAgICAgICAgICAn
d2Via2l0X3VuaXR0ZXN0X2ZpbGVzJzogWworICAgICAgICAgICAgICAgICAgICAndGVzdHMvQ2xp
cGJvYXJkQ2hyb21pdW1UZXN0LmNwcCcsCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
IH1dLAogICAgICAgICAgICAgWyd0b29sa2l0X3VzZXNfZ3RrID09IDEnLCB7CiAgICAgICAgICAg
ICAgICAgJ3dlYmtpdF91bml0dGVzdF9maWxlcyc6IFsKICAgICAgICAgICAgICAgICAgICAgJ3Rl
c3RzL1dlYklucHV0RXZlbnRGYWN0b3J5VGVzdEd0ay5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DbGlwYm9hcmRDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DbGlwYm9hcmRDaHJvbWl1bVRlc3QuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI5NTZhY2FiOThlYWMyNzgwN2NlNDg4Yzc3ZDg3YTE5YTk2N2FmNDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NsaXBib2FyZENocm9taXVtVGVz
dC5jcHAKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkNs
aXBib2FyZENocm9taXVtLmgiCisKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIHsKKworI2lmIE9TKERBUldJTikKK2NvbnN0
IGNoYXIgaW52YWxpZENoYXJhY3RlcnNbXSA9CisgICAgIlx4MDBceDAxXHgwMlx4MDNceDA0XHgw
NVx4MDZceDA3XHgwOFx4MDlceDBhXHgwYlx4MGNceDBkXHgwZVx4MGYiCisgICAgIlx4MTBceDEx
XHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYi
CisgICAgIlx4N2YvIjsKKyNlbGlmIE9TKFdJTkRPV1MpCitjb25zdCBjaGFyIGludmFsaWRDaGFy
YWN0ZXJzW10gPSAiXHgwMC9cXDoqP1wiPD58IjsKKyNlbmRpZgorY29uc3QgY2hhciBsb25nU3Ry
aW5nW10gPQorICAgICIwLDEsMSwyLDMsNSw4LDEzLDIxLDM0LDU1LDg5LDE0NCwyMzMsMzc3LDYx
MCw5ODcsMTU5NywyNTg0LDQxODEsNjc2NSwxMDk0NiwxNzcxMSwyODY1Nyw0NjM2OCwiCisgICAg
Ijc1MDI1LDEyMTM5MywxOTY0MTgsMzE3ODExLDUxNDIyOSw4MzIwNDAsMTM0NjI2OSwyMTc4MzA5
LDM1MjQ1NzgsNTcwMjg4Nyw5MjI3NDY1LDE0OTMwMzUyIjsKKworVEVTVChDbGlwYm9hcmRDaHJv
bWl1bVRlc3QsIE5vcm1hbCkKK3sKKyAgICBTdHJpbmcgbmFtZSA9ICJuYW1lIjsKKyAgICBTdHJp
bmcgZXh0ZW5zaW9uID0gImV4dCI7CisgICAgQ2xpcGJvYXJkQ2hyb21pdW06OnZhbGlkYXRlRmls
ZW5hbWUobmFtZSwgZXh0ZW5zaW9uKTsKKyAgICBFWFBFQ1RfRVEoIm5hbWUiLCBuYW1lKTsKKyAg
ICBFWFBFQ1RfRVEoImV4dCIsIGV4dGVuc2lvbik7Cit9CisKK1RFU1QoQ2xpcGJvYXJkQ2hyb21p
dW1UZXN0LCBJbnZhbGlkQ2hhcmFjdGVycykKK3sKKyAgICBTdHJpbmcgbmFtZSA9IG1ha2VTdHJp
bmcoIm5hIiwgU3RyaW5nKGludmFsaWRDaGFyYWN0ZXJzLCBhcnJheXNpemUoaW52YWxpZENoYXJh
Y3RlcnMpKSwgIm1lIik7CisgICAgU3RyaW5nIGV4dGVuc2lvbiA9IG1ha2VTdHJpbmcoImUiLCBT
dHJpbmcoaW52YWxpZENoYXJhY3RlcnMsIGFycmF5c2l6ZShpbnZhbGlkQ2hhcmFjdGVycykpLCAi
eHQiKTsKKyAgICBDbGlwYm9hcmRDaHJvbWl1bTo6dmFsaWRhdGVGaWxlbmFtZShuYW1lLCBleHRl
bnNpb24pOworICAgIEVYUEVDVF9FUSgibmFtZSIsIG5hbWUpOworICAgIEVYUEVDVF9FUSgiZXh0
IiwgZXh0ZW5zaW9uKTsKK30KKworVEVTVChDbGlwYm9hcmRDaHJvbWl1bVRlc3QsIEV4dGVuc2lv
blRvb0xvbmcpCit7CisgICAgU3RyaW5nIG5hbWU7CisgICAgU3RyaW5nIGV4dGVuc2lvbiA9IG1h
a2VTdHJpbmcobG9uZ1N0cmluZywgbG9uZ1N0cmluZyk7CisgICAgQ2xpcGJvYXJkQ2hyb21pdW06
OnZhbGlkYXRlRmlsZW5hbWUobmFtZSwgZXh0ZW5zaW9uKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5n
KCksIGV4dGVuc2lvbik7Cit9CisKK1RFU1QoQ2xpcGJvYXJkQ2hyb21pdW1UZXN0LCBOYW1lUGx1
c0V4dGVuc2lvblRvb0xvbmcpCit7CisgICAgU3RyaW5nIG5hbWUgPSBtYWtlU3RyaW5nKGxvbmdT
dHJpbmcsIGxvbmdTdHJpbmcpOworICAgIFN0cmluZyBleHRlbnNpb24gPSBsb25nU3RyaW5nOwor
ICAgIENsaXBib2FyZENocm9taXVtOjp2YWxpZGF0ZUZpbGVuYW1lKG5hbWUsIGV4dGVuc2lvbik7
CisjaWYgT1MoREFSV0lOKQorICAgIEVYUEVDVF9FUSgiMCwxLDEsMiwzLDUsOCwxMywyMSwzNCw1
NSw4OSwxNDQsMjMzLDM3Nyw2MTAsOTg3LDE1OTcsMjU4NCw0MTgxLDY3NjUsMTA5IiwgbmFtZSk7
CisjZWxpZiBPUyhXSU5ET1dTKQorICAgIEVYUEVDVF9FUSgiMCwxLDEsMiwzLDUsOCwxMywyMSwz
NCw1NSw4OSwxNDQsMjMzLDM3Nyw2MTAsOTg3LDE1OTcsMjU4NCw0MTgxLDY3NjUsMTA5NDYsMSIs
IG5hbWUpOworI2VuZGlmCisgICAgRVhQRUNUX0VRKGxvbmdTdHJpbmcsIGV4dGVuc2lvbik7Cisj
aWYgT1MoREFSV0lOKQorICAgIEVYUEVDVF9FUSgyNTQsIG5hbWUubGVuZ3RoKCkgKyBleHRlbnNp
b24ubGVuZ3RoKCkpOworI2VsaWYgT1MoV0lORE9XUykKKyAgICBFWFBFQ1RfRVEoMjU4LCBuYW1l
Lmxlbmd0aCgpICsgZXh0ZW5zaW9uLmxlbmd0aCgpKTsKKyNlbmRpZgorfQorCit9IC8vIGFub255
bW91cyBuYW1lc3BhY2UKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124008</attachid>
            <date>2012-01-25 14:18:19 -0800</date>
            <delta_ts>2012-01-25 21:02:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76996-20120125141818.patch</filename>
            <type>text/plain</type>
            <size>20393</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDcwNTBjYmU0MDU3NTJl
ZDhkMDlhZjU4Yzg3ZGYwZDUwODViNDNjMy4uZGRlMjljNDg4YTA3NjE1MWZhNzExNDc2OWUwODA5
YmYzNTI5N2UwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAxLTI1ICBEYW5p
ZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRml4
IENsaXBib2FyZENocm9taXVtOjp2YWxpZGF0ZUZpbGVuYW1lIHRvIGFjdHVhbGx5IG9wZXJhdGUg
b24gZXh0ZW5zaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzY5OTYKKworICAgICAgICBBcyBpdCB0dXJucyBvdXQsIHdlIHdlcmUgYWx3YXlzIGNh
bGxpbmcgdmFsaWRhdGVGaWxlbmFtZSBvbiBhIGRhdGEgb2JqZWN0IHdpdGggYW4gZW1wdHkKKyAg
ICAgICAgZXh0ZW5zaW9uLiBOb3cgd2UgY2FsbCBpdCBvbiBhbiBhY3R1YWwgZXh0ZW5zaW9uIHNv
IHRoYXQgaXQncyBzYW5pdGl6ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVW5pdCB0ZXN0OiB3ZWJraXRfdW5pdF90ZXN0cyAtLWd0ZXN0X2ZpbHRl
cj1DbGlwYm9hcmRDaHJvbWl1bS4qCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6d3JpdGVJbWFnZVRvRGF0YU9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vQ2xpcGJvYXJkQ2hyb21pdW0uaDoKKyAgICAgICAgKENsaXBib2FyZENocm9taXVtKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bUxpbnV4LmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bVBvc2l4
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBi
b2FyZENocm9taXVtTWFjLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNJbnZhbGlkRmlsZUNoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRD
aHJvbWl1bTo6dmFsaWRhdGVGaWxlbmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
Q2xpcGJvYXJkQ2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6dmFsaWRhdGVGaWxlbmFtZSk6CisKIDIwMTItMDEt
MjQgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQub3JnPgogCiAgICAgICAgIEF0dGVtcHQg
dG8gZml4IE1hYyBidWlsZCBhZnRlciBjaGFuZ2VzZXQgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzEwNTg0Mz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNmRjMDBjZDli
M2IzODA4OWRjNTE1OTNlZjY1Njc0OWU0YmNhODE0NC4uNDk1NTU5YjQ5YTdmYmE4Mzk5MzIwMzA2
NGQ2ZjA1YmVlYzhmMzQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMi0wMS0yNSAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbY2hyb21pdW1dIEZpeCBDbGlwYm9hcmRDaHJvbWl1bTo6dmFsaWRhdGVGaWxlbmFt
ZSB0byBhY3R1YWxseSBvcGVyYXRlIG9uIGV4dGVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2OTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0
cy9DbGlwYm9hcmRDaHJvbWl1bVRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTItMDEtMjQgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBjaHJvbWl1bSB0ZXN0
IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxNjE0ZmI0NjQxZGEyZTdlODY3MzkwYWFhZGYwN2Q2
ZjA4Y2JjMWRmLi43NGFlMWQ3M2Y5NmJkYWUwMDc0ODRkNjUwMDkxNDBiZDhlNTdkZDAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0yODc0LDggKzI4NzQsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL0NsaXBib2FyZENocm9taXVtLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9t
aXVtL0NsaXBib2FyZENocm9taXVtTGludXguY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bU1hYy5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtUG9zaXguY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bVdpbi5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZE1pbWVUeXBlcy5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZE1pbWVUeXBlcy5oJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAppbmRleCA5
YTI2ODc2MDU3YTgwZGZhNDgxMjllOGQwNTE0MGIzMTBkYTM4MTVkLi5mMjFkOWM0MTQ4ODk5M2Ew
YjVkYmNlZjNiMGViYWJjZmRiNTNhNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCkBAIC0yNTUsMTMgKzI1NSwx
NSBAQCBzdGF0aWMgdm9pZCB3cml0ZUltYWdlVG9EYXRhT2JqZWN0KENocm9taXVtRGF0YU9iamVj
dCogZGF0YU9iamVjdCwgRWxlbWVudCogZWxlbQogICAgICAgICBpZiAoZXh0ZW5zaW9uSW5kZXgg
IT0gLTEpCiAgICAgICAgICAgICBmaWxlbmFtZS50cnVuY2F0ZShleHRlbnNpb25JbmRleCk7CiAg
ICAgfQotICAgIGZpbGVuYW1lID0gQ2xpcGJvYXJkQ2hyb21pdW06OnZhbGlkYXRlRmlsZU5hbWUo
ZmlsZW5hbWUsIGRhdGFPYmplY3QpOwogCiAgICAgU3RyaW5nIGV4dGVuc2lvbiA9IE1JTUVUeXBl
UmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKAogICAgICAgICBjYWNo
ZWRJbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKLSAgICBkYXRhT2JqZWN0LT5zZXRGaWxl
RXh0ZW5zaW9uKGV4dGVuc2lvbi5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIi4iICsgZXh0
ZW5zaW9uKTsKKyAgICBleHRlbnNpb24gPSBleHRlbnNpb24uaXNFbXB0eSgpID8gZW1wdHlTdHJp
bmcoKSA6ICIuIiArIGV4dGVuc2lvbjsKIAotICAgIGRhdGFPYmplY3QtPnNldEZpbGVDb250ZW50
RmlsZW5hbWUoZmlsZW5hbWUgKyBkYXRhT2JqZWN0LT5maWxlRXh0ZW5zaW9uKCkpOworICAgIENs
aXBib2FyZENocm9taXVtOjp2YWxpZGF0ZUZpbGVuYW1lKGZpbGVuYW1lLCBleHRlbnNpb24pOwor
CisgICAgZGF0YU9iamVjdC0+c2V0RmlsZUNvbnRlbnRGaWxlbmFtZShmaWxlbmFtZSArIGV4dGVu
c2lvbik7CisgICAgZGF0YU9iamVjdC0+c2V0RmlsZUV4dGVuc2lvbihleHRlbnNpb24pOwogfQog
CiB2b2lkIENsaXBib2FyZENocm9taXVtOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRWxlbWVu
dCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGcmFtZSog
ZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlw
Ym9hcmRDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJv
YXJkQ2hyb21pdW0uaAppbmRleCAzMGU4NzM5YTIzODc3MzNkYjE3Zjk0NTg2Y2Y3NzAyMzM3MmUz
NDVkLi45MjQyMjZkZjMyNTY1ZTY5NTcyMzAxMDYzNWJmMmU2ZjRmYzAwOWE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmgK
QEAgLTUxLDExICs1MSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENsaXBib2FyZENocm9taXVtPiBjcmVhdGUoCiAgICAgICAgICAgICBDbGlwYm9h
cmRUeXBlLCBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4sIENsaXBib2FyZEFjY2Vzc1Bv
bGljeSwgRnJhbWUqKTsKIAotICAgICAgICAvLyBSZXR1cm5zIHRoZSBmaWxlIG5hbWUgKG5vdCBp
bmNsdWRpbmcgdGhlIGV4dGVuc2lvbikuIFRoaXMgcmVtb3ZlcyBhbnkKLSAgICAgICAgLy8gaW52
YWxpZCBmaWxlIHN5c3RlbSBjaGFyYWN0ZXJzIGFzIHdlbGwgYXMgbWFraW5nIHN1cmUgdGhlCi0g
ICAgICAgIC8vIHBhdGggKyBleHRlbnNpb24gaXMgbm90IGJpZ2dlciB0aGFuIGFsbG93ZWQgYnkg
dGhlIGZpbGUgc3lzdGVtLgotICAgICAgICAvLyBUaGlzIG1heSBjaGFuZ2UgdGhlIGZpbGUgZXh0
ZW5zaW9uIGluIGRhdGFPYmplY3QuCi0gICAgICAgIHN0YXRpYyBTdHJpbmcgdmFsaWRhdGVGaWxl
TmFtZShjb25zdCBTdHJpbmcmIHRpdGxlLCBDaHJvbWl1bURhdGFPYmplY3QqIGRhdGFPYmplY3Qp
OworICAgICAgICAvLyBWYWxpZGF0ZXMgYSBmaWxlbmFtZSAod2l0aG91dCB0aGUgZXh0ZW5zaW9u
KSBhbmQgdGhlIGV4dGVuc2lvbi4gVGhpcyByZW1vdmVzIGFueSBpbnZhbGlkCisgICAgICAgIC8v
IGZpbGUgc3lzdGVtIGNoYXJhY3RlcnMgYXMgd2VsbCBhcyBtYWtpbmcgc3VyZSB0aGUgcGF0aCAr
IGV4dGVuc2lvbiBpcyBub3QgYmlnZ2VyIHRoYW4KKyAgICAgICAgLy8gYWxsb3dlZCBieSB0aGUg
ZmlsZSBzeXN0ZW0uCisgICAgICAgIHN0YXRpYyB2b2lkIHZhbGlkYXRlRmlsZW5hbWUoU3RyaW5n
JiBuYW1lLCBTdHJpbmcmIGV4dGVuc2lvbik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFy
RGF0YShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgICAgICB2b2lkIGNsZWFyQWxsRGF0YSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hy
b21pdW1MaW51eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9h
cmRDaHJvbWl1bUxpbnV4LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM4OWY2
ZThlZTk5OTIwMjkxMmIzZDhkYjliZjViYjc3MjU3N2E5Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9DbGlwYm9hcmRDaHJvbWl1bUxpbnV4LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJDbGlwYm9hcmRDaHJvbWl1bS5oIgotCi0jaW5jbHVkZSAi
Q2hyb21pdW1EYXRhT2JqZWN0LmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1TdHJpbmcgQ2xpcGJvYXJkQ2hyb21pdW06OnZhbGlkYXRlRmls
ZU5hbWUoY29uc3QgU3RyaW5nJiB0aXRsZSwgQ2hyb21pdW1EYXRhT2JqZWN0KiBkYXRhT2JqZWN0
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHRpdGxlOwotfQotCi19ICAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW1NYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW1NYWMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzODAyMTQwMmViOTI5ZTNjYzZlMjUxZDIyM2YwMDc0NjZhZGYyZjI3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtTWFjLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDbGlwYm9hcmRDaHJvbWl1bS5o
IgotCi0jaW5jbHVkZSAiQ2hyb21pdW1EYXRhT2JqZWN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLSAgICAKLQotLy8gRmlsZW5hbWUgbGVuZ3RoIGFuZCBjaGFyYWN0ZXItc2V0IGxpbWl0cyB2
YXJ5IGJ5IGZpbGVzeXN0ZW0sIGFuZCB0aGVyZSdzIG5vCi0vLyByZWFsIHdheSB0byB0ZWxsIHdo
YXQgZmlsZXN5c3RlbSBpcyBpbiB1c2UuIFNpbmNlIEhGUysgaXMgYnkgZmFyIHRoZSBtb3N0Ci0v
LyBjb21tb24sIHdlJ2xsIGFiaWRlIGJ5IGl0cyBsaW1pdHMsIHdoaWNoIGFyZSAyNTUgVW5pY29k
ZSBjaGFyYWN0ZXJzIChzbGlnaHRseQotLy8gc2ltcGxpZmllZDsgcmVhbGx5IGl0IHVzZXMgTm9y
bWFsaXphdGlvbiBGb3JtIEQsIGJ1dCB0aGUgZGlmZmVyZW5jZXMgYXJlbid0Ci0vLyByZWFsbHkg
d29ydGggZGVhbGluZyB3aXRoIGhlcmUuKQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1heEhGU0Zp
bGVuYW1lTGVuZ3RoID0gMjU1OwotCi0KLXN0YXRpYyBib29sIGlzSW52YWxpZEZpbGVDaGFyYWN0
ZXIoVUNoYXIgYykKLXsKLSAgICAvLyBIRlMrIGJhc2ljYWxseSBhbGxvd3MgYW55dGhpbmcgYnV0
ICcvJy4gRm9yIHNhbml0eSdzIHNha2Ugd2UnbGwgZGlzYWxsb3cKLSAgICAvLyBjb250cm9sIGNo
YXJhY3RlcnMuCi0gICAgcmV0dXJuIGMgPCAnICcgfHwgYyA9PSAweDdGIHx8IGMgPT0gJy8nOwot
fQotCi1TdHJpbmcgQ2xpcGJvYXJkQ2hyb21pdW06OnZhbGlkYXRlRmlsZU5hbWUoY29uc3QgU3Ry
aW5nJiB0aXRsZSwgQ2hyb21pdW1EYXRhT2JqZWN0KiBkYXRhT2JqZWN0KQotewotICAgIC8vIFJl
bW92ZSBhbnkgaW52YWxpZCBmaWxlIHN5c3RlbSBjaGFyYWN0ZXJzLCBlc3BlY2lhbGx5ICIvIi4K
LSAgICBTdHJpbmcgcmVzdWx0ID0gdGl0bGUucmVtb3ZlQ2hhcmFjdGVycyhpc0ludmFsaWRGaWxl
Q2hhcmFjdGVyKTsKLSAgICBTdHJpbmcgZXh0ZW5zaW9uID0gZGF0YU9iamVjdC0+ZmlsZUV4dGVu
c2lvbigpLnJlbW92ZUNoYXJhY3RlcnMoJmlzSW52YWxpZEZpbGVDaGFyYWN0ZXIpOwotCi0gICAg
Ly8gUmVtb3ZlIGEgcmlkaWN1bG91c2x5LWxvbmcgZXh0ZW5zaW9uLgotICAgIGlmIChleHRlbnNp
b24ubGVuZ3RoKCkgPj0gTWF4SEZTRmlsZW5hbWVMZW5ndGgpCi0gICAgICAgIGV4dGVuc2lvbiA9
ICIiOwotICAgIAotICAgIC8vIFRydW5jYXRlIGFuIG92ZXJseS1sb25nIGZpbGVuYW1lLgotICAg
IGludCBvdmVyZmxvdyA9IHJlc3VsdC5sZW5ndGgoKSArIGV4dGVuc2lvbi5sZW5ndGgoKSAtIE1h
eEhGU0ZpbGVuYW1lTGVuZ3RoOwotICAgIGlmIChvdmVyZmxvdyA+IDApIAotICAgICAgICByZXN1
bHQucmVtb3ZlKHJlc3VsdC5sZW5ndGgoKSAtIG92ZXJmbG93LCBvdmVyZmxvdyk7Ci0gICAgCi0g
ICAgZGF0YU9iamVjdC0+c2V0RmlsZUV4dGVuc2lvbihleHRlbnNpb24pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bVBvc2l4LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtUG9zaXguY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU0Y2I5OTQ1OGJmMDljNGU5YWUxNzk0MWQyY2NjNjEyNzFiNzE0MzEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9h
cmRDaHJvbWl1bVBvc2l4LmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Q2xpcGJvYXJkQ2hyb21pdW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBPbiBQT1NJ
WCBzeXN0ZW1zLCB0aGUgdHlwaWNhbCBmaWxlbmFtZSBsZW5ndGggbGltaXQgaXMgMjU1IGNoYXJh
Y3RlciB1bml0cy4gSEZTKydzIGxpbWl0IGlzCisvLyBhY3R1YWxseSAyNTUgVW5pY29kZSBjaGFy
YWN0ZXJzIHVzaW5nIEFwcGxlJ3MgbW9kaWZpY2F0aW9uIG9mIE5vcm16bGlhdGlvbiBGb3JtIEQs
IGJ1dCB0aGUKKy8vIGRpZmZlcmVuY2VzIGFyZW4ndCByZWFsbHkgd29ydGggZGVhbGluZyB3aXRo
IGhlcmUuCitzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4RmlsZW5hbWVMZW5ndGggPSAyNTU7CisK
K3N0YXRpYyBib29sIGlzSW52YWxpZEZpbGVDaGFyYWN0ZXIoVUNoYXIgYykKK3sKKyAgICAvLyBI
RlMrIGRpc2FsbG93cyAnLycgYW5kIExpbnV4IHN5c3RlbXMgYWxzbyBkaXNhbGxvdyBudWxsLiBG
b3Igc2FuaXR5J3Mgc2FrZSB3ZSdsbCBhbHNvCisgICAgLy8gZGlzYWxsb3cgY29udHJvbCBjaGFy
YWN0ZXJzLgorICAgIHJldHVybiBjIDwgJyAnIHx8IGMgPT0gMHg3RiB8fCBjID09ICcvJzsKK30K
Kwordm9pZCBDbGlwYm9hcmRDaHJvbWl1bTo6dmFsaWRhdGVGaWxlbmFtZShTdHJpbmcmIG5hbWUs
IFN0cmluZyYgZXh0ZW5zaW9uKQoreworICAgIC8vIFJlbW92ZSBhbnkgaW52YWxpZCBmaWxlIHN5
c3RlbSBjaGFyYWN0ZXJzLCBlc3BlY2lhbGx5ICIvIi4KKyAgICBuYW1lID0gbmFtZS5yZW1vdmVD
aGFyYWN0ZXJzKCZpc0ludmFsaWRGaWxlQ2hhcmFjdGVyKTsKKyAgICBleHRlbnNpb24gPSBleHRl
bnNpb24ucmVtb3ZlQ2hhcmFjdGVycygmaXNJbnZhbGlkRmlsZUNoYXJhY3Rlcik7CisKKyAgICAv
LyBSZW1vdmUgYSByaWRpY3Vsb3VzbHktbG9uZyBleHRlbnNpb24uCisgICAgaWYgKGV4dGVuc2lv
bi5sZW5ndGgoKSA+PSBtYXhGaWxlbmFtZUxlbmd0aCkKKyAgICAgICAgZXh0ZW5zaW9uID0gU3Ry
aW5nKCk7CisKKyAgICAvLyBUcnVuY2F0ZSBhbiBvdmVybHktbG9uZyBmaWxlbmFtZSwgcmVzZXJ2
aW5nIG9uZSBjaGFyYWN0ZXIgZm9yIGEgZG90LgorICAgIG5hbWUudHJ1bmNhdGUobWF4RmlsZW5h
bWVMZW5ndGggLSBleHRlbnNpb24ubGVuZ3RoKCkgLSAxKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xp
cGJvYXJkQ2hyb21pdW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
Q2xpcGJvYXJkQ2hyb21pdW1XaW4uY3BwCmluZGV4IGQ5YmJlYjVkZDNkMzdhMjU0ODkxNGFhYmNl
ZjAzZWQ5YWZjMGJjZDcuLjM5YjU4MDZjZGNhYTc3ZmY2MWE4ZDI3MWIxMzE5MmQwNmY3MDU5ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENo
cm9taXVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlw
Ym9hcmRDaHJvbWl1bVdpbi5jcHAKQEAgLTI3LDEyICsyNywxMyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkNsaXBib2FyZENocm9taXVtLmgiCiAKLSNpbmNsdWRlICJDaHJvbWl1
bURhdGFPYmplY3QuaCIKLQogI2luY2x1ZGUgPHNobHdhcGkuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCisvLyBGQVQzMiBhbmQgTlRGUyBib3RoIGxpbWl0IGZpbGVuYW1lcyB0byBhIG1heGlt
dW0gb2YgMjU1IGNoYXJhY3RlcnMuCitzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4RmlsZW5hbWVM
ZW5ndGggPSAyNTU7CisKIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIGNoYXJhY3Rl
ciBpcyBub3QgdmFsaWQgaW4gYSBmaWxlIG5hbWUuIFRoaXMKIC8vIGlzIGludGVuZGVkIGZvciB1
c2Ugd2l0aCByZW1vdmVDaGFyYWN0ZXJzLgogc3RhdGljIGJvb2wgaXNJbnZhbGlkRmlsZUNoYXJh
Y3RlcihVQ2hhciBjKQpAQCAtNDAsMTcgKzQxLDE3IEBAIHN0YXRpYyBib29sIGlzSW52YWxpZEZp
bGVDaGFyYWN0ZXIoVUNoYXIgYykKICAgICByZXR1cm4gKFBhdGhHZXRDaGFyVHlwZShjKSAmIChH
Q1RfTEZOQ0hBUiB8IEdDVF9TSE9SVENIQVIpKSA9PSAwOwogfQogCi1TdHJpbmcgQ2xpcGJvYXJk
Q2hyb21pdW06OnZhbGlkYXRlRmlsZU5hbWUoY29uc3QgU3RyaW5nJiB0aXRsZSwgQ2hyb21pdW1E
YXRhT2JqZWN0KiBkYXRhT2JqZWN0KQordm9pZCBDbGlwYm9hcmRDaHJvbWl1bTo6dmFsaWRhdGVG
aWxlbmFtZShTdHJpbmcmIG5hbWUsIFN0cmluZyYgZXh0ZW5zaW9uKQogewogICAgIC8vIFJlbW92
ZSBhbnkgaW52YWxpZCBmaWxlIHN5c3RlbSBjaGFyYWN0ZXJzLgotICAgIFN0cmluZyByZXN1bHQg
PSB0aXRsZS5yZW1vdmVDaGFyYWN0ZXJzKCZpc0ludmFsaWRGaWxlQ2hhcmFjdGVyKTsKLSAgICBp
ZiAocmVzdWx0Lmxlbmd0aCgpICsgZGF0YU9iamVjdC0+ZmlsZUV4dGVuc2lvbigpLmxlbmd0aCgp
ICsgMSA+PSBNQVhfUEFUSCkgewotICAgICAgICBpZiAoZGF0YU9iamVjdC0+ZmlsZUV4dGVuc2lv
bigpLmxlbmd0aCgpICsgMSA+PSBNQVhfUEFUSCkKLSAgICAgICAgICAgIGRhdGFPYmplY3QtPnNl
dEZpbGVFeHRlbnNpb24oIiIpOwotICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpICsgZGF0YU9i
amVjdC0+ZmlsZUV4dGVuc2lvbigpLmxlbmd0aCgpICsgMSA+PSBNQVhfUEFUSCkKLSAgICAgICAg
ICAgIHJlc3VsdCA9IHJlc3VsdC5zdWJzdHJpbmcoMCwgTUFYX1BBVEggLSBkYXRhT2JqZWN0LT5m
aWxlRXh0ZW5zaW9uKCkubGVuZ3RoKCkgLSAxKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICBuYW1lID0gbmFtZS5yZW1vdmVDaGFyYWN0ZXJzKCZpc0ludmFsaWRGaWxlQ2hhcmFjdGVy
KTsKKyAgICBleHRlbnNpb24gPSBleHRlbnNpb24ucmVtb3ZlQ2hhcmFjdGVycygmaXNJbnZhbGlk
RmlsZUNoYXJhY3Rlcik7CisKKyAgICBpZiAoZXh0ZW5zaW9uLmxlbmd0aCgpID49IG1heEZpbGVu
YW1lTGVuZ3RoKQorICAgICAgICBleHRlbnNpb24gPSBTdHJpbmcoKTsKKworICAgIC8vIFRydW5j
YXRlIG92ZXJseS1sb25nIGZpbGVuYW1lcywgcmVzZXJ2aW5nIG9uZSBjaGFyYWN0ZXIgZm9yIGEg
ZG90LgorICAgIG5hbWUudHJ1bmNhdGUobWF4RmlsZW5hbWVMZW5ndGggLSBleHRlbnNpb24ubGVu
Z3RoKCkgLSAxKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXBpCmluZGV4IDcwMjU5OTA1MTEwMWE0ZTlmM2MwODU5ZTc5MDE4OWU4OTcwM2Q1
ZmUuLjg0ZWNmYjgzZmQ5MWIxYTZmMDZlNDJhMjgwMDQyMzM1YmRjNGM3MTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtODQsNiArODQsNyBAQAogICAgICAgICAgICAgJ3Rlc3Rz
L0NDVGlsZWRMYXllckltcGxUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NUaHJlYWRU
YXNrVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDVGltZXJUZXN0LmNwcCcsCisgICAg
ICAgICAgICAndGVzdHMvQ2xpcGJvYXJkQ2hyb21pdW1UZXN0LmNwcCcsCiAgICAgICAgICAgICAn
dGVzdHMvQ29tcG9zaXRvckZha2VHcmFwaGljc0NvbnRleHQzRC5oJywKICAgICAgICAgICAgICd0
ZXN0cy9Db21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgnLAogICAgICAgICAgICAg
J3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NsaXBib2FyZENocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NsaXBib2FyZENocm9taXVtVGVzdC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjRjMTFhNGVjNjkzNzFhOGZhMmQ4MjJhNGM3MGQ3MjVkNmJiNDkyMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2xpcGJvYXJkQ2hyb21pdW1UZXN0
LmNwcApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQ2xp
cGJvYXJkQ2hyb21pdW0uaCIKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgeworCisjaWYgT1MoV0lORE9XUykKK2NvbnN0
IGNoYXIgaW52YWxpZENoYXJhY3RlcnNbXSA9ICJceDAwL1xcOio/XCI8PnwiOworI2Vsc2UKK2Nv
bnN0IGNoYXIgaW52YWxpZENoYXJhY3RlcnNbXSA9CisgICAgIlx4MDBceDAxXHgwMlx4MDNceDA0
XHgwNVx4MDZceDA3XHgwOFx4MDlceDBhXHgwYlx4MGNceDBkXHgwZVx4MGYiCisgICAgIlx4MTBc
eDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4
MWYiCisgICAgIlx4N2YvIjsKKyNlbmRpZgorY29uc3QgY2hhciBsb25nU3RyaW5nW10gPQorICAg
ICIwLDEsMSwyLDMsNSw4LDEzLDIxLDM0LDU1LDg5LDE0NCwyMzMsMzc3LDYxMCw5ODcsMTU5Nywy
NTg0LDQxODEsNjc2NSwxMDk0NiwxNzcxMSwyODY1Nyw0NjM2OCwiCisgICAgIjc1MDI1LDEyMTM5
MywxOTY0MTgsMzE3ODExLDUxNDIyOSw4MzIwNDAsMTM0NjI2OSwyMTc4MzA5LDM1MjQ1NzgsNTcw
Mjg4Nyw5MjI3NDY1LDE0OTMwMzUyIjsKKworVEVTVChDbGlwYm9hcmRDaHJvbWl1bVRlc3QsIE5v
cm1hbCkKK3sKKyAgICBTdHJpbmcgbmFtZSA9ICJuYW1lIjsKKyAgICBTdHJpbmcgZXh0ZW5zaW9u
ID0gImV4dCI7CisgICAgQ2xpcGJvYXJkQ2hyb21pdW06OnZhbGlkYXRlRmlsZW5hbWUobmFtZSwg
ZXh0ZW5zaW9uKTsKKyAgICBFWFBFQ1RfRVEoIm5hbWUiLCBuYW1lKTsKKyAgICBFWFBFQ1RfRVEo
ImV4dCIsIGV4dGVuc2lvbik7Cit9CisKK1RFU1QoQ2xpcGJvYXJkQ2hyb21pdW1UZXN0LCBJbnZh
bGlkQ2hhcmFjdGVycykKK3sKKyAgICBTdHJpbmcgbmFtZSA9IG1ha2VTdHJpbmcoIm5hIiwgU3Ry
aW5nKGludmFsaWRDaGFyYWN0ZXJzLCBhcnJheXNpemUoaW52YWxpZENoYXJhY3RlcnMpKSwgIm1l
Iik7CisgICAgU3RyaW5nIGV4dGVuc2lvbiA9IG1ha2VTdHJpbmcoImUiLCBTdHJpbmcoaW52YWxp
ZENoYXJhY3RlcnMsIGFycmF5c2l6ZShpbnZhbGlkQ2hhcmFjdGVycykpLCAieHQiKTsKKyAgICBD
bGlwYm9hcmRDaHJvbWl1bTo6dmFsaWRhdGVGaWxlbmFtZShuYW1lLCBleHRlbnNpb24pOworICAg
IEVYUEVDVF9FUSgibmFtZSIsIG5hbWUpOworICAgIEVYUEVDVF9FUSgiZXh0IiwgZXh0ZW5zaW9u
KTsKK30KKworVEVTVChDbGlwYm9hcmRDaHJvbWl1bVRlc3QsIEV4dGVuc2lvblRvb0xvbmcpCit7
CisgICAgU3RyaW5nIG5hbWU7CisgICAgU3RyaW5nIGV4dGVuc2lvbiA9IG1ha2VTdHJpbmcobG9u
Z1N0cmluZywgbG9uZ1N0cmluZyk7CisgICAgQ2xpcGJvYXJkQ2hyb21pdW06OnZhbGlkYXRlRmls
ZW5hbWUobmFtZSwgZXh0ZW5zaW9uKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCksIGV4dGVuc2lv
bik7Cit9CisKK1RFU1QoQ2xpcGJvYXJkQ2hyb21pdW1UZXN0LCBOYW1lUGx1c0V4dGVuc2lvblRv
b0xvbmcpCit7CisgICAgU3RyaW5nIG5hbWUgPSBtYWtlU3RyaW5nKGxvbmdTdHJpbmcsIGxvbmdT
dHJpbmcpOworICAgIFN0cmluZyBleHRlbnNpb24gPSBsb25nU3RyaW5nOworICAgIENsaXBib2Fy
ZENocm9taXVtOjp2YWxpZGF0ZUZpbGVuYW1lKG5hbWUsIGV4dGVuc2lvbik7CisgICAgRVhQRUNU
X0VRKCIwLDEsMSwyLDMsNSw4LDEzLDIxLDM0LDU1LDg5LDE0NCwyMzMsMzc3LDYxMCw5ODcsMTU5
NywyNTg0LDQxODEsNjc2NSwxMDkiLCBuYW1lKTsKKyAgICBFWFBFQ1RfRVEobG9uZ1N0cmluZywg
ZXh0ZW5zaW9uKTsKKyAgICBFWFBFQ1RfRVEoMjU0dSwgbmFtZS5sZW5ndGgoKSArIGV4dGVuc2lv
bi5sZW5ndGgoKSk7Cit9CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>