<?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>92900</bug_id>
          
          <creation_ts>2012-08-01 12:35:05 -0700</creation_ts>
          <short_desc>[chromium] Upstream android&apos;s FlingAnimator</short_desc>
          <delta_ts>2012-08-08 13:40:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>66687</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>684470</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-08-01 12:35:05 -0700</bug_when>
    <thetext>Also, include a USE(FLING_ANIMATOR) flag to keep track of the associated code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684483</commentid>
    <comment_count>1</comment_count>
      <attachid>155863</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-08-01 12:47:30 -0700</bug_when>
    <thetext>Created attachment 155863
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684492</commentid>
    <comment_count>2</comment_count>
      <attachid>155863</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-01 12:55:02 -0700</bug_when>
    <thetext>Comment on attachment 155863
patch

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

&gt; Source/WebKit/chromium/src/android/FlingAnimator.cpp:30
&gt; +#include &quot;base/android/jni_android.h&quot;
&gt; +#include &quot;base/android/scoped_java_ref.h&quot;

This #include won&apos;t compile in all configs and is a bad dependency.

I don&apos;t think any WebKit code should know about JNI.  Previously when we talked about this animator we had (I thought) decided that this code should call out to chromium code via WebKit API and chromium code can do whatever communication with JNI it needs to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684505</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-01 13:12:56 -0700</bug_when>
    <thetext>For context, FlingAnimator is responsible for about 15% of the remaining chromium-android diff in Source/WebKit.

The idea behind this patch is to remove this code from the diff and unblock the upstreaming effort.  Eventually, this code will be removed in favor of asking the embedder to supply the gesture animation curve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684507</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-01 13:18:13 -0700</bug_when>
    <thetext>I understand, but #include&apos;ing base/... is not something we can sustain upstream.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684519</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-01 13:29:36 -0700</bug_when>
    <thetext>Maybe we should change FlingAnimator to be WebFlingAnimator and put the Impl in Chromium where it can #include base.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684526</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-01 13:36:18 -0700</bug_when>
    <thetext>That&apos;s pretty much what I&apos;m suggesting in comment #2.  We talked about this (me and some clank graphics folks) a few months ago and I thought everyone had agreed to do so at the time, but I&apos;m guessing nobody actually did anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684541</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-01 13:48:49 -0700</bug_when>
    <thetext>Ah, I misunderstood what you were suggesting.  Yes.  The problem is that no one has done that and we&apos;re now running up against this as a blocker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684551</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-01 13:53:14 -0700</bug_when>
    <thetext>Sounds like a good reason to do it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689237</commentid>
    <comment_count>9</comment_count>
      <attachid>156965</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-08-07 11:44:09 -0700</bug_when>
    <thetext>Created attachment 156965
Add public interface so impl can live downstream</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689243</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 11:47:29 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689244</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 11:47:48 -0700</bug_when>
    <thetext>Attachment 156965 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/WebKit/chromium/src/PlatformGestureCurveFactory.h:39:  The parameter name &quot;point&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/src/PlatformGestureCurveFactory.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689248</commentid>
    <comment_count>12</comment_count>
      <attachid>156965</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-07 11:50:11 -0700</bug_when>
    <thetext>Comment on attachment 156965
Add public interface so impl can live downstream

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

&gt; Source/Platform/chromium/public/Platform.h:414
&gt; +    virtual WebFlingAnimator* createFlingAnimator() { return 0; }

If you&apos;re going to reference WebFlingAnimator from Source/Platform, you should move WebFlingAnimator.h to Source/Platform/chromium/public.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689297</commentid>
    <comment_count>13</comment_count>
      <attachid>156980</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-08-07 12:53:24 -0700</bug_when>
    <thetext>Created attachment 156980
Move WebFlingAnimator.h to Platform, fix style issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689298</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 12:56:29 -0700</bug_when>
    <thetext>Attachment 156980 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/WebKit/chromium/src/WebFlingAnimatorToGestureCurveAdapter.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689302</commentid>
    <comment_count>15</comment_count>
      <attachid>156980</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-07 13:01:41 -0700</bug_when>
    <thetext>Comment on attachment 156980
Move WebFlingAnimator.h to Platform, fix style issues

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

&gt; Source/Platform/chromium/public/WebFlingAnimator.h:2
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

2012

&gt; Source/Platform/chromium/public/WebFlingAnimator.h:39
&gt; +    virtual void startFling(const WebCore::FloatPoint&amp; velocity, const WebCore::IntRect&amp; range) = 0;

We can&apos;t use WebCore:: types in the public API since code that isn&apos;t in WebKit can&apos;t use these types - stuff in chromium can&apos;t include any WebCore headers.  We have wrapper types for geometry classes that you can use instead - WebFloatPoint, WebRect, etc.  They&apos;re just simple POD structs with some helpers to easily convert back/forth with WebCore and chromium types.

&gt; Source/WebKit/chromium/src/PlatformGestureCurveFactory.h:2
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

2012

I think you could put all of this in WebCore/platform/chromium/support/ - that&apos;s the preferred location for implementations of Platform API that depends on WebCore but doesn&apos;t depend on anything in WebKit/chromium/src/

&gt; Source/WebKit/chromium/src/WebFlingAnimatorToGestureCurveAdapter.h:46
&gt; +    // WebCore::PlatformGestureCurve implementation:

could you add OVERRIDE annotations to functions that override from some base class? they go after the signature and just before the implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689343</commentid>
    <comment_count>16</comment_count>
      <attachid>156992</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-08-07 13:43:05 -0700</bug_when>
    <thetext>Created attachment 156992
Address jamesr&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689511</commentid>
    <comment_count>17</comment_count>
      <attachid>156992</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-07 15:47:13 -0700</bug_when>
    <thetext>Comment on attachment 156992
Address jamesr&apos;s comments

I&apos;m happy with WebFlingAnimator, PlatformGestureCurve*, etc but have some questions about the WebCompositorInputHandlerImpl and CC* changes.  Could you break those changes out to a different patch so we can land that part and then hash out the scrolling behavior details?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689548</commentid>
    <comment_count>18</comment_count>
      <attachid>157032</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-08-07 16:01:37 -0700</bug_when>
    <thetext>Created attachment 157032
Remove WebKit/chromium and WebCore/platform/graphics/chromium/ changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689557</commentid>
    <comment_count>19</comment_count>
      <attachid>157032</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-07 16:06:49 -0700</bug_when>
    <thetext>Comment on attachment 157032
Remove WebKit/chromium and WebCore/platform/graphics/chromium/ changes

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

R=me. Will wait for the EWS bot before touching cq, just to be safe.

&gt; Source/Platform/ChangeLog:8
&gt; +        Tests in chromium&apos;s WebCompositorInputHandlerImplTest.

This isn&apos;t quite accurate any more

&gt; Source/WebCore/ChangeLog:8
&gt; +        Tests in chromium&apos;s WebCompositorInputHandlerImplTest.

I think you want to update this bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689605</commentid>
    <comment_count>20</comment_count>
      <attachid>157041</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-08-07 16:45:55 -0700</bug_when>
    <thetext>Created attachment 157041
Address ChangeLog nits</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689607</commentid>
    <comment_count>21</comment_count>
      <attachid>157042</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-08-07 16:47:19 -0700</bug_when>
    <thetext>Created attachment 157042
Address ChangeLog nits</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689774</commentid>
    <comment_count>22</comment_count>
      <attachid>157042</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 19:43:07 -0700</bug_when>
    <thetext>Comment on attachment 157042
Address ChangeLog nits

Rejecting attachment 157042 from commit-queue.

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

Last 500 characters of output:
hromium/support/WebFlingAnimatorToGestureCurveAdapter.h
patching file Source/WebCore/platform/chromium/support/PlatformGestureCurveFactory.cpp
patching file Source/WebCore/WebCore.gypi
Hunk #1 FAILED at 8216.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebCore/WebCore.gypi.rej
patching file Source/WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/13456304</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690507</commentid>
    <comment_count>23</comment_count>
      <attachid>157253</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-08-08 10:49:34 -0700</bug_when>
    <thetext>Created attachment 157253
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690574</commentid>
    <comment_count>24</comment_count>
      <attachid>157253</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-08 11:52:16 -0700</bug_when>
    <thetext>Comment on attachment 157253
Patch for landing

Clearing flags on attachment: 157253

Committed r125061: &lt;http://trac.webkit.org/changeset/125061&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690575</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-08 11:52:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690663</commentid>
    <comment_count>26</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-08-08 13:26:52 -0700</bug_when>
    <thetext>Reopening for the second stage...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690669</commentid>
    <comment_count>27</comment_count>
      <attachid>157280</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-08-08 13:28:46 -0700</bug_when>
    <thetext>Created attachment 157280
The remainder (cc and WebKit/chromium changes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690671</commentid>
    <comment_count>28</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-08 13:32:31 -0700</bug_when>
    <thetext>New bug, please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690684</commentid>
    <comment_count>29</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-08-08 13:39:20 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; New bug, please.

Doh, sorry.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155863</attachid>
            <date>2012-08-01 12:47:30 -0700</date>
            <delta_ts>2012-08-07 11:44:09 -0700</delta_ts>
            <desc>patch</desc>
            <filename>fling.txt</filename>
            <type>text/plain</type>
            <size>24537</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGxUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAJKHJldmlzaW9uIDEyNDMz
OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGxUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsMTEgQEAKICNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUG9p
bnQuaCIKIAorI2lmIFVTRShGTElOR19BTklNQVRPUikKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisj
aW5jbHVkZSAiYW5kcm9pZC9GbGluZ0FuaW1hdG9yLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgPGdt
b2NrL2dtb2NrLmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CkBAIC01Nyw2ICs2MiwxMCBAQAogICAgIE1PQ0tfTUVUSE9EMihwaW5jaEdlc3R1cmVV
cGRhdGUsIHZvaWQoZmxvYXQgbWFnbmlmeURlbHRhLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
YW5jaG9yKSk7CiAgICAgTU9DS19NRVRIT0QwKHBpbmNoR2VzdHVyZUVuZCwgdm9pZCgpKTsKIAor
I2lmIFVTRShGTElOR19BTklNQVRPUikKKyAgICBXZWJDb3JlOjpJbnRSZWN0IHNjcm9sbFJhbmdl
KCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6SW50UmVjdCgpOyB9CisjZW5kaWYKKwogICAgIE1P
Q0tfTUVUSE9EMChzY2hlZHVsZUFuaW1hdGlvbiwgdm9pZCgpKTsKIAogICAgIE1PQ0tfTUVUSE9E
MihzY3JvbGxCZWdpbiwgU2Nyb2xsU3RhdHVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2Vi
Q29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElucHV0VHlwZSkpOwpAQCAtMTE3LDYg
KzEyNiw0MSBAQAogICAgIFdlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CiB9CiAKKyNpZiBVU0Uo
RkxJTkdfQU5JTUFUT1IpCitjbGFzcyBUZXN0RmxpbmdBbmltYXRvciA6IHB1YmxpYyBXZWJLaXQ6
OkZsaW5nQW5pbWF0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFRlc3RGbGlu
Z0FuaW1hdG9yPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBU
ZXN0RmxpbmdBbmltYXRvcigpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRGbGlu
Zyhjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgcmFuZ2UpCisgICAgeworICAgICAgICBtX3ZlbG9jaXR5ID0gV2ViQ29yZTo6SW50U2l6
ZSgoaW50KXZlbG9jaXR5LngoKSwgKGludCl2ZWxvY2l0eS55KCkpOworICAgIH0KKworICAgIHZp
cnR1YWwgYm9vbCB1cGRhdGVQb3NpdGlvbigpCisgICAgeworICAgICAgICAvLyBTY3JvbGwgZm9y
ZXZlciBvbmNlIHN0YXJ0ZWQgZm9yIHRoZSBwdXJwb3NlIG9mIHRoZXNlIHRlc3RzLgorICAgICAg
ICAvLyBXZSBkb24ndCB3YW50IHRvIG1ha2UgdGhlbSB0aW1pbmctc2Vuc2l0aXZlIGFueXdheXMu
CisgICAgICAgIHJldHVybiBtX3ZlbG9jaXR5LndpZHRoKCkgPiAwIHx8IG1fdmVsb2NpdHkuaGVp
Z2h0KCkgPiAwOworICAgIH0KKworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgZ2V0Q3Vy
cmVudFBvc2l0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xhc3RQb3NpdGlvbiArPSBt
X3ZlbG9jaXR5OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxGbGluZygpCisgICAg
eworICAgICAgICBtX3ZlbG9jaXR5ID0gV2ViQ29yZTo6SW50U2l6ZSgpOworICAgIH0KK3ByaXZh
dGU6CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9sYXN0UG9zaXRpb247CisgICAgV2ViQ29yZTo6
SW50U2l6ZSBtX3ZlbG9jaXR5OworfTsKKyNlbmRpZgorCiBjbGFzcyBXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAg
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0KCkKQEAgLTEyNSw2ICsxNjksOSBAQAog
ICAgICAgICBXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOwogICAgICAgICBtX2lucHV0SGFu
ZGxlciA9IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpjcmVhdGUoJm1fbW9ja0NDSW5w
dXRIYW5kbGVyQ2xpZW50KTsKICAgICAgICAgbV9pbnB1dEhhbmRsZXItPnNldENsaWVudCgmbV9t
b2NrQ2xpZW50KTsKKyNpZiBVU0UoRkxJTkdfQU5JTUFUT1IpCisgICAgICAgIG1faW5wdXRIYW5k
bGVyLT5zZXRGbGluZ0FuaW1hdG9yKFRlc3RGbGluZ0FuaW1hdG9yOjpjcmVhdGUoKSk7CisjZW5k
aWYKICAgICB9CiAKICAgICB+V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0KCkKQEAg
LTMzNiwxMiArMzgzLDM5IEBACiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQo
Z2VzdHVyZSk7CiB9CiAKKyNpZiBVU0UoRkxJTkdfQU5JTUFUT1IpCisvLyBGSVhNRTogU29ydCBv
dXQgd2hldGhlciBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRvdWNoIGFuZCB3aGVlbCBmbGluZyBhcmUg
bmVlZGVkLgorLy8gV2Ugc2hvdWxkIGVpdGhlciBoYXZlIGRpZmZlcmVudCBjb25jZXB0cyBvZiB0
b3VjaCBhbmQgbW91c2Ugd2hlZWwgZmxpbmcgYmFzZWQgb24gYSBtYWNybywKKy8vIGFuZCB0aGVu
IHJ1biBhIGRpZmZlcmVudCB0ZXN0IGhlcmUgYmFzZWQgb24gdGhhdC4gT3IgdW5pZnkgdGhlIGNv
ZGUgYW5kIGhhbmRsZSB0aGUKKy8vIGRpZmZlcmVuY2VzIGluIHNjcm9sbCBiZWhhdmlvciBhdCBh
IGRpZmZlcmVudCBsZXZlbC4KKy8vIFRoZSBjdXJyZW50IGRpZmZlcmVuY2VzIGNvbWUgZG93biB0
byBtb3VzZSB3aGVlbCBmbGluZyB3cmFwcGluZyBlYWNoIGZsaW5nIHVwZGF0ZSBpbgorLy8gYSBi
ZWdpbi9lbmQgcGFpciBpbiB0aGUgb3RoZXIgdmVyc2lvbiBvZiB0aGUgdGVzdCBmdXJ0aGVyIGRv
d24uCiBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxp
bmdBbmltYXRlcykKIHsKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2VuZCBhbnkgZXZlbnRzIHRvIHRo
ZSB3aWRnZXQgZm9yIHRoaXMgZ2VzdHVyZS4KICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBE
aWRIYW5kbGU7CiAgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCisgICAgZ2VzdHVyZS50
eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKKyAgICBnZXN0
dXJlLmRlbHRhWCA9IC0xMDAwOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVy
Q2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lu
cHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCisg
ICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJD
bGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKKyAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRF
dmVudChnZXN0dXJlKTsKKworICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0
YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CisgICAgRVhQRUNUX0NBTEwobV9t
b2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOworICAgIEVYUEVD
VF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpf
LCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhh
bmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXpl
Ojp3aWR0aCwgdGVzdGluZzo6R3QoMCkpKSkuVGltZXMoMSk7CisgICAgbV9pbnB1dEhhbmRsZXIt
PmFuaW1hdGUoMTApOworfQorI2Vsc2UKK1RFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbFRlc3QsIGdlc3R1cmVGbGluZ0FuaW1hdGVzKQoreworICAgIC8vIFdlIHNob3VsZG4ndCBz
ZW5kIGFueSBldmVudHMgdG8gdGhlIHdpZGdldCBmb3IgdGhpcyBnZXN0dXJlLgorICAgIG1fZXhw
ZWN0ZWREaXNwb3NpdGlvbiA9IERpZEhhbmRsZTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tT
KCk7CisKICAgICAvLyBPbiB0aGUgZmxpbmcgc3RhcnQsIHdlIHNob3VsZCBzY2hlZHVsZSBhbiBh
bmltYXRpb24gYnV0IG5vdCBhY3R1YWxseSBzdGFydAogICAgIC8vIHNjcm9sbGluZy4KICAgICBn
ZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKQEAgLTU2MSw1
ICs2MzUsNiBAQAogICAgICAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYlNpemU6OmhlaWdodCwg
dGVzdGluZzo6THQoMCkpKSkpKTsKICAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgzMC4yKTsK
IH0KKyNlbmRpZiAvLyBVU0UoRkxJTkdfQU5JTUFUT1IpCiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjQzNTUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA4LTAxICBO
YXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXBzdHJlYW0gYW5k
cm9pZCdzIEZsaW5nQW5pbWF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkyOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6V2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbDo6aGFuZGxlR2VzdHVyZUZsaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGw6OmNhbmNlbEN1cnJlbnRGbGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSk6CisgICAgICAg
ICogc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2V0RmxpbmdBbmltYXRvcik6Cisg
ICAgICAgICogc3JjL2FuZHJvaWQvRmxpbmdBbmltYXRvci5jcHA6IEFkZGVkLgorICAgICAgICAq
IHNyYy9hbmRyb2lkL0ZsaW5nQW5pbWF0b3IuaDogQWRkZWQuCisgICAgICAgICogdGVzdHMvV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcDoKKyAgICAgICAgKE1vY2tDQ0lucHV0
SGFuZGxlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tDQ0lucHV0SGFuZGxlckNsaWVu
dDo6c2Nyb2xsUmFuZ2UpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFRlc3RGbGluZ0Fu
aW1hdG9yKToKKyAgICAgICAgKFdlYktpdDo6VGVzdEZsaW5nQW5pbWF0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlRlc3RGbGluZ0FuaW1hdG9yOjpzdGFydEZsaW5nKToKKyAgICAgICAg
KFdlYktpdDo6VGVzdEZsaW5nQW5pbWF0b3I6OnVwZGF0ZVBvc2l0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6VGVzdEZsaW5nQW5pbWF0b3I6OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlRlc3RGbGluZ0FuaW1hdG9yOjpjYW5jZWxGbGluZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdDo6V2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGxUZXN0KToKKyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKwogMjAxMi0wOC0wMSAg
RGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSb2xsIGNocm9t
aXVtIERFUFMgdG8gMTQ5NDE2LgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvYW5k
cm9pZC9GbGluZ0FuaW1hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvYW5kcm9pZC9GbGluZ0FuaW1hdG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9hbmRyb2lkL0ZsaW5nQW5pbWF0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRmxpbmdBbmltYXRvcl9oCisjZGVmaW5l
IEZsaW5nQW5pbWF0b3JfaAorCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIklu
dFBvaW50LmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVy
ZUN1cnZlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQuaCIKKyNpbmNs
dWRlICJiYXNlL2FuZHJvaWQvc2NvcGVkX2phdmFfcmVmLmgiCisjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBGbGluZ0FuaW1hdG9yIHsK
K3B1YmxpYzoKKyAgICBGbGluZ0FuaW1hdG9yKCkgeyB9CisgICAgdmlydHVhbCB+RmxpbmdBbmlt
YXRvcigpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0RmxpbmcoY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJhbmdlKSA9IDA7
CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBhbmltYXRpb24gaXMgbm90IHlldCBmaW5pc2hl
ZC4KKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlUG9zaXRpb24oKSA9IDA7CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpJbnRQb2ludCBnZXRDdXJyZW50UG9zaXRpb24oKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNhbmNlbEZsaW5nKCkgPSAwOworfTsKKworY2xhc3MgRmxpbmdBbmltYXRvckltcGwgOiBw
dWJsaWMgRmxpbmdBbmltYXRvciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRmxpbmdBbmlt
YXRvckltcGwpOworcHVibGljOgorICAgIEZsaW5nQW5pbWF0b3JJbXBsKCk7CisgICAgdmlydHVh
bCB+RmxpbmdBbmltYXRvckltcGwoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzdGFydEZsaW5nKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiByYW5nZSk7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBhbmltYXRpb24gaXMgbm90IHll
dCBmaW5pc2hlZC4KKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlUG9zaXRpb24oKTsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6OkludFBvaW50IGdldEN1cnJlbnRQb3NpdGlvbigpOworICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWxGbGluZygpOworcHJpdmF0ZToKKyAgICBib29sIG1fYWN0aXZlOworCisgICAg
Ly8gSmF2YSBPdmVyU2Nyb2xsZXIgaW5zdGFuY2UgYW5kIG1ldGhvZHMuCisgICAgYmFzZTo6YW5k
cm9pZDo6U2NvcGVkSmF2YUdsb2JhbFJlZjxqb2JqZWN0PiBtX2phdmFTY3JvbGxlcjsKKyAgICBq
bWV0aG9kSUQgbV9mbGluZ01ldGhvZElkOworICAgIGptZXRob2RJRCBtX2Fib3J0TWV0aG9kSWQ7
CisgICAgam1ldGhvZElEIG1fY29tcHV0ZU1ldGhvZElkOworICAgIGptZXRob2RJRCBtX2dldFhN
ZXRob2RJZDsKKyAgICBqbWV0aG9kSUQgbV9nZXRZTWV0aG9kSWQ7Cit9OworCitjbGFzcyBGbGlu
Z0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3Jt
R2VzdHVyZUN1cnZlIHsKK3B1YmxpYzoKKyAgICBGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVB
ZGFwdGVyKEZsaW5nQW5pbWF0b3IqIGFuaW1hdG9yKQorICAgICAgICA6IG1fYW5pbWF0b3IoYW5p
bWF0b3IpCisgICAgeworICAgIH0KKworICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1
cnZlIGltcGxlbWVudGF0aW9uOgorICAgIHZpcnR1YWwgY29uc3QgY2hhciogZGVidWdOYW1lKCkg
Y29uc3QgeyByZXR1cm4gIkFuZHJvaWRGbGluZ0FuaW1hdG9yIjsgfQorICAgIHZpcnR1YWwgYm9v
bCBhcHBseShkb3VibGUgdGltZSwgV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQq
IHRhcmdldCkKKyAgICB7CisgICAgICAgIGlmICghbV9hbmltYXRvci0+dXBkYXRlUG9zaXRpb24o
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBXZWJDb3JlOjpJbnRQb2lu
dCBjdXJyZW50UG9zaXRpb24gPSBtX2FuaW1hdG9yLT5nZXRDdXJyZW50UG9zaXRpb24oKTsKKyAg
ICAgICAgdGFyZ2V0LT5zY3JvbGxCeShXZWJDb3JlOjpJbnRQb2ludChjdXJyZW50UG9zaXRpb24g
LSBtX2xhc3RQb3NpdGlvbikpOworICAgICAgICBtX2xhc3RQb3NpdGlvbiA9IGN1cnJlbnRQb3Np
dGlvbjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIEZsaW5n
QW5pbWF0b3IqIG1fYW5pbWF0b3I7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9sYXN0UG9zaXRp
b247Cit9OworCit9CisKKyNlbmRpZiAvLyBGbGluZ0FuaW1hdG9yX2gKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL2FuZHJvaWQvRmxpbmdBbmltYXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvYW5kcm9pZC9GbGluZ0FuaW1hdG9yLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2FuZHJvaWQvRmxpbmdB
bmltYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmxpbmdBbmltYXRvci5oIgorCisjaW5jbHVkZSAi
YmFzZS9hbmRyb2lkL2puaV9hbmRyb2lkLmgiCisjaW5jbHVkZSAiYmFzZS9hbmRyb2lkL3Njb3Bl
ZF9qYXZhX3JlZi5oIgorCit1c2luZyBuYW1lc3BhY2UgYmFzZTo6YW5kcm9pZDsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK0ZsaW5nQW5pbWF0b3JJbXBsOjpGbGluZ0FuaW1hdG9ySW1wbCgpCisg
ICAgOiBtX2FjdGl2ZShmYWxzZSkKK3sKKyAgICAvLyBob2xkIHRoZSBnbG9iYWwgcmVmZXJlbmNl
IG9mIHRoZSBKYXZhIG9iamVjdHMuCisgICAgSk5JRW52KiBlbnYgPSBBdHRhY2hDdXJyZW50VGhy
ZWFkKCk7CisgICAgQVNTRVJUKGVudik7CisgICAgU2NvcGVkSmF2YUxvY2FsUmVmPGpjbGFzcz4g
Y2xzKEdldENsYXNzKGVudiwgImFuZHJvaWQvd2lkZ2V0L092ZXJTY3JvbGxlciIpKTsKKyAgICBq
bWV0aG9kSUQgY29uc3RydWN0b3IgPSBHZXRNZXRob2RJRChlbnYsIGNscywgIjxpbml0PiIsICIo
TGFuZHJvaWQvY29udGVudC9Db250ZXh0OylWIik7CisgICAgU2NvcGVkSmF2YUxvY2FsUmVmPGpv
YmplY3Q+IHRtcChlbnYsIGVudi0+TmV3T2JqZWN0KGNscy5vYmooKSwgY29uc3RydWN0b3IsIEdl
dEFwcGxpY2F0aW9uQ29udGV4dCgpKSk7CisgICAgQVNTRVJUKHRtcC5vYmooKSk7CisgICAgbV9q
YXZhU2Nyb2xsZXIuUmVzZXQodG1wKTsKKworICAgIG1fZmxpbmdNZXRob2RJZCA9IEdldE1ldGhv
ZElEKGVudiwgY2xzLCAiZmxpbmciLCAiKElJSUlJSUlJSUkpViIpOworICAgIG1fYWJvcnRNZXRo
b2RJZCA9IEdldE1ldGhvZElEKGVudiwgY2xzLCAiYWJvcnRBbmltYXRpb24iLCAiKClWIik7Cisg
ICAgbV9jb21wdXRlTWV0aG9kSWQgPSBHZXRNZXRob2RJRChlbnYsIGNscywgImNvbXB1dGVTY3Jv
bGxPZmZzZXQiLCAiKClaIik7CisgICAgbV9nZXRYTWV0aG9kSWQgPSBHZXRNZXRob2RJRChlbnYs
IGNscywgImdldEN1cnJYIiwgIigpSSIpOworICAgIG1fZ2V0WU1ldGhvZElkID0gR2V0TWV0aG9k
SUQoZW52LCBjbHMsICJnZXRDdXJyWSIsICIoKUkiKTsKK30KKworRmxpbmdBbmltYXRvckltcGw6
On5GbGluZ0FuaW1hdG9ySW1wbCgpCit7Cit9CisKK3ZvaWQgRmxpbmdBbmltYXRvckltcGw6OnN0
YXJ0RmxpbmcoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHJhbmdlKQoreworICAgIEFTU0VSVCh2ZWxvY2l0eS54KCkgfHwgdmVsb2Np
dHkueSgpKTsKKworICAgIGlmIChtX2FjdGl2ZSkKKyAgICAgICAgY2FuY2VsRmxpbmcoKTsKKwor
ICAgIG1fYWN0aXZlID0gdHJ1ZTsKKworICAgIEpOSUVudiogZW52ID0gQXR0YWNoQ3VycmVudFRo
cmVhZCgpOworICAgIGVudi0+Q2FsbFZvaWRNZXRob2QobV9qYXZhU2Nyb2xsZXIub2JqKCksIG1f
ZmxpbmdNZXRob2RJZCwgMCwgMCwgKGludCl2ZWxvY2l0eS54KCksIChpbnQpdmVsb2NpdHkueSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UueCgpLCByYW5nZS5tYXhYKCksIHJhbmdl
LnkoKSwgcmFuZ2UubWF4WSgpLCAwLCAwKTsKKyAgICBDaGVja0V4Y2VwdGlvbihlbnYpOworfQor
Cit2b2lkIEZsaW5nQW5pbWF0b3JJbXBsOjpjYW5jZWxGbGluZygpCit7CisgICAgaWYgKCFtX2Fj
dGl2ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hY3RpdmUgPSBmYWxzZTsKKyAgICBKTklF
bnYqIGVudiA9IEF0dGFjaEN1cnJlbnRUaHJlYWQoKTsKKyAgICBlbnYtPkNhbGxWb2lkTWV0aG9k
KG1famF2YVNjcm9sbGVyLm9iaigpLCBtX2Fib3J0TWV0aG9kSWQpOworICAgIENoZWNrRXhjZXB0
aW9uKGVudik7Cit9CisKK2Jvb2wgRmxpbmdBbmltYXRvckltcGw6OnVwZGF0ZVBvc2l0aW9uKCkK
K3sKKyAgICBKTklFbnYqIGVudiA9IEF0dGFjaEN1cnJlbnRUaHJlYWQoKTsKKyAgICBib29sIHJl
c3VsdCA9IGVudi0+Q2FsbEJvb2xlYW5NZXRob2QobV9qYXZhU2Nyb2xsZXIub2JqKCksIG1fY29t
cHV0ZU1ldGhvZElkKTsKKyAgICBDaGVja0V4Y2VwdGlvbihlbnYpOworICAgIHJldHVybiBtX2Fj
dGl2ZSA9IHJlc3VsdDsKK30KKworV2ViQ29yZTo6SW50UG9pbnQgRmxpbmdBbmltYXRvckltcGw6
OmdldEN1cnJlbnRQb3NpdGlvbigpCit7CisgICAgSk5JRW52KiBlbnYgPSBBdHRhY2hDdXJyZW50
VGhyZWFkKCk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9zaXRpb24oZW52LT5DYWxsSW50TWV0
aG9kKG1famF2YVNjcm9sbGVyLm9iaigpLCBtX2dldFhNZXRob2RJZCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZW52LT5DYWxsSW50TWV0aG9kKG1famF2YVNjcm9sbGVyLm9iaigp
LCBtX2dldFlNZXRob2RJZCkpOworICAgIENoZWNrRXhjZXB0aW9uKGVudik7CisgICAgcmV0dXJu
IHBvc2l0aW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbC5jcHAJKHJldmlzaW9uIDEyNDMzOCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzksNiArMzksMTAgQEAKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQu
aCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogCisjaWYgVVNFKEZMSU5H
X0FOSU1BVE9SKQorI2luY2x1ZGUgImFuZHJvaWQvRmxpbmdBbmltYXRvci5oIgorI2VuZGlmCisK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMjgs
NiArMTMyLDEwIEBACiAgICAgLCBtX2dlc3R1cmVTY3JvbGxTdGFydGVkKGZhbHNlKQogewogICAg
IEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisjaWYgVVNFKEZMSU5HX0FOSU1BVE9S
KQorICAgIGlmICghV2ViS2l0OjpsYXlvdXRUZXN0TW9kZSgpKQorICAgICAgICBtX2ZsaW5nQW5p
bWF0b3IgPSBhZG9wdFB0cihuZXcgRmxpbmdBbmltYXRvckltcGwpOworI2VuZGlmCiAKICAgICBp
ZiAoIXNfY29tcG9zaXRvcnMpCiAgICAgICAgIHNfY29tcG9zaXRvcnMgPSBuZXcgSGFzaFNldDxX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbCo+OwpAQCAtMjY5LDcgKzI3NywxMiBAQAogICAg
IHN3aXRjaCAoc2Nyb2xsU3RhdHVzKSB7CiAgICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6
U2Nyb2xsU3RhcnRlZDogewogICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZzo6c3RhcnRlZCIp
OworI2lmIFVTRShGTElOR19BTklNQVRPUikKKyAgICAgICAgbV9mbGluZ0FuaW1hdG9yLT5zdGFy
dEZsaW5nKEZsb2F0UG9pbnQoLWdlc3R1cmVFdmVudC5kZWx0YVgsIC1nZXN0dXJlRXZlbnQuZGVs
dGFZKSwgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbFJhbmdlKCkpOworICAgICAgICBPd25Q
dHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGZsaW5nQ3VydmUgPSBhZG9wdFB0cihuZXcgRmxpbmdB
bmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlcihtX2ZsaW5nQW5pbWF0b3IuZ2V0KCkpKTsKKyNl
bHNlCiAgICAgICAgIE93blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gZmxpbmdDdXJ2ZSA9IFRv
dWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKEZsb2F0UG9pbnQoZ2VzdHVy
ZUV2ZW50LmRlbHRhWCwgZ2VzdHVyZUV2ZW50LmRlbHRhWSkpOworI2VuZGlmCiAgICAgICAgIG1f
d2hlZWxGbGluZ0FuaW1hdGlvbiA9IENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFBs
YXRmb3JtR2VzdHVyZVRvQ0NHZXN0dXJlQWRhcHRlcjo6Y3JlYXRlKGZsaW5nQ3VydmUucmVsZWFz
ZSgpKSwgdGhpcyk7CiAgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZGVsdGEgPSBXZWJG
bG9hdFBvaW50KGdlc3R1cmVFdmVudC5kZWx0YVgsIGdlc3R1cmVFdmVudC5kZWx0YVkpOwogICAg
ICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLnBvaW50ID0gV2ViUG9pbnQoZ2VzdHVyZUV2ZW50
LngsIGdlc3R1cmVFdmVudC55KTsKQEAgLTMyMCw2ICszMzMsMTAgQEAKICAgICBUUkFDRV9FVkVO
VF9JTlNUQU5UMSgiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmNhbmNlbEN1
cnJlbnRGbGluZyIsICJoYWRGbGluZ0FuaW1hdGlvbiIsIGhhZEZsaW5nQW5pbWF0aW9uKTsKICAg
ICBtX3doZWVsRmxpbmdBbmltYXRpb24uY2xlYXIoKTsKICAgICBtX3doZWVsRmxpbmdQYXJhbWV0
ZXJzID0gV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMoKTsKKyNpZiBVU0UoRkxJTkdfQU5J
TUFUT1IpCisgICAgaWYgKGhhZEZsaW5nQW5pbWF0aW9uKQorICAgICAgICBtX2lucHV0SGFuZGxl
ckNsaWVudC0+c2Nyb2xsRW5kKCk7CisjZW5kaWYKICAgICByZXR1cm4gaGFkRmxpbmdBbmltYXRp
b247CiB9CiAKQEAgLTMyOCw2ICszNDUsMTIgQEAKICAgICBpZiAoaW5jcmVtZW50ID09IEludFBv
aW50Ojp6ZXJvKCkpCiAgICAgICAgIHJldHVybjsKIAorI2lmIFVTRShGTElOR19BTklNQVRPUikK
KyAgICBBU1NFUlQobV93aGVlbEZsaW5nQW5pbWF0aW9uLmdldCgpKTsKKyAgICBtX2lucHV0SGFu
ZGxlckNsaWVudC0+c2Nyb2xsQnkoSW50U2l6ZShpbmNyZW1lbnQueCgpLCBpbmNyZW1lbnQueSgp
KSk7CisgICAgcmV0dXJuOworI2VuZGlmCisKICAgICBUUkFDRV9FVkVOVDIoImNjIiwgIldlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSIsICJ4IiwgaW5jcmVtZW50LngoKSwg
InkiLCBpbmNyZW1lbnQueSgpKTsKICAgICBXZWJNb3VzZVdoZWVsRXZlbnQgc3ludGhldGljV2hl
ZWw7CiAgICAgc3ludGhldGljV2hlZWwudHlwZSA9IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWw7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgJKHJldmlzaW9uIDEyNDMzOCkKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDYgKzUxLDEwIEBACiAKIGNsYXNzIFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJDbGllbnQ7CiAKKyNpZiBVU0UoRkxJTkdfQU5JTUFUT1IpCitjbGFzcyBGbGluZ0FuaW1h
dG9yOworI2VuZGlmCisKIGNsYXNzIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsIDogcHVi
bGljIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXIsIHB1YmxpYyBXZWJDb3JlOjpDQ0lucHV0SGFu
ZGxlciwgcHVibGljIFdlYkNvcmU6OkNDR2VzdHVyZUN1cnZlVGFyZ2V0IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbCk7CiBwdWJsaWM6CkBA
IC03MCw2ICs3NCwxMSBAQAogICAgIC8vIFdlYkNvcmU6OkNDR2VzdHVyZUN1cnZlVGFyZ2V0IGlt
cGxlbWVudGF0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYpOwogCisjaWYgVVNFKEZMSU5HX0FOSU1BVE9SKQorICAgIC8vIFVzZWQgZm9yIG1v
Y2tpbmcgdGhlIEphdmEgT3ZlcnNjcm9sbGVyIGluIHRlc3RzLgorICAgIHZvaWQgc2V0RmxpbmdB
bmltYXRvcihQYXNzT3duUHRyPEZsaW5nQW5pbWF0b3I+IGFuaW1hdG9yKSB7IG1fZmxpbmdBbmlt
YXRvciA9IGFuaW1hdG9yOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbChXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudCop
OwogCkBAIC05MSw2ICsxMDAsMTAgQEAKICAgICBpbnQgbV9pZGVudGlmaWVyOwogICAgIFdlYkNv
cmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50KiBtX2lucHV0SGFuZGxlckNsaWVudDsKIAorI2lmIFVT
RShGTElOR19BTklNQVRPUikKKyAgICBPd25QdHI8RmxpbmdBbmltYXRvcj4gbV9mbGluZ0FuaW1h
dG9yOworI2VuZGlmCisKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBtX2V4cGVjdFNjcm9sbFVw
ZGF0ZUVuZDsKICAgICBib29sIG1fZXhwZWN0UGluY2hVcGRhdGVFbmQ7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMjQzNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0wOC0wMSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXBzdHJlYW0gYW5kcm9pZCdzIEZs
aW5nQW5pbWF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkyOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGEgc2Nyb2xsUmFuZ2UoKSBmdW5jdGlvbiB0byBDQ0lucHV0SGFuZGxlckNsaWVudC4K
KworICAgICAgICBUZXN0cyBpbiBjaHJvbWl1bSdzIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsVGVzdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5w
dXRIYW5kbGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFNjcm9sbFJhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4cGFuZFNjcm9sbFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVl
SG9zdEltcGw6OnNjcm9sbFJhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisKIDIwMTItMDgtMDEgIEt3YW5nIFl1bCBT
ZW8gIDxza3l1bEBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBIVE1MVHJlZUJ1aWxkZXIgcGFz
c2VzIGEgd3JvbmcgdG9rZW4gd2hlbiBwdXNoaW5nIHRoZSBoZWFkIGVsZW1lbnQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NJbnB1dEhhbmRsZXIuaAkocmV2aXNpb24gMTI0MzM4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNiArMzIsOSBAQAogY2xhc3MgQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9u
OwogY2xhc3MgQ0NHZXN0dXJlQ3VydmVUYXJnZXQ7CiBjbGFzcyBJbnRQb2ludDsKKyNpZiBVU0Uo
RkxJTkdfQU5JTUFUT1IpCitjbGFzcyBJbnRSZWN0OworI2VuZGlmCiBjbGFzcyBJbnRTaXplOwog
CiAvLyBUaGUgQ0NJbnB1dEhhbmRsZXIgaXMgYSB3YXkgZm9yIHRoZSBlbWJlZGRlcnMgdG8gaW50
ZXJhY3Qgd2l0aApAQCAtNjUsNiArNjgsMTIgQEAKICAgICAvLyBjYWxsZWQgaWYgc2Nyb2xsQmVn
aW4oKSByZXR1cm5lZCBTY3JvbGxTdGFydGVkLgogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxFbmQo
KSA9IDA7CiAKKyNpZiBVU0UoRkxJTkdfQU5JTUFUT1IpCisgICAgLy8gUmV0dXJuIHRoZSBzY3Jv
bGwgcmFuZ2UgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgcG9zaXRpb24uIHRvcC9sZWZ0CisgICAg
Ly8gdmFsdWUgPD0gMCwgYW5kIGJvdHRvbS9yaWdodCB2YWx1ZSA+PSAwLgorICAgIHZpcnR1YWwg
SW50UmVjdCBzY3JvbGxSYW5nZSgpIGNvbnN0ID0gMDsKKyNlbmRpZgorCiAgICAgdmlydHVhbCB2
b2lkIHBpbmNoR2VzdHVyZUJlZ2luKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1
cmVVcGRhdGUoZmxvYXQgbWFnbmlmeURlbHRhLCBjb25zdCBJbnRQb2ludCYgYW5jaG9yKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZUVuZCgpID0gMDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgJKHJldmlzaW9uIDEyNDMzOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsMTAgQEAKICAgICB2aXJ0dWFsIHZvaWQgc2V0
QWN0aXZlR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPENDQWN0aXZlR2VzdHVyZUFuaW1hdGlv
bj4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpIE9WRVJS
SURFOwogCisjaWYgVVNFKEZMSU5HX0FOSU1BVE9SKQorICAgIHZpcnR1YWwgSW50UmVjdCBzY3Jv
bGxSYW5nZSgpIGNvbnN0OworI2VuZGlmCisKICAgICBzdHJ1Y3QgRnJhbWVEYXRhIHsKICAgICAg
ICAgVmVjdG9yPEludFJlY3Q+IG9jY2x1ZGluZ1NjcmVlblNwYWNlUmVjdHM7CiAgICAgICAgIEND
UmVuZGVyUGFzc0xpc3QgcmVuZGVyUGFzc2VzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHAJKHJldmlzaW9uIDEyNDMzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MjcsNiArOTI3LDUyIEBACiAgICAgY2xlYXJDdXJyZW50bHlTY3JvbGxp
bmdMYXllcigpOwogfQogCisjaWYgVVNFKEZMSU5HX0FOSU1BVE9SKQorc3RhdGljIGJvb2wgaXNW
YWxpZFNjcm9sbFJhbmdlKGNvbnN0IEludFJlY3QmIHNjcm9sbFJhbmdlKQoreworICAgIHJldHVy
biBzY3JvbGxSYW5nZS54KCkgPCAwICYmIHNjcm9sbFJhbmdlLnkoKSA8IDAgJiYgc2Nyb2xsUmFu
Z2UubWF4WCgpID4gMCAmJiBzY3JvbGxSYW5nZS5tYXhZKCkgPiAwOworfQorCitzdGF0aWMgdm9p
ZCBleHBhbmRTY3JvbGxSYW5nZShJbnRSZWN0JiBzY3JvbGxSYW5nZSwgZmxvYXQgc2NhbGUsIElu
dFBvaW50IHNjcm9sbFBvc2l0aW9uLCBJbnRTaXplIG1heFNjcm9sbFBvc2l0aW9uKQoreworICAg
IHNjcm9sbFBvc2l0aW9uLnNjYWxlKHNjYWxlLCBzY2FsZSk7CisgICAgbWF4U2Nyb2xsUG9zaXRp
b24uc2NhbGUoc2NhbGUpOworICAgIHNjcm9sbFBvc2l0aW9uLmNsYW1wTmVnYXRpdmVUb1plcm8o
KTsKKyAgICBtYXhTY3JvbGxQb3NpdGlvbiA9IG1heFNjcm9sbFBvc2l0aW9uLmV4cGFuZGVkVG8o
dG9TaXplKHNjcm9sbFBvc2l0aW9uKSk7CisgICAgLy8gT25seSBleHBhbmQgdGhlIHNjcm9sbCBy
YW5nZSBhbG9uZyBhbiBheGlzIGlmIHRoZXJlIHByZXZpb3VzbHkgd2FzIG5vIHJvb20gdG8gc2Ny
b2xsIGluIHRoYXQgZGlyZWN0aW9uLgorICAgIC8vIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgZmxp
bmdzIGRvIG5vdCBvdmVyc2hvb3QgdGhlIGJvdW5kYXJpZXMgb2YgYSBzY3JvbGxhYmxlIGVsZW1l
bnQgYW5kIHN0YXJ0IHNjcm9sbGluZworICAgIC8vIGl0cyBwYXJlbnQgaW5zdGVhZC4KKyAgICBp
ZiAoIXNjcm9sbFJhbmdlLngoKSkgeworICAgICAgICBzY3JvbGxSYW5nZS5zZXRYKC1zY3JvbGxQ
b3NpdGlvbi54KCkpOworICAgICAgICBzY3JvbGxSYW5nZS5zZXRXaWR0aChzY3JvbGxSYW5nZS53
aWR0aCgpICsgc2Nyb2xsUG9zaXRpb24ueCgpKTsKKyAgICB9CisgICAgaWYgKCFzY3JvbGxSYW5n
ZS55KCkpIHsKKyAgICAgICAgc2Nyb2xsUmFuZ2Uuc2V0WSgtc2Nyb2xsUG9zaXRpb24ueSgpKTsK
KyAgICAgICAgc2Nyb2xsUmFuZ2Uuc2V0SGVpZ2h0KHNjcm9sbFJhbmdlLmhlaWdodCgpICsgc2Ny
b2xsUG9zaXRpb24ueSgpKTsKKyAgICB9CisgICAgaWYgKCFzY3JvbGxSYW5nZS5tYXhYKCkpCisg
ICAgICAgIHNjcm9sbFJhbmdlLnNldFdpZHRoKG1heFNjcm9sbFBvc2l0aW9uLndpZHRoKCkgLSBz
Y3JvbGxQb3NpdGlvbi54KCkgLSBzY3JvbGxSYW5nZS54KCkpOworICAgIGlmICghc2Nyb2xsUmFu
Z2UubWF4WSgpKQorICAgICAgICBzY3JvbGxSYW5nZS5zZXRIZWlnaHQobWF4U2Nyb2xsUG9zaXRp
b24uaGVpZ2h0KCkgLSBzY3JvbGxQb3NpdGlvbi55KCkgLSBzY3JvbGxSYW5nZS55KCkpOworICAg
IEFTU0VSVChzY3JvbGxSYW5nZS54KCkgPD0gMCAmJiBzY3JvbGxSYW5nZS5tYXhYKCkgPj0gMCk7
CisgICAgQVNTRVJUKHNjcm9sbFJhbmdlLnkoKSA8PSAwICYmIHNjcm9sbFJhbmdlLm1heFkoKSA+
PSAwKTsKK30KKworSW50UmVjdCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxSYW5nZSgpIGNv
bnN0Cit7CisgICAgY29uc3QgQ0NMYXllckltcGwqIGxheWVySW1wbCA9IG1fcm9vdFNjcm9sbExh
eWVySW1wbDsKKyAgICBJbnRSZWN0IHNjcm9sbFJhbmdlOworCisgICAgaWYgKGxheWVySW1wbCAm
JiAhaXNWYWxpZFNjcm9sbFJhbmdlKHNjcm9sbFJhbmdlKSkgeworICAgICAgICBpZiAobGF5ZXJJ
bXBsLT5zY3JvbGxhYmxlKCkpIHsKKyAgICAgICAgICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9u
KGZsb29yZWRJbnRQb2ludChsYXllckltcGwtPnNjcm9sbFBvc2l0aW9uKCkgKyBsYXllckltcGwt
PnNjcm9sbERlbHRhKCkpKTsKKyAgICAgICAgICAgIGV4cGFuZFNjcm9sbFJhbmdlKHNjcm9sbFJh
bmdlLCBtX3BhZ2VTY2FsZURlbHRhLCBzY3JvbGxQb3NpdGlvbiwgbGF5ZXJJbXBsLT5tYXhTY3Jv
bGxQb3NpdGlvbigpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gc2Nyb2xsUmFuZ2U7
Cit9CisjZW5kaWYgLy8gVVNFKEZMSU5HX0FOSU1BVE9SKQorCiB2b2lkIENDTGF5ZXJUcmVlSG9z
dEltcGw6OnBpbmNoR2VzdHVyZUJlZ2luKCkKIHsKICAgICBtX3BpbmNoR2VzdHVyZUFjdGl2ZSA9
IHRydWU7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEyNDMzOCkKKysrIFNvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Myw2ICs0NzMsNyBAQAogI2RlZmlu
ZSBXVEZfVVNFX0xPV19RVUFMSVRZX0lNQUdFX0lOVEVSUE9MQVRJT04gMQogI2RlZmluZSBXVEZf
VVNFX0xPV19RVUFMSVRZX0lNQUdFX05PX0pQRUdfRElUSEVSSU5HIDEKICNkZWZpbmUgV1RGX1VT
RV9MT1dfUVVBTElUWV9JTUFHRV9OT19KUEVHX0ZBTkNZX1VQU0FNUExJTkcgMQorI2RlZmluZSBX
VEZfVVNFX0ZMSU5HX0FOSU1BVE9SIDEKICNlbHNlCiAjZGVmaW5lIFdURl9VU0VfU0tJQSAxCiAj
ZGVmaW5lIFdURl9VU0VfSUNDSlBFRyAxCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTI0MzU1KQorKysgU291
cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0w
OC0wMSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gVXBzdHJlYW0gYW5kcm9pZCdzIEZsaW5nQW5pbWF0b3IKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyOTAwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDogQWRkIFVTRShG
TElOR19BTklNQVRPUikuCisKIDIwMTItMDgtMDEgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgRXhwb3J0IFN0cmluZ0ltcGw6OnNpemVJbkJ5dGVzKCkg
d2l0aCBXVEZfRVhQT1JUX1NUUklOR19BUEkK
</data>
<flag name="review"
          id="165421"
          type_id="1"
          status="-"
          setter="jamesr"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156965</attachid>
            <date>2012-08-07 11:44:09 -0700</date>
            <delta_ts>2012-08-07 12:53:24 -0700</delta_ts>
            <desc>Add public interface so impl can live downstream</desc>
            <filename>fling.txt</filename>
            <type>text/plain</type>
            <size>26994</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZsaW5nQW5pbWF0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGbGluZ0FuaW1h
dG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
bGluZ0FuaW1hdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViRmxpbmdBbmltYXRvcl9oCisjZGVmaW5lIFdlYkZsaW5nQW5pbWF0b3JfaAorCisj
aW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAi
SW50UmVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRmxpbmdBbmltYXRv
ciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViRmxpbmdBbmltYXRvcigpIHsgfQorCisgICAg
dmlydHVhbCB2b2lkIHN0YXJ0RmxpbmcoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdmVsb2Np
dHksIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJhbmdlKSA9IDA7CisgICAgLy8gUmV0dXJucyB0
cnVlIGlmIHRoZSBhbmltYXRpb24gaXMgbm90IHlldCBmaW5pc2hlZC4KKyAgICB2aXJ0dWFsIGJv
b2wgdXBkYXRlUG9zaXRpb24oKSA9IDA7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBn
ZXRDdXJyZW50UG9zaXRpb24oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbEZsaW5nKCkg
PSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJGbGluZ0Fu
aW1hdG9yX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDEyNDg1
NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpA
QCAtMTU0LDYgKzE1NCw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlV3JpdGVy
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZVdyaXRlckNsaWVudC5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkZpbmRPcHRpb25zLmgnLAorICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViRmxpbmdBbmltYXRvci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YkZvbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGb250Q2FjaGUuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJGb250RGVzY3JpcHRpb24uaCcsCkBAIC00NTQsNiArNDU1
LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL1BhZ2VPdmVybGF5TGlzdC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1BhZ2VXaWRnZXREZWxlZ2F0ZS5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvUGFnZVdpZGdldERlbGVnYXRlLmgnLAorICAgICAgICAgICAgICAgICdzcmMvUGxhdGZvcm1H
ZXN0dXJlQ3VydmVGYWN0b3J5LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9QbGF0Zm9ybUdl
c3R1cmVDdXJ2ZUZhY3RvcnkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9QbGF0Zm9ybU1lc3Nh
Z2VQb3J0Q2hhbm5lbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvUGxhdGZvcm1NZXNzYWdl
UG9ydENoYW5uZWwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3Bw
JywKQEAgLTUzMCw2ICs1MzMsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViRmlsZUNob29z
ZXJDb21wbGV0aW9uSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkZpbGVTeXN0ZW1D
YWxsYmFja3NJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzSW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkZsaW5nQW5pbWF0b3JUb0dl
c3R1cmVDdXJ2ZUFkYXB0ZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGbG9hdEFuaW1h
dGlvbkN1cnZlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGb250Q2FjaGUuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYkZvbnREZXNjcmlwdGlvbi5jcHAnLApJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNDg5OSkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTIt
MDgtMDcgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hy
b21pdW1dIFVwc3RyZWFtIGFuZHJvaWQncyBGbGluZ0FuaW1hdG9yCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjkwMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGluIGNocm9taXVtJ3MgV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAg
ICAgICAgKiBwdWJsaWMvV2ViRmxpbmdBbmltYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJGbGluZ0FuaW1hdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmxp
bmdBbmltYXRvcjo6fldlYkZsaW5nQW5pbWF0b3IpOgorICAgICAgICAqIHNyYy9QbGF0Zm9ybUdl
c3R1cmVDdXJ2ZUZhY3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OlBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeTo6Z2V0KToKKyAgICAgICAgKFdl
YktpdDo6UGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5OjpjcmVhdGVDdXJ2ZSk6CisgICAgICAg
IChXZWJLaXQ6OlBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeTo6c2V0V2ViRmxpbmdBbmltYXRv
ckZvclRlc3QpOgorICAgICAgICAqIHNyYy9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUGxhdGZvcm1HZXN0dXJlQ3VydmVG
YWN0b3J5KToKKyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxl
R2VzdHVyZUZsaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGw6OmNhbmNlbEN1cnJlbnRGbGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSk6CisgICAgICAgICogc3JjL1dlYkZsaW5nQW5p
bWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViRmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlcik6CisgICAgICAg
IChXZWJLaXQ6OldlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXI6
OmRlYnVnTmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVD
dXJ2ZUFkYXB0ZXI6OmFwcGx5KToKKyAgICAgICAgKFdlYktpdDo6V2ViRmxpbmdBbmltYXRvclRv
R2VzdHVyZUN1cnZlQWRhcHRlcjo6V2ViRmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRl
cik6CisgICAgICAgICogdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50OjpzY3JvbGxSYW5n
ZSk6CisgICAgICAgIChNb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOgorICAgICAgICAoVGVzdEZs
aW5nQW5pbWF0b3IpOgorICAgICAgICAoV2ViS2l0OjpUZXN0RmxpbmdBbmltYXRvcjo6c3RhcnRG
bGluZyk6CisgICAgICAgIChXZWJLaXQ6OlRlc3RGbGluZ0FuaW1hdG9yOjp1cGRhdGVQb3NpdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OlRlc3RGbGluZ0FuaW1hdG9yOjpnZXRDdXJyZW50UG9zaXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpUZXN0RmxpbmdBbmltYXRvcjo6Y2FuY2VsRmxpbmcpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKwogMjAxMi0wOC0w
NyAgQWxleGVpIEZpbGlwcG92ICA8YWxleGVpZkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogbWFrZSB0aGUgTWVtb3J5Q2xhc3NJbmZvIGNsYXNzIGEgbm90LXRlbXBsYXRl
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZh
Y3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRm
b3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgiCisKKyNpbmNsdWRlICJJbnRSZWN0Lmgi
CisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIlRvdWNocGFkRmxpbmdQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZS5oIgorI2luY2x1ZGUgIldlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2
ZUFkYXB0ZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1BsYXRmb3JtR2VzdHVyZUN1cnZl
RmFjdG9yeSogUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5OjpnZXQoKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LCBmYWN0b3J5LCAoKSk7
CisgICAgcmV0dXJuICZmYWN0b3J5OworfQorCitQYXNzT3duUHRyPFdlYkNvcmU6OlBsYXRmb3Jt
R2VzdHVyZUN1cnZlPiBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmNyZWF0ZUN1cnZlKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBy
YW5nZSkKK3sKKyAgICBPd25QdHI8V2ViRmxpbmdBbmltYXRvcj4gZmxpbmdBbmltYXRvciA9IG1f
bW9ja0ZsaW5nQW5pbWF0b3IucmVsZWFzZSgpOworICAgIGlmICghZmxpbmdBbmltYXRvcikKKyAg
ICAgICAgZmxpbmdBbmltYXRvciA9IGFkb3B0UHRyKFBsYXRmb3JtOjpjdXJyZW50KCktPmNyZWF0
ZUZsaW5nQW5pbWF0b3IoKSk7CisgICAgaWYgKCFmbGluZ0FuaW1hdG9yKQorICAgICAgICByZXR1
cm4gV2ViQ29yZTo6VG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUocG9p
bnQpOworCisgICAgcmV0dXJuIFdlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXI6
OmNyZWF0ZShwb2ludCwgcmFuZ2UsIGZsaW5nQW5pbWF0b3IucmVsZWFzZSgpKTsKK30KKwordm9p
ZCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OnNldFdlYkZsaW5nQW5pbWF0b3JGb3JUZXN0
KFBhc3NPd25QdHI8V2ViRmxpbmdBbmltYXRvcj4gbW9ja0ZsaW5nQW5pbWF0b3IpCit7CisgICAg
bV9tb2NrRmxpbmdBbmltYXRvciA9IG1vY2tGbGluZ0FuaW1hdG9yOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAJKHJldmlzaW9uIDEyNDg1
NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAi
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaCIKIAorI2luY2x1ZGUgIlBsYXRmb3JtR2Vz
dHVyZUN1cnZlRmFjdG9yeS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0
LmgiCiAjaW5jbHVkZSAiVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgiCiAjaW5j
bHVkZSAiVHJhY2VFdmVudC5oIgpAQCAtMjY5LDcgKzI3MCw3IEBACiAgICAgc3dpdGNoIChzY3Jv
bGxTdGF0dXMpIHsKICAgICBjYXNlIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVk
OiB7CiAgICAgICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJjYyIsICJXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbDo6aGFuZGxlR2VzdHVyZUZsaW5nOjpzdGFydGVkIik7Ci0gICAgICAgIE93
blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gZmxpbmdDdXJ2ZSA9IFRvdWNocGFkRmxpbmdQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKEZsb2F0UG9pbnQoZ2VzdHVyZUV2ZW50LmRlbHRhWCwg
Z2VzdHVyZUV2ZW50LmRlbHRhWSkpOworICAgICAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3Vy
dmU+IGZsaW5nQ3VydmUgPSBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmdldCgpLT5jcmVh
dGVDdXJ2ZShGbG9hdFBvaW50KGdlc3R1cmVFdmVudC5kZWx0YVgsIGdlc3R1cmVFdmVudC5kZWx0
YVkpLCBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsUmFuZ2UoKSk7CiAgICAgICAgIG1fd2hl
ZWxGbGluZ0FuaW1hdGlvbiA9IENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFBsYXRm
b3JtR2VzdHVyZVRvQ0NHZXN0dXJlQWRhcHRlcjo6Y3JlYXRlKGZsaW5nQ3VydmUucmVsZWFzZSgp
KSwgdGhpcyk7CiAgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZGVsdGEgPSBXZWJGbG9h
dFBvaW50KGdlc3R1cmVFdmVudC5kZWx0YVgsIGdlc3R1cmVFdmVudC5kZWx0YVkpOwogICAgICAg
ICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLnBvaW50ID0gV2ViUG9pbnQoZ2VzdHVyZUV2ZW50Lngs
IGdlc3R1cmVFdmVudC55KTsKQEAgLTMyMCw2ICszMjEsMTAgQEAKICAgICBUUkFDRV9FVkVOVF9J
TlNUQU5UMSgiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmNhbmNlbEN1cnJl
bnRGbGluZyIsICJoYWRGbGluZ0FuaW1hdGlvbiIsIGhhZEZsaW5nQW5pbWF0aW9uKTsKICAgICBt
X3doZWVsRmxpbmdBbmltYXRpb24uY2xlYXIoKTsKICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJz
ID0gV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMoKTsKKyNpZiBPUyhBTkRST0lEKQorICAg
IGlmIChoYWRGbGluZ0FuaW1hdGlvbikKKyAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNj
cm9sbEVuZCgpOworI2VuZGlmCiAgICAgcmV0dXJuIGhhZEZsaW5nQW5pbWF0aW9uOwogfQogCkBA
IC0zMjgsNiArMzMzLDExIEBACiAgICAgaWYgKGluY3JlbWVudCA9PSBJbnRQb2ludDo6emVybygp
KQogICAgICAgICByZXR1cm47CiAKKyNpZiBPUyhBTkRST0lEKQorICAgIG1faW5wdXRIYW5kbGVy
Q2xpZW50LT5zY3JvbGxCeShJbnRTaXplKGluY3JlbWVudC54KCksIGluY3JlbWVudC55KCkpKTsK
KyAgICByZXR1cm47CisjZW5kaWYKKwogICAgIFRSQUNFX0VWRU5UMigiY2MiLCAiV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGw6OnNjcm9sbEJ5IiwgIngiLCBpbmNyZW1lbnQueCgpLCAieSIs
IGluY3JlbWVudC55KCkpOwogICAgIFdlYk1vdXNlV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbDsK
ICAgICBzeW50aGV0aWNXaGVlbC50eXBlID0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9y
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtR2Vz
dHVyZUN1cnZlRmFjdG9yeS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5X2gK
KyNkZWZpbmUgUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5X2gKKworI2luY2x1ZGUgIlBsYXRm
b3JtR2VzdHVyZUN1cnZlLmgiCisjaW5jbHVkZSAiV2ViRmxpbmdBbmltYXRvci5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkgeworcHVibGljOgorICAgIHN0YXRpYyBQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZUZhY3RvcnkqIGdldCgpOworCisgICAgUGFzc093blB0cjxXZWJDb3JlOjpQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZT4gY3JlYXRlQ3VydmUoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYg
cG9pbnQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJhbmdlKTsKKyAgICB2b2lkIHNldFdlYkZs
aW5nQW5pbWF0b3JGb3JUZXN0KFBhc3NPd25QdHI8V2ViRmxpbmdBbmltYXRvcj4pOworCitwcml2
YXRlOgorICAgIH5QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkoKTsKKworICAgIE93blB0cjxX
ZWJGbGluZ0FuaW1hdG9yPiBtX21vY2tGbGluZ0FuaW1hdG9yOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnlfaApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmxpbmdBbmltYXRvclRvR2VzdHVyZUN1
cnZlQWRhcHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFk
YXB0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyX2gKKyNkZWZpbmUgV2ViRmxpbmdB
bmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlcl9oCisKKyNpbmNsdWRlICJGbG9hdFBvaW50Lmgi
CisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1HZXN0dXJlQ3VydmUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRh
cmdldC5oIgorI2luY2x1ZGUgIldlYkZsaW5nQW5pbWF0b3IuaCIKKyNpbmNsdWRlIDxwdWJsaWMv
UGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZsaW5nQW5pbWF0
b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJl
Q3VydmUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1
cnZlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHJhbmdlLCBQYXNzT3duUHRyPFdlYkZsaW5nQW5pbWF0b3I+IGFuaW1h
dG9yKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJGbGluZ0FuaW1hdG9y
VG9HZXN0dXJlQ3VydmVBZGFwdGVyKHZlbG9jaXR5LCByYW5nZSwgYW5pbWF0b3IpKTsKKyAgICB9
CisKKyAgICAvLyBXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSBpbXBsZW1lbnRhdGlvbjoK
KyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGRlYnVnTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJXZWJG
bGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyIjsgfQorICAgIHZpcnR1YWwgYm9vbCBh
cHBseShkb3VibGUgdGltZSwgV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqIHRh
cmdldCkKKyAgICB7CisgICAgICAgIGlmICghbV9hbmltYXRvci0+dXBkYXRlUG9zaXRpb24oKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCBj
dXJyZW50UG9zaXRpb24gPSBtX2FuaW1hdG9yLT5nZXRDdXJyZW50UG9zaXRpb24oKTsKKyAgICAg
ICAgdGFyZ2V0LT5zY3JvbGxCeShXZWJDb3JlOjpJbnRQb2ludChjdXJyZW50UG9zaXRpb24gLSBt
X2xhc3RQb3NpdGlvbikpOworICAgICAgICBtX2xhc3RQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlv
bjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYkZsaW5n
QW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYg
dmVsb2NpdHksIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJhbmdlLCBQYXNzT3duUHRyPFdlYkZs
aW5nQW5pbWF0b3I+IGFuaW1hdG9yKQorICAgICAgICA6IG1fYW5pbWF0b3IoYW5pbWF0b3IpCisg
ICAgeworICAgICAgICBtX2FuaW1hdG9yLT5zdGFydEZsaW5nKHZlbG9jaXR5LCByYW5nZSk7Cisg
ICAgfQorCisgICAgT3duUHRyPFdlYkZsaW5nQW5pbWF0b3I+IG1fYW5pbWF0b3I7CisgICAgV2Vi
Q29yZTo6SW50UG9pbnQgbV9sYXN0UG9zaXRpb247Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJG
bGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsVGVzdC5jcHAJKHJldmlzaW9uIDEyNDg1NykKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsOCBAQAogCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGwuaCIKIAorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgiCiAj
aW5jbHVkZSAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudC5oIgogI2luY2x1ZGUgIldl
YklucHV0RXZlbnQuaCIKQEAgLTYzLDYgKzY1LDggQEAKICAgICBNT0NLX01FVEhPRDEoc2Nyb2xs
QnksIHZvaWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpKTsKICAgICBNT0NLX01FVEhPRDAoc2Ny
b2xsRW5kLCB2b2lkKCkpOwogCisgICAgV2ViQ29yZTo6SW50UmVjdCBzY3JvbGxSYW5nZSgpIGNv
bnN0IHsgcmV0dXJuIFdlYkNvcmU6OkludFJlY3QoKTsgfQorCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0
YXJnZXRQb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBhbmNob3JQb2ludCwKQEAgLTExNyw2ICsxMjEsMzQgQEAKICAgICBXZWJDb21wb3NpdG9y
OjpzaHV0ZG93bigpOwogfQogCitjbGFzcyBUZXN0RmxpbmdBbmltYXRvciA6IHB1YmxpYyBXZWJL
aXQ6OldlYkZsaW5nQW5pbWF0b3IgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBzdGFydEZs
aW5nKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiByYW5nZSkKKyAgICB7CisgICAgICAgIG1fdmVsb2NpdHkgPSBXZWJDb3JlOjpJbnRT
aXplKChpbnQpdmVsb2NpdHkueCgpLCAoaW50KXZlbG9jaXR5LnkoKSk7CisgICAgfQorCisgICAg
dmlydHVhbCBib29sIHVwZGF0ZVBvc2l0aW9uKCkKKyAgICB7CisgICAgICAgIC8vIFNjcm9sbCBm
b3JldmVyIG9uY2Ugc3RhcnRlZCBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhlc2UgdGVzdHMuCisgICAg
ICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gbWFrZSB0aGVtIHRpbWluZy1zZW5zaXRpdmUgYW55d2F5
cy4KKyAgICAgICAgcmV0dXJuIG1fdmVsb2NpdHkud2lkdGgoKSA+IDAgfHwgbV92ZWxvY2l0eS5o
ZWlnaHQoKSA+IDA7CisgICAgfQorCisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBnZXRD
dXJyZW50UG9zaXRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uICs9
IG1fdmVsb2NpdHk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNhbmNlbEZsaW5nKCkKKyAg
ICB7CisgICAgICAgIG1fdmVsb2NpdHkgPSBXZWJDb3JlOjpJbnRTaXplKCk7CisgICAgfQorcHJp
dmF0ZToKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBtX2xhc3RQb3NpdGlvbjsKKyAgICBXZWJDb3Jl
OjpJbnRTaXplIG1fdmVsb2NpdHk7Cit9OworCiBjbGFzcyBXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0KCkKQEAgLTMzNiwxMiArMzY4LDQyIEBACiAgICAg
bV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiB9CiAKKyNpZiBPUyhB
TkRST0lEKQorLy8gRklYTUU6IFNvcnQgb3V0IHdoZXRoZXIgZGlmZmVyZW5jZXMgYmV0d2VlbiB0
b3VjaCBhbmQgd2hlZWwgZmxpbmcgYXJlIG5lZWRlZC4KKy8vIFdlIHNob3VsZCBlaXRoZXIgaGF2
ZSBkaWZmZXJlbnQgY29uY2VwdHMgb2YgdG91Y2ggYW5kIG1vdXNlIHdoZWVsIGZsaW5nIGJhc2Vk
IG9uIGEgbWFjcm8sCisvLyBhbmQgdGhlbiBydW4gYSBkaWZmZXJlbnQgdGVzdCBoZXJlIGJhc2Vk
IG9uIHRoYXQuIE9yIHVuaWZ5IHRoZSBjb2RlIGFuZCBoYW5kbGUgdGhlCisvLyBkaWZmZXJlbmNl
cyBpbiBzY3JvbGwgYmVoYXZpb3IgYXQgYSBkaWZmZXJlbnQgbGV2ZWwuCisvLyBUaGUgY3VycmVu
dCBkaWZmZXJlbmNlcyBjb21lIGRvd24gdG8gbW91c2Ugd2hlZWwgZmxpbmcgd3JhcHBpbmcgZWFj
aCBmbGluZyB1cGRhdGUgaW4KKy8vIGEgYmVnaW4vZW5kIHBhaXIgaW4gdGhlIG90aGVyIHZlcnNp
b24gb2YgdGhlIHRlc3QgZnVydGhlciBkb3duLgogVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nQW5pbWF0ZXMpCiB7CisgICAgUGxhdGZvcm1HZXN0
dXJlQ3VydmVGYWN0b3J5OjpnZXQoKS0+c2V0V2ViRmxpbmdBbmltYXRvckZvclRlc3QoYWRvcHRQ
dHIobmV3IFRlc3RGbGluZ0FuaW1hdG9yKSk7CisKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2VuZCBh
bnkgZXZlbnRzIHRvIHRoZSB3aWRnZXQgZm9yIHRoaXMgZ2VzdHVyZS4KICAgICBtX2V4cGVjdGVk
RGlzcG9zaXRpb24gPSBEaWRIYW5kbGU7CiAgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwor
ICAgIAorICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZs
aW5nU3RhcnQ7CisgICAgZ2VzdHVyZS5kZWx0YVggPSAxMDAwOworICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBFWFBF
Q1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6
XywgdGVzdGluZzo6XykpCisgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpD
Q0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOworICAgIG1faW5wdXRIYW5kbGVy
LT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOworICAgIAorICAgIHRlc3Rpbmc6Ok1vY2s6OlZl
cmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7Cisg
ICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0
aW9uKCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3Jv
bGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CisgICAgRVhQRUNUX0NB
TEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6OlByb3BlcnR5
KCZXZWJDb3JlOjpJbnRTaXplOjp3aWR0aCwgdGVzdGluZzo6R3QoMCkpKSkuVGltZXMoMSk7Cisg
ICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTApOworfQogCisjZWxzZQorVEVTVF9GKFdlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nQW5pbWF0ZXMpCit7Cisg
ICAgLy8gV2Ugc2hvdWxkbid0IHNlbmQgYW55IGV2ZW50cyB0byB0aGUgd2lkZ2V0IGZvciB0aGlz
IGdlc3R1cmUuCisgICAgbV9leHBlY3RlZERpc3Bvc2l0aW9uID0gRGlkSGFuZGxlOworICAgIFZF
UklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKKwogICAgIC8vIE9uIHRoZSBmbGluZyBzdGFydCwgd2Ug
c2hvdWxkIHNjaGVkdWxlIGFuIGFuaW1hdGlvbiBidXQgbm90IGFjdHVhbGx5IHN0YXJ0CiAgICAg
Ly8gc2Nyb2xsaW5nLgogICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVG
bGluZ1N0YXJ0OwpAQCAtNTYxLDUgKzYyMyw2IEBACiAgICAgICAgICAgICB0ZXN0aW5nOjpGaWVs
ZCgmV2ViU2l6ZTo6aGVpZ2h0LCB0ZXN0aW5nOjpMdCgwKSkpKSkpOwogICAgIG1faW5wdXRIYW5k
bGVyLT5hbmltYXRlKDMwLjIpOwogfQorI2VuZGlmCiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmgJKHJldmlzaW9uIDEyNDg1NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtODEsNiArODEsOCBAQAogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmVH
ZXN0dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8Q0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uPikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCkgT1ZFUlJJREU7CiAK
KyAgICB2aXJ0dWFsIEludFJlY3Qgc2Nyb2xsUmFuZ2UoKSBjb25zdCBPVkVSUklERTsKKwogICAg
IHN0cnVjdCBGcmFtZURhdGEgewogICAgICAgICBWZWN0b3I8SW50UmVjdD4gb2NjbHVkaW5nU2Ny
ZWVuU3BhY2VSZWN0czsKICAgICAgICAgQ0NSZW5kZXJQYXNzTGlzdCByZW5kZXJQYXNzZXM7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAkocmV2aXNpb24gMTI0
ODU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyNCw2ICs5MjQsNTAgQEAK
ICAgICBjbGVhckN1cnJlbnRseVNjcm9sbGluZ0xheWVyKCk7CiB9CiAKK3N0YXRpYyBib29sIGlz
VmFsaWRTY3JvbGxSYW5nZShjb25zdCBJbnRSZWN0JiBzY3JvbGxSYW5nZSkKK3sKKyAgICByZXR1
cm4gc2Nyb2xsUmFuZ2UueCgpIDwgMCAmJiBzY3JvbGxSYW5nZS55KCkgPCAwICYmIHNjcm9sbFJh
bmdlLm1heFgoKSA+IDAgJiYgc2Nyb2xsUmFuZ2UubWF4WSgpID4gMDsKK30KKworc3RhdGljIHZv
aWQgZXhwYW5kU2Nyb2xsUmFuZ2UoSW50UmVjdCYgc2Nyb2xsUmFuZ2UsIGZsb2F0IHNjYWxlLCBJ
bnRQb2ludCBzY3JvbGxQb3NpdGlvbiwgSW50U2l6ZSBtYXhTY3JvbGxQb3NpdGlvbikKK3sKKyAg
ICBzY3JvbGxQb3NpdGlvbi5zY2FsZShzY2FsZSwgc2NhbGUpOworICAgIG1heFNjcm9sbFBvc2l0
aW9uLnNjYWxlKHNjYWxlKTsKKyAgICBzY3JvbGxQb3NpdGlvbi5jbGFtcE5lZ2F0aXZlVG9aZXJv
KCk7CisgICAgbWF4U2Nyb2xsUG9zaXRpb24gPSBtYXhTY3JvbGxQb3NpdGlvbi5leHBhbmRlZFRv
KHRvU2l6ZShzY3JvbGxQb3NpdGlvbikpOworICAgIC8vIE9ubHkgZXhwYW5kIHRoZSBzY3JvbGwg
cmFuZ2UgYWxvbmcgYW4gYXhpcyBpZiB0aGVyZSBwcmV2aW91c2x5IHdhcyBubyByb29tIHRvIHNj
cm9sbCBpbiB0aGF0IGRpcmVjdGlvbi4KKyAgICAvLyBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IGZs
aW5ncyBkbyBub3Qgb3ZlcnNob290IHRoZSBib3VuZGFyaWVzIG9mIGEgc2Nyb2xsYWJsZSBlbGVt
ZW50IGFuZCBzdGFydCBzY3JvbGxpbmcKKyAgICAvLyBpdHMgcGFyZW50IGluc3RlYWQuCisgICAg
aWYgKCFzY3JvbGxSYW5nZS54KCkpIHsKKyAgICAgICAgc2Nyb2xsUmFuZ2Uuc2V0WCgtc2Nyb2xs
UG9zaXRpb24ueCgpKTsKKyAgICAgICAgc2Nyb2xsUmFuZ2Uuc2V0V2lkdGgoc2Nyb2xsUmFuZ2Uu
d2lkdGgoKSArIHNjcm9sbFBvc2l0aW9uLngoKSk7CisgICAgfQorICAgIGlmICghc2Nyb2xsUmFu
Z2UueSgpKSB7CisgICAgICAgIHNjcm9sbFJhbmdlLnNldFkoLXNjcm9sbFBvc2l0aW9uLnkoKSk7
CisgICAgICAgIHNjcm9sbFJhbmdlLnNldEhlaWdodChzY3JvbGxSYW5nZS5oZWlnaHQoKSArIHNj
cm9sbFBvc2l0aW9uLnkoKSk7CisgICAgfQorICAgIGlmICghc2Nyb2xsUmFuZ2UubWF4WCgpKQor
ICAgICAgICBzY3JvbGxSYW5nZS5zZXRXaWR0aChtYXhTY3JvbGxQb3NpdGlvbi53aWR0aCgpIC0g
c2Nyb2xsUG9zaXRpb24ueCgpIC0gc2Nyb2xsUmFuZ2UueCgpKTsKKyAgICBpZiAoIXNjcm9sbFJh
bmdlLm1heFkoKSkKKyAgICAgICAgc2Nyb2xsUmFuZ2Uuc2V0SGVpZ2h0KG1heFNjcm9sbFBvc2l0
aW9uLmhlaWdodCgpIC0gc2Nyb2xsUG9zaXRpb24ueSgpIC0gc2Nyb2xsUmFuZ2UueSgpKTsKKyAg
ICBBU1NFUlQoc2Nyb2xsUmFuZ2UueCgpIDw9IDAgJiYgc2Nyb2xsUmFuZ2UubWF4WCgpID49IDAp
OworICAgIEFTU0VSVChzY3JvbGxSYW5nZS55KCkgPD0gMCAmJiBzY3JvbGxSYW5nZS5tYXhZKCkg
Pj0gMCk7Cit9CisKK0ludFJlY3QgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsUmFuZ2UoKSBj
b25zdAoreworICAgIGNvbnN0IENDTGF5ZXJJbXBsKiBsYXllckltcGwgPSBtX3Jvb3RTY3JvbGxM
YXllckltcGw7CisgICAgSW50UmVjdCBzY3JvbGxSYW5nZTsKKworICAgIGlmIChsYXllckltcGwg
JiYgIWlzVmFsaWRTY3JvbGxSYW5nZShzY3JvbGxSYW5nZSkpIHsKKyAgICAgICAgaWYgKGxheWVy
SW1wbC0+c2Nyb2xsYWJsZSgpKSB7CisgICAgICAgICAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlv
bihmbG9vcmVkSW50UG9pbnQobGF5ZXJJbXBsLT5zY3JvbGxQb3NpdGlvbigpICsgbGF5ZXJJbXBs
LT5zY3JvbGxEZWx0YSgpKSk7CisgICAgICAgICAgICBleHBhbmRTY3JvbGxSYW5nZShzY3JvbGxS
YW5nZSwgbV9wYWdlU2NhbGVEZWx0YSwgc2Nyb2xsUG9zaXRpb24sIGxheWVySW1wbC0+bWF4U2Ny
b2xsUG9zaXRpb24oKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHNjcm9sbFJhbmdl
OworfQorCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnBpbmNoR2VzdHVyZUJlZ2luKCkKIHsK
ICAgICBtX3BpbmNoR2VzdHVyZUFjdGl2ZSA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRI
YW5kbGVyLmgJKHJldmlzaW9uIDEyNDg1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDYgKzI0LDcgQEAKICNpZm5kZWYgQ0NJbnB1dEhhbmRsZXJfaAogI2RlZmluZSBDQ0lucHV0SGFu
ZGxlcl9oCiAKKyNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApAQCAtNjUsNiArNjYsMTAgQEAKICAg
ICAvLyBjYWxsZWQgaWYgc2Nyb2xsQmVnaW4oKSByZXR1cm5lZCBTY3JvbGxTdGFydGVkLgogICAg
IHZpcnR1YWwgdm9pZCBzY3JvbGxFbmQoKSA9IDA7CiAKKyAgICAvLyBSZXR1cm4gdGhlIHNjcm9s
bCByYW5nZSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBwb3NpdGlvbi4gdG9wL2xlZnQKKyAgICAv
LyB2YWx1ZSA8PSAwLCBhbmQgYm90dG9tL3JpZ2h0IHZhbHVlID49IDAuCisgICAgdmlydHVhbCBJ
bnRSZWN0IHNjcm9sbFJhbmdlKCkgY29uc3QgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIHBpbmNo
R2VzdHVyZUJlZ2luKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVVcGRhdGUo
ZmxvYXQgbWFnbmlmeURlbHRhLCBjb25zdCBJbnRQb2ludCYgYW5jaG9yKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHBpbmNoR2VzdHVyZUVuZCgpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEyNDg5OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIwIEBACisyMDEyLTA4LTA3ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBVcHN0cmVhbSBhbmRyb2lkJ3MgRmxpbmdBbmltYXRv
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5MDAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBp
biBjaHJvbWl1bSdzIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkU2Nyb2xsUmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpleHBhbmRTY3JvbGxSYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxSYW5nZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorCiAyMDEy
LTA4LTA3ICBCcmlhbiBBbmRlcnNvbiAgPGJyaWFuZGVyc29uQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBBZGQgQ0NEZWxheUJhc2VkVGltZVNvdXJjZTo6c2V0VGltZWJhc2VBbmRJbnRlcnZhbApJ
bmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAkocmV2aXNp
b24gMTI0ODU3KQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiBjbGFzcyBXZWJDb29raWVKYXI7CiBj
bGFzcyBXZWJGaWxlU3lzdGVtOwogY2xhc3MgV2ViRmlsZVV0aWxpdGllczsKK2NsYXNzIFdlYkZs
aW5nQW5pbWF0b3I7CiBjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlcjsKIGNsYXNzIFdlYk1lZGlh
U3RyZWFtQ2VudGVyQ2xpZW50OwogY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsOwpAQCAtNDEw
LDYgKzQxMSw3IEBACiAgICAgLy8gVGhpcyB2YWx1ZSBtdXN0IGJlIGNoZWNrZWQgYWdhaW4gYWZ0
ZXIgYSBjb250ZXh0IGxvc3MgZXZlbnQgYXMgdGhlIHBsYXRmb3JtJ3MgY2FwYWJpbGl0aWVzIG1h
eSBoYXZlIGNoYW5nZWQuCiAgICAgdmlydHVhbCBib29sIGNhbkFjY2VsZXJhdGUyZENhbnZhcygp
IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIFdlYkZsaW5nQW5pbWF0b3IqIGNyZWF0
ZUZsaW5nQW5pbWF0b3IoKSB7IHJldHVybiAwOyB9CiAKICAgICAvLyBXZWJSVEMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkluZGV4
OiBTb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9y
bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNDg5OSkKKysrIFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOC0wNyAgTmF0ZSBDaGFw
aW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXBzdHJlYW0g
YW5kcm9pZCdzIEZsaW5nQW5pbWF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkyOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdHMgaW4gY2hyb21pdW0ncyBXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbFRlc3QuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtOjpjcmVhdGVGbGluZ0Fu
aW1hdG9yKToKKwogMjAxMi0wOC0wNiAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIGxpbmdlcmluZyB1bndyYXA8PigpIGNh
bGxzIGluIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156980</attachid>
            <date>2012-08-07 12:53:24 -0700</date>
            <delta_ts>2012-08-07 13:43:05 -0700</delta_ts>
            <desc>Move WebFlingAnimator.h to Platform, fix style issues</desc>
            <filename>fling2.txt</filename>
            <type>text/plain</type>
            <size>27324</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgJKHJldmlz
aW9uIDEyNDg1NykKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0u
aAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQAogY2xhc3MgV2ViQ29va2llSmFyOwog
Y2xhc3MgV2ViRmlsZVN5c3RlbTsKIGNsYXNzIFdlYkZpbGVVdGlsaXRpZXM7CitjbGFzcyBXZWJG
bGluZ0FuaW1hdG9yOwogY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXI7CiBjbGFzcyBXZWJNZWRp
YVN0cmVhbUNlbnRlckNsaWVudDsKIGNsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbDsKQEAgLTQx
MCw2ICs0MTEsNyBAQAogICAgIC8vIFRoaXMgdmFsdWUgbXVzdCBiZSBjaGVja2VkIGFnYWluIGFm
dGVyIGEgY29udGV4dCBsb3NzIGV2ZW50IGFzIHRoZSBwbGF0Zm9ybSdzIGNhcGFiaWxpdGllcyBt
YXkgaGF2ZSBjaGFuZ2VkLgogICAgIHZpcnR1YWwgYm9vbCBjYW5BY2NlbGVyYXRlMmRDYW52YXMo
KSB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCBXZWJGbGluZ0FuaW1hdG9yKiBjcmVh
dGVGbGluZ0FuaW1hdG9yKCkgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gV2ViUlRDIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApJbmRl
eDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGbGluZ0FuaW1hdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGbGluZ0FuaW1h
dG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkZsaW5nQW5pbWF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJGbGluZ0FuaW1hdG9yX2gKKyNkZWZpbmUgV2ViRmxpbmdBbmltYXRvcl9oCisK
KyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRl
ICJJbnRSZWN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJGbGluZ0FuaW1h
dG9yIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJGbGluZ0FuaW1hdG9yKCkgeyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnRGbGluZyhjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB2ZWxv
Y2l0eSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmFuZ2UpID0gMDsKKyAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlIGFuaW1hdGlvbiBpcyBub3QgeWV0IGZpbmlzaGVkLgorICAgIHZpcnR1YWwg
Ym9vbCB1cGRhdGVQb3NpdGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50
IGdldEN1cnJlbnRQb3NpdGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsRmxpbmco
KSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkZsaW5n
QW5pbWF0b3JfaApJbmRleDogU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjQ5MDgpCisrKyBTb3VyY2Uv
UGxhdGZvcm0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTIt
MDgtMDcgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hy
b21pdW1dIFVwc3RyZWFtIGFuZHJvaWQncyBGbGluZ0FuaW1hdG9yCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjkwMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGluIGNocm9taXVtJ3MgV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LgorICAgICAgICAqIFBsYXRmb3JtLmd5cGk6Cisg
ICAgICAgICogY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmg6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybTo6Y3JlYXRlRmxpbmdBbmltYXRvcik6CisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1dlYkZsaW5nQW5pbWF0b3IuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViRmxpbmdBbmltYXRvcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZsaW5nQW5pbWF0b3I6On5XZWJGbGluZ0FuaW1hdG9yKToKKwogMjAxMi0wOC0wNiAgSmFtZXMg
Um9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVt
b3ZlIGxpbmdlcmluZyB1bndyYXA8PigpIGNhbGxzIGluIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5j
cHAKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCShyZXZpc2lvbiAxMjQ4NTcpCisrKyBTb3VyY2Uv
UGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQAog
ICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vcHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaCcsCisgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYkZsaW5nQW5pbWF0b3IuaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYkZsb2F0QW5pbWF0aW9uQ3VydmUuaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYkZsb2F0S2V5ZnJhbWUuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYkZsb2F0UG9pbnQuaCcsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Q
bGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9y
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRm
b3JtR2VzdHVyZUN1cnZlRmFjdG9yeV9oCisjZGVmaW5lIFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFj
dG9yeV9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oIgorI2luY2x1ZGUgPHB1
YmxpYy9XZWJGbGluZ0FuaW1hdG9yLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeSogZ2V0KCk7
CisKKyAgICBQYXNzT3duUHRyPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGVD
dXJ2ZShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
cmFuZ2UpOworICAgIHZvaWQgc2V0V2ViRmxpbmdBbmltYXRvckZvclRlc3QoUGFzc093blB0cjxX
ZWJGbGluZ0FuaW1hdG9yPik7CisKK3ByaXZhdGU6CisgICAgflBsYXRmb3JtR2VzdHVyZUN1cnZl
RmFjdG9yeSgpOworCisgICAgT3duUHRyPFdlYkZsaW5nQW5pbWF0b3I+IG1fbW9ja0ZsaW5nQW5p
bWF0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBsYXRmb3Jt
R2VzdHVyZUN1cnZlRmFjdG9yeV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Q
bGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZh
Y3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgiCisK
KyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUg
IlRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oIgorI2luY2x1ZGUgIldlYkZsaW5n
QW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeSogUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5
OjpnZXQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUGxhdGZvcm1HZXN0dXJlQ3VydmVG
YWN0b3J5LCBmYWN0b3J5LCAoKSk7CisgICAgcmV0dXJuICZmYWN0b3J5OworfQorCitQYXNzT3du
UHRyPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlPiBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZh
Y3Rvcnk6OmNyZWF0ZUN1cnZlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvaW50LCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiByYW5nZSkKK3sKKyAgICBPd25QdHI8V2ViRmxpbmdBbmltYXRv
cj4gZmxpbmdBbmltYXRvciA9IG1fbW9ja0ZsaW5nQW5pbWF0b3IucmVsZWFzZSgpOworICAgIGlm
ICghZmxpbmdBbmltYXRvcikKKyAgICAgICAgZmxpbmdBbmltYXRvciA9IGFkb3B0UHRyKFBsYXRm
b3JtOjpjdXJyZW50KCktPmNyZWF0ZUZsaW5nQW5pbWF0b3IoKSk7CisgICAgaWYgKCFmbGluZ0Fu
aW1hdG9yKQorICAgICAgICByZXR1cm4gV2ViQ29yZTo6VG91Y2hwYWRGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlOjpjcmVhdGUocG9pbnQpOworCisgICAgcmV0dXJuIFdlYkZsaW5nQW5pbWF0b3JU
b0dlc3R1cmVDdXJ2ZUFkYXB0ZXI6OmNyZWF0ZShwb2ludCwgcmFuZ2UsIGZsaW5nQW5pbWF0b3Iu
cmVsZWFzZSgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OnNldFdl
YkZsaW5nQW5pbWF0b3JGb3JUZXN0KFBhc3NPd25QdHI8V2ViRmxpbmdBbmltYXRvcj4gbW9ja0Zs
aW5nQW5pbWF0b3IpCit7CisgICAgbV9tb2NrRmxpbmdBbmltYXRvciA9IG1vY2tGbGluZ0FuaW1h
dG9yOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bC5jcHAJKHJldmlzaW9uIDEyNDg1NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaCIKIAor
I2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmgiCiAjaW5jbHVkZSAiVG91Y2hwYWRGbGluZ1BsYXRmb3Jt
R2VzdHVyZUN1cnZlLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgpAQCAtMjY5LDcgKzI3MCw3
IEBACiAgICAgc3dpdGNoIChzY3JvbGxTdGF0dXMpIHsKICAgICBjYXNlIENDSW5wdXRIYW5kbGVy
Q2xpZW50OjpTY3JvbGxTdGFydGVkOiB7CiAgICAgICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJj
YyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlR2VzdHVyZUZsaW5nOjpz
dGFydGVkIik7Ci0gICAgICAgIE93blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gZmxpbmdDdXJ2
ZSA9IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKEZsb2F0UG9pbnQo
Z2VzdHVyZUV2ZW50LmRlbHRhWCwgZ2VzdHVyZUV2ZW50LmRlbHRhWSkpOworICAgICAgICBPd25Q
dHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGZsaW5nQ3VydmUgPSBQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZUZhY3Rvcnk6OmdldCgpLT5jcmVhdGVDdXJ2ZShGbG9hdFBvaW50KGdlc3R1cmVFdmVudC5kZWx0
YVgsIGdlc3R1cmVFdmVudC5kZWx0YVkpLCBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsUmFu
Z2UoKSk7CiAgICAgICAgIG1fd2hlZWxGbGluZ0FuaW1hdGlvbiA9IENDQWN0aXZlR2VzdHVyZUFu
aW1hdGlvbjo6Y3JlYXRlKFBsYXRmb3JtR2VzdHVyZVRvQ0NHZXN0dXJlQWRhcHRlcjo6Y3JlYXRl
KGZsaW5nQ3VydmUucmVsZWFzZSgpKSwgdGhpcyk7CiAgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFt
ZXRlcnMuZGVsdGEgPSBXZWJGbG9hdFBvaW50KGdlc3R1cmVFdmVudC5kZWx0YVgsIGdlc3R1cmVF
dmVudC5kZWx0YVkpOwogICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLnBvaW50ID0gV2Vi
UG9pbnQoZ2VzdHVyZUV2ZW50LngsIGdlc3R1cmVFdmVudC55KTsKQEAgLTMyMCw2ICszMjEsMTAg
QEAKICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMSgiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGw6OmNhbmNlbEN1cnJlbnRGbGluZyIsICJoYWRGbGluZ0FuaW1hdGlvbiIsIGhhZEZs
aW5nQW5pbWF0aW9uKTsKICAgICBtX3doZWVsRmxpbmdBbmltYXRpb24uY2xlYXIoKTsKICAgICBt
X3doZWVsRmxpbmdQYXJhbWV0ZXJzID0gV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMoKTsK
KyNpZiBPUyhBTkRST0lEKQorICAgIGlmIChoYWRGbGluZ0FuaW1hdGlvbikKKyAgICAgICAgbV9p
bnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEVuZCgpOworI2VuZGlmCiAgICAgcmV0dXJuIGhhZEZs
aW5nQW5pbWF0aW9uOwogfQogCkBAIC0zMjgsNiArMzMzLDExIEBACiAgICAgaWYgKGluY3JlbWVu
dCA9PSBJbnRQb2ludDo6emVybygpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBPUyhBTkRST0lE
KQorICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCeShJbnRTaXplKGluY3JlbWVudC54
KCksIGluY3JlbWVudC55KCkpKTsKKyAgICByZXR1cm47CisjZW5kaWYKKwogICAgIFRSQUNFX0VW
RU5UMigiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNjcm9sbEJ5IiwgIngi
LCBpbmNyZW1lbnQueCgpLCAieSIsIGluY3JlbWVudC55KCkpOwogICAgIFdlYk1vdXNlV2hlZWxF
dmVudCBzeW50aGV0aWNXaGVlbDsKICAgICBzeW50aGV0aWNXaGVlbC50eXBlID0gV2ViSW5wdXRF
dmVudDo6TW91c2VXaGVlbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZs
aW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVy
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGbGluZ0Fu
aW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViRmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRl
cl9oCisjZGVmaW5lIFdlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXJfaAorCisj
aW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAi
SW50UmVjdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZlLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxpbmdB
bmltYXRvci5oPgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViRmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlciA6IHB1
YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmFuZ2UsIFBhc3NP
d25QdHI8V2ViRmxpbmdBbmltYXRvcj4gYW5pbWF0b3IpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFdlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIodmVsb2Np
dHksIHJhbmdlLCBhbmltYXRvcikpOworICAgIH0KKworICAgIC8vIFdlYkNvcmU6OlBsYXRmb3Jt
R2VzdHVyZUN1cnZlIGltcGxlbWVudGF0aW9uOgorICAgIHZpcnR1YWwgY29uc3QgY2hhciogZGVi
dWdOYW1lKCkgY29uc3QgeyByZXR1cm4gIldlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFk
YXB0ZXIiOyB9CisgICAgdmlydHVhbCBib29sIGFwcGx5KGRvdWJsZSB0aW1lLCBXZWJDb3JlOjpQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCogdGFyZ2V0KQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2FuaW1hdG9yLT51cGRhdGVQb3NpdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgIFdlYkNvcmU6OkludFBvaW50IGN1cnJlbnRQb3NpdGlvbiA9IG1fYW5pbWF0b3It
PmdldEN1cnJlbnRQb3NpdGlvbigpOworICAgICAgICB0YXJnZXQtPnNjcm9sbEJ5KFdlYkNvcmU6
OkludFBvaW50KGN1cnJlbnRQb3NpdGlvbiAtIG1fbGFzdFBvc2l0aW9uKSk7CisgICAgICAgIG1f
bGFzdFBvc2l0aW9uID0gY3VycmVudFBvc2l0aW9uOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgV2ViRmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRl
cihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgcmFuZ2UsIFBhc3NPd25QdHI8V2ViRmxpbmdBbmltYXRvcj4gYW5pbWF0b3IpCisgICAg
ICAgIDogbV9hbmltYXRvcihhbmltYXRvcikKKyAgICB7CisgICAgICAgIG1fYW5pbWF0b3ItPnN0
YXJ0RmxpbmcodmVsb2NpdHksIHJhbmdlKTsKKyAgICB9CisKKyAgICBPd25QdHI8V2ViRmxpbmdB
bmltYXRvcj4gbV9hbmltYXRvcjsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBtX2xhc3RQb3NpdGlv
bjsKK307CisKK30KKworI2VuZGlmIC8vIFdlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFk
YXB0ZXJfaApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcAkocmV2aXNp
b24gMTI0ODU3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBA
CiAKICNpbmNsdWRlICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oIgogCisjaW5jbHVk
ZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5oIgog
I2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgpAQCAtNjMsNiArNjUs
OCBAQAogICAgIE1PQ0tfTUVUSE9EMShzY3JvbGxCeSwgdm9pZChjb25zdCBXZWJDb3JlOjpJbnRT
aXplJikpOwogICAgIE1PQ0tfTUVUSE9EMChzY3JvbGxFbmQsIHZvaWQoKSk7CiAKKyAgICBXZWJD
b3JlOjpJbnRSZWN0IHNjcm9sbFJhbmdlKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6SW50UmVj
dCgpOyB9CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRhcmdldFBvc2l0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFuY2hvclBvaW50LApAQCAtMTE3LDYg
KzEyMSwzNCBAQAogICAgIFdlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CiB9CiAKK2NsYXNzIFRl
c3RGbGluZ0FuaW1hdG9yIDogcHVibGljIFdlYktpdDo6V2ViRmxpbmdBbmltYXRvciB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0RmxpbmcoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYgdmVsb2NpdHksIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJhbmdlKQorICAgIHsKKyAgICAg
ICAgbV92ZWxvY2l0eSA9IFdlYkNvcmU6OkludFNpemUoKGludCl2ZWxvY2l0eS54KCksIChpbnQp
dmVsb2NpdHkueSgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlUG9zaXRpb24o
KQorICAgIHsKKyAgICAgICAgLy8gU2Nyb2xsIGZvcmV2ZXIgb25jZSBzdGFydGVkIGZvciB0aGUg
cHVycG9zZSBvZiB0aGVzZSB0ZXN0cy4KKyAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBtYWtl
IHRoZW0gdGltaW5nLXNlbnNpdGl2ZSBhbnl3YXlzLgorICAgICAgICByZXR1cm4gbV92ZWxvY2l0
eS53aWR0aCgpID4gMCB8fCBtX3ZlbG9jaXR5LmhlaWdodCgpID4gMDsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGdldEN1cnJlbnRQb3NpdGlvbigpCisgICAgeworICAg
ICAgICByZXR1cm4gbV9sYXN0UG9zaXRpb24gKz0gbV92ZWxvY2l0eTsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgY2FuY2VsRmxpbmcoKQorICAgIHsKKyAgICAgICAgbV92ZWxvY2l0eSA9IFdl
YkNvcmU6OkludFNpemUoKTsKKyAgICB9Citwcml2YXRlOgorICAgIFdlYkNvcmU6OkludFBvaW50
IG1fbGFzdFBvc2l0aW9uOworICAgIFdlYkNvcmU6OkludFNpemUgbV92ZWxvY2l0eTsKK307CisK
IGNsYXNzIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKIHB1YmxpYzoKICAgICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3Qo
KQpAQCAtMzM2LDEyICszNjgsNDIgQEAKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRF
dmVudChnZXN0dXJlKTsKIH0KIAorI2lmIE9TKEFORFJPSUQpCisvLyBGSVhNRTogU29ydCBvdXQg
d2hldGhlciBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRvdWNoIGFuZCB3aGVlbCBmbGluZyBhcmUgbmVl
ZGVkLgorLy8gV2Ugc2hvdWxkIGVpdGhlciBoYXZlIGRpZmZlcmVudCBjb25jZXB0cyBvZiB0b3Vj
aCBhbmQgbW91c2Ugd2hlZWwgZmxpbmcgYmFzZWQgb24gYSBtYWNybywKKy8vIGFuZCB0aGVuIHJ1
biBhIGRpZmZlcmVudCB0ZXN0IGhlcmUgYmFzZWQgb24gdGhhdC4gT3IgdW5pZnkgdGhlIGNvZGUg
YW5kIGhhbmRsZSB0aGUKKy8vIGRpZmZlcmVuY2VzIGluIHNjcm9sbCBiZWhhdmlvciBhdCBhIGRp
ZmZlcmVudCBsZXZlbC4KKy8vIFRoZSBjdXJyZW50IGRpZmZlcmVuY2VzIGNvbWUgZG93biB0byBt
b3VzZSB3aGVlbCBmbGluZyB3cmFwcGluZyBlYWNoIGZsaW5nIHVwZGF0ZSBpbgorLy8gYSBiZWdp
bi9lbmQgcGFpciBpbiB0aGUgb3RoZXIgdmVyc2lvbiBvZiB0aGUgdGVzdCBmdXJ0aGVyIGRvd24u
CiBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdB
bmltYXRlcykKIHsKKyAgICBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmdldCgpLT5zZXRX
ZWJGbGluZ0FuaW1hdG9yRm9yVGVzdChhZG9wdFB0cihuZXcgVGVzdEZsaW5nQW5pbWF0b3IpKTsK
KwogICAgIC8vIFdlIHNob3VsZG4ndCBzZW5kIGFueSBldmVudHMgdG8gdGhlIHdpZGdldCBmb3Ig
dGhpcyBnZXN0dXJlLgogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERpZEhhbmRsZTsKICAg
ICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CisgICAgCisgICAgZ2VzdHVyZS50eXBlID0gV2Vi
S2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKKyAgICBnZXN0dXJlLmRlbHRh
WCA9IDEwMDA7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNj
aGVkdWxlQW5pbWF0aW9uKCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVy
Q2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAuV2lsbE9u
Y2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxT
dGFydGVkKSk7CisgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7
CisgICAgCisgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1f
bW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0
SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9t
b2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6
Ol8pKS5UaW1lcygwKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVu
dCwgc2Nyb2xsQnkodGVzdGluZzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNpemU6OndpZHRoLCB0
ZXN0aW5nOjpHdCgwKSkpKS5UaW1lcygxKTsKKyAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgx
MCk7Cit9CiAKKyNlbHNlCitURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0
LCBnZXN0dXJlRmxpbmdBbmltYXRlcykKK3sKKyAgICAvLyBXZSBzaG91bGRuJ3Qgc2VuZCBhbnkg
ZXZlbnRzIHRvIHRoZSB3aWRnZXQgZm9yIHRoaXMgZ2VzdHVyZS4KKyAgICBtX2V4cGVjdGVkRGlz
cG9zaXRpb24gPSBEaWRIYW5kbGU7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOworCiAg
ICAgLy8gT24gdGhlIGZsaW5nIHN0YXJ0LCB3ZSBzaG91bGQgc2NoZWR1bGUgYW4gYW5pbWF0aW9u
IGJ1dCBub3QgYWN0dWFsbHkgc3RhcnQKICAgICAvLyBzY3JvbGxpbmcuCiAgICAgZ2VzdHVyZS50
eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CkBAIC01NjEsNSArNjIzLDYg
QEAKICAgICAgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJTaXplOjpoZWlnaHQsIHRlc3Rpbmc6
Okx0KDApKSkpKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMzAuMik7CiB9CisjZW5k
aWYKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gMTI0ODU3
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBA
IC00NTQsNiArNDU0LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL1BhZ2VPdmVybGF5TGlzdC5o
JywKICAgICAgICAgICAgICAgICAnc3JjL1BhZ2VXaWRnZXREZWxlZ2F0ZS5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvUGFnZVdpZGdldERlbGVnYXRlLmgnLAorICAgICAgICAgICAgICAgICdz
cmMvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmNwcCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Q
bGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvUGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9QbGF0Zm9y
bVN1cHBvcnQuY3BwJywKQEAgLTUzMCw2ICs1MzIsNyBAQAogICAgICAgICAgICAgICAgICdzcmMv
V2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJG
aWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkZsaW5n
QW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJGbG9hdEFuaW1hdGlvbkN1cnZlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGb250
Q2FjaGUuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkZvbnREZXNjcmlwdGlvbi5jcHAn
LApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNDkwOCkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
NDMgQEAKKzIwMTItMDgtMDcgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbY2hyb21pdW1dIFVwc3RyZWFtIGFuZHJvaWQncyBGbGluZ0FuaW1hdG9yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjkwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGluIGNocm9t
aXVtJ3MgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LgorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZUZhY3Rvcnk6OmdldCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtR2VzdHVyZUN1
cnZlRmFjdG9yeTo6Y3JlYXRlQ3VydmUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZUZhY3Rvcnk6OnNldFdlYkZsaW5nQW5pbWF0b3JGb3JUZXN0KToKKyAgICAgICAgKiBz
cmMvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeSk6CisgICAgICAgICogc3Jj
L1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpjYW5jZWxDdXJyZW50Rmxp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Ny
b2xsQnkpOgorICAgICAgICAqIHNyYy9XZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFw
dGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkZsaW5nQW5pbWF0
b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJGbGluZ0FuaW1h
dG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJG
bGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyOjpkZWJ1Z05hbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyOjphcHBseSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXI6Oldl
YkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIpOgorICAgICAgICAqIHRlc3RzL1dl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1v
Y2tDQ0lucHV0SGFuZGxlckNsaWVudDo6c2Nyb2xsUmFuZ2UpOgorICAgICAgICAoTW9ja0NDSW5w
dXRIYW5kbGVyQ2xpZW50KToKKyAgICAgICAgKFRlc3RGbGluZ0FuaW1hdG9yKToKKyAgICAgICAg
KFdlYktpdDo6VGVzdEZsaW5nQW5pbWF0b3I6OnN0YXJ0RmxpbmcpOgorICAgICAgICAoV2ViS2l0
OjpUZXN0RmxpbmdBbmltYXRvcjo6dXBkYXRlUG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpU
ZXN0RmxpbmdBbmltYXRvcjo6Z2V0Q3VycmVudFBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
VGVzdEZsaW5nQW5pbWF0b3I6OmNhbmNlbEZsaW5nKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OlRFU1RfRik6CisKIDIwMTItMDgtMDcgIEpvc2h1YSBCZWxsICA8anNiZWxs
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxMjQ4NjUpOiBJdCBicm9rZSB0
aGUgQVJNIENocm9taXVtIGJ1aWxkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjQ5MDgpCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBA
QAorMjAxMi0wOC0wNyAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtjaHJvbWl1bV0gVXBzdHJlYW0gYW5kcm9pZCdzIEZsaW5nQW5pbWF0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyOTAwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgaW4gY2hyb21pdW0n
cyBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0lucHV0SGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFNjcm9s
bFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhwYW5kU2Ny
b2xsUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xs
UmFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaDoKKwogMjAxMi0wOC0wNyAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3Nl
bnRoYWxAbm9raWEuY29tPgogCiAgICAgICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRpb24gc2hvdWxk
bid0IHVzZSBIYXNoTWFwPFN0cmluZz4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwCShyZXZpc2lvbiAxMjQ4NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTI0LDYgKzkyNCw1MCBAQAogICAgIGNsZWFyQ3VycmVudGx5U2Nyb2xsaW5nTGF5
ZXIoKTsKIH0KIAorc3RhdGljIGJvb2wgaXNWYWxpZFNjcm9sbFJhbmdlKGNvbnN0IEludFJlY3Qm
IHNjcm9sbFJhbmdlKQoreworICAgIHJldHVybiBzY3JvbGxSYW5nZS54KCkgPCAwICYmIHNjcm9s
bFJhbmdlLnkoKSA8IDAgJiYgc2Nyb2xsUmFuZ2UubWF4WCgpID4gMCAmJiBzY3JvbGxSYW5nZS5t
YXhZKCkgPiAwOworfQorCitzdGF0aWMgdm9pZCBleHBhbmRTY3JvbGxSYW5nZShJbnRSZWN0JiBz
Y3JvbGxSYW5nZSwgZmxvYXQgc2NhbGUsIEludFBvaW50IHNjcm9sbFBvc2l0aW9uLCBJbnRTaXpl
IG1heFNjcm9sbFBvc2l0aW9uKQoreworICAgIHNjcm9sbFBvc2l0aW9uLnNjYWxlKHNjYWxlLCBz
Y2FsZSk7CisgICAgbWF4U2Nyb2xsUG9zaXRpb24uc2NhbGUoc2NhbGUpOworICAgIHNjcm9sbFBv
c2l0aW9uLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKKyAgICBtYXhTY3JvbGxQb3NpdGlvbiA9IG1h
eFNjcm9sbFBvc2l0aW9uLmV4cGFuZGVkVG8odG9TaXplKHNjcm9sbFBvc2l0aW9uKSk7CisgICAg
Ly8gT25seSBleHBhbmQgdGhlIHNjcm9sbCByYW5nZSBhbG9uZyBhbiBheGlzIGlmIHRoZXJlIHBy
ZXZpb3VzbHkgd2FzIG5vIHJvb20gdG8gc2Nyb2xsIGluIHRoYXQgZGlyZWN0aW9uLgorICAgIC8v
IFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgZmxpbmdzIGRvIG5vdCBvdmVyc2hvb3QgdGhlIGJvdW5k
YXJpZXMgb2YgYSBzY3JvbGxhYmxlIGVsZW1lbnQgYW5kIHN0YXJ0IHNjcm9sbGluZworICAgIC8v
IGl0cyBwYXJlbnQgaW5zdGVhZC4KKyAgICBpZiAoIXNjcm9sbFJhbmdlLngoKSkgeworICAgICAg
ICBzY3JvbGxSYW5nZS5zZXRYKC1zY3JvbGxQb3NpdGlvbi54KCkpOworICAgICAgICBzY3JvbGxS
YW5nZS5zZXRXaWR0aChzY3JvbGxSYW5nZS53aWR0aCgpICsgc2Nyb2xsUG9zaXRpb24ueCgpKTsK
KyAgICB9CisgICAgaWYgKCFzY3JvbGxSYW5nZS55KCkpIHsKKyAgICAgICAgc2Nyb2xsUmFuZ2Uu
c2V0WSgtc2Nyb2xsUG9zaXRpb24ueSgpKTsKKyAgICAgICAgc2Nyb2xsUmFuZ2Uuc2V0SGVpZ2h0
KHNjcm9sbFJhbmdlLmhlaWdodCgpICsgc2Nyb2xsUG9zaXRpb24ueSgpKTsKKyAgICB9CisgICAg
aWYgKCFzY3JvbGxSYW5nZS5tYXhYKCkpCisgICAgICAgIHNjcm9sbFJhbmdlLnNldFdpZHRoKG1h
eFNjcm9sbFBvc2l0aW9uLndpZHRoKCkgLSBzY3JvbGxQb3NpdGlvbi54KCkgLSBzY3JvbGxSYW5n
ZS54KCkpOworICAgIGlmICghc2Nyb2xsUmFuZ2UubWF4WSgpKQorICAgICAgICBzY3JvbGxSYW5n
ZS5zZXRIZWlnaHQobWF4U2Nyb2xsUG9zaXRpb24uaGVpZ2h0KCkgLSBzY3JvbGxQb3NpdGlvbi55
KCkgLSBzY3JvbGxSYW5nZS55KCkpOworICAgIEFTU0VSVChzY3JvbGxSYW5nZS54KCkgPD0gMCAm
JiBzY3JvbGxSYW5nZS5tYXhYKCkgPj0gMCk7CisgICAgQVNTRVJUKHNjcm9sbFJhbmdlLnkoKSA8
PSAwICYmIHNjcm9sbFJhbmdlLm1heFkoKSA+PSAwKTsKK30KKworSW50UmVjdCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpzY3JvbGxSYW5nZSgpIGNvbnN0Cit7CisgICAgY29uc3QgQ0NMYXllckltcGwq
IGxheWVySW1wbCA9IG1fcm9vdFNjcm9sbExheWVySW1wbDsKKyAgICBJbnRSZWN0IHNjcm9sbFJh
bmdlOworCisgICAgaWYgKGxheWVySW1wbCAmJiAhaXNWYWxpZFNjcm9sbFJhbmdlKHNjcm9sbFJh
bmdlKSkgeworICAgICAgICBpZiAobGF5ZXJJbXBsLT5zY3JvbGxhYmxlKCkpIHsKKyAgICAgICAg
ICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKGZsb29yZWRJbnRQb2ludChsYXllckltcGwtPnNj
cm9sbFBvc2l0aW9uKCkgKyBsYXllckltcGwtPnNjcm9sbERlbHRhKCkpKTsKKyAgICAgICAgICAg
IGV4cGFuZFNjcm9sbFJhbmdlKHNjcm9sbFJhbmdlLCBtX3BhZ2VTY2FsZURlbHRhLCBzY3JvbGxQ
b3NpdGlvbiwgbGF5ZXJJbXBsLT5tYXhTY3JvbGxQb3NpdGlvbigpKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gc2Nyb2xsUmFuZ2U7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1w
bDo6cGluY2hHZXN0dXJlQmVnaW4oKQogewogICAgIG1fcGluY2hHZXN0dXJlQWN0aXZlID0gdHJ1
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
SW5wdXRIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaAkocmV2aXNpb24gMTI0ODU3KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2lmbmRlZiBDQ0lucHV0SGFu
ZGxlcl9oCiAjZGVmaW5lIENDSW5wdXRIYW5kbGVyX2gKIAorI2luY2x1ZGUgIkludFJlY3QuaCIK
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogCkBAIC02NSw2ICs2NiwxMCBAQAogICAgIC8vIGNhbGxlZCBpZiBzY3JvbGxCZWdpbigpIHJl
dHVybmVkIFNjcm9sbFN0YXJ0ZWQuCiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbEVuZCgpID0gMDsK
IAorICAgIC8vIFJldHVybiB0aGUgc2Nyb2xsIHJhbmdlIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50
IHBvc2l0aW9uLiB0b3AvbGVmdAorICAgIC8vIHZhbHVlIDw9IDAsIGFuZCBib3R0b20vcmlnaHQg
dmFsdWUgPj0gMC4KKyAgICB2aXJ0dWFsIEludFJlY3Qgc2Nyb2xsUmFuZ2UoKSBjb25zdCA9IDA7
CisKICAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlQmVnaW4oKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHBpbmNoR2VzdHVyZVVwZGF0ZShmbG9hdCBtYWduaWZ5RGVsdGEsIGNvbnN0IEludFBv
aW50JiBhbmNob3IpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlRW5kKCkgPSAw
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAkocmV2aXNpb24gMTI0
ODU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw4IEBACiAgICAg
dmlydHVhbCB2b2lkIHNldEFjdGl2ZUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0cjxDQ0FjdGl2
ZUdlc3R1cmVBbmltYXRpb24+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVB
bmltYXRpb24oKSBPVkVSUklERTsKIAorICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxSYW5nZSgp
IGNvbnN0IE9WRVJSSURFOworCiAgICAgc3RydWN0IEZyYW1lRGF0YSB7CiAgICAgICAgIFZlY3Rv
cjxJbnRSZWN0PiBvY2NsdWRpbmdTY3JlZW5TcGFjZVJlY3RzOwogICAgICAgICBDQ1JlbmRlclBh
c3NMaXN0IHJlbmRlclBhc3NlczsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156992</attachid>
            <date>2012-08-07 13:43:05 -0700</date>
            <delta_ts>2012-08-07 16:01:37 -0700</delta_ts>
            <desc>Address jamesr&apos;s comments</desc>
            <filename>fling3.txt</filename>
            <type>text/plain</type>
            <size>27251</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTI0OTE1KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA4LTA3ICBOYXRl
IENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBVcHN0
cmVhbSBhbmRyb2lkJ3MgRmxpbmdBbmltYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0cyBpbiBjaHJvbWl1bSdzIFdlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsVGVzdC4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6CisgICAgICAgICog
Y2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybTo6Y3JlYXRlRmxpbmdBbmltYXRvcik6CisgICAgICAgICogY2hyb21p
dW0vcHVibGljL1dlYkZsaW5nQW5pbWF0b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViRmxpbmdBbmltYXRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZsaW5nQW5p
bWF0b3I6On5XZWJGbGluZ0FuaW1hdG9yKToKKwogMjAxMi0wOC0wNiAgSmFtZXMgUm9iaW5zb24g
IDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIGxpbmdl
cmluZyB1bndyYXA8PigpIGNhbGxzIGluIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKSW5kZXg6
IFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0
Zm9ybS9QbGF0Zm9ybS5neXBpCShyZXZpc2lvbiAxMjQ4NTcpCisrKyBTb3VyY2UvUGxhdGZvcm0v
UGxhdGZvcm0uZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQAogICAgICAgICAg
ICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmgnLAogICAgICAgICAgICAgJ2No
cm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYkZsaW5nQW5pbWF0b3IuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYkZsb2F0QW5pbWF0aW9uQ3VydmUuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYkZsb2F0S2V5ZnJhbWUuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkZs
b2F0UG9pbnQuaCcsCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRm
b3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0
Zm9ybS5oCShyZXZpc2lvbiAxMjQ4NTcpCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKIGNsYXNzIFdl
YkNvb2tpZUphcjsKIGNsYXNzIFdlYkZpbGVTeXN0ZW07CiBjbGFzcyBXZWJGaWxlVXRpbGl0aWVz
OworY2xhc3MgV2ViRmxpbmdBbmltYXRvcjsKIGNsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyOwog
Y2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQ7CiBjbGFzcyBXZWJNZXNzYWdlUG9ydENo
YW5uZWw7CkBAIC00MTAsNiArNDExLDcgQEAKICAgICAvLyBUaGlzIHZhbHVlIG11c3QgYmUgY2hl
Y2tlZCBhZ2FpbiBhZnRlciBhIGNvbnRleHQgbG9zcyBldmVudCBhcyB0aGUgcGxhdGZvcm0ncyBj
YXBhYmlsaXRpZXMgbWF5IGhhdmUgY2hhbmdlZC4KICAgICB2aXJ0dWFsIGJvb2wgY2FuQWNjZWxl
cmF0ZTJkQ2FudmFzKCkgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgV2ViRmxpbmdB
bmltYXRvciogY3JlYXRlRmxpbmdBbmltYXRvcigpIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIFdl
YlJUQyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmxpbmdB
bmltYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViRmxpbmdBbmltYXRvci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJGbGluZ0FuaW1hdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViRmxpbmdBbmltYXRvcl9oCisjZGVmaW5lIFdlYkZsaW5n
QW5pbWF0b3JfaAorCisjaW5jbHVkZSAiV2ViRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIldlYlBv
aW50LmgiCisjaW5jbHVkZSAiV2ViUmVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViRmxpbmdBbmltYXRvciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViRmxpbmdBbmlt
YXRvcigpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0RmxpbmcoY29uc3QgV2ViRmxvYXRQ
b2ludCYgdmVsb2NpdHksIGNvbnN0IFdlYlJlY3QmIHJhbmdlKSA9IDA7CisgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBhbmltYXRpb24gaXMgbm90IHlldCBmaW5pc2hlZC4KKyAgICB2aXJ0dWFs
IGJvb2wgdXBkYXRlUG9zaXRpb24oKSA9IDA7CisgICAgdmlydHVhbCBXZWJQb2ludCBnZXRDdXJy
ZW50UG9zaXRpb24oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbEZsaW5nKCkgPSAwOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJGbGluZ0FuaW1hdG9y
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEyNDg1NykKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtODIxNyw4ICs4MjE3LDExIEBACiAg
ICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9HcmFwaGljc0NvbnRleHQzRENo
cm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oJywKKyAgICAgICAgICAgICdwbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3Vy
dmVGYWN0b3J5LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
QXVkaW9CdXMuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dl
YkRhdGEuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkZs
aW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQQm9keS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViSFRUUExvYWRJbmZvLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcCcs
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjQ5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAxMi0wOC0wNyAgTmF0ZSBD
aGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXBzdHJl
YW0gYW5kcm9pZCdzIEZsaW5nQW5pbWF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkyOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdHMgaW4gY2hyb21pdW0ncyBXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbFRlc3QuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtR2VzdHVy
ZUN1cnZlRmFjdG9yeTo6Z2V0KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1HZXN0dXJlQ3Vy
dmVGYWN0b3J5OjpjcmVhdGVDdXJ2ZSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtR2VzdHVy
ZUN1cnZlRmFjdG9yeTo6c2V0V2ViRmxpbmdBbmltYXRvckZvclRlc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFj
dG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJGbGluZ0FuaW1h
dG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyOjpX
ZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aXNWYWxpZFNjcm9sbFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6ZXhwYW5kU2Nyb2xsUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsUmFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKwogMjAxMi0wOC0wNyAgQWJo
aXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENyYXNoIGluIENv
bnRhaW5lck5vZGU6OmNsb25lQ2hpbGROb2Rlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9y
bUdlc3R1cmVDdXJ2ZUZhY3RvcnkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1HZXN0
dXJlQ3VydmVGYWN0b3J5X2gKKyNkZWZpbmUgUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5X2gK
KworI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZlLmgiCisjaW5jbHVkZSA8cHVibGljL1dl
YkZsaW5nQW5pbWF0b3IuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5KiBnZXQoKTsKKworICAg
IFBhc3NPd25QdHI8V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZUN1cnZlKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByYW5nZSk7
CisgICAgdm9pZCBzZXRXZWJGbGluZ0FuaW1hdG9yRm9yVGVzdChQYXNzT3duUHRyPFdlYkZsaW5n
QW5pbWF0b3I+KTsKKworcHJpdmF0ZToKKyAgICB+UGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5
KCk7CisKKyAgICBPd25QdHI8V2ViRmxpbmdBbmltYXRvcj4gbV9tb2NrRmxpbmdBbmltYXRvcjsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUGxhdGZvcm1HZXN0dXJl
Q3VydmVGYWN0b3J5X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViRmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViRmxpbmdBbmlt
YXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3Vy
dmVBZGFwdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViRmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlcl9oCisjZGVmaW5lIFdlYkZs
aW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXJfaAorCisjaW5jbHVkZSAiRmxvYXRQb2lu
dC5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlQ3Vy
dmVUYXJnZXQuaCIKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJs
aWMvV2ViRmxpbmdBbmltYXRvci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
RmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlciA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZv
cm1HZXN0dXJlQ3VydmU+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB2ZWxvY2l0
eSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmFuZ2UsIFBhc3NPd25QdHI8V2ViRmxpbmdBbmlt
YXRvcj4gYW5pbWF0b3IpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkZs
aW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIodmVsb2NpdHksIHJhbmdlLCBhbmltYXRv
cikpOworICAgIH0KKworICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlIGltcGxl
bWVudGF0aW9uOgorICAgIHZpcnR1YWwgY29uc3QgY2hhciogZGVidWdOYW1lKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gIldlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIiOyB9
CisgICAgdmlydHVhbCBib29sIGFwcGx5KGRvdWJsZSB0aW1lLCBXZWJDb3JlOjpQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZVRhcmdldCogdGFyZ2V0KSBPVkVSUklERQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2FuaW1hdG9yLT51cGRhdGVQb3NpdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgIFdlYkNvcmU6OkludFBvaW50IGN1cnJlbnRQb3NpdGlvbiA9IG1fYW5pbWF0b3It
PmdldEN1cnJlbnRQb3NpdGlvbigpOworICAgICAgICB0YXJnZXQtPnNjcm9sbEJ5KFdlYkNvcmU6
OkludFBvaW50KGN1cnJlbnRQb3NpdGlvbiAtIG1fbGFzdFBvc2l0aW9uKSk7CisgICAgICAgIG1f
bGFzdFBvc2l0aW9uID0gY3VycmVudFBvc2l0aW9uOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgV2ViRmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRl
cihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgcmFuZ2UsIFBhc3NPd25QdHI8V2ViRmxpbmdBbmltYXRvcj4gYW5pbWF0b3IpCisgICAg
ICAgIDogbV9hbmltYXRvcihhbmltYXRvcikKKyAgICB7CisgICAgICAgIG1fYW5pbWF0b3ItPnN0
YXJ0RmxpbmcodmVsb2NpdHksIHJhbmdlKTsKKyAgICB9CisKKyAgICBPd25QdHI8V2ViRmxpbmdB
bmltYXRvcj4gbV9hbmltYXRvcjsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBtX2xhc3RQb3NpdGlv
bjsKK307CisKK30KKworI2VuZGlmIC8vIFdlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFk
YXB0ZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9Q
bGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5oIgorCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2lu
Y2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJl
Q3VydmUuaCIKKyNpbmNsdWRlICJXZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVy
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnkq
IFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeTo6Z2V0KCkKK3sKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeSwgZmFjdG9yeSwgKCkpOworICAgIHJl
dHVybiAmZmFjdG9yeTsKK30KKworUGFzc093blB0cjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZT4gUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5OjpjcmVhdGVDdXJ2ZShjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmFuZ2UpCit7
CisgICAgT3duUHRyPFdlYkZsaW5nQW5pbWF0b3I+IGZsaW5nQW5pbWF0b3IgPSBtX21vY2tGbGlu
Z0FuaW1hdG9yLnJlbGVhc2UoKTsKKyAgICBpZiAoIWZsaW5nQW5pbWF0b3IpCisgICAgICAgIGZs
aW5nQW5pbWF0b3IgPSBhZG9wdFB0cihQbGF0Zm9ybTo6Y3VycmVudCgpLT5jcmVhdGVGbGluZ0Fu
aW1hdG9yKCkpOworICAgIGlmICghZmxpbmdBbmltYXRvcikKKyAgICAgICAgcmV0dXJuIFdlYkNv
cmU6OlRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKHBvaW50KTsKKwor
ICAgIHJldHVybiBXZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyOjpjcmVhdGUo
cG9pbnQsIHJhbmdlLCBmbGluZ0FuaW1hdG9yLnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1HZXN0dXJlQ3VydmVGYWN0b3J5OjpzZXRXZWJGbGluZ0FuaW1hdG9yRm9yVGVzdChQYXNzT3du
UHRyPFdlYkZsaW5nQW5pbWF0b3I+IG1vY2tGbGluZ0FuaW1hdG9yKQoreworICAgIG1fbW9ja0Zs
aW5nQW5pbWF0b3IgPSBtb2NrRmxpbmdBbmltYXRvcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAkocmV2aXNp
b24gMTI0ODU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyNCw2ICs5MjQs
NTAgQEAKICAgICBjbGVhckN1cnJlbnRseVNjcm9sbGluZ0xheWVyKCk7CiB9CiAKK3N0YXRpYyBi
b29sIGlzVmFsaWRTY3JvbGxSYW5nZShjb25zdCBJbnRSZWN0JiBzY3JvbGxSYW5nZSkKK3sKKyAg
ICByZXR1cm4gc2Nyb2xsUmFuZ2UueCgpIDwgMCAmJiBzY3JvbGxSYW5nZS55KCkgPCAwICYmIHNj
cm9sbFJhbmdlLm1heFgoKSA+IDAgJiYgc2Nyb2xsUmFuZ2UubWF4WSgpID4gMDsKK30KKworc3Rh
dGljIHZvaWQgZXhwYW5kU2Nyb2xsUmFuZ2UoSW50UmVjdCYgc2Nyb2xsUmFuZ2UsIGZsb2F0IHNj
YWxlLCBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbiwgSW50U2l6ZSBtYXhTY3JvbGxQb3NpdGlvbikK
K3sKKyAgICBzY3JvbGxQb3NpdGlvbi5zY2FsZShzY2FsZSwgc2NhbGUpOworICAgIG1heFNjcm9s
bFBvc2l0aW9uLnNjYWxlKHNjYWxlKTsKKyAgICBzY3JvbGxQb3NpdGlvbi5jbGFtcE5lZ2F0aXZl
VG9aZXJvKCk7CisgICAgbWF4U2Nyb2xsUG9zaXRpb24gPSBtYXhTY3JvbGxQb3NpdGlvbi5leHBh
bmRlZFRvKHRvU2l6ZShzY3JvbGxQb3NpdGlvbikpOworICAgIC8vIE9ubHkgZXhwYW5kIHRoZSBz
Y3JvbGwgcmFuZ2UgYWxvbmcgYW4gYXhpcyBpZiB0aGVyZSBwcmV2aW91c2x5IHdhcyBubyByb29t
IHRvIHNjcm9sbCBpbiB0aGF0IGRpcmVjdGlvbi4KKyAgICAvLyBUaGlzIGlzIHRvIGVuc3VyZSB0
aGF0IGZsaW5ncyBkbyBub3Qgb3ZlcnNob290IHRoZSBib3VuZGFyaWVzIG9mIGEgc2Nyb2xsYWJs
ZSBlbGVtZW50IGFuZCBzdGFydCBzY3JvbGxpbmcKKyAgICAvLyBpdHMgcGFyZW50IGluc3RlYWQu
CisgICAgaWYgKCFzY3JvbGxSYW5nZS54KCkpIHsKKyAgICAgICAgc2Nyb2xsUmFuZ2Uuc2V0WCgt
c2Nyb2xsUG9zaXRpb24ueCgpKTsKKyAgICAgICAgc2Nyb2xsUmFuZ2Uuc2V0V2lkdGgoc2Nyb2xs
UmFuZ2Uud2lkdGgoKSArIHNjcm9sbFBvc2l0aW9uLngoKSk7CisgICAgfQorICAgIGlmICghc2Ny
b2xsUmFuZ2UueSgpKSB7CisgICAgICAgIHNjcm9sbFJhbmdlLnNldFkoLXNjcm9sbFBvc2l0aW9u
LnkoKSk7CisgICAgICAgIHNjcm9sbFJhbmdlLnNldEhlaWdodChzY3JvbGxSYW5nZS5oZWlnaHQo
KSArIHNjcm9sbFBvc2l0aW9uLnkoKSk7CisgICAgfQorICAgIGlmICghc2Nyb2xsUmFuZ2UubWF4
WCgpKQorICAgICAgICBzY3JvbGxSYW5nZS5zZXRXaWR0aChtYXhTY3JvbGxQb3NpdGlvbi53aWR0
aCgpIC0gc2Nyb2xsUG9zaXRpb24ueCgpIC0gc2Nyb2xsUmFuZ2UueCgpKTsKKyAgICBpZiAoIXNj
cm9sbFJhbmdlLm1heFkoKSkKKyAgICAgICAgc2Nyb2xsUmFuZ2Uuc2V0SGVpZ2h0KG1heFNjcm9s
bFBvc2l0aW9uLmhlaWdodCgpIC0gc2Nyb2xsUG9zaXRpb24ueSgpIC0gc2Nyb2xsUmFuZ2UueSgp
KTsKKyAgICBBU1NFUlQoc2Nyb2xsUmFuZ2UueCgpIDw9IDAgJiYgc2Nyb2xsUmFuZ2UubWF4WCgp
ID49IDApOworICAgIEFTU0VSVChzY3JvbGxSYW5nZS55KCkgPD0gMCAmJiBzY3JvbGxSYW5nZS5t
YXhZKCkgPj0gMCk7Cit9CisKK0ludFJlY3QgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsUmFu
Z2UoKSBjb25zdAoreworICAgIGNvbnN0IENDTGF5ZXJJbXBsKiBsYXllckltcGwgPSBtX3Jvb3RT
Y3JvbGxMYXllckltcGw7CisgICAgSW50UmVjdCBzY3JvbGxSYW5nZTsKKworICAgIGlmIChsYXll
ckltcGwgJiYgIWlzVmFsaWRTY3JvbGxSYW5nZShzY3JvbGxSYW5nZSkpIHsKKyAgICAgICAgaWYg
KGxheWVySW1wbC0+c2Nyb2xsYWJsZSgpKSB7CisgICAgICAgICAgICBJbnRQb2ludCBzY3JvbGxQ
b3NpdGlvbihmbG9vcmVkSW50UG9pbnQobGF5ZXJJbXBsLT5zY3JvbGxQb3NpdGlvbigpICsgbGF5
ZXJJbXBsLT5zY3JvbGxEZWx0YSgpKSk7CisgICAgICAgICAgICBleHBhbmRTY3JvbGxSYW5nZShz
Y3JvbGxSYW5nZSwgbV9wYWdlU2NhbGVEZWx0YSwgc2Nyb2xsUG9zaXRpb24sIGxheWVySW1wbC0+
bWF4U2Nyb2xsUG9zaXRpb24oKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHNjcm9s
bFJhbmdlOworfQorCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnBpbmNoR2VzdHVyZUJlZ2lu
KCkKIHsKICAgICBtX3BpbmNoR2VzdHVyZUFjdGl2ZSA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCShyZXZpc2lvbiAxMjQ4NTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDggQEAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0
aXZlR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbj4p
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpIE9WRVJSSURF
OwogCisgICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbFJhbmdlKCkgY29uc3QgT1ZFUlJJREU7CisK
ICAgICBzdHJ1Y3QgRnJhbWVEYXRhIHsKICAgICAgICAgVmVjdG9yPEludFJlY3Q+IG9jY2x1ZGlu
Z1NjcmVlblNwYWNlUmVjdHM7CiAgICAgICAgIENDUmVuZGVyUGFzc0xpc3QgcmVuZGVyUGFzc2Vz
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJ
bnB1dEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCShyZXZpc2lvbiAxMjQ4NTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaWZuZGVmIENDSW5wdXRIYW5k
bGVyX2gKICNkZWZpbmUgQ0NJbnB1dEhhbmRsZXJfaAogCisjaW5jbHVkZSAiSW50UmVjdC5oIgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAKQEAgLTY1LDYgKzY2LDEwIEBACiAgICAgLy8gY2FsbGVkIGlmIHNjcm9sbEJlZ2luKCkgcmV0
dXJuZWQgU2Nyb2xsU3RhcnRlZC4KICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsRW5kKCkgPSAwOwog
CisgICAgLy8gUmV0dXJuIHRoZSBzY3JvbGwgcmFuZ2UgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQg
cG9zaXRpb24uIHRvcC9sZWZ0CisgICAgLy8gdmFsdWUgPD0gMCwgYW5kIGJvdHRvbS9yaWdodCB2
YWx1ZSA+PSAwLgorICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxSYW5nZSgpIGNvbnN0ID0gMDsK
KwogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVCZWdpbigpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcGluY2hHZXN0dXJlVXBkYXRlKGZsb2F0IG1hZ25pZnlEZWx0YSwgY29uc3QgSW50UG9p
bnQmIGFuY2hvcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVFbmQoKSA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCShyZXZpc2lvbiAxMjQ4NTcpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIldlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsLmgiCiAKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZh
Y3RvcnkuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oIgogI2luY2x1
ZGUgIlRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oIgogI2luY2x1ZGUgIlRyYWNl
RXZlbnQuaCIKQEAgLTI2OSw3ICsyNzAsNyBAQAogICAgIHN3aXRjaCAoc2Nyb2xsU3RhdHVzKSB7
CiAgICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZDogewogICAgICAg
ICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OmhhbmRsZUdlc3R1cmVGbGluZzo6c3RhcnRlZCIpOwotICAgICAgICBPd25QdHI8UGxhdGZv
cm1HZXN0dXJlQ3VydmU+IGZsaW5nQ3VydmUgPSBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJl
Q3VydmU6OmNyZWF0ZShGbG9hdFBvaW50KGdlc3R1cmVFdmVudC5kZWx0YVgsIGdlc3R1cmVFdmVu
dC5kZWx0YVkpKTsKKyAgICAgICAgT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBmbGluZ0N1
cnZlID0gUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5OjpnZXQoKS0+Y3JlYXRlQ3VydmUoRmxv
YXRQb2ludChnZXN0dXJlRXZlbnQuZGVsdGFYLCBnZXN0dXJlRXZlbnQuZGVsdGFZKSwgbV9pbnB1
dEhhbmRsZXJDbGllbnQtPnNjcm9sbFJhbmdlKCkpOwogICAgICAgICBtX3doZWVsRmxpbmdBbmlt
YXRpb24gPSBDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb246OmNyZWF0ZShQbGF0Zm9ybUdlc3R1cmVU
b0NDR2VzdHVyZUFkYXB0ZXI6OmNyZWF0ZShmbGluZ0N1cnZlLnJlbGVhc2UoKSksIHRoaXMpOwog
ICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmRlbHRhID0gV2ViRmxvYXRQb2ludChnZXN0
dXJlRXZlbnQuZGVsdGFYLCBnZXN0dXJlRXZlbnQuZGVsdGFZKTsKICAgICAgICAgbV93aGVlbEZs
aW5nUGFyYW1ldGVycy5wb2ludCA9IFdlYlBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZl
bnQueSk7CkBAIC0zMjAsNiArMzIxLDEwIEBACiAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDEoImNj
IiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpjYW5jZWxDdXJyZW50RmxpbmciLCAi
aGFkRmxpbmdBbmltYXRpb24iLCBoYWRGbGluZ0FuaW1hdGlvbik7CiAgICAgbV93aGVlbEZsaW5n
QW5pbWF0aW9uLmNsZWFyKCk7CiAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycyA9IFdlYkFjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKCk7CisjaWYgT1MoQU5EUk9JRCkKKyAgICBpZiAoaGFkRmxp
bmdBbmltYXRpb24pCisgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxFbmQoKTsK
KyNlbmRpZgogICAgIHJldHVybiBoYWRGbGluZ0FuaW1hdGlvbjsKIH0KIApAQCAtMzI4LDYgKzMz
MywxMSBAQAogICAgIGlmIChpbmNyZW1lbnQgPT0gSW50UG9pbnQ6Onplcm8oKSkKICAgICAgICAg
cmV0dXJuOwogCisjaWYgT1MoQU5EUk9JRCkKKyAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Ny
b2xsQnkoSW50U2l6ZShpbmNyZW1lbnQueCgpLCBpbmNyZW1lbnQueSgpKSk7CisgICAgcmV0dXJu
OworI2VuZGlmCisKICAgICBUUkFDRV9FVkVOVDIoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsOjpzY3JvbGxCeSIsICJ4IiwgaW5jcmVtZW50LngoKSwgInkiLCBpbmNyZW1lbnQu
eSgpKTsKICAgICBXZWJNb3VzZVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWw7CiAgICAgc3ludGhl
dGljV2hlZWwudHlwZSA9IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWw7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCShyZXZpc2lvbiAxMjQ4NTcpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKIAogI2luY2x1ZGUgIldlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgiCiAKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRv
ci5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQuaCIKICNpbmNs
dWRlICJXZWJJbnB1dEV2ZW50LmgiCkBAIC02Myw2ICs2NSw4IEBACiAgICAgTU9DS19NRVRIT0Qx
KHNjcm9sbEJ5LCB2b2lkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSk7CiAgICAgTU9DS19NRVRI
T0QwKHNjcm9sbEVuZCwgdm9pZCgpKTsKIAorICAgIFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsUmFu
Z2UoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpJbnRSZWN0KCk7IH0KKwogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgdGFyZ2V0UG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgYW5jaG9yUG9pbnQsCkBAIC0xMTcsNiArMTIxLDM0IEBACiAgICAgV2ViQ29t
cG9zaXRvcjo6c2h1dGRvd24oKTsKIH0KIAorY2xhc3MgVGVzdEZsaW5nQW5pbWF0b3IgOiBwdWJs
aWMgV2ViS2l0OjpXZWJGbGluZ0FuaW1hdG9yIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQg
c3RhcnRGbGluZyhjb25zdCBXZWJGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgV2ViUmVjdCYg
cmFuZ2UpCisgICAgeworICAgICAgICBtX3ZlbG9jaXR5ID0gV2ViQ29yZTo6SW50U2l6ZSgoaW50
KXZlbG9jaXR5LngsIChpbnQpdmVsb2NpdHkueSk7CisgICAgfQorCisgICAgdmlydHVhbCBib29s
IHVwZGF0ZVBvc2l0aW9uKCkKKyAgICB7CisgICAgICAgIC8vIFNjcm9sbCBmb3JldmVyIG9uY2Ug
c3RhcnRlZCBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhlc2UgdGVzdHMuCisgICAgICAgIC8vIFdlIGRv
bid0IHdhbnQgdG8gbWFrZSB0aGVtIHRpbWluZy1zZW5zaXRpdmUgYW55d2F5cy4KKyAgICAgICAg
cmV0dXJuIG1fdmVsb2NpdHkud2lkdGgoKSA+IDAgfHwgbV92ZWxvY2l0eS5oZWlnaHQoKSA+IDA7
CisgICAgfQorCisgICAgdmlydHVhbCBXZWJQb2ludCBnZXRDdXJyZW50UG9zaXRpb24oKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uICs9IG1fdmVsb2NpdHk7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbEZsaW5nKCkKKyAgICB7CisgICAgICAgIG1fdmVsb2Np
dHkgPSBXZWJDb3JlOjpJbnRTaXplKCk7CisgICAgfQorcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpJ
bnRQb2ludCBtX2xhc3RQb3NpdGlvbjsKKyAgICBXZWJDb3JlOjpJbnRTaXplIG1fdmVsb2NpdHk7
Cit9OworCiBjbGFzcyBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGxUZXN0KCkKQEAgLTMzNiwxMiArMzY4LDQyIEBACiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRs
ZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiB9CiAKKyNpZiBPUyhBTkRST0lEKQorLy8gRklYTUU6IFNv
cnQgb3V0IHdoZXRoZXIgZGlmZmVyZW5jZXMgYmV0d2VlbiB0b3VjaCBhbmQgd2hlZWwgZmxpbmcg
YXJlIG5lZWRlZC4KKy8vIFdlIHNob3VsZCBlaXRoZXIgaGF2ZSBkaWZmZXJlbnQgY29uY2VwdHMg
b2YgdG91Y2ggYW5kIG1vdXNlIHdoZWVsIGZsaW5nIGJhc2VkIG9uIGEgbWFjcm8sCisvLyBhbmQg
dGhlbiBydW4gYSBkaWZmZXJlbnQgdGVzdCBoZXJlIGJhc2VkIG9uIHRoYXQuIE9yIHVuaWZ5IHRo
ZSBjb2RlIGFuZCBoYW5kbGUgdGhlCisvLyBkaWZmZXJlbmNlcyBpbiBzY3JvbGwgYmVoYXZpb3Ig
YXQgYSBkaWZmZXJlbnQgbGV2ZWwuCisvLyBUaGUgY3VycmVudCBkaWZmZXJlbmNlcyBjb21lIGRv
d24gdG8gbW91c2Ugd2hlZWwgZmxpbmcgd3JhcHBpbmcgZWFjaCBmbGluZyB1cGRhdGUgaW4KKy8v
IGEgYmVnaW4vZW5kIHBhaXIgaW4gdGhlIG90aGVyIHZlcnNpb24gb2YgdGhlIHRlc3QgZnVydGhl
ciBkb3duLgogVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVy
ZUZsaW5nQW5pbWF0ZXMpCiB7CisgICAgUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5OjpnZXQo
KS0+c2V0V2ViRmxpbmdBbmltYXRvckZvclRlc3QoYWRvcHRQdHIobmV3IFRlc3RGbGluZ0FuaW1h
dG9yKSk7CisKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2VuZCBhbnkgZXZlbnRzIHRvIHRoZSB3aWRn
ZXQgZm9yIHRoaXMgZ2VzdHVyZS4KICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBEaWRIYW5k
bGU7CiAgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOworICAgIAorICAgIGdlc3R1cmUudHlw
ZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisgICAgZ2VzdHVy
ZS5kZWx0YVggPSAxMDAwOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xp
ZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0
SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCisgICAg
LldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6
U2Nyb2xsU3RhcnRlZCkpOworICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdl
c3R1cmUpOworICAgIAorICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRp
b25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CisgICAgRVhQRUNUX0NBTEwobV9tb2Nr
Q0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOworICAgIEVYUEVDVF9D
QUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0
ZXN0aW5nOjpfKSkuVGltZXMoMCk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjp3
aWR0aCwgdGVzdGluZzo6R3QoMCkpKSkuVGltZXMoMSk7CisgICAgbV9pbnB1dEhhbmRsZXItPmFu
aW1hdGUoMTApOworfQogCisjZWxzZQorVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsVGVzdCwgZ2VzdHVyZUZsaW5nQW5pbWF0ZXMpCit7CisgICAgLy8gV2Ugc2hvdWxkbid0IHNl
bmQgYW55IGV2ZW50cyB0byB0aGUgd2lkZ2V0IGZvciB0aGlzIGdlc3R1cmUuCisgICAgbV9leHBl
Y3RlZERpc3Bvc2l0aW9uID0gRGlkSGFuZGxlOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1Mo
KTsKKwogICAgIC8vIE9uIHRoZSBmbGluZyBzdGFydCwgd2Ugc2hvdWxkIHNjaGVkdWxlIGFuIGFu
aW1hdGlvbiBidXQgbm90IGFjdHVhbGx5IHN0YXJ0CiAgICAgLy8gc2Nyb2xsaW5nLgogICAgIGdl
c3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OwpAQCAtNTYxLDUg
KzYyMyw2IEBACiAgICAgICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViU2l6ZTo6aGVpZ2h0LCB0
ZXN0aW5nOjpMdCgwKSkpKSkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDMwLjIpOwog
fQorI2VuZGlmCiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAx
MjQ5MTUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA4LTA3ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBVcHN0cmVhbSBhbmRyb2lkJ3MgRmxpbmdB
bmltYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTI5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0cyBpbiBjaHJvbWl1bSdzIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC4KKwor
ICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6Y2Fu
Y2VsQ3VycmVudEZsaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGw6OnNjcm9sbEJ5KToKKyAgICAgICAgKiB0ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpNb2NrQ0NJbnB1dEhhbmRsZXJD
bGllbnQ6OnNjcm9sbFJhbmdlKToKKyAgICAgICAgKE1vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk6
CisgICAgICAgIChUZXN0RmxpbmdBbmltYXRvcik6CisgICAgICAgIChXZWJLaXQ6OlRlc3RGbGlu
Z0FuaW1hdG9yOjpzdGFydEZsaW5nKToKKyAgICAgICAgKFdlYktpdDo6VGVzdEZsaW5nQW5pbWF0
b3I6OnVwZGF0ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6VGVzdEZsaW5nQW5pbWF0b3I6
OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlRlc3RGbGluZ0FuaW1hdG9y
OjpjYW5jZWxGbGluZyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpURVNU
X0YpOgorCiAyMDEyLTA4LTA3ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUkVHUkVTU0lPTihyMTI0ODY1KTogSXQgYnJva2UgdGhlIEFSTSBDaHJvbWl1bSBi
dWlsZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157032</attachid>
            <date>2012-08-07 16:01:37 -0700</date>
            <delta_ts>2012-08-08 10:49:25 -0700</delta_ts>
            <desc>Remove WebKit/chromium and WebCore/platform/graphics/chromium/ changes</desc>
            <filename>fling4.txt</filename>
            <type>text/plain</type>
            <size>15451</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCShyZXZpc2lvbiAxMjQ4NTcpCisrKyBTb3VyY2UvUGxh
dGZvcm0vUGxhdGZvcm0uZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQAogICAg
ICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaCcsCisgICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYkZsaW5nQW5pbWF0b3IuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYkZsb2F0QW5pbWF0aW9uQ3VydmUuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYkZsb2F0S2V5ZnJhbWUuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYkZsb2F0UG9pbnQuaCcsCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkZsaW5nQW5pbWF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkZsaW5nQW5pbWF0b3IuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmxpbmdBbmltYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZsaW5nQW5pbWF0b3JfaAorI2RlZmlu
ZSBXZWJGbGluZ0FuaW1hdG9yX2gKKworI2luY2x1ZGUgIldlYkZsb2F0UG9pbnQuaCIKKyNpbmNs
dWRlICJXZWJQb2ludC5oIgorI2luY2x1ZGUgIldlYlJlY3QuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYkZsaW5nQW5pbWF0b3IgeworcHVibGljOgorICAgIHZpcnR1YWwgfldl
YkZsaW5nQW5pbWF0b3IoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzdGFydEZsaW5nKGNvbnN0
IFdlYkZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBXZWJSZWN0JiByYW5nZSkgPSAwOworICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgYW5pbWF0aW9uIGlzIG5vdCB5ZXQgZmluaXNoZWQuCisg
ICAgdmlydHVhbCBib29sIHVwZGF0ZVBvc2l0aW9uKCkgPSAwOworICAgIHZpcnR1YWwgV2ViUG9p
bnQgZ2V0Q3VycmVudFBvc2l0aW9uKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxGbGlu
ZygpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRmxp
bmdBbmltYXRvcl9oCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRm
b3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0
Zm9ybS5oCShyZXZpc2lvbiAxMjQ4NTcpCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKIGNsYXNzIFdl
YkNvb2tpZUphcjsKIGNsYXNzIFdlYkZpbGVTeXN0ZW07CiBjbGFzcyBXZWJGaWxlVXRpbGl0aWVz
OworY2xhc3MgV2ViRmxpbmdBbmltYXRvcjsKIGNsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyOwog
Y2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQ7CiBjbGFzcyBXZWJNZXNzYWdlUG9ydENo
YW5uZWw7CkBAIC00MTAsNiArNDExLDcgQEAKICAgICAvLyBUaGlzIHZhbHVlIG11c3QgYmUgY2hl
Y2tlZCBhZ2FpbiBhZnRlciBhIGNvbnRleHQgbG9zcyBldmVudCBhcyB0aGUgcGxhdGZvcm0ncyBj
YXBhYmlsaXRpZXMgbWF5IGhhdmUgY2hhbmdlZC4KICAgICB2aXJ0dWFsIGJvb2wgY2FuQWNjZWxl
cmF0ZTJkQ2FudmFzKCkgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgV2ViRmxpbmdB
bmltYXRvciogY3JlYXRlRmxpbmdBbmltYXRvcigpIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIFdl
YlJUQyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTI0OTE1KQorKysgU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA4
LTA3ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBVcHN0cmVhbSBhbmRyb2lkJ3MgRmxpbmdBbmltYXRvcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5MDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBpbiBjaHJvbWl1bSdzIFdlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6Cisg
ICAgICAgICogY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmg6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybTo6Y3JlYXRlRmxpbmdBbmltYXRvcik6CisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1dlYkZsaW5nQW5pbWF0b3IuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViRmxpbmdBbmltYXRvcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZsaW5nQW5pbWF0b3I6On5XZWJGbGluZ0FuaW1hdG9yKToKKwogMjAxMi0wOC0wNiAgSmFtZXMg
Um9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVt
b3ZlIGxpbmdlcmluZyB1bndyYXA8PigpIGNhbGxzIGluIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNDkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA4LTA3ICBOYXRl
IENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBVcHN0
cmVhbSBhbmRyb2lkJ3MgRmxpbmdBbmltYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0cyBpbiBjaHJvbWl1bSdzIFdlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsVGVzdC4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1HZXN0
dXJlQ3VydmVGYWN0b3J5OjpnZXQpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZUZhY3Rvcnk6OmNyZWF0ZUN1cnZlKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1HZXN0
dXJlQ3VydmVGYWN0b3J5OjpzZXRXZWJGbGluZ0FuaW1hdG9yRm9yVGVzdCk6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUGxhdGZvcm1HZXN0dXJlQ3VydmVG
YWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkZsaW5nQW5p
bWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViRmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlcik6CisgICAgICAg
IChXZWJLaXQ6OldlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXI6
OldlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIpOgorCiAyMDEyLTA4LTA3ICBB
Ymhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ3Jhc2ggaW4g
Q29udGFpbmVyTm9kZTo6Y2xvbmVDaGlsZE5vZGVzLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFw
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkZsaW5nQW5p
bWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVy
X2gKKyNkZWZpbmUgV2ViRmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlcl9oCisKKyNp
bmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJ
bnRSZWN0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlQ3VydmUuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oIgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGbGluZ0FuaW1hdG9yLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyIDogcHVi
bGljIFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByYW5nZSwgUGFzc093
blB0cjxXZWJGbGluZ0FuaW1hdG9yPiBhbmltYXRvcikKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgV2ViRmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlcih2ZWxvY2l0
eSwgcmFuZ2UsIGFuaW1hdG9yKSk7CisgICAgfQorCisgICAgLy8gV2ViQ29yZTo6UGxhdGZvcm1H
ZXN0dXJlQ3VydmUgaW1wbGVtZW50YXRpb246CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBkZWJ1
Z05hbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAiV2ViRmxpbmdBbmltYXRvclRvR2VzdHVy
ZUN1cnZlQWRhcHRlciI7IH0KKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoZG91YmxlIHRpbWUsIFdl
YkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0KiB0YXJnZXQpIE9WRVJSSURFCisgICAg
eworICAgICAgICBpZiAoIW1fYW5pbWF0b3ItPnVwZGF0ZVBvc2l0aW9uKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgY3VycmVudFBvc2l0
aW9uID0gbV9hbmltYXRvci0+Z2V0Q3VycmVudFBvc2l0aW9uKCk7CisgICAgICAgIHRhcmdldC0+
c2Nyb2xsQnkoV2ViQ29yZTo6SW50UG9pbnQoY3VycmVudFBvc2l0aW9uIC0gbV9sYXN0UG9zaXRp
b24pKTsKKyAgICAgICAgbV9sYXN0UG9zaXRpb24gPSBjdXJyZW50UG9zaXRpb247CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJGbGluZ0FuaW1hdG9yVG9H
ZXN0dXJlQ3VydmVBZGFwdGVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHZlbG9jaXR5LCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiByYW5nZSwgUGFzc093blB0cjxXZWJGbGluZ0FuaW1hdG9y
PiBhbmltYXRvcikKKyAgICAgICAgOiBtX2FuaW1hdG9yKGFuaW1hdG9yKQorICAgIHsKKyAgICAg
ICAgbV9hbmltYXRvci0+c3RhcnRGbGluZyh2ZWxvY2l0eSwgcmFuZ2UpOworICAgIH0KKworICAg
IE93blB0cjxXZWJGbGluZ0FuaW1hdG9yPiBtX2FuaW1hdG9yOworICAgIFdlYkNvcmU6OkludFBv
aW50IG1fbGFzdFBvc2l0aW9uOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViRmxpbmdBbmltYXRv
clRvR2VzdHVyZUN1cnZlQWRhcHRlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdl
c3R1cmVDdXJ2ZUZhY3RvcnkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgiCisKKyNpbmNsdWRlICJG
bG9hdFBvaW50LmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlRvdWNocGFkRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oIgorI2luY2x1ZGUgIldlYkZsaW5nQW5pbWF0b3JUb0dl
c3R1cmVDdXJ2ZUFkYXB0ZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1BsYXRmb3JtR2Vz
dHVyZUN1cnZlRmFjdG9yeSogUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5OjpnZXQoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LCBmYWN0
b3J5LCAoKSk7CisgICAgcmV0dXJuICZmYWN0b3J5OworfQorCitQYXNzT3duUHRyPFdlYkNvcmU6
OlBsYXRmb3JtR2VzdHVyZUN1cnZlPiBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmNyZWF0
ZUN1cnZlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiByYW5nZSkKK3sKKyAgICBPd25QdHI8V2ViRmxpbmdBbmltYXRvcj4gZmxpbmdBbmlt
YXRvciA9IG1fbW9ja0ZsaW5nQW5pbWF0b3IucmVsZWFzZSgpOworICAgIGlmICghZmxpbmdBbmlt
YXRvcikKKyAgICAgICAgZmxpbmdBbmltYXRvciA9IGFkb3B0UHRyKFBsYXRmb3JtOjpjdXJyZW50
KCktPmNyZWF0ZUZsaW5nQW5pbWF0b3IoKSk7CisgICAgaWYgKCFmbGluZ0FuaW1hdG9yKQorICAg
ICAgICByZXR1cm4gV2ViQ29yZTo6VG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpj
cmVhdGUocG9pbnQpOworCisgICAgcmV0dXJuIFdlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2
ZUFkYXB0ZXI6OmNyZWF0ZShwb2ludCwgcmFuZ2UsIGZsaW5nQW5pbWF0b3IucmVsZWFzZSgpKTsK
K30KKwordm9pZCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OnNldFdlYkZsaW5nQW5pbWF0
b3JGb3JUZXN0KFBhc3NPd25QdHI8V2ViRmxpbmdBbmltYXRvcj4gbW9ja0ZsaW5nQW5pbWF0b3Ip
Cit7CisgICAgbV9tb2NrRmxpbmdBbmltYXRvciA9IG1vY2tGbGluZ0FuaW1hdG9yOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL3N1cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVD
dXJ2ZUZhY3RvcnkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1HZXN0dXJlQ3VydmVG
YWN0b3J5X2gKKyNkZWZpbmUgUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5X2gKKworI2luY2x1
ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZlLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkZsaW5nQW5p
bWF0b3IuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5KiBnZXQoKTsKKworICAgIFBhc3NPd25Q
dHI8V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZUN1cnZlKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByYW5nZSk7CisgICAgdm9p
ZCBzZXRXZWJGbGluZ0FuaW1hdG9yRm9yVGVzdChQYXNzT3duUHRyPFdlYkZsaW5nQW5pbWF0b3I+
KTsKKworcHJpdmF0ZToKKyAgICB+UGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5KCk7CisKKyAg
ICBPd25QdHI8V2ViRmxpbmdBbmltYXRvcj4gbV9tb2NrRmxpbmdBbmltYXRvcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0
b3J5X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEyNDg1NykKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtODIxNyw4ICs4MjE3LDExIEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9HcmFwaGljc0NvbnRleHQz
RENocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9H
cmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5jcHAn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvUGxhdGZvcm1HZXN0dXJl
Q3VydmVGYWN0b3J5LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViQXVkaW9CdXMuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYkRhdGEuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dl
YkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQQm9keS5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViSFRUUExvYWRJbmZvLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yLmNw
cCcsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157041</attachid>
            <date>2012-08-07 16:45:55 -0700</date>
            <delta_ts>2012-08-07 16:46:14 -0700</delta_ts>
            <desc>Address ChangeLog nits</desc>
            <filename>fling5.txt</filename>
            <type>text/plain</type>
            <size>15464</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmxpbmdBbmltYXRvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmxpbmdB
bmltYXRvci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJGbGluZ0FuaW1hdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViRmxpbmdBbmltYXRvcl9oCisjZGVmaW5lIFdlYkZsaW5nQW5pbWF0b3Jf
aAorCisjaW5jbHVkZSAiV2ViRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIldlYlBvaW50LmgiCisj
aW5jbHVkZSAiV2ViUmVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRmxp
bmdBbmltYXRvciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViRmxpbmdBbmltYXRvcigpIHsg
fQorCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0RmxpbmcoY29uc3QgV2ViRmxvYXRQb2ludCYgdmVs
b2NpdHksIGNvbnN0IFdlYlJlY3QmIHJhbmdlKSA9IDA7CisgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHRoZSBhbmltYXRpb24gaXMgbm90IHlldCBmaW5pc2hlZC4KKyAgICB2aXJ0dWFsIGJvb2wgdXBk
YXRlUG9zaXRpb24oKSA9IDA7CisgICAgdmlydHVhbCBXZWJQb2ludCBnZXRDdXJyZW50UG9zaXRp
b24oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbEZsaW5nKCkgPSAwOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJGbGluZ0FuaW1hdG9yX2gKSW5kZXg6
IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEy
NDkwMikKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAkod29y
a2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQAogY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3Mg
V2ViRmlsZVN5c3RlbTsKIGNsYXNzIFdlYkZpbGVVdGlsaXRpZXM7CitjbGFzcyBXZWJGbGluZ0Fu
aW1hdG9yOwogY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXI7CiBjbGFzcyBXZWJNZWRpYVN0cmVh
bUNlbnRlckNsaWVudDsKIGNsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbDsKQEAgLTQxMCw2ICs0
MTEsNyBAQAogICAgIC8vIFRoaXMgdmFsdWUgbXVzdCBiZSBjaGVja2VkIGFnYWluIGFmdGVyIGEg
Y29udGV4dCBsb3NzIGV2ZW50IGFzIHRoZSBwbGF0Zm9ybSdzIGNhcGFiaWxpdGllcyBtYXkgaGF2
ZSBjaGFuZ2VkLgogICAgIHZpcnR1YWwgYm9vbCBjYW5BY2NlbGVyYXRlMmRDYW52YXMoKSB7IHJl
dHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCBXZWJGbGluZ0FuaW1hdG9yKiBjcmVhdGVGbGlu
Z0FuaW1hdG9yKCkgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gV2ViUlRDIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApJbmRleDogU291
cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMjQ5MDIpCisrKyBTb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDgtMDcgIE5hdGUgQ2hhcGluICA8
amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFVwc3RyZWFtIGFuZHJv
aWQncyBGbGluZ0FuaW1hdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MjkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyB5ZXQsIHdpbGwgYmUgYWRkZWQgb25jZSB0aGlzIGNvZGUg
aXMgY2FsbGVkLgorCisgICAgICAgICogUGxhdGZvcm0uZ3lwaToKKyAgICAgICAgKiBjaHJvbWl1
bS9wdWJsaWMvUGxhdGZvcm0uaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OlBsYXRmb3JtOjpjcmVhdGVGbGluZ0FuaW1hdG9yKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJs
aWMvV2ViRmxpbmdBbmltYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJGbGluZ0FuaW1hdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmxpbmdBbmltYXRvcjo6
fldlYkZsaW5nQW5pbWF0b3IpOgorCiAyMDEyLTA4LTA2ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVz
ckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgbGluZ2VyaW5nIHVu
d3JhcDw+KCkgY2FsbHMgaW4gR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApJbmRleDogU291cmNl
L1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL1Bs
YXRmb3JtLmd5cGkJKHJldmlzaW9uIDEyNDkwMikKKysrIFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9y
bS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBACiAgICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYkZpbGVVdGlsaXRpZXMuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
V2ViRmxpbmdBbmltYXRvci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRmxv
YXRBbmltYXRpb25DdXJ2ZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRmxv
YXRLZXlmcmFtZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRQb2lu
dC5oJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvUGxh
dGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
UGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5X2gKKyNkZWZp
bmUgUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5X2gKKworI2luY2x1ZGUgIlBsYXRmb3JtR2Vz
dHVyZUN1cnZlLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkZsaW5nQW5pbWF0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGxh
dGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGxhdGZvcm1H
ZXN0dXJlQ3VydmVGYWN0b3J5KiBnZXQoKTsKKworICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6UGxh
dGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZUN1cnZlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByYW5nZSk7CisgICAgdm9pZCBzZXRXZWJGbGluZ0Fu
aW1hdG9yRm9yVGVzdChQYXNzT3duUHRyPFdlYkZsaW5nQW5pbWF0b3I+KTsKKworcHJpdmF0ZToK
KyAgICB+UGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5KCk7CisKKyAgICBPd25QdHI8V2ViRmxp
bmdBbmltYXRvcj4gbV9tb2NrRmxpbmdBbmltYXRvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5X2gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViRmxpbmdBbmltYXRvclRv
R2VzdHVyZUN1cnZlQWRhcHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViRmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRl
ci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRmxpbmdBbmltYXRvclRvR2Vz
dHVyZUN1cnZlQWRhcHRlcl9oCisjZGVmaW5lIFdlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2
ZUFkYXB0ZXJfaAorCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkludFBvaW50
LmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZl
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQuaCIKKyNpbmNsdWRlIDxw
dWJsaWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxpbmdBbmltYXRvci5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRmxpbmdBbmltYXRvclRvR2VzdHVyZUN1
cnZlQWRhcHRlciA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZShj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgcmFuZ2UsIFBhc3NPd25QdHI8V2ViRmxpbmdBbmltYXRvcj4gYW5pbWF0b3IpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2
ZUFkYXB0ZXIodmVsb2NpdHksIHJhbmdlLCBhbmltYXRvcikpOworICAgIH0KKworICAgIC8vIFdl
YkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlIGltcGxlbWVudGF0aW9uOgorICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogZGVidWdOYW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIldlYkZsaW5n
QW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIiOyB9CisgICAgdmlydHVhbCBib29sIGFwcGx5
KGRvdWJsZSB0aW1lLCBXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCogdGFyZ2V0
KSBPVkVSUklERQorICAgIHsKKyAgICAgICAgaWYgKCFtX2FuaW1hdG9yLT51cGRhdGVQb3NpdGlv
bigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIFdlYkNvcmU6OkludFBv
aW50IGN1cnJlbnRQb3NpdGlvbiA9IG1fYW5pbWF0b3ItPmdldEN1cnJlbnRQb3NpdGlvbigpOwor
ICAgICAgICB0YXJnZXQtPnNjcm9sbEJ5KFdlYkNvcmU6OkludFBvaW50KGN1cnJlbnRQb3NpdGlv
biAtIG1fbGFzdFBvc2l0aW9uKSk7CisgICAgICAgIG1fbGFzdFBvc2l0aW9uID0gY3VycmVudFBv
c2l0aW9uOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2Vi
RmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlcihjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiB2ZWxvY2l0eSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmFuZ2UsIFBhc3NPd25QdHI8
V2ViRmxpbmdBbmltYXRvcj4gYW5pbWF0b3IpCisgICAgICAgIDogbV9hbmltYXRvcihhbmltYXRv
cikKKyAgICB7CisgICAgICAgIG1fYW5pbWF0b3ItPnN0YXJ0RmxpbmcodmVsb2NpdHksIHJhbmdl
KTsKKyAgICB9CisKKyAgICBPd25QdHI8V2ViRmxpbmdBbmltYXRvcj4gbV9hbmltYXRvcjsKKyAg
ICBXZWJDb3JlOjpJbnRQb2ludCBtX2xhc3RQb3NpdGlvbjsKK307CisKK30KKworI2VuZGlmIC8v
IFdlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXJfaApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rv
cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3Vy
dmVGYWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5o
IgorCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNs
dWRlICJUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaCIKKyNpbmNsdWRlICJXZWJG
bGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkqIFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFj
dG9yeTo6Z2V0KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFBsYXRmb3JtR2VzdHVyZUN1
cnZlRmFjdG9yeSwgZmFjdG9yeSwgKCkpOworICAgIHJldHVybiAmZmFjdG9yeTsKK30KKworUGFz
c093blB0cjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gUGxhdGZvcm1HZXN0dXJlQ3Vy
dmVGYWN0b3J5OjpjcmVhdGVDdXJ2ZShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb2ludCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmFuZ2UpCit7CisgICAgT3duUHRyPFdlYkZsaW5nQW5p
bWF0b3I+IGZsaW5nQW5pbWF0b3IgPSBtX21vY2tGbGluZ0FuaW1hdG9yLnJlbGVhc2UoKTsKKyAg
ICBpZiAoIWZsaW5nQW5pbWF0b3IpCisgICAgICAgIGZsaW5nQW5pbWF0b3IgPSBhZG9wdFB0cihQ
bGF0Zm9ybTo6Y3VycmVudCgpLT5jcmVhdGVGbGluZ0FuaW1hdG9yKCkpOworICAgIGlmICghZmxp
bmdBbmltYXRvcikKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlRvdWNocGFkRmxpbmdQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKHBvaW50KTsKKworICAgIHJldHVybiBXZWJGbGluZ0FuaW1h
dG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyOjpjcmVhdGUocG9pbnQsIHJhbmdlLCBmbGluZ0FuaW1h
dG9yLnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5Ojpz
ZXRXZWJGbGluZ0FuaW1hdG9yRm9yVGVzdChQYXNzT3duUHRyPFdlYkZsaW5nQW5pbWF0b3I+IG1v
Y2tGbGluZ0FuaW1hdG9yKQoreworICAgIG1fbW9ja0ZsaW5nQW5pbWF0b3IgPSBtb2NrRmxpbmdB
bmltYXRvcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CShyZXZpc2lvbiAxMjQ5MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtp
bmcgY29weSkKQEAgLTgyMTYsOCArODIxNiwxMSBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9Q
bGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkF1ZGlvQnVzLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJEYXRhLmNwcCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3Vy
dmVBZGFwdGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
SFRUUEJvZHkuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dl
YkhUVFBMb2FkSW5mby5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMTI0OTAyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTItMDgtMDcgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFVwc3RyZWFtIGFuZHJvaWQncyBGbGluZ0FuaW1h
dG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjkw
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyB5ZXQsIHdpbGwgYmUgYWRkZWQgb25jZSB0aGlzIGNvZGUgaXMgY2FsbGVkLgorCisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmdldCk6
CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeTo6Y3JlYXRlQ3Vy
dmUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OnNldFdl
YkZsaW5nQW5pbWF0b3JGb3JUZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkpOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViRmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRh
cHRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJGbGluZ0FuaW1h
dG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmxpbmdBbmlt
YXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlcjo6V2ViRmxpbmdBbmltYXRvclRvR2Vz
dHVyZUN1cnZlQWRhcHRlcik6CisKIDIwMTItMDgtMDcgIE1pa2UgUmVlZCAgPHJlZWRAZ29vZ2xl
LmNvbT4KIAogICAgICAgICByZWltcGxlbWVudCBmYXN0TW9kIHcvbyAoc29vbiB0byBiZSkgcHJp
dmF0ZSBza2lhIG1hY3Jvcwo=
</data>
<flag name="commit-queue"
          id="166868"
          type_id="3"
          status="+"
          setter="japhet"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157042</attachid>
            <date>2012-08-07 16:47:19 -0700</date>
            <delta_ts>2012-08-08 10:49:29 -0700</delta_ts>
            <desc>Address ChangeLog nits</desc>
            <filename>fling5.txt</filename>
            <type>text/plain</type>
            <size>15464</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgJKHJldmlz
aW9uIDEyNDkwMikKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0u
aAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQAogY2xhc3MgV2ViQ29va2llSmFyOwog
Y2xhc3MgV2ViRmlsZVN5c3RlbTsKIGNsYXNzIFdlYkZpbGVVdGlsaXRpZXM7CitjbGFzcyBXZWJG
bGluZ0FuaW1hdG9yOwogY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXI7CiBjbGFzcyBXZWJNZWRp
YVN0cmVhbUNlbnRlckNsaWVudDsKIGNsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbDsKQEAgLTQx
MCw2ICs0MTEsNyBAQAogICAgIC8vIFRoaXMgdmFsdWUgbXVzdCBiZSBjaGVja2VkIGFnYWluIGFm
dGVyIGEgY29udGV4dCBsb3NzIGV2ZW50IGFzIHRoZSBwbGF0Zm9ybSdzIGNhcGFiaWxpdGllcyBt
YXkgaGF2ZSBjaGFuZ2VkLgogICAgIHZpcnR1YWwgYm9vbCBjYW5BY2NlbGVyYXRlMmRDYW52YXMo
KSB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCBXZWJGbGluZ0FuaW1hdG9yKiBjcmVh
dGVGbGluZ0FuaW1hdG9yKCkgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gV2ViUlRDIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApJbmRl
eDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGbGluZ0FuaW1hdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGbGluZ0FuaW1h
dG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkZsaW5nQW5pbWF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJGbGluZ0FuaW1hdG9yX2gKKyNkZWZpbmUgV2ViRmxpbmdBbmltYXRvcl9oCisK
KyNpbmNsdWRlICJXZWJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiV2ViUG9pbnQuaCIKKyNpbmNs
dWRlICJXZWJSZWN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJGbGluZ0Fu
aW1hdG9yIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJGbGluZ0FuaW1hdG9yKCkgeyB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRGbGluZyhjb25zdCBXZWJGbG9hdFBvaW50JiB2ZWxvY2l0
eSwgY29uc3QgV2ViUmVjdCYgcmFuZ2UpID0gMDsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
IGFuaW1hdGlvbiBpcyBub3QgeWV0IGZpbmlzaGVkLgorICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVQ
b3NpdGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIFdlYlBvaW50IGdldEN1cnJlbnRQb3NpdGlvbigp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsRmxpbmcoKSA9IDA7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkZsaW5nQW5pbWF0b3JfaApJbmRleDogU291
cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMjQ5MDIpCisrKyBTb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDgtMDcgIE5hdGUgQ2hhcGluICA8
amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFVwc3RyZWFtIGFuZHJv
aWQncyBGbGluZ0FuaW1hdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MjkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyB5ZXQsIHdpbGwgYmUgYWRkZWQgb25jZSB0aGlzIGNvZGUg
aXMgY2FsbGVkLgorCisgICAgICAgICogUGxhdGZvcm0uZ3lwaToKKyAgICAgICAgKiBjaHJvbWl1
bS9wdWJsaWMvUGxhdGZvcm0uaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OlBsYXRmb3JtOjpjcmVhdGVGbGluZ0FuaW1hdG9yKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJs
aWMvV2ViRmxpbmdBbmltYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJGbGluZ0FuaW1hdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmxpbmdBbmltYXRvcjo6
fldlYkZsaW5nQW5pbWF0b3IpOgorCiAyMDEyLTA4LTA2ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVz
ckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgbGluZ2VyaW5nIHVu
d3JhcDw+KCkgY2FsbHMgaW4gR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApJbmRleDogU291cmNl
L1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL1Bs
YXRmb3JtLmd5cGkJKHJldmlzaW9uIDEyNDkwMikKKysrIFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9y
bS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBACiAgICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYkZpbGVVdGlsaXRpZXMuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
V2ViRmxpbmdBbmltYXRvci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRmxv
YXRBbmltYXRpb25DdXJ2ZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRmxv
YXRLZXlmcmFtZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRQb2lu
dC5oJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvUGxh
dGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
UGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5X2gKKyNkZWZp
bmUgUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5X2gKKworI2luY2x1ZGUgIlBsYXRmb3JtR2Vz
dHVyZUN1cnZlLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkZsaW5nQW5pbWF0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGxh
dGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGxhdGZvcm1H
ZXN0dXJlQ3VydmVGYWN0b3J5KiBnZXQoKTsKKworICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6UGxh
dGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZUN1cnZlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByYW5nZSk7CisgICAgdm9pZCBzZXRXZWJGbGluZ0Fu
aW1hdG9yRm9yVGVzdChQYXNzT3duUHRyPFdlYkZsaW5nQW5pbWF0b3I+KTsKKworcHJpdmF0ZToK
KyAgICB+UGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5KCk7CisKKyAgICBPd25QdHI8V2ViRmxp
bmdBbmltYXRvcj4gbV9tb2NrRmxpbmdBbmltYXRvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5X2gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViRmxpbmdBbmltYXRvclRv
R2VzdHVyZUN1cnZlQWRhcHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViRmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRl
ci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRmxpbmdBbmltYXRvclRvR2Vz
dHVyZUN1cnZlQWRhcHRlcl9oCisjZGVmaW5lIFdlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2
ZUFkYXB0ZXJfaAorCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkludFBvaW50
LmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZl
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQuaCIKKyNpbmNsdWRlIDxw
dWJsaWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxpbmdBbmltYXRvci5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRmxpbmdBbmltYXRvclRvR2VzdHVyZUN1
cnZlQWRhcHRlciA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZShj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgcmFuZ2UsIFBhc3NPd25QdHI8V2ViRmxpbmdBbmltYXRvcj4gYW5pbWF0b3IpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2
ZUFkYXB0ZXIodmVsb2NpdHksIHJhbmdlLCBhbmltYXRvcikpOworICAgIH0KKworICAgIC8vIFdl
YkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlIGltcGxlbWVudGF0aW9uOgorICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogZGVidWdOYW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIldlYkZsaW5n
QW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIiOyB9CisgICAgdmlydHVhbCBib29sIGFwcGx5
KGRvdWJsZSB0aW1lLCBXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCogdGFyZ2V0
KSBPVkVSUklERQorICAgIHsKKyAgICAgICAgaWYgKCFtX2FuaW1hdG9yLT51cGRhdGVQb3NpdGlv
bigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIFdlYkNvcmU6OkludFBv
aW50IGN1cnJlbnRQb3NpdGlvbiA9IG1fYW5pbWF0b3ItPmdldEN1cnJlbnRQb3NpdGlvbigpOwor
ICAgICAgICB0YXJnZXQtPnNjcm9sbEJ5KFdlYkNvcmU6OkludFBvaW50KGN1cnJlbnRQb3NpdGlv
biAtIG1fbGFzdFBvc2l0aW9uKSk7CisgICAgICAgIG1fbGFzdFBvc2l0aW9uID0gY3VycmVudFBv
c2l0aW9uOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2Vi
RmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlcihjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiB2ZWxvY2l0eSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmFuZ2UsIFBhc3NPd25QdHI8
V2ViRmxpbmdBbmltYXRvcj4gYW5pbWF0b3IpCisgICAgICAgIDogbV9hbmltYXRvcihhbmltYXRv
cikKKyAgICB7CisgICAgICAgIG1fYW5pbWF0b3ItPnN0YXJ0RmxpbmcodmVsb2NpdHksIHJhbmdl
KTsKKyAgICB9CisKKyAgICBPd25QdHI8V2ViRmxpbmdBbmltYXRvcj4gbV9hbmltYXRvcjsKKyAg
ICBXZWJDb3JlOjpJbnRQb2ludCBtX2xhc3RQb3NpdGlvbjsKK307CisKK30KKworI2VuZGlmIC8v
IFdlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXJfaApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rv
cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3Vy
dmVGYWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5o
IgorCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNs
dWRlICJUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaCIKKyNpbmNsdWRlICJXZWJG
bGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkqIFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFj
dG9yeTo6Z2V0KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFBsYXRmb3JtR2VzdHVyZUN1
cnZlRmFjdG9yeSwgZmFjdG9yeSwgKCkpOworICAgIHJldHVybiAmZmFjdG9yeTsKK30KKworUGFz
c093blB0cjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gUGxhdGZvcm1HZXN0dXJlQ3Vy
dmVGYWN0b3J5OjpjcmVhdGVDdXJ2ZShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb2ludCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmFuZ2UpCit7CisgICAgT3duUHRyPFdlYkZsaW5nQW5p
bWF0b3I+IGZsaW5nQW5pbWF0b3IgPSBtX21vY2tGbGluZ0FuaW1hdG9yLnJlbGVhc2UoKTsKKyAg
ICBpZiAoIWZsaW5nQW5pbWF0b3IpCisgICAgICAgIGZsaW5nQW5pbWF0b3IgPSBhZG9wdFB0cihQ
bGF0Zm9ybTo6Y3VycmVudCgpLT5jcmVhdGVGbGluZ0FuaW1hdG9yKCkpOworICAgIGlmICghZmxp
bmdBbmltYXRvcikKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlRvdWNocGFkRmxpbmdQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKHBvaW50KTsKKworICAgIHJldHVybiBXZWJGbGluZ0FuaW1h
dG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyOjpjcmVhdGUocG9pbnQsIHJhbmdlLCBmbGluZ0FuaW1h
dG9yLnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5Ojpz
ZXRXZWJGbGluZ0FuaW1hdG9yRm9yVGVzdChQYXNzT3duUHRyPFdlYkZsaW5nQW5pbWF0b3I+IG1v
Y2tGbGluZ0FuaW1hdG9yKQoreworICAgIG1fbW9ja0ZsaW5nQW5pbWF0b3IgPSBtb2NrRmxpbmdB
bmltYXRvcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CShyZXZpc2lvbiAxMjQ5MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtp
bmcgY29weSkKQEAgLTgyMTYsOCArODIxNiwxMSBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9Q
bGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkF1ZGlvQnVzLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJEYXRhLmNwcCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3Vy
dmVBZGFwdGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
SFRUUEJvZHkuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dl
YkhUVFBMb2FkSW5mby5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMTI0OTAyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTItMDgtMDcgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFVwc3RyZWFtIGFuZHJvaWQncyBGbGluZ0FuaW1h
dG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjkw
MAorCisgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyB5ZXQsIHdpbGwgYmUgYWRkZWQgb25jZSB0aGlzIGNvZGUgaXMgY2FsbGVkLgorCisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OmdldCk6
CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeTo6Y3JlYXRlQ3Vy
dmUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rvcnk6OnNldFdl
YkZsaW5nQW5pbWF0b3JGb3JUZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkpOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViRmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRh
cHRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJGbGluZ0FuaW1h
dG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmxpbmdBbmlt
YXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlcjo6V2ViRmxpbmdBbmltYXRvclRvR2Vz
dHVyZUN1cnZlQWRhcHRlcik6CisKIDIwMTItMDgtMDcgIE1pa2UgUmVlZCAgPHJlZWRAZ29vZ2xl
LmNvbT4KIAogICAgICAgICByZWltcGxlbWVudCBmYXN0TW9kIHcvbyAoc29vbiB0byBiZSkgcHJp
dmF0ZSBza2lhIG1hY3Jvcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157253</attachid>
            <date>2012-08-08 10:49:34 -0700</date>
            <delta_ts>2012-08-08 13:28:46 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-92900-20120808104908.patch</filename>
            <type>text/plain</type>
            <size>15651</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTI1MDQ5KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA4LTA3ICBOYXRl
IENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBVcHN0
cmVhbSBhbmRyb2lkJ3MgRmxpbmdBbmltYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBS
b2JpbnNvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMgeWV0LCB3aWxsIGJlIGFkZGVkIG9uY2Ug
dGhpcyBjb2RlIGlzIGNhbGxlZC4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6CisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpQbGF0Zm9ybTo6Y3JlYXRlRmxpbmdBbmltYXRvcik6CisgICAgICAgICogY2hy
b21pdW0vcHVibGljL1dlYkZsaW5nQW5pbWF0b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViRmxpbmdBbmltYXRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZsaW5n
QW5pbWF0b3I6On5XZWJGbGluZ0FuaW1hdG9yKToKKwogMjAxMi0wOC0wNyAgSmFtZXMgUm9iaW5z
b24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gU3dpdGNoIFBs
YXRmb3JtTGF5ZXIgdHlwZWRlZiB0byBQbGF0Zm9ybSBBUEkgdHlwZSBmb3IgUExBVEZPUk0oQ0hS
T01JVU0pCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQkocmV2aXNpb24gMTI1MDQ5KQorKysgU291
cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcg
QEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVV0aWxpdGllcy5oJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9uLmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmgnLAorICAgICAgICAg
ICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJGbGluZ0FuaW1hdG9yLmgnLAogICAgICAgICAgICAgJ2No
cm9taXVtL3B1YmxpYy9XZWJGbG9hdEFuaW1hdGlvbkN1cnZlLmgnLAogICAgICAgICAgICAgJ2No
cm9taXVtL3B1YmxpYy9XZWJGbG9hdEtleWZyYW1lLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJGbG9hdFBvaW50LmgnLApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvUGxhdGZvcm0uaAkocmV2aXNpb24gMTI1MDQ5KQorKysgU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3
IEBAIGNsYXNzIFdlYkNsaXBib2FyZDsKIGNsYXNzIFdlYkNvb2tpZUphcjsKIGNsYXNzIFdlYkZp
bGVTeXN0ZW07CiBjbGFzcyBXZWJGaWxlVXRpbGl0aWVzOworY2xhc3MgV2ViRmxpbmdBbmltYXRv
cjsKIGNsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyOwogY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50
ZXJDbGllbnQ7CiBjbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5uZWw7CkBAIC00MTAsNiArNDExLDcg
QEAgcHVibGljOgogICAgIC8vIFRoaXMgdmFsdWUgbXVzdCBiZSBjaGVja2VkIGFnYWluIGFmdGVy
IGEgY29udGV4dCBsb3NzIGV2ZW50IGFzIHRoZSBwbGF0Zm9ybSdzIGNhcGFiaWxpdGllcyBtYXkg
aGF2ZSBjaGFuZ2VkLgogICAgIHZpcnR1YWwgYm9vbCBjYW5BY2NlbGVyYXRlMmRDYW52YXMoKSB7
IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCBXZWJGbGluZ0FuaW1hdG9yKiBjcmVhdGVG
bGluZ0FuaW1hdG9yKCkgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gV2ViUlRDIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApJbmRleDog
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGbGluZ0FuaW1hdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGbGluZ0FuaW1hdG9y
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZs
aW5nQW5pbWF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJGbGluZ0FuaW1hdG9yX2gKKyNkZWZpbmUgV2ViRmxpbmdBbmltYXRvcl9oCisKKyNp
bmNsdWRlICJXZWJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiV2ViUG9pbnQuaCIKKyNpbmNsdWRl
ICJXZWJSZWN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJGbGluZ0FuaW1h
dG9yIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJGbGluZ0FuaW1hdG9yKCkgeyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnRGbGluZyhjb25zdCBXZWJGbG9hdFBvaW50JiB2ZWxvY2l0eSwg
Y29uc3QgV2ViUmVjdCYgcmFuZ2UpID0gMDsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGFu
aW1hdGlvbiBpcyBub3QgeWV0IGZpbmlzaGVkLgorICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVQb3Np
dGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIFdlYlBvaW50IGdldEN1cnJlbnRQb3NpdGlvbigpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsRmxpbmcoKSA9IDA7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkZsaW5nQW5pbWF0b3JfaApJbmRleDogU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTI1MDQ5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDgtMDcgIE5hdGUgQ2hhcGluICA8amFwaGV0
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFVwc3RyZWFtIGFuZHJvaWQncyBG
bGluZ0FuaW1hdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MjkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyB5ZXQsIHdpbGwgYmUgYWRkZWQgb25jZSB0aGlzIGNvZGUgaXMgY2Fs
bGVkLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL3N1cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rv
cnk6OmdldCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeTo6
Y3JlYXRlQ3VydmUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3Rv
cnk6OnNldFdlYkZsaW5nQW5pbWF0b3JGb3JUZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkpOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViRmxpbmdBbmltYXRvclRvR2VzdHVy
ZUN1cnZlQWRhcHRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJG
bGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlcjo6V2ViRmxpbmdBbmlt
YXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlcik6CisKIDIwMTItMDgtMDggIEtlaXNoaSBIYXR0b3Jp
ICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBzbGlkZXIgdGljayBtYXJrIHNu
YXBwaW5nIHRocmVzaG9sZCBjb25maWd1cmFibGUgZm9yIGVhY2ggcGxhdGZvcm0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEyNTA0OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQkod29ya2luZyBjb3B5KQpAQCAtODIxMCwxMCArODIxMCwxMyBAQAogICAgICAgICAgICAg
J3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9H
cmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vc3VwcG9ydC9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkuY3BwJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeS5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkF1ZGlvQnVzLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9y
SW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29t
cG9zaXRvckltcGwuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJEYXRhLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJG
bGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViSFRUUEJvZHkuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkhUVFBMb2FkSW5mby5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAn
LApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9QbGF0Zm9y
bUdlc3R1cmVDdXJ2ZUZhY3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
UGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtR2Vz
dHVyZUN1cnZlRmFjdG9yeS5oIgorCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUg
IkludFJlY3QuaCIKKyNpbmNsdWRlICJUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUu
aCIKKyNpbmNsdWRlICJXZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitQbGF0Zm9ybUdlc3R1cmVDdXJ2ZUZhY3RvcnkqIFBsYXRm
b3JtR2VzdHVyZUN1cnZlRmFjdG9yeTo6Z2V0KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeSwgZmFjdG9yeSwgKCkpOworICAgIHJldHVybiAm
ZmFjdG9yeTsKK30KKworUGFzc093blB0cjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4g
UGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5OjpjcmVhdGVDdXJ2ZShjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JiBwb2ludCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmFuZ2UpCit7CisgICAg
T3duUHRyPFdlYkZsaW5nQW5pbWF0b3I+IGZsaW5nQW5pbWF0b3IgPSBtX21vY2tGbGluZ0FuaW1h
dG9yLnJlbGVhc2UoKTsKKyAgICBpZiAoIWZsaW5nQW5pbWF0b3IpCisgICAgICAgIGZsaW5nQW5p
bWF0b3IgPSBhZG9wdFB0cihQbGF0Zm9ybTo6Y3VycmVudCgpLT5jcmVhdGVGbGluZ0FuaW1hdG9y
KCkpOworICAgIGlmICghZmxpbmdBbmltYXRvcikKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlRv
dWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKHBvaW50KTsKKworICAgIHJl
dHVybiBXZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyOjpjcmVhdGUocG9pbnQs
IHJhbmdlLCBmbGluZ0FuaW1hdG9yLnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1HZXN0
dXJlQ3VydmVGYWN0b3J5OjpzZXRXZWJGbGluZ0FuaW1hdG9yRm9yVGVzdChQYXNzT3duUHRyPFdl
YkZsaW5nQW5pbWF0b3I+IG1vY2tGbGluZ0FuaW1hdG9yKQoreworICAgIG1fbW9ja0ZsaW5nQW5p
bWF0b3IgPSBtb2NrRmxpbmdBbmltYXRvcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRmb3JtR2Vz
dHVyZUN1cnZlRmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1BsYXRmb3Jt
R2VzdHVyZUN1cnZlRmFjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeV9oCisjZGVmaW5lIFBsYXRm
b3JtR2VzdHVyZUN1cnZlRmFjdG9yeV9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZS5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGbGluZ0FuaW1hdG9yLmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBsYXRmb3JtR2Vz
dHVyZUN1cnZlRmFjdG9yeSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBsYXRmb3JtR2VzdHVyZUN1
cnZlRmFjdG9yeSogZ2V0KCk7CisKKyAgICBQYXNzT3duUHRyPFdlYkNvcmU6OlBsYXRmb3JtR2Vz
dHVyZUN1cnZlPiBjcmVhdGVDdXJ2ZShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgcmFuZ2UpOworICAgIHZvaWQgc2V0V2ViRmxpbmdBbmltYXRvckZv
clRlc3QoUGFzc093blB0cjxXZWJGbGluZ0FuaW1hdG9yPik7CisKK3ByaXZhdGU6CisgICAgflBs
YXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeSgpOworCisgICAgT3duUHRyPFdlYkZsaW5nQW5pbWF0
b3I+IG1fbW9ja0ZsaW5nQW5pbWF0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeV9oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVD
dXJ2ZUFkYXB0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
RmxpbmdBbmltYXRvclRvR2VzdHVyZUN1cnZlQWRhcHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2
ZUFkYXB0ZXJfaAorI2RlZmluZSBXZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVy
X2gKKworI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorI2lu
Y2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmgiCisjaW5jbHVkZSA8cHVibGljL1Bs
YXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkZsaW5nQW5pbWF0b3IuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZsaW5nQW5pbWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0
ZXIgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlQ3VydmUgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGUoY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJhbmdl
LCBQYXNzT3duUHRyPFdlYkZsaW5nQW5pbWF0b3I+IGFuaW1hdG9yKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJGbGluZ0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVy
KHZlbG9jaXR5LCByYW5nZSwgYW5pbWF0b3IpKTsKKyAgICB9CisKKyAgICAvLyBXZWJDb3JlOjpQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZSBpbXBsZW1lbnRhdGlvbjoKKyAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIGRlYnVnTmFtZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICJXZWJGbGluZ0FuaW1hdG9y
VG9HZXN0dXJlQ3VydmVBZGFwdGVyIjsgfQorICAgIHZpcnR1YWwgYm9vbCBhcHBseShkb3VibGUg
dGltZSwgV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqIHRhcmdldCkgT1ZFUlJJ
REUKKyAgICB7CisgICAgICAgIGlmICghbV9hbmltYXRvci0+dXBkYXRlUG9zaXRpb24oKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCBjdXJy
ZW50UG9zaXRpb24gPSBtX2FuaW1hdG9yLT5nZXRDdXJyZW50UG9zaXRpb24oKTsKKyAgICAgICAg
dGFyZ2V0LT5zY3JvbGxCeShXZWJDb3JlOjpJbnRQb2ludChjdXJyZW50UG9zaXRpb24gLSBtX2xh
c3RQb3NpdGlvbikpOworICAgICAgICBtX2xhc3RQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbjsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYkZsaW5nQW5p
bWF0b3JUb0dlc3R1cmVDdXJ2ZUFkYXB0ZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdmVs
b2NpdHksIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJhbmdlLCBQYXNzT3duUHRyPFdlYkZsaW5n
QW5pbWF0b3I+IGFuaW1hdG9yKQorICAgICAgICA6IG1fYW5pbWF0b3IoYW5pbWF0b3IpCisgICAg
eworICAgICAgICBtX2FuaW1hdG9yLT5zdGFydEZsaW5nKHZlbG9jaXR5LCByYW5nZSk7CisgICAg
fQorCisgICAgT3duUHRyPFdlYkZsaW5nQW5pbWF0b3I+IG1fYW5pbWF0b3I7CisgICAgV2ViQ29y
ZTo6SW50UG9pbnQgbV9sYXN0UG9zaXRpb247Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJGbGlu
Z0FuaW1hdG9yVG9HZXN0dXJlQ3VydmVBZGFwdGVyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157280</attachid>
            <date>2012-08-08 13:28:46 -0700</date>
            <delta_ts>2012-08-08 13:40:13 -0700</delta_ts>
            <desc>The remainder (cc and WebKit/chromium changes)</desc>
            <filename>fling.txt</filename>
            <type>text/plain</type>
            <size>11475</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjUwNzMpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3
IEBACisyMDEyLTA4LTA3ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW2Nocm9taXVtXSBVcHN0cmVhbSBhbmRyb2lkJ3MgRmxpbmdBbmltYXRvcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5MDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBpbiBjaHJvbWl1
bSdzIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC4KKworICAgICAgICAqIHNyYy9X
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6Y2FuY2VsQ3VycmVudEZsaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNjcm9s
bEJ5KToKKyAgICAgICAgKiB0ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3Qu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpNb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OnNjcm9sbFJh
bmdlKToKKyAgICAgICAgKE1vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk6CisgICAgICAgIChUZXN0
RmxpbmdBbmltYXRvcik6CisgICAgICAgIChXZWJLaXQ6OlRlc3RGbGluZ0FuaW1hdG9yOjpzdGFy
dEZsaW5nKToKKyAgICAgICAgKFdlYktpdDo6VGVzdEZsaW5nQW5pbWF0b3I6OnVwZGF0ZVBvc2l0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6VGVzdEZsaW5nQW5pbWF0b3I6OmdldEN1cnJlbnRQb3Np
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OlRlc3RGbGluZ0FuaW1hdG9yOjpjYW5jZWxGbGluZyk6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorCiAyMDEyLTA4
LTA3ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTGF5b3V0
IFRlc3Qgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBhcmFtZXRlci5odG1sIGlz
IGZsYWt5CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCShyZXZpc2lvbiAxMjUwNzMpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIldlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgiCiAKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZUZhY3RvcnkuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oIgog
I2luY2x1ZGUgIlRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oIgogI2luY2x1ZGUg
IlRyYWNlRXZlbnQuaCIKQEAgLTI2OSw3ICsyNzAsNyBAQAogICAgIHN3aXRjaCAoc2Nyb2xsU3Rh
dHVzKSB7CiAgICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZDogewog
ICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZzo6c3RhcnRlZCIpOwotICAgICAgICBPd25QdHI8
UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGZsaW5nQ3VydmUgPSBUb3VjaHBhZEZsaW5nUGxhdGZvcm1H
ZXN0dXJlQ3VydmU6OmNyZWF0ZShGbG9hdFBvaW50KGdlc3R1cmVFdmVudC5kZWx0YVgsIGdlc3R1
cmVFdmVudC5kZWx0YVkpKTsKKyAgICAgICAgT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBm
bGluZ0N1cnZlID0gUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5OjpnZXQoKS0+Y3JlYXRlQ3Vy
dmUoRmxvYXRQb2ludChnZXN0dXJlRXZlbnQuZGVsdGFYLCBnZXN0dXJlRXZlbnQuZGVsdGFZKSwg
bV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbFJhbmdlKCkpOwogICAgICAgICBtX3doZWVsRmxp
bmdBbmltYXRpb24gPSBDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb246OmNyZWF0ZShQbGF0Zm9ybUdl
c3R1cmVUb0NDR2VzdHVyZUFkYXB0ZXI6OmNyZWF0ZShmbGluZ0N1cnZlLnJlbGVhc2UoKSksIHRo
aXMpOwogICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmRlbHRhID0gV2ViRmxvYXRQb2lu
dChnZXN0dXJlRXZlbnQuZGVsdGFYLCBnZXN0dXJlRXZlbnQuZGVsdGFZKTsKICAgICAgICAgbV93
aGVlbEZsaW5nUGFyYW1ldGVycy5wb2ludCA9IFdlYlBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0
dXJlRXZlbnQueSk7CkBAIC0zMjAsNiArMzIxLDEwIEBACiAgICAgVFJBQ0VfRVZFTlRfSU5TVEFO
VDEoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpjYW5jZWxDdXJyZW50Rmxp
bmciLCAiaGFkRmxpbmdBbmltYXRpb24iLCBoYWRGbGluZ0FuaW1hdGlvbik7CiAgICAgbV93aGVl
bEZsaW5nQW5pbWF0aW9uLmNsZWFyKCk7CiAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycyA9IFdl
YkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKCk7CisjaWYgT1MoQU5EUk9JRCkKKyAgICBpZiAo
aGFkRmxpbmdBbmltYXRpb24pCisgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxF
bmQoKTsKKyNlbmRpZgogICAgIHJldHVybiBoYWRGbGluZ0FuaW1hdGlvbjsKIH0KIApAQCAtMzI4
LDYgKzMzMywxMSBAQAogICAgIGlmIChpbmNyZW1lbnQgPT0gSW50UG9pbnQ6Onplcm8oKSkKICAg
ICAgICAgcmV0dXJuOwogCisjaWYgT1MoQU5EUk9JRCkKKyAgICBtX2lucHV0SGFuZGxlckNsaWVu
dC0+c2Nyb2xsQnkoSW50U2l6ZShpbmNyZW1lbnQueCgpLCBpbmNyZW1lbnQueSgpKSk7CisgICAg
cmV0dXJuOworI2VuZGlmCisKICAgICBUUkFDRV9FVkVOVDIoImNjIiwgIldlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSIsICJ4IiwgaW5jcmVtZW50LngoKSwgInkiLCBpbmNy
ZW1lbnQueSgpKTsKICAgICBXZWJNb3VzZVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWw7CiAgICAg
c3ludGhldGljV2hlZWwudHlwZSA9IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWw7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCShyZXZpc2lvbiAxMjUwNzMpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKIAogI2luY2x1ZGUgIldl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgiCiAKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViQ29t
cG9zaXRvci5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCkBAIC02Myw2ICs2NSw4IEBACiAgICAgTU9DS19N
RVRIT0QxKHNjcm9sbEJ5LCB2b2lkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSk7CiAgICAgTU9D
S19NRVRIT0QwKHNjcm9sbEVuZCwgdm9pZCgpKTsKIAorICAgIFdlYkNvcmU6OkludFJlY3Qgc2Ny
b2xsUmFuZ2UoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpJbnRSZWN0KCk7IH0KKwogcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgYW5jaG9yUG9pbnQsCkBAIC0xMTcsNiArMTIxLDM0IEBACiAgICAg
V2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKIH0KIAorY2xhc3MgVGVzdEZsaW5nQW5pbWF0b3Ig
OiBwdWJsaWMgV2ViS2l0OjpXZWJGbGluZ0FuaW1hdG9yIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRGbGluZyhjb25zdCBXZWJGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgV2Vi
UmVjdCYgcmFuZ2UpCisgICAgeworICAgICAgICBtX3ZlbG9jaXR5ID0gV2ViQ29yZTo6SW50U2l6
ZSgoaW50KXZlbG9jaXR5LngsIChpbnQpdmVsb2NpdHkueSk7CisgICAgfQorCisgICAgdmlydHVh
bCBib29sIHVwZGF0ZVBvc2l0aW9uKCkKKyAgICB7CisgICAgICAgIC8vIFNjcm9sbCBmb3JldmVy
IG9uY2Ugc3RhcnRlZCBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhlc2UgdGVzdHMuCisgICAgICAgIC8v
IFdlIGRvbid0IHdhbnQgdG8gbWFrZSB0aGVtIHRpbWluZy1zZW5zaXRpdmUgYW55d2F5cy4KKyAg
ICAgICAgcmV0dXJuIG1fdmVsb2NpdHkud2lkdGgoKSA+IDAgfHwgbV92ZWxvY2l0eS5oZWlnaHQo
KSA+IDA7CisgICAgfQorCisgICAgdmlydHVhbCBXZWJQb2ludCBnZXRDdXJyZW50UG9zaXRpb24o
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uICs9IG1fdmVsb2NpdHk7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNhbmNlbEZsaW5nKCkKKyAgICB7CisgICAgICAgIG1f
dmVsb2NpdHkgPSBXZWJDb3JlOjpJbnRTaXplKCk7CisgICAgfQorcHJpdmF0ZToKKyAgICBXZWJD
b3JlOjpJbnRQb2ludCBtX2xhc3RQb3NpdGlvbjsKKyAgICBXZWJDb3JlOjpJbnRTaXplIG1fdmVs
b2NpdHk7Cit9OworCiBjbGFzcyBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGxUZXN0KCkKQEAgLTMzNiwxMiArMzY4LDQyIEBACiAgICAgbV9pbnB1dEhhbmRsZXIt
PmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiB9CiAKKyNpZiBPUyhBTkRST0lEKQorLy8gRklY
TUU6IFNvcnQgb3V0IHdoZXRoZXIgZGlmZmVyZW5jZXMgYmV0d2VlbiB0b3VjaCBhbmQgd2hlZWwg
ZmxpbmcgYXJlIG5lZWRlZC4KKy8vIFdlIHNob3VsZCBlaXRoZXIgaGF2ZSBkaWZmZXJlbnQgY29u
Y2VwdHMgb2YgdG91Y2ggYW5kIG1vdXNlIHdoZWVsIGZsaW5nIGJhc2VkIG9uIGEgbWFjcm8sCisv
LyBhbmQgdGhlbiBydW4gYSBkaWZmZXJlbnQgdGVzdCBoZXJlIGJhc2VkIG9uIHRoYXQuIE9yIHVu
aWZ5IHRoZSBjb2RlIGFuZCBoYW5kbGUgdGhlCisvLyBkaWZmZXJlbmNlcyBpbiBzY3JvbGwgYmVo
YXZpb3IgYXQgYSBkaWZmZXJlbnQgbGV2ZWwuCisvLyBUaGUgY3VycmVudCBkaWZmZXJlbmNlcyBj
b21lIGRvd24gdG8gbW91c2Ugd2hlZWwgZmxpbmcgd3JhcHBpbmcgZWFjaCBmbGluZyB1cGRhdGUg
aW4KKy8vIGEgYmVnaW4vZW5kIHBhaXIgaW4gdGhlIG90aGVyIHZlcnNpb24gb2YgdGhlIHRlc3Qg
ZnVydGhlciBkb3duLgogVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwg
Z2VzdHVyZUZsaW5nQW5pbWF0ZXMpCiB7CisgICAgUGxhdGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5
OjpnZXQoKS0+c2V0V2ViRmxpbmdBbmltYXRvckZvclRlc3QoYWRvcHRQdHIobmV3IFRlc3RGbGlu
Z0FuaW1hdG9yKSk7CisKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2VuZCBhbnkgZXZlbnRzIHRvIHRo
ZSB3aWRnZXQgZm9yIHRoaXMgZ2VzdHVyZS4KICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBE
aWRIYW5kbGU7CiAgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOworICAgIAorICAgIGdlc3R1
cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisgICAg
Z2VzdHVyZS5kZWx0YVggPSAxMDAwOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5k
bGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tD
Q0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6Xykp
CisgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNs
aWVudDo6U2Nyb2xsU3RhcnRlZCkpOworICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2
ZW50KGdlc3R1cmUpOworICAgIAorICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhw
ZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CisgICAgRVhQRUNUX0NBTEwo
bV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOworICAgIEVY
UEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5n
OjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1
dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRT
aXplOjp3aWR0aCwgdGVzdGluZzo6R3QoMCkpKSkuVGltZXMoMSk7CisgICAgbV9pbnB1dEhhbmRs
ZXItPmFuaW1hdGUoMTApOworfQogCisjZWxzZQorVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nQW5pbWF0ZXMpCit7CisgICAgLy8gV2Ugc2hvdWxk
bid0IHNlbmQgYW55IGV2ZW50cyB0byB0aGUgd2lkZ2V0IGZvciB0aGlzIGdlc3R1cmUuCisgICAg
bV9leHBlY3RlZERpc3Bvc2l0aW9uID0gRGlkSGFuZGxlOworICAgIFZFUklGWV9BTkRfUkVTRVRf
TU9DS1MoKTsKKwogICAgIC8vIE9uIHRoZSBmbGluZyBzdGFydCwgd2Ugc2hvdWxkIHNjaGVkdWxl
IGFuIGFuaW1hdGlvbiBidXQgbm90IGFjdHVhbGx5IHN0YXJ0CiAgICAgLy8gc2Nyb2xsaW5nLgog
ICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OwpAQCAt
NTYxLDUgKzYyMyw2IEBACiAgICAgICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViU2l6ZTo6aGVp
Z2h0LCB0ZXN0aW5nOjpMdCgwKSkpKSkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDMw
LjIpOwogfQorI2VuZGlmCiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwCShyZXZpc2lvbiAxMjUwNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTI0LDYgKzkyNCw1MCBAQAogICAgIGNsZWFyQ3VycmVudGx5U2Nyb2xsaW5nTGF5ZXIo
KTsKIH0KIAorc3RhdGljIGJvb2wgaXNWYWxpZFNjcm9sbFJhbmdlKGNvbnN0IEludFJlY3QmIHNj
cm9sbFJhbmdlKQoreworICAgIHJldHVybiBzY3JvbGxSYW5nZS54KCkgPCAwICYmIHNjcm9sbFJh
bmdlLnkoKSA8IDAgJiYgc2Nyb2xsUmFuZ2UubWF4WCgpID4gMCAmJiBzY3JvbGxSYW5nZS5tYXhZ
KCkgPiAwOworfQorCitzdGF0aWMgdm9pZCBleHBhbmRTY3JvbGxSYW5nZShJbnRSZWN0JiBzY3Jv
bGxSYW5nZSwgZmxvYXQgc2NhbGUsIEludFBvaW50IHNjcm9sbFBvc2l0aW9uLCBJbnRTaXplIG1h
eFNjcm9sbFBvc2l0aW9uKQoreworICAgIHNjcm9sbFBvc2l0aW9uLnNjYWxlKHNjYWxlLCBzY2Fs
ZSk7CisgICAgbWF4U2Nyb2xsUG9zaXRpb24uc2NhbGUoc2NhbGUpOworICAgIHNjcm9sbFBvc2l0
aW9uLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKKyAgICBtYXhTY3JvbGxQb3NpdGlvbiA9IG1heFNj
cm9sbFBvc2l0aW9uLmV4cGFuZGVkVG8odG9TaXplKHNjcm9sbFBvc2l0aW9uKSk7CisgICAgLy8g
T25seSBleHBhbmQgdGhlIHNjcm9sbCByYW5nZSBhbG9uZyBhbiBheGlzIGlmIHRoZXJlIHByZXZp
b3VzbHkgd2FzIG5vIHJvb20gdG8gc2Nyb2xsIGluIHRoYXQgZGlyZWN0aW9uLgorICAgIC8vIFRo
aXMgaXMgdG8gZW5zdXJlIHRoYXQgZmxpbmdzIGRvIG5vdCBvdmVyc2hvb3QgdGhlIGJvdW5kYXJp
ZXMgb2YgYSBzY3JvbGxhYmxlIGVsZW1lbnQgYW5kIHN0YXJ0IHNjcm9sbGluZworICAgIC8vIGl0
cyBwYXJlbnQgaW5zdGVhZC4KKyAgICBpZiAoIXNjcm9sbFJhbmdlLngoKSkgeworICAgICAgICBz
Y3JvbGxSYW5nZS5zZXRYKC1zY3JvbGxQb3NpdGlvbi54KCkpOworICAgICAgICBzY3JvbGxSYW5n
ZS5zZXRXaWR0aChzY3JvbGxSYW5nZS53aWR0aCgpICsgc2Nyb2xsUG9zaXRpb24ueCgpKTsKKyAg
ICB9CisgICAgaWYgKCFzY3JvbGxSYW5nZS55KCkpIHsKKyAgICAgICAgc2Nyb2xsUmFuZ2Uuc2V0
WSgtc2Nyb2xsUG9zaXRpb24ueSgpKTsKKyAgICAgICAgc2Nyb2xsUmFuZ2Uuc2V0SGVpZ2h0KHNj
cm9sbFJhbmdlLmhlaWdodCgpICsgc2Nyb2xsUG9zaXRpb24ueSgpKTsKKyAgICB9CisgICAgaWYg
KCFzY3JvbGxSYW5nZS5tYXhYKCkpCisgICAgICAgIHNjcm9sbFJhbmdlLnNldFdpZHRoKG1heFNj
cm9sbFBvc2l0aW9uLndpZHRoKCkgLSBzY3JvbGxQb3NpdGlvbi54KCkgLSBzY3JvbGxSYW5nZS54
KCkpOworICAgIGlmICghc2Nyb2xsUmFuZ2UubWF4WSgpKQorICAgICAgICBzY3JvbGxSYW5nZS5z
ZXRIZWlnaHQobWF4U2Nyb2xsUG9zaXRpb24uaGVpZ2h0KCkgLSBzY3JvbGxQb3NpdGlvbi55KCkg
LSBzY3JvbGxSYW5nZS55KCkpOworICAgIEFTU0VSVChzY3JvbGxSYW5nZS54KCkgPD0gMCAmJiBz
Y3JvbGxSYW5nZS5tYXhYKCkgPj0gMCk7CisgICAgQVNTRVJUKHNjcm9sbFJhbmdlLnkoKSA8PSAw
ICYmIHNjcm9sbFJhbmdlLm1heFkoKSA+PSAwKTsKK30KKworSW50UmVjdCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpzY3JvbGxSYW5nZSgpIGNvbnN0Cit7CisgICAgY29uc3QgQ0NMYXllckltcGwqIGxh
eWVySW1wbCA9IG1fcm9vdFNjcm9sbExheWVySW1wbDsKKyAgICBJbnRSZWN0IHNjcm9sbFJhbmdl
OworCisgICAgaWYgKGxheWVySW1wbCAmJiAhaXNWYWxpZFNjcm9sbFJhbmdlKHNjcm9sbFJhbmdl
KSkgeworICAgICAgICBpZiAobGF5ZXJJbXBsLT5zY3JvbGxhYmxlKCkpIHsKKyAgICAgICAgICAg
IEludFBvaW50IHNjcm9sbFBvc2l0aW9uKGZsb29yZWRJbnRQb2ludChsYXllckltcGwtPnNjcm9s
bFBvc2l0aW9uKCkgKyBsYXllckltcGwtPnNjcm9sbERlbHRhKCkpKTsKKyAgICAgICAgICAgIGV4
cGFuZFNjcm9sbFJhbmdlKHNjcm9sbFJhbmdlLCBtX3BhZ2VTY2FsZURlbHRhLCBzY3JvbGxQb3Np
dGlvbiwgbGF5ZXJJbXBsLT5tYXhTY3JvbGxQb3NpdGlvbigpKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gc2Nyb2xsUmFuZ2U7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6
cGluY2hHZXN0dXJlQmVnaW4oKQogewogICAgIG1fcGluY2hHZXN0dXJlQWN0aXZlID0gdHJ1ZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgJKHJldmlzaW9uIDEyNTA3
MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsOCBAQAogICAgIHZp
cnR1YWwgdm9pZCBzZXRBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8Q0NBY3RpdmVH
ZXN0dXJlQW5pbWF0aW9uPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5p
bWF0aW9uKCkgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIEludFJlY3Qgc2Nyb2xsUmFuZ2UoKSBj
b25zdCBPVkVSUklERTsKKwogICAgIHN0cnVjdCBGcmFtZURhdGEgewogICAgICAgICBWZWN0b3I8
SW50UmVjdD4gb2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0czsKICAgICAgICAgQ0NSZW5kZXJQYXNz
TGlzdCByZW5kZXJQYXNzZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgJKHJldmlz
aW9uIDEyNTA3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSW5wdXRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNp
Zm5kZWYgQ0NJbnB1dEhhbmRsZXJfaAogI2RlZmluZSBDQ0lucHV0SGFuZGxlcl9oCiAKKyNpbmNs
dWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KIApAQCAtNjUsNiArNjYsMTAgQEAKICAgICAvLyBjYWxsZWQgaWYg
c2Nyb2xsQmVnaW4oKSByZXR1cm5lZCBTY3JvbGxTdGFydGVkLgogICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxFbmQoKSA9IDA7CiAKKyAgICAvLyBSZXR1cm4gdGhlIHNjcm9sbCByYW5nZSByZWxhdGl2
ZSB0byB0aGUgY3VycmVudCBwb3NpdGlvbi4gdG9wL2xlZnQKKyAgICAvLyB2YWx1ZSA8PSAwLCBh
bmQgYm90dG9tL3JpZ2h0IHZhbHVlID49IDAuCisgICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbFJh
bmdlKCkgY29uc3QgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZUJlZ2luKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVVcGRhdGUoZmxvYXQgbWFnbmlmeURl
bHRhLCBjb25zdCBJbnRQb2ludCYgYW5jaG9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBpbmNo
R2VzdHVyZUVuZCgpID0gMDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>