<?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>97474</bug_id>
          
          <creation_ts>2012-09-24 12:30:38 -0700</creation_ts>
          <short_desc>[Chromium] Remove screen-related functions from PlatformSupport</short_desc>
          <delta_ts>2012-10-24 16:20:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>82948</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Pilgrim (Google)">pilgrim</reporter>
          <assigned_to name="Mark Pilgrim (Google)">pilgrim</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>726920</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-24 12:30:38 -0700</bug_when>
    <thetext>[Chromium] Remove screen-related functions from PlatformSupport</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726921</commentid>
    <comment_count>1</comment_count>
      <attachid>165430</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-24 12:30:57 -0700</bug_when>
    <thetext>Created attachment 165430
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727988</commentid>
    <comment_count>2</comment_count>
      <attachid>165680</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-25 14:49:36 -0700</bug_when>
    <thetext>Created attachment 165680
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728006</commentid>
    <comment_count>3</comment_count>
      <attachid>165685</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-25 15:16:37 -0700</bug_when>
    <thetext>Created attachment 165685
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728065</commentid>
    <comment_count>4</comment_count>
      <attachid>165697</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-25 16:15:30 -0700</bug_when>
    <thetext>Created attachment 165697
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728078</commentid>
    <comment_count>5</comment_count>
      <attachid>165700</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-25 16:30:46 -0700</bug_when>
    <thetext>Created attachment 165700
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728702</commentid>
    <comment_count>6</comment_count>
      <attachid>165826</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-26 10:16:06 -0700</bug_when>
    <thetext>Created attachment 165826
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729834</commentid>
    <comment_count>7</comment_count>
      <attachid>166059</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-27 13:59:07 -0700</bug_when>
    <thetext>Created attachment 166059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729838</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 14:02:38 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729860</commentid>
    <comment_count>9</comment_count>
      <attachid>166059</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-27 14:23:36 -0700</bug_when>
    <thetext>Comment on attachment 166059
Patch

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

Very nice.

&gt; Source/Platform/chromium/public/WebScreenInfo.h:77
&gt; +        , isMonochrome(false) { }

Technically the { and } should each be on their own line.

&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:911
&gt; +

You&apos;ve got an extra blank line here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729919</commentid>
    <comment_count>10</comment_count>
      <attachid>166059</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 15:30:14 -0700</bug_when>
    <thetext>Comment on attachment 166059
Patch

Rejecting attachment 166059 from commit-queue.

New failing tests:
fast/media/media-svg-crash.html
fast/frames/iframe-display-none.html
fast/frames/crash-removed-iframe.html
Full output: http://queues.webkit.org/results/14061015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729968</commentid>
    <comment_count>11</comment_count>
      <attachid>166087</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-27 16:07:11 -0700</bug_when>
    <thetext>Created attachment 166087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729969</commentid>
    <comment_count>12</comment_count>
      <attachid>166087</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-27 16:08:11 -0700</bug_when>
    <thetext>Comment on attachment 166087
Patch

Now with guards against nonexistent objects in the screenInfo() call chain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729971</commentid>
    <comment_count>13</comment_count>
      <attachid>166087</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-27 16:09:44 -0700</bug_when>
    <thetext>Comment on attachment 166087
Patch

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

&gt; Source/WebCore/platform/chromium/PlatformScreenChromium.cpp:53
&gt; +    if (!widget)
&gt; +        return 0;
&gt; +    ScrollView* root = widget-&gt;root();
&gt; +    if (!root)
&gt; +        return 0;
&gt; +    HostWindow* hostWindow = root-&gt;hostWindow();
&gt; +    if (!hostWindow)
&gt; +        return 0;
&gt; +    return hostWindow-&gt;platformPageClient();

Can all these things really be 0?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729985</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-27 16:28:25 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 166087 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166087&amp;action=review
&gt; 
&gt; Can all these things really be 0?

root() was in several tests. Don&apos;t know about the others. The old code had tons of guards like this in the old PlatformSupport::toWebWidget() function, at every step of the call chain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730002</commentid>
    <comment_count>15</comment_count>
      <attachid>166087</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-27 16:46:36 -0700</bug_when>
    <thetext>Comment on attachment 166087
Patch

I checked hostWindow().  It can definitely be 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730008</commentid>
    <comment_count>16</comment_count>
      <attachid>166087</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 16:50:18 -0700</bug_when>
    <thetext>Comment on attachment 166087
Patch

Rejecting attachment 166087 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/WebKit/mac/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/14054099</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730022</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-27 17:00:50 -0700</bug_when>
    <thetext>I&apos;m not sure why the bot is having trouble today.  :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730056</commentid>
    <comment_count>18</comment_count>
      <attachid>166087</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 17:30:57 -0700</bug_when>
    <thetext>Comment on attachment 166087
Patch

Clearing flags on attachment: 166087

Committed r129825: &lt;http://trac.webkit.org/changeset/129825&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730057</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 17:31:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730632</commentid>
    <comment_count>20</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-28 07:16:04 -0700</bug_when>
    <thetext>Reverted r129825 for reason:

DOMWindow.resizeTo() is broken. Asked by Mark Pilgrim.

Committed r129894: &lt;http://trac.webkit.org/changeset/129894&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731980</commentid>
    <comment_count>21</comment_count>
      <attachid>166542</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-10-01 14:22:01 -0700</bug_when>
    <thetext>Created attachment 166542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731981</commentid>
    <comment_count>22</comment_count>
      <attachid>166542</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-10-01 14:24:09 -0700</bug_when>
    <thetext>Comment on attachment 166542
Patch

Includes patch from bug 97909, also implementing platformPageClient() on PagePopupChromeClient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732005</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-01 14:42:50 -0700</bug_when>
    <thetext>What&apos;s different in this patch from the previous patch?  Should we include a test so we don&apos;t make the same mistake again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749941</commentid>
    <comment_count>24</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-24 12:49:26 -0700</bug_when>
    <thetext>Looks like this one is ready to go?  With a reply from Mark and a review from Adam...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749944</commentid>
    <comment_count>25</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-10-24 12:51:37 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; What&apos;s different in this patch from the previous patch?  Should we include a test so we don&apos;t make the same mistake again?

What&apos;s different is that it includes the patch from bug 97909. Not sure how to make a test for it. Perhaps we could ask Keishi?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749952</commentid>
    <comment_count>26</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-10-24 13:01:41 -0700</bug_when>
    <thetext>FYI, the latest patch still applies cleanly to ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750010</commentid>
    <comment_count>27</comment_count>
      <attachid>166542</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-24 13:58:55 -0700</bug_when>
    <thetext>Comment on attachment 166542
Patch

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

&gt; Source/WebCore/platform/chromium/PlatformScreenChromium.cpp:92
&gt; +        return 0;

return false?

&gt; Source/WebCore/platform/chromium/PlatformScreenChromium.cpp:100
&gt; +        return IntRect();

return FloatRect() ?

&gt; Source/WebCore/platform/chromium/PlatformScreenChromium.cpp:108
&gt; +        return IntRect();

Return FloatRect() ?

&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:910
&gt; +

You&apos;ve got an extra blank line here.

&gt; Source/WebKit/chromium/src/PlatformSupport.cpp:-369
&gt; -        return 0;

I see.  This goofiness was here already.  We should still probably clean it up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750032</commentid>
    <comment_count>28</comment_count>
      <attachid>170469</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-10-24 14:15:49 -0700</bug_when>
    <thetext>Created attachment 170469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750034</commentid>
    <comment_count>29</comment_count>
      <attachid>170469</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-10-24 14:16:42 -0700</bug_when>
    <thetext>Comment on attachment 170469
Patch

Nits addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750176</commentid>
    <comment_count>30</comment_count>
      <attachid>170469</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 16:20:00 -0700</bug_when>
    <thetext>Comment on attachment 170469
Patch

Clearing flags on attachment: 170469

Committed r132419: &lt;http://trac.webkit.org/changeset/132419&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750178</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 16:20:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165430</attachid>
            <date>2012-09-24 12:30:57 -0700</date>
            <delta_ts>2012-09-25 14:49:31 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-97474-20120924153013.patch</filename>
            <type>text/plain</type>
            <size>16999</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTI0ICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFJlbW92
ZSBzY3JlZW4tcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBQbGF0Zm9ybVN1cHBvcnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NDc0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1h
dGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFk
ZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9XaWRnZXQuaDoKKyAgICAg
ICAgKFdpZGdldCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TY3JlZW5D
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Ib3Jpem9udGFsRFBJKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNjcmVlblZlcnRpY2FsRFBJKToKKyAgICAgICAgKFdlYkNvcmU6OnNj
cmVlbkRlcHRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbklzTW9ub2Nocm9tZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzY3JlZW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkF2YWlsYWJsZVJlY3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAo
UGxhdGZvcm1TdXBwb3J0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVdp
ZGdldC5oOgorICAgICAgICAoUGxhdGZvcm1XaWRnZXRDaHJvbWl1bSk6CisgICAgICAgIChXZWJD
b3JlKToKKwogMjAxMi0wOS0yNCAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IEZpeCB0aGUgaW5jb3JyZWN0bHkgc3BlbGxl
ZCBSVENQZWVyQ29ubmVjdGlvbjo6b25uZWdvdGlhdGlvbm5lZWRlZCBjYWxsYmFjawpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgJKHJldmlzaW9uIDEyOTM1OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1dpZGdldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAK
ICNpZiBQTEFURk9STShDSFJPTUlVTSkKICNpbmNsdWRlICJQbGF0Zm9ybVdpZGdldC5oIgorI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4gIC8vIGZvciBpbnRwdHJfdAogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShNQUMpCkBAIC05Myw2ICs5NCw4IEBAIHR5cGVkZWYgUGFnZUNsaWVudEJsYWNr
QmVycnkqIFBsYXRmb3JtUGEKICNlbGlmIFBMQVRGT1JNKEVGTCkKIGNsYXNzIFBhZ2VDbGllbnRF
Zmw7CiB0eXBlZGVmIFBhZ2VDbGllbnRFZmwqIFBsYXRmb3JtUGFnZUNsaWVudDsKKyNlbGlmIFBM
QVRGT1JNKENIUk9NSVVNKQordHlwZWRlZiBpbnRwdHJfdCBQbGF0Zm9ybVBhZ2VDbGllbnQ7CiAj
ZWxzZQogdHlwZWRlZiBQbGF0Zm9ybVdpZGdldCBQbGF0Zm9ybVBhZ2VDbGllbnQ7CiAjZW5kaWYK
QEAgLTEyNSw5ICsxMjgsOSBAQCBlbnVtIFdpZGdldE5vdGlmaWNhdGlvbiB7IFdpbGxQYWludEZs
YXR0CiAvLyBTY3JvbGxiYXIgLSBNYWMsIEd0awogLy8gUGx1Z2luIC0gTWFjLCBXaW5kb3dzICh3
aW5kb3dlZCBvbmx5KSwgUXQgKHdpbmRvd2VkIG9ubHksIHdpZGdldCBpcyBhbiBIV05EIG9uIHdp
bmRvd3MpLCBHdGsgKHdpbmRvd2VkIG9ubHkpCiAvLwotY2xhc3MgV2lkZ2V0IDogcHVibGljIFJl
ZkNvdW50ZWQ8V2lkZ2V0PiB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgV2lkZ2V0KFBsYXRmb3Jt
V2lkZ2V0ID0gMCk7CisgY2xhc3MgV2lkZ2V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2lkZ2V0PiB7
CisgcHVibGljOgorICAgICBleHBsaWNpdCBXaWRnZXQoUGxhdGZvcm1XaWRnZXQgPSAwKTsKICAg
ICB2aXJ0dWFsIH5XaWRnZXQoKTsKIAogICAgIFBsYXRmb3JtV2lkZ2V0IHBsYXRmb3JtV2lkZ2V0
KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVNjcmVlbkNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QbGF0Zm9ybVNjcmVlbkNocm9taXVtLmNwcAkocmV2aXNpb24gMTI5MzU4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TY3JlZW5DaHJvbWl1
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMCBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgotCiAjaW5jbHVkZSAiSW50
UmVjdC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
U2NyZWVuLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XaWRnZXQuaCIKKyNpbmNsdWRlICJXaWRnZXQu
aCIKIAogI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogCkBAIC00MCwzNyArNDAsMzcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbnQgc2NyZWVuSG9yaXpvbnRhbERQSShXaWRnZXQqIHdp
ZGdldCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5Ib3Jpem9udGFsRFBJ
KHdpZGdldCk7CisgICAgcmV0dXJuIHdpZGdldC0+cGxhdGZvcm1XaWRnZXQoKS0+c2NyZWVuSG9y
aXpvbnRhbERQSSgpOwogfQogCiBpbnQgc2NyZWVuVmVydGljYWxEUEkoV2lkZ2V0KiB3aWRnZXQp
CiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuVmVydGljYWxEUEkod2lkZ2V0
KTsKKyAgICByZXR1cm4gd2lkZ2V0LT5wbGF0Zm9ybVdpZGdldCgpLT5zY3JlZW5WZXJ0aWNhbERQ
SSgpOwogfQogCiBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJu
IFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuRGVwdGgod2lkZ2V0KTsKKyAgICByZXR1cm4gd2lkZ2V0
LT5wbGF0Zm9ybVdpZGdldCgpLT5zY3JlZW5EZXB0aCgpOwogfQogCiBpbnQgc2NyZWVuRGVwdGhQ
ZXJDb21wb25lbnQoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9y
dDo6c2NyZWVuRGVwdGhQZXJDb21wb25lbnQod2lkZ2V0KTsKKyAgICByZXR1cm4gd2lkZ2V0LT5w
bGF0Zm9ybVdpZGdldCgpLT5zY3JlZW5EZXB0aFBlckNvbXBvbmVudCgpOwogfQogCiBib29sIHNj
cmVlbklzTW9ub2Nocm9tZShXaWRnZXQqIHdpZGdldCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1T
dXBwb3J0OjpzY3JlZW5Jc01vbm9jaHJvbWUod2lkZ2V0KTsKKyAgICByZXR1cm4gd2lkZ2V0LT5w
bGF0Zm9ybVdpZGdldCgpLT5zY3JlZW5Jc01vbm9jaHJvbWUoKTsKIH0KIAogRmxvYXRSZWN0IHNj
cmVlblJlY3QoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6
c2NyZWVuUmVjdCh3aWRnZXQpOworICAgIHJldHVybiB3aWRnZXQtPnBsYXRmb3JtV2lkZ2V0KCkt
PnNjcmVlblJlY3QoKTsKIH0KIAogRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0
KiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuQXZhaWxhYmxl
UmVjdCh3aWRnZXQpOworICAgIHJldHVybiB3aWRnZXQtPnBsYXRmb3JtV2lkZ2V0KCktPnNjcmVl
bkF2YWlsYWJsZVJlY3QoKTsKIH0KIAogdm9pZCBzY3JlZW5Db2xvclByb2ZpbGUoQ29sb3JQcm9m
aWxlJiB0b1Byb2ZpbGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
bGF0Zm9ybVN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAkocmV2aXNpb24gMTI5MzU4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTExMCwxNSArMTEwLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHBsdWdpbnMoYm9v
bCByZWZyZXNoLCBWZWN0b3I8UGx1Z2luSW5mbz4qKTsKICAgICBzdGF0aWMgTlBPYmplY3QqIHBs
dWdpblNjcmlwdGFibGVPYmplY3QoV2lkZ2V0Kik7CiAKLSAgICAvLyBTY3JlZW4gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAg
IHN0YXRpYyBpbnQgc2NyZWVuSG9yaXpvbnRhbERQSShXaWRnZXQqKTsKLSAgICBzdGF0aWMgaW50
IHNjcmVlblZlcnRpY2FsRFBJKFdpZGdldCopOwotICAgIHN0YXRpYyBpbnQgc2NyZWVuRGVwdGgo
V2lkZ2V0Kik7Ci0gICAgc3RhdGljIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudChXaWRnZXQq
KTsKLSAgICBzdGF0aWMgYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0Kik7Ci0gICAgc3Rh
dGljIEludFJlY3Qgc2NyZWVuUmVjdChXaWRnZXQqKTsKLSAgICBzdGF0aWMgSW50UmVjdCBzY3Jl
ZW5BdmFpbGFibGVSZWN0KFdpZGdldCopOwotCiAgICAgLy8gVGhlbWluZyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICNpZiBPUyhX
SU5ET1dTKQogICAgIHN0YXRpYyB2b2lkIHBhaW50QnV0dG9uKApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1XaWRnZXQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVdpZGdldC5oCShyZXZpc2lvbiAx
MjkzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVdpZGdl
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMiArMzEsMjMgQEAKICNpZm5kZWYgUGxhdGZvcm1X
aWRnZXRfaAogI2RlZmluZSBQbGF0Zm9ybVdpZGdldF9oCiAKLSNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+ICAvLyBmb3IgaW50cHRyX3QKKyNpbmNsdWRlICJJbnRSZWN0LmgiCiAKLS8vIFBs
YXRmb3JtV2lkZ2V0IGlzIGFuIG9wYXF1ZSBpZGVudGlmaWVyIGNvcnJlc3BvbmRpbmcgdG8gd2hh
dGV2ZXIgbmF0aXZlCi0vLyB2aWV3IHR5cGUgdGhlIGVtYmVkZGVyIG1heSB1c2UuICBQbGF0Zm9y
bVdpZGdldCBDQU5OT1QgYmUgYXNzdW1lZCB0byBiZQotLy8gYSB2YWxpZCBwb2ludGVyLiAgU29t
ZSBlbWJlZGRlcnMgbWF5IG5vdCB1c2UgdGhpcyBpZGVudGlmaWVyIGF0IGFsbC4KK25hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBpbnRwdHJfdCBQbGF0Zm9ybVdpZGdldDsKK2NsYXNzIFBs
YXRmb3JtV2lkZ2V0Q2hyb21pdW0geworcHVibGljOgorICAgIHZpcnR1YWwgaW50IHNjcmVlbkhv
cml6b250YWxEUEkoKTsKKyAgICB2aXJ0dWFsIGludCBzY3JlZW5WZXJ0aWNhbERQSSgpOworICAg
IHZpcnR1YWwgaW50IHNjcmVlbkRlcHRoKCk7CisgICAgdmlydHVhbCBpbnQgc2NyZWVuRGVwdGhQ
ZXJDb21wb25lbnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2NyZWVuSXNNb25vY2hyb21lKCk7Cisg
ICAgdmlydHVhbCBJbnRSZWN0IHNjcmVlblJlY3QoKTsKKyAgICB2aXJ0dWFsIEludFJlY3Qgc2Ny
ZWVuQXZhaWxhYmxlUmVjdCgpOworfTsKIAotI2VuZGlmCit0eXBlZGVmIFBsYXRmb3JtV2lkZ2V0
Q2hyb21pdW0qIFBsYXRmb3JtV2lkZ2V0OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBQbGF0Zm9ybVdpZGdldF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
cmV2aXNpb24gMTI5Mzk4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wOS0yNCAgTWFyayBQaWxncmltICA8
cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBSZW1vdmUgc2NyZWVu
LXJlbGF0ZWQgZnVuY3Rpb25zIGZyb20gUGxhdGZvcm1TdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzQ3NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2Yg
dGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1
bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5
cDoKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIHNyYy9QbGF0Zm9ybVdpZGdldEltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtV2lkZ2V0SW1wbDo6c2NyZWVuSG9y
aXpvbnRhbERQSSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtV2lkZ2V0SW1wbDo6c2NyZWVu
VmVydGljYWxEUEkpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVdpZGdldEltcGw6OnNjcmVl
bkRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1XaWRnZXRJbXBsOjpzY3JlZW5EZXB0
aFBlckNvbXBvbmVudCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtV2lkZ2V0SW1wbDo6c2Ny
ZWVuSXNNb25vY2hyb21lKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1XaWRnZXRJbXBsOjpz
Y3JlZW5SZWN0KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1XaWRnZXRJbXBsOjpzY3JlZW5B
dmFpbGFibGVSZWN0KToKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1XaWRnZXRJbXBsLmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBsYXRmb3JtV2lkZ2V0SW1wbCk6CisgICAg
ICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1w
bDo6Y3JlYXRlRnJhbWVWaWV3KToKKwogMjAxMi0wOS0yNCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBSb2xsZWQgREVQUy4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDEyOTM1OCkKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtNDQ5LDYgKzQ0OSw4IEBA
CiAgICAgICAgICAgICAgICAgJ3NyYy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwJywKKyAgICAgICAgICAgICAgICAn
c3JjL1BsYXRmb3JtV2lkZ2V0SW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvUGxhdGZv
cm1XaWRnZXRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvU2Nyb2xsYmFyR3JvdXAuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1Njcm9sbGJhckdyb3VwLmgnLAogICAgICAgICAgICAg
ICAgICdzcmMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAnLApJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCShyZXZpc2lvbiAxMjkzNTgp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NzksNjIgKzQ3OSw2IEBAIHZvaWQgUGxhdGZvcm1TdXBwb3J0OjpwYWlu
dFRoZW1lUGFydCgKIC8vIEdsdWUgbGF5ZXIuIE9uY2UgdGhlIEdsdWUgbGF5ZXIgbW92ZXMgZW50
aXJlbHkgaW50byB0aGUgV2ViS2l0IGxheWVyLCB0aGVzZQogLy8gbWV0aG9kcyB3aWxsIGJlIGRl
bGV0ZWQuCiAKLWludCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkhvcml6b250YWxEUEkoV2lkZ2V0
KiB3aWRnZXQpCi17Ci0gICAgV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdldENs
aWVudCh3aWRnZXQpOwotICAgIGlmICghY2xpZW50KQotICAgICAgICByZXR1cm4gMDsKLSAgICBy
ZXR1cm4gY2xpZW50LT5zY3JlZW5JbmZvKCkuaG9yaXpvbnRhbERQSTsKLX0KLQotaW50IFBsYXRm
b3JtU3VwcG9ydDo6c2NyZWVuVmVydGljYWxEUEkoV2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAgV2Vi
V2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVudCh3aWRnZXQpOwotICAgIGlm
ICghY2xpZW50KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gY2xpZW50LT5zY3JlZW5J
bmZvKCkudmVydGljYWxEUEk7Ci19Ci0KLWludCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkRlcHRo
KFdpZGdldCogd2lkZ2V0KQotewotICAgIFdlYldpZGdldENsaWVudCogY2xpZW50ID0gdG9XZWJX
aWRnZXRDbGllbnQod2lkZ2V0KTsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgcmV0dXJuIGNsaWVudC0+c2NyZWVuSW5mbygpLmRlcHRoOwotfQotCi1pbnQgUGxhdGZv
cm1TdXBwb3J0OjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudChXaWRnZXQqIHdpZGdldCkKLXsKLSAg
ICBXZWJXaWRnZXRDbGllbnQqIGNsaWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7Ci0g
ICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBjbGllbnQtPnNj
cmVlbkluZm8oKS5kZXB0aFBlckNvbXBvbmVudDsKLX0KLQotYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6
OnNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBXZWJXaWRnZXRDbGll
bnQqIGNsaWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7Ci0gICAgaWYgKCFjbGllbnQp
Ci0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8oKS5pc01v
bm9jaHJvbWU7Ci19Ci0KLUludFJlY3QgUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5SZWN0KFdpZGdl
dCogd2lkZ2V0KQotewotICAgIFdlYldpZGdldENsaWVudCogY2xpZW50ID0gdG9XZWJXaWRnZXRD
bGllbnQod2lkZ2V0KTsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJuIEludFJlY3Qo
KTsKLSAgICByZXR1cm4gY2xpZW50LT5zY3JlZW5JbmZvKCkucmVjdDsKLX0KLQotSW50UmVjdCBQ
bGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aWRnZXQpCi17Ci0g
ICAgV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVudCh3aWRnZXQpOwot
ICAgIGlmICghY2xpZW50KQotICAgICAgICByZXR1cm4gSW50UmVjdCgpOwotICAgIHJldHVybiBj
bGllbnQtPnNjcmVlbkluZm8oKS5hdmFpbGFibGVSZWN0OwotfQotCiAjaWYgRU5BQkxFKFdPUktF
UlMpCiBXb3JrZXJDb250ZXh0UHJveHkqIFdvcmtlckNvbnRleHRQcm94eTo6Y3JlYXRlKFdvcmtl
ciogd29ya2VyKQogewpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1X
aWRnZXRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Q
bGF0Zm9ybVdpZGdldEltcGwuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvUGxhdGZvcm1XaWRnZXRJbXBsLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdpZGdldC5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworICAgIC8vUGxhdGZvcm1XaWRnZXRJbXBsOjpQbGF0Zm9ybVdp
ZGdldEltcGwoV2ViQmF0dGVyeVN0YXR1c0NsaWVudCogY2xpZW50KQorICAgIC8vICAgIDogbV9j
bGllbnQoY2xpZW50KQorICAgIC8vICAgICwgbV9jb250cm9sbGVyKDApCisgICAgLy97CisgICAg
Ly99CisKK2ludCBQbGF0Zm9ybVdpZGdldEltcGw6OnNjcmVlbkhvcml6b250YWxEUEkoV2lkZ2V0
KiB3aWRnZXQpCit7CisgICAgV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdldENs
aWVudCh3aWRnZXQpOworICAgIGlmICghY2xpZW50KQorICAgICAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gY2xpZW50LT5zY3JlZW5JbmZvKCkuaG9yaXpvbnRhbERQSTsKK30KKworaW50IFBsYXRm
b3JtV2lkZ2V0SW1wbDo6c2NyZWVuVmVydGljYWxEUEkoV2lkZ2V0KiB3aWRnZXQpCit7CisgICAg
V2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVudCh3aWRnZXQpOworICAg
IGlmICghY2xpZW50KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gY2xpZW50LT5zY3Jl
ZW5JbmZvKCkudmVydGljYWxEUEk7Cit9CisKK2ludCBQbGF0Zm9ybVdpZGdldEltcGw6OnNjcmVl
bkRlcHRoKFdpZGdldCogd2lkZ2V0KQoreworICAgIFdlYldpZGdldENsaWVudCogY2xpZW50ID0g
dG9XZWJXaWRnZXRDbGllbnQod2lkZ2V0KTsKKyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIGNsaWVudC0+c2NyZWVuSW5mbygpLmRlcHRoOworfQorCitpbnQg
UGxhdGZvcm1XaWRnZXRJbXBsOjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudChXaWRnZXQqIHdpZGdl
dCkKK3sKKyAgICBXZWJXaWRnZXRDbGllbnQqIGNsaWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50KHdp
ZGdldCk7CisgICAgaWYgKCFjbGllbnQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBj
bGllbnQtPnNjcmVlbkluZm8oKS5kZXB0aFBlckNvbXBvbmVudDsKK30KKworYm9vbCBQbGF0Zm9y
bVdpZGdldEltcGw6OnNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBX
ZWJXaWRnZXRDbGllbnQqIGNsaWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7CisgICAg
aWYgKCFjbGllbnQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBjbGllbnQtPnNjcmVl
bkluZm8oKS5pc01vbm9jaHJvbWU7Cit9CisKK0ludFJlY3QgUGxhdGZvcm1XaWRnZXRJbXBsOjpz
Y3JlZW5SZWN0KFdpZGdldCogd2lkZ2V0KQoreworICAgIFdlYldpZGdldENsaWVudCogY2xpZW50
ID0gdG9XZWJXaWRnZXRDbGllbnQod2lkZ2V0KTsKKyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAg
cmV0dXJuIEludFJlY3QoKTsKKyAgICByZXR1cm4gY2xpZW50LT5zY3JlZW5JbmZvKCkucmVjdDsK
K30KKworSW50UmVjdCBQbGF0Zm9ybVdpZGdldEltcGw6OnNjcmVlbkF2YWlsYWJsZVJlY3QoV2lk
Z2V0KiB3aWRnZXQpCit7CisgICAgV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdl
dENsaWVudCh3aWRnZXQpOworICAgIGlmICghY2xpZW50KQorICAgICAgICByZXR1cm4gSW50UmVj
dCgpOworICAgIHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8oKS5hdmFpbGFibGVSZWN0OworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1BsYXRmb3JtV2lkZ2V0SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1BsYXRmb3JtV2lkZ2V0SW1wbC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1XaWRnZXRJbXBsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFBsYXRmb3JtV2lkZ2V0SW1wbF9oCisjZGVmaW5lIFBsYXRmb3JtV2lk
Z2V0SW1wbF9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVdpZGdldC5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgUGxhdGZvcm1XaWRnZXRJbXBsIDogcHVibGljIFdlYkNvcmU6OlBsYXRm
b3JtV2lkZ2V0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGludCBzY3JlZW5Ib3Jpem9udGFsRFBJ
KCk7CisgICAgdmlydHVhbCBpbnQgc2NyZWVuVmVydGljYWxEUEkoKTsKKyAgICB2aXJ0dWFsIGlu
dCBzY3JlZW5EZXB0aCgpOworICAgIHZpcnR1YWwgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50
KCk7CisgICAgdmlydHVhbCBib29sIHNjcmVlbklzTW9ub2Nocm9tZSgpOworICAgIHZpcnR1YWwg
SW50UmVjdCBzY3JlZW5SZWN0KCk7CisgICAgdmlydHVhbCBJbnRSZWN0IHNjcmVlbkF2YWlsYWJs
ZVJlY3QoKTsKK307CisKK30gLy8gbmFtZXNwY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQbGF0Zm9y
bVdpZGdldEltcGxfaApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuY3BwCShyZXZpc2lvbiAxMjkzNTgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGcmFtZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzg5LDYgKzIzODksNyBAQCB2
b2lkIFdlYkZyYW1lSW1wbDo6Y3JlYXRlRnJhbWVWaWV3KCkKICAgICBXZWJWaWV3SW1wbCogd2Vi
VmlldyA9IHZpZXdJbXBsKCk7CiAgICAgYm9vbCBpc01haW5GcmFtZSA9IHdlYlZpZXctPm1haW5G
cmFtZUltcGwoKS0+ZnJhbWUoKSA9PSBtX2ZyYW1lOwogICAgIG1fZnJhbWUtPmNyZWF0ZVZpZXco
d2ViVmlldy0+c2l6ZSgpLCBDb2xvcjo6d2hpdGUsIHdlYlZpZXctPmlzVHJhbnNwYXJlbnQoKSwg
IHdlYlZpZXctPmZpeGVkTGF5b3V0U2l6ZSgpLCBpc01haW5GcmFtZSA/IHdlYlZpZXctPmlzRml4
ZWRMYXlvdXRNb2RlRW5hYmxlZCgpIDogMCk7CisgICAgbV9mcmFtZS0+dmlldygpLT5zZXRQbGF0
Zm9ybVdpZGdldChtX2ZyYW1lLT52aWV3KCkpOwogICAgIGlmICh3ZWJWaWV3LT5zaG91bGRBdXRv
UmVzaXplKCkgJiYgaXNNYWluRnJhbWUpCiAgICAgICAgIG1fZnJhbWUtPnZpZXcoKS0+ZW5hYmxl
QXV0b1NpemVNb2RlKHRydWUsIHdlYlZpZXctPm1pbkF1dG9TaXplKCksIHdlYlZpZXctPm1heEF1
dG9TaXplKCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165680</attachid>
            <date>2012-09-25 14:49:36 -0700</date>
            <delta_ts>2012-09-25 15:16:30 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-97474-20120925174848.patch</filename>
            <type>text/plain</type>
            <size>23512</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5NTU2KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA5LTI1ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFJl
bW92ZSBzY3JlZW4tcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBQbGF0Zm9ybVN1cHBvcnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NDc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZv
cm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNl
IGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAg
KiBQbGF0Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZv
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNjcmVlbkluZm8pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTY3JlZW5JbmZvOjpXZWJTY3JlZW5JbmZvKToKKwogMjAxMi0w
OS0yNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyOTUxNy4KSW5kZXg6IFNvdXJjZS9QbGF0Zm9y
bS9QbGF0Zm9ybS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5n
eXBpCShyZXZpc2lvbiAxMjk1NTUpCisrKyBTb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQko
d29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYlJlY3QuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJlZmVy
cmVyUG9saWN5LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSZW5kZXJpbmdT
dGF0cy5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJMYXllci5oJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oJywKSW5kZXg6IFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNjcmVlbkluZm9faAorI2Rl
ZmluZSBXZWJTY3JlZW5JbmZvX2gKKworI2luY2x1ZGUgIldlYlJlY3QuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3N0cnVjdCBXZWJTY3JlZW5JbmZvIHsKKyAgICAvLyBUaGUgaG9yaXpvbnRh
bCBzY3JlZW4gZHBpLgorICAgIGludCBob3Jpem9udGFsRFBJOworCisgICAgLy8gVGhlIHZlcnRp
Y2FsIHNjcmVlbiBkcGkuCisgICAgaW50IHZlcnRpY2FsRFBJOworCisgICAgLy8gVGhlIHNjcmVl
biBkZXB0aCBpbiBiaXRzIHBlciBwaXhlbAorICAgIGludCBkZXB0aDsKKworICAgIC8vIFRoZSBi
aXRzIHBlciBjb2xvdXIgY29tcG9uZW50LiBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgY29sb3VycyBh
cmUgYmFsYW5jZWQKKyAgICAvLyBlcXVhbGx5LgorICAgIGludCBkZXB0aFBlckNvbXBvbmVudDsK
KworICAgIC8vIFRoaXMgY2FuIGJlIHRydWUgZm9yIGJsYWNrIGFuZCB3aGl0ZSBwcmludGVycwor
ICAgIGJvb2wgaXNNb25vY2hyb21lOworCisgICAgLy8gVGhpcyBpcyBzZXQgZnJvbSB0aGUgcmNN
b25pdG9yIG1lbWJlciBvZiBNT05JVE9SSU5GT0VYLCB0byB3aGl0OgorICAgIC8vICAgIkEgUkVD
VCBzdHJ1Y3R1cmUgdGhhdCBzcGVjaWZpZXMgdGhlIGRpc3BsYXkgbW9uaXRvciByZWN0YW5nbGUs
CisgICAgLy8gICBleHByZXNzZWQgaW4gdmlydHVhbC1zY3JlZW4gY29vcmRpbmF0ZXMuIE5vdGUg
dGhhdCBpZiB0aGUgbW9uaXRvcgorICAgIC8vICAgaXMgbm90IHRoZSBwcmltYXJ5IGRpc3BsYXkg
bW9uaXRvciwgc29tZSBvZiB0aGUgcmVjdGFuZ2xlJ3MKKyAgICAvLyAgIGNvb3JkaW5hdGVzIG1h
eSBiZSBuZWdhdGl2ZSB2YWx1ZXMuIgorICAgIFdlYlJlY3QgcmVjdDsKKworICAgIC8vIFRoaXMg
aXMgc2V0IGZyb20gdGhlIHJjV29yayBtZW1iZXIgb2YgTU9OSVRPUklORk9FWCwgdG8gd2hpdDoK
KyAgICAvLyAgICJBIFJFQ1Qgc3RydWN0dXJlIHRoYXQgc3BlY2lmaWVzIHRoZSB3b3JrIGFyZWEg
cmVjdGFuZ2xlIG9mIHRoZQorICAgIC8vICAgZGlzcGxheSBtb25pdG9yIHRoYXQgY2FuIGJlIHVz
ZWQgYnkgYXBwbGljYXRpb25zLCBleHByZXNzZWQgaW4KKyAgICAvLyAgIHZpcnR1YWwtc2NyZWVu
IGNvb3JkaW5hdGVzLiBXaW5kb3dzIHVzZXMgdGhpcyByZWN0YW5nbGUgdG8KKyAgICAvLyAgIG1h
eGltaXplIGFuIGFwcGxpY2F0aW9uIG9uIHRoZSBtb25pdG9yLiBUaGUgcmVzdCBvZiB0aGUgYXJl
YSBpbgorICAgIC8vICAgcmNNb25pdG9yIGNvbnRhaW5zIHN5c3RlbSB3aW5kb3dzIHN1Y2ggYXMg
dGhlIHRhc2sgYmFyIGFuZCBzaWRlCisgICAgLy8gICBiYXJzLiBOb3RlIHRoYXQgaWYgdGhlIG1v
bml0b3IgaXMgbm90IHRoZSBwcmltYXJ5IGRpc3BsYXkgbW9uaXRvciwKKyAgICAvLyAgIHNvbWUg
b2YgdGhlIHJlY3RhbmdsZSdzIGNvb3JkaW5hdGVzIG1heSBiZSBuZWdhdGl2ZSB2YWx1ZXMiLgor
ICAgIFdlYlJlY3QgYXZhaWxhYmxlUmVjdDsKKworICAgIFdlYlNjcmVlbkluZm8oKQorICAgICAg
ICA6IGhvcml6b250YWxEUEkoMCkKKyAgICAgICAgLCB2ZXJ0aWNhbERQSSgwKQorICAgICAgICAs
IGRlcHRoKDApCisgICAgICAgICwgZGVwdGhQZXJDb21wb25lbnQoMCkKKyAgICAgICAgLCBpc01v
bm9jaHJvbWUoZmFsc2UpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5NTU2KQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTItMDktMjUgIE1hcmsg
UGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gUmVt
b3ZlIHNjcmVlbi1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIFBsYXRmb3JtU3VwcG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc0NzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9y
bWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2Ug
YWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgIChIb3N0V2luZG93KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9XaWRnZXQuaDoKKyAgICAgICAgKFdpZGdldCk6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vUGFnZUNsaWVudENocm9taXVtLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtV2lkZ2V0LmguCisgICAgICAgIChQYWdlQ2xp
ZW50Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1TY3JlZW5DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Ib3Jpem9udGFsRFBJKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlblZlcnRpY2FsRFBJKToK
KyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkRlcHRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVl
bkRlcHRoUGVyQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbklzTW9ub2Nocm9t
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNj
cmVlbkF2YWlsYWJsZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3Jt
U3VwcG9ydC5oOgorICAgICAgICAoUGxhdGZvcm1TdXBwb3J0KToKKwogMjAxMi0wOS0yNSAgQWRh
bSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIERP
TUF0dHJNb2RpZmllZCBmcm9tIEV2ZW50c05hbWVzIGFuZCBEb2N1bWVudDo6TGlzdGVuZXJUeXBl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMjk1NTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTQ2NzAsNiArNDY3MCw3IEBACiAgICAg
ICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vTGlua0hhc2hDaHJvbWl1bS5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL01lbW9yeVVzYWdlU3VwcG9ydENocm9taXVtLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vTUlNRVR5cGVSZWdpc3RyeUNocm9taXVt
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGFnZUNsaWVudENocm9taXVt
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVt
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1DdXJzb3IuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Q2hy
b21pdW0uY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHJldmlz
aW9uIDEyOTU1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsOSBAQAogI2RlZmluZSBIb3N0V2luZG93X2gKIAogI2lu
Y2x1ZGUgIldpZGdldC5oIgorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJTY3JlZW5JbmZvLmg+CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03
Myw2ICs3NiwxMCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
KQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpID0gMDsKICNlbmRpZgorCisj
aWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgdmlydHVhbCBXZWJLaXQ6OldlYlNjcmVlbkluZm8g
c2NyZWVuSW5mbygpID0gMDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgJKHJldmlzaW9uIDEyOTU1NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3
IEBACiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKICNpbmNsdWRlICJQbGF0Zm9ybVdpZGdldC5o
IgorI2luY2x1ZGUgIlBhZ2VDbGllbnRDaHJvbWl1bS5oIgogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShNQUMpCkBAIC0xMjUsOSArMTI2LDkgQEAgZW51bSBXaWRnZXROb3RpZmljYXRpb24geyBXaWxs
UGFpbnRGbGF0dAogLy8gU2Nyb2xsYmFyIC0gTWFjLCBHdGsKIC8vIFBsdWdpbiAtIE1hYywgV2lu
ZG93cyAod2luZG93ZWQgb25seSksIFF0ICh3aW5kb3dlZCBvbmx5LCB3aWRnZXQgaXMgYW4gSFdO
RCBvbiB3aW5kb3dzKSwgR3RrICh3aW5kb3dlZCBvbmx5KQogLy8KLWNsYXNzIFdpZGdldCA6IHB1
YmxpYyBSZWZDb3VudGVkPFdpZGdldD4gewotcHVibGljOgotICAgIGV4cGxpY2l0IFdpZGdldChQ
bGF0Zm9ybVdpZGdldCA9IDApOworIGNsYXNzIFdpZGdldCA6IHB1YmxpYyBSZWZDb3VudGVkPFdp
ZGdldD4geworIHB1YmxpYzoKKyAgICAgZXhwbGljaXQgV2lkZ2V0KFBsYXRmb3JtV2lkZ2V0ID0g
MCk7CiAgICAgdmlydHVhbCB+V2lkZ2V0KCk7CiAKICAgICBQbGF0Zm9ybVdpZGdldCBwbGF0Zm9y
bVdpZGdldCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UGFnZUNsaWVudENocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGFnZUNsaWVudENocm9taXVtLmgJKHJldmlzaW9uIDEyOTM1OCkJKGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1XaWRnZXQuaDoxMjkzNTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYWdlQ2xpZW50Q2hyb21pdW0u
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAy
MDA4LCAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZv
cm1XaWRnZXRfaAorI2RlZmluZSBQbGF0Zm9ybVdpZGdldF9oCisKKyNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+ICAvLyBmb3IgaW50cHRyX3QKKworLy8gUGxhdGZvcm1XaWRnZXQgaXMgYW4g
b3BhcXVlIGlkZW50aWZpZXIgY29ycmVzcG9uZGluZyB0byB3aGF0ZXZlciBuYXRpdmUKKy8vIHZp
ZXcgdHlwZSB0aGUgZW1iZWRkZXIgbWF5IHVzZS4gIFBsYXRmb3JtV2lkZ2V0IENBTk5PVCBiZSBh
c3N1bWVkIHRvIGJlCisvLyBhIHZhbGlkIHBvaW50ZXIuICBTb21lIGVtYmVkZGVycyBtYXkgbm90
IHVzZSB0aGlzIGlkZW50aWZpZXIgYXQgYWxsLgorCit0eXBlZGVmIGludHB0cl90IFBsYXRmb3Jt
V2lkZ2V0OworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1BhZ2VDbGllbnRDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BhZ2VDbGllbnRDaHJvbWl1bS5oCShyZXZpc2lvbiAxMjk1MzApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYWdlQ2xpZW50Q2hyb21pdW0uaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIw
MDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsMTUgKzI4LDIyIEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgUGxhdGZvcm1XaWRnZXRfaAotI2RlZmluZSBQbGF0Zm9ybVdpZGdldF9oCisj
aWZuZGVmIFBhZ2VDbGllbnRDaHJvbWl1bV9oCisjZGVmaW5lIFBhZ2VDbGllbnRDaHJvbWl1bV9o
CiAKLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+ICAvLyBmb3IgaW50cHRyX3QKKyNpbmNs
dWRlICJJbnRSZWN0LmgiCiAKLS8vIFBsYXRmb3JtV2lkZ2V0IGlzIGFuIG9wYXF1ZSBpZGVudGlm
aWVyIGNvcnJlc3BvbmRpbmcgdG8gd2hhdGV2ZXIgbmF0aXZlCi0vLyB2aWV3IHR5cGUgdGhlIGVt
YmVkZGVyIG1heSB1c2UuICBQbGF0Zm9ybVdpZGdldCBDQU5OT1QgYmUgYXNzdW1lZCB0byBiZQot
Ly8gYSB2YWxpZCBwb2ludGVyLiAgU29tZSBlbWJlZGRlcnMgbWF5IG5vdCB1c2UgdGhpcyBpZGVu
dGlmaWVyIGF0IGFsbC4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU2NyZWVuSW5mby5oPgogCi10eXBl
ZGVmIGludHB0cl90IFBsYXRmb3JtV2lkZ2V0OworbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jZW5k
aWYKK2NsYXNzIFBhZ2VDbGllbnRDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgdmlydHVhbCBXZWJL
aXQ6OldlYlNjcmVlbkluZm8gc2NyZWVuSW5mbygpOworfTsKKwordHlwZWRlZiBQYWdlQ2xpZW50
Q2hyb21pdW0qIFBsYXRmb3JtUGFnZUNsaWVudDsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gUGFnZUNsaWVudENocm9taXVtX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU2NyZWVuQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU2NyZWVuQ2hyb21pdW0u
Y3BwCShyZXZpc2lvbiAxMjk1NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9QbGF0Zm9ybVNjcmVlbkNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNDYgKzMx
LDQ5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIK
IAotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKKyNp
bmNsdWRlICJIb3N0V2luZG93LmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAi
U2Nyb2xsVmlldy5oIgorI2luY2x1ZGUgIldpZGdldC5oIgogCiAjaW5jbHVkZSA8cHVibGljL1Bs
YXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNjcmVlbkluZm8uaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBpbnQgc2NyZWVuSG9yaXpvbnRhbERQSShXaWRnZXQqIHdpZGdldCkKIHsK
LSAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5Ib3Jpem9udGFsRFBJKHdpZGdldCk7
CisgICAgcmV0dXJuIHdpZGdldC0+cm9vdCgpLT5ob3N0V2luZG93KCktPnNjcmVlbkluZm8oKS5o
b3Jpem9udGFsRFBJOwogfQogCiBpbnQgc2NyZWVuVmVydGljYWxEUEkoV2lkZ2V0KiB3aWRnZXQp
CiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuVmVydGljYWxEUEkod2lkZ2V0
KTsKKyAgICByZXR1cm4gd2lkZ2V0LT5yb290KCktPmhvc3RXaW5kb3coKS0+c2NyZWVuSW5mbygp
LnZlcnRpY2FsRFBJOwogfQogCiBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0g
ICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuRGVwdGgod2lkZ2V0KTsKKyAgICByZXR1
cm4gd2lkZ2V0LT5yb290KCktPmhvc3RXaW5kb3coKS0+c2NyZWVuSW5mbygpLmRlcHRoOwogfQog
CiBpbnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0
dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuRGVwdGhQZXJDb21wb25lbnQod2lkZ2V0KTsKKyAg
ICByZXR1cm4gd2lkZ2V0LT5yb290KCktPmhvc3RXaW5kb3coKS0+c2NyZWVuSW5mbygpLmRlcHRo
UGVyQ29tcG9uZW50OwogfQogCiBib29sIHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqIHdpZGdl
dCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5Jc01vbm9jaHJvbWUod2lk
Z2V0KTsKKyAgICByZXR1cm4gd2lkZ2V0LT5yb290KCktPmhvc3RXaW5kb3coKS0+c2NyZWVuSW5m
bygpLmlzTW9ub2Nocm9tZTsKIH0KIAogRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0KiB3aWRn
ZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuUmVjdCh3aWRnZXQpOwor
ICAgIHJldHVybiBJbnRSZWN0KHdpZGdldC0+cm9vdCgpLT5ob3N0V2luZG93KCktPnNjcmVlbklu
Zm8oKS5yZWN0KTsKIH0KIAogRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3
aWRnZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuQXZhaWxhYmxlUmVj
dCh3aWRnZXQpOworICAgIHJldHVybiBJbnRSZWN0KHdpZGdldC0+cm9vdCgpLT5ob3N0V2luZG93
KCktPnNjcmVlbkluZm8oKS5hdmFpbGFibGVSZWN0KTsKIH0KIAogdm9pZCBzY3JlZW5Db2xvclBy
b2ZpbGUoQ29sb3JQcm9maWxlJiB0b1Byb2ZpbGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAkocmV2aXNpb24gMTI5NTU1
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTk4LDE1ICs5OCw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBwbHVnaW5zKGJvb2wgcmVmcmVzaCwgVmVjdG9yPFBsdWdpbkluZm8+Kik7CiAgICAgc3RhdGlj
IE5QT2JqZWN0KiBwbHVnaW5TY3JpcHRhYmxlT2JqZWN0KFdpZGdldCopOwogCi0gICAgLy8gU2Ny
ZWVuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLSAgICBzdGF0aWMgaW50IHNjcmVlbkhvcml6b250YWxEUEkoV2lkZ2V0Kik7Ci0g
ICAgc3RhdGljIGludCBzY3JlZW5WZXJ0aWNhbERQSShXaWRnZXQqKTsKLSAgICBzdGF0aWMgaW50
IHNjcmVlbkRlcHRoKFdpZGdldCopOwotICAgIHN0YXRpYyBpbnQgc2NyZWVuRGVwdGhQZXJDb21w
b25lbnQoV2lkZ2V0Kik7Ci0gICAgc3RhdGljIGJvb2wgc2NyZWVuSXNNb25vY2hyb21lKFdpZGdl
dCopOwotICAgIHN0YXRpYyBJbnRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0Kik7Ci0gICAgc3RhdGlj
IEludFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqKTsKLQogICAgIC8vIFRoZW1pbmcg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAjaWYgT1MoV0lORE9XUykKICAgICBzdGF0aWMgdm9pZCBwYWludEJ1dHRvbigKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjk1NTYpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisy
MDEyLTA5LTI1ICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBbQ2hyb21pdW1dIFJlbW92ZSBzY3JlZW4tcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBQbGF0Zm9y
bVN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk3NDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJh
dGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BT
ISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViU2NyZWVuSW5mby5oOgorICAgICAgICAqIHNyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6
c2NyZWVuSW5mbyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGll
bnRJbXBsLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGll
bnRJbXBsOjpwbGF0Zm9ybVBhZ2VDbGllbnQpOgorICAgICAgICAoQ2hyb21lQ2xpZW50SW1wbCk6
CisgICAgICAgICogc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KwogMjAxMi0wOS0yNSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mzk3CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oCShyZXZpc2lvbiAx
Mjk1NTUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDU1ICsyOCw0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgV2ViU2NyZWVuSW5mb19oCi0jZGVmaW5lIFdlYlNjcmVlbkluZm9faAotCi0jaW5j
bHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0
IFdlYlNjcmVlbkluZm8gewotICAgIC8vIFRoZSBob3Jpem9udGFsIHNjcmVlbiBkcGkuCi0gICAg
aW50IGhvcml6b250YWxEUEk7Ci0KLSAgICAvLyBUaGUgdmVydGljYWwgc2NyZWVuIGRwaS4KLSAg
ICBpbnQgdmVydGljYWxEUEk7Ci0KLSAgICAvLyBUaGUgc2NyZWVuIGRlcHRoIGluIGJpdHMgcGVy
IHBpeGVsCi0gICAgaW50IGRlcHRoOwotCi0gICAgLy8gVGhlIGJpdHMgcGVyIGNvbG91ciBjb21w
b25lbnQuIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBjb2xvdXJzIGFyZSBiYWxhbmNlZAotICAgIC8v
IGVxdWFsbHkuCi0gICAgaW50IGRlcHRoUGVyQ29tcG9uZW50OwotCi0gICAgLy8gVGhpcyBjYW4g
YmUgdHJ1ZSBmb3IgYmxhY2sgYW5kIHdoaXRlIHByaW50ZXJzCi0gICAgYm9vbCBpc01vbm9jaHJv
bWU7Ci0KLSAgICAvLyBUaGlzIGlzIHNldCBmcm9tIHRoZSByY01vbml0b3IgbWVtYmVyIG9mIE1P
TklUT1JJTkZPRVgsIHRvIHdoaXQ6Ci0gICAgLy8gICAiQSBSRUNUIHN0cnVjdHVyZSB0aGF0IHNw
ZWNpZmllcyB0aGUgZGlzcGxheSBtb25pdG9yIHJlY3RhbmdsZSwKLSAgICAvLyAgIGV4cHJlc3Nl
ZCBpbiB2aXJ0dWFsLXNjcmVlbiBjb29yZGluYXRlcy4gTm90ZSB0aGF0IGlmIHRoZSBtb25pdG9y
Ci0gICAgLy8gICBpcyBub3QgdGhlIHByaW1hcnkgZGlzcGxheSBtb25pdG9yLCBzb21lIG9mIHRo
ZSByZWN0YW5nbGUncwotICAgIC8vICAgY29vcmRpbmF0ZXMgbWF5IGJlIG5lZ2F0aXZlIHZhbHVl
cy4iCi0gICAgV2ViUmVjdCByZWN0OwotCi0gICAgLy8gVGhpcyBpcyBzZXQgZnJvbSB0aGUgcmNX
b3JrIG1lbWJlciBvZiBNT05JVE9SSU5GT0VYLCB0byB3aGl0OgotICAgIC8vICAgIkEgUkVDVCBz
dHJ1Y3R1cmUgdGhhdCBzcGVjaWZpZXMgdGhlIHdvcmsgYXJlYSByZWN0YW5nbGUgb2YgdGhlCi0g
ICAgLy8gICBkaXNwbGF5IG1vbml0b3IgdGhhdCBjYW4gYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMs
IGV4cHJlc3NlZCBpbgotICAgIC8vICAgdmlydHVhbC1zY3JlZW4gY29vcmRpbmF0ZXMuIFdpbmRv
d3MgdXNlcyB0aGlzIHJlY3RhbmdsZSB0bwotICAgIC8vICAgbWF4aW1pemUgYW4gYXBwbGljYXRp
b24gb24gdGhlIG1vbml0b3IuIFRoZSByZXN0IG9mIHRoZSBhcmVhIGluCi0gICAgLy8gICByY01v
bml0b3IgY29udGFpbnMgc3lzdGVtIHdpbmRvd3Mgc3VjaCBhcyB0aGUgdGFzayBiYXIgYW5kIHNp
ZGUKLSAgICAvLyAgIGJhcnMuIE5vdGUgdGhhdCBpZiB0aGUgbW9uaXRvciBpcyBub3QgdGhlIHBy
aW1hcnkgZGlzcGxheSBtb25pdG9yLAotICAgIC8vICAgc29tZSBvZiB0aGUgcmVjdGFuZ2xlJ3Mg
Y29vcmRpbmF0ZXMgbWF5IGJlIG5lZ2F0aXZlIHZhbHVlcyIuCi0gICAgV2ViUmVjdCBhdmFpbGFi
bGVSZWN0OwotCi0gICAgV2ViU2NyZWVuSW5mbygpCi0gICAgICAgIDogaG9yaXpvbnRhbERQSSgw
KQotICAgICAgICAsIHZlcnRpY2FsRFBJKDApCi0gICAgICAgICwgZGVwdGgoMCkKLSAgICAgICAg
LCBkZXB0aFBlckNvbXBvbmVudCgwKQotICAgICAgICAsIGlzTW9ub2Nocm9tZShmYWxzZSkgeyB9
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCisjaW5jbHVkZSAiLi4vLi4v
Li4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcmVlbkluZm8uaCIKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCShyZXZpc2lv
biAxMjk1NTUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAzLDYgKzkwMywxMiBAQCB2b2lkIENocm9tZUNsaWVu
dEltcGw6OnBvc3RBY2Nlc3NpYmlsaXR5CiAgICAgICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPnBv
c3RBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKFdlYkFjY2Vzc2liaWxpdHlPYmplY3Qob2JqKSwg
dG9XZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbikpOwogfQogCitXZWJL
aXQ6OldlYlNjcmVlbkluZm8gQ2hyb21lQ2xpZW50SW1wbDo6c2NyZWVuSW5mbygpCit7CisgICAg
cmV0dXJuIG1fd2ViVmlldy0+Y2xpZW50KCktPnNjcmVlbkluZm8oKTsKK30KKworCiBib29sIENo
cm9tZUNsaWVudEltcGw6OnBhaW50Q3VzdG9tT3ZlcmhhbmdBcmVhKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50
UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsK
ICAgICBGcmFtZSogZnJhbWUgPSBtX3dlYlZpZXctPm1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJ
KHJldmlzaW9uIDEyOTU1NSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTAgKzYwLDEyIEBAIGNsYXNzIFdlYkNv
bG9yQ2hvb3NlcjsKIGNsYXNzIFdlYkNvbG9yQ2hvb3NlckNsaWVudDsKIGNsYXNzIFdlYlZpZXdJ
bXBsOwogc3RydWN0IFdlYkN1cnNvckluZm87CitzdHJ1Y3QgV2ViU2NyZWVuSW5mbzsKIHN0cnVj
dCBXZWJQb3B1cE1lbnVJbmZvOwogCiAvLyBIYW5kbGVzIHdpbmRvdy1sZXZlbCBub3RpZmljYXRp
b25zIGZyb20gV2ViQ29yZSBvbiBiZWhhbGYgb2YgYSBXZWJWaWV3LgotY2xhc3MgQ2hyb21lQ2xp
ZW50SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnRDaHJvbWl1bSB7CitjbGFzcyBD
aHJvbWVDbGllbnRJbXBsIDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNsaWVudENocm9taXVtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJDb3JlOjpQYWdlQ2xpZW50Q2hyb21p
dW0gewogcHVibGljOgogICAgIGV4cGxpY2l0IENocm9tZUNsaWVudEltcGwoV2ViVmlld0ltcGwq
IHdlYlZpZXcpOwogICAgIHZpcnR1YWwgfkNocm9tZUNsaWVudEltcGwoKTsKQEAgLTEyMyw3ICsx
MjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0
KTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvUm9vdFZpZXcoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qg
cm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Q7Ci0gICAgdmly
dHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgeyByZXR1
cm4gMDsgfQorICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xpZW50IHBsYXRmb3JtUGFnZUNsaWVu
dCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTaXpl
Q2hhbmdlZChXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0VXBkYXRlZChXZWJDb3JlOjpGcmFtZSopIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSZWN0SW50b1ZpZXcoCkBAIC0xOTQsNiArMTk2LDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwb3B1cENsb3NlZChXZWJDb3JlOjpQb3B1cENvbnRh
aW5lciogcG9wdXBDb250YWluZXIpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb24pOwogCisgICAgLy8gUGFnZUNsaWVudENocm9taXVt
IG1ldGhvZHM6CisgICAgdmlydHVhbCBXZWJTY3JlZW5JbmZvIHNjcmVlbkluZm8oKTsKKwogICAg
IC8vIENocm9tZUNsaWVudEltcGw6CiAgICAgdm9pZCBzZXRDdXJzb3JGb3JQbHVnaW4oY29uc3Qg
V2ViQ3Vyc29ySW5mbyYpOwogICAgIHZvaWQgc2V0TmV3V2luZG93TmF2aWdhdGlvblBvbGljeShX
ZWJOYXZpZ2F0aW9uUG9saWN5KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Bs
YXRmb3JtU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkocmV2aXNpb24gMTI5NTU1KQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAw
LDMwICsxMDAsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBXZWJXaWRnZXRDbGllbnQqIHRvV2ViV2lkZ2V0Q2xpZW50KFdpZGdldCog
d2lkZ2V0KQotewotICAgIGlmICghd2lkZ2V0KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEZy
YW1lVmlldyogdmlldzsKLSAgICBpZiAod2lkZ2V0LT5pc0ZyYW1lVmlldygpKQotICAgICAgICB2
aWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lkZ2V0KTsKLSAgICBlbHNlIGlmICh3aWRn
ZXQtPnBhcmVudCgpICYmIHdpZGdldC0+cGFyZW50KCktPmlzRnJhbWVWaWV3KCkpCi0gICAgICAg
IHZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPih3aWRnZXQtPnBhcmVudCgpKTsKLSAgICBl
bHNlCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUGFnZSogcGFnZSA9IHZpZXctPmZyYW1lKCkg
PyB2aWV3LT5mcmFtZSgpLT5wYWdlKCkgOiAwOwotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICB2b2lkKiB3ZWJWaWV3ID0gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53
ZWJWaWV3KCk7Ci0gICAgaWYgKCF3ZWJWaWV3KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KHdlYlZpZXcpLT5jbGllbnQoKTsKLX0KLQog
c3RhdGljIFdlYkNvb2tpZUphciogZ2V0Q29va2llSmFyKGNvbnN0IERvY3VtZW50KiBkb2N1bWVu
dCkKIHsKICAgICBXZWJGcmFtZUltcGwqIGZyYW1lSW1wbCA9IFdlYkZyYW1lSW1wbDo6ZnJvbUZy
YW1lKGRvY3VtZW50LT5mcmFtZSgpKTsKQEAgLTQ2MSw2MiArNDM3LDYgQEAgdm9pZCBQbGF0Zm9y
bVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KAogLy8gR2x1ZSBsYXllci4gT25jZSB0aGUgR2x1ZSBs
YXllciBtb3ZlcyBlbnRpcmVseSBpbnRvIHRoZSBXZWJLaXQgbGF5ZXIsIHRoZXNlCiAvLyBtZXRo
b2RzIHdpbGwgYmUgZGVsZXRlZC4KIAotaW50IFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuSG9yaXpv
bnRhbERQSShXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBXZWJXaWRnZXRDbGllbnQqIGNsaWVudCA9
IHRvV2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJl
dHVybiAwOwotICAgIHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8oKS5ob3Jpem9udGFsRFBJOwot
fQotCi1pbnQgUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5WZXJ0aWNhbERQSShXaWRnZXQqIHdpZGdl
dCkKLXsKLSAgICBXZWJXaWRnZXRDbGllbnQqIGNsaWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50KHdp
ZGdldCk7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBj
bGllbnQtPnNjcmVlbkluZm8oKS52ZXJ0aWNhbERQSTsKLX0KLQotaW50IFBsYXRmb3JtU3VwcG9y
dDo6c2NyZWVuRGVwdGgoV2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAgV2ViV2lkZ2V0Q2xpZW50KiBj
bGllbnQgPSB0b1dlYldpZGdldENsaWVudCh3aWRnZXQpOwotICAgIGlmICghY2xpZW50KQotICAg
ICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gY2xpZW50LT5zY3JlZW5JbmZvKCkuZGVwdGg7Ci19
Ci0KLWludCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCog
d2lkZ2V0KQotewotICAgIFdlYldpZGdldENsaWVudCogY2xpZW50ID0gdG9XZWJXaWRnZXRDbGll
bnQod2lkZ2V0KTsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0
dXJuIGNsaWVudC0+c2NyZWVuSW5mbygpLmRlcHRoUGVyQ29tcG9uZW50OwotfQotCi1ib29sIFBs
YXRmb3JtU3VwcG9ydDo6c2NyZWVuSXNNb25vY2hyb21lKFdpZGdldCogd2lkZ2V0KQotewotICAg
IFdlYldpZGdldENsaWVudCogY2xpZW50ID0gdG9XZWJXaWRnZXRDbGllbnQod2lkZ2V0KTsKLSAg
ICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGNsaWVudC0+c2Ny
ZWVuSW5mbygpLmlzTW9ub2Nocm9tZTsKLX0KLQotSW50UmVjdCBQbGF0Zm9ybVN1cHBvcnQ6OnNj
cmVlblJlY3QoV2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAgV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQg
PSB0b1dlYldpZGdldENsaWVudCh3aWRnZXQpOwotICAgIGlmICghY2xpZW50KQotICAgICAgICBy
ZXR1cm4gSW50UmVjdCgpOwotICAgIHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8oKS5yZWN0Owot
fQotCi1JbnRSZWN0IFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQq
IHdpZGdldCkKLXsKLSAgICBXZWJXaWRnZXRDbGllbnQqIGNsaWVudCA9IHRvV2ViV2lkZ2V0Q2xp
ZW50KHdpZGdldCk7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVybiBJbnRSZWN0KCk7
Ci0gICAgcmV0dXJuIGNsaWVudC0+c2NyZWVuSW5mbygpLmF2YWlsYWJsZVJlY3Q7Ci19Ci0KICNp
ZiBFTkFCTEUoV09SS0VSUykKIFdvcmtlckNvbnRleHRQcm94eSogV29ya2VyQ29udGV4dFByb3h5
OjpjcmVhdGUoV29ya2VyKiB3b3JrZXIpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165685</attachid>
            <date>2012-09-25 15:16:37 -0700</date>
            <delta_ts>2012-09-25 16:15:28 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-97474-20120925181549.patch</filename>
            <type>text/plain</type>
            <size>23052</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5NTU4KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA5LTI1ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFJl
bW92ZSBzY3JlZW4tcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBQbGF0Zm9ybVN1cHBvcnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NDc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZv
cm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNl
IGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAg
KiBQbGF0Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZv
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNjcmVlbkluZm8pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTY3JlZW5JbmZvOjpXZWJTY3JlZW5JbmZvKToKKwogMjAxMi0w
OS0yNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyOTUxNy4KSW5kZXg6IFNvdXJjZS9QbGF0Zm9y
bS9QbGF0Zm9ybS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5n
eXBpCShyZXZpc2lvbiAxMjk1NTgpCisrKyBTb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQko
d29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYlJlY3QuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJlZmVy
cmVyUG9saWN5LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSZW5kZXJpbmdT
dGF0cy5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJMYXllci5oJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oJywKSW5kZXg6IFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNjcmVlbkluZm9faAorI2Rl
ZmluZSBXZWJTY3JlZW5JbmZvX2gKKworI2luY2x1ZGUgIldlYlJlY3QuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3N0cnVjdCBXZWJTY3JlZW5JbmZvIHsKKyAgICAvLyBUaGUgaG9yaXpvbnRh
bCBzY3JlZW4gZHBpLgorICAgIGludCBob3Jpem9udGFsRFBJOworCisgICAgLy8gVGhlIHZlcnRp
Y2FsIHNjcmVlbiBkcGkuCisgICAgaW50IHZlcnRpY2FsRFBJOworCisgICAgLy8gVGhlIHNjcmVl
biBkZXB0aCBpbiBiaXRzIHBlciBwaXhlbAorICAgIGludCBkZXB0aDsKKworICAgIC8vIFRoZSBi
aXRzIHBlciBjb2xvdXIgY29tcG9uZW50LiBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgY29sb3VycyBh
cmUgYmFsYW5jZWQKKyAgICAvLyBlcXVhbGx5LgorICAgIGludCBkZXB0aFBlckNvbXBvbmVudDsK
KworICAgIC8vIFRoaXMgY2FuIGJlIHRydWUgZm9yIGJsYWNrIGFuZCB3aGl0ZSBwcmludGVycwor
ICAgIGJvb2wgaXNNb25vY2hyb21lOworCisgICAgLy8gVGhpcyBpcyBzZXQgZnJvbSB0aGUgcmNN
b25pdG9yIG1lbWJlciBvZiBNT05JVE9SSU5GT0VYLCB0byB3aGl0OgorICAgIC8vICAgIkEgUkVD
VCBzdHJ1Y3R1cmUgdGhhdCBzcGVjaWZpZXMgdGhlIGRpc3BsYXkgbW9uaXRvciByZWN0YW5nbGUs
CisgICAgLy8gICBleHByZXNzZWQgaW4gdmlydHVhbC1zY3JlZW4gY29vcmRpbmF0ZXMuIE5vdGUg
dGhhdCBpZiB0aGUgbW9uaXRvcgorICAgIC8vICAgaXMgbm90IHRoZSBwcmltYXJ5IGRpc3BsYXkg
bW9uaXRvciwgc29tZSBvZiB0aGUgcmVjdGFuZ2xlJ3MKKyAgICAvLyAgIGNvb3JkaW5hdGVzIG1h
eSBiZSBuZWdhdGl2ZSB2YWx1ZXMuIgorICAgIFdlYlJlY3QgcmVjdDsKKworICAgIC8vIFRoaXMg
aXMgc2V0IGZyb20gdGhlIHJjV29yayBtZW1iZXIgb2YgTU9OSVRPUklORk9FWCwgdG8gd2hpdDoK
KyAgICAvLyAgICJBIFJFQ1Qgc3RydWN0dXJlIHRoYXQgc3BlY2lmaWVzIHRoZSB3b3JrIGFyZWEg
cmVjdGFuZ2xlIG9mIHRoZQorICAgIC8vICAgZGlzcGxheSBtb25pdG9yIHRoYXQgY2FuIGJlIHVz
ZWQgYnkgYXBwbGljYXRpb25zLCBleHByZXNzZWQgaW4KKyAgICAvLyAgIHZpcnR1YWwtc2NyZWVu
IGNvb3JkaW5hdGVzLiBXaW5kb3dzIHVzZXMgdGhpcyByZWN0YW5nbGUgdG8KKyAgICAvLyAgIG1h
eGltaXplIGFuIGFwcGxpY2F0aW9uIG9uIHRoZSBtb25pdG9yLiBUaGUgcmVzdCBvZiB0aGUgYXJl
YSBpbgorICAgIC8vICAgcmNNb25pdG9yIGNvbnRhaW5zIHN5c3RlbSB3aW5kb3dzIHN1Y2ggYXMg
dGhlIHRhc2sgYmFyIGFuZCBzaWRlCisgICAgLy8gICBiYXJzLiBOb3RlIHRoYXQgaWYgdGhlIG1v
bml0b3IgaXMgbm90IHRoZSBwcmltYXJ5IGRpc3BsYXkgbW9uaXRvciwKKyAgICAvLyAgIHNvbWUg
b2YgdGhlIHJlY3RhbmdsZSdzIGNvb3JkaW5hdGVzIG1heSBiZSBuZWdhdGl2ZSB2YWx1ZXMiLgor
ICAgIFdlYlJlY3QgYXZhaWxhYmxlUmVjdDsKKworICAgIFdlYlNjcmVlbkluZm8oKQorICAgICAg
ICA6IGhvcml6b250YWxEUEkoMCkKKyAgICAgICAgLCB2ZXJ0aWNhbERQSSgwKQorICAgICAgICAs
IGRlcHRoKDApCisgICAgICAgICwgZGVwdGhQZXJDb21wb25lbnQoMCkKKyAgICAgICAgLCBpc01v
bm9jaHJvbWUoZmFsc2UpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5NTU4KQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTItMDktMjUgIE1hcmsg
UGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gUmVt
b3ZlIHNjcmVlbi1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIFBsYXRmb3JtU3VwcG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc0NzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9y
bWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2Ug
YWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgIChIb3N0V2luZG93KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9XaWRnZXQuaDoKKyAgICAgICAgKFdpZGdldCk6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vUGFnZUNsaWVudENocm9taXVtLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtV2lkZ2V0LmguCisgICAgICAgIChQYWdlQ2xp
ZW50Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1TY3JlZW5DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Ib3Jpem9udGFsRFBJKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlblZlcnRpY2FsRFBJKToK
KyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkRlcHRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVl
bkRlcHRoUGVyQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbklzTW9ub2Nocm9t
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNj
cmVlbkF2YWlsYWJsZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3Jt
U3VwcG9ydC5oOgorICAgICAgICAoUGxhdGZvcm1TdXBwb3J0KToKKwogMjAxMi0wOS0yNSAgQWRh
bSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIERP
TUF0dHJNb2RpZmllZCBmcm9tIEV2ZW50c05hbWVzIGFuZCBEb2N1bWVudDo6TGlzdGVuZXJUeXBl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMjk1NTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTQ2NzAsNiArNDY3MCw3IEBACiAgICAg
ICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vTGlua0hhc2hDaHJvbWl1bS5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL01lbW9yeVVzYWdlU3VwcG9ydENocm9taXVtLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vTUlNRVR5cGVSZWdpc3RyeUNocm9taXVt
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGFnZUNsaWVudENocm9taXVt
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVt
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1DdXJzb3IuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Q2hy
b21pdW0uY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCShyZXZpc2lvbiAxMjk1
NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNiArMzMsNyBAQAogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAjaW5jbHVkZSAiUGxh
dGZvcm1XaWRnZXQuaCIKKyNpbmNsdWRlICJQYWdlQ2xpZW50Q2hyb21pdW0uaCIKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTI1LDkgKzEyNiw5IEBAIGVudW0gV2lkZ2V0Tm90aWZp
Y2F0aW9uIHsgV2lsbFBhaW50RmxhdHQKIC8vIFNjcm9sbGJhciAtIE1hYywgR3RrCiAvLyBQbHVn
aW4gLSBNYWMsIFdpbmRvd3MgKHdpbmRvd2VkIG9ubHkpLCBRdCAod2luZG93ZWQgb25seSwgd2lk
Z2V0IGlzIGFuIEhXTkQgb24gd2luZG93cyksIEd0ayAod2luZG93ZWQgb25seSkKIC8vCi1jbGFz
cyBXaWRnZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXaWRnZXQ+IHsKLXB1YmxpYzoKLSAgICBleHBs
aWNpdCBXaWRnZXQoUGxhdGZvcm1XaWRnZXQgPSAwKTsKKyBjbGFzcyBXaWRnZXQgOiBwdWJsaWMg
UmVmQ291bnRlZDxXaWRnZXQ+IHsKKyBwdWJsaWM6CisgICAgIGV4cGxpY2l0IFdpZGdldChQbGF0
Zm9ybVdpZGdldCA9IDApOwogICAgIHZpcnR1YWwgfldpZGdldCgpOwogCiAgICAgUGxhdGZvcm1X
aWRnZXQgcGxhdGZvcm1XaWRnZXQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BhZ2VDbGllbnRDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BhZ2VDbGllbnRDaHJvbWl1bS5oCShyZXZpc2lvbiAx
MjkzNTgpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtV2lk
Z2V0Lmg6MTI5MzU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFnZUNs
aWVudENocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAwOCwgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFBsYXRmb3JtV2lkZ2V0X2gKKyNkZWZpbmUgUGxhdGZvcm1XaWRnZXRfaAorCisjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPiAgLy8gZm9yIGludHB0cl90CisKKy8vIFBsYXRmb3Jt
V2lkZ2V0IGlzIGFuIG9wYXF1ZSBpZGVudGlmaWVyIGNvcnJlc3BvbmRpbmcgdG8gd2hhdGV2ZXIg
bmF0aXZlCisvLyB2aWV3IHR5cGUgdGhlIGVtYmVkZGVyIG1heSB1c2UuICBQbGF0Zm9ybVdpZGdl
dCBDQU5OT1QgYmUgYXNzdW1lZCB0byBiZQorLy8gYSB2YWxpZCBwb2ludGVyLiAgU29tZSBlbWJl
ZGRlcnMgbWF5IG5vdCB1c2UgdGhpcyBpZGVudGlmaWVyIGF0IGFsbC4KKwordHlwZWRlZiBpbnRw
dHJfdCBQbGF0Zm9ybVdpZGdldDsKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QYWdlQ2xpZW50Q2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYWdlQ2xpZW50Q2hyb21pdW0uaAkocmV2aXNpb24g
MTI5NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFnZUNsaWVudENo
cm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChjKSAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChjKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDE1ICsyOCwyMiBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBsYXRmb3JtV2lkZ2V0X2gKLSNkZWZpbmUgUGxhdGZv
cm1XaWRnZXRfaAorI2lmbmRlZiBQYWdlQ2xpZW50Q2hyb21pdW1faAorI2RlZmluZSBQYWdlQ2xp
ZW50Q2hyb21pdW1faAogCi0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPiAgLy8gZm9yIGlu
dHB0cl90CisjaW5jbHVkZSAiSW50UmVjdC5oIgogCi0vLyBQbGF0Zm9ybVdpZGdldCBpcyBhbiBv
cGFxdWUgaWRlbnRpZmllciBjb3JyZXNwb25kaW5nIHRvIHdoYXRldmVyIG5hdGl2ZQotLy8gdmll
dyB0eXBlIHRoZSBlbWJlZGRlciBtYXkgdXNlLiAgUGxhdGZvcm1XaWRnZXQgQ0FOTk9UIGJlIGFz
c3VtZWQgdG8gYmUKLS8vIGEgdmFsaWQgcG9pbnRlci4gIFNvbWUgZW1iZWRkZXJzIG1heSBub3Qg
dXNlIHRoaXMgaWRlbnRpZmllciBhdCBhbGwuCisjaW5jbHVkZSA8cHVibGljL1dlYlNjcmVlbklu
Zm8uaD4KIAotdHlwZWRlZiBpbnRwdHJfdCBQbGF0Zm9ybVdpZGdldDsKK25hbWVzcGFjZSBXZWJD
b3JlIHsKIAotI2VuZGlmCitjbGFzcyBQYWdlQ2xpZW50Q2hyb21pdW0geworcHVibGljOgorICAg
IHZpcnR1YWwgV2ViS2l0OjpXZWJTY3JlZW5JbmZvIHNjcmVlbkluZm8oKTsKK307CisKK3R5cGVk
ZWYgUGFnZUNsaWVudENocm9taXVtKiBQbGF0Zm9ybVBhZ2VDbGllbnQ7CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBhZ2VDbGllbnRDaHJvbWl1bV9oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNjcmVlbkNocm9taXVtLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNj
cmVlbkNocm9taXVtLmNwcAkocmV2aXNpb24gMTI5NTU4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TY3JlZW5DaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDQ2ICszMSw0OSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU2NyZWVuLmgiCiAKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1T
dXBwb3J0LmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgorI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKKyNpbmNsdWRlICJXaWRnZXQuaCIKIAogI2luY2x1
ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JlZW5JbmZvLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogaW50IHNjcmVlbkhvcml6b250YWxEUEkoV2lkZ2V0
KiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuSG9yaXpvbnRh
bERQSSh3aWRnZXQpOworICAgIHJldHVybiB3aWRnZXQtPnJvb3QoKS0+aG9zdFdpbmRvdygpLT5w
bGF0Zm9ybVBhZ2VDbGllbnQoKS0+c2NyZWVuSW5mbygpLmhvcml6b250YWxEUEk7CiB9CiAKIGlu
dCBzY3JlZW5WZXJ0aWNhbERQSShXaWRnZXQqIHdpZGdldCkKIHsKLSAgICByZXR1cm4gUGxhdGZv
cm1TdXBwb3J0OjpzY3JlZW5WZXJ0aWNhbERQSSh3aWRnZXQpOworICAgIHJldHVybiB3aWRnZXQt
PnJvb3QoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+c2NyZWVuSW5mbygp
LnZlcnRpY2FsRFBJOwogfQogCiBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0g
ICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuRGVwdGgod2lkZ2V0KTsKKyAgICByZXR1
cm4gd2lkZ2V0LT5yb290KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPnNj
cmVlbkluZm8oKS5kZXB0aDsKIH0KIAogaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdl
dCogd2lkZ2V0KQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkRlcHRoUGVy
Q29tcG9uZW50KHdpZGdldCk7CisgICAgcmV0dXJuIHdpZGdldC0+cm9vdCgpLT5ob3N0V2luZG93
KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5zY3JlZW5JbmZvKCkuZGVwdGhQZXJDb21wb25lbnQ7
CiB9CiAKIGJvb2wgc2NyZWVuSXNNb25vY2hyb21lKFdpZGdldCogd2lkZ2V0KQogewotICAgIHJl
dHVybiBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbklzTW9ub2Nocm9tZSh3aWRnZXQpOworICAgIHJl
dHVybiB3aWRnZXQtPnJvb3QoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+
c2NyZWVuSW5mbygpLmlzTW9ub2Nocm9tZTsKIH0KIAogRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lk
Z2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuUmVjdCh3
aWRnZXQpOworICAgIHJldHVybiBJbnRSZWN0KHdpZGdldC0+cm9vdCgpLT5ob3N0V2luZG93KCkt
PnBsYXRmb3JtUGFnZUNsaWVudCgpLT5zY3JlZW5JbmZvKCkucmVjdCk7CiB9CiAKIEZsb2F0UmVj
dCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCogd2lkZ2V0KQogewotICAgIHJldHVybiBQbGF0
Zm9ybVN1cHBvcnQ6OnNjcmVlbkF2YWlsYWJsZVJlY3Qod2lkZ2V0KTsKKyAgICByZXR1cm4gSW50
UmVjdCh3aWRnZXQtPnJvb3QoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+
c2NyZWVuSW5mbygpLmF2YWlsYWJsZVJlY3QpOwogfQogCiB2b2lkIHNjcmVlbkNvbG9yUHJvZmls
ZShDb2xvclByb2ZpbGUmIHRvUHJvZmlsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCShyZXZpc2lvbiAxMjk1NTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAkod29y
a2luZyBjb3B5KQpAQCAtOTgsMTUgKzk4LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHBs
dWdpbnMoYm9vbCByZWZyZXNoLCBWZWN0b3I8UGx1Z2luSW5mbz4qKTsKICAgICBzdGF0aWMgTlBP
YmplY3QqIHBsdWdpblNjcmlwdGFibGVPYmplY3QoV2lkZ2V0Kik7CiAKLSAgICAvLyBTY3JlZW4g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotICAgIHN0YXRpYyBpbnQgc2NyZWVuSG9yaXpvbnRhbERQSShXaWRnZXQqKTsKLSAgICBz
dGF0aWMgaW50IHNjcmVlblZlcnRpY2FsRFBJKFdpZGdldCopOwotICAgIHN0YXRpYyBpbnQgc2Ny
ZWVuRGVwdGgoV2lkZ2V0Kik7Ci0gICAgc3RhdGljIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVu
dChXaWRnZXQqKTsKLSAgICBzdGF0aWMgYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0Kik7
Ci0gICAgc3RhdGljIEludFJlY3Qgc2NyZWVuUmVjdChXaWRnZXQqKTsKLSAgICBzdGF0aWMgSW50
UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCopOwotCiAgICAgLy8gVGhlbWluZyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
ICNpZiBPUyhXSU5ET1dTKQogICAgIHN0YXRpYyB2b2lkIHBhaW50QnV0dG9uKApJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTU1OCkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTIt
MDktMjUgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtD
aHJvbWl1bV0gUmVtb3ZlIHNjcmVlbi1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIFBsYXRmb3JtU3Vw
cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc0
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRp
dGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9u
YWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4K
KworICAgICAgICAqIHB1YmxpYy9XZWJTY3JlZW5JbmZvLmg6CisgICAgICAgICogc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpzY3Jl
ZW5JbmZvKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudElt
cGwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudElt
cGw6OnBsYXRmb3JtUGFnZUNsaWVudCk6CisgICAgICAgIChDaHJvbWVDbGllbnRJbXBsKToKKyAg
ICAgICAgKiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAy
MDEyLTA5LTI1ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmVlbkluZm8uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgJKHJldmlzaW9uIDEyOTU1
OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmVlbkluZm8uaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNTUgKzI4LDQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBXZWJTY3JlZW5JbmZvX2gKLSNkZWZpbmUgV2ViU2NyZWVuSW5mb19oCi0KLSNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJSZWN0LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2Vi
U2NyZWVuSW5mbyB7Ci0gICAgLy8gVGhlIGhvcml6b250YWwgc2NyZWVuIGRwaS4KLSAgICBpbnQg
aG9yaXpvbnRhbERQSTsKLQotICAgIC8vIFRoZSB2ZXJ0aWNhbCBzY3JlZW4gZHBpLgotICAgIGlu
dCB2ZXJ0aWNhbERQSTsKLQotICAgIC8vIFRoZSBzY3JlZW4gZGVwdGggaW4gYml0cyBwZXIgcGl4
ZWwKLSAgICBpbnQgZGVwdGg7Ci0KLSAgICAvLyBUaGUgYml0cyBwZXIgY29sb3VyIGNvbXBvbmVu
dC4gVGhpcyBhc3N1bWVzIHRoYXQgdGhlIGNvbG91cnMgYXJlIGJhbGFuY2VkCi0gICAgLy8gZXF1
YWxseS4KLSAgICBpbnQgZGVwdGhQZXJDb21wb25lbnQ7Ci0KLSAgICAvLyBUaGlzIGNhbiBiZSB0
cnVlIGZvciBibGFjayBhbmQgd2hpdGUgcHJpbnRlcnMKLSAgICBib29sIGlzTW9ub2Nocm9tZTsK
LQotICAgIC8vIFRoaXMgaXMgc2V0IGZyb20gdGhlIHJjTW9uaXRvciBtZW1iZXIgb2YgTU9OSVRP
UklORk9FWCwgdG8gd2hpdDoKLSAgICAvLyAgICJBIFJFQ1Qgc3RydWN0dXJlIHRoYXQgc3BlY2lm
aWVzIHRoZSBkaXNwbGF5IG1vbml0b3IgcmVjdGFuZ2xlLAotICAgIC8vICAgZXhwcmVzc2VkIGlu
IHZpcnR1YWwtc2NyZWVuIGNvb3JkaW5hdGVzLiBOb3RlIHRoYXQgaWYgdGhlIG1vbml0b3IKLSAg
ICAvLyAgIGlzIG5vdCB0aGUgcHJpbWFyeSBkaXNwbGF5IG1vbml0b3IsIHNvbWUgb2YgdGhlIHJl
Y3RhbmdsZSdzCi0gICAgLy8gICBjb29yZGluYXRlcyBtYXkgYmUgbmVnYXRpdmUgdmFsdWVzLiIK
LSAgICBXZWJSZWN0IHJlY3Q7Ci0KLSAgICAvLyBUaGlzIGlzIHNldCBmcm9tIHRoZSByY1dvcmsg
bWVtYmVyIG9mIE1PTklUT1JJTkZPRVgsIHRvIHdoaXQ6Ci0gICAgLy8gICAiQSBSRUNUIHN0cnVj
dHVyZSB0aGF0IHNwZWNpZmllcyB0aGUgd29yayBhcmVhIHJlY3RhbmdsZSBvZiB0aGUKLSAgICAv
LyAgIGRpc3BsYXkgbW9uaXRvciB0aGF0IGNhbiBiZSB1c2VkIGJ5IGFwcGxpY2F0aW9ucywgZXhw
cmVzc2VkIGluCi0gICAgLy8gICB2aXJ0dWFsLXNjcmVlbiBjb29yZGluYXRlcy4gV2luZG93cyB1
c2VzIHRoaXMgcmVjdGFuZ2xlIHRvCi0gICAgLy8gICBtYXhpbWl6ZSBhbiBhcHBsaWNhdGlvbiBv
biB0aGUgbW9uaXRvci4gVGhlIHJlc3Qgb2YgdGhlIGFyZWEgaW4KLSAgICAvLyAgIHJjTW9uaXRv
ciBjb250YWlucyBzeXN0ZW0gd2luZG93cyBzdWNoIGFzIHRoZSB0YXNrIGJhciBhbmQgc2lkZQot
ICAgIC8vICAgYmFycy4gTm90ZSB0aGF0IGlmIHRoZSBtb25pdG9yIGlzIG5vdCB0aGUgcHJpbWFy
eSBkaXNwbGF5IG1vbml0b3IsCi0gICAgLy8gICBzb21lIG9mIHRoZSByZWN0YW5nbGUncyBjb29y
ZGluYXRlcyBtYXkgYmUgbmVnYXRpdmUgdmFsdWVzIi4KLSAgICBXZWJSZWN0IGF2YWlsYWJsZVJl
Y3Q7Ci0KLSAgICBXZWJTY3JlZW5JbmZvKCkKLSAgICAgICAgOiBob3Jpem9udGFsRFBJKDApCi0g
ICAgICAgICwgdmVydGljYWxEUEkoMCkKLSAgICAgICAgLCBkZXB0aCgwKQotICAgICAgICAsIGRl
cHRoUGVyQ29tcG9uZW50KDApCi0gICAgICAgICwgaXNNb25vY2hyb21lKGZhbHNlKSB7IH0KLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKKyNpbmNsdWRlICIuLi8uLi8uLi9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oIgpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDEy
OTU1OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05MDMsNiArOTAzLDEyIEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1w
bDo6cG9zdEFjY2Vzc2liaWxpdHkKICAgICAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+cG9zdEFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb24oV2ViQWNjZXNzaWJpbGl0eU9iamVjdChvYmopLCB0b1dl
YkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24obm90aWZpY2F0aW9uKSk7CiB9CiAKK1dlYktpdDo6
V2ViU2NyZWVuSW5mbyBDaHJvbWVDbGllbnRJbXBsOjpzY3JlZW5JbmZvKCkKK3sKKyAgICByZXR1
cm4gbV93ZWJWaWV3LT5jbGllbnQoKS0+c2NyZWVuSW5mbygpOworfQorCisKIGJvb2wgQ2hyb21l
Q2xpZW50SW1wbDo6cGFpbnRDdXN0b21PdmVyaGFuZ0FyZWEoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0
JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogewogICAg
IEZyYW1lKiBmcmFtZSA9IG1fd2ViVmlldy0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpOwpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAkocmV2
aXNpb24gMTI5NTU4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxMCArNjAsMTIgQEAgY2xhc3MgV2ViQ29sb3JD
aG9vc2VyOwogY2xhc3MgV2ViQ29sb3JDaG9vc2VyQ2xpZW50OwogY2xhc3MgV2ViVmlld0ltcGw7
CiBzdHJ1Y3QgV2ViQ3Vyc29ySW5mbzsKK3N0cnVjdCBXZWJTY3JlZW5JbmZvOwogc3RydWN0IFdl
YlBvcHVwTWVudUluZm87CiAKIC8vIEhhbmRsZXMgd2luZG93LWxldmVsIG5vdGlmaWNhdGlvbnMg
ZnJvbSBXZWJDb3JlIG9uIGJlaGFsZiBvZiBhIFdlYlZpZXcuCi1jbGFzcyBDaHJvbWVDbGllbnRJ
bXBsIDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNsaWVudENocm9taXVtIHsKK2NsYXNzIENocm9t
ZUNsaWVudEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50Q2hyb21pdW0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdlYkNvcmU6OlBhZ2VDbGllbnRDaHJvbWl1bSB7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ2hyb21lQ2xpZW50SW1wbChXZWJWaWV3SW1wbCogd2Vi
Vmlldyk7CiAgICAgdmlydHVhbCB+Q2hyb21lQ2xpZW50SW1wbCgpOwpAQCAtMTIzLDcgKzEyNSw3
IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QpOwog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCByb290
Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdDsKLSAgICB2aXJ0dWFs
IFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCB7IHJldHVybiAw
OyB9CisgICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkg
Y29uc3QgeyByZXR1cm4gdGhpczsgfQogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NpemVDaGFu
Z2VkKFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIGNvbnN0OwogICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXRVcGRhdGVkKFdlYkNvcmU6OkZyYW1lKikgY29uc3Q7CiAgICAg
dmlydHVhbCB2b2lkIHNjcm9sbFJlY3RJbnRvVmlldygKQEAgLTE5NCw2ICsxOTYsOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHBvcHVwQ2xvc2VkKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVy
KiBwb3B1cENvbnRhaW5lcik7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqLCBXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjpBWE5vdGlmaWNhdGlvbik7CiAKKyAgICAvLyBQYWdlQ2xpZW50Q2hyb21pdW0gbWV0
aG9kczoKKyAgICB2aXJ0dWFsIFdlYlNjcmVlbkluZm8gc2NyZWVuSW5mbygpOworCiAgICAgLy8g
Q2hyb21lQ2xpZW50SW1wbDoKICAgICB2b2lkIHNldEN1cnNvckZvclBsdWdpbihjb25zdCBXZWJD
dXJzb3JJbmZvJik7CiAgICAgdm9pZCBzZXROZXdXaW5kb3dOYXZpZ2F0aW9uUG9saWN5KFdlYk5h
dmlnYXRpb25Qb2xpY3kpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZv
cm1TdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Q
bGF0Zm9ybVN1cHBvcnQuY3BwCShyZXZpc2lvbiAxMjk1NTgpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMzAg
KzEwMCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIFdlYldpZGdldENsaWVudCogdG9XZWJXaWRnZXRDbGllbnQoV2lkZ2V0KiB3aWRn
ZXQpCi17Ci0gICAgaWYgKCF3aWRnZXQpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgRnJhbWVW
aWV3KiB2aWV3OwotICAgIGlmICh3aWRnZXQtPmlzRnJhbWVWaWV3KCkpCi0gICAgICAgIHZpZXcg
PSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPih3aWRnZXQpOwotICAgIGVsc2UgaWYgKHdpZGdldC0+
cGFyZW50KCkgJiYgd2lkZ2V0LT5wYXJlbnQoKS0+aXNGcmFtZVZpZXcoKSkKLSAgICAgICAgdmll
dyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldC0+cGFyZW50KCkpOwotICAgIGVsc2UK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBQYWdlKiBwYWdlID0gdmlldy0+ZnJhbWUoKSA/IHZp
ZXctPmZyYW1lKCktPnBhZ2UoKSA6IDA7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIHZvaWQqIHdlYlZpZXcgPSBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPndlYlZp
ZXcoKTsKLSAgICBpZiAoIXdlYlZpZXcpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4od2ViVmlldyktPmNsaWVudCgpOwotfQotCiBzdGF0
aWMgV2ViQ29va2llSmFyKiBnZXRDb29raWVKYXIoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KQog
ewogICAgIFdlYkZyYW1lSW1wbCogZnJhbWVJbXBsID0gV2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUo
ZG9jdW1lbnQtPmZyYW1lKCkpOwpAQCAtNDYxLDYyICs0MzcsNiBAQCB2b2lkIFBsYXRmb3JtU3Vw
cG9ydDo6cGFpbnRUaGVtZVBhcnQoCiAvLyBHbHVlIGxheWVyLiBPbmNlIHRoZSBHbHVlIGxheWVy
IG1vdmVzIGVudGlyZWx5IGludG8gdGhlIFdlYktpdCBsYXllciwgdGhlc2UKIC8vIG1ldGhvZHMg
d2lsbCBiZSBkZWxldGVkLgogCi1pbnQgUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5Ib3Jpem9udGFs
RFBJKFdpZGdldCogd2lkZ2V0KQotewotICAgIFdlYldpZGdldENsaWVudCogY2xpZW50ID0gdG9X
ZWJXaWRnZXRDbGllbnQod2lkZ2V0KTsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgcmV0dXJuIGNsaWVudC0+c2NyZWVuSW5mbygpLmhvcml6b250YWxEUEk7Ci19Ci0K
LWludCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlblZlcnRpY2FsRFBJKFdpZGdldCogd2lkZ2V0KQot
ewotICAgIFdlYldpZGdldENsaWVudCogY2xpZW50ID0gdG9XZWJXaWRnZXRDbGllbnQod2lkZ2V0
KTsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGNsaWVu
dC0+c2NyZWVuSW5mbygpLnZlcnRpY2FsRFBJOwotfQotCi1pbnQgUGxhdGZvcm1TdXBwb3J0Ojpz
Y3JlZW5EZXB0aChXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBXZWJXaWRnZXRDbGllbnQqIGNsaWVu
dCA9IHRvV2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAg
IHJldHVybiAwOwotICAgIHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8oKS5kZXB0aDsKLX0KLQot
aW50IFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0KiB3aWRn
ZXQpCi17Ci0gICAgV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVudCh3
aWRnZXQpOwotICAgIGlmICghY2xpZW50KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4g
Y2xpZW50LT5zY3JlZW5JbmZvKCkuZGVwdGhQZXJDb21wb25lbnQ7Ci19Ci0KLWJvb2wgUGxhdGZv
cm1TdXBwb3J0OjpzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAgV2Vi
V2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVudCh3aWRnZXQpOwotICAgIGlm
ICghY2xpZW50KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gY2xpZW50LT5zY3JlZW5J
bmZvKCkuaXNNb25vY2hyb21lOwotfQotCi1JbnRSZWN0IFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVu
UmVjdChXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBXZWJXaWRnZXRDbGllbnQqIGNsaWVudCA9IHRv
V2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVy
biBJbnRSZWN0KCk7Ci0gICAgcmV0dXJuIGNsaWVudC0+c2NyZWVuSW5mbygpLnJlY3Q7Ci19Ci0K
LUludFJlY3QgUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCogd2lk
Z2V0KQotewotICAgIFdlYldpZGdldENsaWVudCogY2xpZW50ID0gdG9XZWJXaWRnZXRDbGllbnQo
d2lkZ2V0KTsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKLSAg
ICByZXR1cm4gY2xpZW50LT5zY3JlZW5JbmZvKCkuYXZhaWxhYmxlUmVjdDsKLX0KLQogI2lmIEVO
QUJMRShXT1JLRVJTKQogV29ya2VyQ29udGV4dFByb3h5KiBXb3JrZXJDb250ZXh0UHJveHk6OmNy
ZWF0ZShXb3JrZXIqIHdvcmtlcikKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165697</attachid>
            <date>2012-09-25 16:15:30 -0700</date>
            <delta_ts>2012-09-25 16:30:44 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-97474-20120925191444.patch</filename>
            <type>text/plain</type>
            <size>22967</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5NTY5KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA5LTI1ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFJl
bW92ZSBzY3JlZW4tcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBQbGF0Zm9ybVN1cHBvcnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NDc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZv
cm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNl
IGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAg
KiBQbGF0Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZv
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNjcmVlbkluZm8pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTY3JlZW5JbmZvOjpXZWJTY3JlZW5JbmZvKToKKwogMjAxMi0w
OS0yNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyOTUxNy4KSW5kZXg6IFNvdXJjZS9QbGF0Zm9y
bS9QbGF0Zm9ybS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5n
eXBpCShyZXZpc2lvbiAxMjk1NjYpCisrKyBTb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQko
d29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYlJlY3QuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJlZmVy
cmVyUG9saWN5LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSZW5kZXJpbmdT
dGF0cy5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJMYXllci5oJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oJywKSW5kZXg6IFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNjcmVlbkluZm9faAorI2Rl
ZmluZSBXZWJTY3JlZW5JbmZvX2gKKworI2luY2x1ZGUgIldlYlJlY3QuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3N0cnVjdCBXZWJTY3JlZW5JbmZvIHsKKyAgICAvLyBUaGUgaG9yaXpvbnRh
bCBzY3JlZW4gZHBpLgorICAgIGludCBob3Jpem9udGFsRFBJOworCisgICAgLy8gVGhlIHZlcnRp
Y2FsIHNjcmVlbiBkcGkuCisgICAgaW50IHZlcnRpY2FsRFBJOworCisgICAgLy8gVGhlIHNjcmVl
biBkZXB0aCBpbiBiaXRzIHBlciBwaXhlbAorICAgIGludCBkZXB0aDsKKworICAgIC8vIFRoZSBi
aXRzIHBlciBjb2xvdXIgY29tcG9uZW50LiBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgY29sb3VycyBh
cmUgYmFsYW5jZWQKKyAgICAvLyBlcXVhbGx5LgorICAgIGludCBkZXB0aFBlckNvbXBvbmVudDsK
KworICAgIC8vIFRoaXMgY2FuIGJlIHRydWUgZm9yIGJsYWNrIGFuZCB3aGl0ZSBwcmludGVycwor
ICAgIGJvb2wgaXNNb25vY2hyb21lOworCisgICAgLy8gVGhpcyBpcyBzZXQgZnJvbSB0aGUgcmNN
b25pdG9yIG1lbWJlciBvZiBNT05JVE9SSU5GT0VYLCB0byB3aGl0OgorICAgIC8vICAgIkEgUkVD
VCBzdHJ1Y3R1cmUgdGhhdCBzcGVjaWZpZXMgdGhlIGRpc3BsYXkgbW9uaXRvciByZWN0YW5nbGUs
CisgICAgLy8gICBleHByZXNzZWQgaW4gdmlydHVhbC1zY3JlZW4gY29vcmRpbmF0ZXMuIE5vdGUg
dGhhdCBpZiB0aGUgbW9uaXRvcgorICAgIC8vICAgaXMgbm90IHRoZSBwcmltYXJ5IGRpc3BsYXkg
bW9uaXRvciwgc29tZSBvZiB0aGUgcmVjdGFuZ2xlJ3MKKyAgICAvLyAgIGNvb3JkaW5hdGVzIG1h
eSBiZSBuZWdhdGl2ZSB2YWx1ZXMuIgorICAgIFdlYlJlY3QgcmVjdDsKKworICAgIC8vIFRoaXMg
aXMgc2V0IGZyb20gdGhlIHJjV29yayBtZW1iZXIgb2YgTU9OSVRPUklORk9FWCwgdG8gd2hpdDoK
KyAgICAvLyAgICJBIFJFQ1Qgc3RydWN0dXJlIHRoYXQgc3BlY2lmaWVzIHRoZSB3b3JrIGFyZWEg
cmVjdGFuZ2xlIG9mIHRoZQorICAgIC8vICAgZGlzcGxheSBtb25pdG9yIHRoYXQgY2FuIGJlIHVz
ZWQgYnkgYXBwbGljYXRpb25zLCBleHByZXNzZWQgaW4KKyAgICAvLyAgIHZpcnR1YWwtc2NyZWVu
IGNvb3JkaW5hdGVzLiBXaW5kb3dzIHVzZXMgdGhpcyByZWN0YW5nbGUgdG8KKyAgICAvLyAgIG1h
eGltaXplIGFuIGFwcGxpY2F0aW9uIG9uIHRoZSBtb25pdG9yLiBUaGUgcmVzdCBvZiB0aGUgYXJl
YSBpbgorICAgIC8vICAgcmNNb25pdG9yIGNvbnRhaW5zIHN5c3RlbSB3aW5kb3dzIHN1Y2ggYXMg
dGhlIHRhc2sgYmFyIGFuZCBzaWRlCisgICAgLy8gICBiYXJzLiBOb3RlIHRoYXQgaWYgdGhlIG1v
bml0b3IgaXMgbm90IHRoZSBwcmltYXJ5IGRpc3BsYXkgbW9uaXRvciwKKyAgICAvLyAgIHNvbWUg
b2YgdGhlIHJlY3RhbmdsZSdzIGNvb3JkaW5hdGVzIG1heSBiZSBuZWdhdGl2ZSB2YWx1ZXMiLgor
ICAgIFdlYlJlY3QgYXZhaWxhYmxlUmVjdDsKKworICAgIFdlYlNjcmVlbkluZm8oKQorICAgICAg
ICA6IGhvcml6b250YWxEUEkoMCkKKyAgICAgICAgLCB2ZXJ0aWNhbERQSSgwKQorICAgICAgICAs
IGRlcHRoKDApCisgICAgICAgICwgZGVwdGhQZXJDb21wb25lbnQoMCkKKyAgICAgICAgLCBpc01v
bm9jaHJvbWUoZmFsc2UpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5NTY5KQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTItMDktMjUgIE1hcmsg
UGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gUmVt
b3ZlIHNjcmVlbi1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIFBsYXRmb3JtU3VwcG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc0NzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9y
bWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2Ug
YWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBwbGF0Zm9ybS9XaWRnZXQuaDoKKyAgICAgICAgKFdpZGdldCk6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vUGFnZUNsaWVudENocm9taXVtLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtV2lkZ2V0LmguCisgICAgICAgIChQYWdlQ2xp
ZW50Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1TY3JlZW5DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Ib3Jpem9udGFsRFBJKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlblZlcnRpY2FsRFBJKToK
KyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkRlcHRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVl
bkRlcHRoUGVyQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbklzTW9ub2Nocm9t
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNj
cmVlbkF2YWlsYWJsZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3Jt
U3VwcG9ydC5oOgorICAgICAgICAoUGxhdGZvcm1TdXBwb3J0KToKKwogMjAxMi0wOS0yNSAgQmV0
aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NjE1CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lv
biAxMjk1NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkK
QEAgLTQ2NzAsNiArNDY3MCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vTGlu
a0hhc2hDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL01lbW9y
eVVzYWdlU3VwcG9ydENocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vTUlNRVR5cGVSZWdpc3RyeUNocm9taXVtLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Y2hyb21pdW0vUGFnZUNsaWVudENocm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL1BsYXRmb3JtQ3Vyc29yLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVt
L1BsYXRmb3JtS2V5Ym9hcmRFdmVudENocm9taXVtLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9XaWRnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9XaWRnZXQuaAkocmV2aXNpb24gMTI5NTY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
V2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQogI2luY2x1ZGUgIlBsYXRmb3JtV2lkZ2V0LmgiCisjaW5jbHVkZSAiUGFnZUNs
aWVudENocm9taXVtLmgiCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTEyNSw5ICsx
MjYsOSBAQCBlbnVtIFdpZGdldE5vdGlmaWNhdGlvbiB7IFdpbGxQYWludEZsYXR0CiAvLyBTY3Jv
bGxiYXIgLSBNYWMsIEd0awogLy8gUGx1Z2luIC0gTWFjLCBXaW5kb3dzICh3aW5kb3dlZCBvbmx5
KSwgUXQgKHdpbmRvd2VkIG9ubHksIHdpZGdldCBpcyBhbiBIV05EIG9uIHdpbmRvd3MpLCBHdGsg
KHdpbmRvd2VkIG9ubHkpCiAvLwotY2xhc3MgV2lkZ2V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2lk
Z2V0PiB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgV2lkZ2V0KFBsYXRmb3JtV2lkZ2V0ID0gMCk7
CisgY2xhc3MgV2lkZ2V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2lkZ2V0PiB7CisgcHVibGljOgor
ICAgICBleHBsaWNpdCBXaWRnZXQoUGxhdGZvcm1XaWRnZXQgPSAwKTsKICAgICB2aXJ0dWFsIH5X
aWRnZXQoKTsKIAogICAgIFBsYXRmb3JtV2lkZ2V0IHBsYXRmb3JtV2lkZ2V0KCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYWdlQ2xpZW50Q2hyb21pdW0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYWdlQ2xp
ZW50Q2hyb21pdW0uaAkocmV2aXNpb24gMTI5MzU4KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVdpZGdldC5oOjEyOTM1OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1BhZ2VDbGllbnRDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDksIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybVdpZGdldF9oCisjZGVmaW5l
IFBsYXRmb3JtV2lkZ2V0X2gKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4gIC8vIGZv
ciBpbnRwdHJfdAorCisvLyBQbGF0Zm9ybVdpZGdldCBpcyBhbiBvcGFxdWUgaWRlbnRpZmllciBj
b3JyZXNwb25kaW5nIHRvIHdoYXRldmVyIG5hdGl2ZQorLy8gdmlldyB0eXBlIHRoZSBlbWJlZGRl
ciBtYXkgdXNlLiAgUGxhdGZvcm1XaWRnZXQgQ0FOTk9UIGJlIGFzc3VtZWQgdG8gYmUKKy8vIGEg
dmFsaWQgcG9pbnRlci4gIFNvbWUgZW1iZWRkZXJzIG1heSBub3QgdXNlIHRoaXMgaWRlbnRpZmll
ciBhdCBhbGwuCisKK3R5cGVkZWYgaW50cHRyX3QgUGxhdGZvcm1XaWRnZXQ7CisKKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFnZUNsaWVudENocm9taXVt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFnZUNs
aWVudENocm9taXVtLmgJKHJldmlzaW9uIDEyOTUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BhZ2VDbGllbnRDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAwOSwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxMiwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIAogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC0yOCwxNSArMjgsMjIgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQbGF0Zm9y
bVdpZGdldF9oCi0jZGVmaW5lIFBsYXRmb3JtV2lkZ2V0X2gKKyNpZm5kZWYgUGFnZUNsaWVudENo
cm9taXVtX2gKKyNkZWZpbmUgUGFnZUNsaWVudENocm9taXVtX2gKIAotI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4gIC8vIGZvciBpbnRwdHJfdAorI2luY2x1ZGUgIkludFJlY3QuaCIKIAot
Ly8gUGxhdGZvcm1XaWRnZXQgaXMgYW4gb3BhcXVlIGlkZW50aWZpZXIgY29ycmVzcG9uZGluZyB0
byB3aGF0ZXZlciBuYXRpdmUKLS8vIHZpZXcgdHlwZSB0aGUgZW1iZWRkZXIgbWF5IHVzZS4gIFBs
YXRmb3JtV2lkZ2V0IENBTk5PVCBiZSBhc3N1bWVkIHRvIGJlCi0vLyBhIHZhbGlkIHBvaW50ZXIu
ICBTb21lIGVtYmVkZGVycyBtYXkgbm90IHVzZSB0aGlzIGlkZW50aWZpZXIgYXQgYWxsLgorI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJTY3JlZW5JbmZvLmg+CiAKLXR5cGVkZWYgaW50cHRyX3QgUGxhdGZv
cm1XaWRnZXQ7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNlbmRpZgorY2xhc3MgUGFnZUNsaWVu
dENocm9taXVtIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViU2NyZWVuSW5mbyBz
Y3JlZW5JbmZvKCkgPSAwOworfTsKKwordHlwZWRlZiBQYWdlQ2xpZW50Q2hyb21pdW0qIFBsYXRm
b3JtUGFnZUNsaWVudDsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUGFn
ZUNsaWVudENocm9taXVtX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1BsYXRmb3JtU2NyZWVuQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU2NyZWVuQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAx
Mjk1NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNjcmVl
bkNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNDYgKzMxLDQ5IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKIAotI2luY2x1ZGUgIklu
dFJlY3QuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlICJIb3N0V2lu
ZG93LmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgor
I2luY2x1ZGUgIldpZGdldC5oIgogCiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5j
bHVkZSA8cHVibGljL1dlYlNjcmVlbkluZm8uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBp
bnQgc2NyZWVuSG9yaXpvbnRhbERQSShXaWRnZXQqIHdpZGdldCkKIHsKLSAgICByZXR1cm4gUGxh
dGZvcm1TdXBwb3J0OjpzY3JlZW5Ib3Jpem9udGFsRFBJKHdpZGdldCk7CisgICAgcmV0dXJuIHdp
ZGdldC0+cm9vdCgpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5zY3JlZW5J
bmZvKCkuaG9yaXpvbnRhbERQSTsKIH0KIAogaW50IHNjcmVlblZlcnRpY2FsRFBJKFdpZGdldCog
d2lkZ2V0KQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlblZlcnRpY2FsRFBJ
KHdpZGdldCk7CisgICAgcmV0dXJuIHdpZGdldC0+cm9vdCgpLT5ob3N0V2luZG93KCktPnBsYXRm
b3JtUGFnZUNsaWVudCgpLT5zY3JlZW5JbmZvKCkudmVydGljYWxEUEk7CiB9CiAKIGludCBzY3Jl
ZW5EZXB0aChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0Ojpz
Y3JlZW5EZXB0aCh3aWRnZXQpOworICAgIHJldHVybiB3aWRnZXQtPnJvb3QoKS0+aG9zdFdpbmRv
dygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+c2NyZWVuSW5mbygpLmRlcHRoOwogfQogCiBpbnQg
c2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIFBs
YXRmb3JtU3VwcG9ydDo6c2NyZWVuRGVwdGhQZXJDb21wb25lbnQod2lkZ2V0KTsKKyAgICByZXR1
cm4gd2lkZ2V0LT5yb290KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPnNj
cmVlbkluZm8oKS5kZXB0aFBlckNvbXBvbmVudDsKIH0KIAogYm9vbCBzY3JlZW5Jc01vbm9jaHJv
bWUoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVu
SXNNb25vY2hyb21lKHdpZGdldCk7CisgICAgcmV0dXJuIHdpZGdldC0+cm9vdCgpLT5ob3N0V2lu
ZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5zY3JlZW5JbmZvKCkuaXNNb25vY2hyb21lOwog
fQogCiBGbG9hdFJlY3Qgc2NyZWVuUmVjdChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICByZXR1cm4g
UGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5SZWN0KHdpZGdldCk7CisgICAgcmV0dXJuIEludFJlY3Qo
d2lkZ2V0LT5yb290KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPnNjcmVl
bkluZm8oKS5yZWN0KTsKIH0KIAogRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0
KiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuQXZhaWxhYmxl
UmVjdCh3aWRnZXQpOworICAgIHJldHVybiBJbnRSZWN0KHdpZGdldC0+cm9vdCgpLT5ob3N0V2lu
ZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5zY3JlZW5JbmZvKCkuYXZhaWxhYmxlUmVjdCk7
CiB9CiAKIHZvaWQgc2NyZWVuQ29sb3JQcm9maWxlKENvbG9yUHJvZmlsZSYgdG9Qcm9maWxlKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1T
dXBwb3J0LmgJKHJldmlzaW9uIDEyOTU2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCwxNSArOTgsNiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcGx1Z2lucyhib29sIHJlZnJlc2gsIFZlY3RvcjxQ
bHVnaW5JbmZvPiopOwogICAgIHN0YXRpYyBOUE9iamVjdCogcGx1Z2luU2NyaXB0YWJsZU9iamVj
dChXaWRnZXQqKTsKIAotICAgIC8vIFNjcmVlbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgc3RhdGljIGludCBzY3JlZW5I
b3Jpem9udGFsRFBJKFdpZGdldCopOwotICAgIHN0YXRpYyBpbnQgc2NyZWVuVmVydGljYWxEUEko
V2lkZ2V0Kik7Ci0gICAgc3RhdGljIGludCBzY3JlZW5EZXB0aChXaWRnZXQqKTsKLSAgICBzdGF0
aWMgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCopOwotICAgIHN0YXRpYyBib29s
IHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqKTsKLSAgICBzdGF0aWMgSW50UmVjdCBzY3JlZW5S
ZWN0KFdpZGdldCopOwotICAgIHN0YXRpYyBJbnRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lk
Z2V0Kik7Ci0KICAgICAvLyBUaGVtaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogI2lmIE9TKFdJTkRPV1MpCiAgICAgc3RhdGlj
IHZvaWQgcGFpbnRCdXR0b24oCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNp
b24gMTI5NTY5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0wOS0yNSAgTWFyayBQaWxncmltICA8cGlsZ3Jp
bUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBSZW1vdmUgc2NyZWVuLXJlbGF0
ZWQgZnVuY3Rpb25zIGZyb20gUGxhdGZvcm1TdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzQ3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNo
YW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9u
IGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dlYlNjcmVl
bkluZm8uaDoKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnNjcmVlbkluZm8pOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6cGxhdGZvcm1QYWdlQ2xpZW50KToKKyAg
ICAgICAgKENocm9tZUNsaWVudEltcGwpOgorICAgICAgICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDktMjUgIEJldGggRGFraW4gIDxiZGFr
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTM5NwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2Ny
ZWVuSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNjcmVlbkluZm8uaAkocmV2aXNpb24gMTI5NTY2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw1NSArMjgsNCBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYlNjcmVlbkluZm9faAotI2RlZmlu
ZSBXZWJTY3JlZW5JbmZvX2gKLQotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlJlY3QuaCIKLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBXZWJTY3JlZW5JbmZvIHsKLSAgICAvLyBUaGUgaG9y
aXpvbnRhbCBzY3JlZW4gZHBpLgotICAgIGludCBob3Jpem9udGFsRFBJOwotCi0gICAgLy8gVGhl
IHZlcnRpY2FsIHNjcmVlbiBkcGkuCi0gICAgaW50IHZlcnRpY2FsRFBJOwotCi0gICAgLy8gVGhl
IHNjcmVlbiBkZXB0aCBpbiBiaXRzIHBlciBwaXhlbAotICAgIGludCBkZXB0aDsKLQotICAgIC8v
IFRoZSBiaXRzIHBlciBjb2xvdXIgY29tcG9uZW50LiBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgY29s
b3VycyBhcmUgYmFsYW5jZWQKLSAgICAvLyBlcXVhbGx5LgotICAgIGludCBkZXB0aFBlckNvbXBv
bmVudDsKLQotICAgIC8vIFRoaXMgY2FuIGJlIHRydWUgZm9yIGJsYWNrIGFuZCB3aGl0ZSBwcmlu
dGVycwotICAgIGJvb2wgaXNNb25vY2hyb21lOwotCi0gICAgLy8gVGhpcyBpcyBzZXQgZnJvbSB0
aGUgcmNNb25pdG9yIG1lbWJlciBvZiBNT05JVE9SSU5GT0VYLCB0byB3aGl0OgotICAgIC8vICAg
IkEgUkVDVCBzdHJ1Y3R1cmUgdGhhdCBzcGVjaWZpZXMgdGhlIGRpc3BsYXkgbW9uaXRvciByZWN0
YW5nbGUsCi0gICAgLy8gICBleHByZXNzZWQgaW4gdmlydHVhbC1zY3JlZW4gY29vcmRpbmF0ZXMu
IE5vdGUgdGhhdCBpZiB0aGUgbW9uaXRvcgotICAgIC8vICAgaXMgbm90IHRoZSBwcmltYXJ5IGRp
c3BsYXkgbW9uaXRvciwgc29tZSBvZiB0aGUgcmVjdGFuZ2xlJ3MKLSAgICAvLyAgIGNvb3JkaW5h
dGVzIG1heSBiZSBuZWdhdGl2ZSB2YWx1ZXMuIgotICAgIFdlYlJlY3QgcmVjdDsKLQotICAgIC8v
IFRoaXMgaXMgc2V0IGZyb20gdGhlIHJjV29yayBtZW1iZXIgb2YgTU9OSVRPUklORk9FWCwgdG8g
d2hpdDoKLSAgICAvLyAgICJBIFJFQ1Qgc3RydWN0dXJlIHRoYXQgc3BlY2lmaWVzIHRoZSB3b3Jr
IGFyZWEgcmVjdGFuZ2xlIG9mIHRoZQotICAgIC8vICAgZGlzcGxheSBtb25pdG9yIHRoYXQgY2Fu
IGJlIHVzZWQgYnkgYXBwbGljYXRpb25zLCBleHByZXNzZWQgaW4KLSAgICAvLyAgIHZpcnR1YWwt
c2NyZWVuIGNvb3JkaW5hdGVzLiBXaW5kb3dzIHVzZXMgdGhpcyByZWN0YW5nbGUgdG8KLSAgICAv
LyAgIG1heGltaXplIGFuIGFwcGxpY2F0aW9uIG9uIHRoZSBtb25pdG9yLiBUaGUgcmVzdCBvZiB0
aGUgYXJlYSBpbgotICAgIC8vICAgcmNNb25pdG9yIGNvbnRhaW5zIHN5c3RlbSB3aW5kb3dzIHN1
Y2ggYXMgdGhlIHRhc2sgYmFyIGFuZCBzaWRlCi0gICAgLy8gICBiYXJzLiBOb3RlIHRoYXQgaWYg
dGhlIG1vbml0b3IgaXMgbm90IHRoZSBwcmltYXJ5IGRpc3BsYXkgbW9uaXRvciwKLSAgICAvLyAg
IHNvbWUgb2YgdGhlIHJlY3RhbmdsZSdzIGNvb3JkaW5hdGVzIG1heSBiZSBuZWdhdGl2ZSB2YWx1
ZXMiLgotICAgIFdlYlJlY3QgYXZhaWxhYmxlUmVjdDsKLQotICAgIFdlYlNjcmVlbkluZm8oKQot
ICAgICAgICA6IGhvcml6b250YWxEUEkoMCkKLSAgICAgICAgLCB2ZXJ0aWNhbERQSSgwKQotICAg
ICAgICAsIGRlcHRoKDApCi0gICAgICAgICwgZGVwdGhQZXJDb21wb25lbnQoMCkKLSAgICAgICAg
LCBpc01vbm9jaHJvbWUoZmFsc2UpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZgorI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJT
Y3JlZW5JbmZvLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMTI5NTY2KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwMyw2ICs5
MDMsMTIgQEAgdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpwb3N0QWNjZXNzaWJpbGl0eQogICAgICAg
ICBtX3dlYlZpZXctPmNsaWVudCgpLT5wb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0KG9iaiksIHRvV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihu
b3RpZmljYXRpb24pKTsKIH0KIAorV2ViS2l0OjpXZWJTY3JlZW5JbmZvIENocm9tZUNsaWVudElt
cGw6OnNjcmVlbkluZm8oKQoreworICAgIHJldHVybiBtX3dlYlZpZXctPmNsaWVudCgpLT5zY3Jl
ZW5JbmZvKCk7Cit9CisKKwogYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpwYWludEN1c3RvbU92ZXJo
YW5nQXJlYShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGhvcml6b250
YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25z
dCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV93ZWJWaWV3LT5t
YWluRnJhbWVJbXBsKCktPmZyYW1lKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxMjk1NjYpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTYw
LDEwICs2MCwxMiBAQCBjbGFzcyBXZWJDb2xvckNob29zZXI7CiBjbGFzcyBXZWJDb2xvckNob29z
ZXJDbGllbnQ7CiBjbGFzcyBXZWJWaWV3SW1wbDsKIHN0cnVjdCBXZWJDdXJzb3JJbmZvOworc3Ry
dWN0IFdlYlNjcmVlbkluZm87CiBzdHJ1Y3QgV2ViUG9wdXBNZW51SW5mbzsKIAogLy8gSGFuZGxl
cyB3aW5kb3ctbGV2ZWwgbm90aWZpY2F0aW9ucyBmcm9tIFdlYkNvcmUgb24gYmVoYWxmIG9mIGEg
V2ViVmlldy4KLWNsYXNzIENocm9tZUNsaWVudEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21l
Q2xpZW50Q2hyb21pdW0geworY2xhc3MgQ2hyb21lQ2xpZW50SW1wbCA6IHB1YmxpYyBXZWJDb3Jl
OjpDaHJvbWVDbGllbnRDaHJvbWl1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMg
V2ViQ29yZTo6UGFnZUNsaWVudENocm9taXVtIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDaHJv
bWVDbGllbnRJbXBsKFdlYlZpZXdJbXBsKiB3ZWJWaWV3KTsKICAgICB2aXJ0dWFsIH5DaHJvbWVD
bGllbnRJbXBsKCk7CkBAIC0xMjMsNyArMTI1LDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2lu
dCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Q7CiAgICAg
dmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpIGNvbnN0OwotICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xpZW50IHBsYXRmb3Jt
UGFnZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFBsYXRmb3JtUGFn
ZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAgICAg
dmlydHVhbCB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGxheW91dFVwZGF0ZWQo
V2ViQ29yZTo6RnJhbWUqKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUmVjdEludG9W
aWV3KApAQCAtMTk0LDYgKzE5Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcG9wdXBD
bG9zZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVyKTsKICAgICB2aXJ0
dWFsIHZvaWQgcG9zdEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdCosIFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uKTsKIAor
ICAgIC8vIFBhZ2VDbGllbnRDaHJvbWl1bSBtZXRob2RzOgorICAgIHZpcnR1YWwgV2ViU2NyZWVu
SW5mbyBzY3JlZW5JbmZvKCk7CisKICAgICAvLyBDaHJvbWVDbGllbnRJbXBsOgogICAgIHZvaWQg
c2V0Q3Vyc29yRm9yUGx1Z2luKGNvbnN0IFdlYkN1cnNvckluZm8mKTsKICAgICB2b2lkIHNldE5l
d1dpbmRvd05hdmlnYXRpb25Qb2xpY3koV2ViTmF2aWdhdGlvblBvbGljeSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAJKHJldmlzaW9u
IDEyOTU2NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCwzMCArMTAwLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgV2ViV2lkZ2V0Q2xpZW50KiB0
b1dlYldpZGdldENsaWVudChXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBpZiAoIXdpZGdldCkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBGcmFtZVZpZXcqIHZpZXc7Ci0gICAgaWYgKHdpZGdldC0+
aXNGcmFtZVZpZXcoKSkKLSAgICAgICAgdmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdp
ZGdldCk7Ci0gICAgZWxzZSBpZiAod2lkZ2V0LT5wYXJlbnQoKSAmJiB3aWRnZXQtPnBhcmVudCgp
LT5pc0ZyYW1lVmlldygpKQotICAgICAgICB2aWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4o
d2lkZ2V0LT5wYXJlbnQoKSk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFBh
Z2UqIHBhZ2UgPSB2aWV3LT5mcmFtZSgpID8gdmlldy0+ZnJhbWUoKS0+cGFnZSgpIDogMDsKLSAg
ICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgdm9pZCogd2ViVmlldyA9IHBh
Z2UtPmNocm9tZSgpLT5jbGllbnQoKS0+d2ViVmlldygpOwotICAgIGlmICghd2ViVmlldykKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPih3
ZWJWaWV3KS0+Y2xpZW50KCk7Ci19Ci0KIHN0YXRpYyBXZWJDb29raWVKYXIqIGdldENvb2tpZUph
cihjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgV2ViRnJhbWVJbXBsKiBmcmFtZUlt
cGwgPSBXZWJGcmFtZUltcGw6OmZyb21GcmFtZShkb2N1bWVudC0+ZnJhbWUoKSk7CkBAIC00NjEs
NjIgKzQzNyw2IEBAIHZvaWQgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydCgKIC8vIEds
dWUgbGF5ZXIuIE9uY2UgdGhlIEdsdWUgbGF5ZXIgbW92ZXMgZW50aXJlbHkgaW50byB0aGUgV2Vi
S2l0IGxheWVyLCB0aGVzZQogLy8gbWV0aG9kcyB3aWxsIGJlIGRlbGV0ZWQuCiAKLWludCBQbGF0
Zm9ybVN1cHBvcnQ6OnNjcmVlbkhvcml6b250YWxEUEkoV2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAg
V2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVudCh3aWRnZXQpOwotICAg
IGlmICghY2xpZW50KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gY2xpZW50LT5zY3Jl
ZW5JbmZvKCkuaG9yaXpvbnRhbERQSTsKLX0KLQotaW50IFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVu
VmVydGljYWxEUEkoV2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAgV2ViV2lkZ2V0Q2xpZW50KiBjbGll
bnQgPSB0b1dlYldpZGdldENsaWVudCh3aWRnZXQpOwotICAgIGlmICghY2xpZW50KQotICAgICAg
ICByZXR1cm4gMDsKLSAgICByZXR1cm4gY2xpZW50LT5zY3JlZW5JbmZvKCkudmVydGljYWxEUEk7
Ci19Ci0KLWludCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkRlcHRoKFdpZGdldCogd2lkZ2V0KQot
ewotICAgIFdlYldpZGdldENsaWVudCogY2xpZW50ID0gdG9XZWJXaWRnZXRDbGllbnQod2lkZ2V0
KTsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGNsaWVu
dC0+c2NyZWVuSW5mbygpLmRlcHRoOwotfQotCi1pbnQgUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5E
ZXB0aFBlckNvbXBvbmVudChXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBXZWJXaWRnZXRDbGllbnQq
IGNsaWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7Ci0gICAgaWYgKCFjbGllbnQpCi0g
ICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8oKS5kZXB0aFBl
ckNvbXBvbmVudDsKLX0KLQotYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbklzTW9ub2Nocm9t
ZShXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBXZWJXaWRnZXRDbGllbnQqIGNsaWVudCA9IHRvV2Vi
V2lkZ2V0Q2xpZW50KHdpZGdldCk7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVybiAw
OwotICAgIHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8oKS5pc01vbm9jaHJvbWU7Ci19Ci0KLUlu
dFJlY3QgUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5SZWN0KFdpZGdldCogd2lkZ2V0KQotewotICAg
IFdlYldpZGdldENsaWVudCogY2xpZW50ID0gdG9XZWJXaWRnZXRDbGllbnQod2lkZ2V0KTsKLSAg
ICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKLSAgICByZXR1cm4gY2xp
ZW50LT5zY3JlZW5JbmZvKCkucmVjdDsKLX0KLQotSW50UmVjdCBQbGF0Zm9ybVN1cHBvcnQ6OnNj
cmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAgV2ViV2lkZ2V0Q2xpZW50
KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVudCh3aWRnZXQpOwotICAgIGlmICghY2xpZW50KQot
ICAgICAgICByZXR1cm4gSW50UmVjdCgpOwotICAgIHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8o
KS5hdmFpbGFibGVSZWN0OwotfQotCiAjaWYgRU5BQkxFKFdPUktFUlMpCiBXb3JrZXJDb250ZXh0
UHJveHkqIFdvcmtlckNvbnRleHRQcm94eTo6Y3JlYXRlKFdvcmtlciogd29ya2VyKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165700</attachid>
            <date>2012-09-25 16:30:46 -0700</date>
            <delta_ts>2012-09-26 10:16:04 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-97474-20120925193000.patch</filename>
            <type>text/plain</type>
            <size>23207</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5NTY5KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA5LTI1ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFJl
bW92ZSBzY3JlZW4tcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBQbGF0Zm9ybVN1cHBvcnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NDc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZv
cm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNl
IGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAg
KiBQbGF0Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZv
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNjcmVlbkluZm8pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTY3JlZW5JbmZvOjpXZWJTY3JlZW5JbmZvKToKKwogMjAxMi0w
OS0yNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyOTUxNy4KSW5kZXg6IFNvdXJjZS9QbGF0Zm9y
bS9QbGF0Zm9ybS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5n
eXBpCShyZXZpc2lvbiAxMjk1NjYpCisrKyBTb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQko
d29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYlJlY3QuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJlZmVy
cmVyUG9saWN5LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSZW5kZXJpbmdT
dGF0cy5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJMYXllci5oJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oJywKSW5kZXg6IFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNjcmVlbkluZm9faAorI2Rl
ZmluZSBXZWJTY3JlZW5JbmZvX2gKKworI2luY2x1ZGUgIldlYlJlY3QuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3N0cnVjdCBXZWJTY3JlZW5JbmZvIHsKKyAgICAvLyBUaGUgaG9yaXpvbnRh
bCBzY3JlZW4gZHBpLgorICAgIGludCBob3Jpem9udGFsRFBJOworCisgICAgLy8gVGhlIHZlcnRp
Y2FsIHNjcmVlbiBkcGkuCisgICAgaW50IHZlcnRpY2FsRFBJOworCisgICAgLy8gVGhlIHNjcmVl
biBkZXB0aCBpbiBiaXRzIHBlciBwaXhlbAorICAgIGludCBkZXB0aDsKKworICAgIC8vIFRoZSBi
aXRzIHBlciBjb2xvdXIgY29tcG9uZW50LiBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgY29sb3VycyBh
cmUgYmFsYW5jZWQKKyAgICAvLyBlcXVhbGx5LgorICAgIGludCBkZXB0aFBlckNvbXBvbmVudDsK
KworICAgIC8vIFRoaXMgY2FuIGJlIHRydWUgZm9yIGJsYWNrIGFuZCB3aGl0ZSBwcmludGVycwor
ICAgIGJvb2wgaXNNb25vY2hyb21lOworCisgICAgLy8gVGhpcyBpcyBzZXQgZnJvbSB0aGUgcmNN
b25pdG9yIG1lbWJlciBvZiBNT05JVE9SSU5GT0VYLCB0byB3aGl0OgorICAgIC8vICAgIkEgUkVD
VCBzdHJ1Y3R1cmUgdGhhdCBzcGVjaWZpZXMgdGhlIGRpc3BsYXkgbW9uaXRvciByZWN0YW5nbGUs
CisgICAgLy8gICBleHByZXNzZWQgaW4gdmlydHVhbC1zY3JlZW4gY29vcmRpbmF0ZXMuIE5vdGUg
dGhhdCBpZiB0aGUgbW9uaXRvcgorICAgIC8vICAgaXMgbm90IHRoZSBwcmltYXJ5IGRpc3BsYXkg
bW9uaXRvciwgc29tZSBvZiB0aGUgcmVjdGFuZ2xlJ3MKKyAgICAvLyAgIGNvb3JkaW5hdGVzIG1h
eSBiZSBuZWdhdGl2ZSB2YWx1ZXMuIgorICAgIFdlYlJlY3QgcmVjdDsKKworICAgIC8vIFRoaXMg
aXMgc2V0IGZyb20gdGhlIHJjV29yayBtZW1iZXIgb2YgTU9OSVRPUklORk9FWCwgdG8gd2hpdDoK
KyAgICAvLyAgICJBIFJFQ1Qgc3RydWN0dXJlIHRoYXQgc3BlY2lmaWVzIHRoZSB3b3JrIGFyZWEg
cmVjdGFuZ2xlIG9mIHRoZQorICAgIC8vICAgZGlzcGxheSBtb25pdG9yIHRoYXQgY2FuIGJlIHVz
ZWQgYnkgYXBwbGljYXRpb25zLCBleHByZXNzZWQgaW4KKyAgICAvLyAgIHZpcnR1YWwtc2NyZWVu
IGNvb3JkaW5hdGVzLiBXaW5kb3dzIHVzZXMgdGhpcyByZWN0YW5nbGUgdG8KKyAgICAvLyAgIG1h
eGltaXplIGFuIGFwcGxpY2F0aW9uIG9uIHRoZSBtb25pdG9yLiBUaGUgcmVzdCBvZiB0aGUgYXJl
YSBpbgorICAgIC8vICAgcmNNb25pdG9yIGNvbnRhaW5zIHN5c3RlbSB3aW5kb3dzIHN1Y2ggYXMg
dGhlIHRhc2sgYmFyIGFuZCBzaWRlCisgICAgLy8gICBiYXJzLiBOb3RlIHRoYXQgaWYgdGhlIG1v
bml0b3IgaXMgbm90IHRoZSBwcmltYXJ5IGRpc3BsYXkgbW9uaXRvciwKKyAgICAvLyAgIHNvbWUg
b2YgdGhlIHJlY3RhbmdsZSdzIGNvb3JkaW5hdGVzIG1heSBiZSBuZWdhdGl2ZSB2YWx1ZXMiLgor
ICAgIFdlYlJlY3QgYXZhaWxhYmxlUmVjdDsKKworICAgIFdlYlNjcmVlbkluZm8oKQorICAgICAg
ICA6IGhvcml6b250YWxEUEkoMCkKKyAgICAgICAgLCB2ZXJ0aWNhbERQSSgwKQorICAgICAgICAs
IGRlcHRoKDApCisgICAgICAgICwgZGVwdGhQZXJDb21wb25lbnQoMCkKKyAgICAgICAgLCBpc01v
bm9jaHJvbWUoZmFsc2UpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5NTY5KQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTItMDktMjUgIE1hcmsg
UGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gUmVt
b3ZlIHNjcmVlbi1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIFBsYXRmb3JtU3VwcG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc0NzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9y
bWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2Ug
YWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBwbGF0Zm9ybS9XaWRnZXQuaDoKKyAgICAgICAgKFdpZGdldCk6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vUGFnZUNsaWVudENocm9taXVtLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtV2lkZ2V0LmguCisgICAgICAgIChQYWdlQ2xp
ZW50Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1TY3JlZW5DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Ib3Jpem9udGFsRFBJKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlblZlcnRpY2FsRFBJKToK
KyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkRlcHRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVl
bkRlcHRoUGVyQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbklzTW9ub2Nocm9t
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNj
cmVlbkF2YWlsYWJsZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3Jt
U3VwcG9ydC5oOgorICAgICAgICAoUGxhdGZvcm1TdXBwb3J0KToKKwogMjAxMi0wOS0yNSAgQmV0
aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NjE1CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lv
biAxMjk1NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkK
QEAgLTQ2NzAsNiArNDY3MCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vTGlu
a0hhc2hDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL01lbW9y
eVVzYWdlU3VwcG9ydENocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vTUlNRVR5cGVSZWdpc3RyeUNocm9taXVtLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Y2hyb21pdW0vUGFnZUNsaWVudENocm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL1BsYXRmb3JtQ3Vyc29yLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVt
L1BsYXRmb3JtS2V5Ym9hcmRFdmVudENocm9taXVtLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9XaWRnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9XaWRnZXQuaAkocmV2aXNpb24gMTI5NTY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
V2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQogI2luY2x1ZGUgIlBsYXRmb3JtV2lkZ2V0LmgiCisjaW5jbHVkZSAiUGFnZUNs
aWVudENocm9taXVtLmgiCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTkzLDYgKzk0
LDggQEAgdHlwZWRlZiBQYWdlQ2xpZW50QmxhY2tCZXJyeSogUGxhdGZvcm1QYQogI2VsaWYgUExB
VEZPUk0oRUZMKQogY2xhc3MgUGFnZUNsaWVudEVmbDsKIHR5cGVkZWYgUGFnZUNsaWVudEVmbCog
UGxhdGZvcm1QYWdlQ2xpZW50OworI2VsaWYgUExBVEZPUk0oQ0hST01JVU0pCit0eXBlZGVmIFBh
Z2VDbGllbnRDaHJvbWl1bSogUGxhdGZvcm1QYWdlQ2xpZW50OwogI2Vsc2UKIHR5cGVkZWYgUGxh
dGZvcm1XaWRnZXQgUGxhdGZvcm1QYWdlQ2xpZW50OwogI2VuZGlmCkBAIC0xMjUsOSArMTI4LDkg
QEAgZW51bSBXaWRnZXROb3RpZmljYXRpb24geyBXaWxsUGFpbnRGbGF0dAogLy8gU2Nyb2xsYmFy
IC0gTWFjLCBHdGsKIC8vIFBsdWdpbiAtIE1hYywgV2luZG93cyAod2luZG93ZWQgb25seSksIFF0
ICh3aW5kb3dlZCBvbmx5LCB3aWRnZXQgaXMgYW4gSFdORCBvbiB3aW5kb3dzKSwgR3RrICh3aW5k
b3dlZCBvbmx5KQogLy8KLWNsYXNzIFdpZGdldCA6IHB1YmxpYyBSZWZDb3VudGVkPFdpZGdldD4g
ewotcHVibGljOgotICAgIGV4cGxpY2l0IFdpZGdldChQbGF0Zm9ybVdpZGdldCA9IDApOworIGNs
YXNzIFdpZGdldCA6IHB1YmxpYyBSZWZDb3VudGVkPFdpZGdldD4geworIHB1YmxpYzoKKyAgICAg
ZXhwbGljaXQgV2lkZ2V0KFBsYXRmb3JtV2lkZ2V0ID0gMCk7CiAgICAgdmlydHVhbCB+V2lkZ2V0
KCk7CiAKICAgICBQbGF0Zm9ybVdpZGdldCBwbGF0Zm9ybVdpZGdldCgpIGNvbnN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFnZUNsaWVudENocm9taXVtLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFnZUNsaWVudENo
cm9taXVtLmgJKHJldmlzaW9uIDEyOTM1OCkJKGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1XaWRnZXQuaDoxMjkzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QYWdlQ2xpZW50Q2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1XaWRnZXRfaAorI2RlZmluZSBQbGF0
Zm9ybVdpZGdldF9oCisKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+ICAvLyBmb3IgaW50
cHRyX3QKKworLy8gUGxhdGZvcm1XaWRnZXQgaXMgYW4gb3BhcXVlIGlkZW50aWZpZXIgY29ycmVz
cG9uZGluZyB0byB3aGF0ZXZlciBuYXRpdmUKKy8vIHZpZXcgdHlwZSB0aGUgZW1iZWRkZXIgbWF5
IHVzZS4gIFBsYXRmb3JtV2lkZ2V0IENBTk5PVCBiZSBhc3N1bWVkIHRvIGJlCisvLyBhIHZhbGlk
IHBvaW50ZXIuICBTb21lIGVtYmVkZGVycyBtYXkgbm90IHVzZSB0aGlzIGlkZW50aWZpZXIgYXQg
YWxsLgorCit0eXBlZGVmIGludHB0cl90IFBsYXRmb3JtV2lkZ2V0OworCisjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BhZ2VDbGllbnRDaHJvbWl1bS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BhZ2VDbGllbnRD
aHJvbWl1bS5oCShyZXZpc2lvbiAxMjk1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QYWdlQ2xpZW50Q2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiAKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgs
MTUgKzI4LDE4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgUGxhdGZvcm1XaWRn
ZXRfaAotI2RlZmluZSBQbGF0Zm9ybVdpZGdldF9oCisjaWZuZGVmIFBhZ2VDbGllbnRDaHJvbWl1
bV9oCisjZGVmaW5lIFBhZ2VDbGllbnRDaHJvbWl1bV9oCiAKLSNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+ICAvLyBmb3IgaW50cHRyX3QKKyNpbmNsdWRlIDxwdWJsaWMvV2ViU2NyZWVuSW5m
by5oPgogCi0vLyBQbGF0Zm9ybVdpZGdldCBpcyBhbiBvcGFxdWUgaWRlbnRpZmllciBjb3JyZXNw
b25kaW5nIHRvIHdoYXRldmVyIG5hdGl2ZQotLy8gdmlldyB0eXBlIHRoZSBlbWJlZGRlciBtYXkg
dXNlLiAgUGxhdGZvcm1XaWRnZXQgQ0FOTk9UIGJlIGFzc3VtZWQgdG8gYmUKLS8vIGEgdmFsaWQg
cG9pbnRlci4gIFNvbWUgZW1iZWRkZXJzIG1heSBub3QgdXNlIHRoaXMgaWRlbnRpZmllciBhdCBh
bGwuCituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgaW50cHRyX3QgUGxhdGZvcm1XaWRn
ZXQ7CitjbGFzcyBQYWdlQ2xpZW50Q2hyb21pdW0geworcHVibGljOgorICAgIHZpcnR1YWwgV2Vi
S2l0OjpXZWJTY3JlZW5JbmZvIHNjcmVlbkluZm8oKSA9IDA7Cit9OwogCi0jZW5kaWYKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBhZ2VDbGllbnRDaHJvbWl1bV9oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNjcmVlbkNocm9taXVt
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybVNjcmVlbkNocm9taXVtLmNwcAkocmV2aXNpb24gMTI5NTY2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TY3JlZW5DaHJvbWl1bS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDQ2ICszMSw0OSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU2NyZWVuLmgiCiAKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiUGxh
dGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgorI2luY2x1ZGUgIkZsb2F0
UmVjdC5oIgorI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKKyNpbmNsdWRlICJXaWRnZXQuaCIKIAog
I2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JlZW5J
bmZvLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogaW50IHNjcmVlbkhvcml6b250YWxEUEko
V2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuSG9y
aXpvbnRhbERQSSh3aWRnZXQpOworICAgIHJldHVybiB3aWRnZXQtPnJvb3QoKS0+aG9zdFdpbmRv
dygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+c2NyZWVuSW5mbygpLmhvcml6b250YWxEUEk7CiB9
CiAKIGludCBzY3JlZW5WZXJ0aWNhbERQSShXaWRnZXQqIHdpZGdldCkKIHsKLSAgICByZXR1cm4g
UGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5WZXJ0aWNhbERQSSh3aWRnZXQpOworICAgIHJldHVybiB3
aWRnZXQtPnJvb3QoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+c2NyZWVu
SW5mbygpLnZlcnRpY2FsRFBJOwogfQogCiBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0KiB3aWRnZXQp
CiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuRGVwdGgod2lkZ2V0KTsKKyAg
ICByZXR1cm4gd2lkZ2V0LT5yb290KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50
KCktPnNjcmVlbkluZm8oKS5kZXB0aDsKIH0KIAogaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50
KFdpZGdldCogd2lkZ2V0KQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkRl
cHRoUGVyQ29tcG9uZW50KHdpZGdldCk7CisgICAgcmV0dXJuIHdpZGdldC0+cm9vdCgpLT5ob3N0
V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5zY3JlZW5JbmZvKCkuZGVwdGhQZXJDb21w
b25lbnQ7CiB9CiAKIGJvb2wgc2NyZWVuSXNNb25vY2hyb21lKFdpZGdldCogd2lkZ2V0KQogewot
ICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbklzTW9ub2Nocm9tZSh3aWRnZXQpOwor
ICAgIHJldHVybiB3aWRnZXQtPnJvb3QoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGll
bnQoKS0+c2NyZWVuSW5mbygpLmlzTW9ub2Nocm9tZTsKIH0KIAogRmxvYXRSZWN0IHNjcmVlblJl
Y3QoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVu
UmVjdCh3aWRnZXQpOworICAgIHJldHVybiBJbnRSZWN0KHdpZGdldC0+cm9vdCgpLT5ob3N0V2lu
ZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5zY3JlZW5JbmZvKCkucmVjdCk7CiB9CiAKIEZs
b2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCogd2lkZ2V0KQogewotICAgIHJldHVy
biBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkF2YWlsYWJsZVJlY3Qod2lkZ2V0KTsKKyAgICByZXR1
cm4gSW50UmVjdCh3aWRnZXQtPnJvb3QoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGll
bnQoKS0+c2NyZWVuSW5mbygpLmF2YWlsYWJsZVJlY3QpOwogfQogCiB2b2lkIHNjcmVlbkNvbG9y
UHJvZmlsZShDb2xvclByb2ZpbGUmIHRvUHJvZmlsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCShyZXZpc2lvbiAxMjk1
NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQu
aAkod29ya2luZyBjb3B5KQpAQCAtOTgsMTUgKzk4LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBi
b29sIHBsdWdpbnMoYm9vbCByZWZyZXNoLCBWZWN0b3I8UGx1Z2luSW5mbz4qKTsKICAgICBzdGF0
aWMgTlBPYmplY3QqIHBsdWdpblNjcmlwdGFibGVPYmplY3QoV2lkZ2V0Kik7CiAKLSAgICAvLyBT
Y3JlZW4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotICAgIHN0YXRpYyBpbnQgc2NyZWVuSG9yaXpvbnRhbERQSShXaWRnZXQqKTsK
LSAgICBzdGF0aWMgaW50IHNjcmVlblZlcnRpY2FsRFBJKFdpZGdldCopOwotICAgIHN0YXRpYyBp
bnQgc2NyZWVuRGVwdGgoV2lkZ2V0Kik7Ci0gICAgc3RhdGljIGludCBzY3JlZW5EZXB0aFBlckNv
bXBvbmVudChXaWRnZXQqKTsKLSAgICBzdGF0aWMgYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lk
Z2V0Kik7Ci0gICAgc3RhdGljIEludFJlY3Qgc2NyZWVuUmVjdChXaWRnZXQqKTsKLSAgICBzdGF0
aWMgSW50UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCopOwotCiAgICAgLy8gVGhlbWlu
ZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KICNpZiBPUyhXSU5ET1dTKQogICAgIHN0YXRpYyB2b2lkIHBhaW50QnV0dG9uKApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTU2OSkKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTItMDktMjUgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtDaHJvbWl1bV0gUmVtb3ZlIHNjcmVlbi1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIFBsYXRm
b3JtU3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTc0NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwg
cmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9P
UFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJTY3JlZW5JbmZvLmg6CisgICAgICAgICogc3Jj
L0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBs
OjpzY3JlZW5JbmZvKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL0Nocm9tZUNs
aWVudEltcGwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudEltcGw6OnBsYXRmb3JtUGFnZUNsaWVudCk6CisgICAgICAgIChDaHJvbWVDbGllbnRJbXBs
KToKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorCiAyMDEyLTA5LTI1ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmVlbkluZm8uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgJKHJldmlzaW9u
IDEyOTU2NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmVlbkluZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNTUgKzI4LDQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBXZWJTY3JlZW5JbmZvX2gKLSNkZWZpbmUgV2ViU2NyZWVuSW5mb19oCi0KLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1
Y3QgV2ViU2NyZWVuSW5mbyB7Ci0gICAgLy8gVGhlIGhvcml6b250YWwgc2NyZWVuIGRwaS4KLSAg
ICBpbnQgaG9yaXpvbnRhbERQSTsKLQotICAgIC8vIFRoZSB2ZXJ0aWNhbCBzY3JlZW4gZHBpLgot
ICAgIGludCB2ZXJ0aWNhbERQSTsKLQotICAgIC8vIFRoZSBzY3JlZW4gZGVwdGggaW4gYml0cyBw
ZXIgcGl4ZWwKLSAgICBpbnQgZGVwdGg7Ci0KLSAgICAvLyBUaGUgYml0cyBwZXIgY29sb3VyIGNv
bXBvbmVudC4gVGhpcyBhc3N1bWVzIHRoYXQgdGhlIGNvbG91cnMgYXJlIGJhbGFuY2VkCi0gICAg
Ly8gZXF1YWxseS4KLSAgICBpbnQgZGVwdGhQZXJDb21wb25lbnQ7Ci0KLSAgICAvLyBUaGlzIGNh
biBiZSB0cnVlIGZvciBibGFjayBhbmQgd2hpdGUgcHJpbnRlcnMKLSAgICBib29sIGlzTW9ub2No
cm9tZTsKLQotICAgIC8vIFRoaXMgaXMgc2V0IGZyb20gdGhlIHJjTW9uaXRvciBtZW1iZXIgb2Yg
TU9OSVRPUklORk9FWCwgdG8gd2hpdDoKLSAgICAvLyAgICJBIFJFQ1Qgc3RydWN0dXJlIHRoYXQg
c3BlY2lmaWVzIHRoZSBkaXNwbGF5IG1vbml0b3IgcmVjdGFuZ2xlLAotICAgIC8vICAgZXhwcmVz
c2VkIGluIHZpcnR1YWwtc2NyZWVuIGNvb3JkaW5hdGVzLiBOb3RlIHRoYXQgaWYgdGhlIG1vbml0
b3IKLSAgICAvLyAgIGlzIG5vdCB0aGUgcHJpbWFyeSBkaXNwbGF5IG1vbml0b3IsIHNvbWUgb2Yg
dGhlIHJlY3RhbmdsZSdzCi0gICAgLy8gICBjb29yZGluYXRlcyBtYXkgYmUgbmVnYXRpdmUgdmFs
dWVzLiIKLSAgICBXZWJSZWN0IHJlY3Q7Ci0KLSAgICAvLyBUaGlzIGlzIHNldCBmcm9tIHRoZSBy
Y1dvcmsgbWVtYmVyIG9mIE1PTklUT1JJTkZPRVgsIHRvIHdoaXQ6Ci0gICAgLy8gICAiQSBSRUNU
IHN0cnVjdHVyZSB0aGF0IHNwZWNpZmllcyB0aGUgd29yayBhcmVhIHJlY3RhbmdsZSBvZiB0aGUK
LSAgICAvLyAgIGRpc3BsYXkgbW9uaXRvciB0aGF0IGNhbiBiZSB1c2VkIGJ5IGFwcGxpY2F0aW9u
cywgZXhwcmVzc2VkIGluCi0gICAgLy8gICB2aXJ0dWFsLXNjcmVlbiBjb29yZGluYXRlcy4gV2lu
ZG93cyB1c2VzIHRoaXMgcmVjdGFuZ2xlIHRvCi0gICAgLy8gICBtYXhpbWl6ZSBhbiBhcHBsaWNh
dGlvbiBvbiB0aGUgbW9uaXRvci4gVGhlIHJlc3Qgb2YgdGhlIGFyZWEgaW4KLSAgICAvLyAgIHJj
TW9uaXRvciBjb250YWlucyBzeXN0ZW0gd2luZG93cyBzdWNoIGFzIHRoZSB0YXNrIGJhciBhbmQg
c2lkZQotICAgIC8vICAgYmFycy4gTm90ZSB0aGF0IGlmIHRoZSBtb25pdG9yIGlzIG5vdCB0aGUg
cHJpbWFyeSBkaXNwbGF5IG1vbml0b3IsCi0gICAgLy8gICBzb21lIG9mIHRoZSByZWN0YW5nbGUn
cyBjb29yZGluYXRlcyBtYXkgYmUgbmVnYXRpdmUgdmFsdWVzIi4KLSAgICBXZWJSZWN0IGF2YWls
YWJsZVJlY3Q7Ci0KLSAgICBXZWJTY3JlZW5JbmZvKCkKLSAgICAgICAgOiBob3Jpem9udGFsRFBJ
KDApCi0gICAgICAgICwgdmVydGljYWxEUEkoMCkKLSAgICAgICAgLCBkZXB0aCgwKQotICAgICAg
ICAsIGRlcHRoUGVyQ29tcG9uZW50KDApCi0gICAgICAgICwgaXNNb25vY2hyb21lKGZhbHNlKSB7
IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKKyNpbmNsdWRlICIuLi8u
Li8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oIgpJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHJldmlz
aW9uIDEyOTU2NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudElt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDMsNiArOTAzLDEyIEBAIHZvaWQgQ2hyb21lQ2xp
ZW50SW1wbDo6cG9zdEFjY2Vzc2liaWxpdHkKICAgICAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+
cG9zdEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oV2ViQWNjZXNzaWJpbGl0eU9iamVjdChvYmop
LCB0b1dlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24obm90aWZpY2F0aW9uKSk7CiB9CiAKK1dl
YktpdDo6V2ViU2NyZWVuSW5mbyBDaHJvbWVDbGllbnRJbXBsOjpzY3JlZW5JbmZvKCkKK3sKKyAg
ICByZXR1cm4gbV93ZWJWaWV3LT5jbGllbnQoKS0+c2NyZWVuSW5mbygpOworfQorCisKIGJvb2wg
Q2hyb21lQ2xpZW50SW1wbDo6cGFpbnRDdXN0b21PdmVyaGFuZ0FyZWEoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJ
bnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQog
ewogICAgIEZyYW1lKiBmcmFtZSA9IG1fd2ViVmlldy0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgp
OwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwu
aAkocmV2aXNpb24gMTI5NTY2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxMCArNjAsMTIgQEAgY2xhc3MgV2Vi
Q29sb3JDaG9vc2VyOwogY2xhc3MgV2ViQ29sb3JDaG9vc2VyQ2xpZW50OwogY2xhc3MgV2ViVmll
d0ltcGw7CiBzdHJ1Y3QgV2ViQ3Vyc29ySW5mbzsKK3N0cnVjdCBXZWJTY3JlZW5JbmZvOwogc3Ry
dWN0IFdlYlBvcHVwTWVudUluZm87CiAKIC8vIEhhbmRsZXMgd2luZG93LWxldmVsIG5vdGlmaWNh
dGlvbnMgZnJvbSBXZWJDb3JlIG9uIGJlaGFsZiBvZiBhIFdlYlZpZXcuCi1jbGFzcyBDaHJvbWVD
bGllbnRJbXBsIDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNsaWVudENocm9taXVtIHsKK2NsYXNz
IENocm9tZUNsaWVudEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50Q2hyb21pdW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdlYkNvcmU6OlBhZ2VDbGllbnRDaHJv
bWl1bSB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ2hyb21lQ2xpZW50SW1wbChXZWJWaWV3SW1w
bCogd2ViVmlldyk7CiAgICAgdmlydHVhbCB+Q2hyb21lQ2xpZW50SW1wbCgpOwpAQCAtMTIzLDcg
KzEyNSw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJl
Y3QpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVj
dCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdDsKLSAgICB2
aXJ0dWFsIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCB7IHJl
dHVybiAwOyB9CisgICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xp
ZW50KCkgY29uc3QgeyBjb25zdF9jYXN0PFdlYkNvcmU6OlBhZ2VDbGllbnRDaHJvbWl1bSo+KHRo
aXMpOyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoV2ViQ29yZTo6RnJh
bWUqLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGxh
eW91dFVwZGF0ZWQoV2ViQ29yZTo6RnJhbWUqKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsUmVjdEludG9WaWV3KApAQCAtMTk0LDYgKzE5Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVy
KTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdCosIFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OkFYTm90aWZp
Y2F0aW9uKTsKIAorICAgIC8vIFBhZ2VDbGllbnRDaHJvbWl1bSBtZXRob2RzOgorICAgIHZpcnR1
YWwgV2ViU2NyZWVuSW5mbyBzY3JlZW5JbmZvKCk7CisKICAgICAvLyBDaHJvbWVDbGllbnRJbXBs
OgogICAgIHZvaWQgc2V0Q3Vyc29yRm9yUGx1Z2luKGNvbnN0IFdlYkN1cnNvckluZm8mKTsKICAg
ICB2b2lkIHNldE5ld1dpbmRvd05hdmlnYXRpb25Qb2xpY3koV2ViTmF2aWdhdGlvblBvbGljeSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5j
cHAJKHJldmlzaW9uIDEyOTU2NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRm
b3JtU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCwzMCArMTAwLDYgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgV2ViV2lk
Z2V0Q2xpZW50KiB0b1dlYldpZGdldENsaWVudChXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBpZiAo
IXdpZGdldCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBGcmFtZVZpZXcqIHZpZXc7Ci0gICAg
aWYgKHdpZGdldC0+aXNGcmFtZVZpZXcoKSkKLSAgICAgICAgdmlldyA9IHN0YXRpY19jYXN0PEZy
YW1lVmlldyo+KHdpZGdldCk7Ci0gICAgZWxzZSBpZiAod2lkZ2V0LT5wYXJlbnQoKSAmJiB3aWRn
ZXQtPnBhcmVudCgpLT5pc0ZyYW1lVmlldygpKQotICAgICAgICB2aWV3ID0gc3RhdGljX2Nhc3Q8
RnJhbWVWaWV3Kj4od2lkZ2V0LT5wYXJlbnQoKSk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIFBhZ2UqIHBhZ2UgPSB2aWV3LT5mcmFtZSgpID8gdmlldy0+ZnJhbWUoKS0+cGFn
ZSgpIDogMDsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgdm9pZCog
d2ViVmlldyA9IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+d2ViVmlldygpOwotICAgIGlmICgh
d2ViVmlldykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vi
Vmlld0ltcGwqPih3ZWJWaWV3KS0+Y2xpZW50KCk7Ci19Ci0KIHN0YXRpYyBXZWJDb29raWVKYXIq
IGdldENvb2tpZUphcihjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgV2ViRnJhbWVJ
bXBsKiBmcmFtZUltcGwgPSBXZWJGcmFtZUltcGw6OmZyb21GcmFtZShkb2N1bWVudC0+ZnJhbWUo
KSk7CkBAIC00NjEsNjIgKzQzNyw2IEBAIHZvaWQgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1l
UGFydCgKIC8vIEdsdWUgbGF5ZXIuIE9uY2UgdGhlIEdsdWUgbGF5ZXIgbW92ZXMgZW50aXJlbHkg
aW50byB0aGUgV2ViS2l0IGxheWVyLCB0aGVzZQogLy8gbWV0aG9kcyB3aWxsIGJlIGRlbGV0ZWQu
CiAKLWludCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkhvcml6b250YWxEUEkoV2lkZ2V0KiB3aWRn
ZXQpCi17Ci0gICAgV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVudCh3
aWRnZXQpOwotICAgIGlmICghY2xpZW50KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4g
Y2xpZW50LT5zY3JlZW5JbmZvKCkuaG9yaXpvbnRhbERQSTsKLX0KLQotaW50IFBsYXRmb3JtU3Vw
cG9ydDo6c2NyZWVuVmVydGljYWxEUEkoV2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAgV2ViV2lkZ2V0
Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVudCh3aWRnZXQpOwotICAgIGlmICghY2xp
ZW50KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gY2xpZW50LT5zY3JlZW5JbmZvKCku
dmVydGljYWxEUEk7Ci19Ci0KLWludCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkRlcHRoKFdpZGdl
dCogd2lkZ2V0KQotewotICAgIFdlYldpZGdldENsaWVudCogY2xpZW50ID0gdG9XZWJXaWRnZXRD
bGllbnQod2lkZ2V0KTsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
cmV0dXJuIGNsaWVudC0+c2NyZWVuSW5mbygpLmRlcHRoOwotfQotCi1pbnQgUGxhdGZvcm1TdXBw
b3J0OjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudChXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBXZWJX
aWRnZXRDbGllbnQqIGNsaWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7Ci0gICAgaWYg
KCFjbGllbnQpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBjbGllbnQtPnNjcmVlbklu
Zm8oKS5kZXB0aFBlckNvbXBvbmVudDsKLX0KLQotYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVl
bklzTW9ub2Nocm9tZShXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBXZWJXaWRnZXRDbGllbnQqIGNs
aWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8oKS5pc01vbm9jaHJv
bWU7Ci19Ci0KLUludFJlY3QgUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5SZWN0KFdpZGdldCogd2lk
Z2V0KQotewotICAgIFdlYldpZGdldENsaWVudCogY2xpZW50ID0gdG9XZWJXaWRnZXRDbGllbnQo
d2lkZ2V0KTsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKLSAg
ICByZXR1cm4gY2xpZW50LT5zY3JlZW5JbmZvKCkucmVjdDsKLX0KLQotSW50UmVjdCBQbGF0Zm9y
bVN1cHBvcnQ6OnNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAgV2Vi
V2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVudCh3aWRnZXQpOwotICAgIGlm
ICghY2xpZW50KQotICAgICAgICByZXR1cm4gSW50UmVjdCgpOwotICAgIHJldHVybiBjbGllbnQt
PnNjcmVlbkluZm8oKS5hdmFpbGFibGVSZWN0OwotfQotCiAjaWYgRU5BQkxFKFdPUktFUlMpCiBX
b3JrZXJDb250ZXh0UHJveHkqIFdvcmtlckNvbnRleHRQcm94eTo6Y3JlYXRlKFdvcmtlciogd29y
a2VyKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165826</attachid>
            <date>2012-09-26 10:16:06 -0700</date>
            <delta_ts>2012-09-27 13:59:05 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-97474-20120926131519.patch</filename>
            <type>text/plain</type>
            <size>23317</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5NjI0KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA5LTI1ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFJl
bW92ZSBzY3JlZW4tcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBQbGF0Zm9ybVN1cHBvcnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NDc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZv
cm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNl
IGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAg
KiBQbGF0Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZv
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNjcmVlbkluZm8pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTY3JlZW5JbmZvOjpXZWJTY3JlZW5JbmZvKToKKwogMjAxMi0w
OS0yNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyOTUxNy4KSW5kZXg6IFNvdXJjZS9QbGF0Zm9y
bS9QbGF0Zm9ybS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5n
eXBpCShyZXZpc2lvbiAxMjk2MjQpCisrKyBTb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQko
d29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYlJlY3QuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJlZmVy
cmVyUG9saWN5LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSZW5kZXJpbmdT
dGF0cy5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJMYXllci5oJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oJywKSW5kZXg6IFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNjcmVlbkluZm9faAorI2Rl
ZmluZSBXZWJTY3JlZW5JbmZvX2gKKworI2luY2x1ZGUgIldlYlJlY3QuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3N0cnVjdCBXZWJTY3JlZW5JbmZvIHsKKyAgICAvLyBUaGUgaG9yaXpvbnRh
bCBzY3JlZW4gZHBpLgorICAgIGludCBob3Jpem9udGFsRFBJOworCisgICAgLy8gVGhlIHZlcnRp
Y2FsIHNjcmVlbiBkcGkuCisgICAgaW50IHZlcnRpY2FsRFBJOworCisgICAgLy8gVGhlIHNjcmVl
biBkZXB0aCBpbiBiaXRzIHBlciBwaXhlbAorICAgIGludCBkZXB0aDsKKworICAgIC8vIFRoZSBi
aXRzIHBlciBjb2xvdXIgY29tcG9uZW50LiBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgY29sb3VycyBh
cmUgYmFsYW5jZWQKKyAgICAvLyBlcXVhbGx5LgorICAgIGludCBkZXB0aFBlckNvbXBvbmVudDsK
KworICAgIC8vIFRoaXMgY2FuIGJlIHRydWUgZm9yIGJsYWNrIGFuZCB3aGl0ZSBwcmludGVycwor
ICAgIGJvb2wgaXNNb25vY2hyb21lOworCisgICAgLy8gVGhpcyBpcyBzZXQgZnJvbSB0aGUgcmNN
b25pdG9yIG1lbWJlciBvZiBNT05JVE9SSU5GT0VYLCB0byB3aGl0OgorICAgIC8vICAgIkEgUkVD
VCBzdHJ1Y3R1cmUgdGhhdCBzcGVjaWZpZXMgdGhlIGRpc3BsYXkgbW9uaXRvciByZWN0YW5nbGUs
CisgICAgLy8gICBleHByZXNzZWQgaW4gdmlydHVhbC1zY3JlZW4gY29vcmRpbmF0ZXMuIE5vdGUg
dGhhdCBpZiB0aGUgbW9uaXRvcgorICAgIC8vICAgaXMgbm90IHRoZSBwcmltYXJ5IGRpc3BsYXkg
bW9uaXRvciwgc29tZSBvZiB0aGUgcmVjdGFuZ2xlJ3MKKyAgICAvLyAgIGNvb3JkaW5hdGVzIG1h
eSBiZSBuZWdhdGl2ZSB2YWx1ZXMuIgorICAgIFdlYlJlY3QgcmVjdDsKKworICAgIC8vIFRoaXMg
aXMgc2V0IGZyb20gdGhlIHJjV29yayBtZW1iZXIgb2YgTU9OSVRPUklORk9FWCwgdG8gd2hpdDoK
KyAgICAvLyAgICJBIFJFQ1Qgc3RydWN0dXJlIHRoYXQgc3BlY2lmaWVzIHRoZSB3b3JrIGFyZWEg
cmVjdGFuZ2xlIG9mIHRoZQorICAgIC8vICAgZGlzcGxheSBtb25pdG9yIHRoYXQgY2FuIGJlIHVz
ZWQgYnkgYXBwbGljYXRpb25zLCBleHByZXNzZWQgaW4KKyAgICAvLyAgIHZpcnR1YWwtc2NyZWVu
IGNvb3JkaW5hdGVzLiBXaW5kb3dzIHVzZXMgdGhpcyByZWN0YW5nbGUgdG8KKyAgICAvLyAgIG1h
eGltaXplIGFuIGFwcGxpY2F0aW9uIG9uIHRoZSBtb25pdG9yLiBUaGUgcmVzdCBvZiB0aGUgYXJl
YSBpbgorICAgIC8vICAgcmNNb25pdG9yIGNvbnRhaW5zIHN5c3RlbSB3aW5kb3dzIHN1Y2ggYXMg
dGhlIHRhc2sgYmFyIGFuZCBzaWRlCisgICAgLy8gICBiYXJzLiBOb3RlIHRoYXQgaWYgdGhlIG1v
bml0b3IgaXMgbm90IHRoZSBwcmltYXJ5IGRpc3BsYXkgbW9uaXRvciwKKyAgICAvLyAgIHNvbWUg
b2YgdGhlIHJlY3RhbmdsZSdzIGNvb3JkaW5hdGVzIG1heSBiZSBuZWdhdGl2ZSB2YWx1ZXMiLgor
ICAgIFdlYlJlY3QgYXZhaWxhYmxlUmVjdDsKKworICAgIFdlYlNjcmVlbkluZm8oKQorICAgICAg
ICA6IGhvcml6b250YWxEUEkoMCkKKyAgICAgICAgLCB2ZXJ0aWNhbERQSSgwKQorICAgICAgICAs
IGRlcHRoKDApCisgICAgICAgICwgZGVwdGhQZXJDb21wb25lbnQoMCkKKyAgICAgICAgLCBpc01v
bm9jaHJvbWUoZmFsc2UpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5NjI0KQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTItMDktMjUgIE1hcmsg
UGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gUmVt
b3ZlIHNjcmVlbi1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIFBsYXRmb3JtU3VwcG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc0NzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9y
bWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2Ug
YWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBwbGF0Zm9ybS9XaWRnZXQuaDoKKyAgICAgICAgKFdpZGdldCk6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vUGFnZUNsaWVudENocm9taXVtLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtV2lkZ2V0LmguCisgICAgICAgIChQYWdlQ2xp
ZW50Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1TY3JlZW5DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Ib3Jpem9udGFsRFBJKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlblZlcnRpY2FsRFBJKToK
KyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkRlcHRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVl
bkRlcHRoUGVyQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbklzTW9ub2Nocm9t
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNj
cmVlbkF2YWlsYWJsZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3Jt
U3VwcG9ydC5oOgorICAgICAgICAoUGxhdGZvcm1TdXBwb3J0KToKKwogMjAxMi0wOS0yNiAgWXVy
eSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBjb21wYXJlIG9iamVjdHMgY291bnRlZCBieSB0aGUgbWVtb3J5IGluc3RydW1lbnRhdGlv
biB3aXRoIHRob3NlIGFsbG9jYXRlZCBpbiB0aGUgaGVhcApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQko
cmV2aXNpb24gMTI5NjI0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5n
IGNvcHkpCkBAIC00NjcwLDYgKzQ2NzAsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9t
aXVtL0xpbmtIYXNoQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1
bS9NZW1vcnlVc2FnZVN1cHBvcnRDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2Nocm9taXVtL01JTUVUeXBlUmVnaXN0cnlDaHJvbWl1bS5jcHAnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2Nocm9taXVtL1BhZ2VDbGllbnRDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUN1cnNvci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRDaHJvbWl1bS5jcHAnLApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vV2lkZ2V0LmgJKHJldmlzaW9uIDEyOTYyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1dpZGdldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKICNpZiBQ
TEFURk9STShDSFJPTUlVTSkKICNpbmNsdWRlICJQbGF0Zm9ybVdpZGdldC5oIgorI2luY2x1ZGUg
IlBhZ2VDbGllbnRDaHJvbWl1bS5oIgogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC05
Myw2ICs5NCw4IEBAIHR5cGVkZWYgUGFnZUNsaWVudEJsYWNrQmVycnkqIFBsYXRmb3JtUGEKICNl
bGlmIFBMQVRGT1JNKEVGTCkKIGNsYXNzIFBhZ2VDbGllbnRFZmw7CiB0eXBlZGVmIFBhZ2VDbGll
bnRFZmwqIFBsYXRmb3JtUGFnZUNsaWVudDsKKyNlbGlmIFBMQVRGT1JNKENIUk9NSVVNKQordHlw
ZWRlZiBXZWJDb3JlOjpQYWdlQ2xpZW50Q2hyb21pdW0qIFBsYXRmb3JtUGFnZUNsaWVudDsKICNl
bHNlCiB0eXBlZGVmIFBsYXRmb3JtV2lkZ2V0IFBsYXRmb3JtUGFnZUNsaWVudDsKICNlbmRpZgpA
QCAtMTI1LDkgKzEyOCw5IEBAIGVudW0gV2lkZ2V0Tm90aWZpY2F0aW9uIHsgV2lsbFBhaW50Rmxh
dHQKIC8vIFNjcm9sbGJhciAtIE1hYywgR3RrCiAvLyBQbHVnaW4gLSBNYWMsIFdpbmRvd3MgKHdp
bmRvd2VkIG9ubHkpLCBRdCAod2luZG93ZWQgb25seSwgd2lkZ2V0IGlzIGFuIEhXTkQgb24gd2lu
ZG93cyksIEd0ayAod2luZG93ZWQgb25seSkKIC8vCi1jbGFzcyBXaWRnZXQgOiBwdWJsaWMgUmVm
Q291bnRlZDxXaWRnZXQ+IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXaWRnZXQoUGxhdGZvcm1X
aWRnZXQgPSAwKTsKKyBjbGFzcyBXaWRnZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXaWRnZXQ+IHsK
KyBwdWJsaWM6CisgICAgIGV4cGxpY2l0IFdpZGdldChQbGF0Zm9ybVdpZGdldCA9IDApOwogICAg
IHZpcnR1YWwgfldpZGdldCgpOwogCiAgICAgUGxhdGZvcm1XaWRnZXQgcGxhdGZvcm1XaWRnZXQo
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BhZ2VDbGll
bnRDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BhZ2VDbGllbnRDaHJvbWl1bS5oCShyZXZpc2lvbiAxMjkzNTgpCShmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtV2lkZ2V0Lmg6MTI5MzU4KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFnZUNsaWVudENocm9taXVtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAw
OSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtV2lkZ2V0
X2gKKyNkZWZpbmUgUGxhdGZvcm1XaWRnZXRfaAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPiAgLy8gZm9yIGludHB0cl90CisKKy8vIFBsYXRmb3JtV2lkZ2V0IGlzIGFuIG9wYXF1ZSBp
ZGVudGlmaWVyIGNvcnJlc3BvbmRpbmcgdG8gd2hhdGV2ZXIgbmF0aXZlCisvLyB2aWV3IHR5cGUg
dGhlIGVtYmVkZGVyIG1heSB1c2UuICBQbGF0Zm9ybVdpZGdldCBDQU5OT1QgYmUgYXNzdW1lZCB0
byBiZQorLy8gYSB2YWxpZCBwb2ludGVyLiAgU29tZSBlbWJlZGRlcnMgbWF5IG5vdCB1c2UgdGhp
cyBpZGVudGlmaWVyIGF0IGFsbC4KKwordHlwZWRlZiBpbnRwdHJfdCBQbGF0Zm9ybVdpZGdldDsK
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYWdlQ2xp
ZW50Q2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9QYWdlQ2xpZW50Q2hyb21pdW0uaAkocmV2aXNpb24gMTI5NTMwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFnZUNsaWVudENocm9taXVtLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDEyLCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTI4LDE1ICsyOCwxOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIFBsYXRmb3JtV2lkZ2V0X2gKLSNkZWZpbmUgUGxhdGZvcm1XaWRnZXRfaAorI2lmbmRlZiBQ
YWdlQ2xpZW50Q2hyb21pdW1faAorI2RlZmluZSBQYWdlQ2xpZW50Q2hyb21pdW1faAogCi0jaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPiAgLy8gZm9yIGludHB0cl90CisjaW5jbHVkZSA8cHVi
bGljL1dlYlNjcmVlbkluZm8uaD4KIAotLy8gUGxhdGZvcm1XaWRnZXQgaXMgYW4gb3BhcXVlIGlk
ZW50aWZpZXIgY29ycmVzcG9uZGluZyB0byB3aGF0ZXZlciBuYXRpdmUKLS8vIHZpZXcgdHlwZSB0
aGUgZW1iZWRkZXIgbWF5IHVzZS4gIFBsYXRmb3JtV2lkZ2V0IENBTk5PVCBiZSBhc3N1bWVkIHRv
IGJlCi0vLyBhIHZhbGlkIHBvaW50ZXIuICBTb21lIGVtYmVkZGVycyBtYXkgbm90IHVzZSB0aGlz
IGlkZW50aWZpZXIgYXQgYWxsLgorbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIGludHB0
cl90IFBsYXRmb3JtV2lkZ2V0OworY2xhc3MgUGFnZUNsaWVudENocm9taXVtIHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViU2NyZWVuSW5mbyBzY3JlZW5JbmZvKCkgPSAwOworfTsK
IAotI2VuZGlmCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQYWdlQ2xpZW50
Q2hyb21pdW1faApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZv
cm1TY3JlZW5DaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1TY3JlZW5DaHJvbWl1bS5jcHAJKHJldmlzaW9uIDEyOTYyNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU2NyZWVuQ2hyb21p
dW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw0NiArMzEsNDkgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogCi0jaW5jbHVkZSAiSW50UmVjdC5o
IgotI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIK
KyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCisjaW5jbHVk
ZSAiV2lkZ2V0LmgiCiAKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxw
dWJsaWMvV2ViU2NyZWVuSW5mby5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGludCBzY3Jl
ZW5Ib3Jpem9udGFsRFBJKFdpZGdldCogd2lkZ2V0KQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1
cHBvcnQ6OnNjcmVlbkhvcml6b250YWxEUEkod2lkZ2V0KTsKKyAgICByZXR1cm4gd2lkZ2V0LT5y
b290KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPnNjcmVlbkluZm8oKS5o
b3Jpem9udGFsRFBJOwogfQogCiBpbnQgc2NyZWVuVmVydGljYWxEUEkoV2lkZ2V0KiB3aWRnZXQp
CiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuVmVydGljYWxEUEkod2lkZ2V0
KTsKKyAgICByZXR1cm4gd2lkZ2V0LT5yb290KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdl
Q2xpZW50KCktPnNjcmVlbkluZm8oKS52ZXJ0aWNhbERQSTsKIH0KIAogaW50IHNjcmVlbkRlcHRo
KFdpZGdldCogd2lkZ2V0KQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkRl
cHRoKHdpZGdldCk7CisgICAgcmV0dXJuIHdpZGdldC0+cm9vdCgpLT5ob3N0V2luZG93KCktPnBs
YXRmb3JtUGFnZUNsaWVudCgpLT5zY3JlZW5JbmZvKCkuZGVwdGg7CiB9CiAKIGludCBzY3JlZW5E
ZXB0aFBlckNvbXBvbmVudChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1T
dXBwb3J0OjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCh3aWRnZXQpOworICAgIHJldHVybiB3aWRn
ZXQtPnJvb3QoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+c2NyZWVuSW5m
bygpLmRlcHRoUGVyQ29tcG9uZW50OwogfQogCiBib29sIHNjcmVlbklzTW9ub2Nocm9tZShXaWRn
ZXQqIHdpZGdldCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5Jc01vbm9j
aHJvbWUod2lkZ2V0KTsKKyAgICByZXR1cm4gd2lkZ2V0LT5yb290KCktPmhvc3RXaW5kb3coKS0+
cGxhdGZvcm1QYWdlQ2xpZW50KCktPnNjcmVlbkluZm8oKS5pc01vbm9jaHJvbWU7CiB9CiAKIEZs
b2F0UmVjdCBzY3JlZW5SZWN0KFdpZGdldCogd2lkZ2V0KQogewotICAgIHJldHVybiBQbGF0Zm9y
bVN1cHBvcnQ6OnNjcmVlblJlY3Qod2lkZ2V0KTsKKyAgICByZXR1cm4gSW50UmVjdCh3aWRnZXQt
PnJvb3QoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+c2NyZWVuSW5mbygp
LnJlY3QpOwogfQogCiBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqIHdpZGdl
dCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5BdmFpbGFibGVSZWN0KHdp
ZGdldCk7CisgICAgcmV0dXJuIEludFJlY3Qod2lkZ2V0LT5yb290KCktPmhvc3RXaW5kb3coKS0+
cGxhdGZvcm1QYWdlQ2xpZW50KCktPnNjcmVlbkluZm8oKS5hdmFpbGFibGVSZWN0KTsKIH0KIAog
dm9pZCBzY3JlZW5Db2xvclByb2ZpbGUoQ29sb3JQcm9maWxlJiB0b1Byb2ZpbGUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQu
aAkocmV2aXNpb24gMTI5NjI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UGxhdGZvcm1TdXBwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDE1ICs5OCw2IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgYm9vbCBwbHVnaW5zKGJvb2wgcmVmcmVzaCwgVmVjdG9yPFBsdWdpbklu
Zm8+Kik7CiAgICAgc3RhdGljIE5QT2JqZWN0KiBwbHVnaW5TY3JpcHRhYmxlT2JqZWN0KFdpZGdl
dCopOwogCi0gICAgLy8gU2NyZWVuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBzdGF0aWMgaW50IHNjcmVlbkhvcml6b250
YWxEUEkoV2lkZ2V0Kik7Ci0gICAgc3RhdGljIGludCBzY3JlZW5WZXJ0aWNhbERQSShXaWRnZXQq
KTsKLSAgICBzdGF0aWMgaW50IHNjcmVlbkRlcHRoKFdpZGdldCopOwotICAgIHN0YXRpYyBpbnQg
c2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0Kik7Ci0gICAgc3RhdGljIGJvb2wgc2NyZWVu
SXNNb25vY2hyb21lKFdpZGdldCopOwotICAgIHN0YXRpYyBJbnRSZWN0IHNjcmVlblJlY3QoV2lk
Z2V0Kik7Ci0gICAgc3RhdGljIEludFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqKTsK
LQogICAgIC8vIFRoZW1pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjaWYgT1MoV0lORE9XUykKICAgICBzdGF0aWMgdm9pZCBw
YWludEJ1dHRvbigKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjk2
MjQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIzIEBACisyMDEyLTA5LTI1ICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFJlbW92ZSBzY3JlZW4tcmVsYXRlZCBmdW5j
dGlvbnMgZnJvbSBQbGF0Zm9ybVN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk3NDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1
Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3Jp
cHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViU2NyZWVuSW5mby5o
OgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Q2hyb21lQ2xpZW50SW1wbDo6c2NyZWVuSW5mbyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpwbGF0Zm9ybVBhZ2VDbGllbnQpOgorICAgICAgICAo
Q2hyb21lQ2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wOS0yNSAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtjaHJvbWl1bV0gYWRkIGEg
dGVzdCBmb3IgaW5zcGVjdG9yIG92ZXJsYXkgdXBkYXRlIGZyZXF1ZW5jeQpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmVlbkluZm8uaAkocmV2aXNpb24gMTI5
NjI0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw1NSArMjgsNCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZuZGVmIFdlYlNjcmVlbkluZm9faAotI2RlZmluZSBXZWJTY3JlZW5JbmZvX2gKLQotI2luY2x1
ZGUgInBsYXRmb3JtL1dlYlJlY3QuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBX
ZWJTY3JlZW5JbmZvIHsKLSAgICAvLyBUaGUgaG9yaXpvbnRhbCBzY3JlZW4gZHBpLgotICAgIGlu
dCBob3Jpem9udGFsRFBJOwotCi0gICAgLy8gVGhlIHZlcnRpY2FsIHNjcmVlbiBkcGkuCi0gICAg
aW50IHZlcnRpY2FsRFBJOwotCi0gICAgLy8gVGhlIHNjcmVlbiBkZXB0aCBpbiBiaXRzIHBlciBw
aXhlbAotICAgIGludCBkZXB0aDsKLQotICAgIC8vIFRoZSBiaXRzIHBlciBjb2xvdXIgY29tcG9u
ZW50LiBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgY29sb3VycyBhcmUgYmFsYW5jZWQKLSAgICAvLyBl
cXVhbGx5LgotICAgIGludCBkZXB0aFBlckNvbXBvbmVudDsKLQotICAgIC8vIFRoaXMgY2FuIGJl
IHRydWUgZm9yIGJsYWNrIGFuZCB3aGl0ZSBwcmludGVycwotICAgIGJvb2wgaXNNb25vY2hyb21l
OwotCi0gICAgLy8gVGhpcyBpcyBzZXQgZnJvbSB0aGUgcmNNb25pdG9yIG1lbWJlciBvZiBNT05J
VE9SSU5GT0VYLCB0byB3aGl0OgotICAgIC8vICAgIkEgUkVDVCBzdHJ1Y3R1cmUgdGhhdCBzcGVj
aWZpZXMgdGhlIGRpc3BsYXkgbW9uaXRvciByZWN0YW5nbGUsCi0gICAgLy8gICBleHByZXNzZWQg
aW4gdmlydHVhbC1zY3JlZW4gY29vcmRpbmF0ZXMuIE5vdGUgdGhhdCBpZiB0aGUgbW9uaXRvcgot
ICAgIC8vICAgaXMgbm90IHRoZSBwcmltYXJ5IGRpc3BsYXkgbW9uaXRvciwgc29tZSBvZiB0aGUg
cmVjdGFuZ2xlJ3MKLSAgICAvLyAgIGNvb3JkaW5hdGVzIG1heSBiZSBuZWdhdGl2ZSB2YWx1ZXMu
IgotICAgIFdlYlJlY3QgcmVjdDsKLQotICAgIC8vIFRoaXMgaXMgc2V0IGZyb20gdGhlIHJjV29y
ayBtZW1iZXIgb2YgTU9OSVRPUklORk9FWCwgdG8gd2hpdDoKLSAgICAvLyAgICJBIFJFQ1Qgc3Ry
dWN0dXJlIHRoYXQgc3BlY2lmaWVzIHRoZSB3b3JrIGFyZWEgcmVjdGFuZ2xlIG9mIHRoZQotICAg
IC8vICAgZGlzcGxheSBtb25pdG9yIHRoYXQgY2FuIGJlIHVzZWQgYnkgYXBwbGljYXRpb25zLCBl
eHByZXNzZWQgaW4KLSAgICAvLyAgIHZpcnR1YWwtc2NyZWVuIGNvb3JkaW5hdGVzLiBXaW5kb3dz
IHVzZXMgdGhpcyByZWN0YW5nbGUgdG8KLSAgICAvLyAgIG1heGltaXplIGFuIGFwcGxpY2F0aW9u
IG9uIHRoZSBtb25pdG9yLiBUaGUgcmVzdCBvZiB0aGUgYXJlYSBpbgotICAgIC8vICAgcmNNb25p
dG9yIGNvbnRhaW5zIHN5c3RlbSB3aW5kb3dzIHN1Y2ggYXMgdGhlIHRhc2sgYmFyIGFuZCBzaWRl
Ci0gICAgLy8gICBiYXJzLiBOb3RlIHRoYXQgaWYgdGhlIG1vbml0b3IgaXMgbm90IHRoZSBwcmlt
YXJ5IGRpc3BsYXkgbW9uaXRvciwKLSAgICAvLyAgIHNvbWUgb2YgdGhlIHJlY3RhbmdsZSdzIGNv
b3JkaW5hdGVzIG1heSBiZSBuZWdhdGl2ZSB2YWx1ZXMiLgotICAgIFdlYlJlY3QgYXZhaWxhYmxl
UmVjdDsKLQotICAgIFdlYlNjcmVlbkluZm8oKQotICAgICAgICA6IGhvcml6b250YWxEUEkoMCkK
LSAgICAgICAgLCB2ZXJ0aWNhbERQSSgwKQotICAgICAgICAsIGRlcHRoKDApCi0gICAgICAgICwg
ZGVwdGhQZXJDb21wb25lbnQoMCkKLSAgICAgICAgLCBpc01vbm9jaHJvbWUoZmFsc2UpIHsgfQot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgorI2luY2x1ZGUgIi4uLy4uLy4u
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgiCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkocmV2aXNpb24g
MTI5NjI0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkwMyw2ICs5MDMsMTIgQEAgdm9pZCBDaHJvbWVDbGllbnRJ
bXBsOjpwb3N0QWNjZXNzaWJpbGl0eQogICAgICAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5wb3N0
QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KG9iaiksIHRv
V2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24pKTsKIH0KIAorV2ViS2l0
OjpXZWJTY3JlZW5JbmZvIENocm9tZUNsaWVudEltcGw6OnNjcmVlbkluZm8oKQoreworICAgIHJl
dHVybiBtX3dlYlZpZXctPmNsaWVudCgpLT5zY3JlZW5JbmZvKCk7Cit9CisKKwogYm9vbCBDaHJv
bWVDbGllbnRJbXBsOjpwYWludEN1c3RvbU92ZXJoYW5nQXJlYShHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJl
Y3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7CiAg
ICAgRnJhbWUqIGZyYW1lID0gbV93ZWJWaWV3LT5tYWluRnJhbWVJbXBsKCktPmZyYW1lKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCShy
ZXZpc2lvbiAxMjk2MjQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDEwICs2MCwxMiBAQCBjbGFzcyBXZWJDb2xv
ckNob29zZXI7CiBjbGFzcyBXZWJDb2xvckNob29zZXJDbGllbnQ7CiBjbGFzcyBXZWJWaWV3SW1w
bDsKIHN0cnVjdCBXZWJDdXJzb3JJbmZvOworc3RydWN0IFdlYlNjcmVlbkluZm87CiBzdHJ1Y3Qg
V2ViUG9wdXBNZW51SW5mbzsKIAogLy8gSGFuZGxlcyB3aW5kb3ctbGV2ZWwgbm90aWZpY2F0aW9u
cyBmcm9tIFdlYkNvcmUgb24gYmVoYWxmIG9mIGEgV2ViVmlldy4KLWNsYXNzIENocm9tZUNsaWVu
dEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50Q2hyb21pdW0geworY2xhc3MgQ2hy
b21lQ2xpZW50SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnRDaHJvbWl1bSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2ViQ29yZTo6UGFnZUNsaWVudENocm9taXVt
IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDaHJvbWVDbGllbnRJbXBsKFdlYlZpZXdJbXBsKiB3
ZWJWaWV3KTsKICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnRJbXBsKCk7CkBAIC0xMjMsNyArMTI1
LDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCk7
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JikgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJv
b3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0OwotICAgIHZpcnR1
YWwgUGxhdGZvcm1QYWdlQ2xpZW50IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KKyAgICB2aXJ0dWFsIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGllbnQo
KSBjb25zdCB7IGNvbnN0X2Nhc3Q8V2ViQ29yZTo6UGFnZUNsaWVudENocm9taXVtKj4odGhpcyk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChXZWJDb3JlOjpGcmFtZSos
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0
VXBkYXRlZChXZWJDb3JlOjpGcmFtZSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxS
ZWN0SW50b1ZpZXcoCkBAIC0xOTQsNiArMTk2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBwb3B1cENsb3NlZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpOwog
ICAgIHZpcnR1YWwgdm9pZCBwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiwgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRp
b24pOwogCisgICAgLy8gUGFnZUNsaWVudENocm9taXVtIG1ldGhvZHM6CisgICAgdmlydHVhbCBX
ZWJTY3JlZW5JbmZvIHNjcmVlbkluZm8oKTsKKwogICAgIC8vIENocm9tZUNsaWVudEltcGw6CiAg
ICAgdm9pZCBzZXRDdXJzb3JGb3JQbHVnaW4oY29uc3QgV2ViQ3Vyc29ySW5mbyYpOwogICAgIHZv
aWQgc2V0TmV3V2luZG93TmF2aWdhdGlvblBvbGljeShXZWJOYXZpZ2F0aW9uUG9saWN5KTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAko
cmV2aXNpb24gMTI5NjI0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1T
dXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDMwICsxMDAsNiBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBXZWJXaWRnZXRD
bGllbnQqIHRvV2ViV2lkZ2V0Q2xpZW50KFdpZGdldCogd2lkZ2V0KQotewotICAgIGlmICghd2lk
Z2V0KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEZyYW1lVmlldyogdmlldzsKLSAgICBpZiAo
d2lkZ2V0LT5pc0ZyYW1lVmlldygpKQotICAgICAgICB2aWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVW
aWV3Kj4od2lkZ2V0KTsKLSAgICBlbHNlIGlmICh3aWRnZXQtPnBhcmVudCgpICYmIHdpZGdldC0+
cGFyZW50KCktPmlzRnJhbWVWaWV3KCkpCi0gICAgICAgIHZpZXcgPSBzdGF0aWNfY2FzdDxGcmFt
ZVZpZXcqPih3aWRnZXQtPnBhcmVudCgpKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgUGFnZSogcGFnZSA9IHZpZXctPmZyYW1lKCkgPyB2aWV3LT5mcmFtZSgpLT5wYWdlKCkg
OiAwOwotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICB2b2lkKiB3ZWJW
aWV3ID0gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53ZWJWaWV3KCk7Ci0gICAgaWYgKCF3ZWJW
aWV3KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJWaWV3
SW1wbCo+KHdlYlZpZXcpLT5jbGllbnQoKTsKLX0KLQogc3RhdGljIFdlYkNvb2tpZUphciogZ2V0
Q29va2llSmFyKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBXZWJGcmFtZUltcGwq
IGZyYW1lSW1wbCA9IFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGRvY3VtZW50LT5mcmFtZSgpKTsK
QEAgLTQ2MSw2MiArNDM3LDYgQEAgdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0
KAogLy8gR2x1ZSBsYXllci4gT25jZSB0aGUgR2x1ZSBsYXllciBtb3ZlcyBlbnRpcmVseSBpbnRv
IHRoZSBXZWJLaXQgbGF5ZXIsIHRoZXNlCiAvLyBtZXRob2RzIHdpbGwgYmUgZGVsZXRlZC4KIAot
aW50IFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuSG9yaXpvbnRhbERQSShXaWRnZXQqIHdpZGdldCkK
LXsKLSAgICBXZWJXaWRnZXRDbGllbnQqIGNsaWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50KHdpZGdl
dCk7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBjbGll
bnQtPnNjcmVlbkluZm8oKS5ob3Jpem9udGFsRFBJOwotfQotCi1pbnQgUGxhdGZvcm1TdXBwb3J0
OjpzY3JlZW5WZXJ0aWNhbERQSShXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBXZWJXaWRnZXRDbGll
bnQqIGNsaWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7Ci0gICAgaWYgKCFjbGllbnQp
Ci0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8oKS52ZXJ0
aWNhbERQSTsKLX0KLQotaW50IFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuRGVwdGgoV2lkZ2V0KiB3
aWRnZXQpCi17Ci0gICAgV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVu
dCh3aWRnZXQpOwotICAgIGlmICghY2xpZW50KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1
cm4gY2xpZW50LT5zY3JlZW5JbmZvKCkuZGVwdGg7Ci19Ci0KLWludCBQbGF0Zm9ybVN1cHBvcnQ6
OnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCogd2lkZ2V0KQotewotICAgIFdlYldpZGdl
dENsaWVudCogY2xpZW50ID0gdG9XZWJXaWRnZXRDbGllbnQod2lkZ2V0KTsKLSAgICBpZiAoIWNs
aWVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGNsaWVudC0+c2NyZWVuSW5mbygp
LmRlcHRoUGVyQ29tcG9uZW50OwotfQotCi1ib29sIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuSXNN
b25vY2hyb21lKFdpZGdldCogd2lkZ2V0KQotewotICAgIFdlYldpZGdldENsaWVudCogY2xpZW50
ID0gdG9XZWJXaWRnZXRDbGllbnQod2lkZ2V0KTsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgcmV0dXJuIGNsaWVudC0+c2NyZWVuSW5mbygpLmlzTW9ub2Nocm9tZTsK
LX0KLQotSW50UmVjdCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlblJlY3QoV2lkZ2V0KiB3aWRnZXQp
Ci17Ci0gICAgV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVudCh3aWRn
ZXQpOwotICAgIGlmICghY2xpZW50KQotICAgICAgICByZXR1cm4gSW50UmVjdCgpOwotICAgIHJl
dHVybiBjbGllbnQtPnNjcmVlbkluZm8oKS5yZWN0OwotfQotCi1JbnRSZWN0IFBsYXRmb3JtU3Vw
cG9ydDo6c2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBXZWJXaWRn
ZXRDbGllbnQqIGNsaWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7Ci0gICAgaWYgKCFj
bGllbnQpCi0gICAgICAgIHJldHVybiBJbnRSZWN0KCk7Ci0gICAgcmV0dXJuIGNsaWVudC0+c2Ny
ZWVuSW5mbygpLmF2YWlsYWJsZVJlY3Q7Ci19Ci0KICNpZiBFTkFCTEUoV09SS0VSUykKIFdvcmtl
ckNvbnRleHRQcm94eSogV29ya2VyQ29udGV4dFByb3h5OjpjcmVhdGUoV29ya2VyKiB3b3JrZXIp
CiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166059</attachid>
            <date>2012-09-27 13:59:07 -0700</date>
            <delta_ts>2012-09-27 16:07:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97474-20120927165817.patch</filename>
            <type>text/plain</type>
            <size>23647</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5Nzk2KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA5LTI3ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFJl
bW92ZSBzY3JlZW4tcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBQbGF0Zm9ybVN1cHBvcnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NDc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCBvZiBhIHJlZmFj
dG9yaW5nIHNlcmllcy4gU2VlIHRyYWNraW5nIGJ1ZyA4Mjk0OC4KKyAgICAgICAgU2NyZWVuLXJl
bGF0ZWQgZnVuY3Rpb25zIGxpa2Ugc2NyZWVuSG9yaXpvbnRhbERQSSB0aGF0IHVzZWQgdG8gYmUK
KyAgICAgICAgb24gUGxhdGZvcm1TdXBwb3J0IGFyZSBub3cgYWNjZXNzZWQgdGhyb3VnaCBhIG5l
dworICAgICAgICBQbGF0Zm9ybVBhZ2VDbGllbnQgYXR0YWNoZWQgdG8gV2lkZ2V0IGluIFdlYkNv
cmUtbGFuZCwgd2hpY2ggaXMKKyAgICAgICAgaW1wbGVtZW50ZWQgYnkgQ2hyb21lQ2xpZW50SW1w
bCBpbiBXZWJLaXQtbGFuZCwgd2hpY2ggcHJveGllcworICAgICAgICBjYWxscyB0byBXZWJXaWRn
ZXRDbGllbnQsIHdoaWNoIGlzIGFjdHVhbGx5IGltcGxlbWVudGVkIGluCisgICAgICAgIENocm9t
aXVtLWxhbmQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVt
L3B1YmxpYy9XZWJTY3JlZW5JbmZvLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYlNjcmVlbkluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JlZW5JbmZvOjpXZWJT
Y3JlZW5JbmZvKToKKwogMjAxMi0wOS0yNyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IEVuaGFuY2UgTWVkaWFDb25zdHJh
aW50cyB0byBtYWtlIGl0IGVhc2llciB0byBnZXQgdGhlIGNvbnN0cmFpbnQgZGF0YQpJbmRleDog
U291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRm
b3JtL1BsYXRmb3JtLmd5cGkJKHJldmlzaW9uIDEyOTc5NSkKKysrIFNvdXJjZS9QbGF0Zm9ybS9Q
bGF0Zm9ybS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDcgQEAKICAgICAgICAg
ICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUmVjdC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViUmVmZXJyZXJQb2xpY3kuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYlJlbmRlcmluZ1N0YXRzLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJT
Y3JlZW5JbmZvLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXIu
aCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhckxheWVyLmgnLAog
ICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5Lmgn
LApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5J
bmZvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YlNjcmVlbkluZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU2Ny
ZWVuSW5mb19oCisjZGVmaW5lIFdlYlNjcmVlbkluZm9faAorCisjaW5jbHVkZSAiV2ViUmVjdC5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYlNjcmVlbkluZm8geworICAgIC8v
IFRoZSBob3Jpem9udGFsIHNjcmVlbiBkcGkuCisgICAgaW50IGhvcml6b250YWxEUEk7CisKKyAg
ICAvLyBUaGUgdmVydGljYWwgc2NyZWVuIGRwaS4KKyAgICBpbnQgdmVydGljYWxEUEk7CisKKyAg
ICAvLyBUaGUgc2NyZWVuIGRlcHRoIGluIGJpdHMgcGVyIHBpeGVsCisgICAgaW50IGRlcHRoOwor
CisgICAgLy8gVGhlIGJpdHMgcGVyIGNvbG91ciBjb21wb25lbnQuIFRoaXMgYXNzdW1lcyB0aGF0
IHRoZSBjb2xvdXJzIGFyZSBiYWxhbmNlZAorICAgIC8vIGVxdWFsbHkuCisgICAgaW50IGRlcHRo
UGVyQ29tcG9uZW50OworCisgICAgLy8gVGhpcyBjYW4gYmUgdHJ1ZSBmb3IgYmxhY2sgYW5kIHdo
aXRlIHByaW50ZXJzCisgICAgYm9vbCBpc01vbm9jaHJvbWU7CisKKyAgICAvLyBUaGlzIGlzIHNl
dCBmcm9tIHRoZSByY01vbml0b3IgbWVtYmVyIG9mIE1PTklUT1JJTkZPRVgsIHRvIHdoaXQ6Cisg
ICAgLy8gICAiQSBSRUNUIHN0cnVjdHVyZSB0aGF0IHNwZWNpZmllcyB0aGUgZGlzcGxheSBtb25p
dG9yIHJlY3RhbmdsZSwKKyAgICAvLyAgIGV4cHJlc3NlZCBpbiB2aXJ0dWFsLXNjcmVlbiBjb29y
ZGluYXRlcy4gTm90ZSB0aGF0IGlmIHRoZSBtb25pdG9yCisgICAgLy8gICBpcyBub3QgdGhlIHBy
aW1hcnkgZGlzcGxheSBtb25pdG9yLCBzb21lIG9mIHRoZSByZWN0YW5nbGUncworICAgIC8vICAg
Y29vcmRpbmF0ZXMgbWF5IGJlIG5lZ2F0aXZlIHZhbHVlcy4iCisgICAgV2ViUmVjdCByZWN0Owor
CisgICAgLy8gVGhpcyBpcyBzZXQgZnJvbSB0aGUgcmNXb3JrIG1lbWJlciBvZiBNT05JVE9SSU5G
T0VYLCB0byB3aGl0OgorICAgIC8vICAgIkEgUkVDVCBzdHJ1Y3R1cmUgdGhhdCBzcGVjaWZpZXMg
dGhlIHdvcmsgYXJlYSByZWN0YW5nbGUgb2YgdGhlCisgICAgLy8gICBkaXNwbGF5IG1vbml0b3Ig
dGhhdCBjYW4gYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMsIGV4cHJlc3NlZCBpbgorICAgIC8vICAg
dmlydHVhbC1zY3JlZW4gY29vcmRpbmF0ZXMuIFdpbmRvd3MgdXNlcyB0aGlzIHJlY3RhbmdsZSB0
bworICAgIC8vICAgbWF4aW1pemUgYW4gYXBwbGljYXRpb24gb24gdGhlIG1vbml0b3IuIFRoZSBy
ZXN0IG9mIHRoZSBhcmVhIGluCisgICAgLy8gICByY01vbml0b3IgY29udGFpbnMgc3lzdGVtIHdp
bmRvd3Mgc3VjaCBhcyB0aGUgdGFzayBiYXIgYW5kIHNpZGUKKyAgICAvLyAgIGJhcnMuIE5vdGUg
dGhhdCBpZiB0aGUgbW9uaXRvciBpcyBub3QgdGhlIHByaW1hcnkgZGlzcGxheSBtb25pdG9yLAor
ICAgIC8vICAgc29tZSBvZiB0aGUgcmVjdGFuZ2xlJ3MgY29vcmRpbmF0ZXMgbWF5IGJlIG5lZ2F0
aXZlIHZhbHVlcyIuCisgICAgV2ViUmVjdCBhdmFpbGFibGVSZWN0OworCisgICAgV2ViU2NyZWVu
SW5mbygpCisgICAgICAgIDogaG9yaXpvbnRhbERQSSgwKQorICAgICAgICAsIHZlcnRpY2FsRFBJ
KDApCisgICAgICAgICwgZGVwdGgoMCkKKyAgICAgICAgLCBkZXB0aFBlckNvbXBvbmVudCgwKQor
ICAgICAgICAsIGlzTW9ub2Nocm9tZShmYWxzZSkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjk3OTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAx
Mi0wOS0yNyAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W0Nocm9taXVtXSBSZW1vdmUgc2NyZWVuLXJlbGF0ZWQgZnVuY3Rpb25zIGZyb20gUGxhdGZvcm1T
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NzQ3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBh
cnQgb2YgYSByZWZhY3RvcmluZyBzZXJpZXMuIFNlZSB0cmFja2luZyBidWcgODI5NDguCisgICAg
ICAgIFNjcmVlbi1yZWxhdGVkIGZ1bmN0aW9ucyBsaWtlIHNjcmVlbkhvcml6b250YWxEUEkgdGhh
dCB1c2VkIHRvIGJlCisgICAgICAgIG9uIFBsYXRmb3JtU3VwcG9ydCBhcmUgbm93IGFjY2Vzc2Vk
IHRocm91Z2ggYSBuZXcKKyAgICAgICAgUGxhdGZvcm1QYWdlQ2xpZW50IGF0dGFjaGVkIHRvIFdp
ZGdldCBpbiBXZWJDb3JlLWxhbmQsIHdoaWNoIGlzCisgICAgICAgIGltcGxlbWVudGVkIGJ5IENo
cm9tZUNsaWVudEltcGwgaW4gV2ViS2l0LWxhbmQsIHdoaWNoIHByb3hpZXMKKyAgICAgICAgY2Fs
bHMgdG8gV2ViV2lkZ2V0Q2xpZW50LCB3aGljaCBpcyBhY3R1YWxseSBpbXBsZW1lbnRlZCBpbgor
ICAgICAgICBDaHJvbWl1bS1sYW5kLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIHBsYXRmb3JtL1dpZGdldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BhZ2VD
bGllbnRDaHJvbWl1bS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybVdpZGdldC5oLgorICAgICAgICAoUGFnZUNsaWVudENocm9taXVtKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNjcmVlbkNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNjcmVlbkhvcml6b250YWxEUEkpOgorICAgICAgICAoV2ViQ29yZTo6
c2NyZWVuVmVydGljYWxEUEkpOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuRGVwdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6c2NyZWVuRGVwdGhQZXJDb21wb25lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6c2NyZWVuSXNNb25vY2hyb21lKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlblJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQXZhaWxhYmxlUmVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgIChQbGF0Zm9ybVN1cHBvcnQp
OgorCiAyMDEyLTA5LTI3ICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUmV3cml0ZSBtdWx0aXRocmVhZGVkIGZpbHRlciBqb2IgZGlzcGF0Y2hpbmcKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEyOTc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQkod29ya2luZyBjb3B5KQpAQCAtNDY3Miw2ICs0NjcyLDcgQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9MaW5rSGFzaENocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vY2hyb21pdW0vTWVtb3J5VXNhZ2VTdXBwb3J0Q2hyb21pdW0uY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9NSU1FVHlwZVJlZ2lzdHJ5Q2hyb21pdW0uY3BwJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QYWdlQ2xpZW50Q2hyb21pdW0uaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1DdXJzb3IuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Q2hyb21pdW0uY3BwJywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCShyZXZpc2lvbiAxMjk3OTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKICNpZiBQTEFURk9STShDSFJPTUlV
TSkKKyNpbmNsdWRlICJQYWdlQ2xpZW50Q2hyb21pdW0uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdp
ZGdldC5oIgogI2VuZGlmCiAKQEAgLTkzLDYgKzk0LDggQEAgdHlwZWRlZiBQYWdlQ2xpZW50Qmxh
Y2tCZXJyeSogUGxhdGZvcm1QYQogI2VsaWYgUExBVEZPUk0oRUZMKQogY2xhc3MgUGFnZUNsaWVu
dEVmbDsKIHR5cGVkZWYgUGFnZUNsaWVudEVmbCogUGxhdGZvcm1QYWdlQ2xpZW50OworI2VsaWYg
UExBVEZPUk0oQ0hST01JVU0pCit0eXBlZGVmIFdlYkNvcmU6OlBhZ2VDbGllbnRDaHJvbWl1bSog
UGxhdGZvcm1QYWdlQ2xpZW50OwogI2Vsc2UKIHR5cGVkZWYgUGxhdGZvcm1XaWRnZXQgUGxhdGZv
cm1QYWdlQ2xpZW50OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9QYWdlQ2xpZW50Q2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9QYWdlQ2xpZW50Q2hyb21pdW0uaAkocmV2aXNpb24gMTI5NzkyKQko
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVdpZGdldC5oOjEy
OTc5MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BhZ2VDbGllbnRDaHJv
bWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMDgsIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQ
bGF0Zm9ybVdpZGdldF9oCisjZGVmaW5lIFBsYXRmb3JtV2lkZ2V0X2gKKworI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4gIC8vIGZvciBpbnRwdHJfdAorCisvLyBQbGF0Zm9ybVdpZGdldCBp
cyBhbiBvcGFxdWUgaWRlbnRpZmllciBjb3JyZXNwb25kaW5nIHRvIHdoYXRldmVyIG5hdGl2ZQor
Ly8gdmlldyB0eXBlIHRoZSBlbWJlZGRlciBtYXkgdXNlLiAgUGxhdGZvcm1XaWRnZXQgQ0FOTk9U
IGJlIGFzc3VtZWQgdG8gYmUKKy8vIGEgdmFsaWQgcG9pbnRlci4gIFNvbWUgZW1iZWRkZXJzIG1h
eSBub3QgdXNlIHRoaXMgaWRlbnRpZmllciBhdCBhbGwuCisKK3R5cGVkZWYgaW50cHRyX3QgUGxh
dGZvcm1XaWRnZXQ7CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUGFnZUNsaWVudENocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUGFnZUNsaWVudENocm9taXVtLmgJKHJldmlzaW9uIDEyOTc5MikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BhZ2VDbGllbnRDaHJvbWl1bS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAw
OCwgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
YykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIAogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCwxNSArMjgsMTggQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBQbGF0Zm9ybVdpZGdldF9oCi0jZGVmaW5lIFBsYXRmb3JtV2lkZ2V0
X2gKKyNpZm5kZWYgUGFnZUNsaWVudENocm9taXVtX2gKKyNkZWZpbmUgUGFnZUNsaWVudENocm9t
aXVtX2gKIAotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4gIC8vIGZvciBpbnRwdHJfdAor
I2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JlZW5JbmZvLmg+CiAKLS8vIFBsYXRmb3JtV2lkZ2V0IGlz
IGFuIG9wYXF1ZSBpZGVudGlmaWVyIGNvcnJlc3BvbmRpbmcgdG8gd2hhdGV2ZXIgbmF0aXZlCi0v
LyB2aWV3IHR5cGUgdGhlIGVtYmVkZGVyIG1heSB1c2UuICBQbGF0Zm9ybVdpZGdldCBDQU5OT1Qg
YmUgYXNzdW1lZCB0byBiZQotLy8gYSB2YWxpZCBwb2ludGVyLiAgU29tZSBlbWJlZGRlcnMgbWF5
IG5vdCB1c2UgdGhpcyBpZGVudGlmaWVyIGF0IGFsbC4KK25hbWVzcGFjZSBXZWJDb3JlIHsKIAot
dHlwZWRlZiBpbnRwdHJfdCBQbGF0Zm9ybVdpZGdldDsKK2NsYXNzIFBhZ2VDbGllbnRDaHJvbWl1
bSB7CitwdWJsaWM6CisgICAgdmlydHVhbCBXZWJLaXQ6OldlYlNjcmVlbkluZm8gc2NyZWVuSW5m
bygpID0gMDsKK307CiAKLSNlbmRpZgorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gUGFnZUNsaWVudENocm9taXVtX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BsYXRmb3JtU2NyZWVuQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU2NyZWVuQ2hyb21pdW0uY3BwCShyZXZp
c2lvbiAxMjk3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVNjcmVlbkNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNDYgKzMxLDQ4IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKIAotI2luY2x1
ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKLQorI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKKyNpbmNsdWRlICJTY3JvbGxW
aWV3LmgiCisjaW5jbHVkZSAiV2lkZ2V0LmgiCiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+
CisjaW5jbHVkZSA8cHVibGljL1dlYlNjcmVlbkluZm8uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBpbnQgc2NyZWVuSG9yaXpvbnRhbERQSShXaWRnZXQqIHdpZGdldCkKIHsKLSAgICByZXR1
cm4gUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5Ib3Jpem9udGFsRFBJKHdpZGdldCk7CisgICAgcmV0
dXJuIHdpZGdldC0+cm9vdCgpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5z
Y3JlZW5JbmZvKCkuaG9yaXpvbnRhbERQSTsKIH0KIAogaW50IHNjcmVlblZlcnRpY2FsRFBJKFdp
ZGdldCogd2lkZ2V0KQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlblZlcnRp
Y2FsRFBJKHdpZGdldCk7CisgICAgcmV0dXJuIHdpZGdldC0+cm9vdCgpLT5ob3N0V2luZG93KCkt
PnBsYXRmb3JtUGFnZUNsaWVudCgpLT5zY3JlZW5JbmZvKCkudmVydGljYWxEUEk7CiB9CiAKIGlu
dCBzY3JlZW5EZXB0aChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1TdXBw
b3J0OjpzY3JlZW5EZXB0aCh3aWRnZXQpOworICAgIHJldHVybiB3aWRnZXQtPnJvb3QoKS0+aG9z
dFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+c2NyZWVuSW5mbygpLmRlcHRoOwogfQog
CiBpbnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0
dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuRGVwdGhQZXJDb21wb25lbnQod2lkZ2V0KTsKKyAg
ICByZXR1cm4gd2lkZ2V0LT5yb290KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50
KCktPnNjcmVlbkluZm8oKS5kZXB0aFBlckNvbXBvbmVudDsKIH0KIAogYm9vbCBzY3JlZW5Jc01v
bm9jaHJvbWUoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6
c2NyZWVuSXNNb25vY2hyb21lKHdpZGdldCk7CisgICAgcmV0dXJuIHdpZGdldC0+cm9vdCgpLT5o
b3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5zY3JlZW5JbmZvKCkuaXNNb25vY2hy
b21lOwogfQogCiBGbG9hdFJlY3Qgc2NyZWVuUmVjdChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBy
ZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5SZWN0KHdpZGdldCk7CisgICAgcmV0dXJuIElu
dFJlY3Qod2lkZ2V0LT5yb290KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkt
PnNjcmVlbkluZm8oKS5yZWN0KTsKIH0KIAogRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3Qo
V2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuQXZh
aWxhYmxlUmVjdCh3aWRnZXQpOworICAgIHJldHVybiBJbnRSZWN0KHdpZGdldC0+cm9vdCgpLT5o
b3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5zY3JlZW5JbmZvKCkuYXZhaWxhYmxl
UmVjdCk7CiB9CiAKIHZvaWQgc2NyZWVuQ29sb3JQcm9maWxlKENvbG9yUHJvZmlsZSYgdG9Qcm9m
aWxlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBw
b3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxh
dGZvcm1TdXBwb3J0LmgJKHJldmlzaW9uIDEyOTc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCwxNSAr
OTgsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcGx1Z2lucyhib29sIHJlZnJlc2gsIFZl
Y3RvcjxQbHVnaW5JbmZvPiopOwogICAgIHN0YXRpYyBOUE9iamVjdCogcGx1Z2luU2NyaXB0YWJs
ZU9iamVjdChXaWRnZXQqKTsKIAotICAgIC8vIFNjcmVlbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgc3RhdGljIGludCBz
Y3JlZW5Ib3Jpem9udGFsRFBJKFdpZGdldCopOwotICAgIHN0YXRpYyBpbnQgc2NyZWVuVmVydGlj
YWxEUEkoV2lkZ2V0Kik7Ci0gICAgc3RhdGljIGludCBzY3JlZW5EZXB0aChXaWRnZXQqKTsKLSAg
ICBzdGF0aWMgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCopOwotICAgIHN0YXRp
YyBib29sIHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqKTsKLSAgICBzdGF0aWMgSW50UmVjdCBz
Y3JlZW5SZWN0KFdpZGdldCopOwotICAgIHN0YXRpYyBJbnRSZWN0IHNjcmVlbkF2YWlsYWJsZVJl
Y3QoV2lkZ2V0Kik7Ci0KICAgICAvLyBUaGVtaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogI2lmIE9TKFdJTkRPV1MpCiAgICAg
c3RhdGljIHZvaWQgcGFpbnRCdXR0b24oCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
cmV2aXNpb24gMTI5Nzk2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0wOS0yNyAgTWFyayBQaWxncmltICA8
cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBSZW1vdmUgc2NyZWVu
LXJlbGF0ZWQgZnVuY3Rpb25zIGZyb20gUGxhdGZvcm1TdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzQ3NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgb2YgYSByZWZhY3RvcmluZyBzZXJp
ZXMuIFNlZSB0cmFja2luZyBidWcgODI5NDguCisgICAgICAgIFNjcmVlbi1yZWxhdGVkIGZ1bmN0
aW9ucyBsaWtlIHNjcmVlbkhvcml6b250YWxEUEkgdGhhdCB1c2VkIHRvIGJlCisgICAgICAgIG9u
IFBsYXRmb3JtU3VwcG9ydCBhcmUgbm93IGFjY2Vzc2VkIHRocm91Z2ggYSBuZXcKKyAgICAgICAg
UGxhdGZvcm1QYWdlQ2xpZW50IGF0dGFjaGVkIHRvIFdpZGdldCBpbiBXZWJDb3JlLWxhbmQsIHdo
aWNoIGlzCisgICAgICAgIGltcGxlbWVudGVkIGJ5IENocm9tZUNsaWVudEltcGwgaW4gV2ViS2l0
LWxhbmQsIHdoaWNoIHByb3hpZXMKKyAgICAgICAgY2FsbHMgdG8gV2ViV2lkZ2V0Q2xpZW50LCB3
aGljaCBpcyBhY3R1YWxseSBpbXBsZW1lbnRlZCBpbgorICAgICAgICBDaHJvbWl1bS1sYW5kLgor
CisgICAgICAgICogcHVibGljL1dlYlNjcmVlbkluZm8uaDoKKyAgICAgICAgKiBzcmMvQ2hyb21l
Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnNjcmVl
bkluZm8pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1w
bC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1w
bDo6cGxhdGZvcm1QYWdlQ2xpZW50KToKKyAgICAgICAgKENocm9tZUNsaWVudEltcGwpOgorICAg
ICAgICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIw
MTItMDktMjcgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtDaHJvbWl1bV0gTW92ZSBVTklYLXNwZWNpZmljIHRoZW1lIGZ1bmN0aW9ucyBvdXQgb2YgUGxh
dGZvcm1TdXBwb3J0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY3Jl
ZW5JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
U2NyZWVuSW5mby5oCShyZXZpc2lvbiAxMjk3OTUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDU1ICsyOCw0IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViU2NyZWVuSW5mb19oCi0jZGVmaW5l
IFdlYlNjcmVlbkluZm9faAotCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYlNjcmVlbkluZm8gewotICAgIC8vIFRoZSBob3Jp
em9udGFsIHNjcmVlbiBkcGkuCi0gICAgaW50IGhvcml6b250YWxEUEk7Ci0KLSAgICAvLyBUaGUg
dmVydGljYWwgc2NyZWVuIGRwaS4KLSAgICBpbnQgdmVydGljYWxEUEk7Ci0KLSAgICAvLyBUaGUg
c2NyZWVuIGRlcHRoIGluIGJpdHMgcGVyIHBpeGVsCi0gICAgaW50IGRlcHRoOwotCi0gICAgLy8g
VGhlIGJpdHMgcGVyIGNvbG91ciBjb21wb25lbnQuIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBjb2xv
dXJzIGFyZSBiYWxhbmNlZAotICAgIC8vIGVxdWFsbHkuCi0gICAgaW50IGRlcHRoUGVyQ29tcG9u
ZW50OwotCi0gICAgLy8gVGhpcyBjYW4gYmUgdHJ1ZSBmb3IgYmxhY2sgYW5kIHdoaXRlIHByaW50
ZXJzCi0gICAgYm9vbCBpc01vbm9jaHJvbWU7Ci0KLSAgICAvLyBUaGlzIGlzIHNldCBmcm9tIHRo
ZSByY01vbml0b3IgbWVtYmVyIG9mIE1PTklUT1JJTkZPRVgsIHRvIHdoaXQ6Ci0gICAgLy8gICAi
QSBSRUNUIHN0cnVjdHVyZSB0aGF0IHNwZWNpZmllcyB0aGUgZGlzcGxheSBtb25pdG9yIHJlY3Rh
bmdsZSwKLSAgICAvLyAgIGV4cHJlc3NlZCBpbiB2aXJ0dWFsLXNjcmVlbiBjb29yZGluYXRlcy4g
Tm90ZSB0aGF0IGlmIHRoZSBtb25pdG9yCi0gICAgLy8gICBpcyBub3QgdGhlIHByaW1hcnkgZGlz
cGxheSBtb25pdG9yLCBzb21lIG9mIHRoZSByZWN0YW5nbGUncwotICAgIC8vICAgY29vcmRpbmF0
ZXMgbWF5IGJlIG5lZ2F0aXZlIHZhbHVlcy4iCi0gICAgV2ViUmVjdCByZWN0OwotCi0gICAgLy8g
VGhpcyBpcyBzZXQgZnJvbSB0aGUgcmNXb3JrIG1lbWJlciBvZiBNT05JVE9SSU5GT0VYLCB0byB3
aGl0OgotICAgIC8vICAgIkEgUkVDVCBzdHJ1Y3R1cmUgdGhhdCBzcGVjaWZpZXMgdGhlIHdvcmsg
YXJlYSByZWN0YW5nbGUgb2YgdGhlCi0gICAgLy8gICBkaXNwbGF5IG1vbml0b3IgdGhhdCBjYW4g
YmUgdXNlZCBieSBhcHBsaWNhdGlvbnMsIGV4cHJlc3NlZCBpbgotICAgIC8vICAgdmlydHVhbC1z
Y3JlZW4gY29vcmRpbmF0ZXMuIFdpbmRvd3MgdXNlcyB0aGlzIHJlY3RhbmdsZSB0bwotICAgIC8v
ICAgbWF4aW1pemUgYW4gYXBwbGljYXRpb24gb24gdGhlIG1vbml0b3IuIFRoZSByZXN0IG9mIHRo
ZSBhcmVhIGluCi0gICAgLy8gICByY01vbml0b3IgY29udGFpbnMgc3lzdGVtIHdpbmRvd3Mgc3Vj
aCBhcyB0aGUgdGFzayBiYXIgYW5kIHNpZGUKLSAgICAvLyAgIGJhcnMuIE5vdGUgdGhhdCBpZiB0
aGUgbW9uaXRvciBpcyBub3QgdGhlIHByaW1hcnkgZGlzcGxheSBtb25pdG9yLAotICAgIC8vICAg
c29tZSBvZiB0aGUgcmVjdGFuZ2xlJ3MgY29vcmRpbmF0ZXMgbWF5IGJlIG5lZ2F0aXZlIHZhbHVl
cyIuCi0gICAgV2ViUmVjdCBhdmFpbGFibGVSZWN0OwotCi0gICAgV2ViU2NyZWVuSW5mbygpCi0g
ICAgICAgIDogaG9yaXpvbnRhbERQSSgwKQotICAgICAgICAsIHZlcnRpY2FsRFBJKDApCi0gICAg
ICAgICwgZGVwdGgoMCkKLSAgICAgICAgLCBkZXB0aFBlckNvbXBvbmVudCgwKQotICAgICAgICAs
IGlzTW9ub2Nocm9tZShmYWxzZSkgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmCisjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNj
cmVlbkluZm8uaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVu
dEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxMjk3OTUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAzLDYgKzkw
MywxMiBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OnBvc3RBY2Nlc3NpYmlsaXR5CiAgICAgICAg
IG1fd2ViVmlldy0+Y2xpZW50KCktPnBvc3RBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKFdlYkFj
Y2Vzc2liaWxpdHlPYmplY3Qob2JqKSwgdG9XZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKG5v
dGlmaWNhdGlvbikpOwogfQogCitXZWJLaXQ6OldlYlNjcmVlbkluZm8gQ2hyb21lQ2xpZW50SW1w
bDo6c2NyZWVuSW5mbygpCit7CisgICAgcmV0dXJuIG1fd2ViVmlldy0+Y2xpZW50KCktPnNjcmVl
bkluZm8oKTsKK30KKworCiBib29sIENocm9tZUNsaWVudEltcGw6OnBhaW50Q3VzdG9tT3Zlcmhh
bmdBcmVhKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRh
bE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0
IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3dlYlZpZXctPm1h
aW5GcmFtZUltcGwoKS0+ZnJhbWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Nocm9tZUNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJKHJldmlzaW9uIDEyOTc5NSkKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNjAs
MTAgKzYwLDExIEBAIGNsYXNzIFdlYkNvbG9yQ2hvb3NlcjsKIGNsYXNzIFdlYkNvbG9yQ2hvb3Nl
ckNsaWVudDsKIGNsYXNzIFdlYlZpZXdJbXBsOwogc3RydWN0IFdlYkN1cnNvckluZm87CitzdHJ1
Y3QgV2ViU2NyZWVuSW5mbzsKIHN0cnVjdCBXZWJQb3B1cE1lbnVJbmZvOwogCiAvLyBIYW5kbGVz
IHdpbmRvdy1sZXZlbCBub3RpZmljYXRpb25zIGZyb20gV2ViQ29yZSBvbiBiZWhhbGYgb2YgYSBX
ZWJWaWV3LgotY2xhc3MgQ2hyb21lQ2xpZW50SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVD
bGllbnRDaHJvbWl1bSB7CitjbGFzcyBDaHJvbWVDbGllbnRJbXBsIDogcHVibGljIFdlYkNvcmU6
OkNocm9tZUNsaWVudENocm9taXVtLCBwdWJsaWMgV2ViQ29yZTo6UGFnZUNsaWVudENocm9taXVt
IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDaHJvbWVDbGllbnRJbXBsKFdlYlZpZXdJbXBsKiB3
ZWJWaWV3KTsKICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnRJbXBsKCk7CkBAIC0xMjMsNyArMTI0
LDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCk7
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JikgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJv
b3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0OwotICAgIHZpcnR1
YWwgUGxhdGZvcm1QYWdlQ2xpZW50IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KKyAgICB2aXJ0dWFsIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGllbnQo
KSBjb25zdCB7IHJldHVybiBQbGF0Zm9ybVBhZ2VDbGllbnQodGhpcyk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0VXBkYXRlZChXZWJDb3Jl
OjpGcmFtZSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSZWN0SW50b1ZpZXcoCkBA
IC0xOTQsNiArMTk1LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwb3B1cENsb3NlZChX
ZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpOwogICAgIHZpcnR1YWwgdm9p
ZCBwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiwgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb24pOwogCisgICAgLy8g
UGFnZUNsaWVudENocm9taXVtIG1ldGhvZHM6CisgICAgdmlydHVhbCBXZWJTY3JlZW5JbmZvIHNj
cmVlbkluZm8oKTsKKwogICAgIC8vIENocm9tZUNsaWVudEltcGw6CiAgICAgdm9pZCBzZXRDdXJz
b3JGb3JQbHVnaW4oY29uc3QgV2ViQ3Vyc29ySW5mbyYpOwogICAgIHZvaWQgc2V0TmV3V2luZG93
TmF2aWdhdGlvblBvbGljeShXZWJOYXZpZ2F0aW9uUG9saWN5KTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkocmV2aXNpb24gMTI5Nzk1
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAwLDMwICsxMDAsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBXZWJXaWRnZXRDbGllbnQqIHRvV2ViV2lk
Z2V0Q2xpZW50KFdpZGdldCogd2lkZ2V0KQotewotICAgIGlmICghd2lkZ2V0KQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIEZyYW1lVmlldyogdmlldzsKLSAgICBpZiAod2lkZ2V0LT5pc0ZyYW1l
VmlldygpKQotICAgICAgICB2aWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lkZ2V0KTsK
LSAgICBlbHNlIGlmICh3aWRnZXQtPnBhcmVudCgpICYmIHdpZGdldC0+cGFyZW50KCktPmlzRnJh
bWVWaWV3KCkpCi0gICAgICAgIHZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPih3aWRnZXQt
PnBhcmVudCgpKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUGFnZSogcGFn
ZSA9IHZpZXctPmZyYW1lKCkgPyB2aWV3LT5mcmFtZSgpLT5wYWdlKCkgOiAwOwotICAgIGlmICgh
cGFnZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICB2b2lkKiB3ZWJWaWV3ID0gcGFnZS0+Y2hy
b21lKCktPmNsaWVudCgpLT53ZWJWaWV3KCk7Ci0gICAgaWYgKCF3ZWJWaWV3KQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KHdlYlZpZXcp
LT5jbGllbnQoKTsKLX0KLQogc3RhdGljIFdlYkNvb2tpZUphciogZ2V0Q29va2llSmFyKGNvbnN0
IERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBXZWJGcmFtZUltcGwqIGZyYW1lSW1wbCA9IFdl
YkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGRvY3VtZW50LT5mcmFtZSgpKTsKQEAgLTM1Myw2MiArMzI5
LDYgQEAgdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50U2Nyb2xsYmFyVGh1bQogLy8gR2x1ZSBs
YXllci4gT25jZSB0aGUgR2x1ZSBsYXllciBtb3ZlcyBlbnRpcmVseSBpbnRvIHRoZSBXZWJLaXQg
bGF5ZXIsIHRoZXNlCiAvLyBtZXRob2RzIHdpbGwgYmUgZGVsZXRlZC4KIAotaW50IFBsYXRmb3Jt
U3VwcG9ydDo6c2NyZWVuSG9yaXpvbnRhbERQSShXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBXZWJX
aWRnZXRDbGllbnQqIGNsaWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7Ci0gICAgaWYg
KCFjbGllbnQpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBjbGllbnQtPnNjcmVlbklu
Zm8oKS5ob3Jpem9udGFsRFBJOwotfQotCi1pbnQgUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5WZXJ0
aWNhbERQSShXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBXZWJXaWRnZXRDbGllbnQqIGNsaWVudCA9
IHRvV2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJl
dHVybiAwOwotICAgIHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8oKS52ZXJ0aWNhbERQSTsKLX0K
LQotaW50IFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuRGVwdGgoV2lkZ2V0KiB3aWRnZXQpCi17Ci0g
ICAgV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVudCh3aWRnZXQpOwot
ICAgIGlmICghY2xpZW50KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gY2xpZW50LT5z
Y3JlZW5JbmZvKCkuZGVwdGg7Ci19Ci0KLWludCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkRlcHRo
UGVyQ29tcG9uZW50KFdpZGdldCogd2lkZ2V0KQotewotICAgIFdlYldpZGdldENsaWVudCogY2xp
ZW50ID0gdG9XZWJXaWRnZXRDbGllbnQod2lkZ2V0KTsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGNsaWVudC0+c2NyZWVuSW5mbygpLmRlcHRoUGVyQ29t
cG9uZW50OwotfQotCi1ib29sIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuSXNNb25vY2hyb21lKFdp
ZGdldCogd2lkZ2V0KQotewotICAgIFdlYldpZGdldENsaWVudCogY2xpZW50ID0gdG9XZWJXaWRn
ZXRDbGllbnQod2lkZ2V0KTsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgcmV0dXJuIGNsaWVudC0+c2NyZWVuSW5mbygpLmlzTW9ub2Nocm9tZTsKLX0KLQotSW50UmVj
dCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlblJlY3QoV2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAgV2Vi
V2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVudCh3aWRnZXQpOwotICAgIGlm
ICghY2xpZW50KQotICAgICAgICByZXR1cm4gSW50UmVjdCgpOwotICAgIHJldHVybiBjbGllbnQt
PnNjcmVlbkluZm8oKS5yZWN0OwotfQotCi1JbnRSZWN0IFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVu
QXZhaWxhYmxlUmVjdChXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBXZWJXaWRnZXRDbGllbnQqIGNs
aWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAg
ICAgIHJldHVybiBJbnRSZWN0KCk7Ci0gICAgcmV0dXJuIGNsaWVudC0+c2NyZWVuSW5mbygpLmF2
YWlsYWJsZVJlY3Q7Ci19Ci0KICNpZiBFTkFCTEUoV09SS0VSUykKIFdvcmtlckNvbnRleHRQcm94
eSogV29ya2VyQ29udGV4dFByb3h5OjpjcmVhdGUoV29ya2VyKiB3b3JrZXIpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166087</attachid>
            <date>2012-09-27 16:07:11 -0700</date>
            <delta_ts>2012-10-01 14:21:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97474-20120927190621.patch</filename>
            <type>text/plain</type>
            <size>24380</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5ODEyKQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA5LTI3ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFJl
bW92ZSBzY3JlZW4tcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBQbGF0Zm9ybVN1cHBvcnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NDc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2NyZWVuLXJlbGF0ZWQg
ZnVuY3Rpb25zIGxpa2Ugc2NyZWVuSG9yaXpvbnRhbERQSSB0aGF0CisgICAgICAgIHVzZWQgdG8g
YmUgb24gUGxhdGZvcm1TdXBwb3J0IGFyZSBub3cgYWNjZXNzZWQgdGhyb3VnaCBhIG5ldworICAg
ICAgICBQbGF0Zm9ybVBhZ2VDbGllbnQgYXR0YWNoZWQgdG8gV2lkZ2V0IGluIFdlYkNvcmUtbGFu
ZCwgd2hpY2ggaXMKKyAgICAgICAgaW1wbGVtZW50ZWQgYnkgQ2hyb21lQ2xpZW50SW1wbCBpbiBX
ZWJLaXQtbGFuZCwgd2hpY2ggcHJveGllcworICAgICAgICBjYWxscyB0byBXZWJXaWRnZXRDbGll
bnQsIHdoaWNoIGlzIGFjdHVhbGx5IGltcGxlbWVudGVkIGluCisgICAgICAgIENocm9taXVtLWxh
bmQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1Ymxp
Yy9XZWJTY3JlZW5JbmZvLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YlNjcmVlbkluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JlZW5JbmZvOjpXZWJTY3JlZW5J
bmZvKToKKwogMjAxMi0wOS0yNyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IEVuaGFuY2UgTWVkaWFDb25zdHJhaW50cyB0
byBtYWtlIGl0IGVhc2llciB0byBnZXQgdGhlIGNvbnN0cmFpbnQgZGF0YQpJbmRleDogU291cmNl
L1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL1Bs
YXRmb3JtLmd5cGkJKHJldmlzaW9uIDEyOTgxMSkKKysrIFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9y
bS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDcgQEAKICAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViUmVjdC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
V2ViUmVmZXJyZXJQb2xpY3kuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJl
bmRlcmluZ1N0YXRzLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5J
bmZvLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXIuaCcsCiAg
ICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhckxheWVyLmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5LmgnLApJbmRl
eDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcmVl
bkluZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU2NyZWVuSW5m
b19oCisjZGVmaW5lIFdlYlNjcmVlbkluZm9faAorCisjaW5jbHVkZSAiV2ViUmVjdC5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYlNjcmVlbkluZm8geworICAgIC8vIFRoZSBo
b3Jpem9udGFsIHNjcmVlbiBkcGkuCisgICAgaW50IGhvcml6b250YWxEUEk7CisKKyAgICAvLyBU
aGUgdmVydGljYWwgc2NyZWVuIGRwaS4KKyAgICBpbnQgdmVydGljYWxEUEk7CisKKyAgICAvLyBU
aGUgc2NyZWVuIGRlcHRoIGluIGJpdHMgcGVyIHBpeGVsCisgICAgaW50IGRlcHRoOworCisgICAg
Ly8gVGhlIGJpdHMgcGVyIGNvbG91ciBjb21wb25lbnQuIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBj
b2xvdXJzIGFyZSBiYWxhbmNlZAorICAgIC8vIGVxdWFsbHkuCisgICAgaW50IGRlcHRoUGVyQ29t
cG9uZW50OworCisgICAgLy8gVGhpcyBjYW4gYmUgdHJ1ZSBmb3IgYmxhY2sgYW5kIHdoaXRlIHBy
aW50ZXJzCisgICAgYm9vbCBpc01vbm9jaHJvbWU7CisKKyAgICAvLyBUaGlzIGlzIHNldCBmcm9t
IHRoZSByY01vbml0b3IgbWVtYmVyIG9mIE1PTklUT1JJTkZPRVgsIHRvIHdoaXQ6CisgICAgLy8g
ICAiQSBSRUNUIHN0cnVjdHVyZSB0aGF0IHNwZWNpZmllcyB0aGUgZGlzcGxheSBtb25pdG9yIHJl
Y3RhbmdsZSwKKyAgICAvLyAgIGV4cHJlc3NlZCBpbiB2aXJ0dWFsLXNjcmVlbiBjb29yZGluYXRl
cy4gTm90ZSB0aGF0IGlmIHRoZSBtb25pdG9yCisgICAgLy8gICBpcyBub3QgdGhlIHByaW1hcnkg
ZGlzcGxheSBtb25pdG9yLCBzb21lIG9mIHRoZSByZWN0YW5nbGUncworICAgIC8vICAgY29vcmRp
bmF0ZXMgbWF5IGJlIG5lZ2F0aXZlIHZhbHVlcy4iCisgICAgV2ViUmVjdCByZWN0OworCisgICAg
Ly8gVGhpcyBpcyBzZXQgZnJvbSB0aGUgcmNXb3JrIG1lbWJlciBvZiBNT05JVE9SSU5GT0VYLCB0
byB3aGl0OgorICAgIC8vICAgIkEgUkVDVCBzdHJ1Y3R1cmUgdGhhdCBzcGVjaWZpZXMgdGhlIHdv
cmsgYXJlYSByZWN0YW5nbGUgb2YgdGhlCisgICAgLy8gICBkaXNwbGF5IG1vbml0b3IgdGhhdCBj
YW4gYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMsIGV4cHJlc3NlZCBpbgorICAgIC8vICAgdmlydHVh
bC1zY3JlZW4gY29vcmRpbmF0ZXMuIFdpbmRvd3MgdXNlcyB0aGlzIHJlY3RhbmdsZSB0bworICAg
IC8vICAgbWF4aW1pemUgYW4gYXBwbGljYXRpb24gb24gdGhlIG1vbml0b3IuIFRoZSByZXN0IG9m
IHRoZSBhcmVhIGluCisgICAgLy8gICByY01vbml0b3IgY29udGFpbnMgc3lzdGVtIHdpbmRvd3Mg
c3VjaCBhcyB0aGUgdGFzayBiYXIgYW5kIHNpZGUKKyAgICAvLyAgIGJhcnMuIE5vdGUgdGhhdCBp
ZiB0aGUgbW9uaXRvciBpcyBub3QgdGhlIHByaW1hcnkgZGlzcGxheSBtb25pdG9yLAorICAgIC8v
ICAgc29tZSBvZiB0aGUgcmVjdGFuZ2xlJ3MgY29vcmRpbmF0ZXMgbWF5IGJlIG5lZ2F0aXZlIHZh
bHVlcyIuCisgICAgV2ViUmVjdCBhdmFpbGFibGVSZWN0OworCisgICAgV2ViU2NyZWVuSW5mbygp
CisgICAgICAgIDogaG9yaXpvbnRhbERQSSgwKQorICAgICAgICAsIHZlcnRpY2FsRFBJKDApCisg
ICAgICAgICwgZGVwdGgoMCkKKyAgICAgICAgLCBkZXB0aFBlckNvbXBvbmVudCgwKQorICAgICAg
ICAsIGlzTW9ub2Nocm9tZShmYWxzZSkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjk4MTIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNSBAQAorMjAxMi0wOS0y
NyAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9t
aXVtXSBSZW1vdmUgc2NyZWVuLXJlbGF0ZWQgZnVuY3Rpb25zIGZyb20gUGxhdGZvcm1TdXBwb3J0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzQ3NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgb2Yg
YSByZWZhY3RvcmluZyBzZXJpZXMuIFNlZSB0cmFja2luZyBidWcgODI5NDguCisgICAgICAgIFNj
cmVlbi1yZWxhdGVkIGZ1bmN0aW9ucyBsaWtlIHNjcmVlbkhvcml6b250YWxEUEkgdGhhdAorICAg
ICAgICB1c2VkIHRvIGJlIG9uIFBsYXRmb3JtU3VwcG9ydCBhcmUgbm93IGFjY2Vzc2VkIHRocm91
Z2ggYSBuZXcKKyAgICAgICAgUGxhdGZvcm1QYWdlQ2xpZW50IGF0dGFjaGVkIHRvIFdpZGdldCBp
biBXZWJDb3JlLWxhbmQsIHdoaWNoIGlzCisgICAgICAgIGltcGxlbWVudGVkIGJ5IENocm9tZUNs
aWVudEltcGwgaW4gV2ViS2l0LWxhbmQsIHdoaWNoIHByb3hpZXMKKyAgICAgICAgY2FsbHMgdG8g
V2ViV2lkZ2V0Q2xpZW50LCB3aGljaCBpcyBhY3R1YWxseSBpbXBsZW1lbnRlZCBpbgorICAgICAg
ICBDaHJvbWl1bS1sYW5kLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBs
YXRmb3JtL1dpZGdldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BhZ2VDbGllbnRD
aHJvbWl1bS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
bGF0Zm9ybVdpZGdldC5oLgorICAgICAgICAoUGFnZUNsaWVudENocm9taXVtKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNjcmVlbkNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvUGxhdGZvcm1QYWdlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6c2NyZWVuSG9yaXpvbnRhbERQSSk6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5WZXJ0aWNhbERQSSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5EZXB0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpzY3JlZW5Jc01vbm9jaHJvbWUpOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzY3JlZW5BdmFpbGFibGVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFBsYXRmb3JtU3VwcG9ydCk6
CisKIDIwMTItMDktMjcgIEFuZHJldyBMbyAgPGFubG9AcmltLmNvbT4KIAogICAgICAgICByZXF1
ZXN0QW5pbWF0aW9uRnJhbWUgYnJva2VuIHdpdGggc3ViZnJhbWVzIChEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYW5hZ2VyOjpyZWdpc3RlckNsaWVudCBmYWlscyB0byByZWdpc3RlciBjbGllbnQpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMjk4MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTQ2NzIsNiArNDY3Miw3IEBACiAgICAgICAg
ICAgICAncGxhdGZvcm0vY2hyb21pdW0vTGlua0hhc2hDaHJvbWl1bS5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2Nocm9taXVtL01lbW9yeVVzYWdlU3VwcG9ydENocm9taXVtLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vTUlNRVR5cGVSZWdpc3RyeUNocm9taXVtLmNw
cCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGFnZUNsaWVudENocm9taXVtLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtQ3Vyc29yLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudENocm9taXVt
LmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaAkocmV2aXNpb24gMTI5ODExKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiAjaWYgUExBVEZPUk0o
Q0hST01JVU0pCisjaW5jbHVkZSAiUGFnZUNsaWVudENocm9taXVtLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1XaWRnZXQuaCIKICNlbmRpZgogCkBAIC05Myw2ICs5NCw4IEBAIHR5cGVkZWYgUGFnZUNs
aWVudEJsYWNrQmVycnkqIFBsYXRmb3JtUGEKICNlbGlmIFBMQVRGT1JNKEVGTCkKIGNsYXNzIFBh
Z2VDbGllbnRFZmw7CiB0eXBlZGVmIFBhZ2VDbGllbnRFZmwqIFBsYXRmb3JtUGFnZUNsaWVudDsK
KyNlbGlmIFBMQVRGT1JNKENIUk9NSVVNKQordHlwZWRlZiBXZWJDb3JlOjpQYWdlQ2xpZW50Q2hy
b21pdW0qIFBsYXRmb3JtUGFnZUNsaWVudDsKICNlbHNlCiB0eXBlZGVmIFBsYXRmb3JtV2lkZ2V0
IFBsYXRmb3JtUGFnZUNsaWVudDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGFnZUNsaWVudENocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFnZUNsaWVudENocm9taXVtLmgJKHJldmlzaW9uIDEy
OTc5OSkJKGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1XaWRn
ZXQuaDoxMjk3OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYWdlQ2xp
ZW50Q2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29w
eXJpZ2h0IChjKSAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgUGxhdGZvcm1XaWRnZXRfaAorI2RlZmluZSBQbGF0Zm9ybVdpZGdldF9oCisKKyNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+ICAvLyBmb3IgaW50cHRyX3QKKworLy8gUGxhdGZvcm1X
aWRnZXQgaXMgYW4gb3BhcXVlIGlkZW50aWZpZXIgY29ycmVzcG9uZGluZyB0byB3aGF0ZXZlciBu
YXRpdmUKKy8vIHZpZXcgdHlwZSB0aGUgZW1iZWRkZXIgbWF5IHVzZS4gIFBsYXRmb3JtV2lkZ2V0
IENBTk5PVCBiZSBhc3N1bWVkIHRvIGJlCisvLyBhIHZhbGlkIHBvaW50ZXIuICBTb21lIGVtYmVk
ZGVycyBtYXkgbm90IHVzZSB0aGlzIGlkZW50aWZpZXIgYXQgYWxsLgorCit0eXBlZGVmIGludHB0
cl90IFBsYXRmb3JtV2lkZ2V0OworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BhZ2VDbGllbnRDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BhZ2VDbGllbnRDaHJvbWl1bS5oCShyZXZpc2lvbiAx
Mjk3OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYWdlQ2xpZW50Q2hy
b21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KGMpIDIwMDgsIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsMTUgKzI4LDE4IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgUGxhdGZvcm1XaWRnZXRfaAotI2RlZmluZSBQbGF0Zm9y
bVdpZGdldF9oCisjaWZuZGVmIFBhZ2VDbGllbnRDaHJvbWl1bV9oCisjZGVmaW5lIFBhZ2VDbGll
bnRDaHJvbWl1bV9oCiAKLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+ICAvLyBmb3IgaW50
cHRyX3QKKyNpbmNsdWRlIDxwdWJsaWMvV2ViU2NyZWVuSW5mby5oPgogCi0vLyBQbGF0Zm9ybVdp
ZGdldCBpcyBhbiBvcGFxdWUgaWRlbnRpZmllciBjb3JyZXNwb25kaW5nIHRvIHdoYXRldmVyIG5h
dGl2ZQotLy8gdmlldyB0eXBlIHRoZSBlbWJlZGRlciBtYXkgdXNlLiAgUGxhdGZvcm1XaWRnZXQg
Q0FOTk9UIGJlIGFzc3VtZWQgdG8gYmUKLS8vIGEgdmFsaWQgcG9pbnRlci4gIFNvbWUgZW1iZWRk
ZXJzIG1heSBub3QgdXNlIHRoaXMgaWRlbnRpZmllciBhdCBhbGwuCituYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXR5cGVkZWYgaW50cHRyX3QgUGxhdGZvcm1XaWRnZXQ7CitjbGFzcyBQYWdlQ2xpZW50
Q2hyb21pdW0geworcHVibGljOgorICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTY3JlZW5JbmZvIHNj
cmVlbkluZm8oKSA9IDA7Cit9OwogCi0jZW5kaWYKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFBhZ2VDbGllbnRDaHJvbWl1bV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNjcmVlbkNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNjcmVlbkNocm9taXVtLmNw
cAkocmV2aXNpb24gMTI5ODExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UGxhdGZvcm1TY3JlZW5DaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDQ2ICszMSw4
MiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAK
LSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCi0KKyNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJIb3N0V2luZG93LmgiCisjaW5jbHVkZSAi
U2Nyb2xsVmlldy5oIgorI2luY2x1ZGUgIldpZGdldC5oIgogI2luY2x1ZGUgPHB1YmxpYy9QbGF0
Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JlZW5JbmZvLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorc3RhdGljIFBsYXRmb3JtUGFnZUNsaWVudCB0b1BsYXRmb3JtUGFnZUNsaWVu
dChXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBpZiAoIXdpZGdldCkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgU2Nyb2xsVmlldyogcm9vdCA9IHdpZGdldC0+cm9vdCgpOworICAgIGlmICghcm9vdCkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgSG9zdFdpbmRvdyogaG9zdFdpbmRvdyA9IHJvb3QtPmhv
c3RXaW5kb3coKTsKKyAgICBpZiAoIWhvc3RXaW5kb3cpCisgICAgICAgIHJldHVybiAwOworICAg
IHJldHVybiBob3N0V2luZG93LT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKK30KKwogaW50IHNjcmVl
bkhvcml6b250YWxEUEkoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3Vw
cG9ydDo6c2NyZWVuSG9yaXpvbnRhbERQSSh3aWRnZXQpOworICAgIFBsYXRmb3JtUGFnZUNsaWVu
dCBjbGllbnQgPSB0b1BsYXRmb3JtUGFnZUNsaWVudCh3aWRnZXQpOworICAgIGlmICghY2xpZW50
KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gY2xpZW50LT5zY3JlZW5JbmZvKCkuaG9y
aXpvbnRhbERQSTsKIH0KIAogaW50IHNjcmVlblZlcnRpY2FsRFBJKFdpZGdldCogd2lkZ2V0KQog
ewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlblZlcnRpY2FsRFBJKHdpZGdldCk7
CisgICAgUGxhdGZvcm1QYWdlQ2xpZW50IGNsaWVudCA9IHRvUGxhdGZvcm1QYWdlQ2xpZW50KHdp
ZGdldCk7CisgICAgaWYgKCFjbGllbnQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBj
bGllbnQtPnNjcmVlbkluZm8oKS52ZXJ0aWNhbERQSTsKIH0KIAogaW50IHNjcmVlbkRlcHRoKFdp
ZGdldCogd2lkZ2V0KQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkRlcHRo
KHdpZGdldCk7CisgICAgUGxhdGZvcm1QYWdlQ2xpZW50IGNsaWVudCA9IHRvUGxhdGZvcm1QYWdl
Q2xpZW50KHdpZGdldCk7CisgICAgaWYgKCFjbGllbnQpCisgICAgICAgIHJldHVybiAwOworICAg
IHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8oKS5kZXB0aDsKIH0KIAogaW50IHNjcmVlbkRlcHRo
UGVyQ29tcG9uZW50KFdpZGdldCogd2lkZ2V0KQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBv
cnQ6OnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KHdpZGdldCk7CisgICAgUGxhdGZvcm1QYWdlQ2xp
ZW50IGNsaWVudCA9IHRvUGxhdGZvcm1QYWdlQ2xpZW50KHdpZGdldCk7CisgICAgaWYgKCFjbGll
bnQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8oKS5k
ZXB0aFBlckNvbXBvbmVudDsKIH0KIAogYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KiB3
aWRnZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuSXNNb25vY2hyb21l
KHdpZGdldCk7CisgICAgUGxhdGZvcm1QYWdlQ2xpZW50IGNsaWVudCA9IHRvUGxhdGZvcm1QYWdl
Q2xpZW50KHdpZGdldCk7CisgICAgaWYgKCFjbGllbnQpCisgICAgICAgIHJldHVybiAwOworICAg
IHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8oKS5pc01vbm9jaHJvbWU7CiB9CiAKIEZsb2F0UmVj
dCBzY3JlZW5SZWN0KFdpZGdldCogd2lkZ2V0KQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBv
cnQ6OnNjcmVlblJlY3Qod2lkZ2V0KTsKKyAgICBQbGF0Zm9ybVBhZ2VDbGllbnQgY2xpZW50ID0g
dG9QbGF0Zm9ybVBhZ2VDbGllbnQod2lkZ2V0KTsKKyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAg
cmV0dXJuIEludFJlY3QoKTsKKyAgICByZXR1cm4gSW50UmVjdChjbGllbnQtPnNjcmVlbkluZm8o
KS5yZWN0KTsKIH0KIAogRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aWRn
ZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuQXZhaWxhYmxlUmVjdCh3
aWRnZXQpOworICAgIFBsYXRmb3JtUGFnZUNsaWVudCBjbGllbnQgPSB0b1BsYXRmb3JtUGFnZUNs
aWVudCh3aWRnZXQpOworICAgIGlmICghY2xpZW50KQorICAgICAgICByZXR1cm4gSW50UmVjdCgp
OworICAgIHJldHVybiBJbnRSZWN0KGNsaWVudC0+c2NyZWVuSW5mbygpLmF2YWlsYWJsZVJlY3Qp
OwogfQogCiB2b2lkIHNjcmVlbkNvbG9yUHJvZmlsZShDb2xvclByb2ZpbGUmIHRvUHJvZmlsZSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3Jt
U3VwcG9ydC5oCShyZXZpc2lvbiAxMjk4MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsMTUgKzk4LDYg
QEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHBsdWdpbnMoYm9vbCByZWZyZXNoLCBWZWN0b3I8
UGx1Z2luSW5mbz4qKTsKICAgICBzdGF0aWMgTlBPYmplY3QqIHBsdWdpblNjcmlwdGFibGVPYmpl
Y3QoV2lkZ2V0Kik7CiAKLSAgICAvLyBTY3JlZW4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIHN0YXRpYyBpbnQgc2NyZWVu
SG9yaXpvbnRhbERQSShXaWRnZXQqKTsKLSAgICBzdGF0aWMgaW50IHNjcmVlblZlcnRpY2FsRFBJ
KFdpZGdldCopOwotICAgIHN0YXRpYyBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0Kik7Ci0gICAgc3Rh
dGljIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudChXaWRnZXQqKTsKLSAgICBzdGF0aWMgYm9v
bCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0Kik7Ci0gICAgc3RhdGljIEludFJlY3Qgc2NyZWVu
UmVjdChXaWRnZXQqKTsKLSAgICBzdGF0aWMgSW50UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdp
ZGdldCopOwotCiAgICAgLy8gVGhlbWluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICNpZiBPUyhXSU5ET1dTKQogICAgIHN0YXRp
YyB2b2lkIHBhaW50QnV0dG9uKApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDEyOTgxMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMDktMjcgIE1hcmsgUGlsZ3JpbSAgPHBpbGdy
aW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gUmVtb3ZlIHNjcmVlbi1yZWxh
dGVkIGZ1bmN0aW9ucyBmcm9tIFBsYXRmb3JtU3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc0NzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTY3JlZW4tcmVsYXRlZCBmdW5jdGlvbnMgbGlrZSBz
Y3JlZW5Ib3Jpem9udGFsRFBJIHRoYXQKKyAgICAgICAgdXNlZCB0byBiZSBvbiBQbGF0Zm9ybVN1
cHBvcnQgYXJlIG5vdyBhY2Nlc3NlZCB0aHJvdWdoIGEgbmV3CisgICAgICAgIFBsYXRmb3JtUGFn
ZUNsaWVudCBhdHRhY2hlZCB0byBXaWRnZXQgaW4gV2ViQ29yZS1sYW5kLCB3aGljaCBpcworICAg
ICAgICBpbXBsZW1lbnRlZCBieSBDaHJvbWVDbGllbnRJbXBsIGluIFdlYktpdC1sYW5kLCB3aGlj
aCBwcm94aWVzCisgICAgICAgIGNhbGxzIHRvIFdlYldpZGdldENsaWVudCwgd2hpY2ggaXMgYWN0
dWFsbHkgaW1wbGVtZW50ZWQgaW4KKyAgICAgICAgQ2hyb21pdW0tbGFuZC4KKworICAgICAgICAq
IHB1YmxpYy9XZWJTY3JlZW5JbmZvLmg6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpzY3JlZW5JbmZvKToKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnBsYXRmb3Jt
UGFnZUNsaWVudCk6CisgICAgICAgIChDaHJvbWVDbGllbnRJbXBsKToKKyAgICAgICAgKiBzcmMv
UGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA5LTI3ICBN
YXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1d
W01hY10gTW92ZSBNYWMtc3BlY2lmaWMgdGhlbWUgZnVuY3Rpb25zIG91dCBvZiBQbGF0Zm9ybVN1
cHBvcnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmVlbkluZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5J
bmZvLmgJKHJldmlzaW9uIDEyOTgxMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlNjcmVlbkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNTUgKzI4LDQgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJTY3JlZW5JbmZvX2gKLSNkZWZpbmUgV2ViU2Ny
ZWVuSW5mb19oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCi0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi1zdHJ1Y3QgV2ViU2NyZWVuSW5mbyB7Ci0gICAgLy8gVGhlIGhvcml6b250YWwg
c2NyZWVuIGRwaS4KLSAgICBpbnQgaG9yaXpvbnRhbERQSTsKLQotICAgIC8vIFRoZSB2ZXJ0aWNh
bCBzY3JlZW4gZHBpLgotICAgIGludCB2ZXJ0aWNhbERQSTsKLQotICAgIC8vIFRoZSBzY3JlZW4g
ZGVwdGggaW4gYml0cyBwZXIgcGl4ZWwKLSAgICBpbnQgZGVwdGg7Ci0KLSAgICAvLyBUaGUgYml0
cyBwZXIgY29sb3VyIGNvbXBvbmVudC4gVGhpcyBhc3N1bWVzIHRoYXQgdGhlIGNvbG91cnMgYXJl
IGJhbGFuY2VkCi0gICAgLy8gZXF1YWxseS4KLSAgICBpbnQgZGVwdGhQZXJDb21wb25lbnQ7Ci0K
LSAgICAvLyBUaGlzIGNhbiBiZSB0cnVlIGZvciBibGFjayBhbmQgd2hpdGUgcHJpbnRlcnMKLSAg
ICBib29sIGlzTW9ub2Nocm9tZTsKLQotICAgIC8vIFRoaXMgaXMgc2V0IGZyb20gdGhlIHJjTW9u
aXRvciBtZW1iZXIgb2YgTU9OSVRPUklORk9FWCwgdG8gd2hpdDoKLSAgICAvLyAgICJBIFJFQ1Qg
c3RydWN0dXJlIHRoYXQgc3BlY2lmaWVzIHRoZSBkaXNwbGF5IG1vbml0b3IgcmVjdGFuZ2xlLAot
ICAgIC8vICAgZXhwcmVzc2VkIGluIHZpcnR1YWwtc2NyZWVuIGNvb3JkaW5hdGVzLiBOb3RlIHRo
YXQgaWYgdGhlIG1vbml0b3IKLSAgICAvLyAgIGlzIG5vdCB0aGUgcHJpbWFyeSBkaXNwbGF5IG1v
bml0b3IsIHNvbWUgb2YgdGhlIHJlY3RhbmdsZSdzCi0gICAgLy8gICBjb29yZGluYXRlcyBtYXkg
YmUgbmVnYXRpdmUgdmFsdWVzLiIKLSAgICBXZWJSZWN0IHJlY3Q7Ci0KLSAgICAvLyBUaGlzIGlz
IHNldCBmcm9tIHRoZSByY1dvcmsgbWVtYmVyIG9mIE1PTklUT1JJTkZPRVgsIHRvIHdoaXQ6Ci0g
ICAgLy8gICAiQSBSRUNUIHN0cnVjdHVyZSB0aGF0IHNwZWNpZmllcyB0aGUgd29yayBhcmVhIHJl
Y3RhbmdsZSBvZiB0aGUKLSAgICAvLyAgIGRpc3BsYXkgbW9uaXRvciB0aGF0IGNhbiBiZSB1c2Vk
IGJ5IGFwcGxpY2F0aW9ucywgZXhwcmVzc2VkIGluCi0gICAgLy8gICB2aXJ0dWFsLXNjcmVlbiBj
b29yZGluYXRlcy4gV2luZG93cyB1c2VzIHRoaXMgcmVjdGFuZ2xlIHRvCi0gICAgLy8gICBtYXhp
bWl6ZSBhbiBhcHBsaWNhdGlvbiBvbiB0aGUgbW9uaXRvci4gVGhlIHJlc3Qgb2YgdGhlIGFyZWEg
aW4KLSAgICAvLyAgIHJjTW9uaXRvciBjb250YWlucyBzeXN0ZW0gd2luZG93cyBzdWNoIGFzIHRo
ZSB0YXNrIGJhciBhbmQgc2lkZQotICAgIC8vICAgYmFycy4gTm90ZSB0aGF0IGlmIHRoZSBtb25p
dG9yIGlzIG5vdCB0aGUgcHJpbWFyeSBkaXNwbGF5IG1vbml0b3IsCi0gICAgLy8gICBzb21lIG9m
IHRoZSByZWN0YW5nbGUncyBjb29yZGluYXRlcyBtYXkgYmUgbmVnYXRpdmUgdmFsdWVzIi4KLSAg
ICBXZWJSZWN0IGF2YWlsYWJsZVJlY3Q7Ci0KLSAgICBXZWJTY3JlZW5JbmZvKCkKLSAgICAgICAg
OiBob3Jpem9udGFsRFBJKDApCi0gICAgICAgICwgdmVydGljYWxEUEkoMCkKLSAgICAgICAgLCBk
ZXB0aCgwKQotICAgICAgICAsIGRlcHRoUGVyQ29tcG9uZW50KDApCi0gICAgICAgICwgaXNNb25v
Y2hyb21lKGZhbHNlKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYK
KyNpbmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5m
by5oIgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5jcHAJKHJldmlzaW9uIDEyOTgxMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Nocm9tZUNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDMsNiArOTAzLDEyIEBA
IHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6cG9zdEFjY2Vzc2liaWxpdHkKICAgICAgICAgbV93ZWJW
aWV3LT5jbGllbnQoKS0+cG9zdEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oV2ViQWNjZXNzaWJp
bGl0eU9iamVjdChvYmopLCB0b1dlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24obm90aWZpY2F0
aW9uKSk7CiB9CiAKK1dlYktpdDo6V2ViU2NyZWVuSW5mbyBDaHJvbWVDbGllbnRJbXBsOjpzY3Jl
ZW5JbmZvKCkKK3sKKyAgICByZXR1cm4gbV93ZWJWaWV3LT5jbGllbnQoKS0+c2NyZWVuSW5mbygp
OworfQorCisKIGJvb2wgQ2hyb21lQ2xpZW50SW1wbDo6cGFpbnRDdXN0b21PdmVyaGFuZ0FyZWEo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3Zlcmhh
bmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVj
dCYgZGlydHlSZWN0KQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fd2ViVmlldy0+bWFpbkZyYW1l
SW1wbCgpLT5mcmFtZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0No
cm9tZUNsaWVudEltcGwuaAkocmV2aXNpb24gMTI5ODExKQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxMCArNjAs
MTEgQEAgY2xhc3MgV2ViQ29sb3JDaG9vc2VyOwogY2xhc3MgV2ViQ29sb3JDaG9vc2VyQ2xpZW50
OwogY2xhc3MgV2ViVmlld0ltcGw7CiBzdHJ1Y3QgV2ViQ3Vyc29ySW5mbzsKK3N0cnVjdCBXZWJT
Y3JlZW5JbmZvOwogc3RydWN0IFdlYlBvcHVwTWVudUluZm87CiAKIC8vIEhhbmRsZXMgd2luZG93
LWxldmVsIG5vdGlmaWNhdGlvbnMgZnJvbSBXZWJDb3JlIG9uIGJlaGFsZiBvZiBhIFdlYlZpZXcu
Ci1jbGFzcyBDaHJvbWVDbGllbnRJbXBsIDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNsaWVudENo
cm9taXVtIHsKK2NsYXNzIENocm9tZUNsaWVudEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21l
Q2xpZW50Q2hyb21pdW0sIHB1YmxpYyBXZWJDb3JlOjpQYWdlQ2xpZW50Q2hyb21pdW0gewogcHVi
bGljOgogICAgIGV4cGxpY2l0IENocm9tZUNsaWVudEltcGwoV2ViVmlld0ltcGwqIHdlYlZpZXcp
OwogICAgIHZpcnR1YWwgfkNocm9tZUNsaWVudEltcGwoKTsKQEAgLTEyMyw3ICsxMjQsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0KTsKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgcm9vdFZpZXdU
b1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Q7Ci0gICAgdmlydHVhbCBQbGF0
Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQor
ICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xpZW50IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0
IHsgcmV0dXJuIFBsYXRmb3JtUGFnZUNsaWVudCh0aGlzKTsgfQogICAgIHZpcnR1YWwgdm9pZCBj
b250ZW50c1NpemVDaGFuZ2VkKFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRVcGRhdGVkKFdlYkNvcmU6OkZyYW1l
KikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFJlY3RJbnRvVmlldygKQEAgLTE5NCw2
ICsxOTUsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBvcHVwQ2xvc2VkKFdlYkNvcmU6
OlBvcHVwQ29udGFpbmVyKiBwb3B1cENvbnRhaW5lcik7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqLCBX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbik7CiAKKyAgICAvLyBQYWdlQ2xp
ZW50Q2hyb21pdW0gbWV0aG9kczoKKyAgICB2aXJ0dWFsIFdlYlNjcmVlbkluZm8gc2NyZWVuSW5m
bygpOworCiAgICAgLy8gQ2hyb21lQ2xpZW50SW1wbDoKICAgICB2b2lkIHNldEN1cnNvckZvclBs
dWdpbihjb25zdCBXZWJDdXJzb3JJbmZvJik7CiAgICAgdm9pZCBzZXROZXdXaW5kb3dOYXZpZ2F0
aW9uUG9saWN5KFdlYk5hdmlnYXRpb25Qb2xpY3kpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCShyZXZpc2lvbiAxMjk4MTEpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDAsMzAgKzEwMCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFdlYldpZGdldENsaWVudCogdG9XZWJXaWRnZXRDbGll
bnQoV2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAgaWYgKCF3aWRnZXQpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgRnJhbWVWaWV3KiB2aWV3OwotICAgIGlmICh3aWRnZXQtPmlzRnJhbWVWaWV3KCkp
Ci0gICAgICAgIHZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPih3aWRnZXQpOwotICAgIGVs
c2UgaWYgKHdpZGdldC0+cGFyZW50KCkgJiYgd2lkZ2V0LT5wYXJlbnQoKS0+aXNGcmFtZVZpZXco
KSkKLSAgICAgICAgdmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldC0+cGFyZW50
KCkpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBQYWdlKiBwYWdlID0gdmll
dy0+ZnJhbWUoKSA/IHZpZXctPmZyYW1lKCktPnBhZ2UoKSA6IDA7Ci0gICAgaWYgKCFwYWdlKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIHZvaWQqIHdlYlZpZXcgPSBwYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPndlYlZpZXcoKTsKLSAgICBpZiAoIXdlYlZpZXcpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4od2ViVmlldyktPmNsaWVu
dCgpOwotfQotCiBzdGF0aWMgV2ViQ29va2llSmFyKiBnZXRDb29raWVKYXIoY29uc3QgRG9jdW1l
bnQqIGRvY3VtZW50KQogewogICAgIFdlYkZyYW1lSW1wbCogZnJhbWVJbXBsID0gV2ViRnJhbWVJ
bXBsOjpmcm9tRnJhbWUoZG9jdW1lbnQtPmZyYW1lKCkpOwpAQCAtMzMwLDYyICszMDYsNiBAQCB2
b2lkIFBsYXRmb3JtU3VwcG9ydDo6cGFpbnRQcm9ncmVzc0JhcigKIC8vIEdsdWUgbGF5ZXIuIE9u
Y2UgdGhlIEdsdWUgbGF5ZXIgbW92ZXMgZW50aXJlbHkgaW50byB0aGUgV2ViS2l0IGxheWVyLCB0
aGVzZQogLy8gbWV0aG9kcyB3aWxsIGJlIGRlbGV0ZWQuCiAKLWludCBQbGF0Zm9ybVN1cHBvcnQ6
OnNjcmVlbkhvcml6b250YWxEUEkoV2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAgV2ViV2lkZ2V0Q2xp
ZW50KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVudCh3aWRnZXQpOwotICAgIGlmICghY2xpZW50
KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gY2xpZW50LT5zY3JlZW5JbmZvKCkuaG9y
aXpvbnRhbERQSTsKLX0KLQotaW50IFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuVmVydGljYWxEUEko
V2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAgV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldp
ZGdldENsaWVudCh3aWRnZXQpOwotICAgIGlmICghY2xpZW50KQotICAgICAgICByZXR1cm4gMDsK
LSAgICByZXR1cm4gY2xpZW50LT5zY3JlZW5JbmZvKCkudmVydGljYWxEUEk7Ci19Ci0KLWludCBQ
bGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkRlcHRoKFdpZGdldCogd2lkZ2V0KQotewotICAgIFdlYldp
ZGdldENsaWVudCogY2xpZW50ID0gdG9XZWJXaWRnZXRDbGllbnQod2lkZ2V0KTsKLSAgICBpZiAo
IWNsaWVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGNsaWVudC0+c2NyZWVuSW5m
bygpLmRlcHRoOwotfQotCi1pbnQgUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5EZXB0aFBlckNvbXBv
bmVudChXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBXZWJXaWRnZXRDbGllbnQqIGNsaWVudCA9IHRv
V2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVy
biAwOwotICAgIHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8oKS5kZXB0aFBlckNvbXBvbmVudDsK
LX0KLQotYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqIHdp
ZGdldCkKLXsKLSAgICBXZWJXaWRnZXRDbGllbnQqIGNsaWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50
KHdpZGdldCk7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVy
biBjbGllbnQtPnNjcmVlbkluZm8oKS5pc01vbm9jaHJvbWU7Ci19Ci0KLUludFJlY3QgUGxhdGZv
cm1TdXBwb3J0OjpzY3JlZW5SZWN0KFdpZGdldCogd2lkZ2V0KQotewotICAgIFdlYldpZGdldENs
aWVudCogY2xpZW50ID0gdG9XZWJXaWRnZXRDbGllbnQod2lkZ2V0KTsKLSAgICBpZiAoIWNsaWVu
dCkKLSAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKLSAgICByZXR1cm4gY2xpZW50LT5zY3JlZW5J
bmZvKCkucmVjdDsKLX0KLQotSW50UmVjdCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkF2YWlsYWJs
ZVJlY3QoV2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAgV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0
b1dlYldpZGdldENsaWVudCh3aWRnZXQpOwotICAgIGlmICghY2xpZW50KQotICAgICAgICByZXR1
cm4gSW50UmVjdCgpOwotICAgIHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8oKS5hdmFpbGFibGVS
ZWN0OwotfQotCiAjaWYgRU5BQkxFKFdPUktFUlMpCiBXb3JrZXJDb250ZXh0UHJveHkqIFdvcmtl
ckNvbnRleHRQcm94eTo6Y3JlYXRlKFdvcmtlciogd29ya2VyKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166542</attachid>
            <date>2012-10-01 14:22:01 -0700</date>
            <delta_ts>2012-10-24 14:15:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97474-20121001172104.patch</filename>
            <type>text/plain</type>
            <size>25455</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTMwMDc2KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEyLTEwLTAxICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFJl
bW92ZSBzY3JlZW4tcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBQbGF0Zm9ybVN1cHBvcnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NDc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2NyZWVuLXJlbGF0ZWQg
ZnVuY3Rpb25zIGxpa2Ugc2NyZWVuSG9yaXpvbnRhbERQSSB0aGF0CisgICAgICAgIHVzZWQgdG8g
YmUgb24gUGxhdGZvcm1TdXBwb3J0IGFyZSBub3cgYWNjZXNzZWQgdGhyb3VnaCBhIG5ldworICAg
ICAgICBQbGF0Zm9ybVBhZ2VDbGllbnQgYXR0YWNoZWQgdG8gV2lkZ2V0IGluIFdlYkNvcmUtbGFu
ZCwgd2hpY2ggaXMKKyAgICAgICAgaW1wbGVtZW50ZWQgYnkgQ2hyb21lQ2xpZW50SW1wbCBpbiBX
ZWJLaXQtbGFuZCwgd2hpY2ggcHJveGllcworICAgICAgICBjYWxscyB0byBXZWJXaWRnZXRDbGll
bnQsIHdoaWNoIGlzIGFjdHVhbGx5IGltcGxlbWVudGVkIGluCisgICAgICAgIENocm9taXVtLWxh
bmQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1Ymxp
Yy9XZWJTY3JlZW5JbmZvLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YlNjcmVlbkluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JlZW5JbmZvOjpXZWJTY3JlZW5J
bmZvKToKKwogMjAxMi0wOS0yOCAgSGFyYWxkIFR2ZWl0IEFsdmVzdHJhbmQgIDxoYXJhbGRAYWx2
ZXN0cmFuZC5ubz4KIAogICAgICAgICBJbXBsZW1lbnQgdGhlIEdldFN0YXRzIGludGVyZmFjZSBv
biBQZWVyQ29ubmVjdGlvbgpJbmRleDogU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkJKHJldmlzaW9uIDEzMDA3
MSkKKysrIFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTYsNiArMTE2LDcgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUmVjdC5oJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUmVmZXJyZXJQb2xpY3kuaCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmgnLAorICAgICAgICAg
ICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL3B1YmxpYy9XZWJTY3JvbGxiYXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYlNjcm9sbGJhckxheWVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJT
Y3JvbGxiYXJUaGVtZUdlb21ldHJ5LmgnLApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcmVlbkluZm8uaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViU2NyZWVuSW5mb19oCisjZGVmaW5lIFdlYlNjcmVlbkluZm9f
aAorCisjaW5jbHVkZSAiV2ViUmVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0
IFdlYlNjcmVlbkluZm8geworICAgIC8vIFRoZSBob3Jpem9udGFsIHNjcmVlbiBkcGkuCisgICAg
aW50IGhvcml6b250YWxEUEk7CisKKyAgICAvLyBUaGUgdmVydGljYWwgc2NyZWVuIGRwaS4KKyAg
ICBpbnQgdmVydGljYWxEUEk7CisKKyAgICAvLyBUaGUgc2NyZWVuIGRlcHRoIGluIGJpdHMgcGVy
IHBpeGVsCisgICAgaW50IGRlcHRoOworCisgICAgLy8gVGhlIGJpdHMgcGVyIGNvbG91ciBjb21w
b25lbnQuIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBjb2xvdXJzIGFyZSBiYWxhbmNlZAorICAgIC8v
IGVxdWFsbHkuCisgICAgaW50IGRlcHRoUGVyQ29tcG9uZW50OworCisgICAgLy8gVGhpcyBjYW4g
YmUgdHJ1ZSBmb3IgYmxhY2sgYW5kIHdoaXRlIHByaW50ZXJzCisgICAgYm9vbCBpc01vbm9jaHJv
bWU7CisKKyAgICAvLyBUaGlzIGlzIHNldCBmcm9tIHRoZSByY01vbml0b3IgbWVtYmVyIG9mIE1P
TklUT1JJTkZPRVgsIHRvIHdoaXQ6CisgICAgLy8gICAiQSBSRUNUIHN0cnVjdHVyZSB0aGF0IHNw
ZWNpZmllcyB0aGUgZGlzcGxheSBtb25pdG9yIHJlY3RhbmdsZSwKKyAgICAvLyAgIGV4cHJlc3Nl
ZCBpbiB2aXJ0dWFsLXNjcmVlbiBjb29yZGluYXRlcy4gTm90ZSB0aGF0IGlmIHRoZSBtb25pdG9y
CisgICAgLy8gICBpcyBub3QgdGhlIHByaW1hcnkgZGlzcGxheSBtb25pdG9yLCBzb21lIG9mIHRo
ZSByZWN0YW5nbGUncworICAgIC8vICAgY29vcmRpbmF0ZXMgbWF5IGJlIG5lZ2F0aXZlIHZhbHVl
cy4iCisgICAgV2ViUmVjdCByZWN0OworCisgICAgLy8gVGhpcyBpcyBzZXQgZnJvbSB0aGUgcmNX
b3JrIG1lbWJlciBvZiBNT05JVE9SSU5GT0VYLCB0byB3aGl0OgorICAgIC8vICAgIkEgUkVDVCBz
dHJ1Y3R1cmUgdGhhdCBzcGVjaWZpZXMgdGhlIHdvcmsgYXJlYSByZWN0YW5nbGUgb2YgdGhlCisg
ICAgLy8gICBkaXNwbGF5IG1vbml0b3IgdGhhdCBjYW4gYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMs
IGV4cHJlc3NlZCBpbgorICAgIC8vICAgdmlydHVhbC1zY3JlZW4gY29vcmRpbmF0ZXMuIFdpbmRv
d3MgdXNlcyB0aGlzIHJlY3RhbmdsZSB0bworICAgIC8vICAgbWF4aW1pemUgYW4gYXBwbGljYXRp
b24gb24gdGhlIG1vbml0b3IuIFRoZSByZXN0IG9mIHRoZSBhcmVhIGluCisgICAgLy8gICByY01v
bml0b3IgY29udGFpbnMgc3lzdGVtIHdpbmRvd3Mgc3VjaCBhcyB0aGUgdGFzayBiYXIgYW5kIHNp
ZGUKKyAgICAvLyAgIGJhcnMuIE5vdGUgdGhhdCBpZiB0aGUgbW9uaXRvciBpcyBub3QgdGhlIHBy
aW1hcnkgZGlzcGxheSBtb25pdG9yLAorICAgIC8vICAgc29tZSBvZiB0aGUgcmVjdGFuZ2xlJ3Mg
Y29vcmRpbmF0ZXMgbWF5IGJlIG5lZ2F0aXZlIHZhbHVlcyIuCisgICAgV2ViUmVjdCBhdmFpbGFi
bGVSZWN0OworCisgICAgV2ViU2NyZWVuSW5mbygpCisgICAgICAgIDogaG9yaXpvbnRhbERQSSgw
KQorICAgICAgICAsIHZlcnRpY2FsRFBJKDApCisgICAgICAgICwgZGVwdGgoMCkKKyAgICAgICAg
LCBkZXB0aFBlckNvbXBvbmVudCgwKQorICAgICAgICAsIGlzTW9ub2Nocm9tZShmYWxzZSkgeyB9
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMzAwNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwzNCBAQAorMjAxMi0xMC0wMSAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBSZW1vdmUgc2NyZWVuLXJlbGF0ZWQg
ZnVuY3Rpb25zIGZyb20gUGxhdGZvcm1TdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzQ3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNjcmVlbi1yZWxhdGVkIGZ1bmN0aW9ucyBsaWtlIHNjcmVl
bkhvcml6b250YWxEUEkgdGhhdAorICAgICAgICB1c2VkIHRvIGJlIG9uIFBsYXRmb3JtU3VwcG9y
dCBhcmUgbm93IGFjY2Vzc2VkIHRocm91Z2ggYSBuZXcKKyAgICAgICAgUGxhdGZvcm1QYWdlQ2xp
ZW50IGF0dGFjaGVkIHRvIFdpZGdldCBpbiBXZWJDb3JlLWxhbmQsIHdoaWNoIGlzCisgICAgICAg
IGltcGxlbWVudGVkIGJ5IENocm9tZUNsaWVudEltcGwgaW4gV2ViS2l0LWxhbmQsIHdoaWNoIHBy
b3hpZXMKKyAgICAgICAgY2FsbHMgdG8gV2ViV2lkZ2V0Q2xpZW50LCB3aGljaCBpcyBhY3R1YWxs
eSBpbXBsZW1lbnRlZCBpbgorICAgICAgICBDaHJvbWl1bS1sYW5kLgorCisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL1dpZGdldC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL1BhZ2VDbGllbnRDaHJvbWl1bS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVdpZGdldC5oLgorICAgICAgICAoUGFnZUNs
aWVudENocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNjcmVl
bkNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvUGxhdGZvcm1QYWdlQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuSG9yaXpvbnRhbERQ
SSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5WZXJ0aWNhbERQSSk6CisgICAgICAgIChXZWJD
b3JlOjpzY3JlZW5EZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5EZXB0aFBlckNvbXBv
bmVudCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Jc01vbm9jaHJvbWUpOgorICAgICAgICAo
V2ViQ29yZTo6c2NyZWVuUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5BdmFpbGFibGVS
ZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAg
ICAgICAgKFBsYXRmb3JtU3VwcG9ydCk6CisKIDIwMTItMTAtMDEgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBXb3VsZCBsaWtlIGEgd2F5IHRvIGN1c3Rv
bWl6ZSB0aGUgdHlwZSBvZiBHcmFwaGljc0xheWVycyBjcmVhdGVkIG9uIGEgcGVyIHBhZ2UgYmFz
aXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEzMDA3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNDY2Miw2ICs0NjYyLDcgQEAKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9MaW5rSGFzaENocm9taXVtLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vTWVtb3J5VXNhZ2VTdXBwb3J0Q2hyb21pdW0uY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9NSU1FVHlwZVJlZ2lzdHJ5Q2hyb21p
dW0uY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QYWdlQ2xpZW50Q2hyb21p
dW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVt
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1DdXJzb3IuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Q2hy
b21pdW0uY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCShyZXZpc2lvbiAxMzAw
NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKICNpZiBQTEFU
Rk9STShDSFJPTUlVTSkKKyNpbmNsdWRlICJQYWdlQ2xpZW50Q2hyb21pdW0uaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVdpZGdldC5oIgogI2VuZGlmCiAKQEAgLTkzLDYgKzk0LDggQEAgdHlwZWRlZiBQ
YWdlQ2xpZW50QmxhY2tCZXJyeSogUGxhdGZvcm1QYQogI2VsaWYgUExBVEZPUk0oRUZMKQogY2xh
c3MgUGFnZUNsaWVudEVmbDsKIHR5cGVkZWYgUGFnZUNsaWVudEVmbCogUGxhdGZvcm1QYWdlQ2xp
ZW50OworI2VsaWYgUExBVEZPUk0oQ0hST01JVU0pCit0eXBlZGVmIFdlYkNvcmU6OlBhZ2VDbGll
bnRDaHJvbWl1bSogUGxhdGZvcm1QYWdlQ2xpZW50OwogI2Vsc2UKIHR5cGVkZWYgUGxhdGZvcm1X
aWRnZXQgUGxhdGZvcm1QYWdlQ2xpZW50OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9QYWdlQ2xpZW50Q2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYWdlQ2xpZW50Q2hyb21pdW0uaAkocmV2aXNp
b24gMTMwMDcxKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVdpZGdldC5oOjEzMDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bh
Z2VDbGllbnRDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBQbGF0Zm9ybVdpZGdldF9oCisjZGVmaW5lIFBsYXRmb3JtV2lkZ2V0X2gKKwor
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4gIC8vIGZvciBpbnRwdHJfdAorCisvLyBQbGF0
Zm9ybVdpZGdldCBpcyBhbiBvcGFxdWUgaWRlbnRpZmllciBjb3JyZXNwb25kaW5nIHRvIHdoYXRl
dmVyIG5hdGl2ZQorLy8gdmlldyB0eXBlIHRoZSBlbWJlZGRlciBtYXkgdXNlLiAgUGxhdGZvcm1X
aWRnZXQgQ0FOTk9UIGJlIGFzc3VtZWQgdG8gYmUKKy8vIGEgdmFsaWQgcG9pbnRlci4gIFNvbWUg
ZW1iZWRkZXJzIG1heSBub3QgdXNlIHRoaXMgaWRlbnRpZmllciBhdCBhbGwuCisKK3R5cGVkZWYg
aW50cHRyX3QgUGxhdGZvcm1XaWRnZXQ7CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUGFnZUNsaWVudENocm9taXVtLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFnZUNsaWVudENocm9taXVtLmgJKHJldmlz
aW9uIDEzMDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BhZ2VDbGll
bnRDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoYykgMjAwOCwgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoYykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IAogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCwxNSArMjgsMTggQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQbGF0Zm9ybVdpZGdldF9oCi0jZGVmaW5lIFBs
YXRmb3JtV2lkZ2V0X2gKKyNpZm5kZWYgUGFnZUNsaWVudENocm9taXVtX2gKKyNkZWZpbmUgUGFn
ZUNsaWVudENocm9taXVtX2gKIAotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4gIC8vIGZv
ciBpbnRwdHJfdAorI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JlZW5JbmZvLmg+CiAKLS8vIFBsYXRm
b3JtV2lkZ2V0IGlzIGFuIG9wYXF1ZSBpZGVudGlmaWVyIGNvcnJlc3BvbmRpbmcgdG8gd2hhdGV2
ZXIgbmF0aXZlCi0vLyB2aWV3IHR5cGUgdGhlIGVtYmVkZGVyIG1heSB1c2UuICBQbGF0Zm9ybVdp
ZGdldCBDQU5OT1QgYmUgYXNzdW1lZCB0byBiZQotLy8gYSB2YWxpZCBwb2ludGVyLiAgU29tZSBl
bWJlZGRlcnMgbWF5IG5vdCB1c2UgdGhpcyBpZGVudGlmaWVyIGF0IGFsbC4KK25hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdHlwZWRlZiBpbnRwdHJfdCBQbGF0Zm9ybVdpZGdldDsKK2NsYXNzIFBhZ2VD
bGllbnRDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgdmlydHVhbCBXZWJLaXQ6OldlYlNjcmVlbklu
Zm8gc2NyZWVuSW5mbygpID0gMDsKK307CiAKLSNlbmRpZgorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gUGFnZUNsaWVudENocm9taXVtX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU2NyZWVuQ2hyb21pdW0uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU2NyZWVuQ2hyb21p
dW0uY3BwCShyZXZpc2lvbiAxMzAwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybVNjcmVlbkNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNDYg
KzMxLDgyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4u
aCIKIAotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIK
LQorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKKyNpbmNs
dWRlICJTY3JvbGxWaWV3LmgiCisjaW5jbHVkZSAiV2lkZ2V0LmgiCiAjaW5jbHVkZSA8cHVibGlj
L1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNjcmVlbkluZm8uaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitzdGF0aWMgUGxhdGZvcm1QYWdlQ2xpZW50IHRvUGxhdGZvcm1QYWdl
Q2xpZW50KFdpZGdldCogd2lkZ2V0KQoreworICAgIGlmICghd2lkZ2V0KQorICAgICAgICByZXR1
cm4gMDsKKyAgICBTY3JvbGxWaWV3KiByb290ID0gd2lkZ2V0LT5yb290KCk7CisgICAgaWYgKCFy
b290KQorICAgICAgICByZXR1cm4gMDsKKyAgICBIb3N0V2luZG93KiBob3N0V2luZG93ID0gcm9v
dC0+aG9zdFdpbmRvdygpOworICAgIGlmICghaG9zdFdpbmRvdykKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIGhvc3RXaW5kb3ctPnBsYXRmb3JtUGFnZUNsaWVudCgpOworfQorCiBpbnQg
c2NyZWVuSG9yaXpvbnRhbERQSShXaWRnZXQqIHdpZGdldCkKIHsKLSAgICByZXR1cm4gUGxhdGZv
cm1TdXBwb3J0OjpzY3JlZW5Ib3Jpem9udGFsRFBJKHdpZGdldCk7CisgICAgUGxhdGZvcm1QYWdl
Q2xpZW50IGNsaWVudCA9IHRvUGxhdGZvcm1QYWdlQ2xpZW50KHdpZGdldCk7CisgICAgaWYgKCFj
bGllbnQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8o
KS5ob3Jpem9udGFsRFBJOwogfQogCiBpbnQgc2NyZWVuVmVydGljYWxEUEkoV2lkZ2V0KiB3aWRn
ZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuVmVydGljYWxEUEkod2lk
Z2V0KTsKKyAgICBQbGF0Zm9ybVBhZ2VDbGllbnQgY2xpZW50ID0gdG9QbGF0Zm9ybVBhZ2VDbGll
bnQod2lkZ2V0KTsKKyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIGNsaWVudC0+c2NyZWVuSW5mbygpLnZlcnRpY2FsRFBJOwogfQogCiBpbnQgc2NyZWVuRGVw
dGgoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVu
RGVwdGgod2lkZ2V0KTsKKyAgICBQbGF0Zm9ybVBhZ2VDbGllbnQgY2xpZW50ID0gdG9QbGF0Zm9y
bVBhZ2VDbGllbnQod2lkZ2V0KTsKKyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIGNsaWVudC0+c2NyZWVuSW5mbygpLmRlcHRoOwogfQogCiBpbnQgc2NyZWVu
RGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3Jt
U3VwcG9ydDo6c2NyZWVuRGVwdGhQZXJDb21wb25lbnQod2lkZ2V0KTsKKyAgICBQbGF0Zm9ybVBh
Z2VDbGllbnQgY2xpZW50ID0gdG9QbGF0Zm9ybVBhZ2VDbGllbnQod2lkZ2V0KTsKKyAgICBpZiAo
IWNsaWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGNsaWVudC0+c2NyZWVuSW5m
bygpLmRlcHRoUGVyQ29tcG9uZW50OwogfQogCiBib29sIHNjcmVlbklzTW9ub2Nocm9tZShXaWRn
ZXQqIHdpZGdldCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5Jc01vbm9j
aHJvbWUod2lkZ2V0KTsKKyAgICBQbGF0Zm9ybVBhZ2VDbGllbnQgY2xpZW50ID0gdG9QbGF0Zm9y
bVBhZ2VDbGllbnQod2lkZ2V0KTsKKyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIGNsaWVudC0+c2NyZWVuSW5mbygpLmlzTW9ub2Nocm9tZTsKIH0KIAogRmxv
YXRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3Jt
U3VwcG9ydDo6c2NyZWVuUmVjdCh3aWRnZXQpOworICAgIFBsYXRmb3JtUGFnZUNsaWVudCBjbGll
bnQgPSB0b1BsYXRmb3JtUGFnZUNsaWVudCh3aWRnZXQpOworICAgIGlmICghY2xpZW50KQorICAg
ICAgICByZXR1cm4gSW50UmVjdCgpOworICAgIHJldHVybiBJbnRSZWN0KGNsaWVudC0+c2NyZWVu
SW5mbygpLnJlY3QpOwogfQogCiBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQq
IHdpZGdldCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5BdmFpbGFibGVS
ZWN0KHdpZGdldCk7CisgICAgUGxhdGZvcm1QYWdlQ2xpZW50IGNsaWVudCA9IHRvUGxhdGZvcm1Q
YWdlQ2xpZW50KHdpZGdldCk7CisgICAgaWYgKCFjbGllbnQpCisgICAgICAgIHJldHVybiBJbnRS
ZWN0KCk7CisgICAgcmV0dXJuIEludFJlY3QoY2xpZW50LT5zY3JlZW5JbmZvKCkuYXZhaWxhYmxl
UmVjdCk7CiB9CiAKIHZvaWQgc2NyZWVuQ29sb3JQcm9maWxlKENvbG9yUHJvZmlsZSYgdG9Qcm9m
aWxlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBw
b3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxh
dGZvcm1TdXBwb3J0LmgJKHJldmlzaW9uIDEzMDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCwxNSAr
OTgsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcGx1Z2lucyhib29sIHJlZnJlc2gsIFZl
Y3RvcjxQbHVnaW5JbmZvPiopOwogICAgIHN0YXRpYyBOUE9iamVjdCogcGx1Z2luU2NyaXB0YWJs
ZU9iamVjdChXaWRnZXQqKTsKIAotICAgIC8vIFNjcmVlbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgc3RhdGljIGludCBz
Y3JlZW5Ib3Jpem9udGFsRFBJKFdpZGdldCopOwotICAgIHN0YXRpYyBpbnQgc2NyZWVuVmVydGlj
YWxEUEkoV2lkZ2V0Kik7Ci0gICAgc3RhdGljIGludCBzY3JlZW5EZXB0aChXaWRnZXQqKTsKLSAg
ICBzdGF0aWMgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCopOwotICAgIHN0YXRp
YyBib29sIHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqKTsKLSAgICBzdGF0aWMgSW50UmVjdCBz
Y3JlZW5SZWN0KFdpZGdldCopOwotICAgIHN0YXRpYyBJbnRSZWN0IHNjcmVlbkF2YWlsYWJsZVJl
Y3QoV2lkZ2V0Kik7Ci0KICAgICAvLyBUaGVtaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogI2lmIE9TKFdJTkRPV1MpCiAgICAg
c3RhdGljIHZvaWQgcGFpbnRCdXR0b24oCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
cmV2aXNpb24gMTMwMDc2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0xMC0wMSAgTWFyayBQaWxncmltICA8
cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBSZW1vdmUgc2NyZWVu
LXJlbGF0ZWQgZnVuY3Rpb25zIGZyb20gUGxhdGZvcm1TdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzQ3NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNjcmVlbi1yZWxhdGVkIGZ1bmN0aW9ucyBs
aWtlIHNjcmVlbkhvcml6b250YWxEUEkgdGhhdAorICAgICAgICB1c2VkIHRvIGJlIG9uIFBsYXRm
b3JtU3VwcG9ydCBhcmUgbm93IGFjY2Vzc2VkIHRocm91Z2ggYSBuZXcKKyAgICAgICAgUGxhdGZv
cm1QYWdlQ2xpZW50IGF0dGFjaGVkIHRvIFdpZGdldCBpbiBXZWJDb3JlLWxhbmQsIHdoaWNoIGlz
CisgICAgICAgIGltcGxlbWVudGVkIGJ5IENocm9tZUNsaWVudEltcGwgaW4gV2ViS2l0LWxhbmQs
IHdoaWNoIHByb3hpZXMKKyAgICAgICAgY2FsbHMgdG8gV2ViV2lkZ2V0Q2xpZW50LCB3aGljaCBp
cyBhY3R1YWxseSBpbXBsZW1lbnRlZCBpbgorICAgICAgICBDaHJvbWl1bS1sYW5kLgorCisgICAg
ICAgICogcHVibGljL1dlYlNjcmVlbkluZm8uaDoKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnNjcmVlbkluZm8p
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6cGxh
dGZvcm1QYWdlQ2xpZW50KToKKyAgICAgICAgKENocm9tZUNsaWVudEltcGwpOgorICAgICAgICAq
IHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
c3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwOgorCiAyMDEyLTEwLTAxICBJbHlhIFRpa2hvbm92c2t5
ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHNpbmdsZSBsaW5l
IGNvbXBpbGF0aW9uIGZpeCBmb3IgQ2FuYXJ5IERlYnVnIE1hYy4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmVlbkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgJKHJldmlzaW9uIDEzMDA3MSkK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmVlbkluZm8uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNTUgKzI4LDQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBXZWJTY3JlZW5JbmZvX2gKLSNkZWZpbmUgV2ViU2NyZWVuSW5mb19oCi0KLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJSZWN0LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViU2Ny
ZWVuSW5mbyB7Ci0gICAgLy8gVGhlIGhvcml6b250YWwgc2NyZWVuIGRwaS4KLSAgICBpbnQgaG9y
aXpvbnRhbERQSTsKLQotICAgIC8vIFRoZSB2ZXJ0aWNhbCBzY3JlZW4gZHBpLgotICAgIGludCB2
ZXJ0aWNhbERQSTsKLQotICAgIC8vIFRoZSBzY3JlZW4gZGVwdGggaW4gYml0cyBwZXIgcGl4ZWwK
LSAgICBpbnQgZGVwdGg7Ci0KLSAgICAvLyBUaGUgYml0cyBwZXIgY29sb3VyIGNvbXBvbmVudC4g
VGhpcyBhc3N1bWVzIHRoYXQgdGhlIGNvbG91cnMgYXJlIGJhbGFuY2VkCi0gICAgLy8gZXF1YWxs
eS4KLSAgICBpbnQgZGVwdGhQZXJDb21wb25lbnQ7Ci0KLSAgICAvLyBUaGlzIGNhbiBiZSB0cnVl
IGZvciBibGFjayBhbmQgd2hpdGUgcHJpbnRlcnMKLSAgICBib29sIGlzTW9ub2Nocm9tZTsKLQot
ICAgIC8vIFRoaXMgaXMgc2V0IGZyb20gdGhlIHJjTW9uaXRvciBtZW1iZXIgb2YgTU9OSVRPUklO
Rk9FWCwgdG8gd2hpdDoKLSAgICAvLyAgICJBIFJFQ1Qgc3RydWN0dXJlIHRoYXQgc3BlY2lmaWVz
IHRoZSBkaXNwbGF5IG1vbml0b3IgcmVjdGFuZ2xlLAotICAgIC8vICAgZXhwcmVzc2VkIGluIHZp
cnR1YWwtc2NyZWVuIGNvb3JkaW5hdGVzLiBOb3RlIHRoYXQgaWYgdGhlIG1vbml0b3IKLSAgICAv
LyAgIGlzIG5vdCB0aGUgcHJpbWFyeSBkaXNwbGF5IG1vbml0b3IsIHNvbWUgb2YgdGhlIHJlY3Rh
bmdsZSdzCi0gICAgLy8gICBjb29yZGluYXRlcyBtYXkgYmUgbmVnYXRpdmUgdmFsdWVzLiIKLSAg
ICBXZWJSZWN0IHJlY3Q7Ci0KLSAgICAvLyBUaGlzIGlzIHNldCBmcm9tIHRoZSByY1dvcmsgbWVt
YmVyIG9mIE1PTklUT1JJTkZPRVgsIHRvIHdoaXQ6Ci0gICAgLy8gICAiQSBSRUNUIHN0cnVjdHVy
ZSB0aGF0IHNwZWNpZmllcyB0aGUgd29yayBhcmVhIHJlY3RhbmdsZSBvZiB0aGUKLSAgICAvLyAg
IGRpc3BsYXkgbW9uaXRvciB0aGF0IGNhbiBiZSB1c2VkIGJ5IGFwcGxpY2F0aW9ucywgZXhwcmVz
c2VkIGluCi0gICAgLy8gICB2aXJ0dWFsLXNjcmVlbiBjb29yZGluYXRlcy4gV2luZG93cyB1c2Vz
IHRoaXMgcmVjdGFuZ2xlIHRvCi0gICAgLy8gICBtYXhpbWl6ZSBhbiBhcHBsaWNhdGlvbiBvbiB0
aGUgbW9uaXRvci4gVGhlIHJlc3Qgb2YgdGhlIGFyZWEgaW4KLSAgICAvLyAgIHJjTW9uaXRvciBj
b250YWlucyBzeXN0ZW0gd2luZG93cyBzdWNoIGFzIHRoZSB0YXNrIGJhciBhbmQgc2lkZQotICAg
IC8vICAgYmFycy4gTm90ZSB0aGF0IGlmIHRoZSBtb25pdG9yIGlzIG5vdCB0aGUgcHJpbWFyeSBk
aXNwbGF5IG1vbml0b3IsCi0gICAgLy8gICBzb21lIG9mIHRoZSByZWN0YW5nbGUncyBjb29yZGlu
YXRlcyBtYXkgYmUgbmVnYXRpdmUgdmFsdWVzIi4KLSAgICBXZWJSZWN0IGF2YWlsYWJsZVJlY3Q7
Ci0KLSAgICBXZWJTY3JlZW5JbmZvKCkKLSAgICAgICAgOiBob3Jpem9udGFsRFBJKDApCi0gICAg
ICAgICwgdmVydGljYWxEUEkoMCkKLSAgICAgICAgLCBkZXB0aCgwKQotICAgICAgICAsIGRlcHRo
UGVyQ29tcG9uZW50KDApCi0gICAgICAgICwgaXNNb25vY2hyb21lKGZhbHNlKSB7IH0KLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKKyNpbmNsdWRlICIuLi8uLi8uLi9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oIgpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDEzMDA3
MSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MDIsNiArOTAyLDEyIEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6
cG9zdEFjY2Vzc2liaWxpdHkKICAgICAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+cG9zdEFjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb24oV2ViQWNjZXNzaWJpbGl0eU9iamVjdChvYmopLCB0b1dlYkFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb24obm90aWZpY2F0aW9uKSk7CiB9CiAKK1dlYktpdDo6V2Vi
U2NyZWVuSW5mbyBDaHJvbWVDbGllbnRJbXBsOjpzY3JlZW5JbmZvKCkKK3sKKyAgICByZXR1cm4g
bV93ZWJWaWV3LT5jbGllbnQoKS0+c2NyZWVuSW5mbygpOworfQorCisKIGJvb2wgQ2hyb21lQ2xp
ZW50SW1wbDo6cGFpbnRDdXN0b21PdmVyaGFuZ0FyZWEoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2
ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogewogICAgIEZy
YW1lKiBmcmFtZSA9IG1fd2ViVmlldy0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpOwpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAkocmV2aXNp
b24gMTMwMDcxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1w
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxMCArNjAsMTEgQEAgY2xhc3MgV2ViQ29sb3JDaG9v
c2VyOwogY2xhc3MgV2ViQ29sb3JDaG9vc2VyQ2xpZW50OwogY2xhc3MgV2ViVmlld0ltcGw7CiBz
dHJ1Y3QgV2ViQ3Vyc29ySW5mbzsKK3N0cnVjdCBXZWJTY3JlZW5JbmZvOwogc3RydWN0IFdlYlBv
cHVwTWVudUluZm87CiAKIC8vIEhhbmRsZXMgd2luZG93LWxldmVsIG5vdGlmaWNhdGlvbnMgZnJv
bSBXZWJDb3JlIG9uIGJlaGFsZiBvZiBhIFdlYlZpZXcuCi1jbGFzcyBDaHJvbWVDbGllbnRJbXBs
IDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNsaWVudENocm9taXVtIHsKK2NsYXNzIENocm9tZUNs
aWVudEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50Q2hyb21pdW0sIHB1YmxpYyBX
ZWJDb3JlOjpQYWdlQ2xpZW50Q2hyb21pdW0gewogcHVibGljOgogICAgIGV4cGxpY2l0IENocm9t
ZUNsaWVudEltcGwoV2ViVmlld0ltcGwqIHdlYlZpZXcpOwogICAgIHZpcnR1YWwgfkNocm9tZUNs
aWVudEltcGwoKTsKQEAgLTEyMyw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGNsaXBSZWN0KTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50
IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdDsKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JikgY29uc3Q7Ci0gICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1Q
YWdlQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdl
Q2xpZW50IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIFBsYXRmb3JtUGFnZUNs
aWVudCh0aGlzKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKFdlYkNv
cmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXRVcGRhdGVkKFdlYkNvcmU6OkZyYW1lKikgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIHNjcm9sbFJlY3RJbnRvVmlldygKQEAgLTE5NCw2ICsxOTUsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHBvcHVwQ2xvc2VkKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiBwb3B1cENv
bnRhaW5lcik7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqLCBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpB
WE5vdGlmaWNhdGlvbik7CiAKKyAgICAvLyBQYWdlQ2xpZW50Q2hyb21pdW0gbWV0aG9kczoKKyAg
ICB2aXJ0dWFsIFdlYlNjcmVlbkluZm8gc2NyZWVuSW5mbygpOworCiAgICAgLy8gQ2hyb21lQ2xp
ZW50SW1wbDoKICAgICB2b2lkIHNldEN1cnNvckZvclBsdWdpbihjb25zdCBXZWJDdXJzb3JJbmZv
Jik7CiAgICAgdm9pZCBzZXROZXdXaW5kb3dOYXZpZ2F0aW9uUG9saWN5KFdlYk5hdmlnYXRpb25Q
b2xpY3kpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1
cHBvcnQuY3BwCShyZXZpc2lvbiAxMzAwNzEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9QbGF0Zm9ybVN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMzAgKzEwMCw2IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGlj
IFdlYldpZGdldENsaWVudCogdG9XZWJXaWRnZXRDbGllbnQoV2lkZ2V0KiB3aWRnZXQpCi17Ci0g
ICAgaWYgKCF3aWRnZXQpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgRnJhbWVWaWV3KiB2aWV3
OwotICAgIGlmICh3aWRnZXQtPmlzRnJhbWVWaWV3KCkpCi0gICAgICAgIHZpZXcgPSBzdGF0aWNf
Y2FzdDxGcmFtZVZpZXcqPih3aWRnZXQpOwotICAgIGVsc2UgaWYgKHdpZGdldC0+cGFyZW50KCkg
JiYgd2lkZ2V0LT5wYXJlbnQoKS0+aXNGcmFtZVZpZXcoKSkKLSAgICAgICAgdmlldyA9IHN0YXRp
Y19jYXN0PEZyYW1lVmlldyo+KHdpZGdldC0+cGFyZW50KCkpOwotICAgIGVsc2UKLSAgICAgICAg
cmV0dXJuIDA7Ci0KLSAgICBQYWdlKiBwYWdlID0gdmlldy0+ZnJhbWUoKSA/IHZpZXctPmZyYW1l
KCktPnBhZ2UoKSA6IDA7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IHZvaWQqIHdlYlZpZXcgPSBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPndlYlZpZXcoKTsKLSAg
ICBpZiAoIXdlYlZpZXcpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PFdlYlZpZXdJbXBsKj4od2ViVmlldyktPmNsaWVudCgpOwotfQotCiBzdGF0aWMgV2ViQ29v
a2llSmFyKiBnZXRDb29raWVKYXIoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIFdl
YkZyYW1lSW1wbCogZnJhbWVJbXBsID0gV2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZG9jdW1lbnQt
PmZyYW1lKCkpOwpAQCAtMzMwLDYyICszMDYsNiBAQCB2b2lkIFBsYXRmb3JtU3VwcG9ydDo6cGFp
bnRQcm9ncmVzc0JhcigKIC8vIEdsdWUgbGF5ZXIuIE9uY2UgdGhlIEdsdWUgbGF5ZXIgbW92ZXMg
ZW50aXJlbHkgaW50byB0aGUgV2ViS2l0IGxheWVyLCB0aGVzZQogLy8gbWV0aG9kcyB3aWxsIGJl
IGRlbGV0ZWQuCiAKLWludCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkhvcml6b250YWxEUEkoV2lk
Z2V0KiB3aWRnZXQpCi17Ci0gICAgV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdl
dENsaWVudCh3aWRnZXQpOwotICAgIGlmICghY2xpZW50KQotICAgICAgICByZXR1cm4gMDsKLSAg
ICByZXR1cm4gY2xpZW50LT5zY3JlZW5JbmZvKCkuaG9yaXpvbnRhbERQSTsKLX0KLQotaW50IFBs
YXRmb3JtU3VwcG9ydDo6c2NyZWVuVmVydGljYWxEUEkoV2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAg
V2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVudCh3aWRnZXQpOwotICAg
IGlmICghY2xpZW50KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gY2xpZW50LT5zY3Jl
ZW5JbmZvKCkudmVydGljYWxEUEk7Ci19Ci0KLWludCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkRl
cHRoKFdpZGdldCogd2lkZ2V0KQotewotICAgIFdlYldpZGdldENsaWVudCogY2xpZW50ID0gdG9X
ZWJXaWRnZXRDbGllbnQod2lkZ2V0KTsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgcmV0dXJuIGNsaWVudC0+c2NyZWVuSW5mbygpLmRlcHRoOwotfQotCi1pbnQgUGxh
dGZvcm1TdXBwb3J0OjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudChXaWRnZXQqIHdpZGdldCkKLXsK
LSAgICBXZWJXaWRnZXRDbGllbnQqIGNsaWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7
Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBjbGllbnQt
PnNjcmVlbkluZm8oKS5kZXB0aFBlckNvbXBvbmVudDsKLX0KLQotYm9vbCBQbGF0Zm9ybVN1cHBv
cnQ6OnNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBXZWJXaWRnZXRD
bGllbnQqIGNsaWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7Ci0gICAgaWYgKCFjbGll
bnQpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8oKS5p
c01vbm9jaHJvbWU7Ci19Ci0KLUludFJlY3QgUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5SZWN0KFdp
ZGdldCogd2lkZ2V0KQotewotICAgIFdlYldpZGdldENsaWVudCogY2xpZW50ID0gdG9XZWJXaWRn
ZXRDbGllbnQod2lkZ2V0KTsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJuIEludFJl
Y3QoKTsKLSAgICByZXR1cm4gY2xpZW50LT5zY3JlZW5JbmZvKCkucmVjdDsKLX0KLQotSW50UmVj
dCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aWRnZXQpCi17
Ci0gICAgV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVudCh3aWRnZXQp
OwotICAgIGlmICghY2xpZW50KQotICAgICAgICByZXR1cm4gSW50UmVjdCgpOwotICAgIHJldHVy
biBjbGllbnQtPnNjcmVlbkluZm8oKS5hdmFpbGFibGVSZWN0OwotfQotCiAjaWYgRU5BQkxFKFdP
UktFUlMpCiBXb3JrZXJDb250ZXh0UHJveHkqIFdvcmtlckNvbnRleHRQcm94eTo6Y3JlYXRlKFdv
cmtlciogd29ya2VyKQogewpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFn
ZVBvcHVwSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUGFnZVBvcHVwSW1wbC5jcHAJKHJldmlzaW9uIDEzMDA3MSkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2
ICs0NCw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50
Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIldlYlBhZ2VQb3B1cC5oIgorI2luY2x1ZGUgIldlYlZp
ZXdDbGllbnQuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogI2luY2x1ZGUgIldlYldpZGdl
dENsaWVudC5oIgogCkBAIC01NCw3ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiAjaWYg
RU5BQkxFKFBBR0VfUE9QVVApCiAKLWNsYXNzIFBhZ2VQb3B1cENocm9tZUNsaWVudCA6IHB1Ymxp
YyBFbXB0eUNocm9tZUNsaWVudCB7CitjbGFzcyBQYWdlUG9wdXBDaHJvbWVDbGllbnQgOiBwdWJs
aWMgRW1wdHlDaHJvbWVDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpQYWdlQ2xpZW50Q2hyb21pdW0g
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VQb3B1cENocm9tZUNsaWVudCk7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKQEAgLTEyNCw2ICsxMjUsMTcgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZSgwLCAwKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIFBs
YXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCBPVkVSUklERQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtUGFnZUNsaWVudCh0aGlzKTsKKyAgICB9CisKKyAg
ICAvLyBQYWdlQ2xpZW50Q2hyb21pdW0gbWV0aG9kczoKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2Vi
U2NyZWVuSW5mbyBzY3JlZW5JbmZvKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJldHVybiBt
X3BvcHVwLT5tX3dlYlZpZXctPmNsaWVudCgpLT5zY3JlZW5JbmZvKCk7CisgICAgfQorCiAgICAg
V2ViUGFnZVBvcHVwSW1wbCogbV9wb3B1cDsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170469</attachid>
            <date>2012-10-24 14:15:49 -0700</date>
            <delta_ts>2012-10-24 16:20:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97474-20121024171423.patch</filename>
            <type>text/plain</type>
            <size>25391</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTMyMzg2KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEyLTEwLTI0ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFJl
bW92ZSBzY3JlZW4tcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBQbGF0Zm9ybVN1cHBvcnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NDc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBTY3JlZW4tcmVsYXRlZCBmdW5j
dGlvbnMgbGlrZSBzY3JlZW5Ib3Jpem9udGFsRFBJIHRoYXQKKyAgICAgICAgdXNlZCB0byBiZSBv
biBQbGF0Zm9ybVN1cHBvcnQgYXJlIG5vdyBhY2Nlc3NlZCB0aHJvdWdoIGEgbmV3CisgICAgICAg
IFBsYXRmb3JtUGFnZUNsaWVudCBhdHRhY2hlZCB0byBXaWRnZXQgaW4gV2ViQ29yZS1sYW5kLCB3
aGljaCBpcworICAgICAgICBpbXBsZW1lbnRlZCBieSBDaHJvbWVDbGllbnRJbXBsIGluIFdlYktp
dC1sYW5kLCB3aGljaCBwcm94aWVzCisgICAgICAgIGNhbGxzIHRvIFdlYldpZGdldENsaWVudCwg
d2hpY2ggaXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQgaW4KKyAgICAgICAgQ2hyb21pdW0tbGFuZC4K
KworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dl
YlNjcmVlbkluZm8uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU2Ny
ZWVuSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcmVlbkluZm86OldlYlNjcmVlbkluZm8p
OgorCiAyMDEyLTEwLTIzICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW0Nocm9taXVtXSBBZGQgQ0hST01JVU1fdGV4dHVyZV9mcm9tX2ltYWdlIGV4dGVu
c2lvbiBzdXBwb3J0LgpJbmRleDogU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkJKHJldmlzaW9uIDEzMjM4NikK
KysrIFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMTks
NiArMTE5LDcgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUmVjdC5oJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUmVmZXJyZXJQb2xpY3kuaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmgnLAorICAgICAgICAgICAg
J2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJTY3JvbGxiYXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dl
YlNjcm9sbGJhckxheWVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTY3Jv
bGxiYXJUaGVtZUdlb21ldHJ5LmgnLApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJTY3JlZW5JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYlNjcmVlbkluZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViU2NyZWVuSW5mb19oCisjZGVmaW5lIFdlYlNjcmVlbkluZm9faAor
CisjaW5jbHVkZSAiV2ViUmVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdl
YlNjcmVlbkluZm8geworICAgIC8vIFRoZSBob3Jpem9udGFsIHNjcmVlbiBkcGkuCisgICAgaW50
IGhvcml6b250YWxEUEk7CisKKyAgICAvLyBUaGUgdmVydGljYWwgc2NyZWVuIGRwaS4KKyAgICBp
bnQgdmVydGljYWxEUEk7CisKKyAgICAvLyBUaGUgc2NyZWVuIGRlcHRoIGluIGJpdHMgcGVyIHBp
eGVsCisgICAgaW50IGRlcHRoOworCisgICAgLy8gVGhlIGJpdHMgcGVyIGNvbG91ciBjb21wb25l
bnQuIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBjb2xvdXJzIGFyZSBiYWxhbmNlZAorICAgIC8vIGVx
dWFsbHkuCisgICAgaW50IGRlcHRoUGVyQ29tcG9uZW50OworCisgICAgLy8gVGhpcyBjYW4gYmUg
dHJ1ZSBmb3IgYmxhY2sgYW5kIHdoaXRlIHByaW50ZXJzCisgICAgYm9vbCBpc01vbm9jaHJvbWU7
CisKKyAgICAvLyBUaGlzIGlzIHNldCBmcm9tIHRoZSByY01vbml0b3IgbWVtYmVyIG9mIE1PTklU
T1JJTkZPRVgsIHRvIHdoaXQ6CisgICAgLy8gICAiQSBSRUNUIHN0cnVjdHVyZSB0aGF0IHNwZWNp
ZmllcyB0aGUgZGlzcGxheSBtb25pdG9yIHJlY3RhbmdsZSwKKyAgICAvLyAgIGV4cHJlc3NlZCBp
biB2aXJ0dWFsLXNjcmVlbiBjb29yZGluYXRlcy4gTm90ZSB0aGF0IGlmIHRoZSBtb25pdG9yCisg
ICAgLy8gICBpcyBub3QgdGhlIHByaW1hcnkgZGlzcGxheSBtb25pdG9yLCBzb21lIG9mIHRoZSBy
ZWN0YW5nbGUncworICAgIC8vICAgY29vcmRpbmF0ZXMgbWF5IGJlIG5lZ2F0aXZlIHZhbHVlcy4i
CisgICAgV2ViUmVjdCByZWN0OworCisgICAgLy8gVGhpcyBpcyBzZXQgZnJvbSB0aGUgcmNXb3Jr
IG1lbWJlciBvZiBNT05JVE9SSU5GT0VYLCB0byB3aGl0OgorICAgIC8vICAgIkEgUkVDVCBzdHJ1
Y3R1cmUgdGhhdCBzcGVjaWZpZXMgdGhlIHdvcmsgYXJlYSByZWN0YW5nbGUgb2YgdGhlCisgICAg
Ly8gICBkaXNwbGF5IG1vbml0b3IgdGhhdCBjYW4gYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMsIGV4
cHJlc3NlZCBpbgorICAgIC8vICAgdmlydHVhbC1zY3JlZW4gY29vcmRpbmF0ZXMuIFdpbmRvd3Mg
dXNlcyB0aGlzIHJlY3RhbmdsZSB0bworICAgIC8vICAgbWF4aW1pemUgYW4gYXBwbGljYXRpb24g
b24gdGhlIG1vbml0b3IuIFRoZSByZXN0IG9mIHRoZSBhcmVhIGluCisgICAgLy8gICByY01vbml0
b3IgY29udGFpbnMgc3lzdGVtIHdpbmRvd3Mgc3VjaCBhcyB0aGUgdGFzayBiYXIgYW5kIHNpZGUK
KyAgICAvLyAgIGJhcnMuIE5vdGUgdGhhdCBpZiB0aGUgbW9uaXRvciBpcyBub3QgdGhlIHByaW1h
cnkgZGlzcGxheSBtb25pdG9yLAorICAgIC8vICAgc29tZSBvZiB0aGUgcmVjdGFuZ2xlJ3MgY29v
cmRpbmF0ZXMgbWF5IGJlIG5lZ2F0aXZlIHZhbHVlcyIuCisgICAgV2ViUmVjdCBhdmFpbGFibGVS
ZWN0OworCisgICAgV2ViU2NyZWVuSW5mbygpCisgICAgICAgIDogaG9yaXpvbnRhbERQSSgwKQor
ICAgICAgICAsIHZlcnRpY2FsRFBJKDApCisgICAgICAgICwgZGVwdGgoMCkKKyAgICAgICAgLCBk
ZXB0aFBlckNvbXBvbmVudCgwKQorICAgICAgICAsIGlzTW9ub2Nocm9tZShmYWxzZSkgeyB9Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxMzIzODYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwzNCBAQAorMjAxMi0xMC0yNCAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBSZW1vdmUgc2NyZWVuLXJlbGF0ZWQgZnVu
Y3Rpb25zIGZyb20gUGxhdGZvcm1TdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NzQ3NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFy
dGguCisKKyAgICAgICAgU2NyZWVuLXJlbGF0ZWQgZnVuY3Rpb25zIGxpa2Ugc2NyZWVuSG9yaXpv
bnRhbERQSSB0aGF0CisgICAgICAgIHVzZWQgdG8gYmUgb24gUGxhdGZvcm1TdXBwb3J0IGFyZSBu
b3cgYWNjZXNzZWQgdGhyb3VnaCBhIG5ldworICAgICAgICBQbGF0Zm9ybVBhZ2VDbGllbnQgYXR0
YWNoZWQgdG8gV2lkZ2V0IGluIFdlYkNvcmUtbGFuZCwgd2hpY2ggaXMKKyAgICAgICAgaW1wbGVt
ZW50ZWQgYnkgQ2hyb21lQ2xpZW50SW1wbCBpbiBXZWJLaXQtbGFuZCwgd2hpY2ggcHJveGllcwor
ICAgICAgICBjYWxscyB0byBXZWJXaWRnZXRDbGllbnQsIHdoaWNoIGlzIGFjdHVhbGx5IGltcGxl
bWVudGVkIGluCisgICAgICAgIENocm9taXVtLWxhbmQuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogcGxhdGZvcm0vV2lkZ2V0Lmg6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vUGFnZUNsaWVudENocm9taXVtLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtV2lkZ2V0LmguCisgICAgICAgIChQYWdlQ2xpZW50Q2hy
b21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU2NyZWVuQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9QbGF0Zm9ybVBhZ2VDbGllbnQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Ib3Jpem9udGFsRFBJKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNjcmVlblZlcnRpY2FsRFBJKToKKyAgICAgICAgKFdlYkNvcmU6OnNj
cmVlbkRlcHRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbklzTW9ub2Nocm9tZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzY3JlZW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkF2YWlsYWJsZVJlY3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAo
UGxhdGZvcm1TdXBwb3J0KToKKwogMjAxMi0xMC0yNCAgTmljbyBXZWJlciAgPHRoYWtpc0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgSG9ub3IgaW1hZ2Ugb3JpZW50YXRpb24gaW4gR3JhcGhpY3ND
b250ZXh0U2tpYQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTMyMzg2KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC00NzAxLDYgKzQ3MDEs
NyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0xpbmtIYXNoQ2hyb21pdW0uY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9NZW1vcnlVc2FnZVN1cHBvcnRDaHJv
bWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL01JTUVUeXBlUmVnaXN0
cnlDaHJvbWl1bS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BhZ2VDbGll
bnRDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJk
Q2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUN1
cnNvci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRDaHJvbWl1bS5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgJKHJldmlz
aW9uIDEzMjM4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAog
I2lmIFBMQVRGT1JNKENIUk9NSVVNKQorI2luY2x1ZGUgIlBhZ2VDbGllbnRDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtV2lkZ2V0LmgiCiAjZW5kaWYKIApAQCAtOTMsNiArOTQsOCBAQCB0
eXBlZGVmIFBhZ2VDbGllbnRCbGFja0JlcnJ5KiBQbGF0Zm9ybVBhCiAjZWxpZiBQTEFURk9STShF
RkwpCiBjbGFzcyBQYWdlQ2xpZW50RWZsOwogdHlwZWRlZiBQYWdlQ2xpZW50RWZsKiBQbGF0Zm9y
bVBhZ2VDbGllbnQ7CisjZWxpZiBQTEFURk9STShDSFJPTUlVTSkKK3R5cGVkZWYgV2ViQ29yZTo6
UGFnZUNsaWVudENocm9taXVtKiBQbGF0Zm9ybVBhZ2VDbGllbnQ7CiAjZWxzZQogdHlwZWRlZiBQ
bGF0Zm9ybVdpZGdldCBQbGF0Zm9ybVBhZ2VDbGllbnQ7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BhZ2VDbGllbnRDaHJvbWl1bS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BhZ2VDbGllbnRDaHJvbWl1bS5o
CShyZXZpc2lvbiAxMzIzODYpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1BsYXRmb3JtV2lkZ2V0Lmg6MTMyMzg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUGFnZUNsaWVudENocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
IAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtV2lkZ2V0X2gKKyNkZWZpbmUgUGxhdGZvcm1XaWRn
ZXRfaAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPiAgLy8gZm9yIGludHB0cl90CisK
Ky8vIFBsYXRmb3JtV2lkZ2V0IGlzIGFuIG9wYXF1ZSBpZGVudGlmaWVyIGNvcnJlc3BvbmRpbmcg
dG8gd2hhdGV2ZXIgbmF0aXZlCisvLyB2aWV3IHR5cGUgdGhlIGVtYmVkZGVyIG1heSB1c2UuICBQ
bGF0Zm9ybVdpZGdldCBDQU5OT1QgYmUgYXNzdW1lZCB0byBiZQorLy8gYSB2YWxpZCBwb2ludGVy
LiAgU29tZSBlbWJlZGRlcnMgbWF5IG5vdCB1c2UgdGhpcyBpZGVudGlmaWVyIGF0IGFsbC4KKwor
dHlwZWRlZiBpbnRwdHJfdCBQbGF0Zm9ybVdpZGdldDsKKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYWdlQ2xpZW50Q2hyb21pdW0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYWdlQ2xpZW50Q2hyb21pdW0u
aAkocmV2aXNpb24gMTMyMzg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UGFnZUNsaWVudENocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChjKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDE1ICsyOCwx
OCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBsYXRmb3JtV2lkZ2V0X2gKLSNk
ZWZpbmUgUGxhdGZvcm1XaWRnZXRfaAorI2lmbmRlZiBQYWdlQ2xpZW50Q2hyb21pdW1faAorI2Rl
ZmluZSBQYWdlQ2xpZW50Q2hyb21pdW1faAogCi0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PiAgLy8gZm9yIGludHB0cl90CisjaW5jbHVkZSA8cHVibGljL1dlYlNjcmVlbkluZm8uaD4KIAot
Ly8gUGxhdGZvcm1XaWRnZXQgaXMgYW4gb3BhcXVlIGlkZW50aWZpZXIgY29ycmVzcG9uZGluZyB0
byB3aGF0ZXZlciBuYXRpdmUKLS8vIHZpZXcgdHlwZSB0aGUgZW1iZWRkZXIgbWF5IHVzZS4gIFBs
YXRmb3JtV2lkZ2V0IENBTk5PVCBiZSBhc3N1bWVkIHRvIGJlCi0vLyBhIHZhbGlkIHBvaW50ZXIu
ICBTb21lIGVtYmVkZGVycyBtYXkgbm90IHVzZSB0aGlzIGlkZW50aWZpZXIgYXQgYWxsLgorbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIGludHB0cl90IFBsYXRmb3JtV2lkZ2V0OworY2xh
c3MgUGFnZUNsaWVudENocm9taXVtIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2Vi
U2NyZWVuSW5mbyBzY3JlZW5JbmZvKCkgPSAwOworfTsKIAotI2VuZGlmCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQYWdlQ2xpZW50Q2hyb21pdW1faApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TY3JlZW5DaHJvbWl1bS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TY3Jl
ZW5DaHJvbWl1bS5jcHAJKHJldmlzaW9uIDEzMjM4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BsYXRmb3JtU2NyZWVuQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw0NiArMzEsODIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVNjcmVlbi5oIgogCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3Vw
cG9ydC5oIgotCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5o
IgorI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKKyNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNsdWRl
IDxwdWJsaWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU2NyZWVuSW5mby5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBQbGF0Zm9ybVBhZ2VDbGllbnQgdG9QbGF0
Zm9ybVBhZ2VDbGllbnQoV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgaWYgKCF3aWRnZXQpCisgICAg
ICAgIHJldHVybiAwOworICAgIFNjcm9sbFZpZXcqIHJvb3QgPSB3aWRnZXQtPnJvb3QoKTsKKyAg
ICBpZiAoIXJvb3QpCisgICAgICAgIHJldHVybiAwOworICAgIEhvc3RXaW5kb3cqIGhvc3RXaW5k
b3cgPSByb290LT5ob3N0V2luZG93KCk7CisgICAgaWYgKCFob3N0V2luZG93KQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gaG9zdFdpbmRvdy0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7Cit9
CisKIGludCBzY3JlZW5Ib3Jpem9udGFsRFBJKFdpZGdldCogd2lkZ2V0KQogewotICAgIHJldHVy
biBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkhvcml6b250YWxEUEkod2lkZ2V0KTsKKyAgICBQbGF0
Zm9ybVBhZ2VDbGllbnQgY2xpZW50ID0gdG9QbGF0Zm9ybVBhZ2VDbGllbnQod2lkZ2V0KTsKKyAg
ICBpZiAoIWNsaWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGNsaWVudC0+c2Ny
ZWVuSW5mbygpLmhvcml6b250YWxEUEk7CiB9CiAKIGludCBzY3JlZW5WZXJ0aWNhbERQSShXaWRn
ZXQqIHdpZGdldCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5WZXJ0aWNh
bERQSSh3aWRnZXQpOworICAgIFBsYXRmb3JtUGFnZUNsaWVudCBjbGllbnQgPSB0b1BsYXRmb3Jt
UGFnZUNsaWVudCh3aWRnZXQpOworICAgIGlmICghY2xpZW50KQorICAgICAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gY2xpZW50LT5zY3JlZW5JbmZvKCkudmVydGljYWxEUEk7CiB9CiAKIGludCBz
Y3JlZW5EZXB0aChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0
OjpzY3JlZW5EZXB0aCh3aWRnZXQpOworICAgIFBsYXRmb3JtUGFnZUNsaWVudCBjbGllbnQgPSB0
b1BsYXRmb3JtUGFnZUNsaWVudCh3aWRnZXQpOworICAgIGlmICghY2xpZW50KQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gY2xpZW50LT5zY3JlZW5JbmZvKCkuZGVwdGg7CiB9CiAKIGlu
dCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICByZXR1cm4g
UGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCh3aWRnZXQpOworICAgIFBs
YXRmb3JtUGFnZUNsaWVudCBjbGllbnQgPSB0b1BsYXRmb3JtUGFnZUNsaWVudCh3aWRnZXQpOwor
ICAgIGlmICghY2xpZW50KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gY2xpZW50LT5z
Y3JlZW5JbmZvKCkuZGVwdGhQZXJDb21wb25lbnQ7CiB9CiAKIGJvb2wgc2NyZWVuSXNNb25vY2hy
b21lKFdpZGdldCogd2lkZ2V0KQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVl
bklzTW9ub2Nocm9tZSh3aWRnZXQpOworICAgIFBsYXRmb3JtUGFnZUNsaWVudCBjbGllbnQgPSB0
b1BsYXRmb3JtUGFnZUNsaWVudCh3aWRnZXQpOworICAgIGlmICghY2xpZW50KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNsaWVudC0+c2NyZWVuSW5mbygpLmlzTW9ub2Nocm9t
ZTsKIH0KIAogRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0
dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuUmVjdCh3aWRnZXQpOworICAgIFBsYXRmb3JtUGFn
ZUNsaWVudCBjbGllbnQgPSB0b1BsYXRmb3JtUGFnZUNsaWVudCh3aWRnZXQpOworICAgIGlmICgh
Y2xpZW50KQorICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CisgICAgcmV0dXJuIEludFJlY3Qo
Y2xpZW50LT5zY3JlZW5JbmZvKCkucmVjdCk7CiB9CiAKIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFi
bGVSZWN0KFdpZGdldCogd2lkZ2V0KQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OnNj
cmVlbkF2YWlsYWJsZVJlY3Qod2lkZ2V0KTsKKyAgICBQbGF0Zm9ybVBhZ2VDbGllbnQgY2xpZW50
ID0gdG9QbGF0Zm9ybVBhZ2VDbGllbnQod2lkZ2V0KTsKKyAgICBpZiAoIWNsaWVudCkKKyAgICAg
ICAgcmV0dXJuIEZsb2F0UmVjdCgpOworICAgIHJldHVybiBJbnRSZWN0KGNsaWVudC0+c2NyZWVu
SW5mbygpLmF2YWlsYWJsZVJlY3QpOwogfQogCiB2b2lkIHNjcmVlbkNvbG9yUHJvZmlsZShDb2xv
clByb2ZpbGUmIHRvUHJvZmlsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BsYXRmb3JtU3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCShyZXZpc2lvbiAxMzIzODYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAkod29ya2luZyBj
b3B5KQpAQCAtOTgsMTUgKzk4LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHBsdWdpbnMo
Ym9vbCByZWZyZXNoLCBWZWN0b3I8UGx1Z2luSW5mbz4qKTsKICAgICBzdGF0aWMgTlBPYmplY3Qq
IHBsdWdpblNjcmlwdGFibGVPYmplY3QoV2lkZ2V0Kik7CiAKLSAgICAvLyBTY3JlZW4gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
ICAgIHN0YXRpYyBpbnQgc2NyZWVuSG9yaXpvbnRhbERQSShXaWRnZXQqKTsKLSAgICBzdGF0aWMg
aW50IHNjcmVlblZlcnRpY2FsRFBJKFdpZGdldCopOwotICAgIHN0YXRpYyBpbnQgc2NyZWVuRGVw
dGgoV2lkZ2V0Kik7Ci0gICAgc3RhdGljIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudChXaWRn
ZXQqKTsKLSAgICBzdGF0aWMgYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0Kik7Ci0gICAg
c3RhdGljIEludFJlY3Qgc2NyZWVuUmVjdChXaWRnZXQqKTsKLSAgICBzdGF0aWMgSW50UmVjdCBz
Y3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCopOwotCiAgICAgLy8gVGhlbWluZyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICNpZiBP
UyhXSU5ET1dTKQogICAgIHN0YXRpYyB2b2lkIHBhaW50QnV0dG9uKApJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjM4NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMTAtMjQg
IE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1
bV0gUmVtb3ZlIHNjcmVlbi1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIFBsYXRmb3JtU3VwcG9ydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc0NzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFNjcmVlbi1yZWxhdGVk
IGZ1bmN0aW9ucyBsaWtlIHNjcmVlbkhvcml6b250YWxEUEkgdGhhdAorICAgICAgICB1c2VkIHRv
IGJlIG9uIFBsYXRmb3JtU3VwcG9ydCBhcmUgbm93IGFjY2Vzc2VkIHRocm91Z2ggYSBuZXcKKyAg
ICAgICAgUGxhdGZvcm1QYWdlQ2xpZW50IGF0dGFjaGVkIHRvIFdpZGdldCBpbiBXZWJDb3JlLWxh
bmQsIHdoaWNoIGlzCisgICAgICAgIGltcGxlbWVudGVkIGJ5IENocm9tZUNsaWVudEltcGwgaW4g
V2ViS2l0LWxhbmQsIHdoaWNoIHByb3hpZXMKKyAgICAgICAgY2FsbHMgdG8gV2ViV2lkZ2V0Q2xp
ZW50LCB3aGljaCBpcyBhY3R1YWxseSBpbXBsZW1lbnRlZCBpbgorICAgICAgICBDaHJvbWl1bS1s
YW5kLgorCisgICAgICAgICogcHVibGljL1dlYlNjcmVlbkluZm8uaDoKKyAgICAgICAgKiBzcmMv
Q2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6
OnNjcmVlbkluZm8pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xp
ZW50SW1wbC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xp
ZW50SW1wbDo6cGxhdGZvcm1QYWdlQ2xpZW50KToKKyAgICAgICAgKENocm9tZUNsaWVudEltcGwp
OgorICAgICAgICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwOgorCiAyMDEyLTEwLTI0ICBCZW4g
V2FnbmVyICA8YnVuZ2VtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENyZWF0ZSBza2lhX3dl
YmtpdC5neXAgdG8gaW1wcm92ZSByZWJhc2VsaW5pbmcuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oCShyZXZpc2lvbiAxMzIzODYpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDU1ICsyOCw0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2Vi
U2NyZWVuSW5mb19oCi0jZGVmaW5lIFdlYlNjcmVlbkluZm9faAotCi0jaW5jbHVkZSAicGxhdGZv
cm0vV2ViUmVjdC5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYlNjcmVlbklu
Zm8gewotICAgIC8vIFRoZSBob3Jpem9udGFsIHNjcmVlbiBkcGkuCi0gICAgaW50IGhvcml6b250
YWxEUEk7Ci0KLSAgICAvLyBUaGUgdmVydGljYWwgc2NyZWVuIGRwaS4KLSAgICBpbnQgdmVydGlj
YWxEUEk7Ci0KLSAgICAvLyBUaGUgc2NyZWVuIGRlcHRoIGluIGJpdHMgcGVyIHBpeGVsCi0gICAg
aW50IGRlcHRoOwotCi0gICAgLy8gVGhlIGJpdHMgcGVyIGNvbG91ciBjb21wb25lbnQuIFRoaXMg
YXNzdW1lcyB0aGF0IHRoZSBjb2xvdXJzIGFyZSBiYWxhbmNlZAotICAgIC8vIGVxdWFsbHkuCi0g
ICAgaW50IGRlcHRoUGVyQ29tcG9uZW50OwotCi0gICAgLy8gVGhpcyBjYW4gYmUgdHJ1ZSBmb3Ig
YmxhY2sgYW5kIHdoaXRlIHByaW50ZXJzCi0gICAgYm9vbCBpc01vbm9jaHJvbWU7Ci0KLSAgICAv
LyBUaGlzIGlzIHNldCBmcm9tIHRoZSByY01vbml0b3IgbWVtYmVyIG9mIE1PTklUT1JJTkZPRVgs
IHRvIHdoaXQ6Ci0gICAgLy8gICAiQSBSRUNUIHN0cnVjdHVyZSB0aGF0IHNwZWNpZmllcyB0aGUg
ZGlzcGxheSBtb25pdG9yIHJlY3RhbmdsZSwKLSAgICAvLyAgIGV4cHJlc3NlZCBpbiB2aXJ0dWFs
LXNjcmVlbiBjb29yZGluYXRlcy4gTm90ZSB0aGF0IGlmIHRoZSBtb25pdG9yCi0gICAgLy8gICBp
cyBub3QgdGhlIHByaW1hcnkgZGlzcGxheSBtb25pdG9yLCBzb21lIG9mIHRoZSByZWN0YW5nbGUn
cwotICAgIC8vICAgY29vcmRpbmF0ZXMgbWF5IGJlIG5lZ2F0aXZlIHZhbHVlcy4iCi0gICAgV2Vi
UmVjdCByZWN0OwotCi0gICAgLy8gVGhpcyBpcyBzZXQgZnJvbSB0aGUgcmNXb3JrIG1lbWJlciBv
ZiBNT05JVE9SSU5GT0VYLCB0byB3aGl0OgotICAgIC8vICAgIkEgUkVDVCBzdHJ1Y3R1cmUgdGhh
dCBzcGVjaWZpZXMgdGhlIHdvcmsgYXJlYSByZWN0YW5nbGUgb2YgdGhlCi0gICAgLy8gICBkaXNw
bGF5IG1vbml0b3IgdGhhdCBjYW4gYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMsIGV4cHJlc3NlZCBp
bgotICAgIC8vICAgdmlydHVhbC1zY3JlZW4gY29vcmRpbmF0ZXMuIFdpbmRvd3MgdXNlcyB0aGlz
IHJlY3RhbmdsZSB0bwotICAgIC8vICAgbWF4aW1pemUgYW4gYXBwbGljYXRpb24gb24gdGhlIG1v
bml0b3IuIFRoZSByZXN0IG9mIHRoZSBhcmVhIGluCi0gICAgLy8gICByY01vbml0b3IgY29udGFp
bnMgc3lzdGVtIHdpbmRvd3Mgc3VjaCBhcyB0aGUgdGFzayBiYXIgYW5kIHNpZGUKLSAgICAvLyAg
IGJhcnMuIE5vdGUgdGhhdCBpZiB0aGUgbW9uaXRvciBpcyBub3QgdGhlIHByaW1hcnkgZGlzcGxh
eSBtb25pdG9yLAotICAgIC8vICAgc29tZSBvZiB0aGUgcmVjdGFuZ2xlJ3MgY29vcmRpbmF0ZXMg
bWF5IGJlIG5lZ2F0aXZlIHZhbHVlcyIuCi0gICAgV2ViUmVjdCBhdmFpbGFibGVSZWN0OwotCi0g
ICAgV2ViU2NyZWVuSW5mbygpCi0gICAgICAgIDogaG9yaXpvbnRhbERQSSgwKQotICAgICAgICAs
IHZlcnRpY2FsRFBJKDApCi0gICAgICAgICwgZGVwdGgoMCkKLSAgICAgICAgLCBkZXB0aFBlckNv
bXBvbmVudCgwKQotICAgICAgICAsIGlzTW9ub2Nocm9tZShmYWxzZSkgeyB9Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCisjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYlNjcmVlbkluZm8uaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxMzIzODYpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTAzLDYgKzkwMywxMSBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OnBvc3RB
Y2Nlc3NpYmlsaXR5CiAgICAgICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPnBvc3RBY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9uKFdlYkFjY2Vzc2liaWxpdHlPYmplY3Qob2JqKSwgdG9XZWJBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbikpOwogfQogCitXZWJLaXQ6OldlYlNjcmVl
bkluZm8gQ2hyb21lQ2xpZW50SW1wbDo6c2NyZWVuSW5mbygpCit7CisgICAgcmV0dXJuIG1fd2Vi
Vmlldy0+Y2xpZW50KCktPnNjcmVlbkluZm8oKTsKK30KKwogYm9vbCBDaHJvbWVDbGllbnRJbXBs
OjpwYWludEN1c3RvbU92ZXJoYW5nQXJlYShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2Fs
T3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7CiAgICAgRnJhbWUqIGZy
YW1lID0gbV93ZWJWaWV3LT5tYWluRnJhbWVJbXBsKCktPmZyYW1lKCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxMzIz
ODYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYwLDEwICs2MCwxMSBAQCBjbGFzcyBXZWJDb2xvckNob29zZXI7CiBj
bGFzcyBXZWJDb2xvckNob29zZXJDbGllbnQ7CiBjbGFzcyBXZWJWaWV3SW1wbDsKIHN0cnVjdCBX
ZWJDdXJzb3JJbmZvOworc3RydWN0IFdlYlNjcmVlbkluZm87CiBzdHJ1Y3QgV2ViUG9wdXBNZW51
SW5mbzsKIAogLy8gSGFuZGxlcyB3aW5kb3ctbGV2ZWwgbm90aWZpY2F0aW9ucyBmcm9tIFdlYkNv
cmUgb24gYmVoYWxmIG9mIGEgV2ViVmlldy4KLWNsYXNzIENocm9tZUNsaWVudEltcGwgOiBwdWJs
aWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50Q2hyb21pdW0geworY2xhc3MgQ2hyb21lQ2xpZW50SW1w
bCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnRDaHJvbWl1bSwgcHVibGljIFdlYkNvcmU6
OlBhZ2VDbGllbnRDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ2hyb21lQ2xpZW50
SW1wbChXZWJWaWV3SW1wbCogd2ViVmlldyk7CiAgICAgdmlydHVhbCB+Q2hyb21lQ2xpZW50SW1w
bCgpOwpAQCAtMTIzLDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgY2xpcFJlY3QpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVu
VG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0OwogICAgIHZpcnR1YWwg
V2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSBjb25zdDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGll
bnQoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQg
cGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gUGxhdGZvcm1QYWdlQ2xpZW50KHRo
aXMpOyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoV2ViQ29yZTo6RnJh
bWUqLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGxh
eW91dFVwZGF0ZWQoV2ViQ29yZTo6RnJhbWUqKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsUmVjdEludG9WaWV3KApAQCAtMTk0LDYgKzE5NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVy
KTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdCosIFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OkFYTm90aWZp
Y2F0aW9uKTsKIAorICAgIC8vIFBhZ2VDbGllbnRDaHJvbWl1bSBtZXRob2RzOgorICAgIHZpcnR1
YWwgV2ViU2NyZWVuSW5mbyBzY3JlZW5JbmZvKCk7CisKICAgICAvLyBDaHJvbWVDbGllbnRJbXBs
OgogICAgIHZvaWQgc2V0Q3Vyc29yRm9yUGx1Z2luKGNvbnN0IFdlYkN1cnNvckluZm8mKTsKICAg
ICB2b2lkIHNldE5ld1dpbmRvd05hdmlnYXRpb25Qb2xpY3koV2ViTmF2aWdhdGlvblBvbGljeSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5j
cHAJKHJldmlzaW9uIDEzMjM4NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRm
b3JtU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCwzMCArMTAwLDYgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgV2ViV2lk
Z2V0Q2xpZW50KiB0b1dlYldpZGdldENsaWVudChXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBpZiAo
IXdpZGdldCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBGcmFtZVZpZXcqIHZpZXc7Ci0gICAg
aWYgKHdpZGdldC0+aXNGcmFtZVZpZXcoKSkKLSAgICAgICAgdmlldyA9IHN0YXRpY19jYXN0PEZy
YW1lVmlldyo+KHdpZGdldCk7Ci0gICAgZWxzZSBpZiAod2lkZ2V0LT5wYXJlbnQoKSAmJiB3aWRn
ZXQtPnBhcmVudCgpLT5pc0ZyYW1lVmlldygpKQotICAgICAgICB2aWV3ID0gc3RhdGljX2Nhc3Q8
RnJhbWVWaWV3Kj4od2lkZ2V0LT5wYXJlbnQoKSk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIFBhZ2UqIHBhZ2UgPSB2aWV3LT5mcmFtZSgpID8gdmlldy0+ZnJhbWUoKS0+cGFn
ZSgpIDogMDsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgdm9pZCog
d2ViVmlldyA9IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+d2ViVmlldygpOwotICAgIGlmICgh
d2ViVmlldykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vi
Vmlld0ltcGwqPih3ZWJWaWV3KS0+Y2xpZW50KCk7Ci19Ci0KIHN0YXRpYyBXZWJDb29raWVKYXIq
IGdldENvb2tpZUphcihjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgV2ViRnJhbWVJ
bXBsKiBmcmFtZUltcGwgPSBXZWJGcmFtZUltcGw6OmZyb21GcmFtZShkb2N1bWVudC0+ZnJhbWUo
KSk7CkBAIC0zMzAsNjIgKzMwNiw2IEBAIHZvaWQgUGxhdGZvcm1TdXBwb3J0OjpwYWludFByb2dy
ZXNzQmFyKAogLy8gR2x1ZSBsYXllci4gT25jZSB0aGUgR2x1ZSBsYXllciBtb3ZlcyBlbnRpcmVs
eSBpbnRvIHRoZSBXZWJLaXQgbGF5ZXIsIHRoZXNlCiAvLyBtZXRob2RzIHdpbGwgYmUgZGVsZXRl
ZC4KIAotaW50IFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuSG9yaXpvbnRhbERQSShXaWRnZXQqIHdp
ZGdldCkKLXsKLSAgICBXZWJXaWRnZXRDbGllbnQqIGNsaWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50
KHdpZGdldCk7Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVy
biBjbGllbnQtPnNjcmVlbkluZm8oKS5ob3Jpem9udGFsRFBJOwotfQotCi1pbnQgUGxhdGZvcm1T
dXBwb3J0OjpzY3JlZW5WZXJ0aWNhbERQSShXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBXZWJXaWRn
ZXRDbGllbnQqIGNsaWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7Ci0gICAgaWYgKCFj
bGllbnQpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8o
KS52ZXJ0aWNhbERQSTsKLX0KLQotaW50IFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuRGVwdGgoV2lk
Z2V0KiB3aWRnZXQpCi17Ci0gICAgV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdl
dENsaWVudCh3aWRnZXQpOwotICAgIGlmICghY2xpZW50KQotICAgICAgICByZXR1cm4gMDsKLSAg
ICByZXR1cm4gY2xpZW50LT5zY3JlZW5JbmZvKCkuZGVwdGg7Ci19Ci0KLWludCBQbGF0Zm9ybVN1
cHBvcnQ6OnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCogd2lkZ2V0KQotewotICAgIFdl
YldpZGdldENsaWVudCogY2xpZW50ID0gdG9XZWJXaWRnZXRDbGllbnQod2lkZ2V0KTsKLSAgICBp
ZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGNsaWVudC0+c2NyZWVu
SW5mbygpLmRlcHRoUGVyQ29tcG9uZW50OwotfQotCi1ib29sIFBsYXRmb3JtU3VwcG9ydDo6c2Ny
ZWVuSXNNb25vY2hyb21lKFdpZGdldCogd2lkZ2V0KQotewotICAgIFdlYldpZGdldENsaWVudCog
Y2xpZW50ID0gdG9XZWJXaWRnZXRDbGllbnQod2lkZ2V0KTsKLSAgICBpZiAoIWNsaWVudCkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGNsaWVudC0+c2NyZWVuSW5mbygpLmlzTW9ub2No
cm9tZTsKLX0KLQotSW50UmVjdCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlblJlY3QoV2lkZ2V0KiB3
aWRnZXQpCi17Ci0gICAgV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVu
dCh3aWRnZXQpOwotICAgIGlmICghY2xpZW50KQotICAgICAgICByZXR1cm4gSW50UmVjdCgpOwot
ICAgIHJldHVybiBjbGllbnQtPnNjcmVlbkluZm8oKS5yZWN0OwotfQotCi1JbnRSZWN0IFBsYXRm
b3JtU3VwcG9ydDo6c2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBX
ZWJXaWRnZXRDbGllbnQqIGNsaWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7Ci0gICAg
aWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVybiBJbnRSZWN0KCk7Ci0gICAgcmV0dXJuIGNsaWVu
dC0+c2NyZWVuSW5mbygpLmF2YWlsYWJsZVJlY3Q7Ci19Ci0KICNpZiBFTkFCTEUoV09SS0VSUykK
IFdvcmtlckNvbnRleHRQcm94eSogV29ya2VyQ29udGV4dFByb3h5OjpjcmVhdGUoV29ya2VyKiB3
b3JrZXIpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJ
bXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdl
UG9wdXBJbXBsLmNwcAkocmV2aXNpb24gMTMyMzg2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcg
QEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnRDb252ZXJz
aW9uLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBvcHVwLmgiCisjaW5jbHVkZSAiV2ViVmlld0NsaWVu
dC5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5jbHVkZSAiV2ViV2lkZ2V0Q2xpZW50
LmgiCiAKQEAgLTU0LDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKICNpZiBFTkFCTEUo
UEFHRV9QT1BVUCkKIAotY2xhc3MgUGFnZVBvcHVwQ2hyb21lQ2xpZW50IDogcHVibGljIEVtcHR5
Q2hyb21lQ2xpZW50IHsKK2NsYXNzIFBhZ2VQb3B1cENocm9tZUNsaWVudCA6IHB1YmxpYyBFbXB0
eUNocm9tZUNsaWVudCwgcHVibGljIFdlYkNvcmU6OlBhZ2VDbGllbnRDaHJvbWl1bSB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZVBvcHVwQ2hyb21lQ2xpZW50KTsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIApAQCAtMTI0LDYgKzEyNSwxNyBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gRmxvYXRTaXplKDAsIDApOwogICAgIH0KIAorICAgIHZpcnR1YWwgUGxhdGZvcm1Q
YWdlQ2xpZW50IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0IE9WRVJSSURFCisgICAgeworICAg
ICAgICByZXR1cm4gUGxhdGZvcm1QYWdlQ2xpZW50KHRoaXMpOworICAgIH0KKworICAgIC8vIFBh
Z2VDbGllbnRDaHJvbWl1bSBtZXRob2RzOgorICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTY3JlZW5J
bmZvIHNjcmVlbkluZm8oKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcG9wdXAt
Pm1fd2ViVmlldy0+Y2xpZW50KCktPnNjcmVlbkluZm8oKTsKKyAgICB9CisKICAgICBXZWJQYWdl
UG9wdXBJbXBsKiBtX3BvcHVwOwogfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>