<?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>83928</bug_id>
          
          <creation_ts>2012-04-13 11:59:15 -0700</creation_ts>
          <short_desc>[chromium] add instrumentation for compositing</short_desc>
          <delta_ts>2012-05-25 05:08:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrey Kosyakov">caseq</reporter>
          <assigned_to name="Andrey Kosyakov">caseq</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>602297</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-04-13 11:59:15 -0700</bug_when>
    <thetext>This plumbs willCommit() and didComposite() from CCThreadProxy and CCSingleThreadProxy to InspectorInsturmentation. Note that we currently only account for tasks happening on the main renderer thread, so in case of threaded compositing this is limited to commit.
See also bug 83842 for related inspector-side change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602301</commentid>
    <comment_count>1</comment_count>
      <attachid>137122</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-04-13 12:08:24 -0700</bug_when>
    <thetext>Created attachment 137122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602513</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-13 16:41:14 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602526</commentid>
    <comment_count>3</comment_count>
      <attachid>137122</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-13 17:04:45 -0700</bug_when>
    <thetext>Comment on attachment 137122
Patch

Attachment 137122 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12405130</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603821</commentid>
    <comment_count>4</comment_count>
      <attachid>137122</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-04-16 23:13:01 -0700</bug_when>
    <thetext>Comment on attachment 137122
Patch

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

Looks cool. A few thoughts but nothing major. :)

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:68
&gt; +    virtual void didComposite() = 0;

didComposite -&gt; didBeginFrame --- we have willBeginFrame, this is the closing of that.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:284
&gt;      if (!m_layerTreeHost-&gt;updateLayers(updater))

Fyi, this updateLayers call is the bulk of the time between willBeginFrame/didBeginFrame.

If painting is heavy, e.g. due to rounded corners or gradients etc, this will be big. But it includes singifiant costs more than just WebCore::*:paint(), for example texture upload.

I&apos;d call this compositedPaint, or paintLayers. Some percentage of it will be caught by the existing paint instrumentation, but not all.

Do you want to hook this while you&apos;re at it? willPaintLayers/didPaintLayers would be a good name at least on the CCLayerTreeHostClient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626643</commentid>
    <comment_count>5</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-05-17 09:44:48 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Looks cool. A few thoughts but nothing major. :)
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:68
&gt; &gt; +    virtual void didComposite() = 0;
&gt; 
&gt; didComposite -&gt; didBeginFrame --- we have willBeginFrame, this is the closing of that.

Done.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:284
&gt; &gt;      if (!m_layerTreeHost-&gt;updateLayers(updater))
&gt; 
&gt; Fyi, this updateLayers call is the bulk of the time between willBeginFrame/didBeginFrame.
&gt; 
&gt; If painting is heavy, e.g. due to rounded corners or gradients etc, this will be big. But it includes singifiant costs more than just WebCore::*:paint(), for example texture upload.
&gt; 
&gt; I&apos;d call this compositedPaint, or paintLayers. Some percentage of it will be caught by the existing paint instrumentation, but not all.
&gt; 
&gt; Do you want to hook this while you&apos;re at it? willPaintLayers/didPaintLayers would be a good name at least on the CCLayerTreeHostClient.

Yup, I noticed that, it&apos;s just that I thought this should be a separate change (we&apos;re also likely want to tweak front-end for that).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626644</commentid>
    <comment_count>6</comment_count>
      <attachid>142490</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-05-17 09:47:33 -0700</bug_when>
    <thetext>Created attachment 142490
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626662</commentid>
    <comment_count>7</comment_count>
      <attachid>142490</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-17 10:01:58 -0700</bug_when>
    <thetext>Comment on attachment 142490
Patch

Attachment 142490 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12716625</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629214</commentid>
    <comment_count>8</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-05-21 09:58:50 -0700</bug_when>
    <thetext>ping :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629286</commentid>
    <comment_count>9</comment_count>
      <attachid>142490</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-21 11:16:39 -0700</bug_when>
    <thetext>Comment on attachment 142490
Patch

The approach looks good, but please add unit tests in CCLayerTreeHostTest.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631887</commentid>
    <comment_count>10</comment_count>
      <attachid>143612</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-05-23 12:12:02 -0700</bug_when>
    <thetext>Created attachment 143612
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631888</commentid>
    <comment_count>11</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-05-23 12:13:12 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 142490 [details])
&gt; The approach looks good, but please add unit tests in CCLayerTreeHostTest.cpp.

Fixed, though I decided we better test these on WebLayerTreeView, given it&apos;s a part of the public interface -- so adding WebLayerTreeViewTest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631891</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-23 12:16:03 -0700</bug_when>
    <thetext>Attachment 143612 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/WebKit/chromium/tests/WebLayerTreeViewTest.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit/chromium/tests/WebLayerTreeViewTest.cpp:30:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 2 in 16 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>631918</commentid>
    <comment_count>13</comment_count>
      <attachid>143612</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-23 12:41:49 -0700</bug_when>
    <thetext>Comment on attachment 143612
Patch

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

Looks good but be careful when landing not to compile-bust chromium.  Safest is to land the chromium implementations of the new functions first, I think.

&gt; Source/Platform/chromium/public/WebLayerTreeViewClient.h:44
&gt; +    // Indicates that main thread tasks associated with frame rendering have completed.
&gt; +    // Issued unconditionally, even if the context was lost in the process.
&gt; +    virtual void didBeginFrame() = 0;

There are implementations of WebLayerTreeViewClient outside the WebKit repository (like ui/compositor/compositor.h in chromium), so adding a new pure virtual means you have to land the chromium-side impls first or add some #ifdef guards

nit: newline between the previous function and this comment block, please

&gt;&gt; Source/WebKit/chromium/tests/WebLayerTreeViewTest.cpp:28
&gt;&gt; +#include &lt;gmock/gmock.h&gt;
&gt; 
&gt; Alphabetical sorting problem.  [build/include_order] [4]

Just bulk select this whole #include block and run sort on it

&gt;&gt; Source/WebKit/chromium/tests/WebLayerTreeViewTest.cpp:30
&gt;&gt; +#include &quot;platform/WebLayer.h&quot;
&gt; 
&gt; Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]

Here the stylebot is just wrong. a sort of the whole block is right.

&gt; Source/WebKit/chromium/tests/WebLayerTreeViewTest.cpp:33
&gt; +#include &quot;platform/WebLayerTreeView.h&quot;
&gt; +#include &quot;platform/WebLayerTreeViewClient.h&quot;
&gt; +#include &quot;platform/WebThread.h&quot;

nit: include this as &lt;public/Web*.h&gt;, please</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631948</commentid>
    <comment_count>14</comment_count>
      <attachid>143612</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-23 13:09:19 -0700</bug_when>
    <thetext>Comment on attachment 143612
Patch

Attachment 143612 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12769302</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633837</commentid>
    <comment_count>15</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-05-25 05:06:13 -0700</bug_when>
    <thetext>Committed r118513: &lt;http://trac.webkit.org/changeset/118513&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633838</commentid>
    <comment_count>16</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-05-25 05:08:02 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 143612 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=143612&amp;action=review
&gt; 
&gt; Looks good but be careful when landing not to compile-bust chromium.  Safest is to land the chromium implementations of the new functions first, I think.

Thanks! I think we just can have an empty default implementation of these methods rather than making them pure virtual. I made them pure originally to see the usages better (and I missed the one in ui/compositor/compositor.h that you pointed out as it only appears to be compiled for Chromium OS). Given that these are just notifications, I think we don&apos;t have to force clients to implement them.

&gt; nit: newline between the previous function and this comment block, please

Fixed.

&gt; &gt;&gt; Source/WebKit/chromium/tests/WebLayerTreeViewTest.cpp:28
&gt; &gt;&gt; +#include &lt;gmock/gmock.h&gt;
&gt; &gt; 
&gt; &gt; Alphabetical sorting problem.  [build/include_order] [4]
&gt; 
&gt; Just bulk select this whole #include block and run sort on it

Sorry for that, I actually had the local version that check-webkit-style was happy with. I forgot to commit it locally before using webkit-patch upload -g HEAD to skip the inspector part of the patch -- so it picked an earlier revision for upload, while running style check on top of (correct) locally-modified version.

&gt; &gt; Source/WebKit/chromium/tests/WebLayerTreeViewTest.cpp:33
&gt; &gt; +#include &quot;platform/WebLayerTreeView.h&quot;
&gt; &gt; +#include &quot;platform/WebLayerTreeViewClient.h&quot;
&gt; &gt; +#include &quot;platform/WebThread.h&quot;
&gt; 
&gt; nit: include this as &lt;public/Web*.h&gt;, please

Fixed.

I&apos;ve also fixed a somewhat bold way in which test timeouts used to be handled, so that timeout task is canceled once we&apos;re done with the test.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137122</attachid>
            <date>2012-04-13 12:08:24 -0700</date>
            <delta_ts>2012-05-17 09:47:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83928-20120413120823.patch</filename>
            <type>text/plain</type>
            <size>11139</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBiZWQ0YjQyNDQ5NDY5
MGZjNjA4NmM4N2MyZTgxYmUwYjE0MDAwZWNjLi4yNmJiYmJhMDc2MzA4NjA1MjM0OWY4ODMwYWM3
ZmE0M2MwOGM2ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNC0xMyAg
QW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gYWRkIGluc3RydW1lbnRhdGlvbiBmb3IgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzOTI4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBhZGRlZCB3aWxsQ29tbWl0KCkgYW5kIGRp
ZENvbXBvc2l0ZSgpIG1ldGhvZHMgZm9yIGluc3RydW1lbnRhdGlvbiBvZiBjb21wb3NpdGluZy4K
KworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50Lmg6Cisg
ICAgICAgIChXZWJMYXllclRyZWVWaWV3Q2xpZW50KToKKwogMjAxMi0wNC0xMiAgU2hlcmlmZiBC
b3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjExNDA3NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhN2FlYzIxOTFkNTlkMzQyM2UwMzkz
ZmY3NGIzNjVkZWI2YTE0MWIzLi40MzFhZGM1ODZhN2Q0NmU0OTU3NWZmZDVjNWQ3NmZhNjJkZTJm
YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDQtMTMgIEFuZHJleSBLb3N5
YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIGFkZCBpbnN0
cnVtZW50YXRpb24gZm9yIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MzkyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIC0gcGx1bWIgd2lsbENvbW1pdCgpIGFuZCBkaWRDb21wb3NlKCkg
ZnJvbSBDQ1NpbmdsZVRocmVhZFByb3h5IGFuZCBDQ1RocmVhZFByb3h5IHRvIGluc3BlY3RvciBp
bnN0cnVtZW50YXRpb247CisgICAgICAgIC0gbm90ZSBmb3IgdGhyZWFkZWQgY2FzZSwgZGlkQ29t
cG9zZSgpIGlzIGludm9rZWQgdXBvbiB1bmJsb2NraW5nIG9mIG1haW4gdGhyZWFkOworCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6Cisg
ICAgICAgIChDQ0xheWVyVHJlZUhvc3RDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0Ojp3aWxsQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dDo6ZGlkQ29tcG9zaXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhy
ZWFkUHJveHk6OmNvbW1pdEFuZENvbXBvc2l0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5OjpiZWdpbkZyYW1lKToKKwogMjAxMi0wNC0xMiAgQW5kcmV5IEtvc3lha292ICA8
Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBpbnNwZWN0
b3IgaW5zdHJ1bWVudGF0aW9uIGludGVyZmFjZSBmb3IgY29tcG9zaXRpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggY2RkM2I2MjA4MjY0YWU3NWMxNTM3YTM5ZWFjMDY0MmIxN2E2MWFm
NC4uMTk5M2VlYjYxMDU2YTg2MzZkMzNhNDQ0MmY1YmZmMGQxM2M1YjA5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wNC0xMyAgQW5kcmV5IEtvc3lh
a292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gYWRkIGluc3Ry
dW1lbnRhdGlvbiBmb3IgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgzOTI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgLSBwbHVtYiB3aWxsQ29tbWl0KCkgYW5kIGRpZENvbXBvc2l0ZSgp
IHRvIGluc3BlY3RvciBpbnN0cnVtZW50YXRpb24gdmlhIFdlYlZpZXdJbXBsLgorCisgICAgICAg
ICogc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJUcmVlVmlld0ltcGw6OndpbGxDb21taXQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OmRpZENvbXBvc2l0ZSk6CisgICAgICAgICog
c3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmg6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3SW1w
bCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OndpbGxDb21taXQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OmRpZENvbXBvc2l0ZSk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBs
Lmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisKIDIwMTItMDQtMTMgIFl1cnkgU2VtaWtoYXRz
a3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQnVpbGQgZml4
IGFmdGVyIHIxMTQxMjYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCmluZGV4IGZkMjQ0ODdjNTlhODc1ZGJlZmI0
NmQ5YjUxN2JjM2M0MjZlNDcxODcuLjNiY2Q0MTNkNmQ5YzU0MTg0Y2I1NGRlZTY5ZWVjM2E2MTc1
ZDg0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5
ZXJUcmVlVmlld0NsaWVudC5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCkBAIC01OSw2ICs1OSwxMCBAQCBwdWJsaWM6CiAgICAg
Ly8gY29udGV4dCBldmVudCkuCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlYmluZEdyYXBoaWNzQ29u
dGV4dChib29sIHN1Y2Nlc3MpID0gMDsKIAorICAgIC8vIEluZGljYXRlcyB0aGF0IGEgZnJhbWUg
d2lsbCBiZSBjb21taXR0ZWQgdG8gdGhlIGltcGwgc2lkZSBvZiB0aGUgY29tcG9zaXRvcgorICAg
IC8vIGZvciByZW5kZXJpbmcuCisgICAgdmlydHVhbCB2b2lkIHdpbGxDb21taXQoKSA9IDA7Cisg
CiAgICAgLy8gSW5kaWNhdGVzIHRoYXQgYSBmcmFtZSB3YXMgY29tbWl0dGVkIHRvIHRoZSBpbXBs
IHNpZGUgb2YgdGhlIGNvbXBvc2l0b3IKICAgICAvLyBmb3IgcmVuZGVyaW5nLgogICAgIC8vCkBA
IC03Myw2ICs3NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gcmVuZGVyaW5nLgogICAgIHZpcnR1YWwg
dm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkgPSAwOwogCisgICAgLy8gSW5kaWNhdGVzIHRo
YXQgbWFpbiB0aHJlYWQgdGFza3MgYXNzb2NpYXRlZCB3aXRoIGZyYW1lIHJlbmRlcmluZyBoYXZl
IGNvbXBsZXRlZC4KKyAgICAvLyBJc3N1ZWQgdW5jb25kaXRpb25hbGx5LCBldmVuIGlmIHRoZSBj
b250ZXh0IHdhcyBsb3N0IGluIHRoZSBwcm9jZXNzLgorICAgIHZpcnR1YWwgdm9pZCBkaWRDb21w
b3NpdGUoKSA9IDA7CisKICAgICAvLyBTY2hlZHVsZXMgYSBjb21wb3NpdGluZyBwYXNzLCBtZWFu
aW5nIHRoZSBjbGllbnQgc2hvdWxkIGNhbGwKICAgICAvLyBXZWJMYXllclRyZWVWaWV3Ojpjb21w
b3NpdGUgYXQgYSBsYXRlciB0aW1lLiBUaGlzIGlzIG9ubHkgY2FsbGVkIGlmIHRoZQogICAgIC8v
IGNvbXBvc2l0b3IgdGhyZWFkIGlzIGRpc2FibGVkOyB3aGVuIGVuYWJsZWQsIHRoZSBjb21wb3Np
dG9yIHdpbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggZjc4ODlmZGE0NzI0MTE1
MDg5NGFkMTc2ZjFkZjg1ZTk3ZDIyZTliOS4uODI2YTM1NzJlNTAzMTRkZTU3NDAwYTEwYTFjMjc1
NDYwMDA4MjgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTYwLDkgKzYwLDEy
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJ
bnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNjYWxlKSA9IDA7CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVDb250ZXh0KCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZXNzKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHdpbGxDb21taXQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdCgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkgPSAwOworICAgIC8vIE1hcmtz
IGZpbmlzaGluZyBjb21wb3NpdGluZy1yZWxhdGVkIHRhc2tzIG9uIHRoZSBtYWluIHRocmVhZC4g
SW4gdGhyZWFkZWQgbW9kZSwgdGhpcyBjb3JyZXNwb25kcyB0byBkaWRDb21taXQoKS4KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ29tcG9zaXRlKCkgPSAwOwogCiAgICAgLy8gVXNlZCBvbmx5IGluIHRo
ZSBzaW5nbGUtdGhyZWFkZWQgcGF0aC4KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3Np
dGUoKSA9IDA7CkBAIC0xNTMsOCArMTU2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgUmVjcmVhdGVG
YWlsZWRBbmRHYXZlVXAsCiAgICAgfTsKICAgICBSZWNyZWF0ZVJlc3VsdCByZWNyZWF0ZUNvbnRl
eHQoKTsKKyAgICB2b2lkIHdpbGxDb21taXQoKSB7IG1fY2xpZW50LT53aWxsQ29tbWl0KCk7IH0K
ICAgICB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIHsgbV9jbGllbnQtPmRpZENvbW1pdEFu
ZERyYXdGcmFtZSgpOyB9CiAgICAgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkgeyBtX2Ns
aWVudC0+ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOyB9CisgICAgdm9pZCBkaWRDb21wb3NpdGUo
KSB7IG1fY2xpZW50LT5kaWRDb21wb3NpdGUoKTsgfQogICAgIHZvaWQgZGVsZXRlQ29udGVudHNU
ZXh0dXJlc09uSW1wbFRocmVhZChUZXh0dXJlQWxsb2NhdG9yKik7CiAgICAgLy8gUmV0dXJucyBm
YWxzZSBpZiB3ZSBzaG91bGQgYWJvcnQgdGhpcyBmcmFtZSBkdWUgdG8gaW5pdGlhbGl6YXRpb24g
ZmFpbHVyZS4KICAgICBib29sIHVwZGF0ZUxheWVycyhDQ1RleHR1cmVVcGRhdGVyJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDNlNTNlZmU2YjkwMTNhZWUw
MzE4MTU2ZjBlNzEwMDRjZmNlODEyZWEuLmMyZGE2NTkyNjBjMDgwMWYzMjA5ZDRhYTliYjZmY2Rh
NjY4OTY5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0y
ODQsOCArMjg0LDExIEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0QW5kQ29tcG9z
aXRlKCkKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBtX2xheWVyVHJlZUhvc3QtPndpbGxDb21taXQo
KTsKICAgICBkb0NvbW1pdCh1cGRhdGVyKTsKLSAgICByZXR1cm4gZG9Db21wb3NpdGUoKTsKKyAg
ICBib29sIHJlc3VsdCA9IGRvQ29tcG9zaXRlKCk7CisgICAgbV9sYXllclRyZWVIb3N0LT5kaWRD
b21wb3NpdGUoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBib29sIENDU2luZ2xlVGhyZWFk
UHJveHk6OmRvQ29tcG9zaXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggNjM4
ZWNkMjU1N2RjNjg4MTQ0MDczMDcyM2RiOWZhY2I2NDgwMDQ1My4uOWU2NTdhYjgxMTYwYjUyM2M3
MDE1NGM1ZmU3ZmY0NjQ4YmFmYjczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAg
LTQ3MCw2ICs0NzAsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWUoKQogICAgIGlm
ICghbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKnJlcXVlc3QtPnVwZGF0ZXIpKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBtX2xheWVyVHJlZUhvc3QtPndpbGxDb21taXQoKTsKICAgICAv
LyBCZWZvcmUgYXBwbHlpbmcgc2Nyb2xscyBhbmQgY2FsbGluZyBhbmltYXRlLCB3ZSBzZXQgbV9h
bmltYXRlUmVxdWVzdGVkIHRvIGZhbHNlLgogICAgIC8vIElmIGl0IGlzIHRydWUgbm93LCBpdCBt
ZWFucyBzZXROZWVkQW5pbWF0ZSB3YXMgY2FsbGVkIGFnYWluLiBDYWxsIHNldE5lZWRzQ29tbWl0
CiAgICAgLy8gbm93IHNvIHRoYXQgd2UgZ2V0IGJlZ2luIGZyYW1lIHdoZW4gdGhpcyBvbmUgaXMg
ZG9uZS4KQEAgLTQ4OCw2ICs0ODksNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWUo
KQogICAgIH0KIAogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKKyAgICBt
X2xheWVyVHJlZUhvc3QtPmRpZENvbXBvc2l0ZSgpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6
OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxl
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJl
ZVZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZp
ZXdJbXBsLmNwcAppbmRleCAxNjFmOWU5MzIyZjdiMTdhZTc5MTI0MjBjNzA5NzllM2U0Y2FhNzE0
Li5lZjk0OTNmYTU2MjdmNzVhYjJiMjdkZThmMzc0YzdhMDA2YTc3MGRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCkBAIC05
NCw2ICs5NCwxMSBAQCB2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpkaWRSZWNyZWF0ZUNvbnRl
eHQoYm9vbCBzdWNjZXNzKQogICAgIG1fY2xpZW50LT5kaWRSZWJpbmRHcmFwaGljc0NvbnRleHQo
c3VjY2Vzcyk7CiB9CiAKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OndpbGxDb21taXQoKQor
eworICAgIG1fY2xpZW50LT53aWxsQ29tbWl0KCk7Cit9CisKIHZvaWQgV2ViTGF5ZXJUcmVlVmll
d0ltcGw6OmRpZENvbW1pdCgpCiB7CiAgICAgbV9jbGllbnQtPmRpZENvbW1pdCgpOwpAQCAtMTA5
LDYgKzExNCwxMSBAQCB2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpkaWRDb21wbGV0ZVN3YXBC
dWZmZXJzKCkKICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOwogfQogCit2
b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpkaWRDb21wb3NpdGUoKQoreworICAgIG1fY2xpZW50
LT5kaWRDb21wb3NpdGUoKTsKK30KKwogdm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6c2NoZWR1
bGVDb21wb3NpdGUoKQogewogICAgIG1fY2xpZW50LT5zY2hlZHVsZUNvbXBvc2l0ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKaW5k
ZXggZGNkM2UyOTI1MmNlM2ZmNjVhYzZlM2Q1NGQwNDMyNzRiZmZmMWM5ZS4uNDE5ZTkyZjMyNDNi
NzA0YTYyZjM1MmM3N2E4NTVhNDU1OTBkMzU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCkBAIC00NSw5ICs0NSwxMSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVDb250ZXh0
KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dChib29sIHN1
Y2Nlc3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29tbWl0KCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q29tcGxldGVTd2FwQnVmZmVycygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21w
b3NpdGUoKSBPVkVSUklERTsKIAogICAgIC8vIE9ubHkgdXNlZCBpbiB0aGUgc2luZ2xlIHRocmVh
ZGVkIHBhdGguCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCkgT1ZFUlJJREU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggY2JkZWJi
NGU0ZDAwZTFjNTJjMGNmMDU3ZjU3ZTg4ZjBjOTNlZjNkZS4uYmRjOTg0NGI2ZjQ3OTJjNGQ0MThk
MjA4ODgzNmU1MDQxYmJkM2Q1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcApAQCAtMzM2MSw2ICszMzYxLDExIEBAIHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5
U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViU2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2Fs
CiAgICAgfQogfQogCit2b2lkIFdlYlZpZXdJbXBsOjp3aWxsQ29tbWl0KCkKK3sKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDb21wb3NpdGUobV9wYWdlLmdldCgpKTsKK30KKwog
dm9pZCBXZWJWaWV3SW1wbDo6ZGlkQ29tbWl0KCkKIHsKICAgICBpZiAobV9jbGllbnQpCkBAIC0z
NDA0LDYgKzM0MDksMTEgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2NoZWR1bGVDb21wb3NpdGUoKQog
ICAgIG1fY2xpZW50LT5zY2hlZHVsZUNvbXBvc2l0ZSgpOwogfQogCit2b2lkIFdlYlZpZXdJbXBs
OjpkaWRDb21wb3NpdGUoKQoreworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29t
cG9zaXRlKG1fcGFnZS5nZXQoKSk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZUxheWVy
VHJlZVZpZXdwb3J0KCkKIHsKICAgICBpZiAoIXBhZ2UoKSB8fCAhbV9ub25Db21wb3NpdGVkQ29u
dGVudEhvc3QgfHwgbV9sYXllclRyZWVWaWV3LmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggMzIzNzlkZGU1ZDVjYjM4Y2RiOWI5ZmQ1ZjIwMWNl
NjFkODAzNmZiYy4uMjJiNTgyNjBkYzlmYzFlYmIzN2VkMTkxMjllZjZiYjdhMTJmMmUwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0yNzMsOSArMjczLDEx
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBX
ZWJTaXplJiwgZmxvYXQpOwogICAgIHZpcnR1YWwgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNyZWF0
ZUNvbnRleHQzRCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWJpbmRHcmFwaGljc0NvbnRleHQo
Ym9vbCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxDb21taXQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ29tbWl0KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7CisgICAgdmlydHVhbCB2
b2lkIGRpZENvbXBvc2l0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgp
OwogCiAgICAgLy8gV2ViVmlld0ltcGwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142490</attachid>
            <date>2012-05-17 09:47:33 -0700</date>
            <delta_ts>2012-05-23 12:11:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83928-20120517204731.patch</filename>
            <type>text/plain</type>
            <size>11783</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBiY2I1ZjUyNmExYTlk
YmFjZmY3ZjkwOWZlMWE0MDVhN2NkYmE4ZTg0Li5hNmEyNDg2OWUwNTIzNjljNDlhZjYzMzA4NWFh
MDNjZGE2NGYzN2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNS0xNyAg
QW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gYWRkIGluc3RydW1lbnRhdGlvbiBmb3IgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzOTI4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBhZGRlZCB3aWxsQ29tbWl0KCkgYW5kIGRp
ZEJlZ2luRnJhbWUoKSBtZXRob2RzIGZvciBpbnN0cnVtZW50YXRpb24gb2YgY29tcG9zaXRpbmcu
CisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oOgor
ICAgICAgICAoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCk6CisKIDIwMTItMDUtMTYgIERhbmEgSmFu
c2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBDbGVhciB0
aGUgbV9wcml2YXRlIHBvaW50ZXIgd2hlbiBkZXN0cm95aW5nIFdlYkZpbHRlck9wZXJhdGlvbnMg
dG8gYXZvaWQgYXNzZXJ0IGluIFdlYlByaXZhdGVPd25QdHIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjZmMzZDhk
OTk0ODBkZjM4OGUzOWZiYWYxODJjNzJiM2E0MjUwMzAxLi4zMzdjNTQyNjQ4ODkyMDQzNzBjMzMw
MzVmYjg3YTIzNjhiMWEyNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDUt
MTcgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hy
b21pdW1dIGFkZCBpbnN0cnVtZW50YXRpb24gZm9yIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzkyOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gcGx1bWIgd2lsbENvbW1pdCgpIGFu
ZCBkaWRCZWdpbkZyYW1lKCkgZnJvbSBDQ1NpbmdsZVRocmVhZFByb3h5IGFuZCBDQ1RocmVhZFBy
b3h5IHRvIGluc3BlY3RvciBpbnN0cnVtZW50YXRpb247CisgICAgICAgIC0gbm90ZSBmb3IgdGhy
ZWFkZWQgY2FzZSwgZGlkQmVnaW5GcmFtZSgpIGlzIGludm9rZWQgdXBvbiB1bmJsb2NraW5nIG9m
IG1haW4gdGhyZWFkOworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpkaWRCZWdpbkZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6d2lsbENvbW1pdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRBbmRDb21wb3NpdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSk6CisKIDIwMTItMDUt
MTYgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBbRXh0ZW5zaW9ucyBBUEldIHBhZ2VzIHNob3duIGluIHNpZGViYXIgYXJlIGxp
bWl0ZWQgaW4gaGVpZ2h0IHRvIDE1MHB4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGYw
NWNiNGVkZTk4ZjVhOWM5OTFiYjUwYzRjNGIxNjhkOTNmYzlhNDQuLjc3MzYxZTZmZTkyYWYyZjE0
OTFjNDQ2ZGU0MmQ5ZmMzNjBjMDQyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMTItMDUtMTcgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIGFkZCBpbnN0cnVtZW50YXRpb24gZm9yIGNvbXBv
c2l0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MzkyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0g
cGx1bWIgd2lsbENvbW1pdCgpIGFuZCBkaWRDb21wb3NpdGUoKSB0byBpbnNwZWN0b3IgaW5zdHJ1
bWVudGF0aW9uIHZpYSBXZWJWaWV3SW1wbC4KKworICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVW
aWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpkaWRC
ZWdpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
VHJlZVZpZXdJbXBsOjp3aWxsQ29tbWl0KToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmll
d0ltcGwuaDoKKyAgICAgICAgKFdlYkxheWVyVHJlZVZpZXdJbXBsKToKKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZGlkQmVnaW5G
cmFtZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
d2lsbENvbW1pdCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJW
aWV3SW1wbCk6CisKIDIwMTItMDUtMTcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBDb252ZXJ0IHNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5G
b3JVUkxTY2hlbWUgdG8gdXNlIEludGVybmFsU2V0dGluZ3MgaW50ZXJmYWNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQu
aCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVu
dC5oCmluZGV4IGZkMjQ0ODdjNTlhODc1ZGJlZmI0NmQ5YjUxN2JjM2M0MjZlNDcxODcuLjJhODA4
NDNiN2IwZmExNmRiNDMwZGZjN2JhY2NjYTc4YjZiODYxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCisrKyBiL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCkBA
IC0zOSw2ICszOSw5IEBAIHB1YmxpYzoKICAgICAvLyBsYXlvdXQsIHdoaWNoIHNob3VsZCBiZSB1
c2VkIGZvciBhY3R1YWwgYW5pbWF0aW9uIG9yIHRyZWUgbWFuaXB1bGF0aW9uCiAgICAgLy8gdGFz
a3MuICBGSVhNRTogbWFrZSBwdXJlIHZpcnR1YWwgb25jZSB1cHN0cmVhbSBkZXBzIGFyZSBzYXRp
c2ZpZWQuCiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZWdpbkZyYW1lKCkgeyB9CisgICAgLy8gSW5k
aWNhdGVzIHRoYXQgbWFpbiB0aHJlYWQgdGFza3MgYXNzb2NpYXRlZCB3aXRoIGZyYW1lIHJlbmRl
cmluZyBoYXZlIGNvbXBsZXRlZC4KKyAgICAvLyBJc3N1ZWQgdW5jb25kaXRpb25hbGx5LCBldmVu
IGlmIHRoZSBjb250ZXh0IHdhcyBsb3N0IGluIHRoZSBwcm9jZXNzLgorICAgIHZpcnR1YWwgdm9p
ZCBkaWRCZWdpbkZyYW1lKCkgPSAwOwogCiAgICAgLy8gVXBkYXRlcyBhbmltYXRpb24gYW5kIGxh
eW91dC4gVGhlc2UgYXJlIGNhbGxlZCBiZWZvcmUgdGhlIGNvbXBvc2l0aW5nCiAgICAgLy8gcGFz
cyBzbyB0aGF0IGxheWVycyBjYW4gYmUgdXBkYXRlZCBhdCB0aGUgZ2l2ZW4gZnJhbWUgdGltZS4K
QEAgLTU5LDYgKzYyLDEwIEBAIHB1YmxpYzoKICAgICAvLyBjb250ZXh0IGV2ZW50KS4KICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmViaW5kR3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2VzcykgPSAwOwog
CisgICAgLy8gSW5kaWNhdGVzIHRoYXQgYSBmcmFtZSB3aWxsIGJlIGNvbW1pdHRlZCB0byB0aGUg
aW1wbCBzaWRlIG9mIHRoZSBjb21wb3NpdG9yCisgICAgLy8gZm9yIHJlbmRlcmluZy4KKyAgICB2
aXJ0dWFsIHZvaWQgd2lsbENvbW1pdCgpID0gMDsKKyAKICAgICAvLyBJbmRpY2F0ZXMgdGhhdCBh
IGZyYW1lIHdhcyBjb21taXR0ZWQgdG8gdGhlIGltcGwgc2lkZSBvZiB0aGUgY29tcG9zaXRvcgog
ICAgIC8vIGZvciByZW5kZXJpbmcuCiAgICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgK
aW5kZXggMTVlYThiOGE2ODQ1ZjUxMjYwNThjZmY5ZjRkYTNiYzEyOWIxMTQzZC4uMzYzOTljMzI5
ZWU0OWIyODg3ZjFlOThlMzcxMWU4MWRkNGRkYjUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmgKQEAgLTU1LDExICs1NSwxNCBAQCBjbGFzcyBUZXh0dXJlTWFuYWdlcjsKIGNsYXNzIEND
TGF5ZXJUcmVlSG9zdENsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZWdp
bkZyYW1lKCkgPSAwOworICAgIC8vIE1hcmtzIGZpbmlzaGluZyBjb21wb3NpdGluZy1yZWxhdGVk
IHRhc2tzIG9uIHRoZSBtYWluIHRocmVhZC4gSW4gdGhyZWFkZWQgbW9kZSwgdGhpcyBjb3JyZXNw
b25kcyB0byBkaWRDb21taXQoKS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5GcmFtZSgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRp
bWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBw
YWdlU2NhbGUpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IGNyZWF0ZUNvbnRleHQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlQ29udGV4
dChib29sIHN1Y2Nlc3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbENvbW1pdCgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21taXRBbmREcmF3RnJhbWUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dh
cEJ1ZmZlcnMoKSA9IDA7CkBAIC0xNDQsNiArMTQ3LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ0NM
YXllclRyZWVIb3N0IGludGVyZmFjZSB0byBDQ1Byb3h5LgogICAgIHZvaWQgd2lsbEJlZ2luRnJh
bWUoKSB7IG1fY2xpZW50LT53aWxsQmVnaW5GcmFtZSgpOyB9CisgICAgdm9pZCBkaWRCZWdpbkZy
YW1lKCkgeyBtX2NsaWVudC0+ZGlkQmVnaW5GcmFtZSgpOyB9CiAgICAgdm9pZCB1cGRhdGVBbmlt
YXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7CiAgICAgdm9pZCBsYXlvdXQo
KTsKICAgICB2b2lkIGJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwq
KTsKQEAgLTE1OSw2ICsxNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlY3JlYXRlRmFpbGVkQW5k
R2F2ZVVwLAogICAgIH07CiAgICAgUmVjcmVhdGVSZXN1bHQgcmVjcmVhdGVDb250ZXh0KCk7Cisg
ICAgdm9pZCB3aWxsQ29tbWl0KCkgeyBtX2NsaWVudC0+d2lsbENvbW1pdCgpOyB9CiAgICAgdm9p
ZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKSB7IG1fY2xpZW50LT5kaWRDb21taXRBbmREcmF3RnJh
bWUoKTsgfQogICAgIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIHsgbV9jbGllbnQtPmRp
ZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKTsgfQogICAgIHZvaWQgZGVsZXRlQ29udGVudHNUZXh0dXJl
c09uSW1wbFRocmVhZChUZXh0dXJlQWxsb2NhdG9yKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwCmluZGV4IGVmNmU4YzZlYzc2MTk1MDBkNWE5Y2VhYTk5ZDc5M2RkNWFh
OWZkZGMuLjFkZmY3Yjc4NTBhOWQyMTM3NjhjNDJjMmUyNzJjMjVjNTdjYWFlYmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0zNTIsOCArMzUyLDExIEBAIGJv
b2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0QW5kQ29tcG9zaXRlKCkKICAgICBpZiAoIW1f
bGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKKyAgICBtX2xheWVyVHJlZUhvc3QtPndpbGxDb21taXQoKTsKICAgICBkb0NvbW1pdCh1
cGRhdGVyKTsKLSAgICByZXR1cm4gZG9Db21wb3NpdGUoKTsKKyAgICBib29sIHJlc3VsdCA9IGRv
Q29tcG9zaXRlKCk7CisgICAgbV9sYXllclRyZWVIb3N0LT5kaWRCZWdpbkZyYW1lKCk7CisgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAogYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbXBvc2l0
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDdhNmFiYzRkOGE1OGNlMDJjYzgx
MTE5ZTI3MDAyYmNlMWZlNzk3YzkuLjE4YWZiMjI1ZDc5MThhMjhhOTQxMWFkZGJmN2RjYWVjZDgy
ZDQ0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC01MjEsNiArNTIxLDcgQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKCkKICAgICAvLyB0aGV5IGFyZSBkcmF3biBi
eSB0aGUgaW1wbCB0aHJlYWQuCiAgICAgbV90ZXh0dXJlc0FjcXVpcmVkID0gZmFsc2U7CiAKKyAg
ICBtX2xheWVyVHJlZUhvc3QtPndpbGxDb21taXQoKTsKICAgICAvLyBCZWZvcmUgYXBwbHlpbmcg
c2Nyb2xscyBhbmQgY2FsbGluZyBhbmltYXRlLCB3ZSBzZXQgbV9hbmltYXRlUmVxdWVzdGVkIHRv
IGZhbHNlLgogICAgIC8vIElmIGl0IGlzIHRydWUgbm93LCBpdCBtZWFucyBzZXROZWVkQW5pbWF0
ZSB3YXMgY2FsbGVkIGFnYWluLiBDYWxsIHNldE5lZWRzQ29tbWl0CiAgICAgLy8gbm93IHNvIHRo
YXQgd2UgZ2V0IGJlZ2luIGZyYW1lIHdoZW4gdGhpcyBvbmUgaXMgZG9uZS4KQEAgLTU0MSw2ICs1
NDIsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWUoKQogICAgIH0KIAogICAgIG1f
bGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPmRp
ZEJlZ2luRnJhbWUoKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxl
dGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKaW5kZXgg
MTYxZjllOTMyMmY3YjE3YWU3OTEyNDIwYzcwOTc5ZTNlNGNhYTcxNC4uMWMwYTBlODE2MDY0M2M4
Y2YwYTU5M2Y4NThmODJhYjQxZDY1NzcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcApAQCAtNjUsNiArNjUsMTEgQEAgdm9p
ZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6d2lsbEJlZ2luRnJhbWUoKQogICAgIG1fY2xpZW50LT53
aWxsQmVnaW5GcmFtZSgpOwogfQogCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpkaWRCZWdp
bkZyYW1lKCkKK3sKKyAgICBtX2NsaWVudC0+ZGlkQmVnaW5GcmFtZSgpOworfQorCiB2b2lkIFdl
YkxheWVyVHJlZVZpZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFt
ZUJlZ2luVGltZSkKIHsKICAgICBtX2NsaWVudC0+dXBkYXRlQW5pbWF0aW9ucyhtb25vdG9uaWNG
cmFtZUJlZ2luVGltZSk7CkBAIC05NCw2ICs5OSwxMSBAQCB2b2lkIFdlYkxheWVyVHJlZVZpZXdJ
bXBsOjpkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZXNzKQogICAgIG1fY2xpZW50LT5kaWRS
ZWJpbmRHcmFwaGljc0NvbnRleHQoc3VjY2Vzcyk7CiB9CiAKK3ZvaWQgV2ViTGF5ZXJUcmVlVmll
d0ltcGw6OndpbGxDb21taXQoKQoreworICAgIG1fY2xpZW50LT53aWxsQ29tbWl0KCk7Cit9CisK
IHZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmRpZENvbW1pdCgpCiB7CiAgICAgbV9jbGllbnQt
PmRpZENvbW1pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TGF5ZXJUcmVlVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVy
VHJlZVZpZXdJbXBsLmgKaW5kZXggZGNkM2UyOTI1MmNlM2ZmNjVhYzZlM2Q1NGQwNDMyNzRiZmZm
MWM5ZS4uZjg1NGI3ZTYwZTAzMzE1N2RmYTA2ZmIyODc1YWFkYjQ1MGIyYjU3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCkBAIC00
MCwxMSArNDAsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYkxheWVyVHJlZVZpZXdJbXBs
KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlZ2luRnJhbWUoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQmVnaW5GcmFtZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBh
cHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhLCBm
bG9hdCBwYWdlU2NhbGUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dCgpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZXNzKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgd2lsbENvbW1pdCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21taXQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1l
KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKSBP
VkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRl
eCAyNWM5ZWNiMjM2NTJkMTY2M2UyNGE1OWIyMGRjMzU2YjdjOGFhMDIxLi5hZWMzNzFjNDFhYmVm
MDczNTk4MWQ2MGJiYmFjOGI1MzJhNWU4MGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xNDU5LDYgKzE0NTksMTEgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6d2lsbEJlZ2luRnJhbWUoKQogICAgIG1fY2xpZW50LT53aWxsQmVnaW5Db21wb3NpdG9yRnJh
bWUoKTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6ZGlkQmVnaW5GcmFtZSgpCit7CisgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21wb3NpdGUobV9wYWdlLmdldCgpKTsKK30KKwog
dm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljRnJhbWVC
ZWdpblRpbWUpCiB7CiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQpAQCAtMzQ3
MCw2ICszNDc1LDExIEBAIHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29u
c3QgV2ViU2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsCiAgICAgfQogfQogCit2b2lk
IFdlYlZpZXdJbXBsOjp3aWxsQ29tbWl0KCkKK3sKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxDb21wb3NpdGUobV9wYWdlLmdldCgpKTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6
ZGlkQ29tbWl0KCkKIHsKICAgICBpZiAobV9jbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaAppbmRleCBjZmI0NWZjY2M4NTIwNWYzM2NmYzE2YzBjNTZkNmM2MzZi
Y2E0N2YwLi5hNDgyMzQ4OTUzOTYyMGUxZGRiMGVlNDc2Njk2M2M3ODliMDFhNmI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTI4OCwxMCArMjg4LDEyIEBA
IHB1YmxpYzoKIAogICAgIC8vIFdlYkxheWVyVHJlZVZpZXdDbGllbnQKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbEJlZ2luRnJhbWUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5GcmFtZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJl
Z2luVGltZSk7CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2Vi
U2l6ZSYsIGZsb2F0KTsKICAgICB2aXJ0dWFsIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjcmVhdGVD
b250ZXh0M0QoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmViaW5kR3JhcGhpY3NDb250ZXh0KGJv
b2wpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29tbWl0KCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENvbW1pdCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143612</attachid>
            <date>2012-05-23 12:12:02 -0700</date>
            <delta_ts>2012-05-23 13:09:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83928-20120523231200.patch</filename>
            <type>text/plain</type>
            <size>21451</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3MDYxZWYxYjk4OGQ5
YWY3OWU1MGI5NDQ5MmEwMjRjOGRjNzAxM2Y4Li5kNDRhNGExMjdlM2YxNzQ3ZmQ0MDZiMmUyZWQz
MmVhNWQ3MjQ3YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNS0xNyAg
QW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gYWRkIGluc3RydW1lbnRhdGlvbiBmb3IgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzOTI4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBhZGRlZCB3aWxsQ29tbWl0KCkgYW5kIGRp
ZEJlZ2luRnJhbWUoKSBtZXRob2RzIGZvciBpbnN0cnVtZW50YXRpb24gb2YgY29tcG9zaXRpbmcu
CisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oOgor
ICAgICAgICAoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCk6CisKIDIwMTItMDUtMjIgIE1hcmsgUGls
Z3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gQ2FsbCBj
YW5BY2NlbGVyYXRlMmRDYW52YXMgZGlyZWN0bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZjM5ZDZjNWFmNjNl
OWExNWM5NWM4MGQ0OGNmYjEwMzMwZTJkYzUyLi4xNjEyZDM5NWZmY2JkZTE2OTZjNGIxY2NmZDg2
OGYzODhiZjk2ZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjQgQEAKIDIwMTItMDUtMTcgIEFu
ZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbY2hyb21pdW1d
IGFkZCBpbnN0cnVtZW50YXRpb24gZm9yIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzkyOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gcGx1bWIgd2lsbENvbW1pdCgpIGFuZCBkaWRC
ZWdpbkZyYW1lKCkgZnJvbSBDQ1NpbmdsZVRocmVhZFByb3h5IGFuZCBDQ1RocmVhZFByb3h5IHRv
IGluc3BlY3RvciBpbnN0cnVtZW50YXRpb247CisgICAgICAgIC0gbm90ZSBmb3IgdGhyZWFkZWQg
Y2FzZSwgZGlkQmVnaW5GcmFtZSgpIGlzIGludm9rZWQgdXBvbiB1bmJsb2NraW5nIG9mIG1haW4g
dGhyZWFkOworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpkaWRCZWdpbkZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdDo6d2lsbENvbW1pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRBbmRDb21wb3NpdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSk6CisKKzIwMTItMDUtMTcgIEFu
ZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKwogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBhZGQgaW5zcGVjdG9yIGluc3RydW1lbnRhdGlvbiBpbnRlcmZhY2UgZm9yIGNvbXBvc2l0
aW5nCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzg0
MgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGY1OWY4NDdhNjE1ZjQ1NDc4MjNjNWE4
YWE1YTA0YzcyNWU4ZjIwMmIuLjA5OTkxOTFkYjI5NDQyMDkzZjkwYmUzZWQxZjQzOGYyZjNiZjY0
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDUt
MTcgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hy
b21pdW1dIGFkZCBpbnN0cnVtZW50YXRpb24gZm9yIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzkyOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gcGx1bWIgd2lsbENvbW1pdCgpIGFu
ZCBkaWRDb21wb3NpdGUoKSB0byBpbnNwZWN0b3IgaW5zdHJ1bWVudGF0aW9uIHZpYSBXZWJWaWV3
SW1wbC4KKworICAgICAgICAqIFdlYktpdC5neXBpOiBBZGRlZCBXZWJMYXllclRyZWVWaWV3VGVz
dAorICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpkaWRCZWdpbkZyYW1lKToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjp3aWxsQ29tbWl0KToK
KyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYkxheWVy
VHJlZVZpZXdJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6ZGlkQmVnaW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2lsbENvbW1pdCk6CisgICAgICAgICogc3Jj
L1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisgICAgICAgICogdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvRmFrZUNDTGF5ZXJUcmVl
SG9zdENsaWVudC5oOgorICAgICAgICAqIHRlc3RzL1dlYkxheWVyVGVzdC5jcHA6CisgICAgICAg
ICogdGVzdHMvV2ViTGF5ZXJUcmVlVmlld1Rlc3QuY3BwOiBBZGRlZC4KKwogMjAxMi0wNS0yMiAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVt
XSBBcHBseSB2aWV3cG9ydCB0YWcgaW5pdGlhbC1zY2FsZSBvbmx5IG9uY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5o
IGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50
LmgKaW5kZXggZmQyNDQ4N2M1OWE4NzVkYmVmYjQ2ZDliNTE3YmMzYzQyNmU0NzE4Ny4uMmE4MDg0
M2I3YjBmYTE2ZGI0MzBkZmM3YmFjY2NhNzhiNmI4NjEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50LmgKKysrIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50LmgKQEAg
LTM5LDYgKzM5LDkgQEAgcHVibGljOgogICAgIC8vIGxheW91dCwgd2hpY2ggc2hvdWxkIGJlIHVz
ZWQgZm9yIGFjdHVhbCBhbmltYXRpb24gb3IgdHJlZSBtYW5pcHVsYXRpb24KICAgICAvLyB0YXNr
cy4gIEZJWE1FOiBtYWtlIHB1cmUgdmlydHVhbCBvbmNlIHVwc3RyZWFtIGRlcHMgYXJlIHNhdGlz
ZmllZC4KICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlZ2luRnJhbWUoKSB7IH0KKyAgICAvLyBJbmRp
Y2F0ZXMgdGhhdCBtYWluIHRocmVhZCB0YXNrcyBhc3NvY2lhdGVkIHdpdGggZnJhbWUgcmVuZGVy
aW5nIGhhdmUgY29tcGxldGVkLgorICAgIC8vIElzc3VlZCB1bmNvbmRpdGlvbmFsbHksIGV2ZW4g
aWYgdGhlIGNvbnRleHQgd2FzIGxvc3QgaW4gdGhlIHByb2Nlc3MuCisgICAgdmlydHVhbCB2b2lk
IGRpZEJlZ2luRnJhbWUoKSA9IDA7CiAKICAgICAvLyBVcGRhdGVzIGFuaW1hdGlvbiBhbmQgbGF5
b3V0LiBUaGVzZSBhcmUgY2FsbGVkIGJlZm9yZSB0aGUgY29tcG9zaXRpbmcKICAgICAvLyBwYXNz
IHNvIHRoYXQgbGF5ZXJzIGNhbiBiZSB1cGRhdGVkIGF0IHRoZSBnaXZlbiBmcmFtZSB0aW1lLgpA
QCAtNTksNiArNjIsMTAgQEAgcHVibGljOgogICAgIC8vIGNvbnRleHQgZXZlbnQpLgogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWJpbmRHcmFwaGljc0NvbnRleHQoYm9vbCBzdWNjZXNzKSA9IDA7CiAK
KyAgICAvLyBJbmRpY2F0ZXMgdGhhdCBhIGZyYW1lIHdpbGwgYmUgY29tbWl0dGVkIHRvIHRoZSBp
bXBsIHNpZGUgb2YgdGhlIGNvbXBvc2l0b3IKKyAgICAvLyBmb3IgcmVuZGVyaW5nLgorICAgIHZp
cnR1YWwgdm9pZCB3aWxsQ29tbWl0KCkgPSAwOworIAogICAgIC8vIEluZGljYXRlcyB0aGF0IGEg
ZnJhbWUgd2FzIGNvbW1pdHRlZCB0byB0aGUgaW1wbCBzaWRlIG9mIHRoZSBjb21wb3NpdG9yCiAg
ICAgLy8gZm9yIHJlbmRlcmluZy4KICAgICAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApp
bmRleCAzYTg2M2Y3N2Q1ODgwZmY5NDhkNDg2OGVjNzU0YjkyZjgzYWJjYjg0Li4wYTg3ZTNkNzI4
NTc5MzhmMDY4ZDgwZTU1MzA0OGY0MjY1OTNlZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaApAQCAtNTUsMTEgKzU1LDE0IEBAIGNsYXNzIFRleHR1cmVNYW5hZ2VyOwogY2xhc3MgQ0NM
YXllclRyZWVIb3N0Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlZ2lu
RnJhbWUoKSA9IDA7CisgICAgLy8gTWFya3MgZmluaXNoaW5nIGNvbXBvc2l0aW5nLXJlbGF0ZWQg
dGFza3Mgb24gdGhlIG1haW4gdGhyZWFkLiBJbiB0aHJlYWRlZCBtb2RlLCB0aGlzIGNvcnJlc3Bv
bmRzIHRvIGRpZENvbW1pdCgpLgorICAgIHZpcnR1YWwgdm9pZCBkaWRCZWdpbkZyYW1lKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGlt
ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBh
Z2VTY2FsZSkgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
Y3JlYXRlQ29udGV4dCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0
KGJvb2wgc3VjY2VzcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29tbWl0KCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENv
bW1pdEFuZERyYXdGcmFtZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2Fw
QnVmZmVycygpID0gMDsKQEAgLTE1MSw2ICsxNTQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDQ0xh
eWVyVHJlZUhvc3QgaW50ZXJmYWNlIHRvIENDUHJveHkuCiAgICAgdm9pZCB3aWxsQmVnaW5GcmFt
ZSgpIHsgbV9jbGllbnQtPndpbGxCZWdpbkZyYW1lKCk7IH0KKyAgICB2b2lkIGRpZEJlZ2luRnJh
bWUoKSB7IG1fY2xpZW50LT5kaWRCZWdpbkZyYW1lKCk7IH0KICAgICB2b2lkIHVwZGF0ZUFuaW1h
dGlvbnMoZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKTsKICAgICB2b2lkIGxheW91dCgp
OwogICAgIHZvaWQgYmVnaW5Db21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCop
OwpAQCAtMTY2LDYgKzE3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVjcmVhdGVGYWlsZWRBbmRH
YXZlVXAsCiAgICAgfTsKICAgICBSZWNyZWF0ZVJlc3VsdCByZWNyZWF0ZUNvbnRleHQoKTsKKyAg
ICB2b2lkIHdpbGxDb21taXQoKSB7IG1fY2xpZW50LT53aWxsQ29tbWl0KCk7IH0KICAgICB2b2lk
IGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIHsgbV9jbGllbnQtPmRpZENvbW1pdEFuZERyYXdGcmFt
ZSgpOyB9CiAgICAgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkgeyBtX2NsaWVudC0+ZGlk
Q29tcGxldGVTd2FwQnVmZmVycygpOyB9CiAgICAgdm9pZCBkZWxldGVDb250ZW50c1RleHR1cmVz
T25JbXBsVGhyZWFkKFRleHR1cmVBbGxvY2F0b3IqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAKaW5kZXggM2EwYjFlNzhkZjcyOWQxYzQ5YmU3ZjVhM2Y5NjY3NzgyZDgx
YmE5My4uMGFkZDJhZDcwMzhmMTVmYWU3YzM4N2RmZDRjNTRiNTE1OThlYTkyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTM1Niw4ICszNTYsMTEgQEAgYm9v
bCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRBbmRDb21wb3NpdGUoKQogICAgIGlmICghbV9s
YXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAorICAgIG1fbGF5ZXJUcmVlSG9zdC0+d2lsbENvbW1pdCgpOwogICAgIGRvQ29tbWl0KHVw
ZGF0ZXIpOwotICAgIHJldHVybiBkb0NvbXBvc2l0ZSgpOworICAgIGJvb2wgcmVzdWx0ID0gZG9D
b21wb3NpdGUoKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPmRpZEJlZ2luRnJhbWUoKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCiBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tcG9zaXRl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggNjJkYzAyMzJmN2ZjNThmYTQ0ODM4
OTQxOWU4NTA4YjI1NTI1MzdjNS4uOTE1YTJlMjQwNGViNDljNTFjMjUzMGYwZTQwMWY5MmMzMThj
MDhlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTUxOCw2ICs1MTgsNyBAQCB2
b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWUoKQogICAgIC8vIHRoZXkgYXJlIGRyYXduIGJ5
IHRoZSBpbXBsIHRocmVhZC4KICAgICBtX3RleHR1cmVzQWNxdWlyZWQgPSBmYWxzZTsKIAorICAg
IG1fbGF5ZXJUcmVlSG9zdC0+d2lsbENvbW1pdCgpOwogICAgIC8vIEJlZm9yZSBhcHBseWluZyBz
Y3JvbGxzIGFuZCBjYWxsaW5nIGFuaW1hdGUsIHdlIHNldCBtX2FuaW1hdGVSZXF1ZXN0ZWQgdG8g
ZmFsc2UuCiAgICAgLy8gSWYgaXQgaXMgdHJ1ZSBub3csIGl0IG1lYW5zIHNldE5lZWRBbmltYXRl
IHdhcyBjYWxsZWQgYWdhaW4uIENhbGwgc2V0TmVlZHNDb21taXQKICAgICAvLyBub3cgc28gdGhh
dCB3ZSBnZXQgYmVnaW4gZnJhbWUgd2hlbiB0aGlzIG9uZSBpcyBkb25lLgpAQCAtNTM4LDYgKzUz
OSw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSgpCiAgICAgfQogCiAgICAgbV9s
YXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGlk
QmVnaW5GcmFtZSgpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0
ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXBpCmluZGV4IDc4NTRlZGYwYTk5ZDZjYmQ4MjE1NzRjZTZmNDE1NGJjMTEw
YjAzODQuLjFhNjg4YmJjY2MyYmFiOGQwN2NmY2U1MzhmZGM1NzAwZDM0ZWIyYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtMTQ1LDYgKzE0NSw3IEBACiAgICAgICAgICAgICAn
dGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcCcsCiAgICAgICAgICAg
ICAndGVzdHMvV2ViRnJhbWVUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViTGF5ZXJU
ZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvV2ViTGF5ZXJUcmVlVmlld1Rlc3QuY3BwJywK
ICAgICAgICAgICAgICd0ZXN0cy9XZWJNZWRpYVBsYXllckNsaWVudEltcGxUZXN0LmNwcCcsCiAg
ICAgICAgICAgICAndGVzdHMvV2ViUGFnZU5ld1NlcmlhbGl6ZXJUZXN0LmNwcCcsCiAgICAgICAg
ICAgICAndGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKaW5kZXggMTYxZjll
OTMyMmY3YjE3YWU3OTEyNDIwYzcwOTc5ZTNlNGNhYTcxNC4uMWMwYTBlODE2MDY0M2M4Y2YwYTU5
M2Y4NThmODJhYjQxZDY1NzcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcApAQCAtNjUsNiArNjUsMTEgQEAgdm9pZCBXZWJM
YXllclRyZWVWaWV3SW1wbDo6d2lsbEJlZ2luRnJhbWUoKQogICAgIG1fY2xpZW50LT53aWxsQmVn
aW5GcmFtZSgpOwogfQogCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpkaWRCZWdpbkZyYW1l
KCkKK3sKKyAgICBtX2NsaWVudC0+ZGlkQmVnaW5GcmFtZSgpOworfQorCiB2b2lkIFdlYkxheWVy
VHJlZVZpZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2lu
VGltZSkKIHsKICAgICBtX2NsaWVudC0+dXBkYXRlQW5pbWF0aW9ucyhtb25vdG9uaWNGcmFtZUJl
Z2luVGltZSk7CkBAIC05NCw2ICs5OSwxMSBAQCB2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpk
aWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZXNzKQogICAgIG1fY2xpZW50LT5kaWRSZWJpbmRH
cmFwaGljc0NvbnRleHQoc3VjY2Vzcyk7CiB9CiAKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6
OndpbGxDb21taXQoKQoreworICAgIG1fY2xpZW50LT53aWxsQ29tbWl0KCk7Cit9CisKIHZvaWQg
V2ViTGF5ZXJUcmVlVmlld0ltcGw6OmRpZENvbW1pdCgpCiB7CiAgICAgbV9jbGllbnQtPmRpZENv
bW1pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZp
ZXdJbXBsLmgKaW5kZXggZGNkM2UyOTI1MmNlM2ZmNjVhYzZlM2Q1NGQwNDMyNzRiZmZmMWM5ZS4u
Zjg1NGI3ZTYwZTAzMzE1N2RmYTA2ZmIyODc1YWFkYjQ1MGIyYjU3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCkBAIC00MCwxMSAr
NDAsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYkxheWVyVHJlZVZpZXdJbXBsKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlZ2luRnJhbWUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQmVnaW5GcmFtZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVB
bmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNj
cm9sbEFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBw
YWdlU2NhbGUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZXNzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgd2lsbENvbW1pdCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXQo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKSBPVkVSUklE
RTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCAzYzQy
MDIzOWM3MGQ3YmU2YjhhMzIwOTcxNjExNTAxYzM3OGMxOGMzLi4yYTBiZmEwZGI2ZTNlOGIyMmEz
MmJlNGMxMjAxYjg0OGQ5ZDAxY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCkBAIC0xNDY3LDYgKzE0NjcsMTEgQEAgdm9pZCBXZWJWaWV3SW1wbDo6d2ls
bEJlZ2luRnJhbWUoKQogICAgIG1fY2xpZW50LT53aWxsQmVnaW5Db21wb3NpdG9yRnJhbWUoKTsK
IH0KIAordm9pZCBXZWJWaWV3SW1wbDo6ZGlkQmVnaW5GcmFtZSgpCit7CisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRDb21wb3NpdGUobV9wYWdlLmdldCgpKTsKK30KKwogdm9pZCBX
ZWJWaWV3SW1wbDo6dXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljRnJhbWVCZWdpblRp
bWUpCiB7CiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQpAQCAtMzU0Niw2ICsz
NTUxLDExIEBAIHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2Vi
U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsCiAgICAgfQogfQogCit2b2lkIFdlYlZp
ZXdJbXBsOjp3aWxsQ29tbWl0KCkKK3sKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxDb21wb3NpdGUobV9wYWdlLmdldCgpKTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6ZGlkQ29t
bWl0KCkKIHsKICAgICBpZiAobV9jbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaAppbmRleCAxZjg5MWM3YzE0OGM5ZTIwOTIzZGI3YzUyZWM0ODBiYTgxZTljYjM5
Li42NzU2MmZlYWJjZWFjOTA0NDY0NDRkYmQ4Mzk4YjMyM2IwNmVkMmI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTI5MSwxMCArMjkxLDEyIEBAIHB1Ymxp
YzoKIAogICAgIC8vIFdlYkxheWVyVHJlZVZpZXdDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bEJlZ2luRnJhbWUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5GcmFtZSgpOwogICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGlt
ZSk7CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViU2l6ZSYs
IGZsb2F0KTsKICAgICB2aXJ0dWFsIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjcmVhdGVDb250ZXh0
M0QoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmViaW5kR3JhcGhpY3NDb250ZXh0KGJvb2wpOwor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29tbWl0KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1p
dCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggMjFkOWVkNWZj
OTEwNjA4OGVmNzc0MzIxOWQ1ZTkzZDdkNDAwZWMyMS4uYzU2OGQ4YmMyNWI5MjUxMzMzY2YwZWI2
YjFhYmEyZDAxYmY3YjA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0yNDgsNiArMjQ4LDEwIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRnJhbWUoKSBPVkVSUklE
RQorICAgIHsKKyAgICB9CisKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3Vi
bGUgbW9ub3RvbmljVGltZSkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1fdGVzdEhvb2tzLT51
cGRhdGVBbmltYXRpb25zKG1vbm90b25pY1RpbWUpOwpAQCAtMjczLDYgKzI3NywxMCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBo
aWNzQ29udGV4dEZyb21XZWJDb250ZXh0KHdlYkNvbnRleHQucmVsZWFzZSgpLCBHcmFwaGljc0Nv
bnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwogICAgIH0KIAorICAgIHZpcnR1
YWwgdm9pZCB3aWxsQ29tbWl0KCkgT1ZFUlJJREUKKyAgICB7CisgICAgfQorCiAgICAgdmlydHVh
bCB2b2lkIGRpZENvbW1pdCgpIE9WRVJSSURFCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgK
aW5kZXggNTEzZmQwY2JjZWM4ZGM1YTlhMjE2NGI1ZGUzNjg3YzQ2NmM5ZTEzMS4uOTkyNTA5YzRm
ZGNkOWYzMGEzODJhMTZiNTM3YTBhNWE2NWFkMjJiOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgKQEAgLTM1
LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmFrZUNDTGF5ZXJUcmVlSG9z
dENsaWVudCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RDbGllbnQgewogcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCB3aWxsQmVnaW5GcmFtZSgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRCZWdpbkZyYW1lKCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFu
aW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKSBPVkVSUklERSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFw
cGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VT
Y2FsZSkgT1ZFUlJJREUgeyB9CkBAIC00NCw2ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGNyZWF0ZUNvbXBvc2l0b3JNb2NrR3JhcGhpY3NDb250ZXh0M0QoYXR0cnMpOwogICAgIH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wgc3VjY2VzcykgT1ZFUlJJ
REUgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxDb21taXQoKSBPVkVSUklERSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ29tbWl0KCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENvbW1pdEFuZERyYXdGcmFtZSgpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21wbGV0ZVN3YXBCdWZmZXJzKCkgT1ZFUlJJREUgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAKaW5kZXggN2MwODMxZjkwMzU4NzQwYmI5ZTFkZDI0
MmIwN2ZiMzhjMmY2NDNmZC4uOGZjN2M5M2JkZDU5OWY1NzhjYjRkOGIwZTVhM2FkMThkOTVhZGQ3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJUZXN0LmNwcApA
QCAtNTMsMTAgKzUzLDEyIEBAIHB1YmxpYzoKICAgICBNT0NLX01FVEhPRDAoc2NoZWR1bGVDb21w
b3NpdGUsIHZvaWQoKSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3Vi
bGUgZnJhbWVCZWdpblRpbWUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRCZWdpbkZyYW1lKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBs
eVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYlNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBzY2FsZUZh
Y3RvcikgeyB9CiAgICAgdmlydHVhbCBXZWJHcmFwaGljc0NvbnRleHQzRCogY3JlYXRlQ29udGV4
dDNEKCkgeyByZXR1cm4gQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRl
KFdlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKCkpLmxlYWtQdHIoKTsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWJpbmRHcmFwaGljc0NvbnRleHQoYm9vbCBzdWNjZXNzKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgd2lsbENvbW1pdCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21t
aXRBbmREcmF3RnJhbWUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVm
ZmVycygpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
V2ViTGF5ZXJUcmVlVmlld1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9X
ZWJMYXllclRyZWVWaWV3VGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJhYjc0NDI1YjAzMjhjNWVhMWE0
ZjUwODRmNmM4N2UxNzY2ZTA3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvV2ViTGF5ZXJUcmVlVmlld1Rlc3QuY3BwCkBAIC0wLDAgKzEsMTcyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJDb21wb3NpdG9y
RmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSA8Z21vY2svZ21vY2suaD4KKyNp
bmNsdWRlICJXZWJDb21wb3NpdG9yLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXIuaCIK
KyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllclRyZWVWaWV3LmgiCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlRocmVh
ZC5oIgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwordXNpbmcgdGVzdGluZzo6TW9jazsKK3VzaW5nIHRlc3Rpbmc6OlRlc3Q7CisKK25hbWVz
cGFjZSB7CisKK2NsYXNzIE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50IDogcHVibGljIFdlYkxh
eWVyVHJlZVZpZXdDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNv
bXBvc2l0ZSgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25z
KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkgT1ZFUlJJREUgeyB9CisgICAgTU9DS19NRVRIT0QwKHdp
bGxCZWdpbkZyYW1lLCB2b2lkKCkpOworICAgIE1PQ0tfTUVUSE9EMChkaWRCZWdpbkZyYW1lLCB2
b2lkKCkpOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBXZWJTaXplJiBzY3JvbGxEZWx0YSwg
ZmxvYXQgc2NhbGVGYWN0b3IpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgV2ViR3JhcGhpY3ND
b250ZXh0M0QqIGNyZWF0ZUNvbnRleHQzRCgpIE9WRVJSSURFIHsgcmV0dXJuIENvbXBvc2l0b3JG
YWtlV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0
cmlidXRlcygpKS5sZWFrUHRyKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmViaW5kR3JhcGhp
Y3NDb250ZXh0KGJvb2wgc3VjY2VzcykgT1ZFUlJJREUgeyB9CisgICAgTU9DS19NRVRIT0QwKHdp
bGxDb21taXQsIHZvaWQoKSk7CisgICAgTU9DS19NRVRIT0QwKGRpZENvbW1pdCwgdm9pZCgpKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgT1ZFUlJJREUgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKSBPVkVSUklERSB7IH0KK307
CisKK2NsYXNzIE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50Rm9yVGhyZWFkZWRUZXN0cyA6IHB1
YmxpYyBNb2NrV2ViTGF5ZXJUcmVlVmlld0NsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2
b2lkIGRpZEJlZ2luRnJhbWUoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgV2ViS2l0OjpQbGF0
Zm9ybTo6Y3VycmVudCgpLT5jdXJyZW50VGhyZWFkKCktPmV4aXRSdW5Mb29wKCk7CisgICAgICAg
IE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50OjpkaWRCZWdpbkZyYW1lKCk7CisgICAgfQorfTsK
KworY2xhc3MgV2ViTGF5ZXJUcmVlVmlld1Rlc3RCYXNlIDogcHVibGljIFRlc3QgeworcHJvdGVj
dGVkOgorICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplQ29tcG9zaXRvcigpID0gMDsKKyAgICB2
aXJ0dWFsIFdlYkxheWVyVHJlZVZpZXdDbGllbnQqIGNsaWVudCgpID0gMDsKKworcHVibGljOgor
ICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCisgICAgeworICAgICAgICBpbml0aWFsaXplQ29tcG9z
aXRvcigpOworICAgICAgICBtX3Jvb3RMYXllciA9IFdlYkxheWVyOjpjcmVhdGUoKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUobV92aWV3LmluaXRpYWxpemUoY2xpZW50KCksIG1fcm9vdExheWVyLCBX
ZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncygpKSk7CisgICAgICAgIG1fdmlldy5zZXRTdXJmYWNl
UmVhZHkoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQorICAgIHsKKyAg
ICAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoY2xpZW50KCkpOworCisgICAg
ICAgIG1fdmlldy5zZXRSb290TGF5ZXIoMCk7CisgICAgICAgIG1fcm9vdExheWVyLnJlc2V0KCk7
CisgICAgICAgIG1fdmlldy5yZXNldCgpOworICAgICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6
OnNodXRkb3duKCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgV2ViTGF5ZXIgbV9yb290TGF5
ZXI7CisgICAgV2ViTGF5ZXJUcmVlVmlldyBtX3ZpZXc7Cit9OworCitjbGFzcyBXZWJMYXllclRy
ZWVWaWV3U2luZ2xlVGhyZWFkVGVzdCA6IHB1YmxpYyBXZWJMYXllclRyZWVWaWV3VGVzdEJhc2Ug
eworcHJvdGVjdGVkOgorICAgIHZvaWQgY29tcG9zaXRlKCkKKyAgICB7CisgICAgICAgIG1fdmll
dy5jb21wb3NpdGUoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUNvbXBv
c2l0b3IoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpp
bml0aWFsaXplKDApOworICAgIH0KKworICAgIHZpcnR1YWwgV2ViTGF5ZXJUcmVlVmlld0NsaWVu
dCogY2xpZW50KCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJldHVybiAmbV9jbGllbnQ7Cisg
ICAgfQorCisgICAgTW9ja1dlYkxheWVyVHJlZVZpZXdDbGllbnQgbV9jbGllbnQ7Cit9OworCitj
bGFzcyBXZWJMYXllclRyZWVWaWV3VGhyZWFkZWRUZXN0IDogcHVibGljIFdlYkxheWVyVHJlZVZp
ZXdUZXN0QmFzZSB7Citwcm90ZWN0ZWQ6CisgICAgY2xhc3MgVGltZW91dFRhc2sgOiBwdWJsaWMg
V2ViVGhyZWFkOjpUYXNrIHsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJ1bigpIE9WRVJSSURFCisg
ICAgICAgIHsKKyAgICAgICAgICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y3VycmVu
dFRocmVhZCgpLT5leGl0UnVuTG9vcCgpOworICAgICAgICB9CisgICAgfTsKKyAgCisgICAgdm9p
ZCBjb21wb3NpdGUoKQorICAgIHsKKyAgICAgICAgbV92aWV3LnNldE5lZWRzUmVkcmF3KCk7Cisg
ICAgICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y3VycmVudFRocmVhZCgpLT5wb3N0
RGVsYXllZFRhc2sobmV3IFRpbWVvdXRUYXNrKCksIDUwMDApOworICAgICAgICBXZWJLaXQ6OlBs
YXRmb3JtOjpjdXJyZW50KCktPmN1cnJlbnRUaHJlYWQoKS0+ZW50ZXJSdW5Mb29wKCk7CisgICAg
ICAgIG1fdmlldy5maW5pc2hBbGxSZW5kZXJpbmcoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgaW5pdGlhbGl6ZUNvbXBvc2l0b3IoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgbV93ZWJU
aHJlYWQgPSBhZG9wdFB0cihXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNyZWF0ZVRocmVh
ZCgiV2ViTGF5ZXJUcmVlVmlld1Rlc3QiKSk7CisgICAgICAgIFdlYkNvbXBvc2l0b3I6OmluaXRp
YWxpemUobV93ZWJUaHJlYWQuZ2V0KCkpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIFdlYkxh
eWVyVHJlZVZpZXdDbGllbnQqIGNsaWVudCgpIE9WRVJSSURFCisgICAgeworICAgICAgICByZXR1
cm4gJm1fY2xpZW50OworICAgIH0KKworICAgIE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50Rm9y
VGhyZWFkZWRUZXN0cyBtX2NsaWVudDsKKyAgICBPd25QdHI8V2ViVGhyZWFkPiBtX3dlYlRocmVh
ZDsKK307CisKK1RFU1RfRihXZWJMYXllclRyZWVWaWV3U2luZ2xlVGhyZWFkVGVzdCwgSW5zdHJ1
bWVudGF0aW9uQ2FsbGJhY2tzKQoreworICAgIDo6dGVzdGluZzo6SW5TZXF1ZW5jZSBkdW1teTsK
KworICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCB3aWxsQ29tbWl0KCkpOworICAgIEVYUEVDVF9D
QUxMKG1fY2xpZW50LCBkaWRDb21taXQoKSk7CisgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIGRp
ZEJlZ2luRnJhbWUoKSk7CisKKyAgICBjb21wb3NpdGUoKTsKK30KKworVEVTVF9GKFdlYkxheWVy
VHJlZVZpZXdUaHJlYWRlZFRlc3QsIEluc3RydW1lbnRhdGlvbkNhbGxiYWNrcykKK3sKKyAgICA6
OnRlc3Rpbmc6OkluU2VxdWVuY2UgZHVtbXk7CisKKyAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwg
d2lsbEJlZ2luRnJhbWUoKSk7CisgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHdpbGxDb21taXQo
KSk7CisgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIGRpZENvbW1pdCgpKTsKKyAgICBFWFBFQ1Rf
Q0FMTChtX2NsaWVudCwgZGlkQmVnaW5GcmFtZSgpKTsKKworICAgIGNvbXBvc2l0ZSgpOworfQor
Cit9IC8vIG5hbWVzcGFjZQorCg==
</data>
<flag name="review"
          id="150223"
          type_id="1"
          status="+"
          setter="jamesr"
    />
    <flag name="commit-queue"
          id="150241"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>