<?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>73711</bug_id>
          
          <creation_ts>2011-12-02 15:30:58 -0800</creation_ts>
          <short_desc>[chromium] setNeedsCommit on non-composited host layers should trigger commit</short_desc>
          <delta_ts>2012-01-04 13:34:08 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>72686</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adrienne Walker">enne</reporter>
          <assigned_to name="Adrienne Walker">enne</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>epenner</cc>
    
    <cc>jamesr</cc>
    
    <cc>thakis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>514226</commentid>
    <comment_count>0</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-12-02 15:30:58 -0800</bug_when>
    <thetext>Calling LayerChromium::setNeedsCommit on the root layer is a no-op, because NonCompositedContentHost::notifySyncRequired doesn&apos;t do anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514237</commentid>
    <comment_count>1</comment_count>
      <attachid>117707</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-12-02 15:45:35 -0800</bug_when>
    <thetext>Created attachment 117707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514238</commentid>
    <comment_count>2</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-12-02 15:46:58 -0800</bug_when>
    <thetext>I&apos;m uploading this as an initial patch.

Unfortunately, the combination of this patch and the latest from 72686 together (but not each individually) cause DRT to assert on m_paintRect.isEmpty() in WebViewHost.cpp.  I&apos;m investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514248</commentid>
    <comment_count>3</comment_count>
      <attachid>117707</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-02 15:58:45 -0800</bug_when>
    <thetext>Comment on attachment 117707
Patch

Attachment 117707 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10729201</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514259</commentid>
    <comment_count>4</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-12-02 16:10:04 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; I&apos;m uploading this as an initial patch.
&gt; 
&gt; Unfortunately, the combination of this patch and the latest from 72686 together (but not each individually) cause DRT to assert on m_paintRect.isEmpty() in WebViewHost.cpp.  I&apos;m investigating.

I think it&apos;s the fault of this patch.  If LayerChromium::setNeedsCommit calls LayerTreeHost::setNeedsCommit directly, then any change to the root layer (like, say, hypothetically setting the background color in WebViewImplContentPainter) will cause another commit every time you paint.

Oy.  I suppose we should probably be less promiscuous in calling setNeedsCommit.  I can fix that too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514315</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Penner">epenner</who>
    <bug_when>2011-12-02 17:55:35 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; &gt; I&apos;m uploading this as an initial patch.
&gt; &gt; 
&gt; &gt; Unfortunately, the combination of this patch and the latest from 72686 together (but not each individually) cause DRT to assert on m_paintRect.isEmpty() in WebViewHost.cpp.  I&apos;m investigating.
&gt; 
&gt; I think it&apos;s the fault of this patch.  If LayerChromium::setNeedsCommit calls LayerTreeHost::setNeedsCommit directly, then any change to the root layer (like, say, hypothetically setting the background color in WebViewImplContentPainter) will cause another commit every time you paint.
&gt; 
&gt; Oy.  I suppose we should probably be less promiscuous in calling setNeedsCommit.  I can fix that too.

Sorry I didn&apos;t catch this in the initial CL. Keep me posted how I can help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514335</commentid>
    <comment_count>6</comment_count>
      <attachid>117725</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-12-02 18:16:50 -0800</bug_when>
    <thetext>Created attachment 117725
Rebased against ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514346</commentid>
    <comment_count>7</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-12-02 18:25:11 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=117725) [details]
&gt; Rebased against ToT

I temporarily removed all the other unnecessary setNeedsCommits, and after that then the prepainting setNeedsCommit itself started triggering asserts in DRT.  So, that&apos;s not quite the right approach.  Prepainting itself is causing the &quot;too many paints causing other paints&quot; assertion in WebViewHost.

My feeling is that something like this patch can land first, but then the prepainting patch needs to be adjusted to not do idle prepainting in the compositeAndReadback path.  I think that&apos;s the easiest path to make the tests happy, and it seems like a fairly reasonable decision.  I did verify that this patch successfully allows prepainting to happen, even if there&apos;s no scrolling going on.

I&apos;m not that happy that I have to expose the zoom animator transform so it can be pulled from CCLayerTreeHost, however I couldn&apos;t find a better place to push it from WebViewImpl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514369</commentid>
    <comment_count>8</comment_count>
      <attachid>117725</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-02 19:02:06 -0800</bug_when>
    <thetext>Comment on attachment 117725
Rebased against ToT

Attachment 117725 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10734176</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514759</commentid>
    <comment_count>9</comment_count>
      <attachid>117806</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-12-04 14:12:54 -0800</bug_when>
    <thetext>Created attachment 117806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514761</commentid>
    <comment_count>10</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-12-04 14:17:12 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created an attachment (id=117806) [details]
&gt; Patch

I reconsidered how much logic I was changing in this patch.  I just decided to pipe NCH::notifySyncRequired to LayerTreeHost::setNeedsCommit directly rather than adjust LayerChromium and having to play with zoom animator transform.  I think this ends up being simpler.  Sorry for the flux.

I also added some tests.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514793</commentid>
    <comment_count>11</comment_count>
      <attachid>117806</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-04 16:46:07 -0800</bug_when>
    <thetext>Comment on attachment 117806
Patch

Attachment 117806 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10690570

New failing tests:
compositing/iframes/iframe-content-flipping.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514907</commentid>
    <comment_count>12</comment_count>
      <attachid>117842</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-12-04 22:15:09 -0800</bug_when>
    <thetext>Created attachment 117842
Always set commit for replica layer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514908</commentid>
    <comment_count>13</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-12-04 22:16:31 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created an attachment (id=117842) [details]
&gt; Always set commit for replica layer

I&apos;m not really sure why this is needed, but the iframe flipped test clearly fails with the wrong background color if setNeedsCommit isn&apos;t always called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515240</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-05 11:26:48 -0800</bug_when>
    <thetext>We have a very similar caching layer in GraphicsLayerChromium. I think we should ditch that if we have this here - there&apos;s no reason to be checking the backface/double sided flag here: http://google.com/codesearch#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp&amp;q=GraphicsLayerChromium::setBackfaceVisibility&amp;exact_package=chromium&amp;l=284 and in LayerChromium.

Can we just make GraphicsLayerChromium a pure pass-through for property sets with this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515244</commentid>
    <comment_count>15</comment_count>
      <attachid>117842</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-05 11:32:23 -0800</bug_when>
    <thetext>Comment on attachment 117842
Always set commit for replica layer

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

&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.cpp:125
&gt;  void LayerChromium::setNeedsCommit()
&gt;  {
&gt; -    // Call notifySyncRequired(), which for non-root layers plumbs through to
&gt; -    // call setRootLayerNeedsDisplay() on the WebView, which will cause LayerRendererChromium
&gt; -    // to render a frame.
&gt; -    // This function has no effect on root layers.
&gt;      if (m_delegate)
&gt;          m_delegate-&gt;notifySyncRequired();
&gt;  }

this is a larger change, but I think it&apos;d be better if we moved this notification up to CCLayerTreeHost instead of having it on layers. Then the LTH can route this call to either the proxy or the CCLTHClient as necessary.  It&apos;s a larger change, though, so maybe not in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515341</commentid>
    <comment_count>16</comment_count>
      <attachid>117930</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-12-05 13:19:29 -0800</bug_when>
    <thetext>Created attachment 117930
Remove GraphicsLayerChromium checks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515369</commentid>
    <comment_count>17</comment_count>
      <attachid>117930</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-05 13:51:41 -0800</bug_when>
    <thetext>Comment on attachment 117930
Remove GraphicsLayerChromium checks

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

&gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:177
&gt;      updateAnchorPoint();

i think the follow-up here is to fold updateAnchorPoint(), etc, into this function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515370</commentid>
    <comment_count>18</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-05 13:55:17 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 117930 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117930&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:177
&gt; &gt;      updateAnchorPoint();
&gt; 
&gt; i think the follow-up here is to fold updateAnchorPoint(), etc, into this function

Not that I want to do that in this patch - let&apos;s land this to unblock other work first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515406</commentid>
    <comment_count>19</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-12-05 14:41:27 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; (From update of attachment 117930 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117930&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:177
&gt; &gt; &gt;      updateAnchorPoint();
&gt; &gt; 
&gt; &gt; i think the follow-up here is to fold updateAnchorPoint(), etc, into this function
&gt; 
&gt; Not that I want to do that in this patch - let&apos;s land this to unblock other work first.

Sounds good.  I&apos;ll write a follow-up patch to clean up needless functions in GraphicsLayerChromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515628</commentid>
    <comment_count>20</comment_count>
      <attachid>117930</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-05 21:05:23 -0800</bug_when>
    <thetext>Comment on attachment 117930
Remove GraphicsLayerChromium checks

Clearing flags on attachment: 117930

Committed r102091: &lt;http://trac.webkit.org/changeset/102091&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515629</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-05 21:05:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516152</commentid>
    <comment_count>22</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-12-06 12:28:07 -0800</bug_when>
    <thetext>Reverted r102091 for reason:

Caused Clang Linux compile failure.

Committed r102165: &lt;http://trac.webkit.org/changeset/102165&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516155</commentid>
    <comment_count>23</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-06 12:32:10 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; Reverted r102091 for reason:
&gt; 
&gt; Caused Clang Linux compile failure.
&gt; 
&gt; Committed r102165: &lt;http://trac.webkit.org/changeset/102165&gt;

D&apos;oh, sorry about that - can you link to a failing log? I can&apos;t find a linux clang canary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516162</commentid>
    <comment_count>24</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-06 12:37:09 -0800</bug_when>
    <thetext>Found this: http://build.chromium.org/p/chromium/builders/Linux%20Clang%20%28dbg%29/builds/17108/steps/compile/logs/stdio#error1

In file included from third_party/WebKit/Source/WebKit/chromium/tests/LayerChromiumTest.cpp:27:
In file included from third_party/WebKit/Source/WebCore/platform/graphics/chromium/LayerChromium.h:38:
In file included from third_party/WebKit/Source/WebCore/platform/graphics/GraphicsContext.h:31:
In file included from third_party/WebKit/Source/WebCore/platform/graphics/DashArray.h:29:
In file included from third_party/WebKit/Source/JavaScriptCore/wtf/Vector.h:30:
In file included from third_party/WebKit/Source/JavaScriptCore/wtf/VectorTraits.h:24:
third_party/WebKit/Source/JavaScriptCore/wtf/OwnPtr.h:52:9:error: function &apos;WTF::OwnPtr&lt;&lt;anonymous&gt;::MockNonCompositedContentHost&gt;::OwnPtr&apos; has internal linkage but is not defined [-Werror]
        OwnPtr(const OwnPtr&lt;ValueType&gt;&amp;);
        ^
third_party/WebKit/Source/WebKit/chromium/tests/LayerChromiumTest.cpp:691:42: note: used here
    OwnPtr&lt;MockNonCompositedContentHost&gt; nonCompositedContentHost = MockNonCompositedContentHost::create();
                                         ^
1 error generated.
make: *** [out/Debug/obj.target/webkit_unit_tests/third_party/WebKit/Source/WebKit/chromium/tests/LayerChromiumTest.o] Error 1


huh?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516298</commentid>
    <comment_count>25</comment_count>
      <attachid>118122</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-12-06 15:26:34 -0800</bug_when>
    <thetext>Created attachment 118122
OwnPtr workaround from thakis</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516302</commentid>
    <comment_count>26</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-12-06 15:29:06 -0800</bug_when>
    <thetext>I sent this out for a linux_clang try job to double check.  Will update this bug with the results once it comes back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516356</commentid>
    <comment_count>27</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-12-06 16:36:54 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; I sent this out for a linux_clang try job to double check.  Will update this bug with the results once it comes back.

&quot;You are awesome! Try succeeded!&quot;

jamesr: feel free to R+/CQ+ this if you get a chance.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516395</commentid>
    <comment_count>28</comment_count>
      <attachid>118122</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-06 17:18:06 -0800</bug_when>
    <thetext>Comment on attachment 118122
OwnPtr workaround from thakis

Clearing flags on attachment: 118122

Committed r102196: &lt;http://trac.webkit.org/changeset/102196&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516397</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-06 17:18:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529711</commentid>
    <comment_count>30</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-01-04 13:34:08 -0800</bug_when>
    <thetext>For reference, here&apos;s a reduced version of the problem: http://pastie.org/2977068</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117707</attachid>
            <date>2011-12-02 15:45:35 -0800</date>
            <delta_ts>2011-12-02 18:16:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73711-20111202154533.patch</filename>
            <type>text/plain</type>
            <size>8130</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTIyODhiMmUxNWM0ZDFl
MDgzNzQzNDFiZGE5ZGNhODA5N2QzMjA0Mi4uNWE3NzBiNGVjNDcyNzkzMGExNWNlYzEwOTEzOGFi
YTY4NmIyMzA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTEyLTAyICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBzZXRO
ZWVkc0NvbW1pdCBvbiBub24tY29tcG9zaXRlZCBob3N0IGxheWVycyBzaG91bGQgdHJpZ2dlciBj
b21taXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcz
NzExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2Fs
bCBzZXROZWVkc0NvbW1pdCBkaXJlY3RseSBvbiB0aGUgQ0NMYXllclRyZWVIb3N0LCBza2lwcGlu
ZyB0aGUKKyAgICAgICAgYm91bmNlIHRocm91Z2ggY2hyb21lIGNsaWVudC4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNDb21taXQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKwogMjAxMS0xMi0w
MiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwMTgzMy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggMzVmM2E0N2FjMWE4NzEzZTM5OGNkNDFlZmE2ZWE0Njc5MjE0YzRjYy4uYTc3NTA4M2Fj
YjJkNGJmOWEzYzU0YzRmM2E0NGZiZjU4ZWUzNDM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0xMi0wMiAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBn
b29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gc2V0TmVlZHNDb21taXQgb24gbm9uLWNv
bXBvc2l0ZWQgaG9zdCBsYXllcnMgc2hvdWxkIHRyaWdnZXIgY29tbWl0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzcxMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlY2F1c2Ugc2V0TmVlZHNDb21taXQg
ZG9lc24ndCBnbyB0aHJvdWdoIHNldFJvb3RMYXllck5lZWRzRGlzcGxheSwKKyAgICAgICAgZXhw
b3NlIHRoZSB6b29tQW5pbWF0b3JUcmFuc2Zvcm0gc28gdGhhdCBpdCBjYW4gYmUgcHVsbGVkIGF0
IHRoZQorICAgICAgICBlcXVpdmFsZW50IHRpbWUgZnJvbSB3aXRoaW4gQ0NMYXllclRyZWVIb3N0
LgorCisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6Onpvb21BbmltYXRvclRyYW5zZm9ybSk6CisgICAg
ICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFJvb3RMYXllck5lZWRz
RGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp6b29tQW5pbWF0b3JUcmFu
c2Zvcm0pOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDExLTExLTMwICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gV2ViS2l0
TXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlckFsbE11dGF0aW9ucyBzaG91bGQgYmUgZXhwb3NlZCB0
aHJvdWdoIHRoZSBDaHJvbWl1bSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMGQ3NWZk
YmYxYWQ2OTAyMmJjMWJmZDlmMmRkNWU3M2ZkNmVlMDUzNi4uMjFkM2FiYTkyMmEyZDA0MDg3Njgy
ODM4OTkzOWQwOGUwNDFiZDY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTEyMCwxMiAr
MTIwLDggQEAgdm9pZCBMYXllckNocm9taXVtOjpzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVl
SG9zdCogaG9zdCkKIAogdm9pZCBMYXllckNocm9taXVtOjpzZXROZWVkc0NvbW1pdCgpCiB7Ci0g
ICAgLy8gQ2FsbCBub3RpZnlTeW5jUmVxdWlyZWQoKSwgd2hpY2ggZm9yIG5vbi1yb290IGxheWVy
cyBwbHVtYnMgdGhyb3VnaCB0bwotICAgIC8vIGNhbGwgc2V0Um9vdExheWVyTmVlZHNEaXNwbGF5
KCkgb24gdGhlIFdlYlZpZXcsIHdoaWNoIHdpbGwgY2F1c2UgTGF5ZXJSZW5kZXJlckNocm9taXVt
Ci0gICAgLy8gdG8gcmVuZGVyIGEgZnJhbWUuCi0gICAgLy8gVGhpcyBmdW5jdGlvbiBoYXMgbm8g
ZWZmZWN0IG9uIHJvb3QgbGF5ZXJzLgotICAgIGlmIChtX2RlbGVnYXRlKQotICAgICAgICBtX2Rl
bGVnYXRlLT5ub3RpZnlTeW5jUmVxdWlyZWQoKTsKKyAgICBpZiAobV9sYXllclRyZWVIb3N0KQor
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0KCk7CiB9CiAKIHZvaWQgTGF5
ZXJDaHJvbWl1bTo6c2V0UGFyZW50KExheWVyQ2hyb21pdW0qIGxheWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNWQzZGVjNDBiNjY5MWIxOWU0NmI0YjkyOGNiNWRlMGUy
ZTBjNmYyOC4uNTEzYTQ0ZmRjZGFmYjRjMjExYzFiMTIzOWFjZmI0OTJiNTg2YjAwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0yMTcsNiArMjE3LDggQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnNldE5lZWRzQW5pbWF0ZSgpCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpz
ZXROZWVkc0NvbW1pdCgpCiB7CisgICAgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKG1fY2xpZW50
LT56b29tQW5pbWF0b3JUcmFuc2Zvcm0oKSk7CisKICAgICBpZiAoQ0NUaHJlYWRQcm94eTo6aW1w
bFRocmVhZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnNldE5l
ZWRzQ29tbWl0IiwgdGhpcywgMCk7CiAgICAgICAgIG1fcHJveHktPnNldE5lZWRzQ29tbWl0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDg0MjA0M2JhN2MyZmJmY2I2NmY2MDQ3
YTNhYjE3Y2FmNmVkMzZhNDUuLjAwODM3ODA4YjNjMGE5Yjk2ZGRjNmJhZDdhMzAwOTdkYTA0NjVj
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC01OSw2ICs1OSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVHcmFwaGljc0NvbnRleHQoYm9vbCBzdWNj
ZXNzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpID0gMDsKKyAgICB2aXJ0
dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4IHpvb21BbmltYXRvclRyYW5zZm9ybSgpID0gMDsKIAog
ICAgIC8vIFVzZWQgb25seSBpbiB0aGUgc2luZ2xlLXRocmVhZGVkIHBhdGguCiAgICAgdmlydHVh
bCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCmluZGV4IGE2ZjFkMGZhZjViYmY3
MWU3NGFhMzkwZTQwYTA0ZWUyYmYzZjVlOWIuLjk3NzM2Y2M3ZjkxYzAyODE3MGE4MDE5NzhmYzA5
MDE3NTQ3ZTA1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyVHJlZVZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJM
YXllclRyZWVWaWV3SW1wbC5jcHAKQEAgLTEwNyw2ICsxMDcsMTEgQEAgdm9pZCBXZWJMYXllclRy
ZWVWaWV3SW1wbDo6ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpCiAgICAgLy8gRklYTUU6IHJvdXRl
IHRoaXMgdXAgdG8gdGhlIFdlYkxheWVyVHJlZVZpZXcgY2xpZW50CiB9CiAKK1dlYkNvcmU6OlRy
YW5zZm9ybWF0aW9uTWF0cml4IFdlYkxheWVyVHJlZVZpZXdJbXBsOjp6b29tQW5pbWF0b3JUcmFu
c2Zvcm0oKQoreworICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOworfQorCiB2b2lk
IFdlYkxheWVyVHJlZVZpZXdJbXBsOjpkaWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dChib29sIHN1
Y2Nlc3MpCiB7CiAgICAgaWYgKG1fY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKaW5kZXggMGNmYzI4Mzc4OTUwZTgyYTgzYThi
ODE3Zjg3YmUyYjE2ODAyMjhkNS4uZWEyYWM2OTEzZWQ4ZjRiM2ZiZGQwM2U0YTcxZTg4ODg0YjNk
ODg5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVl
Vmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVW
aWV3SW1wbC5oCkBAIC00Nyw2ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2Vzcyk7CiAgICAgdmlydHVhbCB2b2lk
IGRpZENvbW1pdEFuZERyYXdGcmFtZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN3
YXBCdWZmZXJzKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCB6
b29tQW5pbWF0b3JUcmFuc2Zvcm0oKTsKIAogICAgIC8vIE9ubHkgdXNlZCBpbiB0aGUgc2luZ2xl
IHRocmVhZGVkIHBhdGguCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYTJkZjMzMzk3
YjM3ZDgxNWMxY2YxMDEwNzZlNDE3NzIyYzQ1YjU1YS4uNGUwMmQ0MjhjOWViMzczZmNkNTdmYzgy
M2NiZDRjMGU4ODRmZGMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcApAQCAtMjc4NSwxMyArMjc4NSw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFJvb3RH
cmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogCiB2b2lkIFdlYlZpZXdJbXBsOjpz
ZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkoKQogewotICAgIGlmIChtX2xheWVyVHJlZUhvc3QpIHsK
LSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggem9vbU1hdHJpeDsKLSAgICAgICAgRmxvYXRQ
b2ludCB0cmFucyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c2Nyb2xsQW5pbWF0b3Io
KS0+em9vbVRyYW5zbGF0aW9uKCk7Ci0gICAgICAgIHpvb21NYXRyaXgudHJhbnNsYXRlKHRyYW5z
LngoKSwgdHJhbnMueSgpKTsKLSAgICAgICAgem9vbU1hdHJpeC5zY2FsZShtX3BhZ2UtPm1haW5G
cmFtZSgpLT52aWV3KCktPnNjcm9sbEFuaW1hdG9yKCktPnpvb21TY2FsZSgpKTsKLSAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5zZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oem9vbU1hdHJpeCk7Ci0g
ICAgfQogICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0TmVlZHNDb21taXQoKTsKIH0KQEAgLTI5OTgsNiArMjk5MSwxNSBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpkaWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dChib29sIHN1Y2Nlc3MpCiAgICAgICAgIG1f
cGFnZU92ZXJsYXlzLT51cGRhdGUoKTsKIH0KIAorVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViVmll
d0ltcGw6Onpvb21BbmltYXRvclRyYW5zZm9ybSgpCit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggem9vbU1hdHJpeDsKKyAgICBGbG9hdFBvaW50IHRyYW5zID0gbV9wYWdlLT5tYWluRnJhbWUo
KS0+dmlldygpLT5zY3JvbGxBbmltYXRvcigpLT56b29tVHJhbnNsYXRpb24oKTsKKyAgICB6b29t
TWF0cml4LnRyYW5zbGF0ZSh0cmFucy54KCksIHRyYW5zLnkoKSk7CisgICAgem9vbU1hdHJpeC5z
Y2FsZShtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPnNjcm9sbEFuaW1hdG9yKCktPnpvb21T
Y2FsZSgpKTsKKyAgICByZXR1cm4gem9vbU1hdHJpeDsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6
c2NoZWR1bGVDb21wb3NpdGUoKQogewogICAgIEFTU0VSVCghQ0NQcm94eTo6aGFzSW1wbFRocmVh
ZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDA0NDFi
MTZkYjQ2YTZiYjgwYjc2ZWI4ZTBkZTE1ZjAyOWI2NTkyMTUuLjI1MTkyMGZlZTkzNjJlMTdkNDRl
NDc2YmMwMGNiNmI2ZGU1NjUxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRl
ICJOb3RpZmljYXRpb25QcmVzZW50ZXJJbXBsLmgiCiAjaW5jbHVkZSAiUGFnZU92ZXJsYXlMaXN0
LmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJVc2VyTWVk
aWFDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgpAQCAtMjQxLDYgKzI0Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBs
ZXRlU3dhcEJ1ZmZlcnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVHcmFwaGljc0Nv
bnRleHQoYm9vbCBzdWNjZXNzKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4IHpvb21BbmltYXRvclRyYW5zZm9ybSgpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZUNvbXBvc2l0ZSgpOwogCiAgICAgLy8gV2ViVmlld0ltcGwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117725</attachid>
            <date>2011-12-02 18:16:50 -0800</date>
            <delta_ts>2011-12-04 14:12:49 -0800</delta_ts>
            <desc>Rebased against ToT</desc>
            <filename>bug-73711-20111202181649.patch</filename>
            <type>text/plain</type>
            <size>8111</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTcwMTRmYjRkMDNmNGMy
Y2E3NDk3OWUwM2M1MWQzOThlNTE5YTBmNy4uNmEzZDI0OWQ1ODRjNTc3YjY5YThmMjdjNzY2N2Rj
ZWM4ODZmZDYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTEyLTAyICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBzZXRO
ZWVkc0NvbW1pdCBvbiBub24tY29tcG9zaXRlZCBob3N0IGxheWVycyBzaG91bGQgdHJpZ2dlciBj
b21taXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcz
NzExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2Fs
bCBzZXROZWVkc0NvbW1pdCBkaXJlY3RseSBvbiB0aGUgQ0NMYXllclRyZWVIb3N0LCBza2lwcGlu
ZyB0aGUKKyAgICAgICAgYm91bmNlIHRocm91Z2ggY2hyb21lIGNsaWVudC4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNDb21taXQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKwogMjAxMS0xMi0w
MiAgQWFyb24gQ29sd2VsbCAgPGFjb2x3ZWxsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGaXgg
bWl4ZWQgY29udGVudCBoYW5kbGluZyBmb3IgdmlkZW8gaW4gQ2hyb21pdW0gYnkgaGF2aW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDBjZjAzNWJjYzUzZDQ3MWFmMmVjZjNkMDk3NjUy
MDUxOTg0ZGFjZDUuLmJlODhkMzY5OGIwOWE4NmQ3YTViOTkzYTUxMGRhZGQ0YzQxN2JlYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMTItMDIgIEFk
cmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIHNl
dE5lZWRzQ29tbWl0IG9uIG5vbi1jb21wb3NpdGVkIGhvc3QgbGF5ZXJzIHNob3VsZCB0cmlnZ2Vy
IGNvbW1pdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzM3MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBC
ZWNhdXNlIHNldE5lZWRzQ29tbWl0IGRvZXNuJ3QgZ28gdGhyb3VnaCBzZXRSb290TGF5ZXJOZWVk
c0Rpc3BsYXksCisgICAgICAgIGV4cG9zZSB0aGUgem9vbUFuaW1hdG9yVHJhbnNmb3JtIHNvIHRo
YXQgaXQgY2FuIGJlIHB1bGxlZCBhdCB0aGUKKyAgICAgICAgZXF1aXZhbGVudCB0aW1lIGZyb20g
d2l0aGluIENDTGF5ZXJUcmVlSG9zdC4KKworICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjp6b29tQW5p
bWF0b3JUcmFuc2Zvcm0pOgorICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oOgor
ICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6em9vbUFuaW1hdG9yVHJhbnNmb3JtKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwu
aDoKKwogMjAxMS0xMi0wMSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gTW92ZSBXZWJMYXllciBBUElzIHRvIHBsYXRmb3JtIGRpcmVj
dG9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCAwZDc1ZmRiZjFhZDY5MDIyYmMxYmZkOWYy
ZGQ1ZTczZmQ2ZWUwNTM2Li4yMWQzYWJhOTIyYTJkMDQwODc2ODI4Mzg5OTM5ZDA4ZTA0MWJkNjY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtMTIwLDEyICsxMjAsOCBAQCB2b2lkIExheWVy
Q2hyb21pdW06OnNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0KiBob3N0KQogCiB2b2lk
IExheWVyQ2hyb21pdW06OnNldE5lZWRzQ29tbWl0KCkKIHsKLSAgICAvLyBDYWxsIG5vdGlmeVN5
bmNSZXF1aXJlZCgpLCB3aGljaCBmb3Igbm9uLXJvb3QgbGF5ZXJzIHBsdW1icyB0aHJvdWdoIHRv
Ci0gICAgLy8gY2FsbCBzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkoKSBvbiB0aGUgV2ViVmlldywg
d2hpY2ggd2lsbCBjYXVzZSBMYXllclJlbmRlcmVyQ2hyb21pdW0KLSAgICAvLyB0byByZW5kZXIg
YSBmcmFtZS4KLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGhhcyBubyBlZmZlY3Qgb24gcm9vdCBsYXll
cnMuCi0gICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPm5vdGlmeVN5bmNS
ZXF1aXJlZCgpOworICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCisgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+c2V0TmVlZHNDb21taXQoKTsKIH0KIAogdm9pZCBMYXllckNocm9taXVtOjpzZXRQYXJl
bnQoTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApp
bmRleCBkYjE4MDllMDhjYmZiZTcxMjQ0Y2Q4ZGM1YThkYThiYTU2NTA4YmEwLi5mMDUzNjVhYzNl
MDhjN2IxODY4M2QwMjNjMzBlZDA4ZDdkMWQxYjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5jcHAKQEAgLTIxNiw2ICsyMTYsOCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0TmVl
ZHNBbmltYXRlKCkKIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0KCkKIHsK
KyAgICBzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0obV9jbGllbnQtPnpvb21BbmltYXRvclRyYW5z
Zm9ybSgpKTsKKwogICAgIGlmIChDQ1RocmVhZFByb3h5OjppbXBsVGhyZWFkKCkpIHsKICAgICAg
ICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNDb21taXQiLCB0aGlzLCAw
KTsKICAgICAgICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmgKaW5kZXggOTY1MmQ1ODRhOGU2M2ZjZGRlZjdlYzg0OWZjNzAxYjViYWVmMGFhYi4u
NzRmOGNhYWY2ZDQzNWQ3ZmI4Y2ZkNWZmMDJhYTIwY2RhYTk4ODExYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dChib29sIHN1Y2Nlc3MpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkgPSAwOworICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRpb25N
YXRyaXggem9vbUFuaW1hdG9yVHJhbnNmb3JtKCkgPSAwOwogCiAgICAgLy8gVXNlZCBvbmx5IGlu
IHRoZSBzaW5nbGUtdGhyZWFkZWQgcGF0aC4KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21w
b3NpdGUoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJM
YXllclRyZWVWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXll
clRyZWVWaWV3SW1wbC5jcHAKaW5kZXggYTZmMWQwZmFmNWJiZjcxZTc0YWEzOTBlNDBhMDRlZTJi
ZjNmNWU5Yi4uOTc3MzZjYzdmOTFjMDI4MTcwYTgwMTk3OGZjMDkwMTc1NDdlMDU3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNw
cApAQCAtMTA3LDYgKzEwNywxMSBAQCB2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpkaWRDb21w
bGV0ZVN3YXBCdWZmZXJzKCkKICAgICAvLyBGSVhNRTogcm91dGUgdGhpcyB1cCB0byB0aGUgV2Vi
TGF5ZXJUcmVlVmlldyBjbGllbnQKIH0KIAorV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgg
V2ViTGF5ZXJUcmVlVmlld0ltcGw6Onpvb21BbmltYXRvclRyYW5zZm9ybSgpCit7CisgICAgcmV0
dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7Cit9CisKIHZvaWQgV2ViTGF5ZXJUcmVlVmlld0lt
cGw6OmRpZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2VzcykKIHsKICAgICBpZiAo
bV9jbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXll
clRyZWVWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVl
Vmlld0ltcGwuaAppbmRleCAyZTE0NWZhNzFlZjljOTgwOGE3MGU5OTIxOTI1ZTYxOWRiNGRhYzAy
Li5iMjY2YzI4YjEzYjdlNWM4YmZiODE2YmJjMGUyYzM1NWVkZTI3YjZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKQEAgLTQ3LDYg
KzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVHcmFwaGljc0Nv
bnRleHQoYm9vbCBzdWNjZXNzKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0Zy
YW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKTsKKyAgICB2
aXJ0dWFsIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IHpvb21BbmltYXRvclRyYW5zZm9y
bSgpOwogCiAgICAgLy8gT25seSB1c2VkIGluIHRoZSBzaW5nbGUgdGhyZWFkZWQgcGF0aC4KICAg
ICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBhOGJjNzE3N2Y0MzNmODdhYTFkMDg0ZTQ2YWU4
ZGE3MGRkNmMzNzQ2Li5lMjcyMzE4MzM2ZWUyZDNkN2ZjMzllZDQ2MTczNDY0MzNmNTBmMTllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0yNzg1LDEz
ICsyNzg1LDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhp
Y3NMYXllciogbGF5ZXIpCiAKIHZvaWQgV2ViVmlld0ltcGw6OnNldFJvb3RMYXllck5lZWRzRGlz
cGxheSgpCiB7Ci0gICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgewotICAgICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB6b29tTWF0cml4OwotICAgICAgICBGbG9hdFBvaW50IHRyYW5zID0gbV9wYWdl
LT5tYWluRnJhbWUoKS0+dmlldygpLT5zY3JvbGxBbmltYXRvcigpLT56b29tVHJhbnNsYXRpb24o
KTsKLSAgICAgICAgem9vbU1hdHJpeC50cmFuc2xhdGUodHJhbnMueCgpLCB0cmFucy55KCkpOwot
ICAgICAgICB6b29tTWF0cml4LnNjYWxlKG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c2Ny
b2xsQW5pbWF0b3IoKS0+em9vbVNjYWxlKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dFpvb21BbmltYXRvclRyYW5zZm9ybSh6b29tTWF0cml4KTsKLSAgICB9CiAgICAgaWYgKG1fbGF5
ZXJUcmVlSG9zdCkKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOwog
fQpAQCAtMjk5OCw2ICsyOTkxLDE1IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRpZFJlY3JlYXRlR3Jh
cGhpY3NDb250ZXh0KGJvb2wgc3VjY2VzcykKICAgICAgICAgbV9wYWdlT3ZlcmxheXMtPnVwZGF0
ZSgpOwogfQogCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBXZWJWaWV3SW1wbDo6em9vbUFuaW1hdG9y
VHJhbnNmb3JtKCkKK3sKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB6b29tTWF0cml4OworICAg
IEZsb2F0UG9pbnQgdHJhbnMgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPnNjcm9sbEFu
aW1hdG9yKCktPnpvb21UcmFuc2xhdGlvbigpOworICAgIHpvb21NYXRyaXgudHJhbnNsYXRlKHRy
YW5zLngoKSwgdHJhbnMueSgpKTsKKyAgICB6b29tTWF0cml4LnNjYWxlKG1fcGFnZS0+bWFpbkZy
YW1lKCktPnZpZXcoKS0+c2Nyb2xsQW5pbWF0b3IoKS0+em9vbVNjYWxlKCkpOworICAgIHJldHVy
biB6b29tTWF0cml4OworfQorCiB2b2lkIFdlYlZpZXdJbXBsOjpzY2hlZHVsZUNvbXBvc2l0ZSgp
CiB7CiAgICAgQVNTRVJUKCFDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggMDQ0MWIxNmRiNDZhNmJiODBiNzZlYjhl
MGRlMTVmMDI5YjY1OTIxNS4uMjUxOTIwZmVlOTM2MmUxN2Q0NGU0NzZiYzAwY2I2YjZkZTU2NTEx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC00OCw2ICs0
OCw3IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNl
bnRlckltcGwuaCIKICNpbmNsdWRlICJQYWdlT3ZlcmxheUxpc3QuaCIKKyNpbmNsdWRlICJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudEltcGwuaCIKICNp
bmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBA
IC0yNDEsNiArMjQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmRE
cmF3RnJhbWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dChib29sIHN1Y2Nlc3Mp
OworICAgIHZpcnR1YWwgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXggem9vbUFuaW1hdG9y
VHJhbnNmb3JtKCk7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCk7CiAKICAg
ICAvLyBXZWJWaWV3SW1wbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117806</attachid>
            <date>2011-12-04 14:12:54 -0800</date>
            <delta_ts>2011-12-04 22:14:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73711-20111204141253.patch</filename>
            <type>text/plain</type>
            <size>18901</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxOTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThjMjI5ZDE0Njc4NWJm
YmY0OTI2N2JiZmI3YjhiYjU4M2ZhN2FiZS4uYzZmNjIzNzdiOTdhYWIwMjE1OWEwODcwMTMyYmM4
OTVmMjNjYjFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDExLTEyLTA0ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBzZXRO
ZWVkc0NvbW1pdCBvbiBub24tY29tcG9zaXRlZCBob3N0IGxheWVycyBzaG91bGQgdHJpZ2dlciBj
b21taXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcz
NzExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGlw
ZSBub24tY29tcG9zaXRlZCBjb250ZW50IGhvc3Qgc3luY3MgdG8gc2V0TmVlZHNDb21taXQuCisK
KyAgICAgICAgU2luY2Ugbm93IHRoZSBOb25Db21wb3NpdGVkQ29udGVudEhvc3QgZ2VuZXJhdGVz
IHNldE5lZWRzQ29tbWl0LCBkb24ndAorICAgICAgICBjYWxsIGl0IHVubmVjZXNzYXJpbHksIGUu
Zy4gY2FsbGluZyBzZXRCYWNrZ3JvdW5kQ29sb3IgdG8gdGhlIHNhbWUKKyAgICAgICAgY29sb3Ig
ZWFjaCBmcmFtZSBzaG91bGQgbm90IHJldHJpZ2dlciBtb3JlIGNvbW1pdHMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnNldE5lZWRzQ29tbWl0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyQ2hyb21pdW06OnNldEFuY2hvclBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW06OnNldEFuY2hvclBvaW50Wik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNo
cm9taXVtOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bTo6c2V0TWFza3NUb0JvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVt
OjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0T3Bh
Y2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRPcGFxdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0UG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW06OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OnNldFNjcm9sbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1
bTo6c2V0RG91YmxlU2lkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0
UmVwbGljYUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdDo6bm90aWZ5U3luY1JlcXVpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaDoKKwogMjAxMS0xMi0wNCAg
QW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ1NTVmFsdWVQb29s
OiBJbmxpbmUgdHJpdmlhbCBnZXR0ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA0
YzcyMWJiMzRlYWRhNGI0OWU1NDIwZjMxYTc2NDBjY2U4ZWI1ZmZiLi44OWYwYzJmYThhMWZmMGQy
N2QxOTg3ZDIwOGFiZGFhNzE1N2JjYWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDExLTEyLTA0ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5j
b20+CisKKyAgICAgICAgW2Nocm9taXVtXSBzZXROZWVkc0NvbW1pdCBvbiBub24tY29tcG9zaXRl
ZCBob3N0IGxheWVycyBzaG91bGQgdHJpZ2dlciBjb21taXQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNzExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHNvbWUgdGVzdHMgdG8gbWFrZSBzdXJlIHRo
YXQgbW9kaWZ5aW5nIHRoZSBub25jb21wb3NpdGVkIGNvbnRlbnQKKyAgICAgICAgaG9zdCB0cmln
Z2VycyBjb21taXRzLgorCisgICAgICAgIFByb3BlcnRpZXMgdGhhdCB0cmlnZ2VyIHNldE5lZWRz
Q29tbWl0IHNob3VsZCBvbmx5IGRvIHNvIHdoZW4gdGhlCisgICAgICAgIHByb3BlcnR5IGNoYW5n
ZXMuIEFkZGl0aW9uYWxseSwgbWFrZSBtb3JlIHByb3BlcnR5IGNoYW5nZXMgcHJvcGVybHkKKyAg
ICAgICAgdHJpZ2dlciBjb21taXRzLgorCisgICAgICAgICogdGVzdHMvTGF5ZXJDaHJvbWl1bVRl
c3QuY3BwOgorCiAyMDExLTEyLTAyICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdt
YWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTAxOTA2LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmNwcAppbmRleCAwZDc1ZmRiZjFhZDY5MDIyYmMxYmZkOWYyZGQ1ZTczZmQ2
ZWUwNTM2Li5iMmJkZWE5M2IxYzIwMTc2ZGIzMjNhOGQxYmFiOWYwM2JkOGIyYTZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmNwcApAQCAtMTIwLDEwICsxMjAsNiBAQCB2b2lkIExheWVyQ2hyb21pdW06
OnNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0KiBob3N0KQogCiB2b2lkIExheWVyQ2hy
b21pdW06OnNldE5lZWRzQ29tbWl0KCkKIHsKLSAgICAvLyBDYWxsIG5vdGlmeVN5bmNSZXF1aXJl
ZCgpLCB3aGljaCBmb3Igbm9uLXJvb3QgbGF5ZXJzIHBsdW1icyB0aHJvdWdoIHRvCi0gICAgLy8g
Y2FsbCBzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkoKSBvbiB0aGUgV2ViVmlldywgd2hpY2ggd2ls
bCBjYXVzZSBMYXllclJlbmRlcmVyQ2hyb21pdW0KLSAgICAvLyB0byByZW5kZXIgYSBmcmFtZS4K
LSAgICAvLyBUaGlzIGZ1bmN0aW9uIGhhcyBubyBlZmZlY3Qgb24gcm9vdCBsYXllcnMuCiAgICAg
aWYgKG1fZGVsZWdhdGUpCiAgICAgICAgIG1fZGVsZWdhdGUtPm5vdGlmeVN5bmNSZXF1aXJlZCgp
OwogfQpAQCAtMjQ5LDYgKzI0NSwxMTggQEAgdm9pZCBMYXllckNocm9taXVtOjpzZXRDaGlsZHJl
bihjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4mIGNoaWxkcmVuKQogICAgICAg
ICBhZGRDaGlsZChjaGlsZHJlbltpXSk7CiB9CiAKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0QW5j
aG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQpCit7CisgICAgaWYgKG1fYW5j
aG9yUG9pbnQgPT0gYW5jaG9yUG9pbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2FuY2hvclBv
aW50ID0gYW5jaG9yUG9pbnQ7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwordm9pZCBMYXll
ckNocm9taXVtOjpzZXRBbmNob3JQb2ludFooZmxvYXQgYW5jaG9yUG9pbnRaKQoreworICAgIGlm
IChtX2FuY2hvclBvaW50WiA9PSBhbmNob3JQb2ludFopCisgICAgICAgIHJldHVybjsKKyAgICBt
X2FuY2hvclBvaW50WiA9IGFuY2hvclBvaW50WjsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQor
Cit2b2lkIExheWVyQ2hyb21pdW06OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgYmFj
a2dyb3VuZENvbG9yKQoreworICAgIGlmIChtX2JhY2tncm91bmRDb2xvciA9PSBiYWNrZ3JvdW5k
Q29sb3IpCisgICAgICAgIHJldHVybjsKKyAgICBtX2JhY2tncm91bmRDb2xvciA9IGJhY2tncm91
bmRDb2xvcjsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCit2b2lkIExheWVyQ2hyb21pdW06
OnNldE1hc2tzVG9Cb3VuZHMoYm9vbCBtYXNrc1RvQm91bmRzKQoreworICAgIGlmIChtX21hc2tz
VG9Cb3VuZHMgPT0gbWFza3NUb0JvdW5kcykKKyAgICAgICAgcmV0dXJuOworICAgIG1fbWFza3NU
b0JvdW5kcyA9IG1hc2tzVG9Cb3VuZHM7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwordm9p
ZCBMYXllckNocm9taXVtOjpzZXRNYXNrTGF5ZXIoTGF5ZXJDaHJvbWl1bSogbWFza0xheWVyKQor
eworICAgIGlmIChtX21hc2tMYXllciA9PSBtYXNrTGF5ZXIpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX21hc2tMYXllciA9IG1hc2tMYXllcjsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCit2
b2lkIExheWVyQ2hyb21pdW06OnNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBpZiAo
bV9vcGFjaXR5ID09IG9wYWNpdHkpCisgICAgICAgIHJldHVybjsKKyAgICBtX29wYWNpdHkgPSBv
cGFjaXR5OworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6
c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQoreworICAgIGlmIChtX29wYXF1ZSA9PSBvcGFxdWUpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX29wYXF1ZSA9IG9wYXF1ZTsKKyAgICBzZXROZWVkc0NvbW1p
dCgpOworfQorCit2b2lkIExheWVyQ2hyb21pdW06OnNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmIHBvc2l0aW9uKQoreworICAgIGlmIChtX3Bvc2l0aW9uID09IHBvc2l0aW9uKQorICAgICAg
ICByZXR1cm47CisgICAgbV9wb3NpdGlvbiA9IHBvc2l0aW9uOworICAgIHNldE5lZWRzQ29tbWl0
KCk7Cit9CisKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1YmxheWVyVHJhbnNmb3JtKQoreworICAgIGlmIChtX3N1
YmxheWVyVHJhbnNmb3JtID09IHN1YmxheWVyVHJhbnNmb3JtKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9zdWJsYXllclRyYW5zZm9ybSA9IHN1YmxheWVyVHJhbnNmb3JtOworICAgIHNldE5lZWRz
Q29tbWl0KCk7Cit9CisKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0VHJhbnNmb3JtKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit7CisgICAgaWYgKG1fdHJhbnNmb3JtID09
IHRyYW5zZm9ybSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fdHJhbnNmb3JtID0gdHJhbnNmb3Jt
OworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0U2Ny
b2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQoreworICAgIGlmICht
X3Njcm9sbFBvc2l0aW9uID09IHNjcm9sbFBvc2l0aW9uKQorICAgICAgICByZXR1cm47CisgICAg
bV9zY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uOworICAgIHNldE5lZWRzQ29tbWl0KCk7
Cit9CisKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0U2Nyb2xsYWJsZShib29sIHNjcm9sbGFibGUp
Cit7CisgICAgaWYgKG1fc2Nyb2xsYWJsZSA9PSBzY3JvbGxhYmxlKQorICAgICAgICByZXR1cm47
CisgICAgbV9zY3JvbGxhYmxlID0gc2Nyb2xsYWJsZTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOwor
fQorCit2b2lkIExheWVyQ2hyb21pdW06OnNldERvdWJsZVNpZGVkKGJvb2wgZG91YmxlU2lkZWQp
Cit7CisgICAgaWYgKG1fZG91YmxlU2lkZWQgPT0gZG91YmxlU2lkZWQpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2RvdWJsZVNpZGVkID0gZG91YmxlU2lkZWQ7CisgICAgc2V0TmVlZHNDb21taXQo
KTsKK30KKwordm9pZCBMYXllckNocm9taXVtOjpzZXRSZXBsaWNhTGF5ZXIoTGF5ZXJDaHJvbWl1
bSogcmVwbGljYUxheWVyKQoreworICAgIGlmIChtX3JlcGxpY2FMYXllciA9PSByZXBsaWNhTGF5
ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBtX3JlcGxpY2FMYXllciA9IHJlcGxpY2FMYXllcjsK
KyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCiBMYXllckNocm9taXVtKiBMYXllckNocm9taXVt
OjpwYXJlbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcmVudDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
aAppbmRleCAxNzVmYzJmOTA1OWEzMDgwMzdlMGVlODQ4YjlmYzEzMTI1MDllOGRkLi40NmRhNjE1
Zjg1ZGYxZWNmMmMyMmM4MWJiYzNmNzg2YTg5ODlkMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBA
IC04Myw2NCArODMsNjQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2hpbGRyZW4oY29uc3QgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+Jik7CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxM
YXllckNocm9taXVtPiA+JiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW47IH0K
IAotICAgIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQp
IHsgbV9hbmNob3JQb2ludCA9IGFuY2hvclBvaW50OyBzZXROZWVkc0NvbW1pdCgpOyB9CisgICAg
dm9pZCBzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50Jik7CiAgICAgRmxvYXRQb2ludCBh
bmNob3JQb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5jaG9yUG9pbnQ7IH0KIAotICAgIHZvaWQg
c2V0QW5jaG9yUG9pbnRaKGZsb2F0IGFuY2hvclBvaW50WikgeyBtX2FuY2hvclBvaW50WiA9IGFu
Y2hvclBvaW50Wjsgc2V0TmVlZHNDb21taXQoKTsgfQorICAgIHZvaWQgc2V0QW5jaG9yUG9pbnRa
KGZsb2F0KTsKICAgICBmbG9hdCBhbmNob3JQb2ludFooKSBjb25zdCB7IHJldHVybiBtX2FuY2hv
clBvaW50WjsgfQogCi0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKSB7IG1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7IHNldE5lZWRzQ29tbWl0KCk7IH0KKyAg
ICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIENvbG9yIGJhY2tn
cm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CiAKICAgICB2
b2lkIHNldEJvdW5kcyhjb25zdCBJbnRTaXplJik7CiAgICAgY29uc3QgSW50U2l6ZSYgYm91bmRz
KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZHM7IH0KICAgICB2aXJ0dWFsIEludFNpemUgY29udGVu
dEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIGJvdW5kcygpOyB9CiAKLSAgICB2b2lkIHNldE1hc2tz
VG9Cb3VuZHMoYm9vbCBtYXNrc1RvQm91bmRzKSB7IG1fbWFza3NUb0JvdW5kcyA9IG1hc2tzVG9C
b3VuZHM7IHNldE5lZWRzQ29tbWl0KCk7IH0KKyAgICB2b2lkIHNldE1hc2tzVG9Cb3VuZHMoYm9v
bCk7CiAgICAgYm9vbCBtYXNrc1RvQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrc1RvQm91
bmRzOyB9CiAKICAgICB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgY29uc3QgU3Ry
aW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKLSAgICB2b2lkIHNldE1hc2tM
YXllcihMYXllckNocm9taXVtKiBtYXNrTGF5ZXIpIHsgbV9tYXNrTGF5ZXIgPSBtYXNrTGF5ZXI7
IHNldE5lZWRzQ29tbWl0KCk7IH0KKyAgICB2b2lkIHNldE1hc2tMYXllcihMYXllckNocm9taXVt
Kik7CiAgICAgTGF5ZXJDaHJvbWl1bSogbWFza0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9tYXNr
TGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgZGlydHlSZWN0KTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgpIHsg
c2V0TmVlZHNEaXNwbGF5UmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBjb250ZW50Qm91bmRz
KCkpKTsgfQogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0Rpc3BsYXkoKSBjb25zdCB7IHJldHVybiBt
X25lZWRzRGlzcGxheTsgfQogCi0gICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpIHsg
bV9vcGFjaXR5ID0gb3BhY2l0eTsgc2V0TmVlZHNDb21taXQoKTsgfQorICAgIHZvaWQgc2V0T3Bh
Y2l0eShmbG9hdCk7CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhY2l0
eTsgfQogCi0gICAgdm9pZCBzZXRPcGFxdWUoYm9vbCBvcGFxdWUpIHsgbV9vcGFxdWUgPSBvcGFx
dWU7IHNldE5lZWRzQ29tbWl0KCk7IH0KKyAgICB2b2lkIHNldE9wYXF1ZShib29sKTsKICAgICBi
b29sIG9wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhcXVlOyB9CiAKLSAgICB2b2lkIHNldFBv
c2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKSB7IG1fcG9zaXRpb24gPSBwb3NpdGlv
bjsgIHNldE5lZWRzQ29tbWl0KCk7IH0KKyAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0
UG9pbnQmKTsKICAgICBGbG9hdFBvaW50IHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3Np
dGlvbjsgfQogCi0gICAgdm9pZCBzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtKSB7IG1fc3VibGF5ZXJUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07
IHNldE5lZWRzQ29tbWl0KCk7IH0KKyAgICB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zdWJsYXllclRyYW5zZm9ybTsg
fQogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggem9vbUFuaW1hdG9yVHJhbnNmb3JtKCkgY29u
c3QgeyByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgoKTsgfQogCi0gICAgdm9pZCBzZXRUcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkgeyBtX3RyYW5zZm9y
bSA9IHRyYW5zZm9ybTsgc2V0TmVlZHNDb21taXQoKTsgfQorICAgIHZvaWQgc2V0VHJhbnNmb3Jt
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9CiAKICAgICBj
b25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxl
TGF5ZXJSZWN0OyB9CiAgICAgdm9pZCBzZXRWaXNpYmxlTGF5ZXJSZWN0KGNvbnN0IEludFJlY3Qm
IHZpc2libGVMYXllclJlY3QpIHsgbV92aXNpYmxlTGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVj
dDsgfQogCisgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpOwogICAg
IGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xs
UG9zaXRpb247IH0KLSAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBz
Y3JvbGxQb3NpdGlvbikgeyBtX3Njcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb247IH0KIAor
ICAgIHZvaWQgc2V0U2Nyb2xsYWJsZShib29sKTsKICAgICBib29sIHNjcm9sbGFibGUoKSBjb25z
dCB7IHJldHVybiBtX3Njcm9sbGFibGU7IH0KLSAgICB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCBz
Y3JvbGxhYmxlKSB7IG1fc2Nyb2xsYWJsZSA9IHRydWU7ICBzZXROZWVkc0NvbW1pdCgpOyB9CiAK
ICAgICBJbnRTaXplIHNjcm9sbERlbHRhKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9CiAK
ICAgICBmbG9hdCBwYWdlU2NhbGVEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIDE7IH0KIAorICAgIHZv
aWQgc2V0RG91YmxlU2lkZWQoYm9vbCk7CiAgICAgYm9vbCBkb3VibGVTaWRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZG91YmxlU2lkZWQ7IH0KLSAgICB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wgZG91
YmxlU2lkZWQpIHsgbV9kb3VibGVTaWRlZCA9IGRvdWJsZVNpZGVkOyBzZXROZWVkc0NvbW1pdCgp
OyB9CiAKICAgICB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wgcHJlc2VydmUzRCkgeyBtX3ByZXNl
cnZlczNEID0gcHJlc2VydmUzRDsgfQogICAgIGJvb2wgcHJlc2VydmVzM0QoKSBjb25zdCB7IHJl
dHVybiBtX3ByZXNlcnZlczNEOyB9CkBAIC0xNTUsNyArMTU1LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXREZWxlZ2F0ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKSB7IG1fZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsgfQogCi0gICAgdm9pZCBzZXRSZXBsaWNhTGF5ZXIoTGF5ZXJDaHJvbWl1bSog
bGF5ZXIpIHsgbV9yZXBsaWNhTGF5ZXIgPSBsYXllcjsgfQorICAgIHZvaWQgc2V0UmVwbGljYUxh
eWVyKExheWVyQ2hyb21pdW0qKTsKICAgICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIoKSBj
b25zdCB7IHJldHVybiBtX3JlcGxpY2FMYXllci5nZXQoKTsgfQogCiAgICAgLy8gVGhlc2UgbWV0
aG9kcyB0eXBpY2FsbHkgbmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9O
b25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAppbmRleCBiYzZhMmE0
OTc4MjhlYjI5MWU5ODk3ZWIxYmIxMjIyMDcwYTRhMmEzLi5jZWViZGVkMTJjNGY2NTc5NThjYWYx
M2NiOWU3YjcyMTExZjY1NDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50
SG9zdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAj
aW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVt
LmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMTE5LDYgKzEyMCw5IEBAIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojpu
b3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBkb3ViCiAKIHZvaWQg
Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojpub3RpZnlTeW5jUmVxdWlyZWQoY29uc3QgR3JhcGhp
Y3NMYXllciopCiB7CisgICAgQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0ID0gbV9ncmFw
aGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCktPmxheWVyVHJlZUhvc3QoKTsKKyAgICBpZiAobGF5
ZXJUcmVlSG9zdCkKKyAgICAgICAgbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXQoKTsKIH0K
IAogdm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnBhaW50Q29udGVudHMoY29uc3QgR3Jh
cGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50
aW5nUGhhc2UsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3Np
dGVkQ29udGVudEhvc3QuaAppbmRleCA4MGE3MGE5ZGJkMzE2ZWFhMGJlZDI0OWFlOTlhZDM4OTll
OGY0MDlhLi4yM2E5YTFiMTc5NzI2MGNkOTQzMzc2NTY4Mjg1MDQ4Mzc5OGY3NTA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3Np
dGVkQ29udGVudEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaApAQCAtNTksOSArNTksMTAgQEAgcHVi
bGljOgogICAgIHZvaWQgcHJvdGVjdFZpc2libGVUaWxlVGV4dHVyZXMoKTsKICAgICBHcmFwaGlj
c0xheWVyKiB0b3BMZXZlbFJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGhpY3NMYXll
ci5nZXQoKTsgfQogCi1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IE5vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdChQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBjb250ZW50
UGFpbnQpOwogCitwcml2YXRlOgogICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBHcmFwaGljc0xheWVyKiwgZG91
YmxlIHRpbWUpOwogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlTeW5jUmVxdWlyZWQoY29uc3QgR3Jh
cGhpY3NMYXllciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9M
YXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVy
Q2hyb21pdW1UZXN0LmNwcAppbmRleCBmNGE0YTMyNzk3MWE5ZmYyNzFkYzRmNjg4YmJjOTdlMDk4
YzkzMjBiLi5iMzE3ODc3ZDA1NjA2ZjM2ZDFhODZjZmYxNzg4YjgyYzc3MDhhOThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcApA
QCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKIAogI2luY2x1ZGUg
IkNDTGF5ZXJUcmVlVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVt
LmgiCisjaW5jbHVkZSAiTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmgiCiAjaW5jbHVkZSA8Z21v
Y2svZ21vY2suaD4KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCkBAIC01Miw2ICs1NCwzMCBA
QCBwdWJsaWM6CiAgICAgTU9DS19NRVRIT0QwKG5vdGlmeVN5bmNSZXF1aXJlZCwgdm9pZCgpKTsK
IH07CiAKK2NsYXNzIE1vY2tMYXllclBhaW50ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllclBhaW50
ZXJDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEludFJlY3QmKSB7IH0KK307CisKK2NsYXNzIE1vY2tOb25Db21wb3NpdGVk
Q29udGVudEhvc3QgOiBwdWJsaWMgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc093blB0cjxNb2NrTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0PiBjcmVh
dGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNb2NrTm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0KTsKKyAgICB9CisKKyAgICBNT0NLX01FVEhPRDEobm90aWZ5U3luY1JlcXVp
cmVkLCB2b2lkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSk7CisKK3ByaXZhdGU6CisgICAgTW9ja05v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdCgpCisgICAgICAgIDogTm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0KGFkb3B0UHRyKG5ldyBNb2NrTGF5ZXJQYWludGVyQ2hyb21pdW0oKSkpCisgICAgeworICAg
ICAgICBtX3Njcm9sbExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKDApOworICAgICAgICBz
ZXRTY3JvbGxMYXllcihtX3Njcm9sbExheWVyLmdldCgpKTsKKyAgICB9CisgICAgT3duUHRyPEdy
YXBoaWNzTGF5ZXI+IG1fc2Nyb2xsTGF5ZXI7Cit9OworCiBjbGFzcyBMYXllckNocm9taXVtV2l0
aEluc3RydW1lbnRlZERlc3RydWN0b3IgOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgTGF5ZXJDaHJvbWl1bVdpdGhJbnN0cnVtZW50ZWREZXN0cnVjdG9yKEND
TGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCkBAIC02MjAsMTAgKzY0Niw4IEBAIFRFU1RfRihMYXll
ckNocm9taXVtVGVzdCwgY2hlY2tQcm9wZXJ0eUNoYW5nZUNhdXNlc0NvcnJlY3RCZWhhdmlvcikK
ICAgICBFWEVDVVRFX0FORF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVnYXRl
LCAwLCB0ZXN0TGF5ZXItPnNldERlbGVnYXRlKCZtb2NrRGVsZWdhdGUpKTsKICAgICBFWEVDVVRF
X0FORF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVnYXRlLCAwLCB0ZXN0TGF5
ZXItPnNldE5hbWUoIlRlc3QgTGF5ZXIiKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElG
WV9TWU5DX0JFSEFWSU9SKG1vY2tEZWxlZ2F0ZSwgMCwgdGVzdExheWVyLT5zZXRWaXNpYmxlTGF5
ZXJSZWN0KEludFJlY3QoMCwgMCwgNDAsIDUwKSkpOwotICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9O
T1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDAsIHRlc3RMYXllci0+c2V0U2Nyb2xs
UG9zaXRpb24oSW50UG9pbnQoMTAsIDEwKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJ
RllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDAsIHRlc3RMYXllci0+c2V0VXNlc0xheWVy
Q2xpcHBpbmcodHJ1ZSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhB
VklPUihtb2NrRGVsZWdhdGUsIDAsIHRlc3RMYXllci0+c2V0SXNOb25Db21wb3NpdGVkQ29udGVu
dCh0cnVlKSk7Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JFSEFWSU9SKG1v
Y2tEZWxlZ2F0ZSwgMCwgdGVzdExheWVyLT5zZXRSZXBsaWNhTGF5ZXIoZHVtbXlMYXllci5nZXQo
KSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVs
ZWdhdGUsIDAsIHRlc3RMYXllci0+c2V0RHJhd09wYWNpdHkoMC41ZikpOwogICAgIEVYRUNVVEVf
QU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDAsIHRlc3RMYXll
ci0+c2V0Q2xpcFJlY3QoSW50UmVjdCgzLCAzLCA4LCA4KSkpOwogICAgIEVYRUNVVEVfQU5EX1ZF
UklGWV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDAsIHRlc3RMYXllci0+c2V0
VGFyZ2V0UmVuZGVyU3VyZmFjZSgwKSk7CkBAIC02MzQsMTkgKzY1OCwyMSBAQCBURVNUX0YoTGF5
ZXJDaHJvbWl1bVRlc3QsIGNoZWNrUHJvcGVydHlDaGFuZ2VDYXVzZXNDb3JyZWN0QmVoYXZpb3Ip
CiAKICAgICAvLyBOZXh0LCB0ZXN0IHByb3BlcnRpZXMgdGhhdCBzaG91bGQgY2FsbCBzZXROZWVk
c0NvbW1pdCAoYnV0IG5vdCBzZXROZWVkc0Rpc3BsYXkpCiAgICAgLy8gVGhlc2UgcHJvcGVydGll
cyBzaG91bGQgaW5kaXJlY3RseSBjYWxsIG5vdGlmeVN5bmNSZXF1aXJlZCwgYnV0IHRoZSBuZWVk
c0Rpc3BsYXkgZmxhZyBzaG91bGQgbm90IGNoYW5nZS4KLSAgICAvLyBOb3RlIHRoYXQgZm9yIG1h
bnkgb2YgdGhlc2UgcHJvcGVydGllcyBpdCBpcyBpbXBvcnRhbnQgdG8gdGVzdCBzZXR0aW5nIHRo
ZSBwcm9wZXJ0eSB0byBhIHZhbHVlIHRoYXQKLSAgICAvLyBpcyBkaWZmZXJlbnQgdGhhbiB3aGF0
IHRoZSBjb25zdHJ1Y3RvciBpbml0aWFsaXplcyBpdCB0by4KKyAgICAvLyBBbGwgcHJvcGVydGll
cyBuZWVkIHRvIGJlIHNldCB0byBuZXcgdmFsdWVzIGluIG9yZGVyIGZvciBzZXROZWVkc0NvbW1p
dAorICAgIC8vIHRvIGJlIGNhbGxlZC4KICAgICBFWEVDVVRFX0FORF9WRVJJRllfTk9USUZZX1NZ
TkNfQkVIQVZJT1IobW9ja0RlbGVnYXRlLCAxLCB0ZXN0TGF5ZXItPnNldEFuY2hvclBvaW50KEZs
b2F0UG9pbnQoMS4yM2YsIDQuNTZmKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllf
U1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDEsIHRlc3RMYXllci0+c2V0QW5jaG9yUG9pbnRa
KDAuN2YpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJT1IobW9j
a0RlbGVnYXRlLCAxLCB0ZXN0TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihDb2xvcigwLjRmLCAw
LjRmLCAwLjRmKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklP
Uihtb2NrRGVsZWdhdGUsIDEsIHRlc3RMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKSk7CiAg
ICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JFSEFWSU9SKG1vY2tEZWxlZ2F0ZSwg
MSwgdGVzdExheWVyLT5zZXRNYXNrTGF5ZXIoZHVtbXlMYXllci5nZXQoKSkpOwogICAgIEVYRUNV
VEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDEsIHRlc3RM
YXllci0+c2V0T3BhY2l0eSgwLjVmKSk7Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9T
WU5DX0JFSEFWSU9SKG1vY2tEZWxlZ2F0ZSwgMSwgdGVzdExheWVyLT5zZXRPcGFxdWUoZmFsc2Up
KTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVn
YXRlLCAxLCB0ZXN0TGF5ZXItPnNldE9wYXF1ZSh0cnVlKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVS
SUZZX05PVElGWV9TWU5DX0JFSEFWSU9SKG1vY2tEZWxlZ2F0ZSwgMSwgdGVzdExheWVyLT5zZXRQ
b3NpdGlvbihGbG9hdFBvaW50KDQuMGYsIDkuMGYpKSk7Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZ
X05PVElGWV9TWU5DX0JFSEFWSU9SKG1vY2tEZWxlZ2F0ZSwgMSwgdGVzdExheWVyLT5zZXRTdWJs
YXllclRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CisgICAgRVhFQ1VURV9BTkRf
VkVSSUZZX05PVElGWV9TWU5DX0JFSEFWSU9SKG1vY2tEZWxlZ2F0ZSwgMSwgdGVzdExheWVyLT5z
ZXRSZXBsaWNhTGF5ZXIoZHVtbXlMYXllci5nZXQoKSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklG
WV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDEsIHRlc3RMYXllci0+c2V0U3Vi
bGF5ZXJUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoMCwgMCwgMCwgMCwgMCwgMCkpKTsK
ICAgICBFWEVDVVRFX0FORF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVnYXRl
LCAxLCB0ZXN0TGF5ZXItPnNldFNjcm9sbGFibGUodHJ1ZSkpOwotICAgIEVYRUNVVEVfQU5EX1ZF
UklGWV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDEsIHRlc3RMYXllci0+c2V0
VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJ
RllfTk9USUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVnYXRlLCAxLCB0ZXN0TGF5ZXItPnNldFNj
cm9sbFBvc2l0aW9uKEludFBvaW50KDEwLCAxMCkpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllf
Tk9USUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVnYXRlLCAxLCB0ZXN0TGF5ZXItPnNldFRyYW5z
Zm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgwLCAwLCAwLCAwLCAwLCAwKSkpOwogICAgIEVYRUNV
VEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDEsIHRlc3RM
YXllci0+c2V0RG91YmxlU2lkZWQoZmFsc2UpKTsKIAogICAgIC8vIFRoZSBhYm92ZSB0ZXN0cyBz
aG91bGQgbm90IGhhdmUgY2F1c2VkIGEgY2hhbmdlIHRvIHRoZSBuZWVkc0Rpc3BsYXkgZmxhZy4K
QEAgLTY2MCw0ICs2ODYsMTggQEAgVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBjaGVja1Byb3Bl
cnR5Q2hhbmdlQ2F1c2VzQ29ycmVjdEJlaGF2aW9yKQogICAgIC8vIEZJWE1FOiBuZWVkIHRvIGFk
ZCBhIHRlc3QgZm9yIHNldExheWVyVHJlZUhvc3Qgd2l0aCBhIG5vbi1udWxsIHN0dWJiZWQgQ0NM
YXllclRyZWVIb3N0LgogfQogCitURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGNoZWNrTm9uQ29t
cG9zaXRlZENvbnRlbnRQcm9wZXJ0eUNoYW5nZUNhdXNlc0NvbW1pdCkKK3sKKyAgICBPd25QdHI8
TW9ja05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdD4gbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0ID0g
TW9ja05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Y3JlYXRlKCk7CisKKyAgICBHcmFwaGljc0xh
eWVyKiByb290TGF5ZXIgPSBub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnRvcExldmVsUm9vdExh
eWVyKCk7CisKKyAgICBFWFBFQ1RfQ0FMTCgqbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LCBub3Rp
ZnlTeW5jUmVxdWlyZWQoXykpLlRpbWVzKDEpOworICAgIHJvb3RMYXllci0+cGxhdGZvcm1MYXll
cigpLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgxLCAxKSk7CisgICAgTW9jazo6VmVyaWZ5
QW5kQ2xlYXJFeHBlY3RhdGlvbnMobm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmdldCgpKTsKKwor
ICAgIEVYUEVDVF9DQUxMKCpub25Db21wb3NpdGVkQ29udGVudEhvc3QsIG5vdGlmeVN5bmNSZXF1
aXJlZChfKSkuVGltZXMoQXRMZWFzdCgxKSk7CisgICAgbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
LT5zZXRWaWV3cG9ydChJbnRTaXplKDMwLCAzMCksIEludFNpemUoMjAsIDIwKSwgSW50UG9pbnQo
MTAsIDEwKSwgMSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117842</attachid>
            <date>2011-12-04 22:15:09 -0800</date>
            <delta_ts>2011-12-05 13:19:25 -0800</delta_ts>
            <desc>Always set commit for replica layer</desc>
            <filename>bug-73711-20111204221501.patch</filename>
            <type>text/plain</type>
            <size>18709</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxOTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThjMjI5ZDE0Njc4NWJm
YmY0OTI2N2JiZmI3YjhiYjU4M2ZhN2FiZS4uN2U3NDc0Mzg1ZGM0NWZhZWVlMDg4MzBmNjkwODM4
MWI0NDNiYTMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDExLTEyLTA0ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBzZXRO
ZWVkc0NvbW1pdCBvbiBub24tY29tcG9zaXRlZCBob3N0IGxheWVycyBzaG91bGQgdHJpZ2dlciBj
b21taXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcz
NzExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGlw
ZSBub24tY29tcG9zaXRlZCBjb250ZW50IGhvc3Qgc3luY3MgdG8gc2V0TmVlZHNDb21taXQuCisK
KyAgICAgICAgU2luY2Ugbm93IHRoZSBOb25Db21wb3NpdGVkQ29udGVudEhvc3QgZ2VuZXJhdGVz
IHNldE5lZWRzQ29tbWl0LCBkb24ndAorICAgICAgICBjYWxsIGl0IHVubmVjZXNzYXJpbHksIGUu
Zy4gY2FsbGluZyBzZXRCYWNrZ3JvdW5kQ29sb3IgdG8gdGhlIHNhbWUKKyAgICAgICAgY29sb3Ig
ZWFjaCBmcmFtZSBzaG91bGQgbm90IHJldHJpZ2dlciBtb3JlIGNvbW1pdHMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnNldE5lZWRzQ29tbWl0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyQ2hyb21pdW06OnNldEFuY2hvclBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW06OnNldEFuY2hvclBvaW50Wik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNo
cm9taXVtOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bTo6c2V0TWFza3NUb0JvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVt
OjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0T3Bh
Y2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRPcGFxdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0UG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW06OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OnNldFNjcm9sbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1
bTo6c2V0RG91YmxlU2lkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9O
b25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0Ojpub3RpZnlTeW5jUmVxdWlyZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oOgorCiAyMDExLTEy
LTA0ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBDU1NWYWx1
ZVBvb2w6IElubGluZSB0cml2aWFsIGdldHRlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDRjNzIxYmIzNGVhZGE0YjQ5ZTU0MjBmMzFhNzY0MGNjZThlYjVmZmIuLjg5ZjBjMmZhOGEx
ZmYwZDI3ZDE5ODdkMjA4YWJkYWE3MTU3YmNhYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMTItMDQgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29v
Z2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIHNldE5lZWRzQ29tbWl0IG9uIG5vbi1jb21w
b3NpdGVkIGhvc3QgbGF5ZXJzIHNob3VsZCB0cmlnZ2VyIGNvbW1pdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM3MTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc29tZSB0ZXN0cyB0byBtYWtlIHN1
cmUgdGhhdCBtb2RpZnlpbmcgdGhlIG5vbmNvbXBvc2l0ZWQgY29udGVudAorICAgICAgICBob3N0
IHRyaWdnZXJzIGNvbW1pdHMuCisKKyAgICAgICAgUHJvcGVydGllcyB0aGF0IHRyaWdnZXIgc2V0
TmVlZHNDb21taXQgc2hvdWxkIG9ubHkgZG8gc28gd2hlbiB0aGUKKyAgICAgICAgcHJvcGVydHkg
Y2hhbmdlcy4gQWRkaXRpb25hbGx5LCBtYWtlIG1vcmUgcHJvcGVydHkgY2hhbmdlcyBwcm9wZXJs
eQorICAgICAgICB0cmlnZ2VyIGNvbW1pdHMuCisKKyAgICAgICAgKiB0ZXN0cy9MYXllckNocm9t
aXVtVGVzdC5jcHA6CisKIDIwMTEtMTItMDIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDE5MDYu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDBkNzVmZGJmMWFkNjkwMjJiYzFiZmQ5ZjJkZDVl
NzNmZDZlZTA1MzYuLjQ4ZGUwNDgzZWQzMjY0NTI4YjhhMDFkNzAwZTc0YTY5MGQ4OGU0M2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC0xMjAsMTAgKzEyMCw2IEBAIHZvaWQgTGF5ZXJDaHJv
bWl1bTo6c2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiAKIHZvaWQgTGF5
ZXJDaHJvbWl1bTo6c2V0TmVlZHNDb21taXQoKQogewotICAgIC8vIENhbGwgbm90aWZ5U3luY1Jl
cXVpcmVkKCksIHdoaWNoIGZvciBub24tcm9vdCBsYXllcnMgcGx1bWJzIHRocm91Z2ggdG8KLSAg
ICAvLyBjYWxsIHNldFJvb3RMYXllck5lZWRzRGlzcGxheSgpIG9uIHRoZSBXZWJWaWV3LCB3aGlj
aCB3aWxsIGNhdXNlIExheWVyUmVuZGVyZXJDaHJvbWl1bQotICAgIC8vIHRvIHJlbmRlciBhIGZy
YW1lLgotICAgIC8vIFRoaXMgZnVuY3Rpb24gaGFzIG5vIGVmZmVjdCBvbiByb290IGxheWVycy4K
ICAgICBpZiAobV9kZWxlZ2F0ZSkKICAgICAgICAgbV9kZWxlZ2F0ZS0+bm90aWZ5U3luY1JlcXVp
cmVkKCk7CiB9CkBAIC0yNDksNiArMjQ1LDExMCBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNldENo
aWxkcmVuKGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgY2hpbGRyZW4pCiAg
ICAgICAgIGFkZENoaWxkKGNoaWxkcmVuW2ldKTsKIH0KIAordm9pZCBMYXllckNocm9taXVtOjpz
ZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCkKK3sKKyAgICBpZiAo
bV9hbmNob3JQb2ludCA9PSBhbmNob3JQb2ludCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fYW5j
aG9yUG9pbnQgPSBhbmNob3JQb2ludDsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCit2b2lk
IExheWVyQ2hyb21pdW06OnNldEFuY2hvclBvaW50WihmbG9hdCBhbmNob3JQb2ludFopCit7Cisg
ICAgaWYgKG1fYW5jaG9yUG9pbnRaID09IGFuY2hvclBvaW50WikKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fYW5jaG9yUG9pbnRaID0gYW5jaG9yUG9pbnRaOworICAgIHNldE5lZWRzQ29tbWl0KCk7
Cit9CisKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9y
JiBiYWNrZ3JvdW5kQ29sb3IpCit7CisgICAgaWYgKG1fYmFja2dyb3VuZENvbG9yID09IGJhY2tn
cm91bmRDb2xvcikKKyAgICAgICAgcmV0dXJuOworICAgIG1fYmFja2dyb3VuZENvbG9yID0gYmFj
a2dyb3VuZENvbG9yOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK3ZvaWQgTGF5ZXJDaHJv
bWl1bTo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCit7CisgICAgaWYgKG1f
bWFza3NUb0JvdW5kcyA9PSBtYXNrc1RvQm91bmRzKQorICAgICAgICByZXR1cm47CisgICAgbV9t
YXNrc1RvQm91bmRzID0gbWFza3NUb0JvdW5kczsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQor
Cit2b2lkIExheWVyQ2hyb21pdW06OnNldE1hc2tMYXllcihMYXllckNocm9taXVtKiBtYXNrTGF5
ZXIpCit7CisgICAgaWYgKG1fbWFza0xheWVyID09IG1hc2tMYXllcikKKyAgICAgICAgcmV0dXJu
OworICAgIG1fbWFza0xheWVyID0gbWFza0xheWVyOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9
CisKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQoreworICAg
IGlmIChtX29wYWNpdHkgPT0gb3BhY2l0eSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fb3BhY2l0
eSA9IG9wYWNpdHk7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwordm9pZCBMYXllckNocm9t
aXVtOjpzZXRPcGFxdWUoYm9vbCBvcGFxdWUpCit7CisgICAgaWYgKG1fb3BhcXVlID09IG9wYXF1
ZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fb3BhcXVlID0gb3BhcXVlOworICAgIHNldE5lZWRz
Q29tbWl0KCk7Cit9CisKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0UG9zaXRpb24oY29uc3QgRmxv
YXRQb2ludCYgcG9zaXRpb24pCit7CisgICAgaWYgKG1fcG9zaXRpb24gPT0gcG9zaXRpb24pCisg
ICAgICAgIHJldHVybjsKKyAgICBtX3Bvc2l0aW9uID0gcG9zaXRpb247CisgICAgc2V0TmVlZHND
b21taXQoKTsKK30KKwordm9pZCBMYXllckNocm9taXVtOjpzZXRTdWJsYXllclRyYW5zZm9ybShj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc3VibGF5ZXJUcmFuc2Zvcm0pCit7CisgICAgaWYg
KG1fc3VibGF5ZXJUcmFuc2Zvcm0gPT0gc3VibGF5ZXJUcmFuc2Zvcm0pCisgICAgICAgIHJldHVy
bjsKKyAgICBtX3N1YmxheWVyVHJhbnNmb3JtID0gc3VibGF5ZXJUcmFuc2Zvcm07CisgICAgc2V0
TmVlZHNDb21taXQoKTsKK30KKwordm9pZCBMYXllckNocm9taXVtOjpzZXRUcmFuc2Zvcm0oY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3sKKyAgICBpZiAobV90cmFuc2Zv
cm0gPT0gdHJhbnNmb3JtKQorICAgICAgICByZXR1cm47CisgICAgbV90cmFuc2Zvcm0gPSB0cmFu
c2Zvcm07CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwordm9pZCBMYXllckNocm9taXVtOjpz
ZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCit7CisgICAg
aWYgKG1fc2Nyb2xsUG9zaXRpb24gPT0gc2Nyb2xsUG9zaXRpb24pCisgICAgICAgIHJldHVybjsK
KyAgICBtX3Njcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb247CisgICAgc2V0TmVlZHNDb21t
aXQoKTsKK30KKwordm9pZCBMYXllckNocm9taXVtOjpzZXRTY3JvbGxhYmxlKGJvb2wgc2Nyb2xs
YWJsZSkKK3sKKyAgICBpZiAobV9zY3JvbGxhYmxlID09IHNjcm9sbGFibGUpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX3Njcm9sbGFibGUgPSBzY3JvbGxhYmxlOworICAgIHNldE5lZWRzQ29tbWl0
KCk7Cit9CisKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0RG91YmxlU2lkZWQoYm9vbCBkb3VibGVT
aWRlZCkKK3sKKyAgICBpZiAobV9kb3VibGVTaWRlZCA9PSBkb3VibGVTaWRlZCkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fZG91YmxlU2lkZWQgPSBkb3VibGVTaWRlZDsKKyAgICBzZXROZWVkc0Nv
bW1pdCgpOworfQorCiBMYXllckNocm9taXVtKiBMYXllckNocm9taXVtOjpwYXJlbnQoKSBjb25z
dAogewogICAgIHJldHVybiBtX3BhcmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCAxNzVmYzJm
OTA1OWEzMDgwMzdlMGVlODQ4YjlmYzEzMTI1MDllOGRkLi41ZTA1YzE1N2M3OTVjZTFlMDY0ZGYy
ZGY5NjQ0MDdhZGJmZTU1MGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC04Myw2NCArODMsNjQg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+Jik7CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+
JiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW47IH0KIAotICAgIHZvaWQgc2V0
QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQpIHsgbV9hbmNob3JQb2lu
dCA9IGFuY2hvclBvaW50OyBzZXROZWVkc0NvbW1pdCgpOyB9CisgICAgdm9pZCBzZXRBbmNob3JQ
b2ludChjb25zdCBGbG9hdFBvaW50Jik7CiAgICAgRmxvYXRQb2ludCBhbmNob3JQb2ludCgpIGNv
bnN0IHsgcmV0dXJuIG1fYW5jaG9yUG9pbnQ7IH0KIAotICAgIHZvaWQgc2V0QW5jaG9yUG9pbnRa
KGZsb2F0IGFuY2hvclBvaW50WikgeyBtX2FuY2hvclBvaW50WiA9IGFuY2hvclBvaW50Wjsgc2V0
TmVlZHNDb21taXQoKTsgfQorICAgIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0KTsKICAgICBm
bG9hdCBhbmNob3JQb2ludFooKSBjb25zdCB7IHJldHVybiBtX2FuY2hvclBvaW50WjsgfQogCi0g
ICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1fYmFja2dy
b3VuZENvbG9yID0gY29sb3I7IHNldE5lZWRzQ29tbWl0KCk7IH0KKyAgICB2b2lkIHNldEJhY2tn
cm91bmRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIENvbG9yIGJhY2tncm91bmRDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CiAKICAgICB2b2lkIHNldEJvdW5kcyhj
b25zdCBJbnRTaXplJik7CiAgICAgY29uc3QgSW50U2l6ZSYgYm91bmRzKCkgY29uc3QgeyByZXR1
cm4gbV9ib3VuZHM7IH0KICAgICB2aXJ0dWFsIEludFNpemUgY29udGVudEJvdW5kcygpIGNvbnN0
IHsgcmV0dXJuIGJvdW5kcygpOyB9CiAKLSAgICB2b2lkIHNldE1hc2tzVG9Cb3VuZHMoYm9vbCBt
YXNrc1RvQm91bmRzKSB7IG1fbWFza3NUb0JvdW5kcyA9IG1hc2tzVG9Cb3VuZHM7IHNldE5lZWRz
Q29tbWl0KCk7IH0KKyAgICB2b2lkIHNldE1hc2tzVG9Cb3VuZHMoYm9vbCk7CiAgICAgYm9vbCBt
YXNrc1RvQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrc1RvQm91bmRzOyB9CiAKICAgICB2
b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKLSAgICB2b2lkIHNldE1hc2tMYXllcihMYXllckNocm9t
aXVtKiBtYXNrTGF5ZXIpIHsgbV9tYXNrTGF5ZXIgPSBtYXNrTGF5ZXI7IHNldE5lZWRzQ29tbWl0
KCk7IH0KKyAgICB2b2lkIHNldE1hc2tMYXllcihMYXllckNocm9taXVtKik7CiAgICAgTGF5ZXJD
aHJvbWl1bSogbWFza0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrTGF5ZXIuZ2V0KCk7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
ZGlydHlSZWN0KTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgpIHsgc2V0TmVlZHNEaXNwbGF5
UmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBjb250ZW50Qm91bmRzKCkpKTsgfQogICAgIHZp
cnR1YWwgYm9vbCBuZWVkc0Rpc3BsYXkoKSBjb25zdCB7IHJldHVybiBtX25lZWRzRGlzcGxheTsg
fQogCi0gICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpIHsgbV9vcGFjaXR5ID0gb3Bh
Y2l0eTsgc2V0TmVlZHNDb21taXQoKTsgfQorICAgIHZvaWQgc2V0T3BhY2l0eShmbG9hdCk7CiAg
ICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhY2l0eTsgfQogCi0gICAgdm9p
ZCBzZXRPcGFxdWUoYm9vbCBvcGFxdWUpIHsgbV9vcGFxdWUgPSBvcGFxdWU7IHNldE5lZWRzQ29t
bWl0KCk7IH0KKyAgICB2b2lkIHNldE9wYXF1ZShib29sKTsKICAgICBib29sIG9wYXF1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fb3BhcXVlOyB9CiAKLSAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZs
b2F0UG9pbnQmIHBvc2l0aW9uKSB7IG1fcG9zaXRpb24gPSBwb3NpdGlvbjsgIHNldE5lZWRzQ29t
bWl0KCk7IH0KKyAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICBG
bG9hdFBvaW50IHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQogCi0gICAg
dm9pZCBzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtKSB7IG1fc3VibGF5ZXJUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07IHNldE5lZWRzQ29tbWl0
KCk7IH0KKyAgICB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4Jik7CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1YmxheWVyVHJhbnNm
b3JtKCkgY29uc3QgeyByZXR1cm4gbV9zdWJsYXllclRyYW5zZm9ybTsgfQogCiAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggem9vbUFuaW1hdG9yVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gVHJh
bnNmb3JtYXRpb25NYXRyaXgoKTsgfQogCi0gICAgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkgeyBtX3RyYW5zZm9ybSA9IHRyYW5zZm9ybTsg
c2V0TmVlZHNDb21taXQoKTsgfQorICAgIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4Jik7CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9CiAKICAgICBjb25zdCBJbnRSZWN0JiB2
aXNpYmxlTGF5ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlTGF5ZXJSZWN0OyB9CiAg
ICAgdm9pZCBzZXRWaXNpYmxlTGF5ZXJSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVMYXllclJl
Y3QpIHsgbV92aXNpYmxlTGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdDsgfQogCisgICAgdm9p
ZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpOwogICAgIGNvbnN0IEludFBvaW50
JiBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUG9zaXRpb247IH0KLSAg
ICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikg
eyBtX3Njcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb247IH0KIAorICAgIHZvaWQgc2V0U2Ny
b2xsYWJsZShib29sKTsKICAgICBib29sIHNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Nj
cm9sbGFibGU7IH0KLSAgICB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCBzY3JvbGxhYmxlKSB7IG1f
c2Nyb2xsYWJsZSA9IHRydWU7ICBzZXROZWVkc0NvbW1pdCgpOyB9CiAKICAgICBJbnRTaXplIHNj
cm9sbERlbHRhKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9CiAKICAgICBmbG9hdCBwYWdl
U2NhbGVEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIDE7IH0KIAorICAgIHZvaWQgc2V0RG91YmxlU2lk
ZWQoYm9vbCk7CiAgICAgYm9vbCBkb3VibGVTaWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZG91Ymxl
U2lkZWQ7IH0KLSAgICB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wgZG91YmxlU2lkZWQpIHsgbV9k
b3VibGVTaWRlZCA9IGRvdWJsZVNpZGVkOyBzZXROZWVkc0NvbW1pdCgpOyB9CiAKICAgICB2b2lk
IHNldFByZXNlcnZlczNEKGJvb2wgcHJlc2VydmUzRCkgeyBtX3ByZXNlcnZlczNEID0gcHJlc2Vy
dmUzRDsgfQogICAgIGJvb2wgcHJlc2VydmVzM0QoKSBjb25zdCB7IHJldHVybiBtX3ByZXNlcnZl
czNEOyB9CkBAIC0xNTUsNyArMTU1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXREZWxlZ2F0
ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKSB7IG1fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsgfQog
Ci0gICAgdm9pZCBzZXRSZXBsaWNhTGF5ZXIoTGF5ZXJDaHJvbWl1bSogbGF5ZXIpIHsgbV9yZXBs
aWNhTGF5ZXIgPSBsYXllcjsgfQorICAgIHZvaWQgc2V0UmVwbGljYUxheWVyKExheWVyQ2hyb21p
dW0qIGxheWVyKSB7IG1fcmVwbGljYUxheWVyID0gbGF5ZXI7IHNldE5lZWRzQ29tbWl0KCk7IH0K
ICAgICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcGxp
Y2FMYXllci5nZXQoKTsgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVlZCB0
byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhv
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0LmNwcAppbmRleCBiYzZhMmE0OTc4MjhlYjI5MWU5ODk3ZWIxYmIx
MjIyMDcwYTRhMmEzLi5jZWViZGVkMTJjNGY2NTc5NThjYWYxM2NiOWU3YjcyMTExZjY1NDU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25D
b21wb3NpdGVkQ29udGVudEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1
bS5oIgogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCisjaW5jbHVkZSAiY2MvQ0NM
YXllclRyZWVIb3N0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTE5LDYgKzEyMCw5
IEBAIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojpub3RpZnlBbmltYXRpb25TdGFydGVk
KGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBkb3ViCiAKIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0Ojpub3RpZnlTeW5jUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopCiB7CisgICAgQ0NM
YXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0ID0gbV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxh
eWVyKCktPmxheWVyVHJlZUhvc3QoKTsKKyAgICBpZiAobGF5ZXJUcmVlSG9zdCkKKyAgICAgICAg
bGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXQoKTsKIH0KIAogdm9pZCBOb25Db21wb3NpdGVk
Q29udGVudEhvc3Q6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEludFJl
Y3QmIGNsaXBSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAppbmRl
eCA4MGE3MGE5ZGJkMzE2ZWFhMGJlZDI0OWFlOTlhZDM4OTllOGY0MDlhLi4yM2E5YTFiMTc5NzI2
MGNkOTQzMzc2NTY4Mjg1MDQ4Mzc5OGY3NTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVk
Q29udGVudEhvc3QuaApAQCAtNTksOSArNTksMTAgQEAgcHVibGljOgogICAgIHZvaWQgcHJvdGVj
dFZpc2libGVUaWxlVGV4dHVyZXMoKTsKICAgICBHcmFwaGljc0xheWVyKiB0b3BMZXZlbFJvb3RM
YXllcigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGhpY3NMYXllci5nZXQoKTsgfQogCi1wcml2YXRl
OgorcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdChQYXNz
T3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBjb250ZW50UGFpbnQpOwogCitwcml2YXRlOgog
ICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0
aW9uU3RhcnRlZChjb25zdCBHcmFwaGljc0xheWVyKiwgZG91YmxlIHRpbWUpOwogICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlTeW5jUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRl
eCBmNGE0YTMyNzk3MWE5ZmYyNzFkYzRmNjg4YmJjOTdlMDk4YzkzMjBiLi5iMzE3ODc3ZDA1NjA2
ZjM2ZDFhODZjZmYxNzg4YjgyYzc3MDhhOThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2lu
Y2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKIAogI2luY2x1ZGUgIkNDTGF5ZXJUcmVlVGVzdENvbW1v
bi5oIgorI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCisjaW5jbHVkZSAiTm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0LmgiCiAjaW5jbHVkZSA8Z21vY2svZ21vY2suaD4KICNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgogCkBAIC01Miw2ICs1NCwzMCBAQCBwdWJsaWM6CiAgICAgTU9DS19N
RVRIT0QwKG5vdGlmeVN5bmNSZXF1aXJlZCwgdm9pZCgpKTsKIH07CiAKK2NsYXNzIE1vY2tMYXll
clBhaW50ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllclBhaW50ZXJDaHJvbWl1bSB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3Qm
KSB7IH0KK307CisKK2NsYXNzIE1vY2tOb25Db21wb3NpdGVkQ29udGVudEhvc3QgOiBwdWJsaWMg
Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0
cjxNb2NrTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBNb2NrTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KTsKKyAgICB9
CisKKyAgICBNT0NLX01FVEhPRDEobm90aWZ5U3luY1JlcXVpcmVkLCB2b2lkKGNvbnN0IEdyYXBo
aWNzTGF5ZXIqKSk7CisKK3ByaXZhdGU6CisgICAgTW9ja05vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dCgpCisgICAgICAgIDogTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KGFkb3B0UHRyKG5ldyBNb2Nr
TGF5ZXJQYWludGVyQ2hyb21pdW0oKSkpCisgICAgeworICAgICAgICBtX3Njcm9sbExheWVyID0g
R3JhcGhpY3NMYXllcjo6Y3JlYXRlKDApOworICAgICAgICBzZXRTY3JvbGxMYXllcihtX3Njcm9s
bExheWVyLmdldCgpKTsKKyAgICB9CisgICAgT3duUHRyPEdyYXBoaWNzTGF5ZXI+IG1fc2Nyb2xs
TGF5ZXI7Cit9OworCiBjbGFzcyBMYXllckNocm9taXVtV2l0aEluc3RydW1lbnRlZERlc3RydWN0
b3IgOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGF5ZXJD
aHJvbWl1bVdpdGhJbnN0cnVtZW50ZWREZXN0cnVjdG9yKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdh
dGUpCkBAIC02MjAsMTAgKzY0Niw4IEBAIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgY2hlY2tQ
cm9wZXJ0eUNoYW5nZUNhdXNlc0NvcnJlY3RCZWhhdmlvcikKICAgICBFWEVDVVRFX0FORF9WRVJJ
RllfTk9USUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVnYXRlLCAwLCB0ZXN0TGF5ZXItPnNldERl
bGVnYXRlKCZtb2NrRGVsZWdhdGUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfTk9USUZZX1NZ
TkNfQkVIQVZJT1IobW9ja0RlbGVnYXRlLCAwLCB0ZXN0TGF5ZXItPnNldE5hbWUoIlRlc3QgTGF5
ZXIiKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JFSEFWSU9SKG1vY2tE
ZWxlZ2F0ZSwgMCwgdGVzdExheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwg
NDAsIDUwKSkpOwotICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklPUiht
b2NrRGVsZWdhdGUsIDAsIHRlc3RMYXllci0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoMTAs
IDEwKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2Nr
RGVsZWdhdGUsIDAsIHRlc3RMYXllci0+c2V0VXNlc0xheWVyQ2xpcHBpbmcodHJ1ZSkpOwogICAg
IEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDAs
IHRlc3RMYXllci0+c2V0SXNOb25Db21wb3NpdGVkQ29udGVudCh0cnVlKSk7Ci0gICAgRVhFQ1VU
RV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JFSEFWSU9SKG1vY2tEZWxlZ2F0ZSwgMCwgdGVzdExh
eWVyLT5zZXRSZXBsaWNhTGF5ZXIoZHVtbXlMYXllci5nZXQoKSkpOwogICAgIEVYRUNVVEVfQU5E
X1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDAsIHRlc3RMYXllci0+
c2V0RHJhd09wYWNpdHkoMC41ZikpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lO
Q19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDAsIHRlc3RMYXllci0+c2V0Q2xpcFJlY3QoSW50UmVj
dCgzLCAzLCA4LCA4KSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhB
VklPUihtb2NrRGVsZWdhdGUsIDAsIHRlc3RMYXllci0+c2V0VGFyZ2V0UmVuZGVyU3VyZmFjZSgw
KSk7CkBAIC02MzQsMTkgKzY1OCwyMSBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGNoZWNr
UHJvcGVydHlDaGFuZ2VDYXVzZXNDb3JyZWN0QmVoYXZpb3IpCiAKICAgICAvLyBOZXh0LCB0ZXN0
IHByb3BlcnRpZXMgdGhhdCBzaG91bGQgY2FsbCBzZXROZWVkc0NvbW1pdCAoYnV0IG5vdCBzZXRO
ZWVkc0Rpc3BsYXkpCiAgICAgLy8gVGhlc2UgcHJvcGVydGllcyBzaG91bGQgaW5kaXJlY3RseSBj
YWxsIG5vdGlmeVN5bmNSZXF1aXJlZCwgYnV0IHRoZSBuZWVkc0Rpc3BsYXkgZmxhZyBzaG91bGQg
bm90IGNoYW5nZS4KLSAgICAvLyBOb3RlIHRoYXQgZm9yIG1hbnkgb2YgdGhlc2UgcHJvcGVydGll
cyBpdCBpcyBpbXBvcnRhbnQgdG8gdGVzdCBzZXR0aW5nIHRoZSBwcm9wZXJ0eSB0byBhIHZhbHVl
IHRoYXQKLSAgICAvLyBpcyBkaWZmZXJlbnQgdGhhbiB3aGF0IHRoZSBjb25zdHJ1Y3RvciBpbml0
aWFsaXplcyBpdCB0by4KKyAgICAvLyBBbGwgcHJvcGVydGllcyBuZWVkIHRvIGJlIHNldCB0byBu
ZXcgdmFsdWVzIGluIG9yZGVyIGZvciBzZXROZWVkc0NvbW1pdAorICAgIC8vIHRvIGJlIGNhbGxl
ZC4KICAgICBFWEVDVVRFX0FORF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVn
YXRlLCAxLCB0ZXN0TGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMS4yM2YsIDQuNTZm
KSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVs
ZWdhdGUsIDEsIHRlc3RMYXllci0+c2V0QW5jaG9yUG9pbnRaKDAuN2YpKTsKICAgICBFWEVDVVRF
X0FORF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVnYXRlLCAxLCB0ZXN0TGF5
ZXItPnNldEJhY2tncm91bmRDb2xvcihDb2xvcigwLjRmLCAwLjRmLCAwLjRmKSkpOwogICAgIEVY
RUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDEsIHRl
c3RMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZ
X05PVElGWV9TWU5DX0JFSEFWSU9SKG1vY2tEZWxlZ2F0ZSwgMSwgdGVzdExheWVyLT5zZXRNYXNr
TGF5ZXIoZHVtbXlMYXllci5nZXQoKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllf
U1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDEsIHRlc3RMYXllci0+c2V0T3BhY2l0eSgwLjVm
KSk7Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JFSEFWSU9SKG1vY2tEZWxl
Z2F0ZSwgMSwgdGVzdExheWVyLT5zZXRPcGFxdWUoZmFsc2UpKTsKKyAgICBFWEVDVVRFX0FORF9W
RVJJRllfTk9USUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVnYXRlLCAxLCB0ZXN0TGF5ZXItPnNl
dE9wYXF1ZSh0cnVlKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JFSEFW
SU9SKG1vY2tEZWxlZ2F0ZSwgMSwgdGVzdExheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDQu
MGYsIDkuMGYpKSk7Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JFSEFWSU9S
KG1vY2tEZWxlZ2F0ZSwgMSwgdGVzdExheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JF
SEFWSU9SKG1vY2tEZWxlZ2F0ZSwgMSwgdGVzdExheWVyLT5zZXRSZXBsaWNhTGF5ZXIoZHVtbXlM
YXllci5nZXQoKSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklP
Uihtb2NrRGVsZWdhdGUsIDEsIHRlc3RMYXllci0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0oVHJhbnNm
b3JtYXRpb25NYXRyaXgoMCwgMCwgMCwgMCwgMCwgMCkpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJ
RllfTk9USUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVnYXRlLCAxLCB0ZXN0TGF5ZXItPnNldFNj
cm9sbGFibGUodHJ1ZSkpOwotICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhB
VklPUihtb2NrRGVsZWdhdGUsIDEsIHRlc3RMYXllci0+c2V0VHJhbnNmb3JtKFRyYW5zZm9ybWF0
aW9uTWF0cml4KCkpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJ
T1IobW9ja0RlbGVnYXRlLCAxLCB0ZXN0TGF5ZXItPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50
KDEwLCAxMCkpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJT1Io
bW9ja0RlbGVnYXRlLCAxLCB0ZXN0TGF5ZXItPnNldFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgwLCAwLCAwLCAwLCAwLCAwKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllf
U1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDEsIHRlc3RMYXllci0+c2V0RG91YmxlU2lkZWQo
ZmFsc2UpKTsKIAogICAgIC8vIFRoZSBhYm92ZSB0ZXN0cyBzaG91bGQgbm90IGhhdmUgY2F1c2Vk
IGEgY2hhbmdlIHRvIHRoZSBuZWVkc0Rpc3BsYXkgZmxhZy4KQEAgLTY2MCw0ICs2ODYsMTggQEAg
VEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBjaGVja1Byb3BlcnR5Q2hhbmdlQ2F1c2VzQ29ycmVj
dEJlaGF2aW9yKQogICAgIC8vIEZJWE1FOiBuZWVkIHRvIGFkZCBhIHRlc3QgZm9yIHNldExheWVy
VHJlZUhvc3Qgd2l0aCBhIG5vbi1udWxsIHN0dWJiZWQgQ0NMYXllclRyZWVIb3N0LgogfQogCitU
RVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGNoZWNrTm9uQ29tcG9zaXRlZENvbnRlbnRQcm9wZXJ0
eUNoYW5nZUNhdXNlc0NvbW1pdCkKK3sKKyAgICBPd25QdHI8TW9ja05vbkNvbXBvc2l0ZWRDb250
ZW50SG9zdD4gbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTW9ja05vbkNvbXBvc2l0ZWRDb250
ZW50SG9zdDo6Y3JlYXRlKCk7CisKKyAgICBHcmFwaGljc0xheWVyKiByb290TGF5ZXIgPSBub25D
b21wb3NpdGVkQ29udGVudEhvc3QtPnRvcExldmVsUm9vdExheWVyKCk7CisKKyAgICBFWFBFQ1Rf
Q0FMTCgqbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LCBub3RpZnlTeW5jUmVxdWlyZWQoXykpLlRp
bWVzKDEpOworICAgIHJvb3RMYXllci0+cGxhdGZvcm1MYXllcigpLT5zZXRTY3JvbGxQb3NpdGlv
bihJbnRQb2ludCgxLCAxKSk7CisgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMo
bm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmdldCgpKTsKKworICAgIEVYUEVDVF9DQUxMKCpub25D
b21wb3NpdGVkQ29udGVudEhvc3QsIG5vdGlmeVN5bmNSZXF1aXJlZChfKSkuVGltZXMoQXRMZWFz
dCgxKSk7CisgICAgbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRWaWV3cG9ydChJbnRTaXpl
KDMwLCAzMCksIEludFNpemUoMjAsIDIwKSwgSW50UG9pbnQoMTAsIDEwKSwgMSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117930</attachid>
            <date>2011-12-05 13:19:29 -0800</date>
            <delta_ts>2011-12-06 15:26:30 -0800</delta_ts>
            <desc>Remove GraphicsLayerChromium checks</desc>
            <filename>bug-73711-20111205131928.patch</filename>
            <type>text/plain</type>
            <size>22480</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxOTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThjMjI5ZDE0Njc4NWJm
YmY0OTI2N2JiZmI3YjhiYjU4M2ZhN2FiZS4uMDk2MmUwNzY4MWMxMzg1MGZiZDFmNDZmOTU0YmEw
MzBmYjVjMWQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDExLTEyLTA1ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBzZXRO
ZWVkc0NvbW1pdCBvbiBub24tY29tcG9zaXRlZCBob3N0IGxheWVycyBzaG91bGQgdHJpZ2dlciBj
b21taXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcz
NzExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGlw
ZSBub24tY29tcG9zaXRlZCBjb250ZW50IGhvc3Qgc3luY3MgdG8gc2V0TmVlZHNDb21taXQuCisK
KyAgICAgICAgU2luY2Ugbm93IHRoZSBOb25Db21wb3NpdGVkQ29udGVudEhvc3QgZ2VuZXJhdGVz
IHNldE5lZWRzQ29tbWl0LCBkb24ndAorICAgICAgICBjYWxsIGl0IHVubmVjZXNzYXJpbHksIGUu
Zy4gY2FsbGluZyBzZXRCYWNrZ3JvdW5kQ29sb3IgdG8gdGhlIHNhbWUKKyAgICAgICAgY29sb3Ig
ZWFjaCBmcmFtZSBzaG91bGQgbm90IHJldHJpZ2dlciBtb3JlIGNvbW1pdHMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRBbmNob3JQb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldFRyYW5zZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENoaWxkcmVuVHJh
bnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TWFz
a3NUb0JvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNl
dEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21p
dW06OmNsZWFyQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRPcGFjaXR5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyQ2hyb21pdW06OnNldE5lZWRzQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OnNldEFuY2hvclBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21p
dW06OnNldEFuY2hvclBvaW50Wik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpz
ZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0
TWFza3NUb0JvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRNYXNr
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0T3BhY2l0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRPcGFxdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bTo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bTo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21p
dW06OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06
OnNldFNjcm9sbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0RG91
YmxlU2lkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnNldFJlcGxpY2FMYXll
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dDo6bm90aWZ5U3luY1JlcXVpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaDoKKwogMjAxMS0xMi0wNCAgQW5kcmVhcyBL
bGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ1NTVmFsdWVQb29sOiBJbmxpbmUg
dHJpdmlhbCBnZXR0ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA0YzcyMWJiMzRl
YWRhNGI0OWU1NDIwZjMxYTc2NDBjY2U4ZWI1ZmZiLi5hZWUzYzk3NjUzMWM5ZTk5NTE4NzEyMTZj
Mzc3N2M0YTM4YzkzNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDExLTEyLTA1ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgW2Nocm9taXVtXSBzZXROZWVkc0NvbW1pdCBvbiBub24tY29tcG9zaXRlZCBob3N0IGxh
eWVycyBzaG91bGQgdHJpZ2dlciBjb21taXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTczNzExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHNvbWUgdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgbW9kaWZ5
aW5nIHRoZSBub25jb21wb3NpdGVkIGNvbnRlbnQKKyAgICAgICAgaG9zdCB0cmlnZ2VycyBjb21t
aXRzLgorCisgICAgICAgIFByb3BlcnRpZXMgdGhhdCB0cmlnZ2VyIHNldE5lZWRzQ29tbWl0IHNo
b3VsZCBvbmx5IGRvIHNvIHdoZW4gdGhlCisgICAgICAgIHByb3BlcnR5IGNoYW5nZXMuIEFkZGl0
aW9uYWxseSwgbWFrZSBtb3JlIHByb3BlcnR5IGNoYW5nZXMgcHJvcGVybHkKKyAgICAgICAgdHJp
Z2dlciBjb21taXRzLgorCisgICAgICAgICogdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgor
CiAyMDExLTEyLTAyICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTAxOTA2LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dy
YXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNTVlOGFkOTg1MmQ0NGU1MDJiYWNlNjM0NDg2
MTRmYjcyYjFjYTUzZi4uM2YxNzdjZjI5MGNiYjlhYWE4MTA0NWJhM2NlODQ4Mjg4NWY0YThhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3Jh
cGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC0xNzMsOSArMTczLDYg
QEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50KQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0QW5jaG9yUG9pbnQo
Y29uc3QgRmxvYXRQb2ludDNEJiBwb2ludCkKIHsKLSAgICBpZiAocG9pbnQgPT0gbV9hbmNob3JQ
b2ludCkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0QW5jaG9yUG9p
bnQocG9pbnQpOwogICAgIHVwZGF0ZUFuY2hvclBvaW50KCk7CiB9CkBAIC0xOTQsMTggKzE5MSwx
MiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCiAgICAgLy8gQ2FsbCB0aGlzIG1ldGhvZCBmaXJz
dCB0byBhc3NpZ24gY29udGVudHMgc2NhbGUgdG8gTGF5ZXJDaHJvbWl1bSBzbyB0aGUgcGFpbnRl
ciBjYW4gYXBwbHkgdGhlIHNjYWxlIHRyYW5zZm9ybS4KICAgICB1cGRhdGVDb250ZW50c1NjYWxl
KCk7CiAKLSAgICBpZiAodHJhbnNmb3JtID09IG1fdHJhbnNmb3JtKQotICAgICAgICByZXR1cm47
Ci0KICAgICBHcmFwaGljc0xheWVyOjpzZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKICAgICB1cGRh
dGVUcmFuc2Zvcm0oKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENoaWxk
cmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCiB7Ci0g
ICAgaWYgKHRyYW5zZm9ybSA9PSBtX2NoaWxkcmVuVHJhbnNmb3JtKQotICAgICAgICByZXR1cm47
Ci0KICAgICBHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlblRyYW5zZm9ybSh0cmFuc2Zvcm0pOwog
ICAgIHVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCk7CiB9CkBAIC0yMjEsOSArMjEyLDYgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldFByZXNlcnZlczNEKGJvb2wgcHJlc2VydmVzM0Qp
CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRNYXNrc1RvQm91bmRzKGJvb2wgbWFz
a3NUb0JvdW5kcykKIHsKLSAgICBpZiAobWFza3NUb0JvdW5kcyA9PSBtX21hc2tzVG9Cb3VuZHMp
Ci0gICAgICAgIHJldHVybjsKLQogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tzVG9Cb3VuZHMo
bWFza3NUb0JvdW5kcyk7CiAgICAgdXBkYXRlTWFza3NUb0JvdW5kcygpOwogfQpAQCAtMjM5LDkg
KzIyNyw2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXREcmF3c0NvbnRlbnQoYm9v
bCBkcmF3c0NvbnRlbnQpCiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRCYWNrZ3Jv
dW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIGlmIChtX2JhY2tncm91bmRDb2xv
clNldCAmJiBtX2JhY2tncm91bmRDb2xvciA9PSBjb2xvcikKLSAgICAgICAgcmV0dXJuOwotCiAg
ICAgR3JhcGhpY3NMYXllcjo6c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKIAogICAgIG1fY29u
dGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvciA9IHRydWU7CkBAIC0yNTAsMTggKzIzNSwxMiBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmNsZWFyQmFja2dyb3Vu
ZENvbG9yKCkKIHsKLSAgICBpZiAoIW1fYmFja2dyb3VuZENvbG9yU2V0KQotICAgICAgICByZXR1
cm47Ci0KICAgICBHcmFwaGljc0xheWVyOjpjbGVhckJhY2tncm91bmRDb2xvcigpOwogICAgIG1f
Y29udGVudHNMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKHN0YXRpY19jYXN0PFJHQkEzMj4oMCkp
OwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNPcGFxdWUoYm9v
bCBvcGFxdWUpCiB7Ci0gICAgaWYgKG1fY29udGVudHNPcGFxdWUgPT0gb3BhcXVlKQotICAgICAg
ICByZXR1cm47Ci0KICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c09wYXF1ZShvcGFxdWUp
OwogICAgIHVwZGF0ZUNvbnRlbnRzT3BhcXVlKCk7CiB9CkBAIC0yODEsOSArMjYwLDYgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE1hc2tMYXllcihHcmFwaGljc0xheWVyKiBtYXNr
TGF5ZXIpCiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRCYWNrZmFjZVZpc2liaWxp
dHkoYm9vbCB2aXNpYmxlKQogewotICAgIGlmIChtX2JhY2tmYWNlVmlzaWJpbGl0eSA9PSB2aXNp
YmxlKQotICAgICAgICByZXR1cm47Ci0KICAgICBHcmFwaGljc0xheWVyOjpzZXRCYWNrZmFjZVZp
c2liaWxpdHkodmlzaWJsZSk7CiAgICAgdXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCk7CiB9CkBA
IC0yOTEsMTAgKzI2Nyw2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRCYWNrZmFj
ZVZpc2liaWxpdHkoYm9vbCB2aXNpYmxlKQogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNl
dE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKIHsKICAgICBmbG9hdCBjbGFtcGVkT3BhY2l0eSA9IG1h
eChtaW4ob3BhY2l0eSwgMS4wZiksIDAuMGYpOwotCi0gICAgaWYgKG1fb3BhY2l0eSA9PSBjbGFt
cGVkT3BhY2l0eSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0T3Bh
Y2l0eShjbGFtcGVkT3BhY2l0eSk7CiAgICAgcHJpbWFyeUxheWVyKCktPnNldE9wYWNpdHkob3Bh
Y2l0eSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDBkNzVmZGJmMWFkNjkwMjJiYzFi
ZmQ5ZjJkZDVlNzNmZDZlZTA1MzYuLjQ4ZGUwNDgzZWQzMjY0NTI4YjhhMDFkNzAwZTc0YTY5MGQ4
OGU0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC0xMjAsMTAgKzEyMCw2IEBAIHZvaWQg
TGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiAK
IHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNDb21taXQoKQogewotICAgIC8vIENhbGwgbm90
aWZ5U3luY1JlcXVpcmVkKCksIHdoaWNoIGZvciBub24tcm9vdCBsYXllcnMgcGx1bWJzIHRocm91
Z2ggdG8KLSAgICAvLyBjYWxsIHNldFJvb3RMYXllck5lZWRzRGlzcGxheSgpIG9uIHRoZSBXZWJW
aWV3LCB3aGljaCB3aWxsIGNhdXNlIExheWVyUmVuZGVyZXJDaHJvbWl1bQotICAgIC8vIHRvIHJl
bmRlciBhIGZyYW1lLgotICAgIC8vIFRoaXMgZnVuY3Rpb24gaGFzIG5vIGVmZmVjdCBvbiByb290
IGxheWVycy4KICAgICBpZiAobV9kZWxlZ2F0ZSkKICAgICAgICAgbV9kZWxlZ2F0ZS0+bm90aWZ5
U3luY1JlcXVpcmVkKCk7CiB9CkBAIC0yNDksNiArMjQ1LDExMCBAQCB2b2lkIExheWVyQ2hyb21p
dW06OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgY2hp
bGRyZW4pCiAgICAgICAgIGFkZENoaWxkKGNoaWxkcmVuW2ldKTsKIH0KIAordm9pZCBMYXllckNo
cm9taXVtOjpzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCkKK3sK
KyAgICBpZiAobV9hbmNob3JQb2ludCA9PSBhbmNob3JQb2ludCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fYW5jaG9yUG9pbnQgPSBhbmNob3JQb2ludDsKKyAgICBzZXROZWVkc0NvbW1pdCgpOwor
fQorCit2b2lkIExheWVyQ2hyb21pdW06OnNldEFuY2hvclBvaW50WihmbG9hdCBhbmNob3JQb2lu
dFopCit7CisgICAgaWYgKG1fYW5jaG9yUG9pbnRaID09IGFuY2hvclBvaW50WikKKyAgICAgICAg
cmV0dXJuOworICAgIG1fYW5jaG9yUG9pbnRaID0gYW5jaG9yUG9pbnRaOworICAgIHNldE5lZWRz
Q29tbWl0KCk7Cit9CisKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dyb3VuZENvbG9yKGNv
bnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCit7CisgICAgaWYgKG1fYmFja2dyb3VuZENvbG9y
ID09IGJhY2tncm91bmRDb2xvcikKKyAgICAgICAgcmV0dXJuOworICAgIG1fYmFja2dyb3VuZENv
bG9yID0gYmFja2dyb3VuZENvbG9yOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK3ZvaWQg
TGF5ZXJDaHJvbWl1bTo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCit7Cisg
ICAgaWYgKG1fbWFza3NUb0JvdW5kcyA9PSBtYXNrc1RvQm91bmRzKQorICAgICAgICByZXR1cm47
CisgICAgbV9tYXNrc1RvQm91bmRzID0gbWFza3NUb0JvdW5kczsKKyAgICBzZXROZWVkc0NvbW1p
dCgpOworfQorCit2b2lkIExheWVyQ2hyb21pdW06OnNldE1hc2tMYXllcihMYXllckNocm9taXVt
KiBtYXNrTGF5ZXIpCit7CisgICAgaWYgKG1fbWFza0xheWVyID09IG1hc2tMYXllcikKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fbWFza0xheWVyID0gbWFza0xheWVyOworICAgIHNldE5lZWRzQ29t
bWl0KCk7Cit9CisKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5
KQoreworICAgIGlmIChtX29wYWNpdHkgPT0gb3BhY2l0eSkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fb3BhY2l0eSA9IG9wYWNpdHk7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwordm9pZCBM
YXllckNocm9taXVtOjpzZXRPcGFxdWUoYm9vbCBvcGFxdWUpCit7CisgICAgaWYgKG1fb3BhcXVl
ID09IG9wYXF1ZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fb3BhcXVlID0gb3BhcXVlOworICAg
IHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0UG9zaXRpb24o
Y29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pCit7CisgICAgaWYgKG1fcG9zaXRpb24gPT0gcG9z
aXRpb24pCisgICAgICAgIHJldHVybjsKKyAgICBtX3Bvc2l0aW9uID0gcG9zaXRpb247CisgICAg
c2V0TmVlZHNDb21taXQoKTsKK30KKwordm9pZCBMYXllckNocm9taXVtOjpzZXRTdWJsYXllclRy
YW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc3VibGF5ZXJUcmFuc2Zvcm0pCit7
CisgICAgaWYgKG1fc3VibGF5ZXJUcmFuc2Zvcm0gPT0gc3VibGF5ZXJUcmFuc2Zvcm0pCisgICAg
ICAgIHJldHVybjsKKyAgICBtX3N1YmxheWVyVHJhbnNmb3JtID0gc3VibGF5ZXJUcmFuc2Zvcm07
CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwordm9pZCBMYXllckNocm9taXVtOjpzZXRUcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3sKKyAgICBpZiAo
bV90cmFuc2Zvcm0gPT0gdHJhbnNmb3JtKQorICAgICAgICByZXR1cm47CisgICAgbV90cmFuc2Zv
cm0gPSB0cmFuc2Zvcm07CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwordm9pZCBMYXllckNo
cm9taXVtOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24p
Cit7CisgICAgaWYgKG1fc2Nyb2xsUG9zaXRpb24gPT0gc2Nyb2xsUG9zaXRpb24pCisgICAgICAg
IHJldHVybjsKKyAgICBtX3Njcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb247CisgICAgc2V0
TmVlZHNDb21taXQoKTsKK30KKwordm9pZCBMYXllckNocm9taXVtOjpzZXRTY3JvbGxhYmxlKGJv
b2wgc2Nyb2xsYWJsZSkKK3sKKyAgICBpZiAobV9zY3JvbGxhYmxlID09IHNjcm9sbGFibGUpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX3Njcm9sbGFibGUgPSBzY3JvbGxhYmxlOworICAgIHNldE5l
ZWRzQ29tbWl0KCk7Cit9CisKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0RG91YmxlU2lkZWQoYm9v
bCBkb3VibGVTaWRlZCkKK3sKKyAgICBpZiAobV9kb3VibGVTaWRlZCA9PSBkb3VibGVTaWRlZCkK
KyAgICAgICAgcmV0dXJuOworICAgIG1fZG91YmxlU2lkZWQgPSBkb3VibGVTaWRlZDsKKyAgICBz
ZXROZWVkc0NvbW1pdCgpOworfQorCiBMYXllckNocm9taXVtKiBMYXllckNocm9taXVtOjpwYXJl
bnQoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRl
eCAxNzVmYzJmOTA1OWEzMDgwMzdlMGVlODQ4YjlmYzEzMTI1MDllOGRkLi41ZTA1YzE1N2M3OTVj
ZTFlMDY0ZGYyZGY5NjQ0MDdhZGJmZTU1MGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC04Myw2
NCArODMsNjQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+Jik7CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+JiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW47IH0KIAotICAg
IHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQpIHsgbV9h
bmNob3JQb2ludCA9IGFuY2hvclBvaW50OyBzZXROZWVkc0NvbW1pdCgpOyB9CisgICAgdm9pZCBz
ZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50Jik7CiAgICAgRmxvYXRQb2ludCBhbmNob3JQ
b2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5jaG9yUG9pbnQ7IH0KIAotICAgIHZvaWQgc2V0QW5j
aG9yUG9pbnRaKGZsb2F0IGFuY2hvclBvaW50WikgeyBtX2FuY2hvclBvaW50WiA9IGFuY2hvclBv
aW50Wjsgc2V0TmVlZHNDb21taXQoKTsgfQorICAgIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0
KTsKICAgICBmbG9hdCBhbmNob3JQb2ludFooKSBjb25zdCB7IHJldHVybiBtX2FuY2hvclBvaW50
WjsgfQogCi0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7
IG1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7IHNldE5lZWRzQ29tbWl0KCk7IH0KKyAgICB2b2lk
IHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIENvbG9yIGJhY2tncm91bmRD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CiAKICAgICB2b2lkIHNl
dEJvdW5kcyhjb25zdCBJbnRTaXplJik7CiAgICAgY29uc3QgSW50U2l6ZSYgYm91bmRzKCkgY29u
c3QgeyByZXR1cm4gbV9ib3VuZHM7IH0KICAgICB2aXJ0dWFsIEludFNpemUgY29udGVudEJvdW5k
cygpIGNvbnN0IHsgcmV0dXJuIGJvdW5kcygpOyB9CiAKLSAgICB2b2lkIHNldE1hc2tzVG9Cb3Vu
ZHMoYm9vbCBtYXNrc1RvQm91bmRzKSB7IG1fbWFza3NUb0JvdW5kcyA9IG1hc2tzVG9Cb3VuZHM7
IHNldE5lZWRzQ29tbWl0KCk7IH0KKyAgICB2b2lkIHNldE1hc2tzVG9Cb3VuZHMoYm9vbCk7CiAg
ICAgYm9vbCBtYXNrc1RvQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrc1RvQm91bmRzOyB9
CiAKICAgICB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgY29uc3QgU3RyaW5nJiBu
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKLSAgICB2b2lkIHNldE1hc2tMYXllcihM
YXllckNocm9taXVtKiBtYXNrTGF5ZXIpIHsgbV9tYXNrTGF5ZXIgPSBtYXNrTGF5ZXI7IHNldE5l
ZWRzQ29tbWl0KCk7IH0KKyAgICB2b2lkIHNldE1hc2tMYXllcihMYXllckNocm9taXVtKik7CiAg
ICAgTGF5ZXJDaHJvbWl1bSogbWFza0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrTGF5ZXIu
Z2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgZGlydHlSZWN0KTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgpIHsgc2V0TmVl
ZHNEaXNwbGF5UmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBjb250ZW50Qm91bmRzKCkpKTsg
fQogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0Rpc3BsYXkoKSBjb25zdCB7IHJldHVybiBtX25lZWRz
RGlzcGxheTsgfQogCi0gICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpIHsgbV9vcGFj
aXR5ID0gb3BhY2l0eTsgc2V0TmVlZHNDb21taXQoKTsgfQorICAgIHZvaWQgc2V0T3BhY2l0eShm
bG9hdCk7CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhY2l0eTsgfQog
Ci0gICAgdm9pZCBzZXRPcGFxdWUoYm9vbCBvcGFxdWUpIHsgbV9vcGFxdWUgPSBvcGFxdWU7IHNl
dE5lZWRzQ29tbWl0KCk7IH0KKyAgICB2b2lkIHNldE9wYXF1ZShib29sKTsKICAgICBib29sIG9w
YXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhcXVlOyB9CiAKLSAgICB2b2lkIHNldFBvc2l0aW9u
KGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKSB7IG1fcG9zaXRpb24gPSBwb3NpdGlvbjsgIHNl
dE5lZWRzQ29tbWl0KCk7IH0KKyAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQm
KTsKICAgICBGbG9hdFBvaW50IHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsg
fQogCi0gICAgdm9pZCBzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtKSB7IG1fc3VibGF5ZXJUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07IHNldE5l
ZWRzQ29tbWl0KCk7IH0KKyAgICB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4Jik7CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1Ymxh
eWVyVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zdWJsYXllclRyYW5zZm9ybTsgfQogCiAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggem9vbUFuaW1hdG9yVHJhbnNmb3JtKCkgY29uc3QgeyBy
ZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgoKTsgfQogCi0gICAgdm9pZCBzZXRUcmFuc2Zvcm0o
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkgeyBtX3RyYW5zZm9ybSA9IHRy
YW5zZm9ybTsgc2V0TmVlZHNDb21taXQoKTsgfQorICAgIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9CiAKICAgICBjb25zdCBJ
bnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlTGF5ZXJS
ZWN0OyB9CiAgICAgdm9pZCBzZXRWaXNpYmxlTGF5ZXJSZWN0KGNvbnN0IEludFJlY3QmIHZpc2li
bGVMYXllclJlY3QpIHsgbV92aXNpYmxlTGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdDsgfQog
CisgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpOwogICAgIGNvbnN0
IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUG9zaXRp
b247IH0KLSAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQ
b3NpdGlvbikgeyBtX3Njcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb247IH0KIAorICAgIHZv
aWQgc2V0U2Nyb2xsYWJsZShib29sKTsKICAgICBib29sIHNjcm9sbGFibGUoKSBjb25zdCB7IHJl
dHVybiBtX3Njcm9sbGFibGU7IH0KLSAgICB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCBzY3JvbGxh
YmxlKSB7IG1fc2Nyb2xsYWJsZSA9IHRydWU7ICBzZXROZWVkc0NvbW1pdCgpOyB9CiAKICAgICBJ
bnRTaXplIHNjcm9sbERlbHRhKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9CiAKICAgICBm
bG9hdCBwYWdlU2NhbGVEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIDE7IH0KIAorICAgIHZvaWQgc2V0
RG91YmxlU2lkZWQoYm9vbCk7CiAgICAgYm9vbCBkb3VibGVTaWRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZG91YmxlU2lkZWQ7IH0KLSAgICB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wgZG91YmxlU2lk
ZWQpIHsgbV9kb3VibGVTaWRlZCA9IGRvdWJsZVNpZGVkOyBzZXROZWVkc0NvbW1pdCgpOyB9CiAK
ICAgICB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wgcHJlc2VydmUzRCkgeyBtX3ByZXNlcnZlczNE
ID0gcHJlc2VydmUzRDsgfQogICAgIGJvb2wgcHJlc2VydmVzM0QoKSBjb25zdCB7IHJldHVybiBt
X3ByZXNlcnZlczNEOyB9CkBAIC0xNTUsNyArMTU1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXREZWxlZ2F0ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKSB7IG1fZGVsZWdhdGUgPSBkZWxl
Z2F0ZTsgfQogCi0gICAgdm9pZCBzZXRSZXBsaWNhTGF5ZXIoTGF5ZXJDaHJvbWl1bSogbGF5ZXIp
IHsgbV9yZXBsaWNhTGF5ZXIgPSBsYXllcjsgfQorICAgIHZvaWQgc2V0UmVwbGljYUxheWVyKExh
eWVyQ2hyb21pdW0qIGxheWVyKSB7IG1fcmVwbGljYUxheWVyID0gbGF5ZXI7IHNldE5lZWRzQ29t
bWl0KCk7IH0KICAgICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIoKSBjb25zdCB7IHJldHVy
biBtX3JlcGxpY2FMYXllci5nZXQoKTsgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2Fs
bHkgbmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVk
Q29udGVudEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAppbmRleCBiYzZhMmE0OTc4MjhlYjI5MWU5
ODk3ZWIxYmIxMjIyMDcwYTRhMmEzLi5jZWViZGVkMTJjNGY2NTc5NThjYWYxM2NiOWU3YjcyMTEx
ZjY1NDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiTGF5
ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCisjaW5jbHVk
ZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTE5
LDYgKzEyMCw5IEBAIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojpub3RpZnlBbmltYXRp
b25TdGFydGVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBkb3ViCiAKIHZvaWQgTm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0Ojpub3RpZnlTeW5jUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopCiB7
CisgICAgQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0ID0gbV9ncmFwaGljc0xheWVyLT5w
bGF0Zm9ybUxheWVyKCktPmxheWVyVHJlZUhvc3QoKTsKKyAgICBpZiAobGF5ZXJUcmVlSG9zdCkK
KyAgICAgICAgbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXQoKTsKIH0KIAogdm9pZCBOb25D
b21wb3NpdGVkQ29udGVudEhvc3Q6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllcios
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNv
bnN0IEludFJlY3QmIGNsaXBSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhv
c3QuaAppbmRleCA4MGE3MGE5ZGJkMzE2ZWFhMGJlZDI0OWFlOTlhZDM4OTllOGY0MDlhLi4yM2E5
YTFiMTc5NzI2MGNkOTQzMzc2NTY4Mjg1MDQ4Mzc5OGY3NTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhv
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25D
b21wb3NpdGVkQ29udGVudEhvc3QuaApAQCAtNTksOSArNTksMTAgQEAgcHVibGljOgogICAgIHZv
aWQgcHJvdGVjdFZpc2libGVUaWxlVGV4dHVyZXMoKTsKICAgICBHcmFwaGljc0xheWVyKiB0b3BM
ZXZlbFJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGhpY3NMYXllci5nZXQoKTsgfQog
Ci1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IE5vbkNvbXBvc2l0ZWRDb250ZW50
SG9zdChQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBjb250ZW50UGFpbnQpOwogCitw
cml2YXRlOgogICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgbm90
aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBHcmFwaGljc0xheWVyKiwgZG91YmxlIHRpbWUpOwog
ICAgIHZpcnR1YWwgdm9pZCBub3RpZnlTeW5jUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVt
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0
LmNwcAppbmRleCBmNGE0YTMyNzk3MWE5ZmYyNzFkYzRmNjg4YmJjOTdlMDk4YzkzMjBiLi5iMzE3
ODc3ZDA1NjA2ZjM2ZDFhODZjZmYxNzg4YjgyYzc3MDhhOThjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMjcsNiArMjcs
OCBAQAogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKIAogI2luY2x1ZGUgIkNDTGF5ZXJUcmVl
VGVzdENvbW1vbi5oIgorI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCisjaW5jbHVk
ZSAiTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmgiCiAjaW5jbHVkZSA8Z21vY2svZ21vY2suaD4K
ICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCkBAIC01Miw2ICs1NCwzMCBAQCBwdWJsaWM6CiAg
ICAgTU9DS19NRVRIT0QwKG5vdGlmeVN5bmNSZXF1aXJlZCwgdm9pZCgpKTsKIH07CiAKK2NsYXNz
IE1vY2tMYXllclBhaW50ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllclBhaW50ZXJDaHJvbWl1bSB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEludFJlY3QmKSB7IH0KK307CisKK2NsYXNzIE1vY2tOb25Db21wb3NpdGVkQ29udGVudEhvc3Qg
OiBwdWJsaWMgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxNb2NrTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0PiBjcmVhdGUoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNb2NrTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
KTsKKyAgICB9CisKKyAgICBNT0NLX01FVEhPRDEobm90aWZ5U3luY1JlcXVpcmVkLCB2b2lkKGNv
bnN0IEdyYXBoaWNzTGF5ZXIqKSk7CisKK3ByaXZhdGU6CisgICAgTW9ja05vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdCgpCisgICAgICAgIDogTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KGFkb3B0UHRy
KG5ldyBNb2NrTGF5ZXJQYWludGVyQ2hyb21pdW0oKSkpCisgICAgeworICAgICAgICBtX3Njcm9s
bExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKDApOworICAgICAgICBzZXRTY3JvbGxMYXll
cihtX3Njcm9sbExheWVyLmdldCgpKTsKKyAgICB9CisgICAgT3duUHRyPEdyYXBoaWNzTGF5ZXI+
IG1fc2Nyb2xsTGF5ZXI7Cit9OworCiBjbGFzcyBMYXllckNocm9taXVtV2l0aEluc3RydW1lbnRl
ZERlc3RydWN0b3IgOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgTGF5ZXJDaHJvbWl1bVdpdGhJbnN0cnVtZW50ZWREZXN0cnVjdG9yKENDTGF5ZXJEZWxlZ2F0
ZSogZGVsZWdhdGUpCkBAIC02MjAsMTAgKzY0Niw4IEBAIFRFU1RfRihMYXllckNocm9taXVtVGVz
dCwgY2hlY2tQcm9wZXJ0eUNoYW5nZUNhdXNlc0NvcnJlY3RCZWhhdmlvcikKICAgICBFWEVDVVRF
X0FORF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVnYXRlLCAwLCB0ZXN0TGF5
ZXItPnNldERlbGVnYXRlKCZtb2NrRGVsZWdhdGUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllf
Tk9USUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVnYXRlLCAwLCB0ZXN0TGF5ZXItPnNldE5hbWUo
IlRlc3QgTGF5ZXIiKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JFSEFW
SU9SKG1vY2tEZWxlZ2F0ZSwgMCwgdGVzdExheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJl
Y3QoMCwgMCwgNDAsIDUwKSkpOwotICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19C
RUhBVklPUihtb2NrRGVsZWdhdGUsIDAsIHRlc3RMYXllci0+c2V0U2Nyb2xsUG9zaXRpb24oSW50
UG9pbnQoMTAsIDEwKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhB
VklPUihtb2NrRGVsZWdhdGUsIDAsIHRlc3RMYXllci0+c2V0VXNlc0xheWVyQ2xpcHBpbmcodHJ1
ZSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVs
ZWdhdGUsIDAsIHRlc3RMYXllci0+c2V0SXNOb25Db21wb3NpdGVkQ29udGVudCh0cnVlKSk7Ci0g
ICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JFSEFWSU9SKG1vY2tEZWxlZ2F0ZSwg
MCwgdGVzdExheWVyLT5zZXRSZXBsaWNhTGF5ZXIoZHVtbXlMYXllci5nZXQoKSkpOwogICAgIEVY
RUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDAsIHRl
c3RMYXllci0+c2V0RHJhd09wYWNpdHkoMC41ZikpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9O
T1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDAsIHRlc3RMYXllci0+c2V0Q2xpcFJl
Y3QoSW50UmVjdCgzLCAzLCA4LCA4KSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllf
U1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDAsIHRlc3RMYXllci0+c2V0VGFyZ2V0UmVuZGVy
U3VyZmFjZSgwKSk7CkBAIC02MzQsMTkgKzY1OCwyMSBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRl
c3QsIGNoZWNrUHJvcGVydHlDaGFuZ2VDYXVzZXNDb3JyZWN0QmVoYXZpb3IpCiAKICAgICAvLyBO
ZXh0LCB0ZXN0IHByb3BlcnRpZXMgdGhhdCBzaG91bGQgY2FsbCBzZXROZWVkc0NvbW1pdCAoYnV0
IG5vdCBzZXROZWVkc0Rpc3BsYXkpCiAgICAgLy8gVGhlc2UgcHJvcGVydGllcyBzaG91bGQgaW5k
aXJlY3RseSBjYWxsIG5vdGlmeVN5bmNSZXF1aXJlZCwgYnV0IHRoZSBuZWVkc0Rpc3BsYXkgZmxh
ZyBzaG91bGQgbm90IGNoYW5nZS4KLSAgICAvLyBOb3RlIHRoYXQgZm9yIG1hbnkgb2YgdGhlc2Ug
cHJvcGVydGllcyBpdCBpcyBpbXBvcnRhbnQgdG8gdGVzdCBzZXR0aW5nIHRoZSBwcm9wZXJ0eSB0
byBhIHZhbHVlIHRoYXQKLSAgICAvLyBpcyBkaWZmZXJlbnQgdGhhbiB3aGF0IHRoZSBjb25zdHJ1
Y3RvciBpbml0aWFsaXplcyBpdCB0by4KKyAgICAvLyBBbGwgcHJvcGVydGllcyBuZWVkIHRvIGJl
IHNldCB0byBuZXcgdmFsdWVzIGluIG9yZGVyIGZvciBzZXROZWVkc0NvbW1pdAorICAgIC8vIHRv
IGJlIGNhbGxlZC4KICAgICBFWEVDVVRFX0FORF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJT1Io
bW9ja0RlbGVnYXRlLCAxLCB0ZXN0TGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMS4y
M2YsIDQuNTZmKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklP
Uihtb2NrRGVsZWdhdGUsIDEsIHRlc3RMYXllci0+c2V0QW5jaG9yUG9pbnRaKDAuN2YpKTsKICAg
ICBFWEVDVVRFX0FORF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVnYXRlLCAx
LCB0ZXN0TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihDb2xvcigwLjRmLCAwLjRmLCAwLjRmKSkp
OwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdh
dGUsIDEsIHRlc3RMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKSk7CiAgICAgRVhFQ1VURV9B
TkRfVkVSSUZZX05PVElGWV9TWU5DX0JFSEFWSU9SKG1vY2tEZWxlZ2F0ZSwgMSwgdGVzdExheWVy
LT5zZXRNYXNrTGF5ZXIoZHVtbXlMYXllci5nZXQoKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklG
WV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDEsIHRlc3RMYXllci0+c2V0T3Bh
Y2l0eSgwLjVmKSk7Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JFSEFWSU9S
KG1vY2tEZWxlZ2F0ZSwgMSwgdGVzdExheWVyLT5zZXRPcGFxdWUoZmFsc2UpKTsKKyAgICBFWEVD
VVRFX0FORF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVnYXRlLCAxLCB0ZXN0
TGF5ZXItPnNldE9wYXF1ZSh0cnVlKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9T
WU5DX0JFSEFWSU9SKG1vY2tEZWxlZ2F0ZSwgMSwgdGVzdExheWVyLT5zZXRQb3NpdGlvbihGbG9h
dFBvaW50KDQuMGYsIDkuMGYpKSk7Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5D
X0JFSEFWSU9SKG1vY2tEZWxlZ2F0ZSwgMSwgdGVzdExheWVyLT5zZXRTdWJsYXllclRyYW5zZm9y
bShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElG
WV9TWU5DX0JFSEFWSU9SKG1vY2tEZWxlZ2F0ZSwgMSwgdGVzdExheWVyLT5zZXRSZXBsaWNhTGF5
ZXIoZHVtbXlMYXllci5nZXQoKSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lO
Q19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDEsIHRlc3RMYXllci0+c2V0U3VibGF5ZXJUcmFuc2Zv
cm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoMCwgMCwgMCwgMCwgMCwgMCkpKTsKICAgICBFWEVDVVRF
X0FORF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVnYXRlLCAxLCB0ZXN0TGF5
ZXItPnNldFNjcm9sbGFibGUodHJ1ZSkpOwotICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllf
U1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDEsIHRlc3RMYXllci0+c2V0VHJhbnNmb3JtKFRy
YW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfTk9USUZZX1NZ
TkNfQkVIQVZJT1IobW9ja0RlbGVnYXRlLCAxLCB0ZXN0TGF5ZXItPnNldFNjcm9sbFBvc2l0aW9u
KEludFBvaW50KDEwLCAxMCkpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfTk9USUZZX1NZTkNf
QkVIQVZJT1IobW9ja0RlbGVnYXRlLCAxLCB0ZXN0TGF5ZXItPnNldFRyYW5zZm9ybShUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgwLCAwLCAwLCAwLCAwLCAwKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklG
WV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDEsIHRlc3RMYXllci0+c2V0RG91
YmxlU2lkZWQoZmFsc2UpKTsKIAogICAgIC8vIFRoZSBhYm92ZSB0ZXN0cyBzaG91bGQgbm90IGhh
dmUgY2F1c2VkIGEgY2hhbmdlIHRvIHRoZSBuZWVkc0Rpc3BsYXkgZmxhZy4KQEAgLTY2MCw0ICs2
ODYsMTggQEAgVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBjaGVja1Byb3BlcnR5Q2hhbmdlQ2F1
c2VzQ29ycmVjdEJlaGF2aW9yKQogICAgIC8vIEZJWE1FOiBuZWVkIHRvIGFkZCBhIHRlc3QgZm9y
IHNldExheWVyVHJlZUhvc3Qgd2l0aCBhIG5vbi1udWxsIHN0dWJiZWQgQ0NMYXllclRyZWVIb3N0
LgogfQogCitURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGNoZWNrTm9uQ29tcG9zaXRlZENvbnRl
bnRQcm9wZXJ0eUNoYW5nZUNhdXNlc0NvbW1pdCkKK3sKKyAgICBPd25QdHI8TW9ja05vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdD4gbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTW9ja05vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdDo6Y3JlYXRlKCk7CisKKyAgICBHcmFwaGljc0xheWVyKiByb290TGF5
ZXIgPSBub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnRvcExldmVsUm9vdExheWVyKCk7CisKKyAg
ICBFWFBFQ1RfQ0FMTCgqbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LCBub3RpZnlTeW5jUmVxdWly
ZWQoXykpLlRpbWVzKDEpOworICAgIHJvb3RMYXllci0+cGxhdGZvcm1MYXllcigpLT5zZXRTY3Jv
bGxQb3NpdGlvbihJbnRQb2ludCgxLCAxKSk7CisgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBl
Y3RhdGlvbnMobm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmdldCgpKTsKKworICAgIEVYUEVDVF9D
QUxMKCpub25Db21wb3NpdGVkQ29udGVudEhvc3QsIG5vdGlmeVN5bmNSZXF1aXJlZChfKSkuVGlt
ZXMoQXRMZWFzdCgxKSk7CisgICAgbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRWaWV3cG9y
dChJbnRTaXplKDMwLCAzMCksIEludFNpemUoMjAsIDIwKSwgSW50UG9pbnQoMTAsIDEwKSwgMSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118122</attachid>
            <date>2011-12-06 15:26:34 -0800</date>
            <delta_ts>2011-12-06 17:18:06 -0800</delta_ts>
            <desc>OwnPtr workaround from thakis</desc>
            <filename>bug-73711-20111206152633.patch</filename>
            <type>text/plain</type>
            <size>22523</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQwZGE0ZGQ0ZTM2MGJj
M2YyZGE2Nzc3NmZjZGM5MzMwMDY1NTRjNS4uMWIxMmY0NDc0NDc4ZDlmZjM0MmI4OTFhZmFkMGNi
OGU1NjE3ZWZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDExLTEyLTA2ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBzZXRO
ZWVkc0NvbW1pdCBvbiBub24tY29tcG9zaXRlZCBob3N0IGxheWVycyBzaG91bGQgdHJpZ2dlciBj
b21taXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcz
NzExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGlw
ZSBub24tY29tcG9zaXRlZCBjb250ZW50IGhvc3Qgc3luY3MgdG8gc2V0TmVlZHNDb21taXQuCisK
KyAgICAgICAgU2luY2Ugbm93IHRoZSBOb25Db21wb3NpdGVkQ29udGVudEhvc3QgZ2VuZXJhdGVz
IHNldE5lZWRzQ29tbWl0LCBkb24ndAorICAgICAgICBjYWxsIGl0IHVubmVjZXNzYXJpbHksIGUu
Zy4gY2FsbGluZyBzZXRCYWNrZ3JvdW5kQ29sb3IgdG8gdGhlIHNhbWUKKyAgICAgICAgY29sb3Ig
ZWFjaCBmcmFtZSBzaG91bGQgbm90IHJldHJpZ2dlciBtb3JlIGNvbW1pdHMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRBbmNob3JQb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldFRyYW5zZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENoaWxkcmVuVHJh
bnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TWFz
a3NUb0JvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNl
dEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21p
dW06OmNsZWFyQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRPcGFjaXR5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyQ2hyb21pdW06OnNldE5lZWRzQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OnNldEFuY2hvclBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21p
dW06OnNldEFuY2hvclBvaW50Wik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpz
ZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0
TWFza3NUb0JvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRNYXNr
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0T3BhY2l0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRPcGFxdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bTo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bTo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21p
dW06OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06
OnNldFNjcm9sbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0RG91
YmxlU2lkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnNldFJlcGxpY2FMYXll
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dDo6bm90aWZ5U3luY1JlcXVpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaDoKKwogMjAxMS0xMi0wNiAgRGF2aWQgUmV2
ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gSW1wbGVt
ZW50IHRpbGUtc2l6ZWQgcGFpbnRpbmcgdXNpbmcgU2tQaWN0dXJlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCA1MTM5Y2IyYWY1ZGM3YmVjYzc3Y2EwYmJkMzlmNDJlZmMxMTVmNzU3Li5m
MGNkYzNhYjZmZmU2NTRmNGNlOTA5OWFmNDJiOGViOTEzZTFkYmNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTEyLTA2ICBBZHJpZW5uZSBXYWxrZXIg
IDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBzZXROZWVkc0NvbW1pdCBv
biBub24tY29tcG9zaXRlZCBob3N0IGxheWVycyBzaG91bGQgdHJpZ2dlciBjb21taXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNzExCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHNvbWUgdGVzdHMg
dG8gbWFrZSBzdXJlIHRoYXQgbW9kaWZ5aW5nIHRoZSBub25jb21wb3NpdGVkIGNvbnRlbnQKKyAg
ICAgICAgaG9zdCB0cmlnZ2VycyBjb21taXRzLgorCisgICAgICAgIFByb3BlcnRpZXMgdGhhdCB0
cmlnZ2VyIHNldE5lZWRzQ29tbWl0IHNob3VsZCBvbmx5IGRvIHNvIHdoZW4gdGhlCisgICAgICAg
IHByb3BlcnR5IGNoYW5nZXMuIEFkZGl0aW9uYWxseSwgbWFrZSBtb3JlIHByb3BlcnR5IGNoYW5n
ZXMgcHJvcGVybHkKKyAgICAgICAgdHJpZ2dlciBjb21taXRzLgorCisgICAgICAgICogdGVzdHMv
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorCiAyMDExLTEyLTA2ICBEYXZpZCBSZXZlbWFuICA8cmV2
ZW1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBJbXBsZW1lbnQgdGlsZS1z
aXplZCBwYWludGluZyB1c2luZyBTa1BpY3R1cmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNo
cm9taXVtLmNwcAppbmRleCBjNjZiZTdhN2Y2Mjg2MzlkM2M5ZGY2YzEzYTk0NWJlMzkwNjVkMTZm
Li4xM2EzOWNkYWY2N2IwODg3ZGI5YmIzNjg3YmUxYjRhMGFkYzIwODIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE3Myw5ICsxNzMsNiBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bTo6c2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCiAK
IHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBv
aW50M0QmIHBvaW50KQogewotICAgIGlmIChwb2ludCA9PSBtX2FuY2hvclBvaW50KQotICAgICAg
ICByZXR1cm47Ci0KICAgICBHcmFwaGljc0xheWVyOjpzZXRBbmNob3JQb2ludChwb2ludCk7CiAg
ICAgdXBkYXRlQW5jaG9yUG9pbnQoKTsKIH0KQEAgLTE5NCwxOCArMTkxLDEyIEBAIHZvaWQgR3Jh
cGhpY3NMYXllckNocm9taXVtOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybSkKICAgICAvLyBDYWxsIHRoaXMgbWV0aG9kIGZpcnN0IHRvIGFzc2lnbiBj
b250ZW50cyBzY2FsZSB0byBMYXllckNocm9taXVtIHNvIHRoZSBwYWludGVyIGNhbiBhcHBseSB0
aGUgc2NhbGUgdHJhbnNmb3JtLgogICAgIHVwZGF0ZUNvbnRlbnRzU2NhbGUoKTsKIAotICAgIGlm
ICh0cmFuc2Zvcm0gPT0gbV90cmFuc2Zvcm0pCi0gICAgICAgIHJldHVybjsKLQogICAgIEdyYXBo
aWNzTGF5ZXI6OnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwogICAgIHVwZGF0ZVRyYW5zZm9ybSgp
OwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0o
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKIHsKLSAgICBpZiAodHJhbnNm
b3JtID09IG1fY2hpbGRyZW5UcmFuc2Zvcm0pCi0gICAgICAgIHJldHVybjsKLQogICAgIEdyYXBo
aWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKHRyYW5zZm9ybSk7CiAgICAgdXBkYXRlQ2hp
bGRyZW5UcmFuc2Zvcm0oKTsKIH0KQEAgLTIyMSw5ICsyMTIsNiBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bTo6c2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZXMzRCkKIAogdm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OnNldE1hc2tzVG9Cb3VuZHMoYm9vbCBtYXNrc1RvQm91bmRzKQog
ewotICAgIGlmIChtYXNrc1RvQm91bmRzID09IG1fbWFza3NUb0JvdW5kcykKLSAgICAgICAgcmV0
dXJuOwotCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0TWFza3NUb0JvdW5kcyhtYXNrc1RvQm91bmRz
KTsKICAgICB1cGRhdGVNYXNrc1RvQm91bmRzKCk7CiB9CkBAIC0yMzksOSArMjI3LDYgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldERyYXdzQ29udGVudChib29sIGRyYXdzQ29udGVu
dCkKIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldEJhY2tncm91bmRDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCiB7Ci0gICAgaWYgKG1fYmFja2dyb3VuZENvbG9yU2V0ICYmIG1fYmFj
a2dyb3VuZENvbG9yID09IGNvbG9yKQotICAgICAgICByZXR1cm47Ci0KICAgICBHcmFwaGljc0xh
eWVyOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOwogCiAgICAgbV9jb250ZW50c0xheWVySGFz
QmFja2dyb3VuZENvbG9yID0gdHJ1ZTsKQEAgLTI1MCwxOCArMjM1LDEyIEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNocm9taXVtOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQog
CiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6Y2xlYXJCYWNrZ3JvdW5kQ29sb3IoKQogewot
ICAgIGlmICghbV9iYWNrZ3JvdW5kQ29sb3JTZXQpCi0gICAgICAgIHJldHVybjsKLQogICAgIEdy
YXBoaWNzTGF5ZXI6OmNsZWFyQmFja2dyb3VuZENvbG9yKCk7CiAgICAgbV9jb250ZW50c0xheWVy
LT5zZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c09wYXF1ZShib29sIG9wYXF1ZSkKIHsK
LSAgICBpZiAobV9jb250ZW50c09wYXF1ZSA9PSBvcGFxdWUpCi0gICAgICAgIHJldHVybjsKLQog
ICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzT3BhcXVlKG9wYXF1ZSk7CiAgICAgdXBkYXRl
Q29udGVudHNPcGFxdWUoKTsKIH0KQEAgLTI4MSw5ICsyNjAsNiBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bTo6c2V0TWFza0xheWVyKEdyYXBoaWNzTGF5ZXIqIG1hc2tMYXllcikKIAogdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHZpc2li
bGUpCiB7Ci0gICAgaWYgKG1fYmFja2ZhY2VWaXNpYmlsaXR5ID09IHZpc2libGUpCi0gICAgICAg
IHJldHVybjsKLQogICAgIEdyYXBoaWNzTGF5ZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0eSh2aXNp
YmxlKTsKICAgICB1cGRhdGVCYWNrZmFjZVZpc2liaWxpdHkoKTsKIH0KQEAgLTI5MSwxMCArMjY3
LDYgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldEJhY2tmYWNlVmlzaWJpbGl0eShi
b29sIHZpc2libGUpCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0T3BhY2l0eShmbG9h
dCBvcGFjaXR5KQogewogICAgIGZsb2F0IGNsYW1wZWRPcGFjaXR5ID0gbWF4KG1pbihvcGFjaXR5
LCAxLjBmKSwgMC4wZik7Ci0KLSAgICBpZiAobV9vcGFjaXR5ID09IGNsYW1wZWRPcGFjaXR5KQot
ICAgICAgICByZXR1cm47Ci0KICAgICBHcmFwaGljc0xheWVyOjpzZXRPcGFjaXR5KGNsYW1wZWRP
cGFjaXR5KTsKICAgICBwcmltYXJ5TGF5ZXIoKS0+c2V0T3BhY2l0eShvcGFjaXR5KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZTI1NzMyMjRiNGEyYWVhNGNhY2E1NzBkMTRlNGU0MWM0
MTlkZmJlYS4uODU1ZjlhNjY5YWQyMTIzNjFjODYwY2NmNDA1YTFkM2VlNWVjNDcwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTEyMCwxMCArMTIwLDYgQEAgdm9pZCBMYXllckNocm9taXVt
OjpzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKIAogdm9pZCBMYXllckNo
cm9taXVtOjpzZXROZWVkc0NvbW1pdCgpCiB7Ci0gICAgLy8gQ2FsbCBub3RpZnlTeW5jUmVxdWly
ZWQoKSwgd2hpY2ggZm9yIG5vbi1yb290IGxheWVycyBwbHVtYnMgdGhyb3VnaCB0bwotICAgIC8v
IGNhbGwgc2V0Um9vdExheWVyTmVlZHNEaXNwbGF5KCkgb24gdGhlIFdlYlZpZXcsIHdoaWNoIHdp
bGwgY2F1c2UgTGF5ZXJSZW5kZXJlckNocm9taXVtCi0gICAgLy8gdG8gcmVuZGVyIGEgZnJhbWUu
Ci0gICAgLy8gVGhpcyBmdW5jdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHJvb3QgbGF5ZXJzLgogICAg
IGlmIChtX2RlbGVnYXRlKQogICAgICAgICBtX2RlbGVnYXRlLT5ub3RpZnlTeW5jUmVxdWlyZWQo
KTsKIH0KQEAgLTI0OSw2ICsyNDUsMTEwIEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0Q2hpbGRy
ZW4oY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+JiBjaGlsZHJlbikKICAgICAg
ICAgYWRkQ2hpbGQoY2hpbGRyZW5baV0pOwogfQogCit2b2lkIExheWVyQ2hyb21pdW06OnNldEFu
Y2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50KQoreworICAgIGlmIChtX2Fu
Y2hvclBvaW50ID09IGFuY2hvclBvaW50KQorICAgICAgICByZXR1cm47CisgICAgbV9hbmNob3JQ
b2ludCA9IGFuY2hvclBvaW50OworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK3ZvaWQgTGF5
ZXJDaHJvbWl1bTo6c2V0QW5jaG9yUG9pbnRaKGZsb2F0IGFuY2hvclBvaW50WikKK3sKKyAgICBp
ZiAobV9hbmNob3JQb2ludFogPT0gYW5jaG9yUG9pbnRaKQorICAgICAgICByZXR1cm47CisgICAg
bV9hbmNob3JQb2ludFogPSBhbmNob3JQb2ludFo7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30K
Kwordm9pZCBMYXllckNocm9taXVtOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGJh
Y2tncm91bmRDb2xvcikKK3sKKyAgICBpZiAobV9iYWNrZ3JvdW5kQ29sb3IgPT0gYmFja2dyb3Vu
ZENvbG9yKQorICAgICAgICByZXR1cm47CisgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3Jv
dW5kQ29sb3I7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwordm9pZCBMYXllckNocm9taXVt
OjpzZXRNYXNrc1RvQm91bmRzKGJvb2wgbWFza3NUb0JvdW5kcykKK3sKKyAgICBpZiAobV9tYXNr
c1RvQm91bmRzID09IG1hc2tzVG9Cb3VuZHMpCisgICAgICAgIHJldHVybjsKKyAgICBtX21hc2tz
VG9Cb3VuZHMgPSBtYXNrc1RvQm91bmRzOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK3Zv
aWQgTGF5ZXJDaHJvbWl1bTo6c2V0TWFza0xheWVyKExheWVyQ2hyb21pdW0qIG1hc2tMYXllcikK
K3sKKyAgICBpZiAobV9tYXNrTGF5ZXIgPT0gbWFza0xheWVyKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9tYXNrTGF5ZXIgPSBtYXNrTGF5ZXI7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwor
dm9pZCBMYXllckNocm9taXVtOjpzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCit7CisgICAgaWYg
KG1fb3BhY2l0eSA9PSBvcGFjaXR5KQorICAgICAgICByZXR1cm47CisgICAgbV9vcGFjaXR5ID0g
b3BhY2l0eTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCit2b2lkIExheWVyQ2hyb21pdW06
OnNldE9wYXF1ZShib29sIG9wYXF1ZSkKK3sKKyAgICBpZiAobV9vcGFxdWUgPT0gb3BhcXVlKQor
ICAgICAgICByZXR1cm47CisgICAgbV9vcGFxdWUgPSBvcGFxdWU7CisgICAgc2V0TmVlZHNDb21t
aXQoKTsKK30KKwordm9pZCBMYXllckNocm9taXVtOjpzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBv
aW50JiBwb3NpdGlvbikKK3sKKyAgICBpZiAobV9wb3NpdGlvbiA9PSBwb3NpdGlvbikKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fcG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICBzZXROZWVkc0NvbW1p
dCgpOworfQorCit2b2lkIExheWVyQ2hyb21pdW06OnNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzdWJsYXllclRyYW5zZm9ybSkKK3sKKyAgICBpZiAobV9z
dWJsYXllclRyYW5zZm9ybSA9PSBzdWJsYXllclRyYW5zZm9ybSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fc3VibGF5ZXJUcmFuc2Zvcm0gPSBzdWJsYXllclRyYW5zZm9ybTsKKyAgICBzZXROZWVk
c0NvbW1pdCgpOworfQorCit2b2lkIExheWVyQ2hyb21pdW06OnNldFRyYW5zZm9ybShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQoreworICAgIGlmIChtX3RyYW5zZm9ybSA9
PSB0cmFuc2Zvcm0pCisgICAgICAgIHJldHVybjsKKyAgICBtX3RyYW5zZm9ybSA9IHRyYW5zZm9y
bTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCit2b2lkIExheWVyQ2hyb21pdW06OnNldFNj
cm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikKK3sKKyAgICBpZiAo
bV9zY3JvbGxQb3NpdGlvbiA9PSBzY3JvbGxQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuOworICAg
IG1fc2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbjsKKyAgICBzZXROZWVkc0NvbW1pdCgp
OworfQorCit2b2lkIExheWVyQ2hyb21pdW06OnNldFNjcm9sbGFibGUoYm9vbCBzY3JvbGxhYmxl
KQoreworICAgIGlmIChtX3Njcm9sbGFibGUgPT0gc2Nyb2xsYWJsZSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fc2Nyb2xsYWJsZSA9IHNjcm9sbGFibGU7CisgICAgc2V0TmVlZHNDb21taXQoKTsK
K30KKwordm9pZCBMYXllckNocm9taXVtOjpzZXREb3VibGVTaWRlZChib29sIGRvdWJsZVNpZGVk
KQoreworICAgIGlmIChtX2RvdWJsZVNpZGVkID09IGRvdWJsZVNpZGVkKQorICAgICAgICByZXR1
cm47CisgICAgbV9kb3VibGVTaWRlZCA9IGRvdWJsZVNpZGVkOworICAgIHNldE5lZWRzQ29tbWl0
KCk7Cit9CisKIExheWVyQ2hyb21pdW0qIExheWVyQ2hyb21pdW06OnBhcmVudCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fcGFyZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDE3NWZjMmY5MDU5
YTMwODAzN2UwZWU4NDhiOWZjMTMxMjUwOWU4ZGQuLjVlMDVjMTU3Yzc5NWNlMWUwNjRkZjJkZjk2
NDQwN2FkYmZlNTUwYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTgzLDY0ICs4Myw2NCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ2hy
b21pdW0+ID4mKTsKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4mIGNo
aWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbjsgfQogCi0gICAgdm9pZCBzZXRBbmNo
b3JQb2ludChjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCkgeyBtX2FuY2hvclBvaW50ID0g
YW5jaG9yUG9pbnQ7IHNldE5lZWRzQ29tbWl0KCk7IH0KKyAgICB2b2lkIHNldEFuY2hvclBvaW50
KGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICBGbG9hdFBvaW50IGFuY2hvclBvaW50KCkgY29uc3Qg
eyByZXR1cm4gbV9hbmNob3JQb2ludDsgfQogCi0gICAgdm9pZCBzZXRBbmNob3JQb2ludFooZmxv
YXQgYW5jaG9yUG9pbnRaKSB7IG1fYW5jaG9yUG9pbnRaID0gYW5jaG9yUG9pbnRaOyBzZXROZWVk
c0NvbW1pdCgpOyB9CisgICAgdm9pZCBzZXRBbmNob3JQb2ludFooZmxvYXQpOwogICAgIGZsb2F0
IGFuY2hvclBvaW50WigpIGNvbnN0IHsgcmV0dXJuIG1fYW5jaG9yUG9pbnRaOyB9CiAKLSAgICB2
b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9iYWNrZ3JvdW5k
Q29sb3IgPSBjb2xvcjsgc2V0TmVlZHNDb21taXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2dyb3Vu
ZENvbG9yKGNvbnN0IENvbG9yJik7CiAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KIAogICAgIHZvaWQgc2V0Qm91bmRzKGNvbnN0
IEludFNpemUmKTsKICAgICBjb25zdCBJbnRTaXplJiBib3VuZHMoKSBjb25zdCB7IHJldHVybiBt
X2JvdW5kczsgfQogICAgIHZpcnR1YWwgSW50U2l6ZSBjb250ZW50Qm91bmRzKCkgY29uc3QgeyBy
ZXR1cm4gYm91bmRzKCk7IH0KIAotICAgIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tz
VG9Cb3VuZHMpIHsgbV9tYXNrc1RvQm91bmRzID0gbWFza3NUb0JvdW5kczsgc2V0TmVlZHNDb21t
aXQoKTsgfQorICAgIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKTsKICAgICBib29sIG1hc2tz
VG9Cb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX21hc2tzVG9Cb3VuZHM7IH0KIAogICAgIHZvaWQg
c2V0TmFtZShjb25zdCBTdHJpbmcmKTsKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7
IHJldHVybiBtX25hbWU7IH0KIAotICAgIHZvaWQgc2V0TWFza0xheWVyKExheWVyQ2hyb21pdW0q
IG1hc2tMYXllcikgeyBtX21hc2tMYXllciA9IG1hc2tMYXllcjsgc2V0TmVlZHNDb21taXQoKTsg
fQorICAgIHZvaWQgc2V0TWFza0xheWVyKExheWVyQ2hyb21pdW0qKTsKICAgICBMYXllckNocm9t
aXVtKiBtYXNrTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX21hc2tMYXllci5nZXQoKTsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheVJlY3QoY29uc3QgRmxvYXRSZWN0JiBkaXJ0
eVJlY3QpOwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgeyBzZXROZWVkc0Rpc3BsYXlSZWN0
KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNvbnRlbnRCb3VuZHMoKSkpOyB9CiAgICAgdmlydHVh
bCBib29sIG5lZWRzRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNEaXNwbGF5OyB9CiAK
LSAgICB2b2lkIHNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkgeyBtX29wYWNpdHkgPSBvcGFjaXR5
OyBzZXROZWVkc0NvbW1pdCgpOyB9CisgICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0KTsKICAgICBm
bG9hdCBvcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9vcGFjaXR5OyB9CiAKLSAgICB2b2lkIHNl
dE9wYXF1ZShib29sIG9wYXF1ZSkgeyBtX29wYXF1ZSA9IG9wYXF1ZTsgc2V0TmVlZHNDb21taXQo
KTsgfQorICAgIHZvaWQgc2V0T3BhcXVlKGJvb2wpOwogICAgIGJvb2wgb3BhcXVlKCkgY29uc3Qg
eyByZXR1cm4gbV9vcGFxdWU7IH0KIAotICAgIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQ
b2ludCYgcG9zaXRpb24pIHsgbV9wb3NpdGlvbiA9IHBvc2l0aW9uOyAgc2V0TmVlZHNDb21taXQo
KTsgfQorICAgIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpOwogICAgIEZsb2F0
UG9pbnQgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CiAKLSAgICB2b2lk
IHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0pIHsgbV9zdWJsYXllclRyYW5zZm9ybSA9IHRyYW5zZm9ybTsgc2V0TmVlZHNDb21taXQoKTsg
fQorICAgIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmKTsKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc3VibGF5ZXJUcmFuc2Zvcm0o
KSBjb25zdCB7IHJldHVybiBtX3N1YmxheWVyVHJhbnNmb3JtOyB9CiAKICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB6b29tQW5pbWF0b3JUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpOyB9CiAKLSAgICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKSB7IG1fdHJhbnNmb3JtID0gdHJhbnNmb3JtOyBzZXRO
ZWVkc0NvbW1pdCgpOyB9CisgICAgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmKTsKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKCkg
Y29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm07IH0KIAogICAgIGNvbnN0IEludFJlY3QmIHZpc2li
bGVMYXllclJlY3QoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGVMYXllclJlY3Q7IH0KICAgICB2
b2lkIHNldFZpc2libGVMYXllclJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCkg
eyBtX3Zpc2libGVMYXllclJlY3QgPSB2aXNpYmxlTGF5ZXJSZWN0OyB9CiAKKyAgICB2b2lkIHNl
dFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50Jik7CiAgICAgY29uc3QgSW50UG9pbnQmIHNj
cm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxQb3NpdGlvbjsgfQotICAgIHZv
aWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKSB7IG1f
c2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbjsgfQogCisgICAgdm9pZCBzZXRTY3JvbGxh
YmxlKGJvb2wpOwogICAgIGJvb2wgc2Nyb2xsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xs
YWJsZTsgfQotICAgIHZvaWQgc2V0U2Nyb2xsYWJsZShib29sIHNjcm9sbGFibGUpIHsgbV9zY3Jv
bGxhYmxlID0gdHJ1ZTsgIHNldE5lZWRzQ29tbWl0KCk7IH0KIAogICAgIEludFNpemUgc2Nyb2xs
RGVsdGEoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0KIAogICAgIGZsb2F0IHBhZ2VTY2Fs
ZURlbHRhKCkgY29uc3QgeyByZXR1cm4gMTsgfQogCisgICAgdm9pZCBzZXREb3VibGVTaWRlZChi
b29sKTsKICAgICBib29sIGRvdWJsZVNpZGVkKCkgY29uc3QgeyByZXR1cm4gbV9kb3VibGVTaWRl
ZDsgfQotICAgIHZvaWQgc2V0RG91YmxlU2lkZWQoYm9vbCBkb3VibGVTaWRlZCkgeyBtX2RvdWJs
ZVNpZGVkID0gZG91YmxlU2lkZWQ7IHNldE5lZWRzQ29tbWl0KCk7IH0KIAogICAgIHZvaWQgc2V0
UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZTNEKSB7IG1fcHJlc2VydmVzM0QgPSBwcmVzZXJ2ZTNE
OyB9CiAgICAgYm9vbCBwcmVzZXJ2ZXMzRCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2VydmVzM0Q7
IH0KQEAgLTE1NSw3ICsxNTUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldERlbGVnYXRlKEND
TGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpIHsgbV9kZWxlZ2F0ZSA9IGRlbGVnYXRlOyB9CiAKLSAg
ICB2b2lkIHNldFJlcGxpY2FMYXllcihMYXllckNocm9taXVtKiBsYXllcikgeyBtX3JlcGxpY2FM
YXllciA9IGxheWVyOyB9CisgICAgdm9pZCBzZXRSZXBsaWNhTGF5ZXIoTGF5ZXJDaHJvbWl1bSog
bGF5ZXIpIHsgbV9yZXBsaWNhTGF5ZXIgPSBsYXllcjsgc2V0TmVlZHNDb21taXQoKTsgfQogICAg
IExheWVyQ2hyb21pdW0qIHJlcGxpY2FMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYUxh
eWVyLmdldCgpOyB9CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHR5cGljYWxseSBuZWVkIHRvIGJl
IG92ZXJ3cml0dGVuIGJ5IGRlcml2ZWQgY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ob25Db21wb3Np
dGVkQ29udGVudEhvc3QuY3BwCmluZGV4IDE5YTA2NTIwNWU0ZTAxM2MwM2UzMzczMTFiNTU3YTU5
ZmQ4MGMwY2MuLjA5M2VhNjhjYTMzM2E2YTI0YjgxYWYzMjAwY2I1MzE0ODQ4MjA5ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgi
CiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVy
VHJlZUhvc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMjAsNiArMTIxLDkgQEAg
dm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29u
c3QgR3JhcGhpY3NMYXllciosIGRvdWIKIAogdm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6
Om5vdGlmeVN5bmNSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikKIHsKKyAgICBDQ0xheWVy
VHJlZUhvc3QqIGxheWVyVHJlZUhvc3QgPSBtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIo
KS0+bGF5ZXJUcmVlSG9zdCgpOworICAgIGlmIChsYXllclRyZWVIb3N0KQorICAgICAgICBsYXll
clRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOwogfQogCiB2b2lkIE5vbkNvbXBvc2l0ZWRDb250
ZW50SG9zdDo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgSW50UmVjdCYg
Y2xpcFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oCmluZGV4IDgw
YTcwYTlkYmQzMTZlYWEwYmVkMjQ5YWU5OWFkMzg5OWU4ZjQwOWEuLjIzYTlhMWIxNzk3MjYwY2Q5
NDMzNzY1NjgyODUwNDgzNzk4Zjc1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250
ZW50SG9zdC5oCkBAIC01OSw5ICs1OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcm90ZWN0Vmlz
aWJsZVRpbGVUZXh0dXJlcygpOwogICAgIEdyYXBoaWNzTGF5ZXIqIHRvcExldmVsUm9vdExheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9ncmFwaGljc0xheWVyLmdldCgpOyB9CiAKLXByaXZhdGU6Citw
cm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KFBhc3NPd25Q
dHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IGNvbnRlbnRQYWludCk7CiAKK3ByaXZhdGU6CiAgICAg
Ly8gR3JhcGhpY3NMYXllckNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25T
dGFydGVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBkb3VibGUgdGltZSk7CiAgICAgdmlydHVhbCB2
b2lkIG5vdGlmeVN5bmNSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGY0
YTRhMzI3OTcxYTlmZjI3MWRjNGY2ODhiYmM5N2UwOThjOTMyMGIuLjY5MzY1YTZkN2MzZDVmZmIy
NTk3OWU3NjAzNDlhZmM0NzVhYmJlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVk
ZSAiTGF5ZXJDaHJvbWl1bS5oIgogCiAjaW5jbHVkZSAiQ0NMYXllclRyZWVUZXN0Q29tbW9uLmgi
CisjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJOb25Db21wb3Np
dGVkQ29udGVudEhvc3QuaCIKICNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgogI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CiAKQEAgLTUyLDYgKzU0LDMwIEBAIHB1YmxpYzoKICAgICBNT0NLX01FVEhP
RDAobm90aWZ5U3luY1JlcXVpcmVkLCB2b2lkKCkpOwogfTsKIAorY2xhc3MgTW9ja0xheWVyUGFp
bnRlckNocm9taXVtIDogcHVibGljIExheWVyUGFpbnRlckNocm9taXVtIHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpIHsg
fQorfTsKKworY2xhc3MgTW9ja05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCA6IHB1YmxpYyBOb25D
b21wb3NpdGVkQ29udGVudEhvc3QgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPE1v
Y2tOb25Db21wb3NpdGVkQ29udGVudEhvc3Q+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IE1vY2tOb25Db21wb3NpdGVkQ29udGVudEhvc3QpOworICAgIH0KKwor
ICAgIE1PQ0tfTUVUSE9EMShub3RpZnlTeW5jUmVxdWlyZWQsIHZvaWQoY29uc3QgR3JhcGhpY3NM
YXllciopKTsKKworcHJpdmF0ZToKKyAgICBNb2NrTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KCkK
KyAgICAgICAgOiBOb25Db21wb3NpdGVkQ29udGVudEhvc3QoYWRvcHRQdHIobmV3IE1vY2tMYXll
clBhaW50ZXJDaHJvbWl1bSgpKSkKKyAgICB7CisgICAgICAgIG1fc2Nyb2xsTGF5ZXIgPSBHcmFw
aGljc0xheWVyOjpjcmVhdGUoMCk7CisgICAgICAgIHNldFNjcm9sbExheWVyKG1fc2Nyb2xsTGF5
ZXIuZ2V0KCkpOworICAgIH0KKyAgICBPd25QdHI8R3JhcGhpY3NMYXllcj4gbV9zY3JvbGxMYXll
cjsKK307CisKIGNsYXNzIExheWVyQ2hyb21pdW1XaXRoSW5zdHJ1bWVudGVkRGVzdHJ1Y3RvciA6
IHB1YmxpYyBMYXllckNocm9taXVtIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMYXllckNocm9t
aXVtV2l0aEluc3RydW1lbnRlZERlc3RydWN0b3IoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkK
QEAgLTYyMCwxMCArNjQ2LDggQEAgVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBjaGVja1Byb3Bl
cnR5Q2hhbmdlQ2F1c2VzQ29ycmVjdEJlaGF2aW9yKQogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9O
T1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDAsIHRlc3RMYXllci0+c2V0RGVsZWdh
dGUoJm1vY2tEZWxlZ2F0ZSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19C
RUhBVklPUihtb2NrRGVsZWdhdGUsIDAsIHRlc3RMYXllci0+c2V0TmFtZSgiVGVzdCBMYXllciIp
KTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVn
YXRlLCAwLCB0ZXN0TGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCA0MCwg
NTApKSk7Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JFSEFWSU9SKG1vY2tE
ZWxlZ2F0ZSwgMCwgdGVzdExheWVyLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgxMCwgMTAp
KSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JFSEFWSU9SKG1vY2tEZWxl
Z2F0ZSwgMCwgdGVzdExheWVyLT5zZXRVc2VzTGF5ZXJDbGlwcGluZyh0cnVlKSk7CiAgICAgRVhF
Q1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JFSEFWSU9SKG1vY2tEZWxlZ2F0ZSwgMCwgdGVz
dExheWVyLT5zZXRJc05vbkNvbXBvc2l0ZWRDb250ZW50KHRydWUpKTsKLSAgICBFWEVDVVRFX0FO
RF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVnYXRlLCAwLCB0ZXN0TGF5ZXIt
PnNldFJlcGxpY2FMYXllcihkdW1teUxheWVyLmdldCgpKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVS
SUZZX05PVElGWV9TWU5DX0JFSEFWSU9SKG1vY2tEZWxlZ2F0ZSwgMCwgdGVzdExheWVyLT5zZXRE
cmF3T3BhY2l0eSgwLjVmKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JF
SEFWSU9SKG1vY2tEZWxlZ2F0ZSwgMCwgdGVzdExheWVyLT5zZXRDbGlwUmVjdChJbnRSZWN0KDMs
IDMsIDgsIDgpKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JFSEFWSU9S
KG1vY2tEZWxlZ2F0ZSwgMCwgdGVzdExheWVyLT5zZXRUYXJnZXRSZW5kZXJTdXJmYWNlKDApKTsK
QEAgLTYzNCwxOSArNjU4LDIxIEBAIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgY2hlY2tQcm9w
ZXJ0eUNoYW5nZUNhdXNlc0NvcnJlY3RCZWhhdmlvcikKIAogICAgIC8vIE5leHQsIHRlc3QgcHJv
cGVydGllcyB0aGF0IHNob3VsZCBjYWxsIHNldE5lZWRzQ29tbWl0IChidXQgbm90IHNldE5lZWRz
RGlzcGxheSkKICAgICAvLyBUaGVzZSBwcm9wZXJ0aWVzIHNob3VsZCBpbmRpcmVjdGx5IGNhbGwg
bm90aWZ5U3luY1JlcXVpcmVkLCBidXQgdGhlIG5lZWRzRGlzcGxheSBmbGFnIHNob3VsZCBub3Qg
Y2hhbmdlLgotICAgIC8vIE5vdGUgdGhhdCBmb3IgbWFueSBvZiB0aGVzZSBwcm9wZXJ0aWVzIGl0
IGlzIGltcG9ydGFudCB0byB0ZXN0IHNldHRpbmcgdGhlIHByb3BlcnR5IHRvIGEgdmFsdWUgdGhh
dAotICAgIC8vIGlzIGRpZmZlcmVudCB0aGFuIHdoYXQgdGhlIGNvbnN0cnVjdG9yIGluaXRpYWxp
emVzIGl0IHRvLgorICAgIC8vIEFsbCBwcm9wZXJ0aWVzIG5lZWQgdG8gYmUgc2V0IHRvIG5ldyB2
YWx1ZXMgaW4gb3JkZXIgZm9yIHNldE5lZWRzQ29tbWl0CisgICAgLy8gdG8gYmUgY2FsbGVkLgog
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUs
IDEsIHRlc3RMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgxLjIzZiwgNC41NmYpKSk7
CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JFSEFWSU9SKG1vY2tEZWxlZ2F0
ZSwgMSwgdGVzdExheWVyLT5zZXRBbmNob3JQb2ludFooMC43ZikpOwogICAgIEVYRUNVVEVfQU5E
X1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDEsIHRlc3RMYXllci0+
c2V0QmFja2dyb3VuZENvbG9yKENvbG9yKDAuNGYsIDAuNGYsIDAuNGYpKSk7CiAgICAgRVhFQ1VU
RV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JFSEFWSU9SKG1vY2tEZWxlZ2F0ZSwgMSwgdGVzdExh
eWVyLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfTk9U
SUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVnYXRlLCAxLCB0ZXN0TGF5ZXItPnNldE1hc2tMYXll
cihkdW1teUxheWVyLmdldCgpKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5D
X0JFSEFWSU9SKG1vY2tEZWxlZ2F0ZSwgMSwgdGVzdExheWVyLT5zZXRPcGFjaXR5KDAuNWYpKTsK
LSAgICBFWEVDVVRFX0FORF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJT1IobW9ja0RlbGVnYXRl
LCAxLCB0ZXN0TGF5ZXItPnNldE9wYXF1ZShmYWxzZSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklG
WV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDEsIHRlc3RMYXllci0+c2V0T3Bh
cXVlKHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJT1Io
bW9ja0RlbGVnYXRlLCAxLCB0ZXN0TGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoNC4wZiwg
OS4wZikpKTsKLSAgICBFWEVDVVRFX0FORF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJT1IobW9j
a0RlbGVnYXRlLCAxLCB0ZXN0TGF5ZXItPnNldFN1YmxheWVyVHJhbnNmb3JtKFRyYW5zZm9ybWF0
aW9uTWF0cml4KCkpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfTk9USUZZX1NZTkNfQkVIQVZJ
T1IobW9ja0RlbGVnYXRlLCAxLCB0ZXN0TGF5ZXItPnNldFJlcGxpY2FMYXllcihkdW1teUxheWVy
LmdldCgpKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JFSEFWSU9SKG1v
Y2tEZWxlZ2F0ZSwgMSwgdGVzdExheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgwLCAwLCAwLCAwLCAwLCAwKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9O
T1RJRllfU1lOQ19CRUhBVklPUihtb2NrRGVsZWdhdGUsIDEsIHRlc3RMYXllci0+c2V0U2Nyb2xs
YWJsZSh0cnVlKSk7Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5DX0JFSEFWSU9S
KG1vY2tEZWxlZ2F0ZSwgMSwgdGVzdExheWVyLT5zZXRUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklPUiht
b2NrRGVsZWdhdGUsIDEsIHRlc3RMYXllci0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoMTAs
IDEwKSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9OT1RJRllfU1lOQ19CRUhBVklPUihtb2Nr
RGVsZWdhdGUsIDEsIHRlc3RMYXllci0+c2V0VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4
KDAsIDAsIDAsIDAsIDAsIDApKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX05PVElGWV9TWU5D
X0JFSEFWSU9SKG1vY2tEZWxlZ2F0ZSwgMSwgdGVzdExheWVyLT5zZXREb3VibGVTaWRlZChmYWxz
ZSkpOwogCiAgICAgLy8gVGhlIGFib3ZlIHRlc3RzIHNob3VsZCBub3QgaGF2ZSBjYXVzZWQgYSBj
aGFuZ2UgdG8gdGhlIG5lZWRzRGlzcGxheSBmbGFnLgpAQCAtNjYwLDQgKzY4NiwxOCBAQCBURVNU
X0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGNoZWNrUHJvcGVydHlDaGFuZ2VDYXVzZXNDb3JyZWN0QmVo
YXZpb3IpCiAgICAgLy8gRklYTUU6IG5lZWQgdG8gYWRkIGEgdGVzdCBmb3Igc2V0TGF5ZXJUcmVl
SG9zdCB3aXRoIGEgbm9uLW51bGwgc3R1YmJlZCBDQ0xheWVyVHJlZUhvc3QuCiB9CiAKK1RFU1Rf
RihMYXllckNocm9taXVtVGVzdCwgY2hlY2tOb25Db21wb3NpdGVkQ29udGVudFByb3BlcnR5Q2hh
bmdlQ2F1c2VzQ29tbWl0KQoreworICAgIE93blB0cjxNb2NrTm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0PiBub25Db21wb3NpdGVkQ29udGVudEhvc3QoTW9ja05vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dDo6Y3JlYXRlKCkpOworCisgICAgR3JhcGhpY3NMYXllciogcm9vdExheWVyID0gbm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0LT50b3BMZXZlbFJvb3RMYXllcigpOworCisgICAgRVhQRUNUX0NBTEwo
Km5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCwgbm90aWZ5U3luY1JlcXVpcmVkKF8pKS5UaW1lcygx
KTsKKyAgICByb290TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+c2V0U2Nyb2xsUG9zaXRpb24oSW50
UG9pbnQoMSwgMSkpOworICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKG5vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdC5nZXQoKSk7CisKKyAgICBFWFBFQ1RfQ0FMTCgqbm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0LCBub3RpZnlTeW5jUmVxdWlyZWQoXykpLlRpbWVzKEF0TGVhc3QoMSkp
OworICAgIG5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0Vmlld3BvcnQoSW50U2l6ZSgzMCwg
MzApLCBJbnRTaXplKDIwLCAyMCksIEludFBvaW50KDEwLCAxMCksIDEpOworfQorCiB9IC8vIG5h
bWVzcGFjZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>