<?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>53707</bug_id>
          
          <creation_ts>2011-02-03 12:46:02 -0800</creation_ts>
          <short_desc>Viewport Warning/Error Messages Are Now Inaccurate</short_desc>
          <delta_ts>2011-03-07 12:54:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>53705</dependson>
    
    <dependson>54926</dependson>
    
    <dependson>55544</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>kbalazs</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>ossy</cc>
    
    <cc>priyajeet.hora</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>344932</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-03 12:46:02 -0800</bug_when>
    <thetext>The changes to the ViewportArguments implementation did not update the error messages
accordingly, so they either no longer make sense or are inaccurate.

The new implementation landed in r67376:
http://trac.webkit.org/changeset/67376

It follows the &quot;css-viewport&quot; spec:
http://people.opera.com/rune/TR/css-viewport/#parsing-algorithm

Example situations:

1. &lt;meta name=&quot;viewport&quot; content=&quot;width=nothing&quot;&gt;

  Actual Result   =&gt; Viewport argument &quot;width&quot; not recognized. Content ignored.
  Expected Result =&gt; Viewport argument value for &quot;width&quot; not recognized. Value ignored.

2. &lt;meta name=&quot;viewport&quot; content=&quot;width=1.0x&quot;&gt;

  Actual Result   =&gt; Viewport argument &quot;width&quot; not recognized. Content ignored.
  Expected Result =&gt; Viewport argument value for &quot;width&quot; was truncated from &quot;1.0x&quot; to &quot;1.0&quot;.

3. &lt;meta name=&quot;viewport&quot; content=&quot;width=101&quot;&gt;
   NOTE: With a device width that is NOT 101.
   NOTE: The same applies for height.

  Actual Result   =&gt; Viewport width or height set to physical device width, try using &quot;device-width&quot; constant instead for future compatibility.
  Expected Result =&gt; No warning, or a suggestion to use appropriate constants.
                  =&gt; The &quot;device-width&quot; / &quot;device-height&quot; message should only happen when the constant is equal to the device width/height.

4. Inconsistent spacing in Error messages:

  Two spaces after period =&gt; &quot;Viewport argument \&quot;%replacement\&quot; not recognized. Content ignored.&quot;
  One space  after period =&gt; &quot;Viewport maximum-scale cannot be larger than 10.0.  The maximum-scale will be set to 10.0.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352541</commentid>
    <comment_count>1</comment_count>
      <attachid>82739</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-16 19:34:10 -0800</bug_when>
    <thetext>Created attachment 82739
[PATCH] Patch and Tests for Error messages

I don&apos;t have the ability to run tests on any of the ports that actually run
fast/viewport tests. Also, there might be something I specifically need
to do in order to enable CONSOLE output in these tests. But the tests
are as follows:

  1: &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1, maximum-scale=2&quot;&gt;
      no warnings. Works as expected.

  2: &lt;meta name=&quot;viewport&quot; content=&quot;wwidth=100&quot;&gt;
      ERROR: Viewport argument key &quot;wwidth&quot; not recognized and ignored.

  3: &lt;meta name=&quot;viewport&quot; content=&quot;width=unrecognized-width&quot;&gt;
      ERROR: Viewport argument value &quot;unrecognized-width&quot; for key &quot;width&quot; not recognized. Content ignored.

  4. &lt;meta name=&quot;viewport&quot; content=&quot;width=123x456&quot;&gt;
      TIP: Viewport argument value &quot;123x456&quot; for key &quot;width&quot; was truncated to its numeric prefix.

  5. &lt;meta name=&quot;viewport&quot; content=&quot;width=320, height=352&quot;&gt;
      TIP: Viewport width or height set to physical device width, try using &quot;device-width&quot; constant instead for future compatibility.
      TIP: Viewport height or height set to physical device height, try using &quot;device-height&quot; constant instead for future compatibility.

  6. &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;&quot;&gt;
      ERROR: Viewport argument value &quot;device-width;&quot; for key &quot;width&quot; not recognized. Content ignored.
      TIP: Viewport argument value &quot;1.0;&quot; for key &quot;initial-scale&quot; was truncated to its numeric prefix.
      TIP: Viewport argument value &quot;1.0;&quot; for key &quot;maximum-scale&quot; was truncated to its numeric prefix.
      TIP: Viewport argument value &quot;0;&quot; for key &quot;user-scalable&quot; was truncated to its numeric prefix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352655</commentid>
    <comment_count>2</comment_count>
      <attachid>82739</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-02-17 00:54:42 -0800</bug_when>
    <thetext>Comment on attachment 82739
[PATCH] Patch and Tests for Error messages

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

&gt; LayoutTests/ChangeLog:8
&gt; +        Added tests specifically to test Console warnings.

Great stuff!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353006</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-17 10:29:30 -0800</bug_when>
    <thetext>To land, this requires changes from a patch on:
&lt;http://webkit.org/b/53705&gt; Viewport parsing no longer accepts &quot;1.0;&quot; value as valid.

Also, I want to verify that I don&apos;t have to do anything special for these
tests to output console messages. It would be useless if these tests
didn&apos;t print the console warnings in the dump render tree results!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354871</commentid>
    <comment_count>4</comment_count>
      <attachid>83231</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-21 15:58:10 -0800</bug_when>
    <thetext>Created attachment 83231
[PATCH] One more test for a missing value.

Kenneth, is it okay if I add one more test to the mix, for a missing value?
This is a patch showing the change to the diff (the extra test).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354885</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-21 16:14:50 -0800</bug_when>
    <thetext>The test I&apos;m proposing is:

  7. &lt;meta name=&quot;viewport&quot; content=&quot;width=&quot;&gt;
      ERROR: Viewport argument value &quot;&quot; for key &quot;width&quot; not recognized. Content ignored.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354902</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-21 16:31:54 -0800</bug_when>
    <thetext>Arg, the expected results for all of these tests are going to be blank.
That is because CONSOLE MESSAGES only make it to the DumpRenderTree
delegate if they are JSMessageSource messages and these messages
are HTMLMessageSource, because they come from parsing the HTML.

    if (source == JSMessageSource)
        page-&gt;chrome()-&gt;client()-&gt;addMessageToConsole(source, type, level, message, lineNumber, sourceURL);

I think its still worth keeping the tests. But it will be weird checking in
blank expected results. I can add private delegates, but that seems
like a lot of code that isn&apos;t used by anyone. I could also make these
manual tests. Any preferences?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354988</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-21 19:30:18 -0800</bug_when>
    <thetext>I just opened:
&lt;http://webkit.org/b/54926&gt; All Console Messages should be passed to ChromeClients.

I&apos;ll block on that, as these tests are useless without warnings in the expected results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355082</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-02-21 23:13:03 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=83231) [details]
&gt; [PATCH] One more test for a missing value.
&gt; 
&gt; Kenneth, is it okay if I add one more test to the mix, for a missing value?
&gt; This is a patch showing the change to the diff (the extra test).

Sure, please go ahead!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355083</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-02-21 23:13:53 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; I just opened:
&gt; &lt;http://webkit.org/b/54926&gt; All Console Messages should be passed to ChromeClients.
&gt; 
&gt; I&apos;ll block on that, as these tests are useless without warnings in the expected results.

I think this would be the right thing to do</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360401</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-01 17:01:12 -0800</bug_when>
    <thetext>Landed in r80068:
http://trac.webkit.org/changeset/80068

Watching the bots for expected results for viewport tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360431</commentid>
    <comment_count>11</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-01 17:31:00 -0800</bug_when>
    <thetext>Build fix for Qt in:
http://trac.webkit.org/changeset/80073</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360444</commentid>
    <comment_count>12</comment_count>
      <attachid>84338</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-01 17:54:40 -0800</bug_when>
    <thetext>Created attachment 84338
[FIX] Poor Build Fix solution for Qt WebKit2

Not up for review, since it was recommended I rollout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360455</commentid>
    <comment_count>13</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-01 18:07:24 -0800</bug_when>
    <thetext>Rolled out r80068 and r80073 in r80077:
http://trac.webkit.org/changeset/80077

The fast/viewport tests will be reporting a lot of incorrect failures until
this is fixed. Any recommendations on WebKit2 Qt developers would
be appreciated. The [FIX] attachment I have above is a poor approach.
Maybe we should drop these tips altogether, the Document is only
used for tipping users about the &quot;device-width&quot; and &quot;device-height&quot;
constants. Removing these tips would simplify the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360457</commentid>
    <comment_count>14</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-01 18:08:12 -0800</bug_when>
    <thetext>CC&apos;ing some Qt developers to see if they have a suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360625</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-03-01 23:43:11 -0800</bug_when>
    <thetext>Balazs, could you help fixing Qt-WK2 build?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360717</commentid>
    <comment_count>16</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-03-02 04:11:38 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Rolled out r80068 and r80073 in r80077:
&gt; http://trac.webkit.org/changeset/80077
&gt; 
&gt; The fast/viewport tests will be reporting a lot of incorrect failures until
&gt; this is fixed. Any recommendations on WebKit2 Qt developers would
&gt; be appreciated. The [FIX] attachment I have above is a poor approach.
&gt; Maybe we should drop these tips altogether, the Document is only
&gt; used for tipping users about the &quot;device-width&quot; and &quot;device-height&quot;
&gt; constants. Removing these tips would simplify the patch.

Currently there is no public qt-wk2 bot so I think the patch with the build
fix is good as it is if it not breaks tests with wk1.
We should find an way to fix this for wk2 or remove the tips as you suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360725</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-02 04:42:10 -0800</bug_when>
    <thetext>Also see http://trac.webkit.org/changeset/80107 and http://trac.webkit.org/changeset/80114.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360844</commentid>
    <comment_count>18</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-03-02 09:25:38 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; The fast/viewport tests will be reporting a lot of incorrect failures until
&gt; this is fixed. Any recommendations on WebKit2 Qt developers would
&gt; be appreciated. The [FIX] attachment I have above is a poor approach.
&gt; Maybe we should drop these tips altogether, the Document is only
&gt; used for tipping users about the &quot;device-width&quot; and &quot;device-height&quot;
&gt; constants. Removing these tips would simplify the patch.

Another approach would be to turn off tips by default, but provide a way to enable them for individual tests so that we can still test them!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360999</commentid>
    <comment_count>19</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-02 12:54:22 -0800</bug_when>
    <thetext>Before I was just trying to match old behavior, but now that I am forced to
look deeper at this I think we can make things a little saner.

These tips are unique in that they need to know the deviceWidth and deviceHeight
known above WebCore by the WebKit clients. They also need a console to add the
tip too inside WebCore, but that is a more minor detail.

Currently the deviceWidth and deviceHeight are not known at parsing time,
but are known when computeViewportAttributes is called. In Qt by accessing
environmental variables like getintenv(&quot;QTWEBKIT_DEVICE_WIDTH&quot;), and in
GTK by the width/height of the window rect accessed via
windowRect(webView-&gt;priv-&gt;corePage-&gt;chrome()-&gt;windowRect()).

I think the ideal solution is to have the deviceWidth and deviceHeight at the
time that we parse the viewport arguments. I suggest adding an accessor
on ChromeClient along the lines of:

  ChromeClient.h:
  virtual FloatRect viewportDeviceRect() = 0;

The advantages of this approach are that:

  • the tips are created at parse time, like all other viewport warnings/tips/errors
    so we are safe to report viewport warnings to the console like normal.
  • we eliminate the possibility that the warning could be printed multiple times
    because there is nothing that prevents computeViewportAttributes from be
    called/calculated multiple times.


While I&apos;m at it, if we still want to keep this tip, I see there is a new keyword for
&quot;desktop-width&quot;. While I haven&apos;t investigated this yet, we could also add an
accessor and a tip for this as well:

  ChromeClient.h:
  virtual float viewportDesktopWidth() = 0;

  New Tip when width constant matches viewportDesktopWidth():
  TIP: Viewport width constant matches desktop width, try using the &quot;desktop-width&quot; constant instead for future compatibility.


Finally, is the following really something we want to encourage?

  &lt;meta name=&quot;viewport&quot; content=&quot;width:device-height&quot;&gt;

I was just thinking about matching old behavior, but I think we should only
tip about &quot;device-width&quot; for width, and &quot;device-height&quot; for height.

Do these suggestions sound good to you? I&apos;ll start a patch for the above, but
as you&apos;ve seen I&apos;m not the best with other ports =).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361018</commentid>
    <comment_count>20</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-03-02 13:06:11 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; Before I was just trying to match old behavior, but now that I am forced to
&gt; look deeper at this I think we can make things a little saner.
&gt; 
&gt; These tips are unique in that they need to know the deviceWidth and deviceHeight
&gt; known above WebCore by the WebKit clients. They also need a console to add the
&gt; tip too inside WebCore, but that is a more minor detail.
&gt; 
&gt; Currently the deviceWidth and deviceHeight are not known at parsing time,
&gt; but are known when computeViewportAttributes is called. In Qt by accessing
&gt; environmental variables like getintenv(&quot;QTWEBKIT_DEVICE_WIDTH&quot;), and in
&gt; GTK by the width/height of the window rect accessed via
&gt; windowRect(webView-&gt;priv-&gt;corePage-&gt;chrome()-&gt;windowRect()).

These are hardcoded in our webkit2 port though.

&gt; I think the ideal solution is to have the deviceWidth and deviceHeight at the
&gt; time that we parse the viewport arguments. I suggest adding an accessor
&gt; on ChromeClient along the lines of:
&gt; 
&gt;   ChromeClient.h:
&gt;   virtual FloatRect viewportDeviceRect() = 0;

Any reason why not just to use a FloatSize?

virtual FloatSize viewportDeviceSize() const = 0; (we want these to be const as well)

Also keep in mind that we are doing a DPI adjustment (with my device currently 1.5, but I guess iPhone 4 uses 2.0 due to the retina display). You will want an accessor for that as well

virtual float viewportDevicePixelRatio() const = 0.

The above is not the best solution, as we currently have one with similar name, which is used to tell the web content what dpi adjustment factor was used (@media all and (-webkit-pixel-ratio))

So it will be better with one like

virtual int viewportDeviceDPI() = 0;

&gt; 
&gt; The advantages of this approach are that:
&gt; 
&gt;   • the tips are created at parse time, like all other viewport warnings/tips/errors
&gt;     so we are safe to report viewport warnings to the console like normal.
&gt;   • we eliminate the possibility that the warning could be printed multiple times
&gt;     because there is nothing that prevents computeViewportAttributes from be
&gt;     called/calculated multiple times.
&gt; 
&gt; 
&gt; While I&apos;m at it, if we still want to keep this tip, I see there is a new keyword for
&gt; &quot;desktop-width&quot;. While I haven&apos;t investigated this yet, we could also add an
&gt; accessor and a tip for this as well:

The desktop-width is what is used for laying out desktop pages (pages with no viewport).

The iPhone uses 980, IE on Windows Phone 7 uses 1024, and Android had 3 values to choose from (I believe the former plus 800 which I believe is default)

&gt; 
&gt;   ChromeClient.h:
&gt;   virtual float viewportDesktopWidth() = 0;
&gt; 
&gt;   New Tip when width constant matches viewportDesktopWidth():
&gt;   TIP: Viewport width constant matches desktop width, try using the &quot;desktop-width&quot; constant instead for future compatibility.
&gt; 
&gt; 
&gt; Finally, is the following really something we want to encourage?
&gt; 
&gt;   &lt;meta name=&quot;viewport&quot; content=&quot;width:device-height&quot;&gt;

Nope because that is not a valid viewport meta tag :-) I guess you want a = instead of :

Anyway, I&apos;m not sure and it is currently supported, so why not?

&gt; I was just thinking about matching old behavior, but I think we should only
&gt; tip about &quot;device-width&quot; for width, and &quot;device-height&quot; for height.

I do not feel strong about this.

&gt; Do these suggestions sound good to you? I&apos;ll start a patch for the above, but
&gt; as you&apos;ve seen I&apos;m not the best with other ports =).

I think it sounds fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361035</commentid>
    <comment_count>21</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-03-02 13:28:41 -0800</bug_when>
    <thetext>I still would like it possible to make the layout tests use different device-width and -height for testing the actual algorithm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361039</commentid>
    <comment_count>22</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-02 13:37:47 -0800</bug_when>
    <thetext>&gt; Any reason why not just to use a FloatSize?
&gt; 
&gt; virtual FloatSize viewportDeviceSize() const = 0; (we want these to be const as well)

Yes, that makes more sense and is what I intended.


&gt; &gt; Finally, is the following really something we want to encourage?
&gt; &gt; 
&gt; &gt;   &lt;meta name=&quot;viewport&quot; content=&quot;width:device-height&quot;&gt;
&gt; 
&gt; Nope because that is not a valid viewport meta tag :-) I guess you want a = instead of :

Whoops, too much JavaScript lately. You&apos;re correct.

&gt; Anyway, I&apos;m not sure and it is currently supported, so why not?

It is supported, and should continue to be supported, but I&apos;m not convinced
that it should be encouraged with a console tip. If someone writes width=&quot;480&quot;
should we really say, try using &quot;device-height&quot; instead? I don&apos;t think so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361042</commentid>
    <comment_count>23</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-02 13:38:48 -0800</bug_when>
    <thetext>again with the incorrect syntax... I meant &quot;width=480&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361385</commentid>
    <comment_count>24</comment_count>
      <attachid>84525</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-02 23:32:28 -0800</bug_when>
    <thetext>Created attachment 84525
[PATCH] For Try Bots

I didn&apos;t actually get much time to work on this today. This doesn&apos;t
handle WebKit2, it just has the default FloatSize() of 0x0. Lets see
how the bots do on this.

I noticed everyone seems to use IntSizes despite device-width and
height possibly being float values. I don&apos;t know why that is, but
I stuck with FloatSize for the time being and just casted appropriately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361389</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-02 23:35:55 -0800</bug_when>
    <thetext>Attachment 84525 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp:77:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.cpp:532:  device_width is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.cpp:533:  device_height is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 3 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361410</commentid>
    <comment_count>26</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-03 00:26:15 -0800</bug_when>
    <thetext>Attachment 84525 did not build on qt:
Build output: http://queues.webkit.org/results/8078538</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361468</commentid>
    <comment_count>27</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-03-03 02:34:49 -0800</bug_when>
    <thetext>Attachment 84525 did not build on gtk:
Build output: http://queues.webkit.org/results/8078579</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361476</commentid>
    <comment_count>28</comment_count>
      <attachid>84525</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-03-03 02:54:45 -0800</bug_when>
    <thetext>Comment on attachment 84525
[PATCH] For Try Bots

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

&gt; Source/WebCore/dom/ViewportArguments.cpp:226
&gt; +        FloatSize deviceSize = page-&gt;chrome()-&gt;client()-&gt;viewportDeviceSize();

In reality with our dpi adjustment, this should be something like FloatSize deviceSize = page-&gt;chrome()-&gt;client()-&gt;viewportDeviceSize() / pixelRatio;

For instance on the iPhone 4, if im not wrong, device-width will report 320, there in reality it is 640. ie, 640 / 2.0 = 320.

The Android extensions makes it possible to avoid this upscaling of the contents, by setting target-densitydpi = device-dpi, so we need to make sure that is parsed at this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361750</commentid>
    <comment_count>29</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-03 11:06:07 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; For instance on the iPhone 4, if im not wrong, device-width will
&gt; report 320, there in reality it is 640. ie, 640 / 2.0 = 320.
&gt; 
&gt; The Android extensions makes it possible to avoid this upscaling of the
&gt; contents, by setting target-densitydpi = device-dpi, so we need to make
&gt; sure that is parsed at this time.

That is an interesting point. So, given that, we would need to wait until
both the target-densitydpi and width are parsed, so essentially after
the entire meta tag parsing? Is that really necessary.

  &lt;meta name=&quot;viewport&quot; content=&quot;width=320, target-densitydpi=2.0&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;target-densitydpi=2.0, width=320&quot;&gt;

With target-densitydpi does the &quot;device-width&quot; constant ever change,
or does it just change its effective value?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361758</commentid>
    <comment_count>30</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-03 11:12:38 -0800</bug_when>
    <thetext>style:
&gt; Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp:77:  Alphabetical sorting problem.
&gt; Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.cpp:532:  device_width is incorrectly named. Don&apos;t use underscores in your identifier names.
&gt; Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.cpp:533:  device_height is incorrectly named. Don&apos;t use underscores in your identifier names.

Fixed. Updated the older efl style.

qt:
&gt; Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp: In function ‘QSize WebCore::queryDeviceSizeForScreenContainingWidget(const QWidget*)’:
&gt; Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp:724: error: incomplete type ‘QApplication’ used in nested name specifier
&gt; Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp: In member function ‘virtual WebCore::FloatSize WebCore::ChromeClientQt::viewportDeviceSize() const’:
&gt; Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp:759: error: ‘d’ was not declared in this scope

Fixed. Included qapplication and d is m_webPage-&gt;d.

efl:
&gt; fatal: Unable to create &apos;/mnt/eflews/git/webkit/.git/index.lock&apos;: File exists.

git issue.

gtk:

&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h:114: error: &apos;FloatSize&apos; does not name a type
&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:654: error: no &apos;WebCore::FloatSize WebKit::ChromeClient::viewportDeviceSize() const&apos; member function declared in class &apos;WebKit::ChromeClient&apos;

Fixed. Forgot namespace, so WebCore::FloatSize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361760</commentid>
    <comment_count>31</comment_count>
      <attachid>84592</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-03 11:14:01 -0800</bug_when>
    <thetext>Created attachment 84592
[PATCH] Try For Bots

Take 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361779</commentid>
    <comment_count>32</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-03-03 11:23:07 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; For instance on the iPhone 4, if im not wrong, device-width will
&gt; &gt; report 320, there in reality it is 640. ie, 640 / 2.0 = 320.
&gt; &gt; 
&gt; &gt; The Android extensions makes it possible to avoid this upscaling of the
&gt; &gt; contents, by setting target-densitydpi = device-dpi, so we need to make
&gt; &gt; sure that is parsed at this time.
&gt; 
&gt; That is an interesting point. So, given that, we would need to wait until
&gt; both the target-densitydpi and width are parsed, so essentially after
&gt; the entire meta tag parsing? Is that really necessary.
&gt; 
&gt;   &lt;meta name=&quot;viewport&quot; content=&quot;width=320, target-densitydpi=2.0&quot;&gt;
&gt;   &lt;meta name=&quot;viewport&quot; content=&quot;target-densitydpi=2.0, width=320&quot;&gt;
&gt; 
&gt; With target-densitydpi does the &quot;device-width&quot; constant ever change,
&gt; or does it just change its effective value?

In the above case it is not necessary as you are using fixed values. But in the case of using device-width is it.

&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, target-densitydpi=160&quot;&gt;

on a 480 wide device substitutes device-width with 320, due to the higher dpi of 240, where as 

&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, target-densitydpi=240&quot;&gt;

substitutes device-width with 480.

The target-densitydpi only affects device-width and device-height substitution as well as sets the pixelRatio (target-densitydpi / 160; default is 160).

Google calls a pixel at 160 DPI a density independent pixel. The fact is that the original iPhone has a DPI of 160 which resulted in everyone adapting their web pages and web apps to that. On a phone with a higher DPI such as 240 the buttons etc become too small, so they are scaled up. Even the iPhone 4 scaled everything up with 2.0 when there is a viewport meta tag present.

With the target-densitydpi features, it is possible to actually take advantage of the increased DPI by for instance disabling the upscaling and using different CSS using media queries such as @media all and (-webkit-pixel-ratio... ) { }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361799</commentid>
    <comment_count>33</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-03 11:44:57 -0800</bug_when>
    <thetext>&gt; In the above case it is not necessary as you are using fixed values.
&gt; But in the case of using device-width is it.

If the user is already using the &quot;device-width&quot; keyword, we don&apos;t need
to provide a tip that they are using the keyword. The code change I&apos;m
adding would never be reached in that case, only when there is a
numeric constant.


&gt; &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, target-densitydpi=160&quot;&gt;
&gt; 
&gt; on a 480 wide device substitutes device-width with 320, due to the higher dpi of 240, where as 
&gt;
&gt; &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, target-densitydpi=240&quot;&gt;
&gt; 
&gt; substitutes device-width with 480.

Your descriptions sound backwards to the meta tags. Are they?

I see what you&apos;re saying, but in that case my question above still applies.
I&apos;ll rephrase it below with your examples (assuming they were backwards)
with the description.

On a 480px wide device, are you suggesting that both of following should
print a tip that the width constant could be device-width?

  &lt;meta name=&quot;viewport&quot; content=&quot;width=480, target-densitydpi=160&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=320, target-densitydpi=240&quot;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361881</commentid>
    <comment_count>34</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-03-03 13:12:31 -0800</bug_when>
    <thetext>Attachment 84592 did not build on gtk:
Build output: http://queues.webkit.org/results/8085334</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361903</commentid>
    <comment_count>35</comment_count>
      <attachid>84617</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-03 13:47:21 -0800</bug_when>
    <thetext>Created attachment 84617
[PATCH] For Try Bots

Take 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361942</commentid>
    <comment_count>36</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-03-03 14:27:29 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; &gt; In the above case it is not necessary as you are using fixed values.
&gt; &gt; But in the case of using device-width is it.
&gt; 
&gt; If the user is already using the &quot;device-width&quot; keyword, we don&apos;t need
&gt; to provide a tip that they are using the keyword. The code change I&apos;m
&gt; adding would never be reached in that case, only when there is a
&gt; numeric constant.

Good point, and I guess we could do with that, but when I think about it

&lt;meta name=&quot;viewport&quot; content=&quot;width=320, target-densitydpi=160&quot;&gt;

should yield a warning to use device-width, but so should

&lt;meta name=&quot;viewport&quot; content=&quot;width=480, target-densitydpi=240&quot;&gt;
and
&lt;meta name=&quot;viewport&quot; content=&quot;width=480, target-densitydpi=device-dpi&quot;&gt;

for a device with dpi 240 and device-width 480.

It all comes down to how useful these warnings are. You could say that if someone knows how to use target-densitydpi, he surely also knows how to use device-width. It could even be that the user actually wanted 480 always and just wanted the scale to change to fit the 480 into the given view. I have seem many such cases.

With that in mind, we could even show the warning always when someone uses a real number value instead of the device-* defines.

&gt; &gt; &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, target-densitydpi=160&quot;&gt;
&gt; &gt; 
&gt; &gt; on a 480 wide device substitutes device-width with 320, due to the higher dpi of 240, where as 
&gt; &gt;
&gt; &gt; &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, target-densitydpi=240&quot;&gt;
&gt; &gt; 
&gt; &gt; substitutes device-width with 480.
&gt; 
&gt; Your descriptions sound backwards to the meta tags. Are they?

Sorry, what do you mean?

&gt; I see what you&apos;re saying, but in that case my question above still applies.
&gt; I&apos;ll rephrase it below with your examples (assuming they were backwards)
&gt; with the description.
&gt; 
&gt; On a 480px wide device, are you suggesting that both of following should
&gt; print a tip that the width constant could be device-width?
&gt; 
&gt;   &lt;meta name=&quot;viewport&quot; content=&quot;width=480, target-densitydpi=160&quot;&gt;
&gt;   &lt;meta name=&quot;viewport&quot; content=&quot;width=320, target-densitydpi=240&quot;&gt;

Yes, if 160 and 240 were swapped: :-)

device-width with target-densitydpi=240 on a 480px wide device is == 480, hense

   &lt;meta name=&quot;viewport&quot; content=&quot;width=480, target-densitydpi=240&quot;&gt;
   &lt;meta name=&quot;viewport&quot; content=&quot;width=320, target-densitydpi=160&quot;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361948</commentid>
    <comment_count>37</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-03-03 14:36:35 -0800</bug_when>
    <thetext>
&gt;    &lt;meta name=&quot;viewport&quot; content=&quot;width=480, target-densitydpi=240&quot;&gt;
&gt;    &lt;meta name=&quot;viewport&quot; content=&quot;width=320, target-densitydpi=160&quot;&gt;

To explain myself better. By default we assume we are a 160 dpi device (as the original iPhone).

ie. device-width for a 160 dpi device is considered 320, which fits with the original iPhone.

But the device has a real width of 480 and a real dpi of 240. Hense using device-dpi or 240 should yield a device-width of 480, ie. it&apos;s actual width.

The calculo is: device-width = real width / (target-densitydpi / 160) = 480 / (240 / 160) = 480 / 1.5 = 320.

I hope that clears it up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361956</commentid>
    <comment_count>38</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-03-03 14:41:00 -0800</bug_when>
    <thetext>
&gt; The calculo is: device-width = real width / (target-densitydpi / 160) = 480 / (240 / 160) = 480 / 1.5 = 320.

Strip that :-( I wrote it wrong

a) without target-densitydpi argument (assuming target-densitydpi of 160)

device-width = real width / (real dpi / target-densitydpi) = 480 / (240 / 160) = 480 / 1.5 = 320.

b) with target-densitydpi = device-dpi (which is 240)

device-width = real width / (real dpi / target-densitydpi) = 480 / (240 / 240) = 480 / 1.0 = 480.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362002</commentid>
    <comment_count>39</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-03 15:26:20 -0800</bug_when>
    <thetext>&gt; a) without target-densitydpi argument (assuming target-densitydpi of 160)
&gt; 
&gt; device-width = real width / (real dpi / target-densitydpi) = 480 / (240 / 160) = 480 / 1.5 = 320.
&gt; 
&gt; b) with target-densitydpi = device-dpi (which is 240)
&gt; 
&gt; device-width = real width / (real dpi / target-densitydpi) = 480 / (240 / 240) = 480 / 1.0 = 480.

Okay, that is much clearer, Thanks!



&gt; It all comes down to how useful these warnings are. You could say that if
&gt; someone knows how to use target-densitydpi, he surely also knows how
&gt; to use device-width. It could even be that the user actually wanted 480
&gt; always and just wanted the scale to change to fit the 480 into the given
&gt; view. I have seem many such cases.

In that case, it sounds to me like, with target-densitydpi in the mix, these
tips aren&apos;t as useful as they used to be. I&apos;m fine with removing them. It
would greatly simplify the patch as well because I wouldn&apos;t need to touch
all the other ports.

However, if we want to improve the tip, what would be a good suggestion?
After Document::processViewport processes the ViewportArguments, we
could look at the end result and present some tips or warnings. I can&apos;t
think of any good ones off the top of my head.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362093</commentid>
    <comment_count>40</comment_count>
      <attachid>84657</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-03 16:57:50 -0800</bug_when>
    <thetext>Created attachment 84657
[PATCH] Remove Confusing Tips - Improve Warnings + Errors

I decided to just remove them. Much simpler patch in the end.
After landing this I would need to rebase all viewport tests for
gtk/qt + add expected results for the new tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362368</commentid>
    <comment_count>41</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-03-04 01:42:14 -0800</bug_when>
    <thetext>Good work Joseph. I have a few viewport related patches that I will try upstreaming soonish. I will cc you to those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363446</commentid>
    <comment_count>42</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-07 11:43:03 -0800</bug_when>
    <thetext>Landed in r80483:
http://trac.webkit.org/changeset/80483

I&apos;ll be watching the bots to pull expected test results for LayoutTests/fast/viewport/*.
Many are expected to change and some (added in this patch) will be new results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363489</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-07 12:22:19 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80483 might have broken Qt Linux Release
The following tests are not passing:
fast/viewport/viewport-100.html
fast/viewport/viewport-101.html
fast/viewport/viewport-102.html
fast/viewport/viewport-103.html
fast/viewport/viewport-104.html
fast/viewport/viewport-105.html
fast/viewport/viewport-106.html
fast/viewport/viewport-107.html
fast/viewport/viewport-108.html
fast/viewport/viewport-109.html
fast/viewport/viewport-110.html
fast/viewport/viewport-111.html
fast/viewport/viewport-112.html
fast/viewport/viewport-113.html
fast/viewport/viewport-114.html
fast/viewport/viewport-115.html
fast/viewport/viewport-116.html
fast/viewport/viewport-117.html
fast/viewport/viewport-118.html
fast/viewport/viewport-129.html
fast/viewport/viewport-29.html
fast/viewport/viewport-30.html
fast/viewport/viewport-31.html
fast/viewport/viewport-32.html
fast/viewport/viewport-35.html
fast/viewport/viewport-36.html
fast/viewport/viewport-38.html
fast/viewport/viewport-39.html
fast/viewport/viewport-40.html
fast/viewport/viewport-41.html
fast/viewport/viewport-42.html
fast/viewport/viewport-43.html
fast/viewport/viewport-44.html
fast/viewport/viewport-47.html
fast/viewport/viewport-48.html
fast/viewport/viewport-49.html
fast/viewport/viewport-61.html
fast/viewport/viewport-62.html
fast/viewport/viewport-63.html
fast/viewport/viewport-64.html
fast/viewport/viewport-66.html
fast/viewport/viewport-67.html
fast/viewport/viewport-68.html
fast/viewport/viewport-69.html
fast/viewport/viewport-70.html
fast/viewport/viewport-71.html
fast/viewport/viewport-72.html
fast/viewport/viewport-73.html
fast/viewport/viewport-74.html
fast/viewport/viewport-75.html
fast/viewport/viewport-76.html
fast/viewport/viewport-77.html
fast/viewport/viewport-78.html
fast/viewport/viewport-79.html
fast/viewport/viewport-80.html
fast/viewport/viewport-81.html
fast/viewport/viewport-83.html
fast/viewport/viewport-85.html
fast/viewport/viewport-88.html
fast/viewport/viewport-90.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363513</commentid>
    <comment_count>44</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-07 12:54:23 -0800</bug_when>
    <thetext>Expected Results Landed in r80490:
http://trac.webkit.org/changeset/80490

I&apos;ll mark this as closed now, but keep an eye out for any outlying viewport
tests that other ports test but were not tested by the Qt port.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82739</attachid>
            <date>2011-02-16 19:34:10 -0800</date>
            <delta_ts>2011-03-03 16:57:50 -0800</delta_ts>
            <desc>[PATCH] Patch and Tests for Error messages</desc>
            <filename>viewport-2.patch</filename>
            <type>text/plain</type>
            <size>19383</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmZDExNmUyLi45YTQ5ZGIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjIgQEAKIAogICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBWaWV3cG9ydCBXYXJuaW5n
L0Vycm9yIE1lc3NhZ2VzIEFyZSBOb3cgSW5hY2N1cmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MDcKKworICAgICAgICBBZGRlZCB0ZXN0cyBz
cGVjaWZpY2FsbHkgdG8gdGVzdCBDb25zb2xlIHdhcm5pbmdzLgorCisgICAgICAgICogZmFzdC92
aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy0xLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
dmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy00Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTYuaHRtbDogQWRkZWQuCisKKzIwMTEtMDIt
MTYgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBWaWV3cG9ydCBwYXJzaW5nIG5vIGxv
bmdlciBhY2NlcHRzICIxLjA7IiB2YWx1ZSBhcyB2YWxpZC4KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNzA1CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtMS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy0xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNDExZDEwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtMS5odG1sCkBAIC0wLDAgKzEsMTMgQEAK
KzxoZWFkPgorICAgIDx0aXRsZT5ObyB3YXJuaW5ncyBvciBlcnJvcnMuPC90aXRsZT4KKyAgICA8
bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFs
LXNjYWxlPTEsIG1heGltdW0tc2NhbGU9MiI+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rp
b24gdGVzdCgpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENvbmZpZ3VyYXRpb25Gb3JW
aWV3cG9ydCgzMjAsIDM1Mik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICA8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpOyI+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTIuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmZiZWNmNzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTIuaHRtbApAQCAtMCwwICsxLDEzIEBA
Cis8aGVhZD4KKyAgICA8dGl0bGU+VW5yZWNvZ25pemVkIGtleS48L3RpdGxlPgorICAgIDxtZXRh
IG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3d2lkdGg9MTAwIj4KKyAgICA8c2NyaXB0PgorICAg
ICAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ29uZmln
dXJhdGlvbkZvclZpZXdwb3J0KDMyMCwgMzUyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtMy5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy0zLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY0OTIwYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtMy5odG1sCkBAIC0w
LDAgKzEsMTMgQEAKKzxoZWFkPgorICAgIDx0aXRsZT5VbnJlY29nbml6ZWQgdmFsdWUuPC90aXRs
ZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9dW5yZWNvZ25pemVk
LXdpZHRoIj4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KDMyMCwgMzUyKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJ0ZXN0KCk7Ij4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQv
dmlld3BvcnQtd2FybmluZ3MtNC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC92aWV3
cG9ydC13YXJuaW5ncy00Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MTNlMGU0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmll
d3BvcnQtd2FybmluZ3MtNC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxoZWFkPgorICAgIDx0aXRs
ZT5UcnVuY2F0ZWQgdmFsdWUuPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29u
dGVudD0id2lkdGg9MTIzeDQ1NiI+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gdGVz
dCgpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9y
dCgzMjAsIDM1Mik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpOyI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
dmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjZmMDAzNTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8aGVh
ZD4KKyAgICA8dGl0bGU+U3VnZ2VzdCB1c2luZyBrZXl3b3JkcyB3aGVuIGZpeGVkIG51bWJlciBt
YXRjaGVzIGRldmljZSB3aWR0aCBvciBoZWlnaHQuPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJ2
aWV3cG9ydCIgY29udGVudD0id2lkdGg9MzIwLCBoZWlnaHQ9MzUyIj4KKyAgICA8c2NyaXB0Pgor
ICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ29u
ZmlndXJhdGlvbkZvclZpZXdwb3J0KDMyMCwgMzUyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNi5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy02Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGMwZjI3MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNi5odG1sCkBA
IC0wLDAgKzEsMTMgQEAKKzxoZWFkPgorICAgIDx0aXRsZT5NdWx0aXBsZSB3YXJuaW5ncyBhbmQg
ZXJyb3JzIGR1ZSB0byBpbmNvcnJlY3Qgc2VtaWNvbG9uIHNlcGFyYXRvcnMuPC90aXRsZT4KKyAg
ICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoOyBpbml0
aWFsLXNjYWxlPTEuMDsgbWF4aW11bS1zY2FsZT0xLjA7IHVzZXItc2NhbGFibGU9MDsiPgorICAg
IDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBDb25maWd1cmF0aW9uRm9yVmlld3BvcnQoMzIwLCAzNTIpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3Qo
KTsiPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDA2MWQ0ZWUuLjE0NmY1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiAr
MiwyNyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAg
IFZpZXdwb3J0IFdhcm5pbmcvRXJyb3IgTWVzc2FnZXMgQXJlIE5vdyBJbmFjY3VyYXRlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzcwNworCisgICAg
ICAgIENvcnJlY3QgYW5kIGltcHJvdmUgdGhlIGVycm9yIG1lc3NhZ2VzIGZvciB2aWV3cG9ydAor
ICAgICAgICBwYXJzaW5nLiBDbGFyaWZ5IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gaW5jb3JyZWN0
CisgICAgICAgIGtleXMsIHZhbHVlcywgYW5kIHdoZW4gdG8gdXNlIHRoZSBkZXZpY2Utd2lkdGgg
b3IKKyAgICAgICAgZGV2aWNlLWhlaWdodCBjb25zdGFudHMuCisKKyAgICAgICAgKiBkb20vVmll
d3BvcnRBcmd1bWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVZpZXdwb3J0QXR0
cmlidXRlcyk6IHN1Z2dlc3QgdXNpbmcga2V5d29yZHMgaWYgZml4ZWQgaW5wdXQgbWF0Y2hlcyBk
ZXZpY2Ugd2lkdGggb3IgaGVpZ2h0LgorICAgICAgICAoV2ViQ29yZTo6bnVtZXJpY1ByZWZpeCk6
CisgICAgICAgIChXZWJDb3JlOjpmaW5kU2l6ZVZhbHVlKTogcmVtb3ZlIGluY29ycmVjdCB3YXJu
aW5ncyBhYm91dCBmaXhlZCBudW1iZXJzIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB0aGUgZGV2aWNl
IHdpZHRoIG9yIGhlaWdodC4KKyAgICAgICAgKFdlYkNvcmU6OnNldFZpZXdwb3J0RmVhdHVyZSk6
IHJlcG9ydCBhIHdhcm5pbmcgZm9yIGFuIHVucmVjb2duaXplZCBrZXkuCisgICAgICAgIChXZWJD
b3JlOjp2aWV3cG9ydEVycm9yTWVzc2FnZVRlbXBsYXRlKTogYWRkZWQgdGVtcGxhdGUgZm9yIHVu
cmVjb2duaXplZCBrZXkuCisgICAgICAgIChXZWJDb3JlOjp2aWV3cG9ydEVycm9yTWVzc2FnZUxl
dmVsKToKKyAgICAgICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMuaDoKKworMjAxMS0wMi0xNiAg
Sm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFZpZXdwb3J0IHBhcnNpbmcgbm8gbG9uZ2Vy
IGFjY2VwdHMgIjEuMDsiIHZhbHVlIGFzIHZhbGlkLgogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MDUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9y
dEFyZ3VtZW50cy5jcHAKaW5kZXggMThkMmM1Mi4uMGFmZjU5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVmlld3BvcnRBcmd1bWVudHMuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVmlld3BvcnRBdHRyaWJ1dGVzIGNvbXB1
dGVWaWV3cG9ydEF0dHJpYnV0ZXMoVmlld3BvcnRBcmd1bWVudHMgYXJncywgaW50IGRlc2t0b3BX
aWR0aCwgaW50IGRldmljZVdpZHRoLCBpbnQgZGV2aWNlSGVpZ2h0LCBpbnQgZGV2aWNlRFBJLCBJ
bnRTaXplIHZpc2libGVWaWV3cG9ydCkKK1ZpZXdwb3J0QXR0cmlidXRlcyBjb21wdXRlVmlld3Bv
cnRBdHRyaWJ1dGVzKERvY3VtZW50KiBkb2N1bWVudCwgVmlld3BvcnRBcmd1bWVudHMgYXJncywg
aW50IGRlc2t0b3BXaWR0aCwgaW50IGRldmljZVdpZHRoLCBpbnQgZGV2aWNlSGVpZ2h0LCBpbnQg
ZGV2aWNlRFBJLCBJbnRTaXplIHZpc2libGVWaWV3cG9ydCkKIHsKICAgICBWaWV3cG9ydEF0dHJp
YnV0ZXMgcmVzdWx0OwogCkBAIC01MSw2ICs1MSwxMSBAQCBWaWV3cG9ydEF0dHJpYnV0ZXMgY29t
cHV0ZVZpZXdwb3J0QXR0cmlidXRlcyhWaWV3cG9ydEFyZ3VtZW50cyBhcmdzLCBpbnQgZGVza3Rv
cAogCiAgICAgQVNTRVJUKGF2YWlsYWJsZVdpZHRoID4gMCAmJiBhdmFpbGFibGVIZWlnaHQgPiAw
KTsKIAorICAgIGlmIChhcmdzLndpZHRoID09IGRldmljZVdpZHRoIHx8IGFyZ3MuaGVpZ2h0ID09
IGRldmljZVdpZHRoKQorICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1lbnQsIERl
dmljZVdpZHRoU2hvdWxkQmVVc2VkV2FybmluZywgU3RyaW5nKCksIFN0cmluZygpKTsKKyAgICBp
ZiAoYXJncy53aWR0aCA9PSBkZXZpY2VIZWlnaHQgfHwgYXJncy5oZWlnaHQgPT0gZGV2aWNlSGVp
Z2h0KQorICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1lbnQsIERldmljZUhlaWdo
dFNob3VsZEJlVXNlZFdhcm5pbmcsIFN0cmluZygpLCBTdHJpbmcoKSk7CisKICAgICBzd2l0Y2gg
KGludChhcmdzLnRhcmdldERlbnNpdHlEcGkpKSB7CiAgICAgY2FzZSBWaWV3cG9ydEFyZ3VtZW50
czo6VmFsdWVEZXZpY2VEUEk6CiAgICAgICAgIGFyZ3MudGFyZ2V0RGVuc2l0eURwaSA9IGRldmlj
ZURQSTsKQEAgLTE5MSw3ICsxOTYsNyBAQCBzdGF0aWMgZmxvYXQgbnVtZXJpY1ByZWZpeChjb25z
dCBTdHJpbmcmIGtleVN0cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywgRAogICAgICAg
ICBVQ2hhciBmaXJzdENoYXIgPSB2YWx1ZVN0cmluZ1swXTsKICAgICAgICAgaWYgKCFpc0FTQ0lJ
RGlnaXQoZmlyc3RDaGFyKSB8fCAoZmlyc3RDaGFyID09ICctJyAmJiAhaXNBU0NJSURpZ2l0KHZh
bHVlU3RyaW5nWzFdKSkpIHsKICAgICAgICAgICAgIEFTU0VSVCghdmFsdWUpOwotICAgICAgICAg
ICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBVbnJlY29nbml6ZWRWaWV3cG9ydEFy
Z3VtZW50RXJyb3IsIHZhbHVlU3RyaW5nLCBrZXlTdHJpbmcpOworICAgICAgICAgICAgcmVwb3J0
Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50VmFs
dWVFcnJvciwgdmFsdWVTdHJpbmcsIGtleVN0cmluZyk7CiAgICAgICAgICAgICByZXR1cm4gdmFs
dWU7CiAgICAgICAgIH0KICAgICAgICAgKm9rID0gdHJ1ZTsKQEAgLTIyMiwxMSArMjI3LDYgQEAg
c3RhdGljIGZsb2F0IGZpbmRTaXplVmFsdWUoY29uc3QgU3RyaW5nJiBrZXlTdHJpbmcsIGNvbnN0
IFN0cmluZyYgdmFsdWVTdHJpbmcsIEQKICAgICBpZiAodmFsdWUgPCAwKQogICAgICAgICByZXR1
cm4gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bzsKIAotICAgIGlmIChrZXlTdHJpbmcgPT0g
IndpZHRoIikKLSAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBEZXZpY2VX
aWR0aFNob3VsZEJlVXNlZFdhcm5pbmcsIFN0cmluZygpLCBTdHJpbmcoKSk7Ci0gICAgZWxzZSBp
ZiAoa2V5U3RyaW5nID09ICJoZWlnaHQiKQotICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmco
ZG9jdW1lbnQsIERldmljZUhlaWdodFNob3VsZEJlVXNlZFdhcm5pbmcsIFN0cmluZygpLCBTdHJp
bmcoKSk7Ci0KICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTMzMyw2ICszMzMsOCBAQCB2b2lk
IHNldFZpZXdwb3J0RmVhdHVyZShjb25zdCBTdHJpbmcmIGtleVN0cmluZywgY29uc3QgU3RyaW5n
JiB2YWx1ZVN0cmluZywgRG9jdQogICAgICAgICBhcmd1bWVudHMtPnVzZXJTY2FsYWJsZSA9IGZp
bmRVc2VyU2NhbGFibGVWYWx1ZShrZXlTdHJpbmcsIHZhbHVlU3RyaW5nLCBkb2N1bWVudCk7CiAg
ICAgZWxzZSBpZiAoa2V5U3RyaW5nID09ICJ0YXJnZXQtZGVuc2l0eWRwaSIpCiAgICAgICAgIGFy
Z3VtZW50cy0+dGFyZ2V0RGVuc2l0eURwaSA9IGZpbmRUYXJnZXREZW5zaXR5RFBJVmFsdWUoa2V5
U3RyaW5nLCB2YWx1ZVN0cmluZywgZG9jdW1lbnQpOworICAgIGVsc2UKKyAgICAgICAgcmVwb3J0
Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50S2V5
RXJyb3IsIGtleVN0cmluZywgU3RyaW5nKCkpOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciogdmll
d3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZShWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUpCkBA
IC0zNDAsNiArMzQyLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHZpZXdwb3J0RXJyb3JNZXNzYWdl
VGVtcGxhdGUoVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlKQogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCBlcnJvcnNbXSA9IHsKICAgICAgICAgIlZpZXdwb3J0IHdpZHRoIG9yIGhlaWdo
dCBzZXQgdG8gcGh5c2ljYWwgZGV2aWNlIHdpZHRoLCB0cnkgdXNpbmcgXCJkZXZpY2Utd2lkdGhc
IiBjb25zdGFudCBpbnN0ZWFkIGZvciBmdXR1cmUgY29tcGF0aWJpbGl0eS4iLAogICAgICAgICAi
Vmlld3BvcnQgaGVpZ2h0IG9yIGhlaWdodCBzZXQgdG8gcGh5c2ljYWwgZGV2aWNlIGhlaWdodCwg
dHJ5IHVzaW5nIFwiZGV2aWNlLWhlaWdodFwiIGNvbnN0YW50IGluc3RlYWQgZm9yIGZ1dHVyZSBj
b21wYXRpYmlsaXR5LiIsCisgICAgICAgICJWaWV3cG9ydCBhcmd1bWVudCBrZXkgXCIlcmVwbGFj
ZW1lbnQxXCIgbm90IHJlY29nbml6ZWQgYW5kIGlnbm9yZWQuIiwKICAgICAgICAgIlZpZXdwb3J0
IGFyZ3VtZW50IHZhbHVlIFwiJXJlcGxhY2VtZW50MVwiIGZvciBrZXkgXCIlcmVwbGFjZW1lbnQy
XCIgbm90IHJlY29nbml6ZWQuIENvbnRlbnQgaWdub3JlZC4iLAogICAgICAgICAiVmlld3BvcnQg
YXJndW1lbnQgdmFsdWUgXCIlcmVwbGFjZW1lbnQxXCIgZm9yIGtleSBcIiVyZXBsYWNlbWVudDJc
IiB3YXMgdHJ1bmNhdGVkIHRvIGl0cyBudW1lcmljIHByZWZpeC4iLAogICAgICAgICAiVmlld3Bv
cnQgbWF4aW11bS1zY2FsZSBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gMTAuMC4gVGhlIG1heGltdW0t
c2NhbGUgd2lsbCBiZSBzZXQgdG8gMTAuMC4iLApAQCAtMzU3LDcgKzM2MCw4IEBAIHN0YXRpYyBN
ZXNzYWdlTGV2ZWwgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChWaWV3cG9ydEVycm9yQ29kZSBl
cnJvckNvZGUpCiAgICAgY2FzZSBUcnVuY2F0ZWRWaWV3cG9ydEFyZ3VtZW50VmFsdWVFcnJvcjoK
ICAgICBjYXNlIFRhcmdldERlbnNpdHlEcGlUb29TbWFsbE9yTGFyZ2VFcnJvcjoKICAgICAgICAg
cmV0dXJuIFRpcE1lc3NhZ2VMZXZlbDsKLSAgICBjYXNlIFVucmVjb2duaXplZFZpZXdwb3J0QXJn
dW1lbnRFcnJvcjoKKyAgICBjYXNlIFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRLZXlFcnJv
cjoKKyAgICBjYXNlIFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yOgogICAg
IGNhc2UgTWF4aW11bVNjYWxlVG9vTGFyZ2VFcnJvcjoKICAgICAgICAgcmV0dXJuIEVycm9yTWVz
c2FnZUxldmVsOwogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Vmlld3BvcnRBcmd1bWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50
cy5oCmluZGV4IDZjNDliZjEuLjM4NTJkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9WaWV3cG9ydEFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFy
Z3VtZW50cy5oCkBAIC0zNyw3ICszNyw4IEBAIGNsYXNzIERvY3VtZW50OwogZW51bSBWaWV3cG9y
dEVycm9yQ29kZSB7CiAgICAgRGV2aWNlV2lkdGhTaG91bGRCZVVzZWRXYXJuaW5nLAogICAgIERl
dmljZUhlaWdodFNob3VsZEJlVXNlZFdhcm5pbmcsCi0gICAgVW5yZWNvZ25pemVkVmlld3BvcnRB
cmd1bWVudEVycm9yLAorICAgIFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRLZXlFcnJvciwK
KyAgICBVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50VmFsdWVFcnJvciwKICAgICBUcnVuY2F0
ZWRWaWV3cG9ydEFyZ3VtZW50VmFsdWVFcnJvciwKICAgICBNYXhpbXVtU2NhbGVUb29MYXJnZUVy
cm9yLAogICAgIFRhcmdldERlbnNpdHlEcGlUb29TbWFsbE9yTGFyZ2VFcnJvcgpAQCAtMTAwLDcg
KzEwMSw3IEBAIHN0cnVjdCBWaWV3cG9ydEFyZ3VtZW50cyB7CiAgICAgfQogfTsKIAotVmlld3Bv
cnRBdHRyaWJ1dGVzIGNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXMoVmlld3BvcnRBcmd1bWVudHMg
YXJncywgaW50IGRlc2t0b3BXaWR0aCwgaW50IGRldmljZVdpZHRoLCBpbnQgZGV2aWNlSGVpZ2h0
LCBpbnQgZGV2aWNlRFBJLCBJbnRTaXplIHZpc2libGVWaWV3cG9ydCk7CitWaWV3cG9ydEF0dHJp
YnV0ZXMgY29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyhEb2N1bWVudCosIFZpZXdwb3J0QXJndW1l
bnRzIGFyZ3MsIGludCBkZXNrdG9wV2lkdGgsIGludCBkZXZpY2VXaWR0aCwgaW50IGRldmljZUhl
aWdodCwgaW50IGRldmljZURQSSwgSW50U2l6ZSB2aXNpYmxlVmlld3BvcnQpOwogCiB2b2lkIHNl
dFZpZXdwb3J0RmVhdHVyZShjb25zdCBTdHJpbmcmIGtleVN0cmluZywgY29uc3QgU3RyaW5nJiB2
YWx1ZVN0cmluZywgRG9jdW1lbnQqLCB2b2lkKiBkYXRhKTsKIHZvaWQgcmVwb3J0Vmlld3BvcnRX
YXJuaW5nKERvY3VtZW50KiwgVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50MSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudDIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nCmluZGV4IDAxOGJjMzQuLjY1YWU3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMS0wMi0xNiAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZpZXdwb3J0
IFdhcm5pbmcvRXJyb3IgTWVzc2FnZXMgQXJlIE5vdyBJbmFjY3VyYXRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzcwNworCisgICAgICAgICogZXdr
L2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2Nv
bXB1dGUpOiBwYXNzIGEgRG9jdW1lbnQgaW50byBjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzIGZv
ciB3YXJuaW5ncyB0byBiZSByZXBvcnRlZCB0by4KKwogMjAxMS0wMS0yNiAgTU9SSVRBIEhhamlt
ZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5p
d2EuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBjZTA5ZjY0Li4xNWM2OWJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTEwMjIsOCArMTAyMiwxMCBAQCBzdGF0
aWMgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1
dGVzX2NvbXB1dGUoRXZhc19PYgogICAgIGludCBkZXZpY2Vfd2lkdGggPSAoaW50KSBwcml2LT5w
YWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPndpbmRvd1JlY3QoKS53aWR0aCgpOwogICAgIGludCBk
ZXZpY2VfaGVpZ2h0ID0gKGludCkgcHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53aW5k
b3dSZWN0KCkuaGVpZ2h0KCk7CiAKKyAgICBXZWJDb3JlOjpEb2N1bWVudCogZG9jdW1lbnQgPSBw
cml2LT5wYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKTsKKwogICAgIFdlYkNvcmU6OkludFNp
emUgYXZhaWxhYmxlX3NpemUgPSBXZWJDb3JlOjpJbnRTaXplKGF2YWlsYWJsZV93aWR0aCwgYXZh
aWxhYmxlX2hlaWdodCk7Ci0gICAgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXMgPSBXZWJDb3JlOjpjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKHByaXYtPnZpZXdwb3J0X2Fy
Z3VtZW50cywgZGVza3RvcF93aWR0aCwgZGV2aWNlX3dpZHRoLCBkZXZpY2VfaGVpZ2h0LCBkZXZp
Y2VfZHBpLCBhdmFpbGFibGVfc2l6ZSk7CisgICAgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXMgPSBXZWJDb3JlOjpjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKGRvY3VtZW50
LCBwcml2LT52aWV3cG9ydF9hcmd1bWVudHMsIGRlc2t0b3Bfd2lkdGgsIGRldmljZV93aWR0aCwg
ZGV2aWNlX2hlaWdodCwgZGV2aWNlX2RwaSwgYXZhaWxhYmxlX3NpemUpOwogCiAgICAgcmV0dXJu
IGF0dHJpYnV0ZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNzUwZmRjMS4uMTc3NTgxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTAyLTE2ICBKb3NlcGggUGVjb3Jh
cm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVmlld3BvcnQgV2FybmluZy9FcnJvciBNZXNzYWdlcyBBcmUgTm93
IEluYWNjdXJhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTUzNzA3CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGsuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkdW1wQ29uZmln
dXJhdGlvbkZvclZpZXdwb3J0KTogcGFzcyBhIERvY3VtZW50IGludG8gY29tcHV0ZVZpZXdwb3J0
QXR0cmlidXRlcyBmb3Igd2FybmluZ3MgdG8gYmUgcmVwb3J0ZWQgdG8uCisgICAgICAgICogd2Vi
a2l0L3dlYmtpdHZpZXdwb3J0YXR0cmlidXRlcy5jcHA6CisgICAgICAgICh3ZWJraXRWaWV3cG9y
dEF0dHJpYnV0ZXNSZWNvbXB1dGUpOiBwYXNzIGEgRG9jdW1lbnQgaW50byBjb21wdXRlVmlld3Bv
cnRBdHRyaWJ1dGVzIGZvciB3YXJuaW5ncyB0byBiZSByZXBvcnRlZCB0by4KKwogMjAxMS0wMi0x
NiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKaW5k
ZXggYzIyOTJkYS4uMzA5MjAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCkBAIC02MTUs
OSArNjE1LDEwIEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkdW1wQ29uZmlndXJh
dGlvbkZvclZpZXdwb3J0KFdlYktpdFdlYlZpZXcqIHdlYlZpCiB7CiAgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogCi0gICAgVmlld3BvcnRBcmd1bWVu
dHMgYXJndW1lbnRzID0gd2ViVmlldy0+cHJpdi0+Y29yZVBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1
bWVudCgpLT52aWV3cG9ydEFyZ3VtZW50cygpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHdl
YlZpZXctPnByaXYtPmNvcmVQYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKTsKKyAgICBWaWV3
cG9ydEFyZ3VtZW50cyBhcmd1bWVudHMgPSBkb2N1bWVudC0+dmlld3BvcnRBcmd1bWVudHMoKTsK
ICAgICAvLyBkZXNrdG9wV2lkdGggPSA5ODAsIGRldmljZVdpZHRoID0gMzIwLCBkZXZpY2VIZWln
aHQgPSA0ODAsIGRldmljZURQSSA9IDE2MAotICAgIFZpZXdwb3J0QXR0cmlidXRlcyBhdHRycyA9
IGNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXMoYXJndW1lbnRzLCA5ODAsIDMyMCwgNDgwLCAxNjAs
IEludFNpemUoYXZhaWxhYmxlV2lkdGgsIGF2YWlsYWJsZUhlaWdodCkpOworICAgIFZpZXdwb3J0
QXR0cmlidXRlcyBhdHRycyA9IGNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXMoZG9jdW1lbnQsIGFy
Z3VtZW50cywgOTgwLCAzMjAsIDQ4MCwgMTYwLCBJbnRTaXplKGF2YWlsYWJsZVdpZHRoLCBhdmFp
bGFibGVIZWlnaHQpKTsKIAogICAgIGZwcmludGYoc3Rkb3V0LCAidmlld3BvcnQgc2l6ZSAlZHgl
ZCBzY2FsZSAlZiB3aXRoIGxpbWl0cyBbJWYsICVmXVxuIiwgYXR0cnMubGF5b3V0U2l6ZS53aWR0
aCgpLCBhdHRycy5sYXlvdXRTaXplLmhlaWdodCgpLCBhdHRycy5pbml0aWFsU2NhbGUsIGF0dHJz
Lm1pbmltdW1TY2FsZSwgYXR0cnMubWF4aW11bVNjYWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR2aWV3cG9ydGF0dHJpYnV0ZXMuY3BwIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHZpZXdwb3J0YXR0cmlidXRlcy5jcHAKaW5kZXggOWE5
OGU0NC4uZmI2NTg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHZpZXdwb3J0YXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHZpZXdwb3J0YXR0cmlidXRlcy5jcHAKQEAgLTUzMiw5ICs1MzIsMTAgQEAgdm9pZCB3ZWJr
aXRWaWV3cG9ydEF0dHJpYnV0ZXNSZWNvbXB1dGUoV2ViS2l0Vmlld3BvcnRBdHRyaWJ1dGVzKiB2
aWV3cG9ydEF0dHJpYnUKICAgICAvLyBGaXJzdCBvZiBhbGwsIHdlIGdpdmUgdGhlIGFwcGxpY2F0
aW9uIGFuIG9wcG9ydHVuaXR5IHRvIG92ZXJyaWRlIHNvbWUgb2YgdGhlIHZhbHVlcy4KICAgICBn
X3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgInZpZXdwb3J0LWF0dHJpYnV0ZXMtcmVjb21w
dXRlLXJlcXVlc3RlZCIsIHZpZXdwb3J0QXR0cmlidXRlcyk7CiAKLSAgICBWaWV3cG9ydEFyZ3Vt
ZW50cyBhcmd1bWVudHMgPSB3ZWJWaWV3LT5wcml2LT5jb3JlUGFnZS0+bWFpbkZyYW1lKCktPmRv
Y3VtZW50KCktPnZpZXdwb3J0QXJndW1lbnRzKCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
d2ViVmlldy0+cHJpdi0+Y29yZVBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpOworICAgIFZp
ZXdwb3J0QXJndW1lbnRzIGFyZ3VtZW50cyA9IGRvY3VtZW50LT52aWV3cG9ydEFyZ3VtZW50cygp
OwogCi0gICAgVmlld3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBjb21wdXRlVmlld3BvcnRB
dHRyaWJ1dGVzKGFyZ3VtZW50cywgcHJpdi0+ZGVza3RvcFdpZHRoLCBwcml2LT5kZXZpY2VXaWR0
aCwgcHJpdi0+ZGV2aWNlSGVpZ2h0LCBwcml2LT5kZXZpY2VEUEksIEludFNpemUocHJpdi0+YXZh
aWxhYmxlV2lkdGgsIHByaXYtPmF2YWlsYWJsZUhlaWdodCkpOworICAgIFZpZXdwb3J0QXR0cmli
dXRlcyBhdHRyaWJ1dGVzID0gY29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyhkb2N1bWVudCwgYXJn
dW1lbnRzLCBwcml2LT5kZXNrdG9wV2lkdGgsIHByaXYtPmRldmljZVdpZHRoLCBwcml2LT5kZXZp
Y2VIZWlnaHQsIHByaXYtPmRldmljZURQSSwgSW50U2l6ZShwcml2LT5hdmFpbGFibGVXaWR0aCwg
cHJpdi0+YXZhaWxhYmxlSGVpZ2h0KSk7CiAKICAgICBwcml2LT53aWR0aCA9IGF0dHJpYnV0ZXMu
bGF5b3V0U2l6ZS53aWR0aCgpOwogICAgIHByaXYtPmhlaWdodCA9IGF0dHJpYnV0ZXMubGF5b3V0
U2l6ZS5oZWlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCAwNzU3NTZkLi5i
N2JkMDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0yNTE3LDcgKzI1MTcsOCBA
QCBRV2ViUGFnZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIFFXZWJQYWdlOjp2aWV3cG9ydEF0dHJpYnV0
ZXNGb3JTaXplKGNvbnN0IFFTaXplJiBhdgogICAgICAgICBkZXZpY2VIZWlnaHQgPSBzaXplLmhl
aWdodCgpOwogICAgIH0KIAotICAgIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBjb25mID0g
V2ViQ29yZTo6Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyhkLT52aWV3cG9ydEFyZ3VtZW50cygp
LCBkZXNrdG9wV2lkdGgsIGRldmljZVdpZHRoLCBkZXZpY2VIZWlnaHQsIHF0X2RlZmF1bHREcGko
KSwgYXZhaWxhYmxlU2l6ZSk7CisgICAgV2ViQ29yZTo6RG9jdW1lbnQqIGRvY3VtZW50ID0gZC0+
cGFnZS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgV2ViQ29yZTo6Vmlld3BvcnRBdHRy
aWJ1dGVzIGNvbmYgPSBXZWJDb3JlOjpjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKGRvY3VtZW50
LCBkLT52aWV3cG9ydEFyZ3VtZW50cygpLCBkZXNrdG9wV2lkdGgsIGRldmljZVdpZHRoLCBkZXZp
Y2VIZWlnaHQsIHF0X2RlZmF1bHREcGkoKSwgYXZhaWxhYmxlU2l6ZSk7CiAKICAgICByZXN1bHQu
bV9pc1ZhbGlkID0gdHJ1ZTsKICAgICByZXN1bHQubV9zaXplID0gY29uZi5sYXlvdXRTaXplOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwppbmRleCAzYjY2ZTg5Li5lYTQ2OTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDExLTAyLTE2ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmll
d3BvcnQgV2FybmluZy9FcnJvciBNZXNzYWdlcyBBcmUgTm93IEluYWNjdXJhdGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNzA3CisKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnZpZXdwb3J0QXR0cmlidXRl
c0ZvclNpemUpOiBwYXNzIGEgRG9jdW1lbnQgaW50byBjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVz
IGZvciB3YXJuaW5ncyB0byBiZSByZXBvcnRlZCB0by4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6dmlld3BvcnRBc1RleHQpOiBwYXNzIGEgRG9jdW1lbnQgaW50byBjb21wdXRlVmll
d3BvcnRBdHRyaWJ1dGVzIGZvciB3YXJuaW5ncyB0byBiZSByZXBvcnRlZCB0by4KKwogMjAxMS0w
Mi0xNiAgQXBhcm5hIE5hbmR5YWwgIDxhcGFybmEubmFuZEB3aXByby5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwIGIvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKaW5kZXggZTE0
ZDVjYy4uMTEyM2UxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKQEAgLTcxOSw4ICs3MTksOSBA
QCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wTm90aWZpY2F0aW9uKGJvb2wgYikK
IAogUVN0cmluZyBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6dmlld3BvcnRBc1RleHQoUVdlYlBh
Z2UqIHBhZ2UsIGNvbnN0IFFTaXplJiBhdmFpbGFibGVTaXplKQogeworICAgIFdlYkNvcmU6OkRv
Y3VtZW50KiBkb2N1bWVudCA9IHBhZ2UtPmQtPnBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgp
OwogICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIGFyZ3MgPSBwYWdlLT5kLT52aWV3cG9y
dEFyZ3VtZW50cygpOwotICAgIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBjb25mID0gV2Vi
Q29yZTo6Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyhhcmdzLAorICAgIFdlYkNvcmU6OlZpZXdw
b3J0QXR0cmlidXRlcyBjb25mID0gV2ViQ29yZTo6Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyhk
b2N1bWVudCwgYXJncywKICAgICAgICAgLyogZGVza3RvcC13aWR0aCAqLyA5ODAsCiAgICAgICAg
IC8qIGRldmljZS13aWR0aCAgKi8gMzIwLAogICAgICAgICAvKiBkZXZpY2UtaGVpZ2h0ICovIDQ4
MCwK
</data>
<flag name="review"
          id="74434"
          type_id="1"
          status="+"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="74435"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83231</attachid>
            <date>2011-02-21 15:58:10 -0800</date>
            <delta_ts>2011-03-03 16:57:50 -0800</delta_ts>
            <desc>[PATCH] One more test for a missing value.</desc>
            <filename>missing-value.patch</filename>
            <type>text/plain</type>
            <size>1105</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4M2FhYTIyLi43ZGE3YzMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xMyw2ICsxMyw3IEBACiAgICAgICAg
ICogZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy00Lmh0bWw6IEFkZGVkLgogICAgICAg
ICAqIGZhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNS5odG1sOiBBZGRlZC4KICAgICAg
ICAgKiBmYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTYuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy03Lmh0bWw6IEFkZGVkLgogCiAy
MDExLTAyLTE2ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNy5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy03Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZkNGUyMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNy5odG1sCkBA
IC0wLDAgKzEsMTMgQEAKKzxoZWFkPgorICAgIDx0aXRsZT5NaXNzaW5nIHZhbHVlIHNob3VsZCBw
cm9kdWNlIGFuIGVycm9yLjwvdGl0bGU+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRl
bnQ9IndpZHRoPSI+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydCgzMjAsIDM1
Mik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0idGVzdCgpOyI+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84338</attachid>
            <date>2011-03-01 17:54:40 -0800</date>
            <delta_ts>2011-03-03 13:47:21 -0800</delta_ts>
            <desc>[FIX] Poor Build Fix solution for Qt WebKit2</desc>
            <filename>temporary-soluation.patch</filename>
            <type>text/plain</type>
            <size>2989</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjZjZkOTg1Li4wMjkzYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDMtMDEgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWaWV3cG9ydCBX
YXJuaW5nL0Vycm9yIE1lc3NhZ2VzIEFyZSBOb3cgSW5hY2N1cmF0ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MDcKKworICAgICAgICBXaGVuIHJl
cG9ydGluZyB3YXJuaW5ncyBiZSByZXNpbGllbnQgYWdhaW5zdCBhCisgICAgICAgIG51bGwgZG9j
dW1lbnQsIHdoaWNoIG1lYW5zIHdlIHdlcmVuJ3QgdG9sZCB3aGVyZQorICAgICAgICB0byByZXBv
cnQgdGhlIGVycm9yIHRvLgorCisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydFZpZXdwb3J0V2FybmluZyk6CisKIDIwMTEtMDMtMDEg
IEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgSmFtZXMgUm9iaW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3Bv
cnRBcmd1bWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNw
cAppbmRleCAwMDk3NDMzLi43OGE0YTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Vmlld3BvcnRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFy
Z3VtZW50cy5jcHAKQEAgLTM4Myw2ICszODMsOSBAQCBzdGF0aWMgaW50IHBhcnNlckxpbmVOdW1i
ZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogCiB2b2lkIHJlcG9ydFZpZXdwb3J0V2FybmluZyhEb2N1
bWVudCogZG9jdW1lbnQsIFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5n
JiByZXBsYWNlbWVudDEsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQyKQogeworICAgIGlmICgh
ZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKwogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50
LT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCA3OTZkMzYzLi4wNzNmNWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTEtMDMt
MDEgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAorICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWaWV3cG9ydCBXYXJuaW5nL0Vycm9y
IE1lc3NhZ2VzIEFyZSBOb3cgSW5hY2N1cmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MDcKKworICAgICAgICBUaGVyZSBkb2Vzbid0IHNlZW0g
dG8gYmUgYSB3YXkgdG8gZWFzaWx5IGdldCB0aGUgRG9jdW1lbnQKKyAgICAgICAgZm9yIGEgRnJh
bWUgaW4gV2ViS2l0Mi4gVG8gZml4IHRoZSBidWlsZCwganVzdCBwYXNzIGluCisgICAgICAgIG51
bGwgZm9yIG5vdy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHA6Cisg
ICAgICAgIChRV0tQYWdlOjp2aWV3cG9ydEF0dHJpYnV0ZXNGb3JTaXplKToKKworMjAxMS0wMy0w
MSAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCiAgICAgICAgIFVucmV2
aWV3ZWQsIG1pc3NlZCB1cGRhdGluZyBhIGNhbGwgdG8gV2ViQ29yZTo6Y29tcHV0ZVZpZXdwb3J0
QXR0cmlidXRlcwogICAgICAgICB3aG8ncyBwcm90b3R5cGUgY2hhbmdlZC4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAKaW5kZXggYzY0MDhjNC4uMjcyOTMy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCkBAIC01
NTcsOCArNTU3LDggQEAgUVdLUGFnZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIFFXS1BhZ2U6OnZpZXdw
b3J0QXR0cmlidXRlc0ZvclNpemUoY29uc3QgUVNpemUmIGF2YWkKICAgICBpbnQgZGV2aWNlV2lk
dGggPSA0ODA7CiAgICAgaW50IGRldmljZUhlaWdodCA9IDg2NDsKIAotICAgIFdlYkNvcmU6OkRv
Y3VtZW50KiBkb2N1bWVudCA9IGQtPnBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpOwotICAg
IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBjb25mID0gV2ViQ29yZTo6Y29tcHV0ZVZpZXdw
b3J0QXR0cmlidXRlcyhkb2N1bWVudCwgZC0+dmlld3BvcnRBcmd1bWVudHMsIGRlc2t0b3BXaWR0
aCwgZGV2aWNlV2lkdGgsIGRldmljZUhlaWdodCwgZGV2aWNlRFBJLCBhdmFpbGFibGVTaXplKTsK
KyAgICAvLyBGSVhNRTogUGFzcyBpbiBhIERvY3VtZW50IGlmIHdlIHdhbnQgY29uc29sZSB3YXJu
aW5ncyByZXBvcnRlZC4KKyAgICBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgY29uZiA9IFdl
YkNvcmU6OmNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXMoMCwgZC0+dmlld3BvcnRBcmd1bWVudHMs
IGRlc2t0b3BXaWR0aCwgZGV2aWNlV2lkdGgsIGRldmljZUhlaWdodCwgZGV2aWNlRFBJLCBhdmFp
bGFibGVTaXplKTsKIAogICAgIHJlc3VsdC5tX2lzVmFsaWQgPSB0cnVlOwogICAgIHJlc3VsdC5t
X3NpemUgPSBjb25mLmxheW91dFNpemU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84525</attachid>
            <date>2011-03-02 23:32:28 -0800</date>
            <delta_ts>2011-03-03 11:14:01 -0800</delta_ts>
            <desc>[PATCH] For Try Bots</desc>
            <filename>patch-for-bots.patch</filename>
            <type>text/plain</type>
            <size>25505</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1ZGIzY2VlLi5kZjg1NDE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDIt
MTYgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWaWV3cG9ydCBXYXJuaW5nL0Vycm9y
IE1lc3NhZ2VzIEFyZSBOb3cgSW5hY2N1cmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MDcKKworICAgICAgICBBZGRlZCB0ZXN0cyBzcGVjaWZp
Y2FsbHkgdG8gdGVzdCBDb25zb2xlIHdhcm5pbmdzLgorCisgICAgICAgICogZmFzdC92aWV3cG9y
dC92aWV3cG9ydC13YXJuaW5ncy0xLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvdmlld3Bv
cnQvdmlld3BvcnQtd2FybmluZ3MtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3ZpZXdw
b3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC92aWV3
cG9ydC92aWV3cG9ydC13YXJuaW5ncy00Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvdmll
d3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Zp
ZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTYuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC92
aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy03Lmh0bWw6IEFkZGVkLgorCiAyMDExLTAzLTAxICBK
b3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBleHBlY3RhdGlvbnMgdXBkYXRlLiBUaGlzIGlzIGEgZm9sbG93LXVwIHRvIHI4MDA2MS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtMS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy0xLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY5Nzk3NQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtMS5odG1s
CkBAIC0wLDAgKzEsMTMgQEAKKzxoZWFkPgorICAgIDx0aXRsZT5ObyB3YXJuaW5ncyBvciBlcnJv
cnMuPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2
aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIG1heGltdW0tc2NhbGU9MiI+CisgICAgPHNjcmlw
dD4KKyAgICAgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydCgxNjAsIDMyMCwgNDgwLCAzMjAsIDM1Mik7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0idGVzdCgpOyI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L3ZpZXdw
b3J0LXdhcm5pbmdzLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQt
d2FybmluZ3MtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NzVh
ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0
LXdhcm5pbmdzLTIuaHRtbApAQCAtMCwwICsxLDEzIEBACis8aGVhZD4KKyAgICA8dGl0bGU+VW5y
ZWNvZ25pemVkIGtleS48L3RpdGxlPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50
PSJ3d2lkdGg9MTAwIj4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KDE2MCwg
MzIwLCA0ODAsIDMyMCwgMzUyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtMy5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy0zLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uOWY1ODM5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtMy5odG1sCkBAIC0wLDAgKzEsMTMg
QEAKKzxoZWFkPgorICAgIDx0aXRsZT5VbnJlY29nbml6ZWQgdmFsdWUuPC90aXRsZT4KKyAgICA8
bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9dW5yZWNvZ25pemVkLXdpZHRoIj4K
KyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KDE2MCwgMzIwLCA0ODAsIDMyMCwg
MzUyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvdmll
d3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9y
dC92aWV3cG9ydC13YXJuaW5ncy00Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYmIxNWQ3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3Bv
cnQvdmlld3BvcnQtd2FybmluZ3MtNC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxoZWFkPgorICAg
IDx0aXRsZT5UcnVuY2F0ZWQgdmFsdWUuPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9y
dCIgY29udGVudD0id2lkdGg9MTIzeDQ1NiI+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rp
b24gdGVzdCgpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENvbmZpZ3VyYXRpb25Gb3JW
aWV3cG9ydCgxNjAsIDMyMCwgNDgwLCAzMjAsIDM1Mik7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpOyI+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5YTk4NGIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTUuaHRtbApA
QCAtMCwwICsxLDEzIEBACis8aGVhZD4KKyAgICA8dGl0bGU+U3VnZ2VzdCB1c2luZyBrZXl3b3Jk
cyB3aGVuIGZpeGVkIG51bWJlciBtYXRjaGVzIGRldmljZSB3aWR0aCBvciBoZWlnaHQuPC90aXRs
ZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9MzIwLCBoZWlnaHQ9
MzUyIj4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KDE2MCwgMzIwLCA0ODAs
IDMyMCwgMzUyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC92
aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy02Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uODI5NTA4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
dmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxoZWFk
PgorICAgIDx0aXRsZT5NdWx0aXBsZSB3YXJuaW5ncyBhbmQgZXJyb3JzIGR1ZSB0byBpbmNvcnJl
Y3Qgc2VtaWNvbG9uIHNlcGFyYXRvcnMuPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9y
dCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoOyBpbml0aWFsLXNjYWxlPTEuMDsgbWF4aW11
bS1zY2FsZT0xLjA7IHVzZXItc2NhbGFibGU9MDsiPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1
bmN0aW9uIHRlc3QoKSB7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDb25maWd1cmF0aW9u
Rm9yVmlld3BvcnQoMTYwLCAzMjAsIDQ4MCwgMzIwLCAzNTIpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKTsiPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy03
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTcuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmVlZWJkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy03Lmh0
bWwKQEAgLTAsMCArMSwxMyBAQAorPGhlYWQ+CisgICAgPHRpdGxlPk1pc3NpbmcgdmFsdWUgc2hv
dWxkIHByb2R1Y2UgYW4gZXJyb3IuPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIg
Y29udGVudD0id2lkdGg9Ij4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiB0ZXN0KCkg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KDE2
MCwgMzIwLCA0ODAsIDMyMCwgMzUyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIDwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBi
OTU2ZTlmLi45ZjUyMGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDMtMDIg
IEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWaWV3cG9ydCBXYXJuaW5nL0Vycm9yIE1l
c3NhZ2VzIEFyZSBOb3cgSW5hY2N1cmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MDcKKworICAgICAgICBDb3JyZWN0IGFuZCBpbXByb3ZlIHRo
ZSBlcnJvciBtZXNzYWdlcyBmb3Igdmlld3BvcnQKKyAgICAgICAgcGFyc2luZy4gQ2xhcmlmeSB0
aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGluY29ycmVjdAorICAgICAgICBrZXlzLCB2YWx1ZXMsIGFu
ZCB3aGVuIHRvIHVzZSB0aGUgZGV2aWNlLXdpZHRoIG9yCisgICAgICAgIGRldmljZS1oZWlnaHQg
Y29uc3RhbnRzLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5p
bmdzLTEuaHRtbAorICAgICAgICAgICAgICAgZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5n
cy0yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3Mt
My5odG1sCisgICAgICAgICAgICAgICBmYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTQu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy01Lmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNi5odG1s
CisgICAgICAgICAgICAgICBmYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTcuaHRtbAor
CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om51bWVyaWNQcmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZFNpemVWYWx1ZSk6IHN1Z2dl
c3QgdXNpbmcga2V5d29yZHMgaWYgdGhlIGZpeGVkIG51bWJlciB2YWx1ZXMgdHJ1ZWx5IG1hdGNo
IGRldmljZSB3aWR0aCBvciBoZWlnaHQuCisgICAgICAgIChXZWJDb3JlOjpzZXRWaWV3cG9ydEZl
YXR1cmUpOiByZXBvcnQgYSB3YXJuaW5nIGZvciBhbiB1bnJlY29nbml6ZWQga2V5LgorICAgICAg
ICAoV2ViQ29yZTo6dmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZSk6IGFkZGVkIHRlbXBsYXRl
IGZvciB1bnJlY29nbml6ZWQga2V5LgorICAgICAgICAoV2ViQ29yZTo6dmlld3BvcnRFcnJvck1l
c3NhZ2VMZXZlbCk6IGNsYXNzaWZ5IGFuIHVucmVjb2duaXplZCBrZXkgaXMgYW4gZXJyb3IuCisg
ICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVD
bGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6dmlld3BvcnREZXZpY2VT
aXplKTogdXNlZCBmb3IgY2hlY2tpbmcgdmlld3BvcnQgZGV2aWNlLXdpZHRoIGFuZCBkZXZpY2Ut
aGVpZ2h0IHZhbHVlcy4KKwogMjAxMS0wMy0wMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3
LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjgwMDc5
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKaW5kZXggMDZjNWVhMi4u
ZDNiMTExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKIAogI2luY2x1ZGUg
IkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnNvbGUu
aCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMTkw
LDcgKzE5MSw3IEBAIHN0YXRpYyBmbG9hdCBudW1lcmljUHJlZml4KGNvbnN0IFN0cmluZyYga2V5
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBECiAgICAgaWYgKCEqb2spIHsKICAg
ICAgICAgaWYgKCFkaWRSZWFkTnVtYmVyKSB7CiAgICAgICAgICAgICBBU1NFUlQoIXZhbHVlKTsK
LSAgICAgICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgVW5yZWNvZ25pemVk
Vmlld3BvcnRBcmd1bWVudEVycm9yLCB2YWx1ZVN0cmluZywga2V5U3RyaW5nKTsKKyAgICAgICAg
ICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgVW5yZWNvZ25pemVkVmlld3BvcnRB
cmd1bWVudFZhbHVlRXJyb3IsIHZhbHVlU3RyaW5nLCBrZXlTdHJpbmcpOwogICAgICAgICAgICAg
cmV0dXJuIHZhbHVlOwogICAgICAgICB9CiAgICAgICAgICpvayA9IHRydWU7CkBAIC0yMjEsMTAg
KzIyMiwxMyBAQCBzdGF0aWMgZmxvYXQgZmluZFNpemVWYWx1ZShjb25zdCBTdHJpbmcmIGtleVN0
cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywgRAogICAgIGlmICh2YWx1ZSA8IDApCiAg
ICAgICAgIHJldHVybiBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwogCi0gICAgaWYgKGtl
eVN0cmluZyA9PSAid2lkdGgiKQotICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1l
bnQsIERldmljZVdpZHRoU2hvdWxkQmVVc2VkV2FybmluZywgU3RyaW5nKCksIFN0cmluZygpKTsK
LSAgICBlbHNlIGlmIChrZXlTdHJpbmcgPT0gImhlaWdodCIpCi0gICAgICAgIHJlcG9ydFZpZXdw
b3J0V2FybmluZyhkb2N1bWVudCwgRGV2aWNlSGVpZ2h0U2hvdWxkQmVVc2VkV2FybmluZywgU3Ry
aW5nKCksIFN0cmluZygpKTsKKyAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCkp
IHsKKyAgICAgICAgRmxvYXRTaXplIGRldmljZVNpemUgPSBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50
KCktPnZpZXdwb3J0RGV2aWNlU2l6ZSgpOworICAgICAgICBpZiAodmFsdWUgPT0gZGV2aWNlU2l6
ZS53aWR0aCgpICYmIGtleVN0cmluZyA9PSAid2lkdGgiKQorICAgICAgICAgICAgcmVwb3J0Vmll
d3BvcnRXYXJuaW5nKGRvY3VtZW50LCBEZXZpY2VXaWR0aFNob3VsZEJlVXNlZFdhcm5pbmcsIFN0
cmluZygpLCBTdHJpbmcoKSk7CisgICAgICAgIGVsc2UgaWYgKHZhbHVlID09IGRldmljZVNpemUu
aGVpZ2h0KCkgJiYga2V5U3RyaW5nID09ICJoZWlnaHQiKQorICAgICAgICAgICAgcmVwb3J0Vmll
d3BvcnRXYXJuaW5nKGRvY3VtZW50LCBEZXZpY2VIZWlnaHRTaG91bGRCZVVzZWRXYXJuaW5nLCBT
dHJpbmcoKSwgU3RyaW5nKCkpOworICAgIH0KIAogICAgIHJldHVybiB2YWx1ZTsKIH0KQEAgLTMz
Miw2ICszMzYsOCBAQCB2b2lkIHNldFZpZXdwb3J0RmVhdHVyZShjb25zdCBTdHJpbmcmIGtleVN0
cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywgRG9jdQogICAgICAgICBhcmd1bWVudHMt
PnVzZXJTY2FsYWJsZSA9IGZpbmRVc2VyU2NhbGFibGVWYWx1ZShrZXlTdHJpbmcsIHZhbHVlU3Ry
aW5nLCBkb2N1bWVudCk7CiAgICAgZWxzZSBpZiAoa2V5U3RyaW5nID09ICJ0YXJnZXQtZGVuc2l0
eWRwaSIpCiAgICAgICAgIGFyZ3VtZW50cy0+dGFyZ2V0RGVuc2l0eURwaSA9IGZpbmRUYXJnZXRE
ZW5zaXR5RFBJVmFsdWUoa2V5U3RyaW5nLCB2YWx1ZVN0cmluZywgZG9jdW1lbnQpOworICAgIGVs
c2UKKyAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBVbnJlY29nbml6ZWRW
aWV3cG9ydEFyZ3VtZW50S2V5RXJyb3IsIGtleVN0cmluZywgU3RyaW5nKCkpOwogfQogCiBzdGF0
aWMgY29uc3QgY2hhciogdmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZShWaWV3cG9ydEVycm9y
Q29kZSBlcnJvckNvZGUpCkBAIC0zMzksNiArMzQ1LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHZp
ZXdwb3J0RXJyb3JNZXNzYWdlVGVtcGxhdGUoVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlKQog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBlcnJvcnNbXSA9IHsKICAgICAgICAgIlZpZXdw
b3J0IHdpZHRoIG9yIGhlaWdodCBzZXQgdG8gcGh5c2ljYWwgZGV2aWNlIHdpZHRoLCB0cnkgdXNp
bmcgXCJkZXZpY2Utd2lkdGhcIiBjb25zdGFudCBpbnN0ZWFkIGZvciBmdXR1cmUgY29tcGF0aWJp
bGl0eS4iLAogICAgICAgICAiVmlld3BvcnQgaGVpZ2h0IG9yIGhlaWdodCBzZXQgdG8gcGh5c2lj
YWwgZGV2aWNlIGhlaWdodCwgdHJ5IHVzaW5nIFwiZGV2aWNlLWhlaWdodFwiIGNvbnN0YW50IGlu
c3RlYWQgZm9yIGZ1dHVyZSBjb21wYXRpYmlsaXR5LiIsCisgICAgICAgICJWaWV3cG9ydCBhcmd1
bWVudCBrZXkgXCIlcmVwbGFjZW1lbnQxXCIgbm90IHJlY29nbml6ZWQgYW5kIGlnbm9yZWQuIiwK
ICAgICAgICAgIlZpZXdwb3J0IGFyZ3VtZW50IHZhbHVlIFwiJXJlcGxhY2VtZW50MVwiIGZvciBr
ZXkgXCIlcmVwbGFjZW1lbnQyXCIgbm90IHJlY29nbml6ZWQuIENvbnRlbnQgaWdub3JlZC4iLAog
ICAgICAgICAiVmlld3BvcnQgYXJndW1lbnQgdmFsdWUgXCIlcmVwbGFjZW1lbnQxXCIgZm9yIGtl
eSBcIiVyZXBsYWNlbWVudDJcIiB3YXMgdHJ1bmNhdGVkIHRvIGl0cyBudW1lcmljIHByZWZpeC4i
LAogICAgICAgICAiVmlld3BvcnQgbWF4aW11bS1zY2FsZSBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4g
MTAuMC4gVGhlIG1heGltdW0tc2NhbGUgd2lsbCBiZSBzZXQgdG8gMTAuMC4iLApAQCAtMzU2LDcg
KzM2Myw4IEBAIHN0YXRpYyBNZXNzYWdlTGV2ZWwgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChW
aWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUpCiAgICAgY2FzZSBUcnVuY2F0ZWRWaWV3cG9ydEFy
Z3VtZW50VmFsdWVFcnJvcjoKICAgICBjYXNlIFRhcmdldERlbnNpdHlEcGlUb29TbWFsbE9yTGFy
Z2VFcnJvcjoKICAgICAgICAgcmV0dXJuIFRpcE1lc3NhZ2VMZXZlbDsKLSAgICBjYXNlIFVucmVj
b2duaXplZFZpZXdwb3J0QXJndW1lbnRFcnJvcjoKKyAgICBjYXNlIFVucmVjb2duaXplZFZpZXdw
b3J0QXJndW1lbnRLZXlFcnJvcjoKKyAgICBjYXNlIFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1l
bnRWYWx1ZUVycm9yOgogICAgIGNhc2UgTWF4aW11bVNjYWxlVG9vTGFyZ2VFcnJvcjoKICAgICAg
ICAgcmV0dXJuIEVycm9yTWVzc2FnZUxldmVsOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdw
b3J0QXJndW1lbnRzLmgKaW5kZXggMzM5MzQ1Yy4uYTljODgyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1ZpZXdwb3J0QXJndW1lbnRzLmgKQEAgLTM3LDcgKzM3LDggQEAgY2xhc3MgRG9jdW1lbnQ7CiBl
bnVtIFZpZXdwb3J0RXJyb3JDb2RlIHsKICAgICBEZXZpY2VXaWR0aFNob3VsZEJlVXNlZFdhcm5p
bmcsCiAgICAgRGV2aWNlSGVpZ2h0U2hvdWxkQmVVc2VkV2FybmluZywKLSAgICBVbnJlY29nbml6
ZWRWaWV3cG9ydEFyZ3VtZW50RXJyb3IsCisgICAgVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVu
dEtleUVycm9yLAorICAgIFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yLAog
ICAgIFRydW5jYXRlZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yLAogICAgIE1heGltdW1TY2Fs
ZVRvb0xhcmdlRXJyb3IsCiAgICAgVGFyZ2V0RGVuc2l0eURwaVRvb1NtYWxsT3JMYXJnZUVycm9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCAwMWJiZDc4Li4zNDViNGI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTE1OSw2ICsxNTksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIC8vIEVuZCBtZXRob2RzIHVzZWQgYnkgSG9zdFdpbmRvdy4KIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2UoY29uc3Qg
Vmlld3BvcnRBcmd1bWVudHMmKSBjb25zdCB7IH0KKyAgICAgICAgdmlydHVhbCBGbG9hdFNpemUg
dmlld3BvcnREZXZpY2VTaXplKCkgY29uc3QgeyByZXR1cm4gRmxvYXRTaXplKCk7IH0KIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChGcmFtZSosIGNvbnN0IEludFNp
emUmKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSZWN0SW50b1ZpZXco
Y29uc3QgSW50UmVjdCYsIGNvbnN0IFNjcm9sbFZpZXcqKSBjb25zdCA9IDA7IC8vIEN1cnJlbnRs
eSBvbmx5IE1hYyBoYXMgYSBub24gZW1wdHkgaW1wbGVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
aW5kZXggMWFjY2FkOC4uZDk5ODJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDExLTAzLTAyICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmlld3BvcnQgV2Fy
bmluZy9FcnJvciBNZXNzYWdlcyBBcmUgTm93IEluYWNjdXJhdGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNzA3CisKKyAgICAgICAgUmVmYWN0b3Ig
ZGV2aWNlIHNpemUgaW50byB0aGUgbmV3IENocm9tZUNsaWVudCBtZXRob2QuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50RWZsOjp2aWV3cG9ydERldmljZVNpemUpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgorICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Cisg
ICAgICAgIChfZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19jb21wdXRlKToKKwogMjAxMS0w
My0wMSAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQuIFJvbGwgb3V0IHI4MDA2OCBhbmQgcjgwMDczIGR1ZSB0byBicmVha2luZyBXZWJL
aXQyIFF0IHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmNwcAppbmRleCA2NDI1YzM5Li45NDhkYWYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAg
LTUyNyw2ICs1MjcsMTMgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmRpc3BhdGNoVmlld3BvcnRE
YXRhRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJiBhcmcKICAgICBld2tfdmlld192
aWV3cG9ydF9hdHRyaWJ1dGVzX3NldChtX3ZpZXcsIGFyZ3VtZW50cyk7CiB9CiAKK0Zsb2F0U2l6
ZSBDaHJvbWVDbGllbnRFZmw6OnZpZXdwb3J0RGV2aWNlU2l6ZSgpIGNvbnN0Cit7CisgICAgaW50
IGRldmljZV93aWR0aCA9IChpbnQpIHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+d2lu
ZG93UmVjdCgpLndpZHRoKCk7CisgICAgaW50IGRldmljZV9oZWlnaHQgPSAoaW50KSBwcml2LT5w
YWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPndpbmRvd1JlY3QoKS5oZWlnaHQoKTsKKyAgICByZXR1
cm4gRmxvYXRTaXplKChmbG9hdCkgZGV2aWNlX3dpZHRoLCAoZmxvYXQpIGRldmljZV9oZWlnaHQp
OworfQorCiBib29sIENocm9tZUNsaWVudEVmbDo6c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25J
c05hdHVyYWwoKQogewogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAppbmRleCBjMTdmZTEwLi43YWYzY2M4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuaApAQCAtMTQ1LDYgKzE0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaWNv
bkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmcsIDB1PiYsIFBhc3NSZWZQdHI8RmlsZUNob29z
ZXI+KTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFZpZXdwb3J0RGF0YURpZENoYW5nZShj
b25zdCBWaWV3cG9ydEFyZ3VtZW50cyYpIGNvbnN0OworICAgIHZpcnR1YWwgRmxvYXRTaXplIHZp
ZXdwb3J0RGV2aWNlU2l6ZSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1X
cml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCk7CiAgICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1B
bGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXcuY3BwCmluZGV4IGFiMDYyOWEuLjMyNWM1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3LmNwcApAQCAtMTAyMCw4ICsxMDIwLDggQEAgc3RhdGljIFdlYkNvcmU6OlZpZXdwb3J0QXR0
cmlidXRlcyBfZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19jb21wdXRlKEV2YXNfT2IKICAg
ICBpbnQgYXZhaWxhYmxlX3dpZHRoID0gKGludCkgcHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVu
dCgpLT5wYWdlUmVjdCgpLndpZHRoKCk7CiAgICAgaW50IGF2YWlsYWJsZV9oZWlnaHQgPSAoaW50
KSBwcml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBhZ2VSZWN0KCkuaGVpZ2h0KCk7CiAK
LSAgICBpbnQgZGV2aWNlX3dpZHRoID0gKGludCkgcHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVu
dCgpLT53aW5kb3dSZWN0KCkud2lkdGgoKTsKLSAgICBpbnQgZGV2aWNlX2hlaWdodCA9IChpbnQp
IHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+d2luZG93UmVjdCgpLmhlaWdodCgpOwor
ICAgIGludCBkZXZpY2Vfd2lkdGggPSAoaW50KSBwcml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50
KCktPnZpZXdwb3J0RGV2aWNlU2l6ZSgpLndpZHRoKCk7CisgICAgaW50IGRldmljZV9oZWlnaHQg
PSAoaW50KSBwcml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnZpZXdwb3J0RGV2aWNlU2l6
ZSgpLmhlaWdodCgpOwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBhdmFpbGFibGVfc2l6ZSA9IFdl
YkNvcmU6OkludFNpemUoYXZhaWxhYmxlX3dpZHRoLCBhdmFpbGFibGVfaGVpZ2h0KTsKICAgICBX
ZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IFdlYkNvcmU6OmNvbXB1dGVW
aWV3cG9ydEF0dHJpYnV0ZXMocHJpdi0+dmlld3BvcnRfYXJndW1lbnRzLCBkZXNrdG9wX3dpZHRo
LCBkZXZpY2Vfd2lkdGgsIGRldmljZV9oZWlnaHQsIGRldmljZV9kcGksIGF2YWlsYWJsZV9zaXpl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwppbmRleCAzYTFhZDJlLi4zYzFkZTQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDMtMDIgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBWaWV3cG9ydCBXYXJuaW5nL0Vycm9yIE1lc3NhZ2VzIEFyZSBOb3cgSW5hY2N1cmF0ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MDcKKwor
ICAgICAgICBSZWZhY3RvciBkZXZpY2Ugc2l6ZSBpbnRvIHRoZSBuZXcgQ2hyb21lQ2xpZW50IG1l
dGhvZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6dmlld3BvcnREZXZpY2VTaXplKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKyAgICAgICAgKiB3ZWJraXQv
d2Via2l0dmlld3BvcnRhdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKHdlYmtpdFZpZXdwb3J0QXR0
cmlidXRlc1JlY29tcHV0ZSk6CisKIDIwMTEtMDMtMDEgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBl
Y2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBSb2xsIG91dCByODAwNjggYW5k
IHI4MDA3MyBkdWUgdG8gYnJlYWtpbmcgV2ViS2l0MiBRdCBwb3J0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggMTY3
OWFmZC4uNjk5Mjg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC02NTIsNiArNjUyLDE3IEBAIHZvaWQgQ2hyb21l
Q2xpZW50OjpkaXNwYXRjaFZpZXdwb3J0RGF0YURpZENoYW5nZShjb25zdCBWaWV3cG9ydEFyZ3Vt
ZW50cyYgYXJndW1lCiAgICAgd2Via2l0Vmlld3BvcnRBdHRyaWJ1dGVzUmVjb21wdXRlKHdlYmtp
dF93ZWJfdmlld19nZXRfdmlld3BvcnRfYXR0cmlidXRlcyhtX3dlYlZpZXcpKTsKIH0KIAorRmxv
YXRTaXplIENocm9tZUNsaWVudDo6dmlld3BvcnREZXZpY2VTaXplKCkgY29uc3QKK3sKKyAgICBX
ZWJLaXRWaWV3cG9ydEF0dHJpYnV0ZXNQcml2YXRlKiBwcml2ID0gd2Via2l0X3dlYl92aWV3X2dl
dF92aWV3cG9ydF9hdHRyaWJ1dGVzKG1fd2ViVmlldyk7CisgICAgaWYgKCFwcml2KQorICAgICAg
ICByZXR1cm4gRmxvYXRTaXplKCk7CisKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gcHJp
di0+d2ViVmlldzsKKyAgICBJbnRSZWN0IHdpbmRvd1JlY3RBc0ludFJlY3Qod2ViVmlldy0+cHJp
di0+Y29yZVBhZ2UtPmNocm9tZSgpLT53aW5kb3dSZWN0KCkpOworICAgIHJldHVybiBGbG9hdFNp
emUod2luZG93UmVjdEFzSW50UmVjdC5zaXplKCkpOworfQorCiB2b2lkIENocm9tZUNsaWVudDo6
c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5o
IGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKaW5k
ZXggNDAxN2Y3NC4uZWVkZDY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKQEAgLTExMSw2ICsxMTEsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFRvb2xUaXAoY29uc3QgV1RGOjpTdHJp
bmcmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVu
dHMmIGFyZ3VtZW50cykgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgRmxvYXRTaXplIHZpZXdwb3J0
RGV2aWNlU2l6ZSgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmludChXZWJDb3Jl
OjpGcmFtZSopOwogI2lmIEVOQUJMRShEQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR2aWV3cG9ydGF0dHJpYnV0ZXMuY3BwIGIvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHZpZXdwb3J0YXR0cmlidXRlcy5jcHAKaW5kZXggOWE5OGU0NC4u
N2U4NDYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHZpZXdw
b3J0YXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHZp
ZXdwb3J0YXR0cmlidXRlcy5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJ3ZWJraXR2
aWV3cG9ydGF0dHJpYnV0ZXMuaCIKIAogI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNo
cm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIndlYmtpdGdsb2JhbHNwcml2YXRlLmgiCkBAIC01MjEsOSArNTIyLDkgQEAgdm9pZCB3
ZWJraXRWaWV3cG9ydEF0dHJpYnV0ZXNSZWNvbXB1dGUoV2ViS2l0Vmlld3BvcnRBdHRyaWJ1dGVz
KiB2aWV3cG9ydEF0dHJpYnUKICAgICBXZWJLaXRWaWV3cG9ydEF0dHJpYnV0ZXNQcml2YXRlKiBw
cml2ID0gdmlld3BvcnRBdHRyaWJ1dGVzLT5wcml2OwogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcgPSBwcml2LT53ZWJWaWV3OwogCi0gICAgSW50UmVjdCB3aW5kb3dSZWN0KHdlYlZpZXctPnBy
aXYtPmNvcmVQYWdlLT5jaHJvbWUoKS0+d2luZG93UmVjdCgpKTsKLSAgICBwcml2LT5kZXZpY2VX
aWR0aCA9IHdpbmRvd1JlY3Qud2lkdGgoKTsKLSAgICBwcml2LT5kZXZpY2VIZWlnaHQgPSB3aW5k
b3dSZWN0LmhlaWdodCgpOworICAgIEZsb2F0U2l6ZSBkZXZpY2VTaXplID0gd2ViVmlldy0+cHJp
di0+Y29yZVBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+ZGV2aWNlVmlld3BvcnRTaXplKCk7Cisg
ICAgcHJpdi0+ZGV2aWNlV2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KGRldmljZVNpemUud2lkdGgo
KSk7CisgICAgcHJpdi0+ZGV2aWNlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihkZXZpY2VTaXpl
LmhlaWdodCgpKTsKIAogICAgIEludFJlY3QgcmVjdCh3ZWJWaWV3LT5wcml2LT5jb3JlUGFnZS0+
Y2hyb21lKCktPnBhZ2VSZWN0KCkpOwogICAgIHByaXYtPmF2YWlsYWJsZVdpZHRoID0gcmVjdC53
aWR0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IGY0ZDI2MzEuLjk3ODZmZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTExNiw3ICsxMTYsNiBAQAogI2luY2x1
ZGUgPFFCYXNpY1RpbWVyPgogI2luY2x1ZGUgPFFCaXRBcnJheT4KICNpbmNsdWRlIDxRRGVidWc+
Ci0jaW5jbHVkZSA8UURlc2t0b3BXaWRnZXQ+CiAjaW5jbHVkZSA8UURyYWdFbnRlckV2ZW50Pgog
I2luY2x1ZGUgPFFEcmFnTGVhdmVFdmVudD4KICNpbmNsdWRlIDxRRHJhZ01vdmVFdmVudD4KQEAg
LTI0NDIsMzggKzI0NDEsNiBAQCB2b2lkIFFXZWJQYWdlOjpzZXRWaWV3cG9ydFNpemUoY29uc3Qg
UVNpemUgJnNpemUpIGNvbnN0CiAgICAgfQogfQogCi1zdGF0aWMgaW50IGdldGludGVudihjb25z
dCBjaGFyKiB2YXJpYWJsZSkKLXsKLSAgICBib29sIG9rOwotICAgIGludCB2YWx1ZSA9IHFnZXRl
bnYodmFyaWFibGUpLnRvSW50KCZvayk7Ci0gICAgcmV0dXJuIChvaykgPyB2YWx1ZSA6IC0xOwot
fQotCi1zdGF0aWMgUVNpemUgcXVlcnlEZXZpY2VTaXplRm9yU2NyZWVuQ29udGFpbmluZ1dpZGdl
dChjb25zdCBRV2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAgUURlc2t0b3BXaWRnZXQqIGRlc2t0b3Ag
PSBRQXBwbGljYXRpb246OmRlc2t0b3AoKTsKLSAgICBpZiAoIWRlc2t0b3ApCi0gICAgICAgIHJl
dHVybiBRU2l6ZSgpOwotCi0gICAgUVNpemUgc2l6ZTsKLQotICAgIGlmICh3aWRnZXQpIHsKLSAg
ICAgICAgLy8gUmV0dXJucyB0aGUgYXZhaWxhYmxlIGdlb21ldHJ5IG9mIHRoZSBzY3JlZW4gd2hp
Y2ggY29udGFpbnMgd2lkZ2V0LgotICAgICAgICAvLyBOT1RFOiB0aGlzIG11c3QgYmUgdGhlIHRo
ZSBmdWxsIHNjcmVlbiBzaXplIGluY2x1ZGluZyBhbnkgZml4ZWQgc3RhdHVzIGFyZWFzIGV0Yy4K
LSAgICAgICAgc2l6ZSA9IGRlc2t0b3AtPmF2YWlsYWJsZUdlb21ldHJ5KHdpZGdldCkuc2l6ZSgp
OwotICAgIH0gZWxzZQotICAgICAgICBzaXplID0gZGVza3RvcC0+YXZhaWxhYmxlR2VvbWV0cnko
KS5zaXplKCk7Ci0KLSAgICAvLyBUaGlzIG11c3QgYmUgaW4gcG9ydHJhaXQgbW9kZSwgYWRqdXN0
IGlmIG5vdC4KLSAgICBpZiAoc2l6ZS53aWR0aCgpID4gc2l6ZS5oZWlnaHQoKSkgewotICAgICAg
ICBpbnQgd2lkdGggPSBzaXplLndpZHRoKCk7Ci0gICAgICAgIHNpemUuc2V0V2lkdGgoc2l6ZS5o
ZWlnaHQoKSk7Ci0gICAgICAgIHNpemUuc2V0SGVpZ2h0KHdpZHRoKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gc2l6ZTsKLX0KLQogLyohCiAgICAgQ29tcHV0ZXMgdGhlIG9wdGltYWwgdmlld3BvcnQg
Y29uZmlndXJhdGlvbiBnaXZlbiB0aGUgXGEgYXZhaWxhYmxlU2l6ZSwgd2hlbgogICAgIHVzZXIg
aW50ZXJmYWNlIGNvbXBvbmVudHMgYXJlIGRpc3JlZ2FyZGVkLgpAQCAtMjUxMywxNSArMjQ4MCw5
IEBAIFFXZWJQYWdlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgUVdlYlBhZ2U6OnZpZXdwb3J0QXR0cmli
dXRlc0ZvclNpemUoY29uc3QgUVNpemUmIGF2CiAgICAgIGlmIChhdmFpbGFibGVTaXplLmlzRW1w
dHkoKSkKICAgICAgICAgIHJldHVybiByZXN1bHQ7IC8vIFJldHVybnMgYW4gaW52YWxpZCBpbnN0
YW5jZS4KIAotICAgIGludCBkZXZpY2VXaWR0aCA9IGdldGludGVudigiUVRXRUJLSVRfREVWSUNF
X1dJRFRIIik7Ci0gICAgaW50IGRldmljZUhlaWdodCA9IGdldGludGVudigiUVRXRUJLSVRfREVW
SUNFX0hFSUdIVCIpOwotCi0gICAgLy8gQm90aCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbmVlZCB0
byBiZSBzZXQgLSBvciB0aGV5IHdpbGwgYmUgaWdub3JlZC4KLSAgICBpZiAoZGV2aWNlV2lkdGgg
PCAwICYmIGRldmljZUhlaWdodCA8IDApIHsKLSAgICAgICAgUVNpemUgc2l6ZSA9IHF1ZXJ5RGV2
aWNlU2l6ZUZvclNjcmVlbkNvbnRhaW5pbmdXaWRnZXQoKGQtPmNsaWVudCkgPyBkLT5jbGllbnQt
Pm93bmVyV2lkZ2V0KCkgOiAwKTsKLSAgICAgICAgZGV2aWNlV2lkdGggPSBzaXplLndpZHRoKCk7
Ci0gICAgICAgIGRldmljZUhlaWdodCA9IHNpemUuaGVpZ2h0KCk7Ci0gICAgfQorICAgIFdlYkNv
cmU6OkZsb2F0U2l6ZSBkZXZpY2VTaXplID0gZC0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT52
aWV3cG9ydERldmljZVNpemUoKTsKKyAgICBpbnQgZGV2aWNlV2lkdGggPSBzdGF0aWNfY2FzdDxp
bnQ+KGRldmljZVNpemUud2lkdGgoKSk7CisgICAgaW50IGRldmljZUhlaWdodCA9IHN0YXRpY19j
YXN0PGludD4oZGV2aWNlU2l6ZS5oZWlnaHQoKSk7CiAKICAgICBXZWJDb3JlOjpWaWV3cG9ydEF0
dHJpYnV0ZXMgY29uZiA9IFdlYkNvcmU6OmNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXMoZC0+dmll
d3BvcnRBcmd1bWVudHMoKSwgZGVza3RvcFdpZHRoLCBkZXZpY2VXaWR0aCwgZGV2aWNlSGVpZ2h0
LCBxdF9kZWZhdWx0RHBpKCksIGF2YWlsYWJsZVNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDg1
NWQ1MzIuLjUyMTUyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDMt
MDIgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWaWV3cG9ydCBXYXJuaW5nL0Vycm9y
IE1lc3NhZ2VzIEFyZSBOb3cgSW5hY2N1cmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MDcKKworICAgICAgICBSZWZhY3RvciBkZXZpY2Ugc2l6
ZSBpbnRvIHRoZSBuZXcgQ2hyb21lQ2xpZW50IG1ldGhvZC4KKworICAgICAgICAqIEFwaS9xd2Vi
cGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6dmlld3BvcnRBdHRyaWJ1dGVzRm9yU2l6ZSk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0aW50ZW52KToKKyAgICAgICAgKFdlYkNvcmU6OnF1ZXJ5RGV2aWNlU2l6ZUZv
clNjcmVlbkNvbnRhaW5pbmdXaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
UXQ6OnZpZXdwb3J0RGV2aWNlU2l6ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50UXQuaDoKKwogMjAxMS0wMy0wMSAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJvbGwgb3V0IHI4MDA2OCBhbmQgcjgwMDcz
IGR1ZSB0byBicmVha2luZyBXZWJLaXQyIFF0IHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCmluZGV4IGZiOWI5NmMuLmVjZDAz
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuY3BwCkBAIC03NCw2ICs3NCw3IEBACiAjaW5jbHVkZSA8cXRleHRkb2N1bWVudC5oPgog
I2luY2x1ZGUgPHF0b29sdGlwLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUg
PFFEZXNrdG9wV2lkZ2V0PgogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUoUVRfTVVMVElN
RURJQSkKICNpbmNsdWRlICJGdWxsU2NyZWVuVmlkZW9RdC5oIgpAQCAtNzExLDExICs3MTIsNTgg
QEAgUVdlYlNlbGVjdE1ldGhvZCogQ2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVNlbGVjdFBvcHVwKCkg
Y29uc3QKICNlbmRpZgogfQogCitzdGF0aWMgaW50IGdldGludGVudihjb25zdCBjaGFyKiB2YXJp
YWJsZSkKK3sKKyAgICBib29sIG9rOworICAgIGludCB2YWx1ZSA9IHFnZXRlbnYodmFyaWFibGUp
LnRvSW50KCZvayk7CisgICAgcmV0dXJuIChvaykgPyB2YWx1ZSA6IC0xOworfQorCitzdGF0aWMg
UVNpemUgcXVlcnlEZXZpY2VTaXplRm9yU2NyZWVuQ29udGFpbmluZ1dpZGdldChjb25zdCBRV2lk
Z2V0KiB3aWRnZXQpCit7CisgICAgUURlc2t0b3BXaWRnZXQqIGRlc2t0b3AgPSBRQXBwbGljYXRp
b246OmRlc2t0b3AoKTsKKyAgICBpZiAoIWRlc2t0b3ApCisgICAgICAgIHJldHVybiBRU2l6ZSgp
OworCisgICAgUVNpemUgc2l6ZTsKKworICAgIGlmICh3aWRnZXQpIHsKKyAgICAgICAgLy8gUmV0
dXJucyB0aGUgYXZhaWxhYmxlIGdlb21ldHJ5IG9mIHRoZSBzY3JlZW4gd2hpY2ggY29udGFpbnMg
d2lkZ2V0LgorICAgICAgICAvLyBOT1RFOiB0aGlzIG11c3QgYmUgdGhlIHRoZSBmdWxsIHNjcmVl
biBzaXplIGluY2x1ZGluZyBhbnkgZml4ZWQgc3RhdHVzIGFyZWFzIGV0Yy4KKyAgICAgICAgc2l6
ZSA9IGRlc2t0b3AtPmF2YWlsYWJsZUdlb21ldHJ5KHdpZGdldCkuc2l6ZSgpOworICAgIH0gZWxz
ZQorICAgICAgICBzaXplID0gZGVza3RvcC0+YXZhaWxhYmxlR2VvbWV0cnkoKS5zaXplKCk7CisK
KyAgICAvLyBUaGlzIG11c3QgYmUgaW4gcG9ydHJhaXQgbW9kZSwgYWRqdXN0IGlmIG5vdC4KKyAg
ICBpZiAoc2l6ZS53aWR0aCgpID4gc2l6ZS5oZWlnaHQoKSkgeworICAgICAgICBpbnQgd2lkdGgg
PSBzaXplLndpZHRoKCk7CisgICAgICAgIHNpemUuc2V0V2lkdGgoc2l6ZS5oZWlnaHQoKSk7Cisg
ICAgICAgIHNpemUuc2V0SGVpZ2h0KHdpZHRoKTsKKyAgICB9CisKKyAgICByZXR1cm4gc2l6ZTsK
K30KKwogdm9pZCBDaHJvbWVDbGllbnRRdDo6ZGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2Uo
Y29uc3QgVmlld3BvcnRBcmd1bWVudHMmKSBjb25zdAogewogICAgIGVtaXQgbV93ZWJQYWdlLT52
aWV3cG9ydENoYW5nZVJlcXVlc3RlZCgpOwogfQogCitGbG9hdFNpemUgQ2hyb21lQ2xpZW50UXQ6
OnZpZXdwb3J0RGV2aWNlU2l6ZSgpIGNvbnN0Cit7CisgICAgaW50IGRldmljZVdpZHRoID0gZ2V0
aW50ZW52KCJRVFdFQktJVF9ERVZJQ0VfV0lEVEgiKTsKKyAgICBpbnQgZGV2aWNlSGVpZ2h0ID0g
Z2V0aW50ZW52KCJRVFdFQktJVF9ERVZJQ0VfSEVJR0hUIik7CisKKyAgICAvLyBCb3RoIGVudmly
b25tZW50IHZhcmlhYmxlcyBuZWVkIHRvIGJlIHNldCAtIG9yIHRoZXkgd2lsbCBiZSBpZ25vcmVk
LgorICAgIGlmIChkZXZpY2VXaWR0aCA8IDAgJiYgZGV2aWNlSGVpZ2h0IDwgMCkgeworICAgICAg
ICBRU2l6ZSBzaXplID0gcXVlcnlEZXZpY2VTaXplRm9yU2NyZWVuQ29udGFpbmluZ1dpZGdldCgo
ZC0+Y2xpZW50KSA/IGQtPmNsaWVudC0+b3duZXJXaWRnZXQoKSA6IDApOworICAgICAgICBkZXZp
Y2VXaWR0aCA9IHNpemUud2lkdGgoKTsKKyAgICAgICAgZGV2aWNlSGVpZ2h0ID0gc2l6ZS5oZWln
aHQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gRmxvYXRTaXplKGRldmljZVdpZHRoLCBkZXZpY2VI
ZWlnaHQpOworfQorCiBib29sIENocm9tZUNsaWVudFF0OjpzZWxlY3RJdGVtV3JpdGluZ0RpcmVj
dGlvbklzTmF0dXJhbCgpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oIGIvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCmluZGV4IGYxYjM3N2MuLjM2NzJh
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0LmgKQEAgLTE5NSw2ICsxOTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFFX
ZWJTZWxlY3RNZXRob2QqIGNyZWF0ZVNlbGVjdFBvcHVwKCkgY29uc3Q7CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoVmlld3BvcnREYXRhRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJn
dW1lbnRzJikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgRmxvYXRTaXplIHZpZXdwb3J0RGV2aWNl
U2l6ZSgpIGNvbnN0OwogCiAgICAgICAgIFFXZWJQYWdlKiBtX3dlYlBhZ2U7CiAgICAgICAgIFdl
YkNvcmU6OktVUkwgbGFzdEhvdmVyVVJMOwo=
</data>
<flag name="commit-queue"
          id="76515"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84592</attachid>
            <date>2011-03-03 11:14:01 -0800</date>
            <delta_ts>2011-03-03 13:47:21 -0800</delta_ts>
            <desc>[PATCH] Try For Bots</desc>
            <filename>patch-for-bots</filename>
            <type>text/plain</type>
            <size>25617</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1ZGIzY2VlLi5kZjg1NDE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDIt
MTYgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWaWV3cG9ydCBXYXJuaW5nL0Vycm9y
IE1lc3NhZ2VzIEFyZSBOb3cgSW5hY2N1cmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MDcKKworICAgICAgICBBZGRlZCB0ZXN0cyBzcGVjaWZp
Y2FsbHkgdG8gdGVzdCBDb25zb2xlIHdhcm5pbmdzLgorCisgICAgICAgICogZmFzdC92aWV3cG9y
dC92aWV3cG9ydC13YXJuaW5ncy0xLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvdmlld3Bv
cnQvdmlld3BvcnQtd2FybmluZ3MtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3ZpZXdw
b3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC92aWV3
cG9ydC92aWV3cG9ydC13YXJuaW5ncy00Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvdmll
d3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Zp
ZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTYuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC92
aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy03Lmh0bWw6IEFkZGVkLgorCiAyMDExLTAzLTAxICBK
b3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBleHBlY3RhdGlvbnMgdXBkYXRlLiBUaGlzIGlzIGEgZm9sbG93LXVwIHRvIHI4MDA2MS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtMS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy0xLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY5Nzk3NQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtMS5odG1s
CkBAIC0wLDAgKzEsMTMgQEAKKzxoZWFkPgorICAgIDx0aXRsZT5ObyB3YXJuaW5ncyBvciBlcnJv
cnMuPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2
aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIG1heGltdW0tc2NhbGU9MiI+CisgICAgPHNjcmlw
dD4KKyAgICAgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydCgxNjAsIDMyMCwgNDgwLCAzMjAsIDM1Mik7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0idGVzdCgpOyI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L3ZpZXdw
b3J0LXdhcm5pbmdzLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQt
d2FybmluZ3MtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NzVh
ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0
LXdhcm5pbmdzLTIuaHRtbApAQCAtMCwwICsxLDEzIEBACis8aGVhZD4KKyAgICA8dGl0bGU+VW5y
ZWNvZ25pemVkIGtleS48L3RpdGxlPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50
PSJ3d2lkdGg9MTAwIj4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KDE2MCwg
MzIwLCA0ODAsIDMyMCwgMzUyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtMy5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy0zLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uOWY1ODM5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtMy5odG1sCkBAIC0wLDAgKzEsMTMg
QEAKKzxoZWFkPgorICAgIDx0aXRsZT5VbnJlY29nbml6ZWQgdmFsdWUuPC90aXRsZT4KKyAgICA8
bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9dW5yZWNvZ25pemVkLXdpZHRoIj4K
KyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KDE2MCwgMzIwLCA0ODAsIDMyMCwg
MzUyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvdmll
d3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9y
dC92aWV3cG9ydC13YXJuaW5ncy00Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYmIxNWQ3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3Bv
cnQvdmlld3BvcnQtd2FybmluZ3MtNC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxoZWFkPgorICAg
IDx0aXRsZT5UcnVuY2F0ZWQgdmFsdWUuPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9y
dCIgY29udGVudD0id2lkdGg9MTIzeDQ1NiI+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rp
b24gdGVzdCgpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENvbmZpZ3VyYXRpb25Gb3JW
aWV3cG9ydCgxNjAsIDMyMCwgNDgwLCAzMjAsIDM1Mik7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpOyI+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5YTk4NGIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTUuaHRtbApA
QCAtMCwwICsxLDEzIEBACis8aGVhZD4KKyAgICA8dGl0bGU+U3VnZ2VzdCB1c2luZyBrZXl3b3Jk
cyB3aGVuIGZpeGVkIG51bWJlciBtYXRjaGVzIGRldmljZSB3aWR0aCBvciBoZWlnaHQuPC90aXRs
ZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9MzIwLCBoZWlnaHQ9
MzUyIj4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KDE2MCwgMzIwLCA0ODAs
IDMyMCwgMzUyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC92
aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy02Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uODI5NTA4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
dmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxoZWFk
PgorICAgIDx0aXRsZT5NdWx0aXBsZSB3YXJuaW5ncyBhbmQgZXJyb3JzIGR1ZSB0byBpbmNvcnJl
Y3Qgc2VtaWNvbG9uIHNlcGFyYXRvcnMuPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9y
dCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoOyBpbml0aWFsLXNjYWxlPTEuMDsgbWF4aW11
bS1zY2FsZT0xLjA7IHVzZXItc2NhbGFibGU9MDsiPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1
bmN0aW9uIHRlc3QoKSB7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDb25maWd1cmF0aW9u
Rm9yVmlld3BvcnQoMTYwLCAzMjAsIDQ4MCwgMzIwLCAzNTIpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKTsiPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy03
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTcuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmVlZWJkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy03Lmh0
bWwKQEAgLTAsMCArMSwxMyBAQAorPGhlYWQ+CisgICAgPHRpdGxlPk1pc3NpbmcgdmFsdWUgc2hv
dWxkIHByb2R1Y2UgYW4gZXJyb3IuPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIg
Y29udGVudD0id2lkdGg9Ij4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiB0ZXN0KCkg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KDE2
MCwgMzIwLCA0ODAsIDMyMCwgMzUyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIDwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBi
OTU2ZTlmLi45ZjUyMGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDMtMDIg
IEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWaWV3cG9ydCBXYXJuaW5nL0Vycm9yIE1l
c3NhZ2VzIEFyZSBOb3cgSW5hY2N1cmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MDcKKworICAgICAgICBDb3JyZWN0IGFuZCBpbXByb3ZlIHRo
ZSBlcnJvciBtZXNzYWdlcyBmb3Igdmlld3BvcnQKKyAgICAgICAgcGFyc2luZy4gQ2xhcmlmeSB0
aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGluY29ycmVjdAorICAgICAgICBrZXlzLCB2YWx1ZXMsIGFu
ZCB3aGVuIHRvIHVzZSB0aGUgZGV2aWNlLXdpZHRoIG9yCisgICAgICAgIGRldmljZS1oZWlnaHQg
Y29uc3RhbnRzLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5p
bmdzLTEuaHRtbAorICAgICAgICAgICAgICAgZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5n
cy0yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3Mt
My5odG1sCisgICAgICAgICAgICAgICBmYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTQu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy01Lmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNi5odG1s
CisgICAgICAgICAgICAgICBmYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTcuaHRtbAor
CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om51bWVyaWNQcmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZFNpemVWYWx1ZSk6IHN1Z2dl
c3QgdXNpbmcga2V5d29yZHMgaWYgdGhlIGZpeGVkIG51bWJlciB2YWx1ZXMgdHJ1ZWx5IG1hdGNo
IGRldmljZSB3aWR0aCBvciBoZWlnaHQuCisgICAgICAgIChXZWJDb3JlOjpzZXRWaWV3cG9ydEZl
YXR1cmUpOiByZXBvcnQgYSB3YXJuaW5nIGZvciBhbiB1bnJlY29nbml6ZWQga2V5LgorICAgICAg
ICAoV2ViQ29yZTo6dmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZSk6IGFkZGVkIHRlbXBsYXRl
IGZvciB1bnJlY29nbml6ZWQga2V5LgorICAgICAgICAoV2ViQ29yZTo6dmlld3BvcnRFcnJvck1l
c3NhZ2VMZXZlbCk6IGNsYXNzaWZ5IGFuIHVucmVjb2duaXplZCBrZXkgaXMgYW4gZXJyb3IuCisg
ICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVD
bGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6dmlld3BvcnREZXZpY2VT
aXplKTogdXNlZCBmb3IgY2hlY2tpbmcgdmlld3BvcnQgZGV2aWNlLXdpZHRoIGFuZCBkZXZpY2Ut
aGVpZ2h0IHZhbHVlcy4KKwogMjAxMS0wMy0wMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3
LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjgwMDc5
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKaW5kZXggMDZjNWVhMi4u
ZDNiMTExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKIAogI2luY2x1ZGUg
IkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnNvbGUu
aCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMTkw
LDcgKzE5MSw3IEBAIHN0YXRpYyBmbG9hdCBudW1lcmljUHJlZml4KGNvbnN0IFN0cmluZyYga2V5
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBECiAgICAgaWYgKCEqb2spIHsKICAg
ICAgICAgaWYgKCFkaWRSZWFkTnVtYmVyKSB7CiAgICAgICAgICAgICBBU1NFUlQoIXZhbHVlKTsK
LSAgICAgICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgVW5yZWNvZ25pemVk
Vmlld3BvcnRBcmd1bWVudEVycm9yLCB2YWx1ZVN0cmluZywga2V5U3RyaW5nKTsKKyAgICAgICAg
ICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgVW5yZWNvZ25pemVkVmlld3BvcnRB
cmd1bWVudFZhbHVlRXJyb3IsIHZhbHVlU3RyaW5nLCBrZXlTdHJpbmcpOwogICAgICAgICAgICAg
cmV0dXJuIHZhbHVlOwogICAgICAgICB9CiAgICAgICAgICpvayA9IHRydWU7CkBAIC0yMjEsMTAg
KzIyMiwxMyBAQCBzdGF0aWMgZmxvYXQgZmluZFNpemVWYWx1ZShjb25zdCBTdHJpbmcmIGtleVN0
cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywgRAogICAgIGlmICh2YWx1ZSA8IDApCiAg
ICAgICAgIHJldHVybiBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwogCi0gICAgaWYgKGtl
eVN0cmluZyA9PSAid2lkdGgiKQotICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1l
bnQsIERldmljZVdpZHRoU2hvdWxkQmVVc2VkV2FybmluZywgU3RyaW5nKCksIFN0cmluZygpKTsK
LSAgICBlbHNlIGlmIChrZXlTdHJpbmcgPT0gImhlaWdodCIpCi0gICAgICAgIHJlcG9ydFZpZXdw
b3J0V2FybmluZyhkb2N1bWVudCwgRGV2aWNlSGVpZ2h0U2hvdWxkQmVVc2VkV2FybmluZywgU3Ry
aW5nKCksIFN0cmluZygpKTsKKyAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCkp
IHsKKyAgICAgICAgRmxvYXRTaXplIGRldmljZVNpemUgPSBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50
KCktPnZpZXdwb3J0RGV2aWNlU2l6ZSgpOworICAgICAgICBpZiAodmFsdWUgPT0gZGV2aWNlU2l6
ZS53aWR0aCgpICYmIGtleVN0cmluZyA9PSAid2lkdGgiKQorICAgICAgICAgICAgcmVwb3J0Vmll
d3BvcnRXYXJuaW5nKGRvY3VtZW50LCBEZXZpY2VXaWR0aFNob3VsZEJlVXNlZFdhcm5pbmcsIFN0
cmluZygpLCBTdHJpbmcoKSk7CisgICAgICAgIGVsc2UgaWYgKHZhbHVlID09IGRldmljZVNpemUu
aGVpZ2h0KCkgJiYga2V5U3RyaW5nID09ICJoZWlnaHQiKQorICAgICAgICAgICAgcmVwb3J0Vmll
d3BvcnRXYXJuaW5nKGRvY3VtZW50LCBEZXZpY2VIZWlnaHRTaG91bGRCZVVzZWRXYXJuaW5nLCBT
dHJpbmcoKSwgU3RyaW5nKCkpOworICAgIH0KIAogICAgIHJldHVybiB2YWx1ZTsKIH0KQEAgLTMz
Miw2ICszMzYsOCBAQCB2b2lkIHNldFZpZXdwb3J0RmVhdHVyZShjb25zdCBTdHJpbmcmIGtleVN0
cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywgRG9jdQogICAgICAgICBhcmd1bWVudHMt
PnVzZXJTY2FsYWJsZSA9IGZpbmRVc2VyU2NhbGFibGVWYWx1ZShrZXlTdHJpbmcsIHZhbHVlU3Ry
aW5nLCBkb2N1bWVudCk7CiAgICAgZWxzZSBpZiAoa2V5U3RyaW5nID09ICJ0YXJnZXQtZGVuc2l0
eWRwaSIpCiAgICAgICAgIGFyZ3VtZW50cy0+dGFyZ2V0RGVuc2l0eURwaSA9IGZpbmRUYXJnZXRE
ZW5zaXR5RFBJVmFsdWUoa2V5U3RyaW5nLCB2YWx1ZVN0cmluZywgZG9jdW1lbnQpOworICAgIGVs
c2UKKyAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBVbnJlY29nbml6ZWRW
aWV3cG9ydEFyZ3VtZW50S2V5RXJyb3IsIGtleVN0cmluZywgU3RyaW5nKCkpOwogfQogCiBzdGF0
aWMgY29uc3QgY2hhciogdmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZShWaWV3cG9ydEVycm9y
Q29kZSBlcnJvckNvZGUpCkBAIC0zMzksNiArMzQ1LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHZp
ZXdwb3J0RXJyb3JNZXNzYWdlVGVtcGxhdGUoVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlKQog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBlcnJvcnNbXSA9IHsKICAgICAgICAgIlZpZXdw
b3J0IHdpZHRoIG9yIGhlaWdodCBzZXQgdG8gcGh5c2ljYWwgZGV2aWNlIHdpZHRoLCB0cnkgdXNp
bmcgXCJkZXZpY2Utd2lkdGhcIiBjb25zdGFudCBpbnN0ZWFkIGZvciBmdXR1cmUgY29tcGF0aWJp
bGl0eS4iLAogICAgICAgICAiVmlld3BvcnQgaGVpZ2h0IG9yIGhlaWdodCBzZXQgdG8gcGh5c2lj
YWwgZGV2aWNlIGhlaWdodCwgdHJ5IHVzaW5nIFwiZGV2aWNlLWhlaWdodFwiIGNvbnN0YW50IGlu
c3RlYWQgZm9yIGZ1dHVyZSBjb21wYXRpYmlsaXR5LiIsCisgICAgICAgICJWaWV3cG9ydCBhcmd1
bWVudCBrZXkgXCIlcmVwbGFjZW1lbnQxXCIgbm90IHJlY29nbml6ZWQgYW5kIGlnbm9yZWQuIiwK
ICAgICAgICAgIlZpZXdwb3J0IGFyZ3VtZW50IHZhbHVlIFwiJXJlcGxhY2VtZW50MVwiIGZvciBr
ZXkgXCIlcmVwbGFjZW1lbnQyXCIgbm90IHJlY29nbml6ZWQuIENvbnRlbnQgaWdub3JlZC4iLAog
ICAgICAgICAiVmlld3BvcnQgYXJndW1lbnQgdmFsdWUgXCIlcmVwbGFjZW1lbnQxXCIgZm9yIGtl
eSBcIiVyZXBsYWNlbWVudDJcIiB3YXMgdHJ1bmNhdGVkIHRvIGl0cyBudW1lcmljIHByZWZpeC4i
LAogICAgICAgICAiVmlld3BvcnQgbWF4aW11bS1zY2FsZSBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4g
MTAuMC4gVGhlIG1heGltdW0tc2NhbGUgd2lsbCBiZSBzZXQgdG8gMTAuMC4iLApAQCAtMzU2LDcg
KzM2Myw4IEBAIHN0YXRpYyBNZXNzYWdlTGV2ZWwgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChW
aWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUpCiAgICAgY2FzZSBUcnVuY2F0ZWRWaWV3cG9ydEFy
Z3VtZW50VmFsdWVFcnJvcjoKICAgICBjYXNlIFRhcmdldERlbnNpdHlEcGlUb29TbWFsbE9yTGFy
Z2VFcnJvcjoKICAgICAgICAgcmV0dXJuIFRpcE1lc3NhZ2VMZXZlbDsKLSAgICBjYXNlIFVucmVj
b2duaXplZFZpZXdwb3J0QXJndW1lbnRFcnJvcjoKKyAgICBjYXNlIFVucmVjb2duaXplZFZpZXdw
b3J0QXJndW1lbnRLZXlFcnJvcjoKKyAgICBjYXNlIFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1l
bnRWYWx1ZUVycm9yOgogICAgIGNhc2UgTWF4aW11bVNjYWxlVG9vTGFyZ2VFcnJvcjoKICAgICAg
ICAgcmV0dXJuIEVycm9yTWVzc2FnZUxldmVsOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdw
b3J0QXJndW1lbnRzLmgKaW5kZXggMzM5MzQ1Yy4uYTljODgyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1ZpZXdwb3J0QXJndW1lbnRzLmgKQEAgLTM3LDcgKzM3LDggQEAgY2xhc3MgRG9jdW1lbnQ7CiBl
bnVtIFZpZXdwb3J0RXJyb3JDb2RlIHsKICAgICBEZXZpY2VXaWR0aFNob3VsZEJlVXNlZFdhcm5p
bmcsCiAgICAgRGV2aWNlSGVpZ2h0U2hvdWxkQmVVc2VkV2FybmluZywKLSAgICBVbnJlY29nbml6
ZWRWaWV3cG9ydEFyZ3VtZW50RXJyb3IsCisgICAgVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVu
dEtleUVycm9yLAorICAgIFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yLAog
ICAgIFRydW5jYXRlZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yLAogICAgIE1heGltdW1TY2Fs
ZVRvb0xhcmdlRXJyb3IsCiAgICAgVGFyZ2V0RGVuc2l0eURwaVRvb1NtYWxsT3JMYXJnZUVycm9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCAwMWJiZDc4Li4zNDViNGI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTE1OSw2ICsxNTksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIC8vIEVuZCBtZXRob2RzIHVzZWQgYnkgSG9zdFdpbmRvdy4KIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2UoY29uc3Qg
Vmlld3BvcnRBcmd1bWVudHMmKSBjb25zdCB7IH0KKyAgICAgICAgdmlydHVhbCBGbG9hdFNpemUg
dmlld3BvcnREZXZpY2VTaXplKCkgY29uc3QgeyByZXR1cm4gRmxvYXRTaXplKCk7IH0KIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChGcmFtZSosIGNvbnN0IEludFNp
emUmKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSZWN0SW50b1ZpZXco
Y29uc3QgSW50UmVjdCYsIGNvbnN0IFNjcm9sbFZpZXcqKSBjb25zdCA9IDA7IC8vIEN1cnJlbnRs
eSBvbmx5IE1hYyBoYXMgYSBub24gZW1wdHkgaW1wbGVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
aW5kZXggMWFjY2FkOC4uZDk5ODJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDExLTAzLTAyICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmlld3BvcnQgV2Fy
bmluZy9FcnJvciBNZXNzYWdlcyBBcmUgTm93IEluYWNjdXJhdGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNzA3CisKKyAgICAgICAgUmVmYWN0b3Ig
ZGV2aWNlIHNpemUgaW50byB0aGUgbmV3IENocm9tZUNsaWVudCBtZXRob2QuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50RWZsOjp2aWV3cG9ydERldmljZVNpemUpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgorICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Cisg
ICAgICAgIChfZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19jb21wdXRlKToKKwogMjAxMS0w
My0wMSAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQuIFJvbGwgb3V0IHI4MDA2OCBhbmQgcjgwMDczIGR1ZSB0byBicmVha2luZyBXZWJL
aXQyIFF0IHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmNwcAppbmRleCA2NDI1YzM5Li42OThjODFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAg
LTUyNyw2ICs1MjcsMTMgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmRpc3BhdGNoVmlld3BvcnRE
YXRhRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJiBhcmcKICAgICBld2tfdmlld192
aWV3cG9ydF9hdHRyaWJ1dGVzX3NldChtX3ZpZXcsIGFyZ3VtZW50cyk7CiB9CiAKK0Zsb2F0U2l6
ZSBDaHJvbWVDbGllbnRFZmw6OnZpZXdwb3J0RGV2aWNlU2l6ZSgpIGNvbnN0Cit7CisgICAgaW50
IGRldmljZVdpZHRoID0gKGludCkgcHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53aW5k
b3dSZWN0KCkud2lkdGgoKTsKKyAgICBpbnQgZGV2aWNlSGVpZ2h0ID0gKGludCkgcHJpdi0+cGFn
ZS0+Y2hyb21lKCktPmNsaWVudCgpLT53aW5kb3dSZWN0KCkuaGVpZ2h0KCk7CisgICAgcmV0dXJu
IEZsb2F0U2l6ZSgoZmxvYXQpIGRldmljZVdpZHRoLCAoZmxvYXQpIGRldmljZUhlaWdodCk7Cit9
CisKIGJvb2wgQ2hyb21lQ2xpZW50RWZsOjpzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0
dXJhbCgpCiB7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCmluZGV4IGMxN2ZlMTAuLjdhZjNjYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5oCkBAIC0xNDUsNiArMTQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpY29uRm9y
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZywgMHU+JiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4p
OwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVmlld3BvcnREYXRhRGlkQ2hhbmdlKGNvbnN0
IFZpZXdwb3J0QXJndW1lbnRzJikgY29uc3Q7CisgICAgdmlydHVhbCBGbG9hdFNpemUgdmlld3Bv
cnREZXZpY2VTaXplKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRp
bmdEaXJlY3Rpb25Jc05hdHVyYWwoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbUFsaWdu
bWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
dy5jcHAKaW5kZXggYWIwNjI5YS4uMzI1YzUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCkBAIC0xMDIwLDggKzEwMjAsOCBAQCBzdGF0aWMgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1
dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUoRXZhc19PYgogICAgIGlu
dCBhdmFpbGFibGVfd2lkdGggPSAoaW50KSBwcml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCkt
PnBhZ2VSZWN0KCkud2lkdGgoKTsKICAgICBpbnQgYXZhaWxhYmxlX2hlaWdodCA9IChpbnQpIHBy
aXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cGFnZVJlY3QoKS5oZWlnaHQoKTsKIAotICAg
IGludCBkZXZpY2Vfd2lkdGggPSAoaW50KSBwcml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCkt
PndpbmRvd1JlY3QoKS53aWR0aCgpOwotICAgIGludCBkZXZpY2VfaGVpZ2h0ID0gKGludCkgcHJp
di0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53aW5kb3dSZWN0KCkuaGVpZ2h0KCk7CisgICAg
aW50IGRldmljZV93aWR0aCA9IChpbnQpIHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+
dmlld3BvcnREZXZpY2VTaXplKCkud2lkdGgoKTsKKyAgICBpbnQgZGV2aWNlX2hlaWdodCA9IChp
bnQpIHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+dmlld3BvcnREZXZpY2VTaXplKCku
aGVpZ2h0KCk7CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIGF2YWlsYWJsZV9zaXplID0gV2ViQ29y
ZTo6SW50U2l6ZShhdmFpbGFibGVfd2lkdGgsIGF2YWlsYWJsZV9oZWlnaHQpOwogICAgIFdlYkNv
cmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gV2ViQ29yZTo6Y29tcHV0ZVZpZXdw
b3J0QXR0cmlidXRlcyhwcml2LT52aWV3cG9ydF9hcmd1bWVudHMsIGRlc2t0b3Bfd2lkdGgsIGRl
dmljZV93aWR0aCwgZGV2aWNlX2hlaWdodCwgZGV2aWNlX2RwaSwgYXZhaWxhYmxlX3NpemUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCmluZGV4IDNhMWFkMmUuLjNjMWRlNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAxMS0wMy0wMiAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFZpZXdwb3J0IFdhcm5pbmcvRXJyb3IgTWVzc2FnZXMgQXJlIE5vdyBJbmFjY3VyYXRlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzcwNworCisgICAg
ICAgIFJlZmFjdG9yIGRldmljZSBzaXplIGludG8gdGhlIG5ldyBDaHJvbWVDbGllbnQgbWV0aG9k
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50Ojp2aWV3cG9ydERldmljZVNpemUpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXR2aWV3cG9ydGF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAod2Via2l0Vmlld3BvcnRBdHRyaWJ1
dGVzUmVjb21wdXRlKToKKwogMjAxMS0wMy0wMSAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJvbGwgb3V0IHI4MDA2OCBhbmQgcjgw
MDczIGR1ZSB0byBicmVha2luZyBXZWJLaXQyIFF0IHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCAxNjc5YWZk
Li44MDliZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEd0ay5jcHAKQEAgLTY1Miw2ICs2NTIsMTcgQEAgdm9pZCBDaHJvbWVDbGll
bnQ6OmRpc3BhdGNoVmlld3BvcnREYXRhRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRz
JiBhcmd1bWUKICAgICB3ZWJraXRWaWV3cG9ydEF0dHJpYnV0ZXNSZWNvbXB1dGUod2Via2l0X3dl
Yl92aWV3X2dldF92aWV3cG9ydF9hdHRyaWJ1dGVzKG1fd2ViVmlldykpOwogfQogCitXZWJDb3Jl
OjpGbG9hdFNpemUgQ2hyb21lQ2xpZW50Ojp2aWV3cG9ydERldmljZVNpemUoKSBjb25zdAorewor
ICAgIFdlYktpdFZpZXdwb3J0QXR0cmlidXRlc1ByaXZhdGUqIHByaXYgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3ZpZXdwb3J0X2F0dHJpYnV0ZXMobV93ZWJWaWV3KTsKKyAgICBpZiAoIXByaXYpCisg
ICAgICAgIHJldHVybiBGbG9hdFNpemUoKTsKKworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcg
PSBwcml2LT53ZWJWaWV3OworICAgIEludFJlY3Qgd2luZG93UmVjdEFzSW50UmVjdCh3ZWJWaWV3
LT5wcml2LT5jb3JlUGFnZS0+Y2hyb21lKCktPndpbmRvd1JlY3QoKSk7CisgICAgcmV0dXJuIEZs
b2F0U2l6ZSh3aW5kb3dSZWN0QXNJbnRSZWN0LnNpemUoKSk7Cit9CisKIHZvaWQgQ2hyb21lQ2xp
ZW50OjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsu
aAppbmRleCA0MDE3Zjc0Li5jYzk5Mzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMTExLDYgKzExMSw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VG9vbFRpcChjb25zdCBXVEY6
OlN0cmluZyYsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24pOwogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaFZpZXdwb3J0RGF0YURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFy
Z3VtZW50cyYgYXJndW1lbnRzKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9h
dFNpemUgdmlld3BvcnREZXZpY2VTaXplKCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCB2b2lk
IHByaW50KFdlYkNvcmU6OkZyYW1lKik7CiAjaWYgRU5BQkxFKERBVEFCQVNFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHZpZXdwb3J0YXR0cmlidXRlcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmlld3BvcnRhdHRyaWJ1dGVzLmNwcApp
bmRleCA5YTk4ZTQ0Li43ZTg0NjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0dmlld3BvcnRhdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0dmlld3BvcnRhdHRyaWJ1dGVzLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2lu
Y2x1ZGUgIndlYmtpdHZpZXdwb3J0YXR0cmlidXRlcy5oIgogCiAjaW5jbHVkZSAiQ2hyb21lLmgi
CisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKQEAgLTUyMSw5ICs1
MjIsOSBAQCB2b2lkIHdlYmtpdFZpZXdwb3J0QXR0cmlidXRlc1JlY29tcHV0ZShXZWJLaXRWaWV3
cG9ydEF0dHJpYnV0ZXMqIHZpZXdwb3J0QXR0cmlidQogICAgIFdlYktpdFZpZXdwb3J0QXR0cmli
dXRlc1ByaXZhdGUqIHByaXYgPSB2aWV3cG9ydEF0dHJpYnV0ZXMtPnByaXY7CiAgICAgV2ViS2l0
V2ViVmlldyogd2ViVmlldyA9IHByaXYtPndlYlZpZXc7CiAKLSAgICBJbnRSZWN0IHdpbmRvd1Jl
Y3Qod2ViVmlldy0+cHJpdi0+Y29yZVBhZ2UtPmNocm9tZSgpLT53aW5kb3dSZWN0KCkpOwotICAg
IHByaXYtPmRldmljZVdpZHRoID0gd2luZG93UmVjdC53aWR0aCgpOwotICAgIHByaXYtPmRldmlj
ZUhlaWdodCA9IHdpbmRvd1JlY3QuaGVpZ2h0KCk7CisgICAgRmxvYXRTaXplIGRldmljZVNpemUg
PSB3ZWJWaWV3LT5wcml2LT5jb3JlUGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5kZXZpY2VWaWV3
cG9ydFNpemUoKTsKKyAgICBwcml2LT5kZXZpY2VXaWR0aCA9IHN0YXRpY19jYXN0PGludD4oZGV2
aWNlU2l6ZS53aWR0aCgpKTsKKyAgICBwcml2LT5kZXZpY2VIZWlnaHQgPSBzdGF0aWNfY2FzdDxp
bnQ+KGRldmljZVNpemUuaGVpZ2h0KCkpOwogCiAgICAgSW50UmVjdCByZWN0KHdlYlZpZXctPnBy
aXYtPmNvcmVQYWdlLT5jaHJvbWUoKS0+cGFnZVJlY3QoKSk7CiAgICAgcHJpdi0+YXZhaWxhYmxl
V2lkdGggPSByZWN0LndpZHRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2VicGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKaW5kZXggZjRk
MjYzMS4uOTc4NmZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMTE2LDcgKzEx
Niw2IEBACiAjaW5jbHVkZSA8UUJhc2ljVGltZXI+CiAjaW5jbHVkZSA8UUJpdEFycmF5PgogI2lu
Y2x1ZGUgPFFEZWJ1Zz4KLSNpbmNsdWRlIDxRRGVza3RvcFdpZGdldD4KICNpbmNsdWRlIDxRRHJh
Z0VudGVyRXZlbnQ+CiAjaW5jbHVkZSA8UURyYWdMZWF2ZUV2ZW50PgogI2luY2x1ZGUgPFFEcmFn
TW92ZUV2ZW50PgpAQCAtMjQ0MiwzOCArMjQ0MSw2IEBAIHZvaWQgUVdlYlBhZ2U6OnNldFZpZXdw
b3J0U2l6ZShjb25zdCBRU2l6ZSAmc2l6ZSkgY29uc3QKICAgICB9CiB9CiAKLXN0YXRpYyBpbnQg
Z2V0aW50ZW52KGNvbnN0IGNoYXIqIHZhcmlhYmxlKQotewotICAgIGJvb2wgb2s7Ci0gICAgaW50
IHZhbHVlID0gcWdldGVudih2YXJpYWJsZSkudG9JbnQoJm9rKTsKLSAgICByZXR1cm4gKG9rKSA/
IHZhbHVlIDogLTE7Ci19Ci0KLXN0YXRpYyBRU2l6ZSBxdWVyeURldmljZVNpemVGb3JTY3JlZW5D
b250YWluaW5nV2lkZ2V0KGNvbnN0IFFXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBRRGVza3RvcFdp
ZGdldCogZGVza3RvcCA9IFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpOwotICAgIGlmICghZGVza3Rv
cCkKLSAgICAgICAgcmV0dXJuIFFTaXplKCk7Ci0KLSAgICBRU2l6ZSBzaXplOwotCi0gICAgaWYg
KHdpZGdldCkgewotICAgICAgICAvLyBSZXR1cm5zIHRoZSBhdmFpbGFibGUgZ2VvbWV0cnkgb2Yg
dGhlIHNjcmVlbiB3aGljaCBjb250YWlucyB3aWRnZXQuCi0gICAgICAgIC8vIE5PVEU6IHRoaXMg
bXVzdCBiZSB0aGUgdGhlIGZ1bGwgc2NyZWVuIHNpemUgaW5jbHVkaW5nIGFueSBmaXhlZCBzdGF0
dXMgYXJlYXMgZXRjLgotICAgICAgICBzaXplID0gZGVza3RvcC0+YXZhaWxhYmxlR2VvbWV0cnko
d2lkZ2V0KS5zaXplKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHNpemUgPSBkZXNrdG9wLT5hdmFp
bGFibGVHZW9tZXRyeSgpLnNpemUoKTsKLQotICAgIC8vIFRoaXMgbXVzdCBiZSBpbiBwb3J0cmFp
dCBtb2RlLCBhZGp1c3QgaWYgbm90LgotICAgIGlmIChzaXplLndpZHRoKCkgPiBzaXplLmhlaWdo
dCgpKSB7Ci0gICAgICAgIGludCB3aWR0aCA9IHNpemUud2lkdGgoKTsKLSAgICAgICAgc2l6ZS5z
ZXRXaWR0aChzaXplLmhlaWdodCgpKTsKLSAgICAgICAgc2l6ZS5zZXRIZWlnaHQod2lkdGgpOwot
ICAgIH0KLQotICAgIHJldHVybiBzaXplOwotfQotCiAvKiEKICAgICBDb21wdXRlcyB0aGUgb3B0
aW1hbCB2aWV3cG9ydCBjb25maWd1cmF0aW9uIGdpdmVuIHRoZSBcYSBhdmFpbGFibGVTaXplLCB3
aGVuCiAgICAgdXNlciBpbnRlcmZhY2UgY29tcG9uZW50cyBhcmUgZGlzcmVnYXJkZWQuCkBAIC0y
NTEzLDE1ICsyNDgwLDkgQEAgUVdlYlBhZ2U6OlZpZXdwb3J0QXR0cmlidXRlcyBRV2ViUGFnZTo6
dmlld3BvcnRBdHRyaWJ1dGVzRm9yU2l6ZShjb25zdCBRU2l6ZSYgYXYKICAgICAgaWYgKGF2YWls
YWJsZVNpemUuaXNFbXB0eSgpKQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsgLy8gUmV0dXJucyBh
biBpbnZhbGlkIGluc3RhbmNlLgogCi0gICAgaW50IGRldmljZVdpZHRoID0gZ2V0aW50ZW52KCJR
VFdFQktJVF9ERVZJQ0VfV0lEVEgiKTsKLSAgICBpbnQgZGV2aWNlSGVpZ2h0ID0gZ2V0aW50ZW52
KCJRVFdFQktJVF9ERVZJQ0VfSEVJR0hUIik7Ci0KLSAgICAvLyBCb3RoIGVudmlyb25tZW50IHZh
cmlhYmxlcyBuZWVkIHRvIGJlIHNldCAtIG9yIHRoZXkgd2lsbCBiZSBpZ25vcmVkLgotICAgIGlm
IChkZXZpY2VXaWR0aCA8IDAgJiYgZGV2aWNlSGVpZ2h0IDwgMCkgewotICAgICAgICBRU2l6ZSBz
aXplID0gcXVlcnlEZXZpY2VTaXplRm9yU2NyZWVuQ29udGFpbmluZ1dpZGdldCgoZC0+Y2xpZW50
KSA/IGQtPmNsaWVudC0+b3duZXJXaWRnZXQoKSA6IDApOwotICAgICAgICBkZXZpY2VXaWR0aCA9
IHNpemUud2lkdGgoKTsKLSAgICAgICAgZGV2aWNlSGVpZ2h0ID0gc2l6ZS5oZWlnaHQoKTsKLSAg
ICB9CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIGRldmljZVNpemUgPSBkLT5wYWdlLT5jaHJvbWUo
KS0+Y2xpZW50KCktPnZpZXdwb3J0RGV2aWNlU2l6ZSgpOworICAgIGludCBkZXZpY2VXaWR0aCA9
IHN0YXRpY19jYXN0PGludD4oZGV2aWNlU2l6ZS53aWR0aCgpKTsKKyAgICBpbnQgZGV2aWNlSGVp
Z2h0ID0gc3RhdGljX2Nhc3Q8aW50PihkZXZpY2VTaXplLmhlaWdodCgpKTsKIAogICAgIFdlYkNv
cmU6OlZpZXdwb3J0QXR0cmlidXRlcyBjb25mID0gV2ViQ29yZTo6Y29tcHV0ZVZpZXdwb3J0QXR0
cmlidXRlcyhkLT52aWV3cG9ydEFyZ3VtZW50cygpLCBkZXNrdG9wV2lkdGgsIGRldmljZVdpZHRo
LCBkZXZpY2VIZWlnaHQsIHF0X2RlZmF1bHREcGkoKSwgYXZhaWxhYmxlU2l6ZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cKaW5kZXggODU1ZDUzMi4uNTIxNTIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAxMS0wMy0wMiAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZpZXdwb3J0
IFdhcm5pbmcvRXJyb3IgTWVzc2FnZXMgQXJlIE5vdyBJbmFjY3VyYXRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzcwNworCisgICAgICAgIFJlZmFj
dG9yIGRldmljZSBzaXplIGludG8gdGhlIG5ldyBDaHJvbWVDbGllbnQgbWV0aG9kLgorCisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjp2aWV3cG9ydEF0dHJp
YnV0ZXNGb3JTaXplKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRpbnRlbnYpOgorICAgICAgICAoV2ViQ29yZTo6cXVl
cnlEZXZpY2VTaXplRm9yU2NyZWVuQ29udGFpbmluZ1dpZGdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnRRdDo6dmlld3BvcnREZXZpY2VTaXplKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorCiAyMDExLTAzLTAxICBKb3NlcGggUGVjb3Jhcm8g
IDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gUm9sbCBvdXQgcjgw
MDY4IGFuZCByODAwNzMgZHVlIHRvIGJyZWFraW5nIFdlYktpdDIgUXQgcG9ydC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKaW5kZXgg
ZmI5Yjk2Yy4uZmZjNzVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKQEAgLTY5LDcgKzY5LDkgQEAKICNpbmNsdWRlICJxd2Vi
c2VjdXJpdHlvcmlnaW4uaCIKICNpbmNsdWRlICJxd2Vic2VjdXJpdHlvcmlnaW5fcC5oIgogI2lu
Y2x1ZGUgInF3ZWJ2aWV3LmgiCisjaW5jbHVkZSA8cWFwcGxpY2F0aW9uLmg+CiAjaW5jbHVkZSA8
cWRlYnVnLmg+CisjaW5jbHVkZSA8cWRlc2t0b3B3aWRnZXQuaD4KICNpbmNsdWRlIDxxZXZlbnRs
b29wLmg+CiAjaW5jbHVkZSA8cXRleHRkb2N1bWVudC5oPgogI2luY2x1ZGUgPHF0b29sdGlwLmg+
CkBAIC03MTEsMTEgKzcxMyw1OCBAQCBRV2ViU2VsZWN0TWV0aG9kKiBDaHJvbWVDbGllbnRRdDo6
Y3JlYXRlU2VsZWN0UG9wdXAoKSBjb25zdAogI2VuZGlmCiB9CiAKK3N0YXRpYyBpbnQgZ2V0aW50
ZW52KGNvbnN0IGNoYXIqIHZhcmlhYmxlKQoreworICAgIGJvb2wgb2s7CisgICAgaW50IHZhbHVl
ID0gcWdldGVudih2YXJpYWJsZSkudG9JbnQoJm9rKTsKKyAgICByZXR1cm4gKG9rKSA/IHZhbHVl
IDogLTE7Cit9CisKK3N0YXRpYyBRU2l6ZSBxdWVyeURldmljZVNpemVGb3JTY3JlZW5Db250YWlu
aW5nV2lkZ2V0KGNvbnN0IFFXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBRRGVza3RvcFdpZGdldCog
ZGVza3RvcCA9IFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpOworICAgIGlmICghZGVza3RvcCkKKyAg
ICAgICAgcmV0dXJuIFFTaXplKCk7CisKKyAgICBRU2l6ZSBzaXplOworCisgICAgaWYgKHdpZGdl
dCkgeworICAgICAgICAvLyBSZXR1cm5zIHRoZSBhdmFpbGFibGUgZ2VvbWV0cnkgb2YgdGhlIHNj
cmVlbiB3aGljaCBjb250YWlucyB3aWRnZXQuCisgICAgICAgIC8vIE5PVEU6IHRoaXMgbXVzdCBi
ZSB0aGUgdGhlIGZ1bGwgc2NyZWVuIHNpemUgaW5jbHVkaW5nIGFueSBmaXhlZCBzdGF0dXMgYXJl
YXMgZXRjLgorICAgICAgICBzaXplID0gZGVza3RvcC0+YXZhaWxhYmxlR2VvbWV0cnkod2lkZ2V0
KS5zaXplKCk7CisgICAgfSBlbHNlCisgICAgICAgIHNpemUgPSBkZXNrdG9wLT5hdmFpbGFibGVH
ZW9tZXRyeSgpLnNpemUoKTsKKworICAgIC8vIFRoaXMgbXVzdCBiZSBpbiBwb3J0cmFpdCBtb2Rl
LCBhZGp1c3QgaWYgbm90LgorICAgIGlmIChzaXplLndpZHRoKCkgPiBzaXplLmhlaWdodCgpKSB7
CisgICAgICAgIGludCB3aWR0aCA9IHNpemUud2lkdGgoKTsKKyAgICAgICAgc2l6ZS5zZXRXaWR0
aChzaXplLmhlaWdodCgpKTsKKyAgICAgICAgc2l6ZS5zZXRIZWlnaHQod2lkdGgpOworICAgIH0K
KworICAgIHJldHVybiBzaXplOworfQorCiB2b2lkIENocm9tZUNsaWVudFF0OjpkaXNwYXRjaFZp
ZXdwb3J0RGF0YURpZENoYW5nZShjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYpIGNvbnN0CiB7CiAg
ICAgZW1pdCBtX3dlYlBhZ2UtPnZpZXdwb3J0Q2hhbmdlUmVxdWVzdGVkKCk7CiB9CiAKK0Zsb2F0
U2l6ZSBDaHJvbWVDbGllbnRRdDo6dmlld3BvcnREZXZpY2VTaXplKCkgY29uc3QKK3sKKyAgICBp
bnQgZGV2aWNlV2lkdGggPSBnZXRpbnRlbnYoIlFUV0VCS0lUX0RFVklDRV9XSURUSCIpOworICAg
IGludCBkZXZpY2VIZWlnaHQgPSBnZXRpbnRlbnYoIlFUV0VCS0lUX0RFVklDRV9IRUlHSFQiKTsK
KworICAgIC8vIEJvdGggZW52aXJvbm1lbnQgdmFyaWFibGVzIG5lZWQgdG8gYmUgc2V0IC0gb3Ig
dGhleSB3aWxsIGJlIGlnbm9yZWQuCisgICAgaWYgKGRldmljZVdpZHRoIDwgMCAmJiBkZXZpY2VI
ZWlnaHQgPCAwKSB7CisgICAgICAgIFFTaXplIHNpemUgPSBxdWVyeURldmljZVNpemVGb3JTY3Jl
ZW5Db250YWluaW5nV2lkZ2V0KChtX3dlYlBhZ2UgJiYgbV93ZWJQYWdlLT5kLT5jbGllbnQpID8g
bV93ZWJQYWdlLT5kLT5jbGllbnQtPm93bmVyV2lkZ2V0KCkgOiAwKTsKKyAgICAgICAgZGV2aWNl
V2lkdGggPSBzaXplLndpZHRoKCk7CisgICAgICAgIGRldmljZUhlaWdodCA9IHNpemUuaGVpZ2h0
KCk7CisgICAgfQorCisgICAgcmV0dXJuIEZsb2F0U2l6ZShkZXZpY2VXaWR0aCwgZGV2aWNlSGVp
Z2h0KTsKK30KKwogYm9vbCBDaHJvbWVDbGllbnRRdDo6c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rp
b25Jc05hdHVyYWwoKQogewogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAppbmRleCBmMWIzNzdjLi4zNjcyYWI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5oCkBAIC0xOTUsNiArMTk1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBRV2Vi
U2VsZWN0TWV0aG9kKiBjcmVhdGVTZWxlY3RQb3B1cCgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFZpZXdwb3J0RGF0YURpZENoYW5nZShjb25zdCBWaWV3cG9ydEFyZ3Vt
ZW50cyYpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSB2aWV3cG9ydERldmljZVNp
emUoKSBjb25zdDsKIAogICAgICAgICBRV2ViUGFnZSogbV93ZWJQYWdlOwogICAgICAgICBXZWJD
b3JlOjpLVVJMIGxhc3RIb3ZlclVSTDsK
</data>
<flag name="commit-queue"
          id="76600"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84617</attachid>
            <date>2011-03-03 13:47:21 -0800</date>
            <delta_ts>2011-03-03 16:57:50 -0800</delta_ts>
            <desc>[PATCH] For Try Bots</desc>
            <filename>patch-for-bots.patch</filename>
            <type>text/plain</type>
            <size>25709</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1ZGIzY2VlLi5kZjg1NDE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDIt
MTYgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWaWV3cG9ydCBXYXJuaW5nL0Vycm9y
IE1lc3NhZ2VzIEFyZSBOb3cgSW5hY2N1cmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MDcKKworICAgICAgICBBZGRlZCB0ZXN0cyBzcGVjaWZp
Y2FsbHkgdG8gdGVzdCBDb25zb2xlIHdhcm5pbmdzLgorCisgICAgICAgICogZmFzdC92aWV3cG9y
dC92aWV3cG9ydC13YXJuaW5ncy0xLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvdmlld3Bv
cnQvdmlld3BvcnQtd2FybmluZ3MtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3ZpZXdw
b3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC92aWV3
cG9ydC92aWV3cG9ydC13YXJuaW5ncy00Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvdmll
d3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Zp
ZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTYuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC92
aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy03Lmh0bWw6IEFkZGVkLgorCiAyMDExLTAzLTAxICBK
b3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBleHBlY3RhdGlvbnMgdXBkYXRlLiBUaGlzIGlzIGEgZm9sbG93LXVwIHRvIHI4MDA2MS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtMS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy0xLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY5Nzk3NQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtMS5odG1s
CkBAIC0wLDAgKzEsMTMgQEAKKzxoZWFkPgorICAgIDx0aXRsZT5ObyB3YXJuaW5ncyBvciBlcnJv
cnMuPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2
aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIG1heGltdW0tc2NhbGU9MiI+CisgICAgPHNjcmlw
dD4KKyAgICAgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydCgxNjAsIDMyMCwgNDgwLCAzMjAsIDM1Mik7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0idGVzdCgpOyI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L3ZpZXdw
b3J0LXdhcm5pbmdzLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQt
d2FybmluZ3MtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NzVh
ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0
LXdhcm5pbmdzLTIuaHRtbApAQCAtMCwwICsxLDEzIEBACis8aGVhZD4KKyAgICA8dGl0bGU+VW5y
ZWNvZ25pemVkIGtleS48L3RpdGxlPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50
PSJ3d2lkdGg9MTAwIj4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KDE2MCwg
MzIwLCA0ODAsIDMyMCwgMzUyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtMy5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy0zLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uOWY1ODM5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtMy5odG1sCkBAIC0wLDAgKzEsMTMg
QEAKKzxoZWFkPgorICAgIDx0aXRsZT5VbnJlY29nbml6ZWQgdmFsdWUuPC90aXRsZT4KKyAgICA8
bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9dW5yZWNvZ25pemVkLXdpZHRoIj4K
KyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KDE2MCwgMzIwLCA0ODAsIDMyMCwg
MzUyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvdmll
d3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9y
dC92aWV3cG9ydC13YXJuaW5ncy00Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYmIxNWQ3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3Bv
cnQvdmlld3BvcnQtd2FybmluZ3MtNC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxoZWFkPgorICAg
IDx0aXRsZT5UcnVuY2F0ZWQgdmFsdWUuPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9y
dCIgY29udGVudD0id2lkdGg9MTIzeDQ1NiI+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rp
b24gdGVzdCgpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENvbmZpZ3VyYXRpb25Gb3JW
aWV3cG9ydCgxNjAsIDMyMCwgNDgwLCAzMjAsIDM1Mik7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpOyI+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5YTk4NGIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTUuaHRtbApA
QCAtMCwwICsxLDEzIEBACis8aGVhZD4KKyAgICA8dGl0bGU+U3VnZ2VzdCB1c2luZyBrZXl3b3Jk
cyB3aGVuIGZpeGVkIG51bWJlciBtYXRjaGVzIGRldmljZSB3aWR0aCBvciBoZWlnaHQuPC90aXRs
ZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9MzIwLCBoZWlnaHQ9
MzUyIj4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KDE2MCwgMzIwLCA0ODAs
IDMyMCwgMzUyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC92
aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy02Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uODI5NTA4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
dmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxoZWFk
PgorICAgIDx0aXRsZT5NdWx0aXBsZSB3YXJuaW5ncyBhbmQgZXJyb3JzIGR1ZSB0byBpbmNvcnJl
Y3Qgc2VtaWNvbG9uIHNlcGFyYXRvcnMuPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9y
dCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoOyBpbml0aWFsLXNjYWxlPTEuMDsgbWF4aW11
bS1zY2FsZT0xLjA7IHVzZXItc2NhbGFibGU9MDsiPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1
bmN0aW9uIHRlc3QoKSB7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDb25maWd1cmF0aW9u
Rm9yVmlld3BvcnQoMTYwLCAzMjAsIDQ4MCwgMzIwLCAzNTIpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKTsiPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy03
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTcuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmVlZWJkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy03Lmh0
bWwKQEAgLTAsMCArMSwxMyBAQAorPGhlYWQ+CisgICAgPHRpdGxlPk1pc3NpbmcgdmFsdWUgc2hv
dWxkIHByb2R1Y2UgYW4gZXJyb3IuPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIg
Y29udGVudD0id2lkdGg9Ij4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiB0ZXN0KCkg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KDE2
MCwgMzIwLCA0ODAsIDMyMCwgMzUyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIDwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBi
OTU2ZTlmLi45ZjUyMGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDMtMDIg
IEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWaWV3cG9ydCBXYXJuaW5nL0Vycm9yIE1l
c3NhZ2VzIEFyZSBOb3cgSW5hY2N1cmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MDcKKworICAgICAgICBDb3JyZWN0IGFuZCBpbXByb3ZlIHRo
ZSBlcnJvciBtZXNzYWdlcyBmb3Igdmlld3BvcnQKKyAgICAgICAgcGFyc2luZy4gQ2xhcmlmeSB0
aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGluY29ycmVjdAorICAgICAgICBrZXlzLCB2YWx1ZXMsIGFu
ZCB3aGVuIHRvIHVzZSB0aGUgZGV2aWNlLXdpZHRoIG9yCisgICAgICAgIGRldmljZS1oZWlnaHQg
Y29uc3RhbnRzLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5p
bmdzLTEuaHRtbAorICAgICAgICAgICAgICAgZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5n
cy0yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3Mt
My5odG1sCisgICAgICAgICAgICAgICBmYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTQu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy01Lmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNi5odG1s
CisgICAgICAgICAgICAgICBmYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTcuaHRtbAor
CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om51bWVyaWNQcmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZFNpemVWYWx1ZSk6IHN1Z2dl
c3QgdXNpbmcga2V5d29yZHMgaWYgdGhlIGZpeGVkIG51bWJlciB2YWx1ZXMgdHJ1ZWx5IG1hdGNo
IGRldmljZSB3aWR0aCBvciBoZWlnaHQuCisgICAgICAgIChXZWJDb3JlOjpzZXRWaWV3cG9ydEZl
YXR1cmUpOiByZXBvcnQgYSB3YXJuaW5nIGZvciBhbiB1bnJlY29nbml6ZWQga2V5LgorICAgICAg
ICAoV2ViQ29yZTo6dmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZSk6IGFkZGVkIHRlbXBsYXRl
IGZvciB1bnJlY29nbml6ZWQga2V5LgorICAgICAgICAoV2ViQ29yZTo6dmlld3BvcnRFcnJvck1l
c3NhZ2VMZXZlbCk6IGNsYXNzaWZ5IGFuIHVucmVjb2duaXplZCBrZXkgaXMgYW4gZXJyb3IuCisg
ICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVD
bGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6dmlld3BvcnREZXZpY2VT
aXplKTogdXNlZCBmb3IgY2hlY2tpbmcgdmlld3BvcnQgZGV2aWNlLXdpZHRoIGFuZCBkZXZpY2Ut
aGVpZ2h0IHZhbHVlcy4KKwogMjAxMS0wMy0wMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3
LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjgwMDc5
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKaW5kZXggMDZjNWVhMi4u
ZDNiMTExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKIAogI2luY2x1ZGUg
IkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnNvbGUu
aCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMTkw
LDcgKzE5MSw3IEBAIHN0YXRpYyBmbG9hdCBudW1lcmljUHJlZml4KGNvbnN0IFN0cmluZyYga2V5
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBECiAgICAgaWYgKCEqb2spIHsKICAg
ICAgICAgaWYgKCFkaWRSZWFkTnVtYmVyKSB7CiAgICAgICAgICAgICBBU1NFUlQoIXZhbHVlKTsK
LSAgICAgICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgVW5yZWNvZ25pemVk
Vmlld3BvcnRBcmd1bWVudEVycm9yLCB2YWx1ZVN0cmluZywga2V5U3RyaW5nKTsKKyAgICAgICAg
ICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgVW5yZWNvZ25pemVkVmlld3BvcnRB
cmd1bWVudFZhbHVlRXJyb3IsIHZhbHVlU3RyaW5nLCBrZXlTdHJpbmcpOwogICAgICAgICAgICAg
cmV0dXJuIHZhbHVlOwogICAgICAgICB9CiAgICAgICAgICpvayA9IHRydWU7CkBAIC0yMjEsMTAg
KzIyMiwxMyBAQCBzdGF0aWMgZmxvYXQgZmluZFNpemVWYWx1ZShjb25zdCBTdHJpbmcmIGtleVN0
cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywgRAogICAgIGlmICh2YWx1ZSA8IDApCiAg
ICAgICAgIHJldHVybiBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwogCi0gICAgaWYgKGtl
eVN0cmluZyA9PSAid2lkdGgiKQotICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1l
bnQsIERldmljZVdpZHRoU2hvdWxkQmVVc2VkV2FybmluZywgU3RyaW5nKCksIFN0cmluZygpKTsK
LSAgICBlbHNlIGlmIChrZXlTdHJpbmcgPT0gImhlaWdodCIpCi0gICAgICAgIHJlcG9ydFZpZXdw
b3J0V2FybmluZyhkb2N1bWVudCwgRGV2aWNlSGVpZ2h0U2hvdWxkQmVVc2VkV2FybmluZywgU3Ry
aW5nKCksIFN0cmluZygpKTsKKyAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCkp
IHsKKyAgICAgICAgRmxvYXRTaXplIGRldmljZVNpemUgPSBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50
KCktPnZpZXdwb3J0RGV2aWNlU2l6ZSgpOworICAgICAgICBpZiAodmFsdWUgPT0gZGV2aWNlU2l6
ZS53aWR0aCgpICYmIGtleVN0cmluZyA9PSAid2lkdGgiKQorICAgICAgICAgICAgcmVwb3J0Vmll
d3BvcnRXYXJuaW5nKGRvY3VtZW50LCBEZXZpY2VXaWR0aFNob3VsZEJlVXNlZFdhcm5pbmcsIFN0
cmluZygpLCBTdHJpbmcoKSk7CisgICAgICAgIGVsc2UgaWYgKHZhbHVlID09IGRldmljZVNpemUu
aGVpZ2h0KCkgJiYga2V5U3RyaW5nID09ICJoZWlnaHQiKQorICAgICAgICAgICAgcmVwb3J0Vmll
d3BvcnRXYXJuaW5nKGRvY3VtZW50LCBEZXZpY2VIZWlnaHRTaG91bGRCZVVzZWRXYXJuaW5nLCBT
dHJpbmcoKSwgU3RyaW5nKCkpOworICAgIH0KIAogICAgIHJldHVybiB2YWx1ZTsKIH0KQEAgLTMz
Miw2ICszMzYsOCBAQCB2b2lkIHNldFZpZXdwb3J0RmVhdHVyZShjb25zdCBTdHJpbmcmIGtleVN0
cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywgRG9jdQogICAgICAgICBhcmd1bWVudHMt
PnVzZXJTY2FsYWJsZSA9IGZpbmRVc2VyU2NhbGFibGVWYWx1ZShrZXlTdHJpbmcsIHZhbHVlU3Ry
aW5nLCBkb2N1bWVudCk7CiAgICAgZWxzZSBpZiAoa2V5U3RyaW5nID09ICJ0YXJnZXQtZGVuc2l0
eWRwaSIpCiAgICAgICAgIGFyZ3VtZW50cy0+dGFyZ2V0RGVuc2l0eURwaSA9IGZpbmRUYXJnZXRE
ZW5zaXR5RFBJVmFsdWUoa2V5U3RyaW5nLCB2YWx1ZVN0cmluZywgZG9jdW1lbnQpOworICAgIGVs
c2UKKyAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBVbnJlY29nbml6ZWRW
aWV3cG9ydEFyZ3VtZW50S2V5RXJyb3IsIGtleVN0cmluZywgU3RyaW5nKCkpOwogfQogCiBzdGF0
aWMgY29uc3QgY2hhciogdmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZShWaWV3cG9ydEVycm9y
Q29kZSBlcnJvckNvZGUpCkBAIC0zMzksNiArMzQ1LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHZp
ZXdwb3J0RXJyb3JNZXNzYWdlVGVtcGxhdGUoVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlKQog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBlcnJvcnNbXSA9IHsKICAgICAgICAgIlZpZXdw
b3J0IHdpZHRoIG9yIGhlaWdodCBzZXQgdG8gcGh5c2ljYWwgZGV2aWNlIHdpZHRoLCB0cnkgdXNp
bmcgXCJkZXZpY2Utd2lkdGhcIiBjb25zdGFudCBpbnN0ZWFkIGZvciBmdXR1cmUgY29tcGF0aWJp
bGl0eS4iLAogICAgICAgICAiVmlld3BvcnQgaGVpZ2h0IG9yIGhlaWdodCBzZXQgdG8gcGh5c2lj
YWwgZGV2aWNlIGhlaWdodCwgdHJ5IHVzaW5nIFwiZGV2aWNlLWhlaWdodFwiIGNvbnN0YW50IGlu
c3RlYWQgZm9yIGZ1dHVyZSBjb21wYXRpYmlsaXR5LiIsCisgICAgICAgICJWaWV3cG9ydCBhcmd1
bWVudCBrZXkgXCIlcmVwbGFjZW1lbnQxXCIgbm90IHJlY29nbml6ZWQgYW5kIGlnbm9yZWQuIiwK
ICAgICAgICAgIlZpZXdwb3J0IGFyZ3VtZW50IHZhbHVlIFwiJXJlcGxhY2VtZW50MVwiIGZvciBr
ZXkgXCIlcmVwbGFjZW1lbnQyXCIgbm90IHJlY29nbml6ZWQuIENvbnRlbnQgaWdub3JlZC4iLAog
ICAgICAgICAiVmlld3BvcnQgYXJndW1lbnQgdmFsdWUgXCIlcmVwbGFjZW1lbnQxXCIgZm9yIGtl
eSBcIiVyZXBsYWNlbWVudDJcIiB3YXMgdHJ1bmNhdGVkIHRvIGl0cyBudW1lcmljIHByZWZpeC4i
LAogICAgICAgICAiVmlld3BvcnQgbWF4aW11bS1zY2FsZSBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4g
MTAuMC4gVGhlIG1heGltdW0tc2NhbGUgd2lsbCBiZSBzZXQgdG8gMTAuMC4iLApAQCAtMzU2LDcg
KzM2Myw4IEBAIHN0YXRpYyBNZXNzYWdlTGV2ZWwgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChW
aWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUpCiAgICAgY2FzZSBUcnVuY2F0ZWRWaWV3cG9ydEFy
Z3VtZW50VmFsdWVFcnJvcjoKICAgICBjYXNlIFRhcmdldERlbnNpdHlEcGlUb29TbWFsbE9yTGFy
Z2VFcnJvcjoKICAgICAgICAgcmV0dXJuIFRpcE1lc3NhZ2VMZXZlbDsKLSAgICBjYXNlIFVucmVj
b2duaXplZFZpZXdwb3J0QXJndW1lbnRFcnJvcjoKKyAgICBjYXNlIFVucmVjb2duaXplZFZpZXdw
b3J0QXJndW1lbnRLZXlFcnJvcjoKKyAgICBjYXNlIFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1l
bnRWYWx1ZUVycm9yOgogICAgIGNhc2UgTWF4aW11bVNjYWxlVG9vTGFyZ2VFcnJvcjoKICAgICAg
ICAgcmV0dXJuIEVycm9yTWVzc2FnZUxldmVsOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdw
b3J0QXJndW1lbnRzLmgKaW5kZXggMzM5MzQ1Yy4uYTljODgyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1ZpZXdwb3J0QXJndW1lbnRzLmgKQEAgLTM3LDcgKzM3LDggQEAgY2xhc3MgRG9jdW1lbnQ7CiBl
bnVtIFZpZXdwb3J0RXJyb3JDb2RlIHsKICAgICBEZXZpY2VXaWR0aFNob3VsZEJlVXNlZFdhcm5p
bmcsCiAgICAgRGV2aWNlSGVpZ2h0U2hvdWxkQmVVc2VkV2FybmluZywKLSAgICBVbnJlY29nbml6
ZWRWaWV3cG9ydEFyZ3VtZW50RXJyb3IsCisgICAgVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVu
dEtleUVycm9yLAorICAgIFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yLAog
ICAgIFRydW5jYXRlZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yLAogICAgIE1heGltdW1TY2Fs
ZVRvb0xhcmdlRXJyb3IsCiAgICAgVGFyZ2V0RGVuc2l0eURwaVRvb1NtYWxsT3JMYXJnZUVycm9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCAwMWJiZDc4Li4zNDViNGI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTE1OSw2ICsxNTksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIC8vIEVuZCBtZXRob2RzIHVzZWQgYnkgSG9zdFdpbmRvdy4KIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2UoY29uc3Qg
Vmlld3BvcnRBcmd1bWVudHMmKSBjb25zdCB7IH0KKyAgICAgICAgdmlydHVhbCBGbG9hdFNpemUg
dmlld3BvcnREZXZpY2VTaXplKCkgY29uc3QgeyByZXR1cm4gRmxvYXRTaXplKCk7IH0KIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChGcmFtZSosIGNvbnN0IEludFNp
emUmKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSZWN0SW50b1ZpZXco
Y29uc3QgSW50UmVjdCYsIGNvbnN0IFNjcm9sbFZpZXcqKSBjb25zdCA9IDA7IC8vIEN1cnJlbnRs
eSBvbmx5IE1hYyBoYXMgYSBub24gZW1wdHkgaW1wbGVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
aW5kZXggMWFjY2FkOC4uZDk5ODJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDExLTAzLTAyICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmlld3BvcnQgV2Fy
bmluZy9FcnJvciBNZXNzYWdlcyBBcmUgTm93IEluYWNjdXJhdGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNzA3CisKKyAgICAgICAgUmVmYWN0b3Ig
ZGV2aWNlIHNpemUgaW50byB0aGUgbmV3IENocm9tZUNsaWVudCBtZXRob2QuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50RWZsOjp2aWV3cG9ydERldmljZVNpemUpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgorICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Cisg
ICAgICAgIChfZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19jb21wdXRlKToKKwogMjAxMS0w
My0wMSAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQuIFJvbGwgb3V0IHI4MDA2OCBhbmQgcjgwMDczIGR1ZSB0byBicmVha2luZyBXZWJL
aXQyIFF0IHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmNwcAppbmRleCA2NDI1YzM5Li42OThjODFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAg
LTUyNyw2ICs1MjcsMTMgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmRpc3BhdGNoVmlld3BvcnRE
YXRhRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJiBhcmcKICAgICBld2tfdmlld192
aWV3cG9ydF9hdHRyaWJ1dGVzX3NldChtX3ZpZXcsIGFyZ3VtZW50cyk7CiB9CiAKK0Zsb2F0U2l6
ZSBDaHJvbWVDbGllbnRFZmw6OnZpZXdwb3J0RGV2aWNlU2l6ZSgpIGNvbnN0Cit7CisgICAgaW50
IGRldmljZVdpZHRoID0gKGludCkgcHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53aW5k
b3dSZWN0KCkud2lkdGgoKTsKKyAgICBpbnQgZGV2aWNlSGVpZ2h0ID0gKGludCkgcHJpdi0+cGFn
ZS0+Y2hyb21lKCktPmNsaWVudCgpLT53aW5kb3dSZWN0KCkuaGVpZ2h0KCk7CisgICAgcmV0dXJu
IEZsb2F0U2l6ZSgoZmxvYXQpIGRldmljZVdpZHRoLCAoZmxvYXQpIGRldmljZUhlaWdodCk7Cit9
CisKIGJvb2wgQ2hyb21lQ2xpZW50RWZsOjpzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0
dXJhbCgpCiB7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCmluZGV4IGMxN2ZlMTAuLjdhZjNjYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5oCkBAIC0xNDUsNiArMTQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpY29uRm9y
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZywgMHU+JiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4p
OwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVmlld3BvcnREYXRhRGlkQ2hhbmdlKGNvbnN0
IFZpZXdwb3J0QXJndW1lbnRzJikgY29uc3Q7CisgICAgdmlydHVhbCBGbG9hdFNpemUgdmlld3Bv
cnREZXZpY2VTaXplKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRp
bmdEaXJlY3Rpb25Jc05hdHVyYWwoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbUFsaWdu
bWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
dy5jcHAKaW5kZXggYWIwNjI5YS4uMzI1YzUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCkBAIC0xMDIwLDggKzEwMjAsOCBAQCBzdGF0aWMgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1
dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUoRXZhc19PYgogICAgIGlu
dCBhdmFpbGFibGVfd2lkdGggPSAoaW50KSBwcml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCkt
PnBhZ2VSZWN0KCkud2lkdGgoKTsKICAgICBpbnQgYXZhaWxhYmxlX2hlaWdodCA9IChpbnQpIHBy
aXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cGFnZVJlY3QoKS5oZWlnaHQoKTsKIAotICAg
IGludCBkZXZpY2Vfd2lkdGggPSAoaW50KSBwcml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCkt
PndpbmRvd1JlY3QoKS53aWR0aCgpOwotICAgIGludCBkZXZpY2VfaGVpZ2h0ID0gKGludCkgcHJp
di0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53aW5kb3dSZWN0KCkuaGVpZ2h0KCk7CisgICAg
aW50IGRldmljZV93aWR0aCA9IChpbnQpIHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+
dmlld3BvcnREZXZpY2VTaXplKCkud2lkdGgoKTsKKyAgICBpbnQgZGV2aWNlX2hlaWdodCA9IChp
bnQpIHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+dmlld3BvcnREZXZpY2VTaXplKCku
aGVpZ2h0KCk7CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIGF2YWlsYWJsZV9zaXplID0gV2ViQ29y
ZTo6SW50U2l6ZShhdmFpbGFibGVfd2lkdGgsIGF2YWlsYWJsZV9oZWlnaHQpOwogICAgIFdlYkNv
cmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gV2ViQ29yZTo6Y29tcHV0ZVZpZXdw
b3J0QXR0cmlidXRlcyhwcml2LT52aWV3cG9ydF9hcmd1bWVudHMsIGRlc2t0b3Bfd2lkdGgsIGRl
dmljZV93aWR0aCwgZGV2aWNlX2hlaWdodCwgZGV2aWNlX2RwaSwgYXZhaWxhYmxlX3NpemUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCmluZGV4IDNhMWFkMmUuLjNjMWRlNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAxMS0wMy0wMiAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFZpZXdwb3J0IFdhcm5pbmcvRXJyb3IgTWVzc2FnZXMgQXJlIE5vdyBJbmFjY3VyYXRlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzcwNworCisgICAg
ICAgIFJlZmFjdG9yIGRldmljZSBzaXplIGludG8gdGhlIG5ldyBDaHJvbWVDbGllbnQgbWV0aG9k
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50Ojp2aWV3cG9ydERldmljZVNpemUpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXR2aWV3cG9ydGF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAod2Via2l0Vmlld3BvcnRBdHRyaWJ1
dGVzUmVjb21wdXRlKToKKwogMjAxMS0wMy0wMSAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJvbGwgb3V0IHI4MDA2OCBhbmQgcjgw
MDczIGR1ZSB0byBicmVha2luZyBXZWJLaXQyIFF0IHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCAxNjc5YWZk
Li5mMjg0YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEd0ay5jcHAKQEAgLTY1Miw2ICs2NTIsMTggQEAgdm9pZCBDaHJvbWVDbGll
bnQ6OmRpc3BhdGNoVmlld3BvcnREYXRhRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRz
JiBhcmd1bWUKICAgICB3ZWJraXRWaWV3cG9ydEF0dHJpYnV0ZXNSZWNvbXB1dGUod2Via2l0X3dl
Yl92aWV3X2dldF92aWV3cG9ydF9hdHRyaWJ1dGVzKG1fd2ViVmlldykpOwogfQogCitXZWJDb3Jl
OjpGbG9hdFNpemUgQ2hyb21lQ2xpZW50Ojp2aWV3cG9ydERldmljZVNpemUoKSBjb25zdAorewor
ICAgIFdlYktpdFZpZXdwb3J0QXR0cmlidXRlcyogdmlld3BvcnRBdHRyaWJ1dGVzID0gd2Via2l0
X3dlYl92aWV3X2dldF92aWV3cG9ydF9hdHRyaWJ1dGVzKG1fd2ViVmlldyk7CisgICAgaWYgKCF2
aWV3cG9ydEF0dHJpYnV0ZXMpCisgICAgICAgIHJldHVybiBGbG9hdFNpemUoKTsKKworICAgIFdl
YktpdFZpZXdwb3J0QXR0cmlidXRlc1ByaXZhdGUqIHByaXYgPSB2aWV3cG9ydEF0dHJpYnV0ZXMt
PnByaXY7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHByaXYtPndlYlZpZXc7CisgICAg
SW50UmVjdCB3aW5kb3dSZWN0QXNJbnRSZWN0KHdlYlZpZXctPnByaXYtPmNvcmVQYWdlLT5jaHJv
bWUoKS0+d2luZG93UmVjdCgpKTsKKyAgICByZXR1cm4gRmxvYXRTaXplKHdpbmRvd1JlY3RBc0lu
dFJlY3Quc2l6ZSgpKTsKK30KKwogdm9pZCBDaHJvbWVDbGllbnQ6OnNldEN1cnNvcihjb25zdCBD
dXJzb3ImKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCmluZGV4IDQwMTdmNzQuLmNjOTkz
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEd0ay5oCkBAIC0xMTEsNiArMTExLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzZXRUb29sVGlwKGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViQ29yZTo6VGV4
dERpcmVjdGlvbik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVmlld3BvcnREYXRh
RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpIGNv
bnN0OworICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0U2l6ZSB2aWV3cG9ydERldmljZVNp
emUoKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJpbnQoV2ViQ29yZTo6RnJhbWUq
KTsKICNpZiBFTkFCTEUoREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0dmlld3BvcnRhdHRyaWJ1dGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR2aWV3cG9ydGF0dHJpYnV0ZXMuY3BwCmluZGV4IDlhOThlNDQuLjdlODQ2M2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR2aWV3cG9ydGF0dHJp
YnV0ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR2aWV3cG9ydGF0
dHJpYnV0ZXMuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAid2Via2l0dmlld3BvcnRh
dHRyaWJ1dGVzLmgiCiAKICNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGll
bnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJ3
ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgpAQCAtNTIxLDkgKzUyMiw5IEBAIHZvaWQgd2Via2l0Vmll
d3BvcnRBdHRyaWJ1dGVzUmVjb21wdXRlKFdlYktpdFZpZXdwb3J0QXR0cmlidXRlcyogdmlld3Bv
cnRBdHRyaWJ1CiAgICAgV2ViS2l0Vmlld3BvcnRBdHRyaWJ1dGVzUHJpdmF0ZSogcHJpdiA9IHZp
ZXdwb3J0QXR0cmlidXRlcy0+cHJpdjsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gcHJp
di0+d2ViVmlldzsKIAotICAgIEludFJlY3Qgd2luZG93UmVjdCh3ZWJWaWV3LT5wcml2LT5jb3Jl
UGFnZS0+Y2hyb21lKCktPndpbmRvd1JlY3QoKSk7Ci0gICAgcHJpdi0+ZGV2aWNlV2lkdGggPSB3
aW5kb3dSZWN0LndpZHRoKCk7Ci0gICAgcHJpdi0+ZGV2aWNlSGVpZ2h0ID0gd2luZG93UmVjdC5o
ZWlnaHQoKTsKKyAgICBGbG9hdFNpemUgZGV2aWNlU2l6ZSA9IHdlYlZpZXctPnByaXYtPmNvcmVQ
YWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmRldmljZVZpZXdwb3J0U2l6ZSgpOworICAgIHByaXYt
PmRldmljZVdpZHRoID0gc3RhdGljX2Nhc3Q8aW50PihkZXZpY2VTaXplLndpZHRoKCkpOworICAg
IHByaXYtPmRldmljZUhlaWdodCA9IHN0YXRpY19jYXN0PGludD4oZGV2aWNlU2l6ZS5oZWlnaHQo
KSk7CiAKICAgICBJbnRSZWN0IHJlY3Qod2ViVmlldy0+cHJpdi0+Y29yZVBhZ2UtPmNocm9tZSgp
LT5wYWdlUmVjdCgpKTsKICAgICBwcml2LT5hdmFpbGFibGVXaWR0aCA9IHJlY3Qud2lkdGgoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCBmNGQyNjMxLi45Nzg2ZmVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0xMTYsNyArMTE2LDYgQEAKICNpbmNsdWRlIDxRQmFz
aWNUaW1lcj4KICNpbmNsdWRlIDxRQml0QXJyYXk+CiAjaW5jbHVkZSA8UURlYnVnPgotI2luY2x1
ZGUgPFFEZXNrdG9wV2lkZ2V0PgogI2luY2x1ZGUgPFFEcmFnRW50ZXJFdmVudD4KICNpbmNsdWRl
IDxRRHJhZ0xlYXZlRXZlbnQ+CiAjaW5jbHVkZSA8UURyYWdNb3ZlRXZlbnQ+CkBAIC0yNDQyLDM4
ICsyNDQxLDYgQEAgdm9pZCBRV2ViUGFnZTo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IFFTaXplICZz
aXplKSBjb25zdAogICAgIH0KIH0KIAotc3RhdGljIGludCBnZXRpbnRlbnYoY29uc3QgY2hhciog
dmFyaWFibGUpCi17Ci0gICAgYm9vbCBvazsKLSAgICBpbnQgdmFsdWUgPSBxZ2V0ZW52KHZhcmlh
YmxlKS50b0ludCgmb2spOwotICAgIHJldHVybiAob2spID8gdmFsdWUgOiAtMTsKLX0KLQotc3Rh
dGljIFFTaXplIHF1ZXJ5RGV2aWNlU2l6ZUZvclNjcmVlbkNvbnRhaW5pbmdXaWRnZXQoY29uc3Qg
UVdpZGdldCogd2lkZ2V0KQotewotICAgIFFEZXNrdG9wV2lkZ2V0KiBkZXNrdG9wID0gUUFwcGxp
Y2F0aW9uOjpkZXNrdG9wKCk7Ci0gICAgaWYgKCFkZXNrdG9wKQotICAgICAgICByZXR1cm4gUVNp
emUoKTsKLQotICAgIFFTaXplIHNpemU7Ci0KLSAgICBpZiAod2lkZ2V0KSB7Ci0gICAgICAgIC8v
IFJldHVybnMgdGhlIGF2YWlsYWJsZSBnZW9tZXRyeSBvZiB0aGUgc2NyZWVuIHdoaWNoIGNvbnRh
aW5zIHdpZGdldC4KLSAgICAgICAgLy8gTk9URTogdGhpcyBtdXN0IGJlIHRoZSB0aGUgZnVsbCBz
Y3JlZW4gc2l6ZSBpbmNsdWRpbmcgYW55IGZpeGVkIHN0YXR1cyBhcmVhcyBldGMuCi0gICAgICAg
IHNpemUgPSBkZXNrdG9wLT5hdmFpbGFibGVHZW9tZXRyeSh3aWRnZXQpLnNpemUoKTsKLSAgICB9
IGVsc2UKLSAgICAgICAgc2l6ZSA9IGRlc2t0b3AtPmF2YWlsYWJsZUdlb21ldHJ5KCkuc2l6ZSgp
OwotCi0gICAgLy8gVGhpcyBtdXN0IGJlIGluIHBvcnRyYWl0IG1vZGUsIGFkanVzdCBpZiBub3Qu
Ci0gICAgaWYgKHNpemUud2lkdGgoKSA+IHNpemUuaGVpZ2h0KCkpIHsKLSAgICAgICAgaW50IHdp
ZHRoID0gc2l6ZS53aWR0aCgpOwotICAgICAgICBzaXplLnNldFdpZHRoKHNpemUuaGVpZ2h0KCkp
OwotICAgICAgICBzaXplLnNldEhlaWdodCh3aWR0aCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHNp
emU7Ci19Ci0KIC8qIQogICAgIENvbXB1dGVzIHRoZSBvcHRpbWFsIHZpZXdwb3J0IGNvbmZpZ3Vy
YXRpb24gZ2l2ZW4gdGhlIFxhIGF2YWlsYWJsZVNpemUsIHdoZW4KICAgICB1c2VyIGludGVyZmFj
ZSBjb21wb25lbnRzIGFyZSBkaXNyZWdhcmRlZC4KQEAgLTI1MTMsMTUgKzI0ODAsOSBAQCBRV2Vi
UGFnZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIFFXZWJQYWdlOjp2aWV3cG9ydEF0dHJpYnV0ZXNGb3JT
aXplKGNvbnN0IFFTaXplJiBhdgogICAgICBpZiAoYXZhaWxhYmxlU2l6ZS5pc0VtcHR5KCkpCiAg
ICAgICAgICByZXR1cm4gcmVzdWx0OyAvLyBSZXR1cm5zIGFuIGludmFsaWQgaW5zdGFuY2UuCiAK
LSAgICBpbnQgZGV2aWNlV2lkdGggPSBnZXRpbnRlbnYoIlFUV0VCS0lUX0RFVklDRV9XSURUSCIp
OwotICAgIGludCBkZXZpY2VIZWlnaHQgPSBnZXRpbnRlbnYoIlFUV0VCS0lUX0RFVklDRV9IRUlH
SFQiKTsKLQotICAgIC8vIEJvdGggZW52aXJvbm1lbnQgdmFyaWFibGVzIG5lZWQgdG8gYmUgc2V0
IC0gb3IgdGhleSB3aWxsIGJlIGlnbm9yZWQuCi0gICAgaWYgKGRldmljZVdpZHRoIDwgMCAmJiBk
ZXZpY2VIZWlnaHQgPCAwKSB7Ci0gICAgICAgIFFTaXplIHNpemUgPSBxdWVyeURldmljZVNpemVG
b3JTY3JlZW5Db250YWluaW5nV2lkZ2V0KChkLT5jbGllbnQpID8gZC0+Y2xpZW50LT5vd25lcldp
ZGdldCgpIDogMCk7Ci0gICAgICAgIGRldmljZVdpZHRoID0gc2l6ZS53aWR0aCgpOwotICAgICAg
ICBkZXZpY2VIZWlnaHQgPSBzaXplLmhlaWdodCgpOwotICAgIH0KKyAgICBXZWJDb3JlOjpGbG9h
dFNpemUgZGV2aWNlU2l6ZSA9IGQtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+dmlld3BvcnRE
ZXZpY2VTaXplKCk7CisgICAgaW50IGRldmljZVdpZHRoID0gc3RhdGljX2Nhc3Q8aW50PihkZXZp
Y2VTaXplLndpZHRoKCkpOworICAgIGludCBkZXZpY2VIZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+
KGRldmljZVNpemUuaGVpZ2h0KCkpOwogCiAgICAgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVz
IGNvbmYgPSBXZWJDb3JlOjpjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKGQtPnZpZXdwb3J0QXJn
dW1lbnRzKCksIGRlc2t0b3BXaWR0aCwgZGV2aWNlV2lkdGgsIGRldmljZUhlaWdodCwgcXRfZGVm
YXVsdERwaSgpLCBhdmFpbGFibGVTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA4NTVkNTMyLi41
MjE1MjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTAzLTAyICBKb3Nl
cGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmlld3BvcnQgV2FybmluZy9FcnJvciBNZXNzYWdl
cyBBcmUgTm93IEluYWNjdXJhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUzNzA3CisKKyAgICAgICAgUmVmYWN0b3IgZGV2aWNlIHNpemUgaW50byB0
aGUgbmV3IENocm9tZUNsaWVudCBtZXRob2QuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3Bw
OgorICAgICAgICAoUVdlYlBhZ2U6OnZpZXdwb3J0QXR0cmlidXRlc0ZvclNpemUpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmdldGludGVudik6CisgICAgICAgIChXZWJDb3JlOjpxdWVyeURldmljZVNpemVGb3JTY3JlZW5D
b250YWluaW5nV2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojp2aWV3
cG9ydERldmljZVNpemUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0
Lmg6CisKIDIwMTEtMDMtMDEgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLiBSb2xsIG91dCByODAwNjggYW5kIHI4MDA3MyBkdWUgdG8g
YnJlYWtpbmcgV2ViS2l0MiBRdCBwb3J0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAppbmRleCBmYjliOTZjLi5mZmM3NWQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNw
cApAQCAtNjksNyArNjksOSBAQAogI2luY2x1ZGUgInF3ZWJzZWN1cml0eW9yaWdpbi5oIgogI2lu
Y2x1ZGUgInF3ZWJzZWN1cml0eW9yaWdpbl9wLmgiCiAjaW5jbHVkZSAicXdlYnZpZXcuaCIKKyNp
bmNsdWRlIDxxYXBwbGljYXRpb24uaD4KICNpbmNsdWRlIDxxZGVidWcuaD4KKyNpbmNsdWRlIDxx
ZGVza3RvcHdpZGdldC5oPgogI2luY2x1ZGUgPHFldmVudGxvb3AuaD4KICNpbmNsdWRlIDxxdGV4
dGRvY3VtZW50Lmg+CiAjaW5jbHVkZSA8cXRvb2x0aXAuaD4KQEAgLTcxMSwxMSArNzEzLDU4IEBA
IFFXZWJTZWxlY3RNZXRob2QqIENocm9tZUNsaWVudFF0OjpjcmVhdGVTZWxlY3RQb3B1cCgpIGNv
bnN0CiAjZW5kaWYKIH0KIAorc3RhdGljIGludCBnZXRpbnRlbnYoY29uc3QgY2hhciogdmFyaWFi
bGUpCit7CisgICAgYm9vbCBvazsKKyAgICBpbnQgdmFsdWUgPSBxZ2V0ZW52KHZhcmlhYmxlKS50
b0ludCgmb2spOworICAgIHJldHVybiAob2spID8gdmFsdWUgOiAtMTsKK30KKworc3RhdGljIFFT
aXplIHF1ZXJ5RGV2aWNlU2l6ZUZvclNjcmVlbkNvbnRhaW5pbmdXaWRnZXQoY29uc3QgUVdpZGdl
dCogd2lkZ2V0KQoreworICAgIFFEZXNrdG9wV2lkZ2V0KiBkZXNrdG9wID0gUUFwcGxpY2F0aW9u
OjpkZXNrdG9wKCk7CisgICAgaWYgKCFkZXNrdG9wKQorICAgICAgICByZXR1cm4gUVNpemUoKTsK
KworICAgIFFTaXplIHNpemU7CisKKyAgICBpZiAod2lkZ2V0KSB7CisgICAgICAgIC8vIFJldHVy
bnMgdGhlIGF2YWlsYWJsZSBnZW9tZXRyeSBvZiB0aGUgc2NyZWVuIHdoaWNoIGNvbnRhaW5zIHdp
ZGdldC4KKyAgICAgICAgLy8gTk9URTogdGhpcyBtdXN0IGJlIHRoZSB0aGUgZnVsbCBzY3JlZW4g
c2l6ZSBpbmNsdWRpbmcgYW55IGZpeGVkIHN0YXR1cyBhcmVhcyBldGMuCisgICAgICAgIHNpemUg
PSBkZXNrdG9wLT5hdmFpbGFibGVHZW9tZXRyeSh3aWRnZXQpLnNpemUoKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgc2l6ZSA9IGRlc2t0b3AtPmF2YWlsYWJsZUdlb21ldHJ5KCkuc2l6ZSgpOworCisg
ICAgLy8gVGhpcyBtdXN0IGJlIGluIHBvcnRyYWl0IG1vZGUsIGFkanVzdCBpZiBub3QuCisgICAg
aWYgKHNpemUud2lkdGgoKSA+IHNpemUuaGVpZ2h0KCkpIHsKKyAgICAgICAgaW50IHdpZHRoID0g
c2l6ZS53aWR0aCgpOworICAgICAgICBzaXplLnNldFdpZHRoKHNpemUuaGVpZ2h0KCkpOworICAg
ICAgICBzaXplLnNldEhlaWdodCh3aWR0aCk7CisgICAgfQorCisgICAgcmV0dXJuIHNpemU7Cit9
CisKIHZvaWQgQ2hyb21lQ2xpZW50UXQ6OmRpc3BhdGNoVmlld3BvcnREYXRhRGlkQ2hhbmdlKGNv
bnN0IFZpZXdwb3J0QXJndW1lbnRzJikgY29uc3QKIHsKICAgICBlbWl0IG1fd2ViUGFnZS0+dmll
d3BvcnRDaGFuZ2VSZXF1ZXN0ZWQoKTsKIH0KIAorRmxvYXRTaXplIENocm9tZUNsaWVudFF0Ojp2
aWV3cG9ydERldmljZVNpemUoKSBjb25zdAoreworICAgIGludCBkZXZpY2VXaWR0aCA9IGdldGlu
dGVudigiUVRXRUJLSVRfREVWSUNFX1dJRFRIIik7CisgICAgaW50IGRldmljZUhlaWdodCA9IGdl
dGludGVudigiUVRXRUJLSVRfREVWSUNFX0hFSUdIVCIpOworCisgICAgLy8gQm90aCBlbnZpcm9u
bWVudCB2YXJpYWJsZXMgbmVlZCB0byBiZSBzZXQgLSBvciB0aGV5IHdpbGwgYmUgaWdub3JlZC4K
KyAgICBpZiAoZGV2aWNlV2lkdGggPCAwICYmIGRldmljZUhlaWdodCA8IDApIHsKKyAgICAgICAg
UVNpemUgc2l6ZSA9IHF1ZXJ5RGV2aWNlU2l6ZUZvclNjcmVlbkNvbnRhaW5pbmdXaWRnZXQoKG1f
d2ViUGFnZSAmJiBtX3dlYlBhZ2UtPmQtPmNsaWVudCkgPyBtX3dlYlBhZ2UtPmQtPmNsaWVudC0+
b3duZXJXaWRnZXQoKSA6IDApOworICAgICAgICBkZXZpY2VXaWR0aCA9IHNpemUud2lkdGgoKTsK
KyAgICAgICAgZGV2aWNlSGVpZ2h0ID0gc2l6ZS5oZWlnaHQoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gRmxvYXRTaXplKGRldmljZVdpZHRoLCBkZXZpY2VIZWlnaHQpOworfQorCiBib29sIENocm9t
ZUNsaWVudFF0OjpzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpCiB7CiAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRRdC5oCmluZGV4IGYxYjM3N2MuLjM2NzJhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKQEAgLTE5NSw2ICsxOTUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFFXZWJTZWxlY3RNZXRob2QqIGNyZWF0ZVNl
bGVjdFBvcHVwKCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVmlld3Bv
cnREYXRhRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJikgY29uc3Q7CisgICAgICAg
IHZpcnR1YWwgRmxvYXRTaXplIHZpZXdwb3J0RGV2aWNlU2l6ZSgpIGNvbnN0OwogCiAgICAgICAg
IFFXZWJQYWdlKiBtX3dlYlBhZ2U7CiAgICAgICAgIFdlYkNvcmU6OktVUkwgbGFzdEhvdmVyVVJM
Owo=
</data>
<flag name="commit-queue"
          id="76627"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84657</attachid>
            <date>2011-03-03 16:57:50 -0800</date>
            <delta_ts>2011-03-04 01:22:51 -0800</delta_ts>
            <desc>[PATCH] Remove Confusing Tips - Improve Warnings + Errors</desc>
            <filename>remove-lame-tips.patch</filename>
            <type>text/plain</type>
            <size>10042</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1ZGIzY2VlLi41NWJiOTUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDMt
MDMgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWaWV3cG9ydCBXYXJuaW5nL0Vycm9y
IE1lc3NhZ2VzIEFyZSBOb3cgSW5hY2N1cmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MDcKKworICAgICAgICBBZGRlZCB0ZXN0cyBzcGVjaWZp
Y2FsbHkgdG8gdGVzdCBDb25zb2xlIHdhcm5pbmdzLgorCisgICAgICAgICogZmFzdC92aWV3cG9y
dC92aWV3cG9ydC13YXJuaW5ncy0xLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvdmlld3Bv
cnQvdmlld3BvcnQtd2FybmluZ3MtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3ZpZXdw
b3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC92aWV3
cG9ydC92aWV3cG9ydC13YXJuaW5ncy00Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvdmll
d3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Zp
ZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTYuaHRtbDogQWRkZWQuCisKIDIwMTEtMDMtMDEgIEpv
c2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
IGV4cGVjdGF0aW9ucyB1cGRhdGUuIFRoaXMgaXMgYSBmb2xsb3ctdXAgdG8gcjgwMDYxLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy0xLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTEuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjk3OTc1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy0xLmh0bWwK
QEAgLTAsMCArMSwxMyBAQAorPGhlYWQ+CisgICAgPHRpdGxlPk5vIHdhcm5pbmdzIG9yIGVycm9y
cy48L3RpdGxlPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZp
Y2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgbWF4aW11bS1zY2FsZT0yIj4KKyAgICA8c2NyaXB0
PgorICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
Q29uZmlndXJhdGlvbkZvclZpZXdwb3J0KDE2MCwgMzIwLCA0ODAsIDMyMCwgMzUyKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJ0ZXN0KCk7Ij4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3Bv
cnQtd2FybmluZ3MtMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13
YXJuaW5ncy0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg3NWFl
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQt
d2FybmluZ3MtMi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxoZWFkPgorICAgIDx0aXRsZT5VbnJl
Y29nbml6ZWQga2V5LjwvdGl0bGU+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9
Ind3aWR0aD0xMDAiPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHRlc3QoKSB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDb25maWd1cmF0aW9uRm9yVmlld3BvcnQoMTYwLCAz
MjAsIDQ4MCwgMzIwLCAzNTIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKTsiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy0zLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi45ZjU4Mzk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy0zLmh0bWwKQEAgLTAsMCArMSwxMyBA
QAorPGhlYWQ+CisgICAgPHRpdGxlPlVucmVjb2duaXplZCB2YWx1ZS48L3RpdGxlPgorICAgIDxt
ZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD11bnJlY29nbml6ZWQtd2lkdGgiPgor
ICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBDb25maWd1cmF0aW9uRm9yVmlld3BvcnQoMTYwLCAzMjAsIDQ4MCwgMzIwLCAz
NTIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9InRlc3QoKTsiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC92aWV3
cG9ydC92aWV3cG9ydC13YXJuaW5ncy00Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0
L3ZpZXdwb3J0LXdhcm5pbmdzLTQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5iYjE1ZDdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9y
dC92aWV3cG9ydC13YXJuaW5ncy00Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPGhlYWQ+CisgICAg
PHRpdGxlPlRydW5jYXRlZCB2YWx1ZS48L3RpdGxlPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0
IiBjb250ZW50PSJ3aWR0aD0xMjN4NDU2Ij4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlv
biB0ZXN0KCkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ29uZmlndXJhdGlvbkZvclZp
ZXdwb3J0KDE2MCwgMzIwLCA0ODAsIDMyMCwgMzUyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNS5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy01Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI5NTA4YwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNS5odG1sCkBA
IC0wLDAgKzEsMTMgQEAKKzxoZWFkPgorICAgIDx0aXRsZT5NdWx0aXBsZSB3YXJuaW5ncyBhbmQg
ZXJyb3JzIGR1ZSB0byBpbmNvcnJlY3Qgc2VtaWNvbG9uIHNlcGFyYXRvcnMuPC90aXRsZT4KKyAg
ICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoOyBpbml0
aWFsLXNjYWxlPTEuMDsgbWF4aW11bS1zY2FsZT0xLjA7IHVzZXItc2NhbGFibGU9MDsiPgorICAg
IDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBDb25maWd1cmF0aW9uRm9yVmlld3BvcnQoMTYwLCAzMjAsIDQ4MCwgMzIwLCAzNTIp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InRlc3QoKTsiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9y
dC92aWV3cG9ydC13YXJuaW5ncy02Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L3Zp
ZXdwb3J0LXdhcm5pbmdzLTYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45NmVlZWJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC92
aWV3cG9ydC13YXJuaW5ncy02Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPGhlYWQ+CisgICAgPHRp
dGxlPk1pc3NpbmcgdmFsdWUgc2hvdWxkIHByb2R1Y2UgYW4gZXJyb3IuPC90aXRsZT4KKyAgICA8
bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9Ij4KKyAgICA8c2NyaXB0PgorICAg
ICAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ29uZmln
dXJhdGlvbkZvclZpZXdwb3J0KDE2MCwgMzIwLCA0ODAsIDMyMCwgMzUyKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0
KCk7Ij4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBiOTU2ZTlmLi45ZGIzMjdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTEtMDMtMDMgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWaWV3
cG9ydCBXYXJuaW5nL0Vycm9yIE1lc3NhZ2VzIEFyZSBOb3cgSW5hY2N1cmF0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MDcKKworICAgICAgICBD
b3JyZWN0IGFuZCBpbXByb3ZlIHRoZSBlcnJvciBtZXNzYWdlcyBmb3Igdmlld3BvcnQgcGFyc2lu
Zy4KKworICAgICAgICBUZXN0czogZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy0xLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtMi5odG1s
CisgICAgICAgICAgICAgICBmYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTMuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC92aWV3cG9ydC92aWV3cG9ydC13YXJuaW5ncy00Lmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3Qvdmlld3BvcnQvdmlld3BvcnQtd2FybmluZ3MtNS5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LXdhcm5pbmdzLTYuaHRtbAorCisgICAg
ICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om51bWVy
aWNQcmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZFNpemVWYWx1ZSk6IHJlbW92ZSBpbmNv
cnJlY3QgZGV2aWNlLXdpZHRoIC8gaGVpZ2h0IHRpcHMuCisgICAgICAgIChXZWJDb3JlOjpzZXRW
aWV3cG9ydEZlYXR1cmUpOiByZXBvcnQgYSB3YXJuaW5nIGZvciBhbiB1bnJlY29nbml6ZWQga2V5
LgorICAgICAgICAoV2ViQ29yZTo6dmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZSk6IGFkZGVk
IHRlbXBsYXRlIGZvciB1bnJlY29nbml6ZWQga2V5LgorICAgICAgICAoV2ViQ29yZTo6dmlld3Bv
cnRFcnJvck1lc3NhZ2VMZXZlbCk6IGNsYXNzaWZ5IGFuIHVucmVjb2duaXplZCBrZXkgaXMgYW4g
ZXJyb3IuCisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmg6IHJlbW92ZWQgbm8gbG9u
Z2VyIHVzZWQgd2FybmluZ3MuCisKIDIwMTEtMDMtMDEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJl
dmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4
MDA3OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCmluZGV4IDA2YzVl
YTIuLmU3NWEzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3Vt
ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcApA
QCAtMTkwLDcgKzE5MCw3IEBAIHN0YXRpYyBmbG9hdCBudW1lcmljUHJlZml4KGNvbnN0IFN0cmlu
ZyYga2V5U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBECiAgICAgaWYgKCEqb2sp
IHsKICAgICAgICAgaWYgKCFkaWRSZWFkTnVtYmVyKSB7CiAgICAgICAgICAgICBBU1NFUlQoIXZh
bHVlKTsKLSAgICAgICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgVW5yZWNv
Z25pemVkVmlld3BvcnRBcmd1bWVudEVycm9yLCB2YWx1ZVN0cmluZywga2V5U3RyaW5nKTsKKyAg
ICAgICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgVW5yZWNvZ25pemVkVmll
d3BvcnRBcmd1bWVudFZhbHVlRXJyb3IsIHZhbHVlU3RyaW5nLCBrZXlTdHJpbmcpOwogICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICB9CiAgICAgICAgICpvayA9IHRydWU7CkBAIC0y
MjEsMTEgKzIyMSw2IEBAIHN0YXRpYyBmbG9hdCBmaW5kU2l6ZVZhbHVlKGNvbnN0IFN0cmluZyYg
a2V5U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBECiAgICAgaWYgKHZhbHVlIDwg
MCkKICAgICAgICAgcmV0dXJuIFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CiAKLSAgICBp
ZiAoa2V5U3RyaW5nID09ICJ3aWR0aCIpCi0gICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhk
b2N1bWVudCwgRGV2aWNlV2lkdGhTaG91bGRCZVVzZWRXYXJuaW5nLCBTdHJpbmcoKSwgU3RyaW5n
KCkpOwotICAgIGVsc2UgaWYgKGtleVN0cmluZyA9PSAiaGVpZ2h0IikKLSAgICAgICAgcmVwb3J0
Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBEZXZpY2VIZWlnaHRTaG91bGRCZVVzZWRXYXJuaW5n
LCBTdHJpbmcoKSwgU3RyaW5nKCkpOwotCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0zMzIs
MTMgKzMyNywxNCBAQCB2b2lkIHNldFZpZXdwb3J0RmVhdHVyZShjb25zdCBTdHJpbmcmIGtleVN0
cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywgRG9jdQogICAgICAgICBhcmd1bWVudHMt
PnVzZXJTY2FsYWJsZSA9IGZpbmRVc2VyU2NhbGFibGVWYWx1ZShrZXlTdHJpbmcsIHZhbHVlU3Ry
aW5nLCBkb2N1bWVudCk7CiAgICAgZWxzZSBpZiAoa2V5U3RyaW5nID09ICJ0YXJnZXQtZGVuc2l0
eWRwaSIpCiAgICAgICAgIGFyZ3VtZW50cy0+dGFyZ2V0RGVuc2l0eURwaSA9IGZpbmRUYXJnZXRE
ZW5zaXR5RFBJVmFsdWUoa2V5U3RyaW5nLCB2YWx1ZVN0cmluZywgZG9jdW1lbnQpOworICAgIGVs
c2UKKyAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBVbnJlY29nbml6ZWRW
aWV3cG9ydEFyZ3VtZW50S2V5RXJyb3IsIGtleVN0cmluZywgU3RyaW5nKCkpOwogfQogCiBzdGF0
aWMgY29uc3QgY2hhciogdmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZShWaWV3cG9ydEVycm9y
Q29kZSBlcnJvckNvZGUpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGVycm9yc1td
ID0gewotICAgICAgICAiVmlld3BvcnQgd2lkdGggb3IgaGVpZ2h0IHNldCB0byBwaHlzaWNhbCBk
ZXZpY2Ugd2lkdGgsIHRyeSB1c2luZyBcImRldmljZS13aWR0aFwiIGNvbnN0YW50IGluc3RlYWQg
Zm9yIGZ1dHVyZSBjb21wYXRpYmlsaXR5LiIsCi0gICAgICAgICJWaWV3cG9ydCBoZWlnaHQgb3Ig
aGVpZ2h0IHNldCB0byBwaHlzaWNhbCBkZXZpY2UgaGVpZ2h0LCB0cnkgdXNpbmcgXCJkZXZpY2Ut
aGVpZ2h0XCIgY29uc3RhbnQgaW5zdGVhZCBmb3IgZnV0dXJlIGNvbXBhdGliaWxpdHkuIiwKKyAg
ICAgICAgIlZpZXdwb3J0IGFyZ3VtZW50IGtleSBcIiVyZXBsYWNlbWVudDFcIiBub3QgcmVjb2du
aXplZCBhbmQgaWdub3JlZC4iLAogICAgICAgICAiVmlld3BvcnQgYXJndW1lbnQgdmFsdWUgXCIl
cmVwbGFjZW1lbnQxXCIgZm9yIGtleSBcIiVyZXBsYWNlbWVudDJcIiBub3QgcmVjb2duaXplZC4g
Q29udGVudCBpZ25vcmVkLiIsCiAgICAgICAgICJWaWV3cG9ydCBhcmd1bWVudCB2YWx1ZSBcIiVy
ZXBsYWNlbWVudDFcIiBmb3Iga2V5IFwiJXJlcGxhY2VtZW50MlwiIHdhcyB0cnVuY2F0ZWQgdG8g
aXRzIG51bWVyaWMgcHJlZml4LiIsCiAgICAgICAgICJWaWV3cG9ydCBtYXhpbXVtLXNjYWxlIGNh
bm5vdCBiZSBsYXJnZXIgdGhhbiAxMC4wLiBUaGUgbWF4aW11bS1zY2FsZSB3aWxsIGJlIHNldCB0
byAxMC4wLiIsCkBAIC0zNTEsMTIgKzM0NywxMSBAQCBzdGF0aWMgY29uc3QgY2hhciogdmlld3Bv
cnRFcnJvck1lc3NhZ2VUZW1wbGF0ZShWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUpCiBzdGF0
aWMgTWVzc2FnZUxldmVsIHZpZXdwb3J0RXJyb3JNZXNzYWdlTGV2ZWwoVmlld3BvcnRFcnJvckNv
ZGUgZXJyb3JDb2RlKQogewogICAgIHN3aXRjaCAoZXJyb3JDb2RlKSB7Ci0gICAgY2FzZSBEZXZp
Y2VXaWR0aFNob3VsZEJlVXNlZFdhcm5pbmc6Ci0gICAgY2FzZSBEZXZpY2VIZWlnaHRTaG91bGRC
ZVVzZWRXYXJuaW5nOgogICAgIGNhc2UgVHJ1bmNhdGVkVmlld3BvcnRBcmd1bWVudFZhbHVlRXJy
b3I6CiAgICAgY2FzZSBUYXJnZXREZW5zaXR5RHBpVG9vU21hbGxPckxhcmdlRXJyb3I6CiAgICAg
ICAgIHJldHVybiBUaXBNZXNzYWdlTGV2ZWw7Ci0gICAgY2FzZSBVbnJlY29nbml6ZWRWaWV3cG9y
dEFyZ3VtZW50RXJyb3I6CisgICAgY2FzZSBVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50S2V5
RXJyb3I6CisgICAgY2FzZSBVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50VmFsdWVFcnJvcjoK
ICAgICBjYXNlIE1heGltdW1TY2FsZVRvb0xhcmdlRXJyb3I6CiAgICAgICAgIHJldHVybiBFcnJv
ck1lc3NhZ2VMZXZlbDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmll
d3BvcnRBcmd1bWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5o
CmluZGV4IDMzOTM0NWMuLjJlMGZkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9W
aWV3cG9ydEFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3Vt
ZW50cy5oCkBAIC0zNSw5ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERvY3Vt
ZW50OwogCiBlbnVtIFZpZXdwb3J0RXJyb3JDb2RlIHsKLSAgICBEZXZpY2VXaWR0aFNob3VsZEJl
VXNlZFdhcm5pbmcsCi0gICAgRGV2aWNlSGVpZ2h0U2hvdWxkQmVVc2VkV2FybmluZywKLSAgICBV
bnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50RXJyb3IsCisgICAgVW5yZWNvZ25pemVkVmlld3Bv
cnRBcmd1bWVudEtleUVycm9yLAorICAgIFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRWYWx1
ZUVycm9yLAogICAgIFRydW5jYXRlZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yLAogICAgIE1h
eGltdW1TY2FsZVRvb0xhcmdlRXJyb3IsCiAgICAgVGFyZ2V0RGVuc2l0eURwaVRvb1NtYWxsT3JM
YXJnZUVycm9yCg==
</data>
<flag name="review"
          id="76687"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
      

    </bug>

</bugzilla>