<?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>109686</bug_id>
          
          <creation_ts>2013-02-13 06:13:11 -0800</creation_ts>
          <short_desc>[chromium] move pixel generation logic to TestRunner library</short_desc>
          <delta_ts>2013-02-14 15:52:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>108469</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>jochen</reporter>
          <assigned_to>jochen</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>831849</commentid>
    <comment_count>0</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-02-13 06:13:11 -0800</bug_when>
    <thetext>[chromium] move pixel generation logic to TestRunner library</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831850</commentid>
    <comment_count>1</comment_count>
      <attachid>188067</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-13 06:13:34 -0800</bug_when>
    <thetext>Created attachment 188067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831853</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 06:16:08 -0800</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>832029</commentid>
    <comment_count>3</comment_count>
      <attachid>188067</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-02-13 10:21:52 -0800</bug_when>
    <thetext>Comment on attachment 188067
Patch

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

&gt; Tools/DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:60
&gt; +#include &quot;skia/ext/platform_canvas.h&quot;

This is a layering violation, but I guess you&apos;re just moving it.

It looks like this is only needed for skia::CreateBitmapCanvas and skia::TryCreateBitmapCanvas.  Maybe we can move this into WebTestDelegate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832030</commentid>
    <comment_count>4</comment_count>
      <attachid>188067</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-13 10:24:24 -0800</bug_when>
    <thetext>Comment on attachment 188067
Patch

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

&gt;&gt; Tools/DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:60
&gt;&gt; +#include &quot;skia/ext/platform_canvas.h&quot;
&gt; 
&gt; This is a layering violation, but I guess you&apos;re just moving it.
&gt; 
&gt; It looks like this is only needed for skia::CreateBitmapCanvas and skia::TryCreateBitmapCanvas.  Maybe we can move this into WebTestDelegate?

It&apos;s not really a layering violation: the testrunner library is a WebKit embedder, i.e. it&apos;s above the WebKit API just like TestShell or content.

I also don&apos;t see the point in moving stuff to the WebTestDelegate which is then implemented exactly the same for TestShell and content_shell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832071</commentid>
    <comment_count>5</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-02-13 10:52:59 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 188067 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=188067&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:60
&gt; &gt;&gt; +#include &quot;skia/ext/platform_canvas.h&quot;
&gt; &gt; 
&gt; &gt; This is a layering violation, but I guess you&apos;re just moving it.
&gt; &gt; 
&gt; &gt; It looks like this is only needed for skia::CreateBitmapCanvas and skia::TryCreateBitmapCanvas.  Maybe we can move this into WebTestDelegate?
&gt; 
&gt; It&apos;s not really a layering violation: the testrunner library is a WebKit embedder, i.e. it&apos;s above the WebKit API just like TestShell or content.

It&apos;s a problem in the same way that depending on base is a problem: If someone wants to refactor skia/ext/platform_canvas.h, they have to worry about not breaking code in WebKit and do a 3-way patch dance.  This is why we made webkit/support.

&gt; I also don&apos;t see the point in moving stuff to the WebTestDelegate which is then implemented exactly the same for TestShell and content_shell.

Ah, right, WebTestDelegate doesn&apos;t help since DRT&apos;s WebTestDelegate is in the webkit repo.  Maybe we could add this to Platform/chromium/public/WebUnitTestSupport.h?

I think it would also be fine to add a FIXME above the #include line and punt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832113</commentid>
    <comment_count>6</comment_count>
      <attachid>188131</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-13 11:39:06 -0800</bug_when>
    <thetext>Created attachment 188131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832116</commentid>
    <comment_count>7</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-02-13 11:41:39 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; I think it would also be fine to add a FIXME above the #include line and punt.

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832189</commentid>
    <comment_count>8</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-02-13 12:28:00 -0800</bug_when>
    <thetext>LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832224</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-13 12:50:11 -0800</bug_when>
    <thetext>#including skia/ext/ is definitely busterated, but it&apos;s been busted for a long time and we haven&apos;t figured out how to solve it yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832269</commentid>
    <comment_count>10</comment_count>
      <attachid>188131</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-13 13:27:09 -0800</bug_when>
    <thetext>Comment on attachment 188131
Patch

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

&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:188
&gt; +    std::auto_ptr&lt;SkCanvas&gt; m_canvas;

This isn&apos;t right - SkCanvas is SkRefCnt&apos;d, so you need to use the skia refcounting APIs to control ownership.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832770</commentid>
    <comment_count>11</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-02-13 23:46:51 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 188131 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=188131&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:188
&gt; &gt; +    std::auto_ptr&lt;SkCanvas&gt; m_canvas;
&gt; 
&gt; This isn&apos;t right - SkCanvas is SkRefCnt&apos;d, so you need to use the skia refcounting APIs to control ownership.

while it&apos;s true that it is SkRefCnt&apos;d, the pattern seems to be to use a scoped_ptr to hold it:

cs.chromium.org/SkRefPtr&lt;SkCanvas&gt; - zero hits
cs.chromium.org/scoped_ptr&lt;SkCanvas&gt; -  12 hits
cs.chromium.org/OwnPtr&lt;SkCanvas&gt; - 6 hits (including this ptr which I moved from WebViewHost)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832846</commentid>
    <comment_count>12</comment_count>
      <attachid>188287</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-14 01:36:46 -0800</bug_when>
    <thetext>Created attachment 188287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833216</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-14 10:37:13 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (From update of attachment 188131 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=188131&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:188
&gt; &gt; &gt; +    std::auto_ptr&lt;SkCanvas&gt; m_canvas;
&gt; &gt; 
&gt; &gt; This isn&apos;t right - SkCanvas is SkRefCnt&apos;d, so you need to use the skia refcounting APIs to control ownership.
&gt; 
&gt; while it&apos;s true that it is SkRefCnt&apos;d, the pattern seems to be to use a scoped_ptr to hold it:
&gt; 
&gt; cs.chromium.org/SkRefPtr&lt;SkCanvas&gt; - zero hits
&gt; cs.chromium.org/scoped_ptr&lt;SkCanvas&gt; -  12 hits
&gt; cs.chromium.org/OwnPtr&lt;SkCanvas&gt; - 6 hits (including this ptr which I moved from WebViewHost)

Those are all bugs waiting to happen.  That&apos;s the same as deleting a RefCounted object in chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833269</commentid>
    <comment_count>14</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-02-14 11:28:31 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #10)
&gt; &gt; &gt; (From update of attachment 188131 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=188131&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:188
&gt; &gt; &gt; &gt; +    std::auto_ptr&lt;SkCanvas&gt; m_canvas;
&gt; &gt; &gt; 
&gt; &gt; &gt; This isn&apos;t right - SkCanvas is SkRefCnt&apos;d, so you need to use the skia refcounting APIs to control ownership.
&gt; &gt; 
&gt; &gt; while it&apos;s true that it is SkRefCnt&apos;d, the pattern seems to be to use a scoped_ptr to hold it:
&gt; &gt; 
&gt; &gt; cs.chromium.org/SkRefPtr&lt;SkCanvas&gt; - zero hits
&gt; &gt; cs.chromium.org/scoped_ptr&lt;SkCanvas&gt; -  12 hits
&gt; &gt; cs.chromium.org/OwnPtr&lt;SkCanvas&gt; - 6 hits (including this ptr which I moved from WebViewHost)
&gt; 
&gt; Those are all bugs waiting to happen.  That&apos;s the same as deleting a RefCounted object in chromium.

No, it&apos;s not. SkCanvas has a public destructor, RefCounted objects don&apos;t. Also, the destructor DCHECKs that the refcount is one when it is invoked, so at least in debug builds, you&apos;d get a backtrace when someone still holds a reference to the SkCanvas when it&apos;s deleted.

Anyway, I&apos;m a bit wary of becoming the first person ever to hold a SkRefPtr to a SkCanvas, so what about consulting some skia folks?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833369</commentid>
    <comment_count>15</comment_count>
      <attachid>188415</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-14 13:38:28 -0800</bug_when>
    <thetext>Created attachment 188415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833378</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-14 13:49:12 -0800</bug_when>
    <thetext>Attachment 188415 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp&apos;, u&apos;Tools/DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h&apos;, u&apos;Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h&apos;, u&apos;Tools/DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h&apos;, u&apos;Tools/DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h&apos;, u&apos;Tools/DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp&apos;, u&apos;Tools/DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h&apos;, u&apos;Tools/DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp&apos;, u&apos;Tools/DumpRenderTree/chromium/TestRunner/src/TestRunner.h&apos;, u&apos;Tools/DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp&apos;, u&apos;Tools/DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp&apos;, u&apos;Tools/DumpRenderTree/chromium/TestShell.cpp&apos;, u&apos;Tools/DumpRenderTree/chromium/WebViewHost.cpp&apos;, u&apos;Tools/DumpRenderTree/chromium/WebViewHost.h&apos;]&quot; exit_code: 1
Tools/DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:426:  auto_unref is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Tools/DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:638:  auto_unref is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 11 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>833405</commentid>
    <comment_count>17</comment_count>
      <attachid>188287</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2013-02-14 14:11:28 -0800</bug_when>
    <thetext>Comment on attachment 188287
Patch

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

I don&apos;t think auto_ptr is any different than OwnPtr in this case.  You&apos;re essentially ignoring the refcount and calling the (public) destructor.  This is ok, since SkCanvas is designed to operate either with refcounts or on the stack (or so Mike tells me), so this should be safe.

I&apos;ll take a look at the rest of the code shortly.

&gt; Tools/DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:587
&gt; +        m_canvas = std::auto_ptr&lt;SkCanvas&gt;(testCanvas);

I&apos;m no auto_ptr expert, but could this be m_canvas.reset(testCanvas) instead?

&gt; Tools/DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:607
&gt; +    m_canvas = std::auto_ptr&lt;SkCanvas&gt;(skia::CreateBitmapCanvas(scaledWidth, scaledHeight, true));

Same here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833414</commentid>
    <comment_count>18</comment_count>
      <attachid>188424</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-14 14:18:27 -0800</bug_when>
    <thetext>Created attachment 188424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833416</commentid>
    <comment_count>19</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-02-14 14:18:57 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 188287 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=188287&amp;action=review
&gt; 
&gt; I don&apos;t think auto_ptr is any different than OwnPtr in this case.  You&apos;re essentially ignoring the refcount and calling the (public) destructor.  This is ok, since SkCanvas is designed to operate either with refcounts or on the stack (or so Mike tells me), so this should be safe.
&gt; 
&gt; I&apos;ll take a look at the rest of the code shortly.
&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:587
&gt; &gt; +        m_canvas = std::auto_ptr&lt;SkCanvas&gt;(testCanvas);
&gt; 
&gt; I&apos;m no auto_ptr expert, but could this be m_canvas.reset(testCanvas) instead?
&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:607
&gt; &gt; +    m_canvas = std::auto_ptr&lt;SkCanvas&gt;(skia::CreateBitmapCanvas(scaledWidth, scaledHeight, true));
&gt; 
&gt; Same here.

yes, reset(ptr) also works, updated the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833450</commentid>
    <comment_count>20</comment_count>
      <attachid>188424</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2013-02-14 14:45:07 -0800</bug_when>
    <thetext>Comment on attachment 188424
Patch

I&apos;m ok with the skia bits, so combine that with Tony&apos;s LGTM from comment 8 for the rest and r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833496</commentid>
    <comment_count>21</comment_count>
      <attachid>188424</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-14 15:52:36 -0800</bug_when>
    <thetext>Comment on attachment 188424
Patch

Clearing flags on attachment: 188424

Committed r142929: &lt;http://trac.webkit.org/changeset/142929&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833497</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-14 15:52:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188067</attachid>
            <date>2013-02-13 06:13:34 -0800</date>
            <delta_ts>2013-02-13 11:39:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109686-20130213151002.patch</filename>
            <type>text/plain</type>
            <size>35564</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNzM1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGEzOTk4OWE0ZWYwNjZlMzYyOTAxYWEwMjAwYzkwMTUw
MWIzOTU0Ny4uZWZiNWM3ZWYyOWFjY2JhMDIzMmJlYzAzNzhjYTk5Njk3YjE4Njc0YSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYz
IEBACisyMDEzLTAyLTEzICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBwaXhlbCBnZW5lcmF0aW9uIGxvZ2ljIHRvIFRlc3RS
dW5uZXIgbGlicmFyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA5Njg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUu
Z3lwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYlRlc3REZWxlZ2F0ZS5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1Ymxp
Yy9XZWJUZXN0UHJveHkuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eTo6
c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RSdW5uZXIuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rl
c3RJbnRlcmZhY2VzLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RJbnRlcmZhY2Vz
Ojp+VGVzdEludGVyZmFjZXMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdEludGVyZmFj
ZXM6OnNldFdlYlZpZXcpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdEludGVyZmFjZXM6
OnByb3h5KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFRlc3RJbnRlcmZhY2VzKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcDoKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldFdlYlZpZXcpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpkaXNwbGF5
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OmRpc3BsYXlJbnZhbGlkYXRl
ZFJlZ2lvbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvVGVzdFJ1bm5lci5oOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChUZXN0
UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9XZWJUZXN0SW50ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0
SW50ZXJmYWNlczo6c2V0V2ViVmlldyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRlc3RQcm94eUJhc2U6OnJlc2V0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Oldl
YlRlc3RQcm94eUJhc2U6OmNhcHR1cmVQaXhlbHMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjpwYWludFJlY3QpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6cGFpbnRJbnZhbGlkYXRl
ZFJlZ2lvbik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjpwYWlu
dFBhZ2VzV2l0aEJvdW5kYXJpZXMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFBy
b3h5QmFzZTo6Y2FudmFzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJh
c2U6OmRpc3BsYXlSZXBhaW50TWFzayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0
UHJveHlCYXNlOjpkaXNwbGF5KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94
eUJhc2U6OmRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lvbik6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpXZWJUZXN0UHJveHlCYXNlOjpkaXNjYXJkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnNldFdpbmRvd1JlY3QpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHA6CisgICAgICAgIChU
ZXN0U2hlbGw6OmNyZWF0ZU1haW5XaW5kb3cpOgorICAgICAgICAoVGVzdFNoZWxsOjp+VGVzdFNo
ZWxsKToKKyAgICAgICAgKFRlc3RTaGVsbDo6c2hvd0RldlRvb2xzKToKKyAgICAgICAgKFRlc3RT
aGVsbDo6Y2xvc2VEZXZUb29scyk6CisgICAgICAgIChUZXN0U2hlbGw6OmR1bXApOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdl
YlZpZXdIb3N0OjpzZXRXaW5kb3dSZWN0KToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpzZXREZXZp
Y2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJWaWV3SG9zdDo6cmVzZXQpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6CisgICAgICAgIChXZWJWaWV3
SG9zdCk6CisKIDIwMTMtMDItMTIgIEFkZW5pbHNvbiBDYXZhbGNhbnRpICA8Y2F2YWxjYW50aWlA
Z21haWwuY29tPgogCiAgICAgICAgIFtXSzJdIFBhZ2UgcmVsb2FkaW5nIHdpbGwgY3Jhc2ggVUlQ
cm9jZXNzIGFmdGVyIFdlYlByb2Nlc3Mgd2FzIGtpbGxlZApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKaW5k
ZXggMDgzOTM5NmI4MmIxNDNjYWIwZDBmZTMyMmZhYTAwYTQ1YzMxODEzOS4uZDQzOGUzN2RjMDMx
ZmUyNTk2NDQ2NjBmYTUwMjlmODVlYzA2ZTQ5NSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwCkBAIC0x
MTQsNiArMTE0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVz
JzogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGly
KS9iYXNlL2Jhc2UuZ3lwOmJhc2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
PChjaHJvbWl1bV9zcmNfZGlyKS9idWlsZC90ZW1wX2d5cC9nb29nbGV1cmwuZ3lwOmdvb2dsZXVy
bCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIp
L3NraWEvc2tpYS5neXA6c2tpYScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8
KGNocm9taXVtX3NyY19kaXIpL3Y4L3Rvb2xzL2d5cC92OC5neXA6djgnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdF9k
ZXBlbmRlbnRfc2V0dGluZ3MnOiB7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oCmlu
ZGV4IDgyYmFiNTc4MjEwZTVjODYxMmRiMDdjNjA1MzI3YTgyNDQxMjdjNWIuLmVhMTFiMmNiMTE0
YTdkM2M2MGM4NDliYWMxODRmMmY3OGEzNzNkNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RE
ZWxlZ2F0ZS5oCkBAIC0xMDEsOCArMTAxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBh
ZGRNb2NrU3BlZWNoUmVjb2duaXRpb25SZXN1bHQoY29uc3Qgc3RkOjpzdHJpbmcmLCBkb3VibGUp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrU3BlZWNoUmVjb2duaXRpb25FcnJvcihjb25z
dCBzdGQ6OnN0cmluZyYsIGNvbnN0IHN0ZDo6c3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBib29s
IHdhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQoKSB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgdm9pZCBkaXNwbGF5KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BsYXlJbnZh
bGlkYXRlZFJlZ2lvbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0ZXN0RmluaXNoZWQoKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgdGVzdFRpbWVkT3V0KCkgeyB9CiAgICAgdmlydHVhbCBib29sIGlz
QmVpbmdEZWJ1Z2dlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVz
dEludGVyZmFjZXMuaAppbmRleCAwMDYyMDNjY2EyMGFiMmVhMDk4NDE3NTA2MGU2ODQ4ZmY3OGM0
MDQwLi40NTJjMTQ5MWU1YWFiODM5NjFiMmU2MTY0MzgyMzA3ZjY3ZGJmMmE4IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0
SW50ZXJmYWNlcy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNl
IFdlYlRlc3RSdW5uZXIgewogCiBjbGFzcyBUZXN0SW50ZXJmYWNlczsKIGNsYXNzIFdlYlRlc3RE
ZWxlZ2F0ZTsKK2NsYXNzIFdlYlRlc3RQcm94eUJhc2U7CiBjbGFzcyBXZWJUZXN0UnVubmVyOwog
CiBjbGFzcyBXRUJURVNUUlVOTkVSX0VYUE9SVCBXZWJUZXN0SW50ZXJmYWNlcyB7CkBAIC01NSw3
ICs1Niw3IEBAIHB1YmxpYzoKICAgICBXZWJUZXN0SW50ZXJmYWNlcygpOwogICAgIH5XZWJUZXN0
SW50ZXJmYWNlcygpOwogCi0gICAgdm9pZCBzZXRXZWJWaWV3KFdlYktpdDo6V2ViVmlldyopOwor
ICAgIHZvaWQgc2V0V2ViVmlldyhXZWJLaXQ6OldlYlZpZXcqLCBXZWJUZXN0UHJveHlCYXNlKik7
CiAgICAgdm9pZCBzZXREZWxlZ2F0ZShXZWJUZXN0RGVsZWdhdGUqKTsKICAgICB2b2lkIGJpbmRU
byhXZWJLaXQ6OldlYkZyYW1lKik7CiAgICAgdm9pZCByZXNldEFsbCgpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFBy
b3h5LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9X
ZWJUZXN0UHJveHkuaAppbmRleCBiMjJlZDk0OWY4Yjc2ZGEyYTE4ZjQ2NTUzOTNiN2U3MDcyOTU2
MzI1Li45N2VjNjk1MWFhNmEzMTYyNWVjMzM3OTk0NGFlOTYwZGI2NjM2ZjIxIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0
UHJveHkuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1
YmxpYy9XZWJUZXN0UHJveHkuaApAQCAtNzMsNiArNzMsOCBAQCBzdHJ1Y3QgV2ViU2l6ZTsKIHN0
cnVjdCBXZWJXaW5kb3dGZWF0dXJlczsKIH0KIAorY2xhc3MgU2tDYW52YXM7CisKIG5hbWVzcGFj
ZSBXZWJUZXN0UnVubmVyIHsKIAogY2xhc3MgU3BlbGxDaGVja0NsaWVudDsKQEAgLTkxLDEzICs5
MywxNCBAQCBwdWJsaWM6CiAKICAgICBXZWJLaXQ6OldlYlNwZWxsQ2hlY2tDbGllbnQgKnNwZWxs
Q2hlY2tDbGllbnQoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0UGFpbnRSZWN0KGNvbnN0IFdlYktp
dDo6V2ViUmVjdCYpOwotICAgIFdlYktpdDo6V2ViUmVjdCBwYWludFJlY3QoKSBjb25zdDsKLQog
ICAgIHN0ZDo6c3RyaW5nIGNhcHR1cmVUcmVlKGJvb2wgZGVidWdSZW5kZXJUcmVlKTsKKyAgICBT
a0NhbnZhcyogY2FwdHVyZVBpeGVscygpOwogCiAgICAgdm9pZCBzZXRMb2dDb25zb2xlT3V0cHV0
KGJvb2wgZW5hYmxlZCk7CiAKKyAgICB2b2lkIGRpc3BsYXkoKTsKKyAgICB2b2lkIGRpc3BsYXlJ
bnZhbGlkYXRlZFJlZ2lvbigpOworCiBwcm90ZWN0ZWQ6CiAgICAgV2ViVGVzdFByb3h5QmFzZSgp
OwogICAgIH5XZWJUZXN0UHJveHlCYXNlKCk7CkBAIC0xMDgsNiArMTExLDcgQEAgcHJvdGVjdGVk
OgogICAgIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKTsKICAgICB2b2lkIHNldFdpbmRvd1JlY3Qo
Y29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7CiAgICAgdm9pZCBzaG93KFdlYktpdDo6V2ViTmF2aWdh
dGlvblBvbGljeSk7CisgICAgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCk7CiAgICAg
dm9pZCBkaWRBdXRvUmVzaXplKGNvbnN0IFdlYktpdDo6V2ViU2l6ZSYpOwogICAgIHZvaWQgcG9z
dEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oY29uc3QgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0JiwgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKTsKICAgICB2b2lk
IHN0YXJ0RHJhZ2dpbmcoV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViRHJhZ0Rh
dGEmLCBXZWJLaXQ6OldlYkRyYWdPcGVyYXRpb25zTWFzaywgY29uc3QgV2ViS2l0OjpXZWJJbWFn
ZSYsIGNvbnN0IFdlYktpdDo6V2ViUG9pbnQmKTsKQEAgLTE2Nyw2ICsxNzEsMTIgQEAgcHJvdGVj
dGVkOgogCiBwcml2YXRlOgogICAgIHZvaWQgbG9jYXRpb25DaGFuZ2VEb25lKFdlYktpdDo6V2Vi
RnJhbWUqKTsKKyAgICB2b2lkIGRpc2NhcmRCYWNraW5nU3RvcmUoKTsKKyAgICB2b2lkIHBhaW50
UmVjdChjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKKyAgICB2b2lkIHBhaW50SW52YWxpZGF0ZWRS
ZWdpb24oKTsKKyAgICB2b2lkIHBhaW50UGFnZXNXaXRoQm91bmRhcmllcygpOworICAgIFNrQ2Fu
dmFzKiBjYW52YXMoKTsKKyAgICB2b2lkIGRpc3BsYXlSZXBhaW50TWFzaygpOwogCiAgICAgVGVz
dEludGVyZmFjZXMqIG1fdGVzdEludGVyZmFjZXM7CiAgICAgV2ViVGVzdERlbGVnYXRlKiBtX2Rl
bGVnYXRlOwpAQCAtMTc0LDcgKzE4NCwxMCBAQCBwcml2YXRlOgogICAgIHN0ZDo6YXV0b19wdHI8
U3BlbGxDaGVja0NsaWVudD4gbV9zcGVsbGNoZWNrOwogICAgIHN0ZDo6YXV0b19wdHI8V2ViVXNl
ck1lZGlhQ2xpZW50TW9jaz4gbV91c2VyTWVkaWFDbGllbnQ7CiAKKyAgICAvLyBQYWludGluZy4K
KyAgICBzdGQ6OmF1dG9fcHRyPFNrQ2FudmFzPiBtX2NhbnZhczsKICAgICBXZWJLaXQ6OldlYlJl
Y3QgbV9wYWludFJlY3Q7CisgICAgYm9vbCBtX2lzUGFpbnRpbmc7CiAgICAgc3RkOjptYXA8dW5z
aWduZWQsIHN0ZDo6c3RyaW5nPiBtX3Jlc291cmNlSWRlbnRpZmllck1hcDsKIAogICAgIGJvb2wg
bV9sb2dDb25zb2xlT3V0cHV0OwpAQCAtMjIzLDYgKzIzNiwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IFdlYlRlc3RQcm94eUJhc2U6OnNob3cocG9saWN5KTsKICAgICAgICAgQmFzZTo6c2hvdyhwb2xp
Y3kpOwogICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQg
ZmFjdG9yKQorICAgIHsKKyAgICAgICAgV2ViVGVzdFByb3h5QmFzZTo6c2V0RGV2aWNlU2NhbGVG
YWN0b3IoZmFjdG9yKTsKKyAgICAgICAgQmFzZTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IoZmFjdG9y
KTsKKyAgICB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEF1dG9SZXNpemUoY29uc3QgV2ViS2l0OjpX
ZWJTaXplJiBuZXdTaXplKQogICAgIHsKICAgICAgICAgV2ViVGVzdFByb3h5QmFzZTo6ZGlkQXV0
b1Jlc2l6ZShuZXdTaXplKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RSdW5uZXIuaAppbmRleCA4OGQ0
YWU1YjdhNjY1OGMwOTlkNjkxZjkwYzE1Mjc2ZTRjNjg1OTllLi4xMWQyZjM0NWQ4YTNlZDkyZmRl
ZDFiNjIwZjhiYWY3Njk1NWY2MWZhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFJ1bm5lci5oCkBA
IC00NCwxMCArNDQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBBc0F1
ZGlvKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgV2ViS2l0OjpXZWJBcnJheUJ1ZmZl
clZpZXcqIGF1ZGlvRGF0YSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViUGVy
bWlzc2lvbkNsaWVudCogd2ViUGVybWlzc2lvbnMoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIHNob3VsZER1bXBTZWxlY3Rpb25SZWN0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCB0ZXN0UmVwYWludCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc3dlZXBIb3Jpem9u
dGFsbHkoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzUHJpbnRpbmcoKSBjb25zdCA9
IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAKaW5kZXggYjQ0M2RmNTBm
MzhiNmRmNjYyYTMxM2I5YTI0ZTA2M2ZlYWIxOTJiMC4uYWQ3ZTJkZTRmNjI1MGQ0MzA5ZTU0Y2Qx
Zjk5MmIyY2NjOTU5MWVkNSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcApAQCAtNjMs
NyArNjMsNyBAQCBUZXN0SW50ZXJmYWNlczo6flRlc3RJbnRlcmZhY2VzKCkKICAgICBtX2V2ZW50
U2VuZGVyLT5zZXRXZWJWaWV3KDApOwogICAgIC8vIG1fZ2FtZXBhZENvbnRyb2xsZXIgZG9lc24n
dCBkZXBlbmQgb24gV2ViVmlldy4KICAgICBtX3RleHRJbnB1dENvbnRyb2xsZXItPnNldFdlYlZp
ZXcoMCk7Ci0gICAgbV90ZXN0UnVubmVyLT5zZXRXZWJWaWV3KDApOworICAgIG1fdGVzdFJ1bm5l
ci0+c2V0V2ViVmlldygwLCAwKTsKIAogICAgIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXItPnNl
dERlbGVnYXRlKDApOwogICAgIG1fZXZlbnRTZW5kZXItPnNldERlbGVnYXRlKDApOwpAQCAtNzIs
MTQgKzcyLDE1IEBAIFRlc3RJbnRlcmZhY2VzOjp+VGVzdEludGVyZmFjZXMoKQogICAgIG1fdGVz
dFJ1bm5lci0+c2V0RGVsZWdhdGUoMCk7CiB9CiAKLXZvaWQgVGVzdEludGVyZmFjZXM6OnNldFdl
YlZpZXcoV2ViVmlldyogd2ViVmlldykKK3ZvaWQgVGVzdEludGVyZmFjZXM6OnNldFdlYlZpZXco
V2ViVmlldyogd2ViVmlldywgV2ViVGVzdFByb3h5QmFzZSogcHJveHkpCiB7CiAgICAgbV93ZWJW
aWV3ID0gd2ViVmlldzsKKyAgICBtX3Byb3h5ID0gcHJveHk7CiAgICAgbV9hY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci0+c2V0V2ViVmlldyh3ZWJWaWV3KTsKICAgICBtX2V2ZW50U2VuZGVyLT5zZXRX
ZWJWaWV3KHdlYlZpZXcpOwogICAgIC8vIG1fZ2FtZXBhZENvbnRyb2xsZXIgZG9lc24ndCBkZXBl
bmQgb24gV2ViVmlldy4KICAgICBtX3RleHRJbnB1dENvbnRyb2xsZXItPnNldFdlYlZpZXcod2Vi
Vmlldyk7Ci0gICAgbV90ZXN0UnVubmVyLT5zZXRXZWJWaWV3KHdlYlZpZXcpOworICAgIG1fdGVz
dFJ1bm5lci0+c2V0V2ViVmlldyh3ZWJWaWV3LCBwcm94eSk7CiB9CiAKIHZvaWQgVGVzdEludGVy
ZmFjZXM6OnNldERlbGVnYXRlKFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUpCkBAIC0xNTYsNCAr
MTU3LDkgQEAgV2ViVGVzdERlbGVnYXRlKiBUZXN0SW50ZXJmYWNlczo6ZGVsZWdhdGUoKQogICAg
IHJldHVybiBtX2RlbGVnYXRlOwogfQogCitXZWJUZXN0UHJveHlCYXNlKiBUZXN0SW50ZXJmYWNl
czo6cHJveHkoKQoreworICAgIHJldHVybiBtX3Byb3h5OworfQorCiB9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNl
cy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdElu
dGVyZmFjZXMuaAppbmRleCBlYzNhMWRlMjg2OThjZmEwZTc2ODA5YWI0NzI0MDk4NmQwOGMzYzM1
Li45ZDJlOGMzMTczMGE0MDA2YjU3YzEyMmNkNjM0MjYzMGZhODRhMmViIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNl
cy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rl
c3RJbnRlcmZhY2VzLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBjbGFzcyBHYW1lcGFkQ29udHJvbGxl
cjsKIGNsYXNzIFRlc3RSdW5uZXI7CiBjbGFzcyBUZXh0SW5wdXRDb250cm9sbGVyOwogY2xhc3Mg
V2ViVGVzdERlbGVnYXRlOworY2xhc3MgV2ViVGVzdFByb3h5QmFzZTsKIAogY2xhc3MgVGVzdElu
dGVyZmFjZXMgewogcHVibGljOgogICAgIFRlc3RJbnRlcmZhY2VzKCk7CiAgICAgflRlc3RJbnRl
cmZhY2VzKCk7CiAKLSAgICB2b2lkIHNldFdlYlZpZXcoV2ViS2l0OjpXZWJWaWV3Kik7CisgICAg
dm9pZCBzZXRXZWJWaWV3KFdlYktpdDo6V2ViVmlldyosIFdlYlRlc3RQcm94eUJhc2UqKTsKICAg
ICB2b2lkIHNldERlbGVnYXRlKFdlYlRlc3REZWxlZ2F0ZSopOwogICAgIHZvaWQgYmluZFRvKFdl
YktpdDo6V2ViRnJhbWUqKTsKICAgICB2b2lkIHJlc2V0QWxsKCk7CkBAIC02NSw2ICs2Niw3IEBA
IHB1YmxpYzoKICAgICBUZXN0UnVubmVyKiB0ZXN0UnVubmVyKCk7CiAgICAgV2ViS2l0OjpXZWJW
aWV3KiB3ZWJWaWV3KCk7CiAgICAgV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSgpOworICAgIFdl
YlRlc3RQcm94eUJhc2UqIHByb3h5KCk7CiAKIAogcHJpdmF0ZToKQEAgLTc1LDYgKzc3LDcgQEAg
cHJpdmF0ZToKICAgICBzdGQ6OmF1dG9fcHRyPFRlc3RSdW5uZXI+IG1fdGVzdFJ1bm5lcjsKICAg
ICBXZWJLaXQ6OldlYlZpZXcqIG1fd2ViVmlldzsKICAgICBXZWJUZXN0RGVsZWdhdGUqIG1fZGVs
ZWdhdGU7CisgICAgV2ViVGVzdFByb3h5QmFzZSogbV9wcm94eTsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFJ1bm5lci5jcHAKaW5kZXggZjg5OGUxY2UzMGI4ZGRjMzI1MDQzODQzMzU0YWQzYTAzNGY4ZDBi
Zi4uZDNhN2MwNDhiZDYzMjNhMTdjNTA4ZWI4ZTIzYjAyMWZlNDZlZjY5OSAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFJ1bm5lci5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJXZWJTdXJyb3VuZGluZ1Rl
eHQuaCIKICNpbmNsdWRlICJXZWJUYXNrLmgiCiAjaW5jbHVkZSAiV2ViVGVzdERlbGVnYXRlLmgi
CisjaW5jbHVkZSAiV2ViVGVzdFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1
ZGUgInY4L2luY2x1ZGUvdjguaCIKICNpbmNsdWRlIDxsaW1pdHM+CkBAIC0zMzAsNiArMzMxLDEy
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0RGVsZWdhdGUoV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0
ZSkKICAgICBtX3dlYlBlcm1pc3Npb25zLT5zZXREZWxlZ2F0ZShkZWxlZ2F0ZSk7CiB9CiAKK3Zv
aWQgVGVzdFJ1bm5lcjo6c2V0V2ViVmlldyhXZWJWaWV3KiB3ZWJWaWV3LCBXZWJUZXN0UHJveHlC
YXNlKiBwcm94eSkKK3sKKyAgICBtX3dlYlZpZXcgPSB3ZWJWaWV3OworICAgIG1fcHJveHkgPSBw
cm94eTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpyZXNldCgpCiB7CiAgICAgaWYgKG1fd2ViVmll
dykgewpAQCAtMTgyMSwxMyArMTgyOCwxMyBAQCB2b2lkIFRlc3RSdW5uZXI6Ondhc01vY2tTcGVl
Y2hSZWNvZ25pdGlvbkFib3J0ZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaQogCiB2
b2lkIFRlc3RSdW5uZXI6OmRpc3BsYXkoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMs
IENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKLSAgICBtX2RlbGVnYXRlLT5kaXNwbGF5KCk7CisgICAg
bV9wcm94eS0+ZGlzcGxheSgpOwogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCiB2b2lkIFRl
c3RSdW5uZXI6OmRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lvbihjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewotICAgIG1fZGVsZWdhdGUtPmRpc3Bs
YXlJbnZhbGlkYXRlZFJlZ2lvbigpOworICAgIG1fcHJveHktPmRpc3BsYXlJbnZhbGlkYXRlZFJl
Z2lvbigpOwogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKaW5k
ZXggNjYwNTg0NTgwM2M0ZjJmMDk0ZDViZDZlOGZmNTQxMzhkYzdkYWY0ZS4uOWQ2ODMyZTcyYWEw
Mjk1MzI5NDg4ZTQ1MzUwN2I0MjlkMDE0YTkyYSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaApAQCAtNTUs
NiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIGNsYXNzIFdlYlBlcm1pc3Np
b25zOwogY2xhc3MgV2ViVGVzdERlbGVnYXRlOworY2xhc3MgV2ViVGVzdFByb3h5QmFzZTsKIAog
Y2xhc3MgVGVzdFJ1bm5lciA6IHB1YmxpYyBXZWJUZXN0UnVubmVyLCBwdWJsaWMgQ3BwQm91bmRD
bGFzcyB7CiBwdWJsaWM6CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5U
ZXN0UnVubmVyKCk7CiAKICAgICB2b2lkIHNldERlbGVnYXRlKFdlYlRlc3REZWxlZ2F0ZSopOwot
ICAgIHZvaWQgc2V0V2ViVmlldyhXZWJLaXQ6OldlYlZpZXcqIHdlYlZpZXcpIHsgbV93ZWJWaWV3
ID0gd2ViVmlldzsgfQorICAgIHZvaWQgc2V0V2ViVmlldyhXZWJLaXQ6OldlYlZpZXcqLCBXZWJU
ZXN0UHJveHlCYXNlKik7CiAKICAgICB2b2lkIHJlc2V0KCk7CiAKQEAgLTc1LDEyICs3NiwxMiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBBc0F1ZGlvKCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBXZWJLaXQ6OldlYkFycmF5QnVmZmVyVmlldyogYXVk
aW9EYXRhKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYlBlcm1pc3Np
b25DbGllbnQqIHdlYlBlcm1pc3Npb25zKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBi
b29sIHNob3VsZER1bXBTZWxlY3Rpb25SZWN0KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBib29sIHRlc3RSZXBhaW50KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHN3
ZWVwSG9yaXpvbnRhbGx5KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGlzUHJp
bnRpbmcoKSBjb25zdCBPVkVSUklERTsKIAogICAgIC8vIE1ldGhvZHMgdXNlZCBieSBXZWJUZXN0
UHJveHlCYXNlLgorICAgIGJvb2wgc2hvdWxkRHVtcFNlbGVjdGlvblJlY3QoKSBjb25zdDsKKyAg
ICBib29sIHRlc3RSZXBhaW50KCkgY29uc3Q7CisgICAgYm9vbCBzd2VlcEhvcml6b250YWxseSgp
IGNvbnN0OworICAgIGJvb2wgaXNQcmludGluZygpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkRHVt
cEFzVGV4dCgpOwogICAgIGJvb2wgc2hvdWxkRHVtcEJhY2tGb3J3YXJkTGlzdCgpIGNvbnN0Owog
ICAgIGJvb2wgc2hvdWxkRHVtcENoaWxkRnJhbWVTY3JvbGxQb3NpdGlvbnMoKSBjb25zdDsKQEAg
LTY1NCw2ICs2NTUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVn
YXRlOwogICAgIFdlYktpdDo6V2ViVmlldyogbV93ZWJWaWV3OworICAgIFdlYlRlc3RQcm94eUJh
c2UqIG1fcHJveHk7CiAKICAgICAvLyBUaGlzIGlzIG5vbi0wIElGRiBhIGxvYWQgaXMgaW4gcHJv
Z3Jlc3MuCiAgICAgV2ViS2l0OjpXZWJGcmFtZSogbV90b3BMb2FkaW5nRnJhbWU7CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0
SW50ZXJmYWNlcy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKaW5kZXggYmM0M2Q2YWE1NTdiMzRmZWU4ZjUyMzQ4
NTkwZjBiNjIzN2Q3MWFhYi4uOTU5YWI2NmNlNzc5YmY5YjAzNTY2ODhiYzUyZGUzZjc4MDVlZjI5
OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvV2ViVGVzdEludGVyZmFjZXMuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcApAQCAtNDksOSArNDksOSBA
QCBXZWJUZXN0SW50ZXJmYWNlczo6fldlYlRlc3RJbnRlcmZhY2VzKCkKIHsKIH0KIAotdm9pZCBX
ZWJUZXN0SW50ZXJmYWNlczo6c2V0V2ViVmlldyhXZWJWaWV3KiB3ZWJWaWV3KQordm9pZCBXZWJU
ZXN0SW50ZXJmYWNlczo6c2V0V2ViVmlldyhXZWJWaWV3KiB3ZWJWaWV3LCBXZWJUZXN0UHJveHlC
YXNlKiBwcm94eSkKIHsKLSAgICBtX2ludGVyZmFjZXMtPnNldFdlYlZpZXcod2ViVmlldyk7Cisg
ICAgbV9pbnRlcmZhY2VzLT5zZXRXZWJWaWV3KHdlYlZpZXcsIHByb3h5KTsKIH0KIAogdm9pZCBX
ZWJUZXN0SW50ZXJmYWNlczo6c2V0RGVsZWdhdGUoV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlRlc3RQcm94eS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwCmluZGV4IDM5OGIzMjJiMTFmZTUzNTJlOTZmMTdkNjYy
MmRmYjYzY2VmM2QxNDIuLjBkNzYwMzEyYWE3MDNjNDU5NDQ4ZTY1ODlhZDY3NGI3YzY5NGFmYWEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlRlc3RQcm94eS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcApAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUg
IldlYlRlc3RSdW5uZXIuaCIKICNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgiCiAj
aW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5o
IgogI2luY2x1ZGUgPGNjdHlwZT4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJVUkxFcnJvci5oPgpAQCAtNDM2LDYgKzQzNyw4IEBAIHZvaWQgV2Vi
VGVzdFByb3h5QmFzZTo6c2V0RGVsZWdhdGUoV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSkKIHZv
aWQgV2ViVGVzdFByb3h5QmFzZTo6cmVzZXQoKQogewogICAgIG1fcGFpbnRSZWN0ID0gV2ViUmVj
dCgpOworICAgIG1fY2FudmFzLnJlc2V0KCk7CisgICAgbV9pc1BhaW50aW5nID0gZmFsc2U7CiAg
ICAgbV9yZXNvdXJjZUlkZW50aWZpZXJNYXAuY2xlYXIoKTsKICAgICBtX2xvZ0NvbnNvbGVPdXRw
dXQgPSB0cnVlOwogfQpAQCAtNDQ1LDE2ICs0NDgsNiBAQCBXZWJTcGVsbENoZWNrQ2xpZW50KiBX
ZWJUZXN0UHJveHlCYXNlOjpzcGVsbENoZWNrQ2xpZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9z
cGVsbGNoZWNrLmdldCgpOwogfQogCi12b2lkIFdlYlRlc3RQcm94eUJhc2U6OnNldFBhaW50UmVj
dChjb25zdCBXZWJSZWN0JiByZWN0KQotewotICAgIG1fcGFpbnRSZWN0ID0gcmVjdDsKLX0KLQot
V2ViUmVjdCBXZWJUZXN0UHJveHlCYXNlOjpwYWludFJlY3QoKSBjb25zdAotewotICAgIHJldHVy
biBtX3BhaW50UmVjdDsKLX0KLQogc3RyaW5nIFdlYlRlc3RQcm94eUJhc2U6OmNhcHR1cmVUcmVl
KGJvb2wgZGVidWdSZW5kZXJUcmVlKQogewogICAgIFdlYlNjcmlwdENvbnRyb2xsZXI6OmZsdXNo
Q29uc29sZU1lc3NhZ2VzKCk7CkBAIC00ODMsMTEgKzQ3NiwxNjQgQEAgc3RyaW5nIFdlYlRlc3RQ
cm94eUJhc2U6OmNhcHR1cmVUcmVlKGJvb2wgZGVidWdSZW5kZXJUcmVlKQogICAgIHJldHVybiBk
YXRhVXRmODsKIH0KIAorU2tDYW52YXMqIFdlYlRlc3RQcm94eUJhc2U6OmNhcHR1cmVQaXhlbHMo
KQoreworICAgIG1fdGVzdEludGVyZmFjZXMtPndlYlZpZXcoKS0+bGF5b3V0KCk7CisgICAgaWYg
KG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+dGVzdFJlcGFpbnQoKSkgeworICAgICAg
ICBXZWJTaXplIHZpZXdTaXplID0gbV90ZXN0SW50ZXJmYWNlcy0+d2ViVmlldygpLT5zaXplKCk7
CisgICAgICAgIGludCB3aWR0aCA9IHZpZXdTaXplLndpZHRoOworICAgICAgICBpbnQgaGVpZ2h0
ID0gdmlld1NpemUuaGVpZ2h0OworICAgICAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1
bm5lcigpLT5zd2VlcEhvcml6b250YWxseSgpKSB7CisgICAgICAgICAgICBmb3IgKFdlYlJlY3Qg
Y29sdW1uKDAsIDAsIDEsIGhlaWdodCk7IGNvbHVtbi54IDwgd2lkdGg7IGNvbHVtbi54KyspCisg
ICAgICAgICAgICAgICAgcGFpbnRSZWN0KGNvbHVtbik7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBmb3IgKFdlYlJlY3QgbGluZSgwLCAwLCB3aWR0aCwgMSk7IGxpbmUueSA8IGhlaWdo
dDsgbGluZS55KyspCisgICAgICAgICAgICAgICAgcGFpbnRSZWN0KGxpbmUpOworICAgICAgICB9
CisgICAgfSBlbHNlIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCktPmlzUHJpbnRp
bmcoKSkKKyAgICAgICAgcGFpbnRQYWdlc1dpdGhCb3VuZGFyaWVzKCk7CisgICAgZWxzZQorICAg
ICAgICBwYWludEludmFsaWRhdGVkUmVnaW9uKCk7CisKKyAgICAvLyBTZWUgaWYgd2UgbmVlZCB0
byBkcmF3IHRoZSBzZWxlY3Rpb24gYm91bmRzIHJlY3QuIFNlbGVjdGlvbiBib3VuZHMKKyAgICAv
LyByZWN0IGlzIHRoZSByZWN0IGVuY2xvc2luZyB0aGUgKHBvc3NpYmx5IHRyYW5zZm9ybWVkKSBz
ZWxlY3Rpb24uCisgICAgLy8gVGhlIHJlY3Qgc2hvdWxkIGJlIGRyYXduIGFmdGVyIGV2ZXJ5dGhp
bmcgaXMgbGFpZCBvdXQgYW5kIHBhaW50ZWQuCisgICAgaWYgKG1fdGVzdEludGVyZmFjZXMtPnRl
c3RSdW5uZXIoKS0+c2hvdWxkRHVtcFNlbGVjdGlvblJlY3QoKSkgeworICAgICAgICAvLyBJZiB0
aGVyZSBpcyBhIHNlbGVjdGlvbiByZWN0IC0gZHJhdyBhIHJlZCAxcHggYm9yZGVyIGVuY2xvc2lu
ZyByZWN0CisgICAgICAgIFdlYlJlY3Qgd3IgPSBtX3Rlc3RJbnRlcmZhY2VzLT53ZWJWaWV3KCkt
Pm1haW5GcmFtZSgpLT5zZWxlY3Rpb25Cb3VuZHNSZWN0KCk7CisgICAgICAgIGlmICghd3IuaXNF
bXB0eSgpKSB7CisgICAgICAgICAgICAvLyBSZW5kZXIgYSByZWQgcmVjdGFuZ2xlIGJvdW5kaW5n
IHNlbGVjdGlvbiByZWN0CisgICAgICAgICAgICBTa1BhaW50IHBhaW50OworICAgICAgICAgICAg
cGFpbnQuc2V0Q29sb3IoMHhGRkZGMDAwMCk7IC8vIEZ1bGx5IG9wYXF1ZSByZWQKKyAgICAgICAg
ICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgICAgICAgICAg
cGFpbnQuc2V0RmxhZ3MoU2tQYWludDo6a0FudGlBbGlhc19GbGFnKTsKKyAgICAgICAgICAgIHBh
aW50LnNldFN0cm9rZVdpZHRoKDEuMGYpOworICAgICAgICAgICAgU2tJUmVjdCByZWN0OyAvLyBC
b3VuZGluZyByZWN0CisgICAgICAgICAgICByZWN0LnNldCh3ci54LCB3ci55LCB3ci54ICsgd3Iu
d2lkdGgsIHdyLnkgKyB3ci5oZWlnaHQpOworICAgICAgICAgICAgY2FudmFzKCktPmRyYXdJUmVj
dChyZWN0LCBwYWludCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gY2FudmFzKCk7
Cit9CisKIHZvaWQgV2ViVGVzdFByb3h5QmFzZTo6c2V0TG9nQ29uc29sZU91dHB1dChib29sIGVu
YWJsZWQpCiB7CiAgICAgbV9sb2dDb25zb2xlT3V0cHV0ID0gZW5hYmxlZDsKIH0KIAordm9pZCBX
ZWJUZXN0UHJveHlCYXNlOjpwYWludFJlY3QoY29uc3QgV2ViUmVjdCYgcmVjdCkKK3sKKyAgICBX
RUJLSVRfQVNTRVJUKCFtX2lzUGFpbnRpbmcpOworICAgIFdFQktJVF9BU1NFUlQoY2FudmFzKCkp
OworICAgIG1faXNQYWludGluZyA9IHRydWU7CisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ig
PSBtX3Rlc3RJbnRlcmZhY2VzLT53ZWJWaWV3KCktPmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAg
aW50IHNjYWxlZFggPSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PGZsb2F0PihyZWN0Lngp
ICogZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIGludCBzY2FsZWRZID0gc3RhdGljX2Nhc3Q8aW50
PihzdGF0aWNfY2FzdDxmbG9hdD4ocmVjdC55KSAqIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBp
bnQgc2NhbGVkV2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHJlY3Qud2lkdGgpICogZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICBpbnQgc2NhbGVkSGVpZ2h0
ID0gc3RhdGljX2Nhc3Q8aW50PihjZWlsKHN0YXRpY19jYXN0PGZsb2F0PihyZWN0LmhlaWdodCkg
KiBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgIFdlYlJlY3QgZGV2aWNlUmVjdChzY2FsZWRYLCBz
Y2FsZWRZLCBzY2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0KTsKKyAgICBtX3Rlc3RJbnRlcmZhY2Vz
LT53ZWJWaWV3KCktPnBhaW50KGNhbnZhcygpLCBkZXZpY2VSZWN0KTsKKyAgICBtX2lzUGFpbnRp
bmcgPSBmYWxzZTsKK30KKwordm9pZCBXZWJUZXN0UHJveHlCYXNlOjpwYWludEludmFsaWRhdGVk
UmVnaW9uKCkKK3sKKyAgICBtX3Rlc3RJbnRlcmZhY2VzLT53ZWJWaWV3KCktPmFuaW1hdGUoMC4w
KTsKKyAgICBtX3Rlc3RJbnRlcmZhY2VzLT53ZWJWaWV3KCktPmxheW91dCgpOworICAgIFdlYlNp
emUgd2lkZ2V0U2l6ZSA9IG1fdGVzdEludGVyZmFjZXMtPndlYlZpZXcoKS0+c2l6ZSgpOworICAg
IFdlYlJlY3QgY2xpZW50UmVjdCgwLCAwLCB3aWRnZXRTaXplLndpZHRoLCB3aWRnZXRTaXplLmhl
aWdodCk7CisKKyAgICAvLyBQYWludCB0aGUgY2FudmFzIGlmIG5lY2Vzc2FyeS4gQWxsb3cgcGFp
bnRpbmcgdG8gZ2VuZXJhdGUgZXh0cmEgcmVjdHMKKyAgICAvLyBmb3IgdGhlIGZpcnN0IHR3byBj
YWxscy4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBzb21lIFdlYkNvcmUgcmVuZGVyaW5nCisg
ICAgLy8gb2JqZWN0cyB1cGRhdGUgdGhlaXIgbGF5b3V0IG9ubHkgd2hlbiBwYWludGVkLgorICAg
IC8vIFN0b3JlIHRoZSB0b3RhbCBhcmVhIHBhaW50ZWQgaW4gdG90YWxfcGFpbnQuIFRoZW4gdGVs
bCB0aGUgZ2RrIHdpbmRvdworICAgIC8vIHRvIHVwZGF0ZSB0aGF0IGFyZWEgYWZ0ZXIgd2UncmUg
ZG9uZSBwYWludGluZyBpdC4KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkgeworICAg
ICAgICAvLyByZWN0ID0gaW50ZXJzZWN0KG1fcGFpbnRSZWN0ICwgY2xpZW50UmVjdCkKKyAgICAg
ICAgV2ViUmVjdCBkYW1hZ2VSZWN0ID0gbV9wYWludFJlY3Q7CisgICAgICAgIGludCBsZWZ0ID0g
bWF4KGRhbWFnZVJlY3QueCwgY2xpZW50UmVjdC54KTsKKyAgICAgICAgaW50IHRvcCA9IG1heChk
YW1hZ2VSZWN0LnksIGNsaWVudFJlY3QueSk7CisgICAgICAgIGludCByaWdodCA9IG1pbihkYW1h
Z2VSZWN0LnggKyBkYW1hZ2VSZWN0LndpZHRoLCBjbGllbnRSZWN0LnggKyBjbGllbnRSZWN0Lndp
ZHRoKTsKKyAgICAgICAgaW50IGJvdHRvbSA9IG1pbihkYW1hZ2VSZWN0LnkgKyBkYW1hZ2VSZWN0
LmhlaWdodCwgY2xpZW50UmVjdC55ICsgY2xpZW50UmVjdC5oZWlnaHQpOworICAgICAgICBXZWJS
ZWN0IHJlY3Q7CisgICAgICAgIGlmIChsZWZ0IDwgcmlnaHQgJiYgdG9wIDwgYm90dG9tKQorICAg
ICAgICAgICAgcmVjdCA9IFdlYlJlY3QobGVmdCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRvbSAt
IHRvcCk7CisKKyAgICAgICAgbV9wYWludFJlY3QgPSBXZWJSZWN0KCk7CisgICAgICAgIGlmIChy
ZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBwYWludFJlY3Qo
cmVjdCk7CisgICAgfQorICAgIFdFQktJVF9BU1NFUlQobV9wYWludFJlY3QuaXNFbXB0eSgpKTsK
K30KKwordm9pZCBXZWJUZXN0UHJveHlCYXNlOjpwYWludFBhZ2VzV2l0aEJvdW5kYXJpZXMoKQor
eworICAgIFdFQktJVF9BU1NFUlQoIW1faXNQYWludGluZyk7CisgICAgV0VCS0lUX0FTU0VSVChj
YW52YXMoKSk7CisgICAgbV9pc1BhaW50aW5nID0gdHJ1ZTsKKworICAgIFdlYlNpemUgcGFnZVNp
emVJblBpeGVscyA9IG1fdGVzdEludGVyZmFjZXMtPndlYlZpZXcoKS0+c2l6ZSgpOworICAgIFdl
YkZyYW1lKiB3ZWJGcmFtZSA9IG1fdGVzdEludGVyZmFjZXMtPndlYlZpZXcoKS0+bWFpbkZyYW1l
KCk7CisKKyAgICBpbnQgcGFnZUNvdW50ID0gd2ViRnJhbWUtPnByaW50QmVnaW4ocGFnZVNpemVJ
blBpeGVscyk7CisgICAgaW50IHRvdGFsSGVpZ2h0ID0gcGFnZUNvdW50ICogKHBhZ2VTaXplSW5Q
aXhlbHMuaGVpZ2h0ICsgMSkgLSAxOworCisgICAgU2tDYW52YXMqIHRlc3RDYW52YXMgPSBza2lh
OjpUcnlDcmVhdGVCaXRtYXBDYW52YXMocGFnZVNpemVJblBpeGVscy53aWR0aCwgdG90YWxIZWln
aHQsIHRydWUpOworICAgIGlmICh0ZXN0Q2FudmFzKSB7CisgICAgICAgIGRpc2NhcmRCYWNraW5n
U3RvcmUoKTsKKyAgICAgICAgbV9jYW52YXMgPSBzdGQ6OmF1dG9fcHRyPFNrQ2FudmFzPih0ZXN0
Q2FudmFzKTsKKyAgICB9IGVsc2UgeworICAgICAgICB3ZWJGcmFtZS0+cHJpbnRFbmQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdlYkZyYW1lLT5wcmludFBhZ2VzV2l0aEJvdW5k
YXJpZXMoY2FudmFzKCksIHBhZ2VTaXplSW5QaXhlbHMpOworICAgIHdlYkZyYW1lLT5wcmludEVu
ZCgpOworCisgICAgbV9pc1BhaW50aW5nID0gZmFsc2U7Cit9CisKK1NrQ2FudmFzKiBXZWJUZXN0
UHJveHlCYXNlOjpjYW52YXMoKQoreworICAgIGlmIChtX2NhbnZhcy5nZXQoKSkKKyAgICAgICAg
cmV0dXJuIG1fY2FudmFzLmdldCgpOworICAgIFdlYlNpemUgd2lkZ2V0U2l6ZSA9IG1fdGVzdElu
dGVyZmFjZXMtPndlYlZpZXcoKS0+c2l6ZSgpOworICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9y
ID0gbV90ZXN0SW50ZXJmYWNlcy0+d2ViVmlldygpLT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAg
IGludCBzY2FsZWRXaWR0aCA9IHN0YXRpY19jYXN0PGludD4oY2VpbChzdGF0aWNfY2FzdDxmbG9h
dD4od2lkZ2V0U2l6ZS53aWR0aCkgKiBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgIGludCBzY2Fs
ZWRIZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZGdl
dFNpemUuaGVpZ2h0KSAqIGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgbV9jYW52YXMgPSBzdGQ6
OmF1dG9fcHRyPFNrQ2FudmFzPihza2lhOjpDcmVhdGVCaXRtYXBDYW52YXMoc2NhbGVkV2lkdGgs
IHNjYWxlZEhlaWdodCwgdHJ1ZSkpOworICAgIHJldHVybiBtX2NhbnZhcy5nZXQoKTsKK30KKwor
Ly8gUGFpbnRzIHRoZSBlbnRpcmUgY2FudmFzIGEgc2VtaS10cmFuc3BhcmVudCBibGFjayAoZ3Jh
eWlzaCkuIFRoaXMgaXMgdXNlZAorLy8gYnkgdGhlIGxheW91dCB0ZXN0cyBpbiBmYXN0L3JlcGFp
bnQuIFRoZSBhbHBoYSB2YWx1ZSBtYXRjaGVzIHVwc3RyZWFtLgordm9pZCBXZWJUZXN0UHJveHlC
YXNlOjpkaXNwbGF5UmVwYWludE1hc2soKQoreworICAgIGNhbnZhcygpLT5kcmF3QVJHQigxNjcs
IDAsIDAsIDApOworfQorCit2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpc3BsYXkoKQoreworICAg
IGNvbnN0IFdlYktpdDo6V2ViU2l6ZSYgc2l6ZSA9IG1fdGVzdEludGVyZmFjZXMtPndlYlZpZXco
KS0+c2l6ZSgpOworICAgIFdlYlJlY3QgcmVjdCgwLCAwLCBzaXplLndpZHRoLCBzaXplLmhlaWdo
dCk7CisgICAgbV9wYWludFJlY3QgPSByZWN0OworICAgIHBhaW50SW52YWxpZGF0ZWRSZWdpb24o
KTsKKyAgICBkaXNwbGF5UmVwYWludE1hc2soKTsKK30KKwordm9pZCBXZWJUZXN0UHJveHlCYXNl
OjpkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24oKQoreworICAgIHBhaW50SW52YWxpZGF0ZWRSZWdp
b24oKTsKKyAgICBkaXNwbGF5UmVwYWludE1hc2soKTsKK30KKwordm9pZCBXZWJUZXN0UHJveHlC
YXNlOjpkaXNjYXJkQmFja2luZ1N0b3JlKCkKK3sKKyAgICBtX2NhbnZhcy5yZXNldCgpOworfQor
CiB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpZEludmFsaWRhdGVSZWN0KGNvbnN0IFdlYlJlY3Qm
IHJlY3QpCiB7CiAgICAgLy8gbV9wYWludFJlY3QgPSBtX3BhaW50UmVjdCBVIHJlY3QKQEAgLTUy
Nyw2ICs2NzMsMTIgQEAgdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpzaG93KFdlYk5hdmlnYXRpb25Q
b2xpY3kpCiB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OnNldFdpbmRvd1JlY3QoY29uc3QgV2ViUmVj
dCYgcmVjdCkKIHsKICAgICBzY2hlZHVsZUNvbXBvc2l0ZSgpOworICAgIGRpc2NhcmRCYWNraW5n
U3RvcmUoKTsKK30KKwordm9pZCBXZWJUZXN0UHJveHlCYXNlOjpzZXREZXZpY2VTY2FsZUZhY3Rv
cihmbG9hdCkKK3sKKyAgICBkaXNjYXJkQmFja2luZ1N0b3JlKCk7CiB9CiAKIHZvaWQgV2ViVGVz
dFByb3h5QmFzZTo6ZGlkQXV0b1Jlc2l6ZShjb25zdCBXZWJTaXplJikKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCmluZGV4IDFhNmJjZDg3ZTgzM2ExYjYwYzAx
NzVjMzNkYTgzMmJjNDJhNGU0NzUuLmI0ZDljMzMzZTQ4YTYxMzAyNTBmOTAyODlkNWVhMmRhNjY5
MzhjOGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcApA
QCAtMTg1LDE2ICsxODUsMTYgQEAgdm9pZCBUZXN0U2hlbGw6OmNyZWF0ZU1haW5XaW5kb3coKQog
ICAgIG1fd2ViVmlld0hvc3QgPSBhZG9wdFB0cihjcmVhdGVOZXdXaW5kb3coV2ViVVJMKCksIG1f
ZHJ0RGV2VG9vbHNBZ2VudC5nZXQoKSwgbV90ZXN0SW50ZXJmYWNlcy5nZXQoKSkpOwogICAgIG1f
d2ViVmlldyA9IG1fd2ViVmlld0hvc3QtPndlYlZpZXcoKTsKICAgICBtX3Rlc3RJbnRlcmZhY2Vz
LT5zZXREZWxlZ2F0ZShtX3dlYlZpZXdIb3N0LmdldCgpKTsKLSAgICBtX3Rlc3RJbnRlcmZhY2Vz
LT5zZXRXZWJWaWV3KG1fd2ViVmlldyk7CisgICAgbV90ZXN0SW50ZXJmYWNlcy0+c2V0V2ViVmll
dyhtX3dlYlZpZXcsIG1fd2ViVmlld0hvc3QtPnByb3h5KCkpOwogICAgIG1fZHJ0RGV2VG9vbHNB
Z2VudC0+c2V0V2ViVmlldyhtX3dlYlZpZXcpOwogfQogCiBUZXN0U2hlbGw6On5UZXN0U2hlbGwo
KQogewogICAgIG1fdGVzdEludGVyZmFjZXMtPnNldERlbGVnYXRlKDApOwotICAgIG1fdGVzdElu
dGVyZmFjZXMtPnNldFdlYlZpZXcoMCk7CisgICAgbV90ZXN0SW50ZXJmYWNlcy0+c2V0V2ViVmll
dygwLCAwKTsKICAgICBtX2RldlRvb2xzVGVzdEludGVyZmFjZXMtPnNldERlbGVnYXRlKDApOwot
ICAgIG1fZGV2VG9vbHNUZXN0SW50ZXJmYWNlcy0+c2V0V2ViVmlldygwKTsKKyAgICBtX2RldlRv
b2xzVGVzdEludGVyZmFjZXMtPnNldFdlYlZpZXcoMCwgMCk7CiAgICAgbV9kcnREZXZUb29sc0Fn
ZW50LT5zZXRXZWJWaWV3KDApOwogICAgIGlmIChtX3dlYlZpZXdIb3N0KQogICAgICAgICBtX3dl
YlZpZXdIb3N0LT5zaHV0ZG93bigpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgVGVzdFNoZWxs
OjpzaG93RGV2VG9vbHMoKQogICAgICAgICBtX2RldlRvb2xzLT53ZWJWaWV3KCktPnNldHRpbmdz
KCktPnNldE1lbW9yeUluZm9FbmFibGVkKHRydWUpOwogICAgICAgICBtX2RldlRvb2xzLT5wcm94
eSgpLT5zZXRMb2dDb25zb2xlT3V0cHV0KGZhbHNlKTsKICAgICAgICAgbV9kZXZUb29sc1Rlc3RJ
bnRlcmZhY2VzLT5zZXREZWxlZ2F0ZShtX2RldlRvb2xzKTsKLSAgICAgICAgbV9kZXZUb29sc1Rl
c3RJbnRlcmZhY2VzLT5zZXRXZWJWaWV3KG1fZGV2VG9vbHMtPndlYlZpZXcoKSk7CisgICAgICAg
IG1fZGV2VG9vbHNUZXN0SW50ZXJmYWNlcy0+c2V0V2ViVmlldyhtX2RldlRvb2xzLT53ZWJWaWV3
KCksIG1fZGV2VG9vbHMtPnByb3h5KCkpOwogICAgICAgICBBU1NFUlQobV9kZXZUb29scyk7CiAg
ICAgICAgIGNyZWF0ZURSVERldlRvb2xzQ2xpZW50KG1fZHJ0RGV2VG9vbHNBZ2VudC5nZXQoKSk7
CiAgICAgfQpAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgVGVzdFNoZWxsOjpjbG9zZURldlRvb2xz
KCkKICAgICAgICAgbV9kcnREZXZUb29sc0FnZW50LT5yZXNldCgpOwogICAgICAgICBtX2RydERl
dlRvb2xzQ2xpZW50LmNsZWFyKCk7CiAgICAgICAgIG1fZGV2VG9vbHNUZXN0SW50ZXJmYWNlcy0+
c2V0RGVsZWdhdGUoMCk7Ci0gICAgICAgIG1fZGV2VG9vbHNUZXN0SW50ZXJmYWNlcy0+c2V0V2Vi
VmlldygwKTsKKyAgICAgICAgbV9kZXZUb29sc1Rlc3RJbnRlcmZhY2VzLT5zZXRXZWJWaWV3KDAs
IDApOwogICAgICAgICBjbG9zZVdpbmRvdyhtX2RldlRvb2xzKTsKICAgICAgICAgbV9kZXZUb29s
cyA9IDA7CiAgICAgfQpAQCAtNDI3LDQzICs0MjcsNyBAQCB2b2lkIFRlc3RTaGVsbDo6ZHVtcCgp
CiAgICAgICAgIC8vIGNvbW1hbmQgbGluZSAoZm9yIHRoZSBkdW1wIHBpeGVscyBhcmd1bWVudCks
IGFuZCB0aGUgTUQ1IHN1bSB0bwogICAgICAgICAvLyBzdGRvdXQuCiAgICAgICAgIGR1bXBlZEFu
eXRoaW5nID0gdHJ1ZTsKLSAgICAgICAgbV93ZWJWaWV3LT5sYXlvdXQoKTsKLSAgICAgICAgaWYg
KG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+dGVzdFJlcGFpbnQoKSkgewotICAgICAg
ICAgICAgV2ViU2l6ZSB2aWV3U2l6ZSA9IG1fd2ViVmlldy0+c2l6ZSgpOwotICAgICAgICAgICAg
aW50IHdpZHRoID0gdmlld1NpemUud2lkdGg7Ci0gICAgICAgICAgICBpbnQgaGVpZ2h0ID0gdmll
d1NpemUuaGVpZ2h0OwotICAgICAgICAgICAgaWYgKG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5u
ZXIoKS0+c3dlZXBIb3Jpem9udGFsbHkoKSkgewotICAgICAgICAgICAgICAgIGZvciAoV2ViUmVj
dCBjb2x1bW4oMCwgMCwgMSwgaGVpZ2h0KTsgY29sdW1uLnggPCB3aWR0aDsgY29sdW1uLngrKykK
LSAgICAgICAgICAgICAgICAgICAgbV93ZWJWaWV3SG9zdC0+cGFpbnRSZWN0KGNvbHVtbik7Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGZvciAoV2ViUmVjdCBsaW5lKDAs
IDAsIHdpZHRoLCAxKTsgbGluZS55IDwgaGVpZ2h0OyBsaW5lLnkrKykKLSAgICAgICAgICAgICAg
ICAgICAgbV93ZWJWaWV3SG9zdC0+cGFpbnRSZWN0KGxpbmUpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9IGVsc2UgaWYgKG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+aXNQcmludGlu
ZygpKQotICAgICAgICAgICAgbV93ZWJWaWV3SG9zdC0+cGFpbnRQYWdlc1dpdGhCb3VuZGFyaWVz
KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fd2ViVmlld0hvc3QtPnBhaW50SW52YWxp
ZGF0ZWRSZWdpb24oKTsKLQotICAgICAgICAvLyBTZWUgaWYgd2UgbmVlZCB0byBkcmF3IHRoZSBz
ZWxlY3Rpb24gYm91bmRzIHJlY3QuIFNlbGVjdGlvbiBib3VuZHMKLSAgICAgICAgLy8gcmVjdCBp
cyB0aGUgcmVjdCBlbmNsb3NpbmcgdGhlIChwb3NzaWJseSB0cmFuc2Zvcm1lZCkgc2VsZWN0aW9u
LgotICAgICAgICAvLyBUaGUgcmVjdCBzaG91bGQgYmUgZHJhd24gYWZ0ZXIgZXZlcnl0aGluZyBp
cyBsYWlkIG91dCBhbmQgcGFpbnRlZC4KLSAgICAgICAgaWYgKG1fdGVzdEludGVyZmFjZXMtPnRl
c3RSdW5uZXIoKS0+c2hvdWxkRHVtcFNlbGVjdGlvblJlY3QoKSkgewotICAgICAgICAgICAgLy8g
SWYgdGhlcmUgaXMgYSBzZWxlY3Rpb24gcmVjdCAtIGRyYXcgYSByZWQgMXB4IGJvcmRlciBlbmNs
b3NpbmcgcmVjdAotICAgICAgICAgICAgV2ViUmVjdCB3ciA9IGZyYW1lLT5zZWxlY3Rpb25Cb3Vu
ZHNSZWN0KCk7Ci0gICAgICAgICAgICBpZiAoIXdyLmlzRW1wdHkoKSkgewotICAgICAgICAgICAg
ICAgIC8vIFJlbmRlciBhIHJlZCByZWN0YW5nbGUgYm91bmRpbmcgc2VsZWN0aW9uIHJlY3QKLSAg
ICAgICAgICAgICAgICBTa1BhaW50IHBhaW50OwotICAgICAgICAgICAgICAgIHBhaW50LnNldENv
bG9yKDB4RkZGRjAwMDApOyAvLyBGdWxseSBvcGFxdWUgcmVkCi0gICAgICAgICAgICAgICAgcGFp
bnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7Ci0gICAgICAgICAgICAgICAgcGFp
bnQuc2V0RmxhZ3MoU2tQYWludDo6a0FudGlBbGlhc19GbGFnKTsKLSAgICAgICAgICAgICAgICBw
YWludC5zZXRTdHJva2VXaWR0aCgxLjBmKTsKLSAgICAgICAgICAgICAgICBTa0lSZWN0IHJlY3Q7
IC8vIEJvdW5kaW5nIHJlY3QKLSAgICAgICAgICAgICAgICByZWN0LnNldCh3ci54LCB3ci55LCB3
ci54ICsgd3Iud2lkdGgsIHdyLnkgKyB3ci5oZWlnaHQpOwotICAgICAgICAgICAgICAgIG1fd2Vi
Vmlld0hvc3QtPmNhbnZhcygpLT5kcmF3SVJlY3QocmVjdCwgcGFpbnQpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgZHVtcEltYWdlKG1fd2ViVmlld0hvc3QtPmNhbnZhcygp
KTsKKyAgICAgICAgZHVtcEltYWdlKG1fd2ViVmlld0hvc3QtPnByb3h5KCktPmNhcHR1cmVQaXhl
bHMoKSk7CiAgICAgfQogICAgIG1fcHJpbnRlci5oYW5kbGVUZXN0Rm9vdGVyKGR1bXBlZEFueXRo
aW5nKTsKICAgICBmZmx1c2goc3Rkb3V0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCBmZGNiN2ViMzZiZjYxOWVjMjRhYTE4NGUzYjQ1NTRm
NjI0NzAyMGRiLi5mMWU4MmNkYWE2NDVlODg2NzVhMzMwZGM0ZThmYWI4MzM0NTdjMzY3IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC02MCw3
ICs2MCw2IEBACiAjaW5jbHVkZSAiV2ViU3RvcmFnZU5hbWVzcGFjZS5oIgogI2luY2x1ZGUgIldl
YlZpZXcuaCIKICNpbmNsdWRlICJXZWJXaW5kb3dGZWF0dXJlcy5oIgotI2luY2x1ZGUgInNraWEv
ZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3Rlc3RfbWVk
aWFfc3RyZWFtX2NsaWVudC5oIgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBw
b3J0LmgiCiAjaW5jbHVkZSA8Y2N0eXBlPgpAQCAtNDY5LDcgKzQ2OCw2IEBAIHZvaWQgV2ViVmll
d0hvc3Q6OnNldFdpbmRvd1JlY3QoY29uc3QgV2ViUmVjdCYgcmVjdCkKICAgICAgICAgbV93aW5k
b3dSZWN0LmhlaWdodCA9IDEgKyBib3JkZXIyOwogICAgIGludCB3aWR0aCA9IG1fd2luZG93UmVj
dC53aWR0aCAtIGJvcmRlcjI7CiAgICAgaW50IGhlaWdodCA9IG1fd2luZG93UmVjdC5oZWlnaHQg
LSBib3JkZXIyOwotICAgIGRpc2NhcmRCYWNraW5nU3RvcmUoKTsKICAgICB3ZWJXaWRnZXQoKS0+
cmVzaXplKFdlYlNpemUod2lkdGgsIGhlaWdodCkpOwogfQogCkBAIC03MjIsNyArNzIwLDYgQEAg
dm9pZCBXZWJWaWV3SG9zdDo6c2V0RGF0YWJhc2VRdW90YShpbnQgcXVvdGEpCiB2b2lkIFdlYlZp
ZXdIb3N0OjpzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKIHsK
ICAgICB3ZWJWaWV3KCktPnNldERldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsK
LSAgICBkaXNjYXJkQmFja2luZ1N0b3JlKCk7CiB9CiAKIHZvaWQgV2ViVmlld0hvc3Q6OnNldEZv
Y3VzKGJvb2wgZm9jdXNlZCkKQEAgLTg1MCwyMSArODQ3LDYgQEAgYm9vbCBXZWJWaWV3SG9zdDo6
d2FzTW9ja1NwZWVjaFJlY29nbml0aW9uQWJvcnRlZCgpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJW
aWV3SG9zdDo6ZGlzcGxheSgpCi17Ci0gICAgY29uc3QgV2ViS2l0OjpXZWJTaXplJiBzaXplID0g
d2ViVmlldygpLT5zaXplKCk7Ci0gICAgV2ViUmVjdCByZWN0KDAsIDAsIHNpemUud2lkdGgsIHNp
emUuaGVpZ2h0KTsKLSAgICBwcm94eSgpLT5zZXRQYWludFJlY3QocmVjdCk7Ci0gICAgcGFpbnRJ
bnZhbGlkYXRlZFJlZ2lvbigpOwotICAgIGRpc3BsYXlSZXBhaW50TWFzaygpOwotfQotCi12b2lk
IFdlYlZpZXdIb3N0OjpkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24oKQotewotICAgIHBhaW50SW52
YWxpZGF0ZWRSZWdpb24oKTsKLSAgICBkaXNwbGF5UmVwYWludE1hc2soKTsKLX0KLQogdm9pZCBX
ZWJWaWV3SG9zdDo6dGVzdEZpbmlzaGVkKCkKIHsKICAgICBtX3NoZWxsLT50ZXN0RmluaXNoZWQo
dGhpcyk7CkBAIC0xMDA4LDggKzk5MCw2IEBAIHZvaWQgV2ViVmlld0hvc3Q6OnJlc2V0KCkKICAg
ICBtX2xhc3RQYWdlSWRVcGRhdGVkID0gLTE7CiAgICAgbV9oYXNXaW5kb3cgPSBmYWxzZTsKICAg
ICBtX2luTW9kYWxMb29wID0gZmFsc2U7Ci0gICAgbV9pc1BhaW50aW5nID0gZmFsc2U7Ci0gICAg
bV9jYW52YXMuY2xlYXIoKTsKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIG1fcG9pbnRl
ckxvY2tlZCA9IGZhbHNlOwogICAgIG1fcG9pbnRlckxvY2tQbGFubmVkUmVzdWx0ID0gUG9pbnRl
ckxvY2tXaWxsU3VjY2VlZDsKQEAgLTEyMDMsMTA5ICsxMTgzLDMgQEAgd2Via2l0X3N1cHBvcnQ6
OlRlc3RNZWRpYVN0cmVhbUNsaWVudCogV2ViVmlld0hvc3Q6OnRlc3RNZWRpYVN0cmVhbUNsaWVu
dCgpCiAgICAgcmV0dXJuIG1fdGVzdE1lZGlhU3RyZWFtQ2xpZW50LmdldCgpOwogfQogI2VuZGlm
Ci0KLS8vIFBhaW50aW5nIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdm9pZCBXZWJWaWV3SG9zdDo6cGFpbnRSZWN0
KGNvbnN0IFdlYlJlY3QmIHJlY3QpCi17Ci0gICAgQVNTRVJUKCFtX2lzUGFpbnRpbmcpOwotICAg
IEFTU0VSVChjYW52YXMoKSk7Ci0gICAgbV9pc1BhaW50aW5nID0gdHJ1ZTsKLSAgICBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvciA9IHdlYlZpZXcoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBp
bnQgc2NhbGVkWCA9IHN0YXRpY19jYXN0PGludD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlY3QueCkg
KiBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgaW50IHNjYWxlZFkgPSBzdGF0aWNfY2FzdDxpbnQ+
KHN0YXRpY19jYXN0PGZsb2F0PihyZWN0LnkpICogZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIGlu
dCBzY2FsZWRXaWR0aCA9IHN0YXRpY19jYXN0PGludD4oY2VpbChzdGF0aWNfY2FzdDxmbG9hdD4o
cmVjdC53aWR0aCkgKiBkZXZpY2VTY2FsZUZhY3RvcikpOwotICAgIGludCBzY2FsZWRIZWlnaHQg
PSBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlY3QuaGVpZ2h0KSAq
IGRldmljZVNjYWxlRmFjdG9yKSk7Ci0gICAgV2ViUmVjdCBkZXZpY2VSZWN0KHNjYWxlZFgsIHNj
YWxlZFksIHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQpOwotICAgIHdlYldpZGdldCgpLT5wYWlu
dChjYW52YXMoKSwgZGV2aWNlUmVjdCk7Ci0gICAgbV9pc1BhaW50aW5nID0gZmFsc2U7Ci19Ci0K
LXZvaWQgV2ViVmlld0hvc3Q6OnBhaW50SW52YWxpZGF0ZWRSZWdpb24oKQotewotI2lmIEVOQUJM
RShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKLSAgICB3ZWJXaWRnZXQoKS0+YW5pbWF0ZSgwLjAp
OwotI2VuZGlmCi0gICAgd2ViV2lkZ2V0KCktPmxheW91dCgpOwotICAgIFdlYlNpemUgd2lkZ2V0
U2l6ZSA9IHdlYldpZGdldCgpLT5zaXplKCk7Ci0gICAgV2ViUmVjdCBjbGllbnRSZWN0KDAsIDAs
IHdpZGdldFNpemUud2lkdGgsIHdpZGdldFNpemUuaGVpZ2h0KTsKLQotICAgIC8vIFBhaW50IHRo
ZSBjYW52YXMgaWYgbmVjZXNzYXJ5LiBBbGxvdyBwYWludGluZyB0byBnZW5lcmF0ZSBleHRyYSBy
ZWN0cwotICAgIC8vIGZvciB0aGUgZmlyc3QgdHdvIGNhbGxzLiBUaGlzIGlzIG5lY2Vzc2FyeSBi
ZWNhdXNlIHNvbWUgV2ViQ29yZSByZW5kZXJpbmcKLSAgICAvLyBvYmplY3RzIHVwZGF0ZSB0aGVp
ciBsYXlvdXQgb25seSB3aGVuIHBhaW50ZWQuCi0gICAgLy8gU3RvcmUgdGhlIHRvdGFsIGFyZWEg
cGFpbnRlZCBpbiB0b3RhbF9wYWludC4gVGhlbiB0ZWxsIHRoZSBnZGsgd2luZG93Ci0gICAgLy8g
dG8gdXBkYXRlIHRoYXQgYXJlYSBhZnRlciB3ZSdyZSBkb25lIHBhaW50aW5nIGl0LgotICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7Ci0gICAgICAgIC8vIHJlY3QgPSBpbnRlcnNlY3Qo
cHJveHkoKS0+cGFpbnRSZWN0KCkgLCBjbGllbnRSZWN0KQotICAgICAgICBXZWJSZWN0IGRhbWFn
ZVJlY3QgPSBwcm94eSgpLT5wYWludFJlY3QoKTsKLSAgICAgICAgaW50IGxlZnQgPSBtYXgoZGFt
YWdlUmVjdC54LCBjbGllbnRSZWN0LngpOwotICAgICAgICBpbnQgdG9wID0gbWF4KGRhbWFnZVJl
Y3QueSwgY2xpZW50UmVjdC55KTsKLSAgICAgICAgaW50IHJpZ2h0ID0gbWluKGRhbWFnZVJlY3Qu
eCArIGRhbWFnZVJlY3Qud2lkdGgsIGNsaWVudFJlY3QueCArIGNsaWVudFJlY3Qud2lkdGgpOwot
ICAgICAgICBpbnQgYm90dG9tID0gbWluKGRhbWFnZVJlY3QueSArIGRhbWFnZVJlY3QuaGVpZ2h0
LCBjbGllbnRSZWN0LnkgKyBjbGllbnRSZWN0LmhlaWdodCk7Ci0gICAgICAgIFdlYlJlY3QgcmVj
dDsKLSAgICAgICAgaWYgKGxlZnQgPCByaWdodCAmJiB0b3AgPCBib3R0b20pCi0gICAgICAgICAg
ICByZWN0ID0gV2ViUmVjdChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9wKTsK
LQotICAgICAgICBwcm94eSgpLT5zZXRQYWludFJlY3QoV2ViUmVjdCgpKTsKLSAgICAgICAgaWYg
KHJlY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHBhaW50UmVj
dChyZWN0KTsKLSAgICB9Ci0gICAgQVNTRVJUKHByb3h5KCktPnBhaW50UmVjdCgpLmlzRW1wdHko
KSk7Ci19Ci0KLXZvaWQgV2ViVmlld0hvc3Q6OnBhaW50UGFnZXNXaXRoQm91bmRhcmllcygpCi17
Ci0gICAgQVNTRVJUKCFtX2lzUGFpbnRpbmcpOwotICAgIEFTU0VSVChjYW52YXMoKSk7Ci0gICAg
bV9pc1BhaW50aW5nID0gdHJ1ZTsKLQotICAgIFdlYlNpemUgcGFnZVNpemVJblBpeGVscyA9IHdl
YldpZGdldCgpLT5zaXplKCk7Ci0gICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gd2ViVmlldygpLT5t
YWluRnJhbWUoKTsKLQotICAgIGludCBwYWdlQ291bnQgPSB3ZWJGcmFtZS0+cHJpbnRCZWdpbihw
YWdlU2l6ZUluUGl4ZWxzKTsKLSAgICBpbnQgdG90YWxIZWlnaHQgPSBwYWdlQ291bnQgKiAocGFn
ZVNpemVJblBpeGVscy5oZWlnaHQgKyAxKSAtIDE7Ci0KLSAgICBTa0NhbnZhcyogdGVzdENhbnZh
cyA9IHNraWE6OlRyeUNyZWF0ZUJpdG1hcENhbnZhcyhwYWdlU2l6ZUluUGl4ZWxzLndpZHRoLCB0
b3RhbEhlaWdodCwgdHJ1ZSk7Ci0gICAgaWYgKHRlc3RDYW52YXMpIHsKLSAgICAgICAgZGlzY2Fy
ZEJhY2tpbmdTdG9yZSgpOwotICAgICAgICBtX2NhbnZhcyA9IGFkb3B0UHRyKHRlc3RDYW52YXMp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHdlYkZyYW1lLT5wcmludEVuZCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgd2ViRnJhbWUtPnByaW50UGFnZXNXaXRoQm91bmRhcmllcyhj
YW52YXMoKSwgcGFnZVNpemVJblBpeGVscyk7Ci0gICAgd2ViRnJhbWUtPnByaW50RW5kKCk7Ci0K
LSAgICBtX2lzUGFpbnRpbmcgPSBmYWxzZTsKLX0KLQotU2tDYW52YXMqIFdlYlZpZXdIb3N0Ojpj
YW52YXMoKQotewotICAgIGlmIChtX2NhbnZhcykKLSAgICAgICAgcmV0dXJuIG1fY2FudmFzLmdl
dCgpOwotICAgIFdlYlNpemUgd2lkZ2V0U2l6ZSA9IHdlYldpZGdldCgpLT5zaXplKCk7Ci0gICAg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSB3ZWJWaWV3KCktPmRldmljZVNjYWxlRmFjdG9yKCk7
Ci0gICAgaW50IHNjYWxlZFdpZHRoID0gc3RhdGljX2Nhc3Q8aW50PihjZWlsKHN0YXRpY19jYXN0
PGZsb2F0Pih3aWRnZXRTaXplLndpZHRoKSAqIGRldmljZVNjYWxlRmFjdG9yKSk7Ci0gICAgaW50
IHNjYWxlZEhlaWdodCA9IHN0YXRpY19jYXN0PGludD4oY2VpbChzdGF0aWNfY2FzdDxmbG9hdD4o
d2lkZ2V0U2l6ZS5oZWlnaHQpICogZGV2aWNlU2NhbGVGYWN0b3IpKTsKLSAgICByZXNldFNjcm9s
bFJlY3QoKTsKLSAgICBtX2NhbnZhcyA9IGFkb3B0UHRyKHNraWE6OkNyZWF0ZUJpdG1hcENhbnZh
cyhzY2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0LCB0cnVlKSk7Ci0gICAgcmV0dXJuIG1fY2FudmFz
LmdldCgpOwotfQotCi12b2lkIFdlYlZpZXdIb3N0OjpyZXNldFNjcm9sbFJlY3QoKQotewotfQot
Ci12b2lkIFdlYlZpZXdIb3N0OjpkaXNjYXJkQmFja2luZ1N0b3JlKCkKLXsKLSAgICBtX2NhbnZh
cy5jbGVhcigpOwotfQotCi0vLyBQYWludHMgdGhlIGVudGlyZSBjYW52YXMgYSBzZW1pLXRyYW5z
cGFyZW50IGJsYWNrIChncmF5aXNoKS4gVGhpcyBpcyB1c2VkCi0vLyBieSB0aGUgbGF5b3V0IHRl
c3RzIGluIGZhc3QvcmVwYWludC4gVGhlIGFscGhhIHZhbHVlIG1hdGNoZXMgdXBzdHJlYW0uCi12
b2lkIFdlYlZpZXdIb3N0OjpkaXNwbGF5UmVwYWludE1hc2soKQotewotICAgIGNhbnZhcygpLT5k
cmF3QVJHQigxNjcsIDAsIDAsIDApOwotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlZpZXdIb3N0LmgKaW5kZXggZjczMDJlZTJjZTAzM2Y3Nzk2YTg5OWQ5YTdhZWYwYzg5ZGMx
NWM2NC4uNTY0MzRmNzAzOTQ3MmIyMDUxYTRlYjcwZGZmOTU0ODQ0YWM3MDM5OSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCkBAIC04OCwxMiArODgsNiBA
QCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1Ymxp
YyBXZWJLaXQ6OldlYkZyYW1lQ2xpZW50LAogICAgIHZvaWQgcmVzZXQoKTsKICAgICB2b2lkIHNl
dFBlbmRpbmdFeHRyYURhdGEoUGFzc093blB0cjxUZXN0U2hlbGxFeHRyYURhdGE+KTsKIAotICAg
IHZvaWQgcGFpbnRSZWN0KGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOwotICAgIHZvaWQgcGFpbnRJ
bnZhbGlkYXRlZFJlZ2lvbigpOwotICAgIHZvaWQgcGFpbnRQYWdlc1dpdGhCb3VuZGFyaWVzKCk7
Ci0gICAgU2tDYW52YXMqIGNhbnZhcygpOwotICAgIHZvaWQgZGlzcGxheVJlcGFpbnRNYXNrKCk7
Ci0KICAgICBUZXN0TmF2aWdhdGlvbkNvbnRyb2xsZXIqIG5hdmlnYXRpb25Db250cm9sbGVyKCkg
eyByZXR1cm4gbV9uYXZpZ2F0aW9uQ29udHJvbGxlci5nZXQoKTsgfQogCiAgICAgdm9pZCBjbG9z
ZVdpZGdldCgpOwpAQCAtMTU3LDggKzE1MSw2IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGlj
IFdlYktpdDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVDbGllbnQsCiAg
ICAgdmlydHVhbCB2b2lkIHNldE1vY2tTcGVlY2hSZWNvZ25pdGlvbkVycm9yKGNvbnN0IHN0ZDo6
c3RyaW5nJiwgY29uc3Qgc3RkOjpzdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wg
d2FzTW9ja1NwZWVjaFJlY29nbml0aW9uQWJvcnRlZCgpIE9WRVJSSURFOwogI2VuZGlmCi0gICAg
dmlydHVhbCB2b2lkIGRpc3BsYXkoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGxh
eUludmFsaWRhdGVkUmVnaW9uKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHRlc3RGaW5p
c2hlZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0ZXN0VGltZWRPdXQoKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGJvb2wgaXNCZWluZ0RlYnVnZ2VkKCkgT1ZFUlJJREU7CkBAIC0zMDUs
OCArMjk3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByaW50RnJhbWVEZXNjcmlwdGlvbihXZWJL
aXQ6OldlYkZyYW1lKik7CiAKICAgICBib29sIGhhc1dpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzV2luZG93OyB9Ci0gICAgdm9pZCByZXNldFNjcm9sbFJlY3QoKTsKLSAgICB2b2lkIGRpc2Nh
cmRCYWNraW5nU3RvcmUoKTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgd2Via2l0
X3N1cHBvcnQ6OlRlc3RNZWRpYVN0cmVhbUNsaWVudCogdGVzdE1lZGlhU3RyZWFtQ2xpZW50KCk7
CkBAIC0zNDAsMTAgKzMzMCw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjpzdHJpbmcgbV9lZGl0Q29t
bWFuZE5hbWU7CiAgICAgc3RkOjpzdHJpbmcgbV9lZGl0Q29tbWFuZFZhbHVlOwogCi0gICAgLy8g
UGFpbnRpbmcuCi0gICAgT3duUHRyPFNrQ2FudmFzPiBtX2NhbnZhczsKLSAgICBXZWJLaXQ6Oldl
YlJlY3QgbV9wYWludFJlY3Q7Ci0gICAgYm9vbCBtX2lzUGFpbnRpbmc7CiAKICAgICBPd25QdHI8
V2ViS2l0OjpXZWJDb250ZXh0TWVudURhdGE+IG1fbGFzdENvbnRleHRNZW51RGF0YTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188131</attachid>
            <date>2013-02-13 11:39:06 -0800</date>
            <delta_ts>2013-02-14 01:36:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109686-20130213203534.patch</filename>
            <type>text/plain</type>
            <size>35593</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNzQyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTIwOGUxMTE3NDk2ZTE0OTNkZTBmYTkyMzAwZWM5ZGJj
ZWJmYzA1Yy4uY2Q2ZTA3OTBkMDFhYTBlYTFkNmU4NTRjNWI0ZjdjNzA2OTU2ZDFiYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYz
IEBACisyMDEzLTAyLTEzICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBwaXhlbCBnZW5lcmF0aW9uIGxvZ2ljIHRvIFRlc3RS
dW5uZXIgbGlicmFyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA5Njg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUu
Z3lwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYlRlc3REZWxlZ2F0ZS5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1Ymxp
Yy9XZWJUZXN0UHJveHkuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eTo6
c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RSdW5uZXIuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rl
c3RJbnRlcmZhY2VzLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RJbnRlcmZhY2Vz
Ojp+VGVzdEludGVyZmFjZXMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdEludGVyZmFj
ZXM6OnNldFdlYlZpZXcpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdEludGVyZmFjZXM6
OnByb3h5KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFRlc3RJbnRlcmZhY2VzKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcDoKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldFdlYlZpZXcpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpkaXNwbGF5
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OmRpc3BsYXlJbnZhbGlkYXRl
ZFJlZ2lvbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvVGVzdFJ1bm5lci5oOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChUZXN0
UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9XZWJUZXN0SW50ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0
SW50ZXJmYWNlczo6c2V0V2ViVmlldyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRlc3RQcm94eUJhc2U6OnJlc2V0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Oldl
YlRlc3RQcm94eUJhc2U6OmNhcHR1cmVQaXhlbHMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjpwYWludFJlY3QpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6cGFpbnRJbnZhbGlkYXRl
ZFJlZ2lvbik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjpwYWlu
dFBhZ2VzV2l0aEJvdW5kYXJpZXMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFBy
b3h5QmFzZTo6Y2FudmFzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJh
c2U6OmRpc3BsYXlSZXBhaW50TWFzayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0
UHJveHlCYXNlOjpkaXNwbGF5KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94
eUJhc2U6OmRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lvbik6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpXZWJUZXN0UHJveHlCYXNlOjpkaXNjYXJkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnNldFdpbmRvd1JlY3QpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHA6CisgICAgICAgIChU
ZXN0U2hlbGw6OmNyZWF0ZU1haW5XaW5kb3cpOgorICAgICAgICAoVGVzdFNoZWxsOjp+VGVzdFNo
ZWxsKToKKyAgICAgICAgKFRlc3RTaGVsbDo6c2hvd0RldlRvb2xzKToKKyAgICAgICAgKFRlc3RT
aGVsbDo6Y2xvc2VEZXZUb29scyk6CisgICAgICAgIChUZXN0U2hlbGw6OmR1bXApOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdl
YlZpZXdIb3N0OjpzZXRXaW5kb3dSZWN0KToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpzZXREZXZp
Y2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJWaWV3SG9zdDo6cmVzZXQpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6CisgICAgICAgIChXZWJWaWV3
SG9zdCk6CisKIDIwMTMtMDItMTMgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBbV0syXSBSZW1vdmUgd2ViIGludGVudHMgY2FsbGJhY2tzCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRl
clRyZWUuZ3lwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBS
ZW5kZXJUcmVlLmd5cAppbmRleCAwODM5Mzk2YjgyYjE0M2NhYjBkMGZlMzIyZmFhMDBhNDVjMzE4
MTM5Li5kNDM4ZTM3ZGMwMzFmZTI1OTY0NDY2MGZhNTAyOWY4NWVjMDZlNDk1IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUu
Z3lwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVu
ZGVyVHJlZS5neXAKQEAgLTExNCw2ICsxMTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdkZXBlbmRlbmNpZXMnOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8
KGNocm9taXVtX3NyY19kaXIpL2Jhc2UvYmFzZS5neXA6YmFzZScsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2J1aWxkL3RlbXBfZ3lwL2dvb2ds
ZXVybC5neXA6Z29vZ2xldXJsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwo
Y2hyb21pdW1fc3JjX2Rpcikvc2tpYS9za2lhLmd5cDpza2lhJywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdjgvdG9vbHMvZ3lwL3Y4Lmd5cDp2
OCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6IHsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0
ZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
VGVzdERlbGVnYXRlLmgKaW5kZXggODJiYWI1NzgyMTBlNWM4NjEyZGIwN2M2MDUzMjdhODI0NDEy
N2M1Yi4uZWExMWIyY2IxMTRhN2QzYzYwYzg0OWJhYzE4NGYyZjc4YTM3M2Q0OCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVz
dERlbGVnYXRlLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmgKQEAgLTEwMSw4ICsxMDEsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGFkZE1vY2tTcGVlY2hSZWNvZ25pdGlvblJlc3VsdChjb25zdCBzdGQ6
OnN0cmluZyYsIGRvdWJsZSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE1vY2tTcGVlY2hSZWNv
Z25pdGlvbkVycm9yKGNvbnN0IHN0ZDo6c3RyaW5nJiwgY29uc3Qgc3RkOjpzdHJpbmcmKSB7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgd2FzTW9ja1NwZWVjaFJlY29nbml0aW9uQWJvcnRlZCgpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BsYXkoKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGxheUludmFsaWRhdGVkUmVnaW9uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHRl
c3RGaW5pc2hlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0ZXN0VGltZWRPdXQoKSB7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNCZWluZ0RlYnVnZ2VkKCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dl
YlRlc3RJbnRlcmZhY2VzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oCmluZGV4IDAwNjIwM2NjYTIwYWIyZWEwOTg0
MTc1MDYwZTY4NDhmZjc4YzQwNDAuLjQ1MmMxNDkxZTVhYWI4Mzk2MWIyZTYxNjQzODIzMDdmNjdk
YmYyYTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaApAQCAtNDgsNiAr
NDgsNyBAQCBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIGNsYXNzIFRlc3RJbnRlcmZhY2Vz
OwogY2xhc3MgV2ViVGVzdERlbGVnYXRlOworY2xhc3MgV2ViVGVzdFByb3h5QmFzZTsKIGNsYXNz
IFdlYlRlc3RSdW5uZXI7CiAKIGNsYXNzIFdFQlRFU1RSVU5ORVJfRVhQT1JUIFdlYlRlc3RJbnRl
cmZhY2VzIHsKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogICAgIFdlYlRlc3RJbnRlcmZhY2Vz
KCk7CiAgICAgfldlYlRlc3RJbnRlcmZhY2VzKCk7CiAKLSAgICB2b2lkIHNldFdlYlZpZXcoV2Vi
S2l0OjpXZWJWaWV3Kik7CisgICAgdm9pZCBzZXRXZWJWaWV3KFdlYktpdDo6V2ViVmlldyosIFdl
YlRlc3RQcm94eUJhc2UqKTsKICAgICB2b2lkIHNldERlbGVnYXRlKFdlYlRlc3REZWxlZ2F0ZSop
OwogICAgIHZvaWQgYmluZFRvKFdlYktpdDo6V2ViRnJhbWUqKTsKICAgICB2b2lkIHJlc2V0QWxs
KCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3B1YmxpYy9XZWJUZXN0UHJveHkuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oCmluZGV4IGIyMmVkOTQ5ZjhiNzZkYTJhMThm
NDY1NTM5M2I3ZTcwNzI5NTYzMjUuLjk3ZWM2OTUxYWE2YTMxNjI1ZWMzMzc5OTQ0YWU5NjBkYjY2
MzZmMjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvcHVibGljL1dlYlRlc3RQcm94eS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oCkBAIC03Myw2ICs3Myw4IEBAIHN0
cnVjdCBXZWJTaXplOwogc3RydWN0IFdlYldpbmRvd0ZlYXR1cmVzOwogfQogCitjbGFzcyBTa0Nh
bnZhczsKKwogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCiBjbGFzcyBTcGVsbENoZWNrQ2xp
ZW50OwpAQCAtOTEsMTMgKzkzLDE0IEBAIHB1YmxpYzoKIAogICAgIFdlYktpdDo6V2ViU3BlbGxD
aGVja0NsaWVudCAqc3BlbGxDaGVja0NsaWVudCgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRQYWlu
dFJlY3QoY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7Ci0gICAgV2ViS2l0OjpXZWJSZWN0IHBhaW50
UmVjdCgpIGNvbnN0OwotCiAgICAgc3RkOjpzdHJpbmcgY2FwdHVyZVRyZWUoYm9vbCBkZWJ1Z1Jl
bmRlclRyZWUpOworICAgIFNrQ2FudmFzKiBjYXB0dXJlUGl4ZWxzKCk7CiAKICAgICB2b2lkIHNl
dExvZ0NvbnNvbGVPdXRwdXQoYm9vbCBlbmFibGVkKTsKIAorICAgIHZvaWQgZGlzcGxheSgpOwor
ICAgIHZvaWQgZGlzcGxheUludmFsaWRhdGVkUmVnaW9uKCk7CisKIHByb3RlY3RlZDoKICAgICBX
ZWJUZXN0UHJveHlCYXNlKCk7CiAgICAgfldlYlRlc3RQcm94eUJhc2UoKTsKQEAgLTEwOCw2ICsx
MTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpOwogICAgIHZv
aWQgc2V0V2luZG93UmVjdChjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKICAgICB2b2lkIHNob3co
V2ViS2l0OjpXZWJOYXZpZ2F0aW9uUG9saWN5KTsKKyAgICB2b2lkIHNldERldmljZVNjYWxlRmFj
dG9yKGZsb2F0KTsKICAgICB2b2lkIGRpZEF1dG9SZXNpemUoY29uc3QgV2ViS2l0OjpXZWJTaXpl
Jik7CiAgICAgdm9pZCBwb3N0QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihjb25zdCBXZWJLaXQ6
OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmLCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb24pOwogICAgIHZvaWQgc3RhcnREcmFnZ2luZyhXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3Qg
V2ViS2l0OjpXZWJEcmFnRGF0YSYsIFdlYktpdDo6V2ViRHJhZ09wZXJhdGlvbnNNYXNrLCBjb25z
dCBXZWJLaXQ6OldlYkltYWdlJiwgY29uc3QgV2ViS2l0OjpXZWJQb2ludCYpOwpAQCAtMTY3LDYg
KzE3MSwxMiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBsb2NhdGlvbkNoYW5n
ZURvbmUoV2ViS2l0OjpXZWJGcmFtZSopOworICAgIHZvaWQgZGlzY2FyZEJhY2tpbmdTdG9yZSgp
OworICAgIHZvaWQgcGFpbnRSZWN0KGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOworICAgIHZvaWQg
cGFpbnRJbnZhbGlkYXRlZFJlZ2lvbigpOworICAgIHZvaWQgcGFpbnRQYWdlc1dpdGhCb3VuZGFy
aWVzKCk7CisgICAgU2tDYW52YXMqIGNhbnZhcygpOworICAgIHZvaWQgZGlzcGxheVJlcGFpbnRN
YXNrKCk7CiAKICAgICBUZXN0SW50ZXJmYWNlcyogbV90ZXN0SW50ZXJmYWNlczsKICAgICBXZWJU
ZXN0RGVsZWdhdGUqIG1fZGVsZWdhdGU7CkBAIC0xNzQsNyArMTg0LDEwIEBAIHByaXZhdGU6CiAg
ICAgc3RkOjphdXRvX3B0cjxTcGVsbENoZWNrQ2xpZW50PiBtX3NwZWxsY2hlY2s7CiAgICAgc3Rk
OjphdXRvX3B0cjxXZWJVc2VyTWVkaWFDbGllbnRNb2NrPiBtX3VzZXJNZWRpYUNsaWVudDsKIAor
ICAgIC8vIFBhaW50aW5nLgorICAgIHN0ZDo6YXV0b19wdHI8U2tDYW52YXM+IG1fY2FudmFzOwog
ICAgIFdlYktpdDo6V2ViUmVjdCBtX3BhaW50UmVjdDsKKyAgICBib29sIG1faXNQYWludGluZzsK
ICAgICBzdGQ6Om1hcDx1bnNpZ25lZCwgc3RkOjpzdHJpbmc+IG1fcmVzb3VyY2VJZGVudGlmaWVy
TWFwOwogCiAgICAgYm9vbCBtX2xvZ0NvbnNvbGVPdXRwdXQ7CkBAIC0yMjMsNiArMjM2LDExIEBA
IHB1YmxpYzoKICAgICAgICAgV2ViVGVzdFByb3h5QmFzZTo6c2hvdyhwb2xpY3kpOwogICAgICAg
ICBCYXNlOjpzaG93KHBvbGljeSk7CiAgICAgfQorICAgIHZpcnR1YWwgdm9pZCBzZXREZXZpY2VT
Y2FsZUZhY3RvcihmbG9hdCBmYWN0b3IpCisgICAgeworICAgICAgICBXZWJUZXN0UHJveHlCYXNl
OjpzZXREZXZpY2VTY2FsZUZhY3RvcihmYWN0b3IpOworICAgICAgICBCYXNlOjpzZXREZXZpY2VT
Y2FsZUZhY3RvcihmYWN0b3IpOworICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQXV0b1Jlc2l6
ZShjb25zdCBXZWJLaXQ6OldlYlNpemUmIG5ld1NpemUpCiAgICAgewogICAgICAgICBXZWJUZXN0
UHJveHlCYXNlOjpkaWRBdXRvUmVzaXplKG5ld1NpemUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFJ1bm5lci5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFJ1
bm5lci5oCmluZGV4IDg4ZDRhZTViN2E2NjU4YzA5OWQ2OTFmOTBjMTUyNzZlNGM2ODU5OWUuLjEx
ZDJmMzQ1ZDhhM2VkOTJmZGVkMWI2MjBmOGJhZjc2OTU1ZjYxZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RSdW5uZXIu
aAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9X
ZWJUZXN0UnVubmVyLmgKQEAgLTQ0LDEwICs0NCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkRHVtcEFzQXVkaW8oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBXZWJL
aXQ6OldlYkFycmF5QnVmZmVyVmlldyogYXVkaW9EYXRhKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgV2ViS2l0OjpXZWJQZXJtaXNzaW9uQ2xpZW50KiB3ZWJQZXJtaXNzaW9ucygpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcFNlbGVjdGlvblJlY3QoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBib29sIHRlc3RSZXBhaW50KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBzd2VlcEhvcml6b250YWxseSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNQ
cmludGluZygpIGNvbnN0ID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNw
cAppbmRleCBiNDQzZGY1MGYzOGI2ZGY2NjJhMzEzYjlhMjRlMDYzZmVhYjE5MmIwLi5hZDdlMmRl
NGY2MjUwZDQzMDllNTRjZDFmOTkyYjJjY2M5NTkxZWQ1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVy
ZmFjZXMuY3BwCkBAIC02Myw3ICs2Myw3IEBAIFRlc3RJbnRlcmZhY2VzOjp+VGVzdEludGVyZmFj
ZXMoKQogICAgIG1fZXZlbnRTZW5kZXItPnNldFdlYlZpZXcoMCk7CiAgICAgLy8gbV9nYW1lcGFk
Q29udHJvbGxlciBkb2Vzbid0IGRlcGVuZCBvbiBXZWJWaWV3LgogICAgIG1fdGV4dElucHV0Q29u
dHJvbGxlci0+c2V0V2ViVmlldygwKTsKLSAgICBtX3Rlc3RSdW5uZXItPnNldFdlYlZpZXcoMCk7
CisgICAgbV90ZXN0UnVubmVyLT5zZXRXZWJWaWV3KDAsIDApOwogCiAgICAgbV9hY2Nlc3NpYmls
aXR5Q29udHJvbGxlci0+c2V0RGVsZWdhdGUoMCk7CiAgICAgbV9ldmVudFNlbmRlci0+c2V0RGVs
ZWdhdGUoMCk7CkBAIC03MiwxNCArNzIsMTUgQEAgVGVzdEludGVyZmFjZXM6On5UZXN0SW50ZXJm
YWNlcygpCiAgICAgbV90ZXN0UnVubmVyLT5zZXREZWxlZ2F0ZSgwKTsKIH0KIAotdm9pZCBUZXN0
SW50ZXJmYWNlczo6c2V0V2ViVmlldyhXZWJWaWV3KiB3ZWJWaWV3KQordm9pZCBUZXN0SW50ZXJm
YWNlczo6c2V0V2ViVmlldyhXZWJWaWV3KiB3ZWJWaWV3LCBXZWJUZXN0UHJveHlCYXNlKiBwcm94
eSkKIHsKICAgICBtX3dlYlZpZXcgPSB3ZWJWaWV3OworICAgIG1fcHJveHkgPSBwcm94eTsKICAg
ICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLT5zZXRXZWJWaWV3KHdlYlZpZXcpOwogICAgIG1f
ZXZlbnRTZW5kZXItPnNldFdlYlZpZXcod2ViVmlldyk7CiAgICAgLy8gbV9nYW1lcGFkQ29udHJv
bGxlciBkb2Vzbid0IGRlcGVuZCBvbiBXZWJWaWV3LgogICAgIG1fdGV4dElucHV0Q29udHJvbGxl
ci0+c2V0V2ViVmlldyh3ZWJWaWV3KTsKLSAgICBtX3Rlc3RSdW5uZXItPnNldFdlYlZpZXcod2Vi
Vmlldyk7CisgICAgbV90ZXN0UnVubmVyLT5zZXRXZWJWaWV3KHdlYlZpZXcsIHByb3h5KTsKIH0K
IAogdm9pZCBUZXN0SW50ZXJmYWNlczo6c2V0RGVsZWdhdGUoV2ViVGVzdERlbGVnYXRlKiBkZWxl
Z2F0ZSkKQEAgLTE1Niw0ICsxNTcsOSBAQCBXZWJUZXN0RGVsZWdhdGUqIFRlc3RJbnRlcmZhY2Vz
OjpkZWxlZ2F0ZSgpCiAgICAgcmV0dXJuIG1fZGVsZWdhdGU7CiB9CiAKK1dlYlRlc3RQcm94eUJh
c2UqIFRlc3RJbnRlcmZhY2VzOjpwcm94eSgpCit7CisgICAgcmV0dXJuIG1fcHJveHk7Cit9CisK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1Rlc3RJbnRlcmZhY2VzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oCmluZGV4IGVjM2ExZGUyODY5OGNmYTBlNzY4MDlh
YjQ3MjQwOTg2ZDA4YzNjMzUuLjlkMmU4YzMxNzMwYTQwMDZiNTdjMTIyY2Q2MzQyNjMwZmE4NGEy
ZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1Rlc3RJbnRlcmZhY2VzLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaApAQCAtNDcsMTMgKzQ3LDE0IEBAIGNsYXNz
IEdhbWVwYWRDb250cm9sbGVyOwogY2xhc3MgVGVzdFJ1bm5lcjsKIGNsYXNzIFRleHRJbnB1dENv
bnRyb2xsZXI7CiBjbGFzcyBXZWJUZXN0RGVsZWdhdGU7CitjbGFzcyBXZWJUZXN0UHJveHlCYXNl
OwogCiBjbGFzcyBUZXN0SW50ZXJmYWNlcyB7CiBwdWJsaWM6CiAgICAgVGVzdEludGVyZmFjZXMo
KTsKICAgICB+VGVzdEludGVyZmFjZXMoKTsKIAotICAgIHZvaWQgc2V0V2ViVmlldyhXZWJLaXQ6
OldlYlZpZXcqKTsKKyAgICB2b2lkIHNldFdlYlZpZXcoV2ViS2l0OjpXZWJWaWV3KiwgV2ViVGVz
dFByb3h5QmFzZSopOwogICAgIHZvaWQgc2V0RGVsZWdhdGUoV2ViVGVzdERlbGVnYXRlKik7CiAg
ICAgdm9pZCBiaW5kVG8oV2ViS2l0OjpXZWJGcmFtZSopOwogICAgIHZvaWQgcmVzZXRBbGwoKTsK
QEAgLTY1LDYgKzY2LDcgQEAgcHVibGljOgogICAgIFRlc3RSdW5uZXIqIHRlc3RSdW5uZXIoKTsK
ICAgICBXZWJLaXQ6OldlYlZpZXcqIHdlYlZpZXcoKTsKICAgICBXZWJUZXN0RGVsZWdhdGUqIGRl
bGVnYXRlKCk7CisgICAgV2ViVGVzdFByb3h5QmFzZSogcHJveHkoKTsKIAogCiBwcml2YXRlOgpA
QCAtNzUsNiArNzcsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6YXV0b19wdHI8VGVzdFJ1bm5lcj4g
bV90ZXN0UnVubmVyOwogICAgIFdlYktpdDo6V2ViVmlldyogbV93ZWJWaWV3OwogICAgIFdlYlRl
c3REZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKKyAgICBXZWJUZXN0UHJveHlCYXNlKiBtX3Byb3h5Owog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAppbmRleCBmODk4ZTFjZTMwYjhkZGMzMjUwNDM4
NDMzNTRhZDNhMDM0ZjhkMGJmLi5kM2E3YzA0OGJkNjMyM2ExN2M1MDhlYjhlMjNiMDIxZmU0NmVm
Njk5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcApAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUg
IldlYlN1cnJvdW5kaW5nVGV4dC5oIgogI2luY2x1ZGUgIldlYlRhc2suaCIKICNpbmNsdWRlICJX
ZWJUZXN0RGVsZWdhdGUuaCIKKyNpbmNsdWRlICJXZWJUZXN0UHJveHkuaCIKICNpbmNsdWRlICJX
ZWJWaWV3LmgiCiAjaW5jbHVkZSAidjgvaW5jbHVkZS92OC5oIgogI2luY2x1ZGUgPGxpbWl0cz4K
QEAgLTMzMCw2ICszMzEsMTIgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXREZWxlZ2F0ZShXZWJUZXN0
RGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIG1fd2ViUGVybWlzc2lvbnMtPnNldERlbGVnYXRlKGRl
bGVnYXRlKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRXZWJWaWV3KFdlYlZpZXcqIHdlYlZp
ZXcsIFdlYlRlc3RQcm94eUJhc2UqIHByb3h5KQoreworICAgIG1fd2ViVmlldyA9IHdlYlZpZXc7
CisgICAgbV9wcm94eSA9IHByb3h5OworfQorCiB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKIHsK
ICAgICBpZiAobV93ZWJWaWV3KSB7CkBAIC0xODIxLDEzICsxODI4LDEzIEBAIHZvaWQgVGVzdFJ1
bm5lcjo6d2FzTW9ja1NwZWVjaFJlY29nbml0aW9uQWJvcnRlZChjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6ZGlzcGxheShjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewotICAgIG1fZGVsZWdhdGUt
PmRpc3BsYXkoKTsKKyAgICBtX3Byb3h5LT5kaXNwbGF5KCk7CiAgICAgcmVzdWx0LT5zZXROdWxs
KCk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6ZGlzcGxheUludmFsaWRhdGVkUmVnaW9uKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7Ci0gICAg
bV9kZWxlZ2F0ZS0+ZGlzcGxheUludmFsaWRhdGVkUmVnaW9uKCk7CisgICAgbV9wcm94eS0+ZGlz
cGxheUludmFsaWRhdGVkUmVnaW9uKCk7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rl
c3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RSdW5uZXIuaAppbmRleCA2NjA1ODQ1ODAzYzRmMmYwOTRkNWJkNmU4ZmY1NDEzOGRjN2Rh
ZjRlLi45ZDY4MzJlNzJhYTAyOTUzMjk0ODhlNDUzNTA3YjQyOWQwMTRhOTJhIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVy
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFJ1bm5lci5oCkBAIC01NSw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIAog
Y2xhc3MgV2ViUGVybWlzc2lvbnM7CiBjbGFzcyBXZWJUZXN0RGVsZWdhdGU7CitjbGFzcyBXZWJU
ZXN0UHJveHlCYXNlOwogCiBjbGFzcyBUZXN0UnVubmVyIDogcHVibGljIFdlYlRlc3RSdW5uZXIs
IHB1YmxpYyBDcHBCb3VuZENsYXNzIHsKIHB1YmxpYzoKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgflRlc3RSdW5uZXIoKTsKIAogICAgIHZvaWQgc2V0RGVsZWdhdGUoV2Vi
VGVzdERlbGVnYXRlKik7Ci0gICAgdm9pZCBzZXRXZWJWaWV3KFdlYktpdDo6V2ViVmlldyogd2Vi
VmlldykgeyBtX3dlYlZpZXcgPSB3ZWJWaWV3OyB9CisgICAgdm9pZCBzZXRXZWJWaWV3KFdlYktp
dDo6V2ViVmlldyosIFdlYlRlc3RQcm94eUJhc2UqKTsKIAogICAgIHZvaWQgcmVzZXQoKTsKIApA
QCAtNzUsMTIgKzc2LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcEFz
QXVkaW8oKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGNvbnN0IFdlYktpdDo6V2ViQXJy
YXlCdWZmZXJWaWV3KiBhdWRpb0RhdGEoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdl
YktpdDo6V2ViUGVybWlzc2lvbkNsaWVudCogd2ViUGVybWlzc2lvbnMoKSBjb25zdCBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcFNlbGVjdGlvblJlY3QoKSBjb25zdCBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIGJvb2wgdGVzdFJlcGFpbnQoKSBjb25zdCBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIGJvb2wgc3dlZXBIb3Jpem9udGFsbHkoKSBjb25zdCBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIGJvb2wgaXNQcmludGluZygpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gTWV0aG9k
cyB1c2VkIGJ5IFdlYlRlc3RQcm94eUJhc2UuCisgICAgYm9vbCBzaG91bGREdW1wU2VsZWN0aW9u
UmVjdCgpIGNvbnN0OworICAgIGJvb2wgdGVzdFJlcGFpbnQoKSBjb25zdDsKKyAgICBib29sIHN3
ZWVwSG9yaXpvbnRhbGx5KCkgY29uc3Q7CisgICAgYm9vbCBpc1ByaW50aW5nKCkgY29uc3Q7CiAg
ICAgYm9vbCBzaG91bGREdW1wQXNUZXh0KCk7CiAgICAgYm9vbCBzaG91bGREdW1wQmFja0Zvcndh
cmRMaXN0KCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGREdW1wQ2hpbGRGcmFtZVNjcm9sbFBvc2l0
aW9ucygpIGNvbnN0OwpAQCAtNjU0LDYgKzY1NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJUZXN0
RGVsZWdhdGUqIG1fZGVsZWdhdGU7CiAgICAgV2ViS2l0OjpXZWJWaWV3KiBtX3dlYlZpZXc7Cisg
ICAgV2ViVGVzdFByb3h5QmFzZSogbV9wcm94eTsKIAogICAgIC8vIFRoaXMgaXMgbm9uLTAgSUZG
IGEgbG9hZCBpcyBpbiBwcm9ncmVzcy4KICAgICBXZWJLaXQ6OldlYkZyYW1lKiBtX3RvcExvYWRp
bmdGcmFtZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcAppbmRleCBiYzQzZDZh
YTU1N2IzNGZlZThmNTIzNDg1OTBmMGI2MjM3ZDcxYWFiLi45NTlhYjY2Y2U3NzliZjliMDM1NjY4
OGJjNTJkZTNmNzgwNWVmMjk5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3Bw
CkBAIC00OSw5ICs0OSw5IEBAIFdlYlRlc3RJbnRlcmZhY2VzOjp+V2ViVGVzdEludGVyZmFjZXMo
KQogewogfQogCi12b2lkIFdlYlRlc3RJbnRlcmZhY2VzOjpzZXRXZWJWaWV3KFdlYlZpZXcqIHdl
YlZpZXcpCit2b2lkIFdlYlRlc3RJbnRlcmZhY2VzOjpzZXRXZWJWaWV3KFdlYlZpZXcqIHdlYlZp
ZXcsIFdlYlRlc3RQcm94eUJhc2UqIHByb3h5KQogewotICAgIG1faW50ZXJmYWNlcy0+c2V0V2Vi
Vmlldyh3ZWJWaWV3KTsKKyAgICBtX2ludGVyZmFjZXMtPnNldFdlYlZpZXcod2ViVmlldywgcHJv
eHkpOwogfQogCiB2b2lkIFdlYlRlc3RJbnRlcmZhY2VzOjpzZXREZWxlZ2F0ZShXZWJUZXN0RGVs
ZWdhdGUqIGRlbGVnYXRlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAKaW5kZXggMzk4YjMyMmIx
MWZlNTM1MmU5NmYxN2Q2NjIyZGZiNjNjZWYzZDE0Mi4uOWFhM2M5NzJhZjlkNTZkOTRiMThiNDM0
YTNkZWUxZTM4NzljYmYxNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwCkBAIC01Nyw2ICs1
Nyw4IEBACiAjaW5jbHVkZSAiV2ViVGVzdFJ1bm5lci5oIgogI2luY2x1ZGUgIldlYlVzZXJNZWRp
YUNsaWVudE1vY2suaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCisvLyBGSVhNRTogSW5jbHVkaW5n
IHBsYXRmb3JtX2NhbnZhcy5oIGhlcmUgaXMgYSBsYXllcmluZyB2aW9sYXRpb24uCisjaW5jbHVk
ZSAic2tpYS9leHQvcGxhdGZvcm1fY2FudmFzLmgiCiAjaW5jbHVkZSA8Y2N0eXBlPgogI2luY2x1
ZGUgPHB1YmxpYy9XZWJDU3RyaW5nLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTEVycm9yLmg+
CkBAIC00MzYsNiArNDM4LDggQEAgdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpzZXREZWxlZ2F0ZShX
ZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlKQogdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpyZXNldCgp
CiB7CiAgICAgbV9wYWludFJlY3QgPSBXZWJSZWN0KCk7CisgICAgbV9jYW52YXMucmVzZXQoKTsK
KyAgICBtX2lzUGFpbnRpbmcgPSBmYWxzZTsKICAgICBtX3Jlc291cmNlSWRlbnRpZmllck1hcC5j
bGVhcigpOwogICAgIG1fbG9nQ29uc29sZU91dHB1dCA9IHRydWU7CiB9CkBAIC00NDUsMTYgKzQ0
OSw2IEBAIFdlYlNwZWxsQ2hlY2tDbGllbnQqIFdlYlRlc3RQcm94eUJhc2U6OnNwZWxsQ2hlY2tD
bGllbnQoKSBjb25zdAogICAgIHJldHVybiBtX3NwZWxsY2hlY2suZ2V0KCk7CiB9CiAKLXZvaWQg
V2ViVGVzdFByb3h5QmFzZTo6c2V0UGFpbnRSZWN0KGNvbnN0IFdlYlJlY3QmIHJlY3QpCi17Ci0g
ICAgbV9wYWludFJlY3QgPSByZWN0OwotfQotCi1XZWJSZWN0IFdlYlRlc3RQcm94eUJhc2U6OnBh
aW50UmVjdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFpbnRSZWN0OwotfQotCiBzdHJpbmcg
V2ViVGVzdFByb3h5QmFzZTo6Y2FwdHVyZVRyZWUoYm9vbCBkZWJ1Z1JlbmRlclRyZWUpCiB7CiAg
ICAgV2ViU2NyaXB0Q29udHJvbGxlcjo6Zmx1c2hDb25zb2xlTWVzc2FnZXMoKTsKQEAgLTQ4Mywx
MSArNDc3LDE2NCBAQCBzdHJpbmcgV2ViVGVzdFByb3h5QmFzZTo6Y2FwdHVyZVRyZWUoYm9vbCBk
ZWJ1Z1JlbmRlclRyZWUpCiAgICAgcmV0dXJuIGRhdGFVdGY4OwogfQogCitTa0NhbnZhcyogV2Vi
VGVzdFByb3h5QmFzZTo6Y2FwdHVyZVBpeGVscygpCit7CisgICAgbV90ZXN0SW50ZXJmYWNlcy0+
d2ViVmlldygpLT5sYXlvdXQoKTsKKyAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5l
cigpLT50ZXN0UmVwYWludCgpKSB7CisgICAgICAgIFdlYlNpemUgdmlld1NpemUgPSBtX3Rlc3RJ
bnRlcmZhY2VzLT53ZWJWaWV3KCktPnNpemUoKTsKKyAgICAgICAgaW50IHdpZHRoID0gdmlld1Np
emUud2lkdGg7CisgICAgICAgIGludCBoZWlnaHQgPSB2aWV3U2l6ZS5oZWlnaHQ7CisgICAgICAg
IGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCktPnN3ZWVwSG9yaXpvbnRhbGx5KCkp
IHsKKyAgICAgICAgICAgIGZvciAoV2ViUmVjdCBjb2x1bW4oMCwgMCwgMSwgaGVpZ2h0KTsgY29s
dW1uLnggPCB3aWR0aDsgY29sdW1uLngrKykKKyAgICAgICAgICAgICAgICBwYWludFJlY3QoY29s
dW1uKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoV2ViUmVjdCBsaW5lKDAs
IDAsIHdpZHRoLCAxKTsgbGluZS55IDwgaGVpZ2h0OyBsaW5lLnkrKykKKyAgICAgICAgICAgICAg
ICBwYWludFJlY3QobGluZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG1fdGVzdEludGVy
ZmFjZXMtPnRlc3RSdW5uZXIoKS0+aXNQcmludGluZygpKQorICAgICAgICBwYWludFBhZ2VzV2l0
aEJvdW5kYXJpZXMoKTsKKyAgICBlbHNlCisgICAgICAgIHBhaW50SW52YWxpZGF0ZWRSZWdpb24o
KTsKKworICAgIC8vIFNlZSBpZiB3ZSBuZWVkIHRvIGRyYXcgdGhlIHNlbGVjdGlvbiBib3VuZHMg
cmVjdC4gU2VsZWN0aW9uIGJvdW5kcworICAgIC8vIHJlY3QgaXMgdGhlIHJlY3QgZW5jbG9zaW5n
IHRoZSAocG9zc2libHkgdHJhbnNmb3JtZWQpIHNlbGVjdGlvbi4KKyAgICAvLyBUaGUgcmVjdCBz
aG91bGQgYmUgZHJhd24gYWZ0ZXIgZXZlcnl0aGluZyBpcyBsYWlkIG91dCBhbmQgcGFpbnRlZC4K
KyAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5zaG91bGREdW1wU2VsZWN0
aW9uUmVjdCgpKSB7CisgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgc2VsZWN0aW9uIHJlY3QgLSBk
cmF3IGEgcmVkIDFweCBib3JkZXIgZW5jbG9zaW5nIHJlY3QKKyAgICAgICAgV2ViUmVjdCB3ciA9
IG1fdGVzdEludGVyZmFjZXMtPndlYlZpZXcoKS0+bWFpbkZyYW1lKCktPnNlbGVjdGlvbkJvdW5k
c1JlY3QoKTsKKyAgICAgICAgaWYgKCF3ci5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIFJl
bmRlciBhIHJlZCByZWN0YW5nbGUgYm91bmRpbmcgc2VsZWN0aW9uIHJlY3QKKyAgICAgICAgICAg
IFNrUGFpbnQgcGFpbnQ7CisgICAgICAgICAgICBwYWludC5zZXRDb2xvcigweEZGRkYwMDAwKTsg
Ly8gRnVsbHkgb3BhcXVlIHJlZAorICAgICAgICAgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6
a1N0cm9rZV9TdHlsZSk7CisgICAgICAgICAgICBwYWludC5zZXRGbGFncyhTa1BhaW50OjprQW50
aUFsaWFzX0ZsYWcpOworICAgICAgICAgICAgcGFpbnQuc2V0U3Ryb2tlV2lkdGgoMS4wZik7Cisg
ICAgICAgICAgICBTa0lSZWN0IHJlY3Q7IC8vIEJvdW5kaW5nIHJlY3QKKyAgICAgICAgICAgIHJl
Y3Quc2V0KHdyLngsIHdyLnksIHdyLnggKyB3ci53aWR0aCwgd3IueSArIHdyLmhlaWdodCk7Cisg
ICAgICAgICAgICBjYW52YXMoKS0+ZHJhd0lSZWN0KHJlY3QsIHBhaW50KTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiBjYW52YXMoKTsKK30KKwogdm9pZCBXZWJUZXN0UHJveHlCYXNl
OjpzZXRMb2dDb25zb2xlT3V0cHV0KGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX2xvZ0NvbnNvbGVP
dXRwdXQgPSBlbmFibGVkOwogfQogCit2b2lkIFdlYlRlc3RQcm94eUJhc2U6OnBhaW50UmVjdChj
b25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIFdFQktJVF9BU1NFUlQoIW1faXNQYWludGluZyk7
CisgICAgV0VCS0lUX0FTU0VSVChjYW52YXMoKSk7CisgICAgbV9pc1BhaW50aW5nID0gdHJ1ZTsK
KyAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IG1fdGVzdEludGVyZmFjZXMtPndlYlZpZXco
KS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICBpbnQgc2NhbGVkWCA9IHN0YXRpY19jYXN0PGlu
dD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlY3QueCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAg
aW50IHNjYWxlZFkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PGZsb2F0PihyZWN0Lnkp
ICogZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIGludCBzY2FsZWRXaWR0aCA9IHN0YXRpY19jYXN0
PGludD4oY2VpbChzdGF0aWNfY2FzdDxmbG9hdD4ocmVjdC53aWR0aCkgKiBkZXZpY2VTY2FsZUZh
Y3RvcikpOworICAgIGludCBzY2FsZWRIZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHJlY3QuaGVpZ2h0KSAqIGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAg
V2ViUmVjdCBkZXZpY2VSZWN0KHNjYWxlZFgsIHNjYWxlZFksIHNjYWxlZFdpZHRoLCBzY2FsZWRI
ZWlnaHQpOworICAgIG1fdGVzdEludGVyZmFjZXMtPndlYlZpZXcoKS0+cGFpbnQoY2FudmFzKCks
IGRldmljZVJlY3QpOworICAgIG1faXNQYWludGluZyA9IGZhbHNlOworfQorCit2b2lkIFdlYlRl
c3RQcm94eUJhc2U6OnBhaW50SW52YWxpZGF0ZWRSZWdpb24oKQoreworICAgIG1fdGVzdEludGVy
ZmFjZXMtPndlYlZpZXcoKS0+YW5pbWF0ZSgwLjApOworICAgIG1fdGVzdEludGVyZmFjZXMtPndl
YlZpZXcoKS0+bGF5b3V0KCk7CisgICAgV2ViU2l6ZSB3aWRnZXRTaXplID0gbV90ZXN0SW50ZXJm
YWNlcy0+d2ViVmlldygpLT5zaXplKCk7CisgICAgV2ViUmVjdCBjbGllbnRSZWN0KDAsIDAsIHdp
ZGdldFNpemUud2lkdGgsIHdpZGdldFNpemUuaGVpZ2h0KTsKKworICAgIC8vIFBhaW50IHRoZSBj
YW52YXMgaWYgbmVjZXNzYXJ5LiBBbGxvdyBwYWludGluZyB0byBnZW5lcmF0ZSBleHRyYSByZWN0
cworICAgIC8vIGZvciB0aGUgZmlyc3QgdHdvIGNhbGxzLiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNh
dXNlIHNvbWUgV2ViQ29yZSByZW5kZXJpbmcKKyAgICAvLyBvYmplY3RzIHVwZGF0ZSB0aGVpciBs
YXlvdXQgb25seSB3aGVuIHBhaW50ZWQuCisgICAgLy8gU3RvcmUgdGhlIHRvdGFsIGFyZWEgcGFp
bnRlZCBpbiB0b3RhbF9wYWludC4gVGhlbiB0ZWxsIHRoZSBnZGsgd2luZG93CisgICAgLy8gdG8g
dXBkYXRlIHRoYXQgYXJlYSBhZnRlciB3ZSdyZSBkb25lIHBhaW50aW5nIGl0LgorICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgICAgIC8vIHJlY3QgPSBpbnRlcnNlY3QobV9w
YWludFJlY3QgLCBjbGllbnRSZWN0KQorICAgICAgICBXZWJSZWN0IGRhbWFnZVJlY3QgPSBtX3Bh
aW50UmVjdDsKKyAgICAgICAgaW50IGxlZnQgPSBtYXgoZGFtYWdlUmVjdC54LCBjbGllbnRSZWN0
LngpOworICAgICAgICBpbnQgdG9wID0gbWF4KGRhbWFnZVJlY3QueSwgY2xpZW50UmVjdC55KTsK
KyAgICAgICAgaW50IHJpZ2h0ID0gbWluKGRhbWFnZVJlY3QueCArIGRhbWFnZVJlY3Qud2lkdGgs
IGNsaWVudFJlY3QueCArIGNsaWVudFJlY3Qud2lkdGgpOworICAgICAgICBpbnQgYm90dG9tID0g
bWluKGRhbWFnZVJlY3QueSArIGRhbWFnZVJlY3QuaGVpZ2h0LCBjbGllbnRSZWN0LnkgKyBjbGll
bnRSZWN0LmhlaWdodCk7CisgICAgICAgIFdlYlJlY3QgcmVjdDsKKyAgICAgICAgaWYgKGxlZnQg
PCByaWdodCAmJiB0b3AgPCBib3R0b20pCisgICAgICAgICAgICByZWN0ID0gV2ViUmVjdChsZWZ0
LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9wKTsKKworICAgICAgICBtX3BhaW50UmVj
dCA9IFdlYlJlY3QoKTsKKyAgICAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIHBhaW50UmVjdChyZWN0KTsKKyAgICB9CisgICAgV0VCS0lUX0FT
U0VSVChtX3BhaW50UmVjdC5pc0VtcHR5KCkpOworfQorCit2b2lkIFdlYlRlc3RQcm94eUJhc2U6
OnBhaW50UGFnZXNXaXRoQm91bmRhcmllcygpCit7CisgICAgV0VCS0lUX0FTU0VSVCghbV9pc1Bh
aW50aW5nKTsKKyAgICBXRUJLSVRfQVNTRVJUKGNhbnZhcygpKTsKKyAgICBtX2lzUGFpbnRpbmcg
PSB0cnVlOworCisgICAgV2ViU2l6ZSBwYWdlU2l6ZUluUGl4ZWxzID0gbV90ZXN0SW50ZXJmYWNl
cy0+d2ViVmlldygpLT5zaXplKCk7CisgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gbV90ZXN0SW50
ZXJmYWNlcy0+d2ViVmlldygpLT5tYWluRnJhbWUoKTsKKworICAgIGludCBwYWdlQ291bnQgPSB3
ZWJGcmFtZS0+cHJpbnRCZWdpbihwYWdlU2l6ZUluUGl4ZWxzKTsKKyAgICBpbnQgdG90YWxIZWln
aHQgPSBwYWdlQ291bnQgKiAocGFnZVNpemVJblBpeGVscy5oZWlnaHQgKyAxKSAtIDE7CisKKyAg
ICBTa0NhbnZhcyogdGVzdENhbnZhcyA9IHNraWE6OlRyeUNyZWF0ZUJpdG1hcENhbnZhcyhwYWdl
U2l6ZUluUGl4ZWxzLndpZHRoLCB0b3RhbEhlaWdodCwgdHJ1ZSk7CisgICAgaWYgKHRlc3RDYW52
YXMpIHsKKyAgICAgICAgZGlzY2FyZEJhY2tpbmdTdG9yZSgpOworICAgICAgICBtX2NhbnZhcyA9
IHN0ZDo6YXV0b19wdHI8U2tDYW52YXM+KHRlc3RDYW52YXMpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHdlYkZyYW1lLT5wcmludEVuZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
d2ViRnJhbWUtPnByaW50UGFnZXNXaXRoQm91bmRhcmllcyhjYW52YXMoKSwgcGFnZVNpemVJblBp
eGVscyk7CisgICAgd2ViRnJhbWUtPnByaW50RW5kKCk7CisKKyAgICBtX2lzUGFpbnRpbmcgPSBm
YWxzZTsKK30KKworU2tDYW52YXMqIFdlYlRlc3RQcm94eUJhc2U6OmNhbnZhcygpCit7CisgICAg
aWYgKG1fY2FudmFzLmdldCgpKQorICAgICAgICByZXR1cm4gbV9jYW52YXMuZ2V0KCk7CisgICAg
V2ViU2l6ZSB3aWRnZXRTaXplID0gbV90ZXN0SW50ZXJmYWNlcy0+d2ViVmlldygpLT5zaXplKCk7
CisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBtX3Rlc3RJbnRlcmZhY2VzLT53ZWJWaWV3
KCktPmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgaW50IHNjYWxlZFdpZHRoID0gc3RhdGljX2Nh
c3Q8aW50PihjZWlsKHN0YXRpY19jYXN0PGZsb2F0Pih3aWRnZXRTaXplLndpZHRoKSAqIGRldmlj
ZVNjYWxlRmFjdG9yKSk7CisgICAgaW50IHNjYWxlZEhlaWdodCA9IHN0YXRpY19jYXN0PGludD4o
Y2VpbChzdGF0aWNfY2FzdDxmbG9hdD4od2lkZ2V0U2l6ZS5oZWlnaHQpICogZGV2aWNlU2NhbGVG
YWN0b3IpKTsKKyAgICBtX2NhbnZhcyA9IHN0ZDo6YXV0b19wdHI8U2tDYW52YXM+KHNraWE6OkNy
ZWF0ZUJpdG1hcENhbnZhcyhzY2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0LCB0cnVlKSk7CisgICAg
cmV0dXJuIG1fY2FudmFzLmdldCgpOworfQorCisvLyBQYWludHMgdGhlIGVudGlyZSBjYW52YXMg
YSBzZW1pLXRyYW5zcGFyZW50IGJsYWNrIChncmF5aXNoKS4gVGhpcyBpcyB1c2VkCisvLyBieSB0
aGUgbGF5b3V0IHRlc3RzIGluIGZhc3QvcmVwYWludC4gVGhlIGFscGhhIHZhbHVlIG1hdGNoZXMg
dXBzdHJlYW0uCit2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpc3BsYXlSZXBhaW50TWFzaygpCit7
CisgICAgY2FudmFzKCktPmRyYXdBUkdCKDE2NywgMCwgMCwgMCk7Cit9CisKK3ZvaWQgV2ViVGVz
dFByb3h5QmFzZTo6ZGlzcGxheSgpCit7CisgICAgY29uc3QgV2ViS2l0OjpXZWJTaXplJiBzaXpl
ID0gbV90ZXN0SW50ZXJmYWNlcy0+d2ViVmlldygpLT5zaXplKCk7CisgICAgV2ViUmVjdCByZWN0
KDAsIDAsIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0KTsKKyAgICBtX3BhaW50UmVjdCA9IHJlY3Q7
CisgICAgcGFpbnRJbnZhbGlkYXRlZFJlZ2lvbigpOworICAgIGRpc3BsYXlSZXBhaW50TWFzaygp
OworfQorCit2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lvbigp
Cit7CisgICAgcGFpbnRJbnZhbGlkYXRlZFJlZ2lvbigpOworICAgIGRpc3BsYXlSZXBhaW50TWFz
aygpOworfQorCit2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpc2NhcmRCYWNraW5nU3RvcmUoKQor
eworICAgIG1fY2FudmFzLnJlc2V0KCk7Cit9CisKIHZvaWQgV2ViVGVzdFByb3h5QmFzZTo6ZGlk
SW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViUmVjdCYgcmVjdCkKIHsKICAgICAvLyBtX3BhaW50UmVj
dCA9IG1fcGFpbnRSZWN0IFUgcmVjdApAQCAtNTI3LDYgKzY3NCwxMiBAQCB2b2lkIFdlYlRlc3RQ
cm94eUJhc2U6OnNob3coV2ViTmF2aWdhdGlvblBvbGljeSkKIHZvaWQgV2ViVGVzdFByb3h5QmFz
ZTo6c2V0V2luZG93UmVjdChjb25zdCBXZWJSZWN0JiByZWN0KQogewogICAgIHNjaGVkdWxlQ29t
cG9zaXRlKCk7CisgICAgZGlzY2FyZEJhY2tpbmdTdG9yZSgpOworfQorCit2b2lkIFdlYlRlc3RQ
cm94eUJhc2U6OnNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0KQoreworICAgIGRpc2NhcmRCYWNr
aW5nU3RvcmUoKTsKIH0KIAogdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpkaWRBdXRvUmVzaXplKGNv
bnN0IFdlYlNpemUmKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFNoZWxsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5j
cHAKaW5kZXggMWE2YmNkODdlODMzYTFiNjBjMDE3NWMzM2RhODMyYmM0MmE0ZTQ3NS4uYjRkOWMz
MzNlNDhhNjEzMDI1MGY5MDI4OWQ1ZWEyZGE2NjkzOGM4YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCkBAIC0xODUsMTYgKzE4NSwxNiBAQCB2b2lkIFRl
c3RTaGVsbDo6Y3JlYXRlTWFpbldpbmRvdygpCiAgICAgbV93ZWJWaWV3SG9zdCA9IGFkb3B0UHRy
KGNyZWF0ZU5ld1dpbmRvdyhXZWJVUkwoKSwgbV9kcnREZXZUb29sc0FnZW50LmdldCgpLCBtX3Rl
c3RJbnRlcmZhY2VzLmdldCgpKSk7CiAgICAgbV93ZWJWaWV3ID0gbV93ZWJWaWV3SG9zdC0+d2Vi
VmlldygpOwogICAgIG1fdGVzdEludGVyZmFjZXMtPnNldERlbGVnYXRlKG1fd2ViVmlld0hvc3Qu
Z2V0KCkpOwotICAgIG1fdGVzdEludGVyZmFjZXMtPnNldFdlYlZpZXcobV93ZWJWaWV3KTsKKyAg
ICBtX3Rlc3RJbnRlcmZhY2VzLT5zZXRXZWJWaWV3KG1fd2ViVmlldywgbV93ZWJWaWV3SG9zdC0+
cHJveHkoKSk7CiAgICAgbV9kcnREZXZUb29sc0FnZW50LT5zZXRXZWJWaWV3KG1fd2ViVmlldyk7
CiB9CiAKIFRlc3RTaGVsbDo6flRlc3RTaGVsbCgpCiB7CiAgICAgbV90ZXN0SW50ZXJmYWNlcy0+
c2V0RGVsZWdhdGUoMCk7Ci0gICAgbV90ZXN0SW50ZXJmYWNlcy0+c2V0V2ViVmlldygwKTsKKyAg
ICBtX3Rlc3RJbnRlcmZhY2VzLT5zZXRXZWJWaWV3KDAsIDApOwogICAgIG1fZGV2VG9vbHNUZXN0
SW50ZXJmYWNlcy0+c2V0RGVsZWdhdGUoMCk7Ci0gICAgbV9kZXZUb29sc1Rlc3RJbnRlcmZhY2Vz
LT5zZXRXZWJWaWV3KDApOworICAgIG1fZGV2VG9vbHNUZXN0SW50ZXJmYWNlcy0+c2V0V2ViVmll
dygwLCAwKTsKICAgICBtX2RydERldlRvb2xzQWdlbnQtPnNldFdlYlZpZXcoMCk7CiAgICAgaWYg
KG1fd2ViVmlld0hvc3QpCiAgICAgICAgIG1fd2ViVmlld0hvc3QtPnNodXRkb3duKCk7CkBAIC0y
MTcsNyArMjE3LDcgQEAgdm9pZCBUZXN0U2hlbGw6OnNob3dEZXZUb29scygpCiAgICAgICAgIG1f
ZGV2VG9vbHMtPndlYlZpZXcoKS0+c2V0dGluZ3MoKS0+c2V0TWVtb3J5SW5mb0VuYWJsZWQodHJ1
ZSk7CiAgICAgICAgIG1fZGV2VG9vbHMtPnByb3h5KCktPnNldExvZ0NvbnNvbGVPdXRwdXQoZmFs
c2UpOwogICAgICAgICBtX2RldlRvb2xzVGVzdEludGVyZmFjZXMtPnNldERlbGVnYXRlKG1fZGV2
VG9vbHMpOwotICAgICAgICBtX2RldlRvb2xzVGVzdEludGVyZmFjZXMtPnNldFdlYlZpZXcobV9k
ZXZUb29scy0+d2ViVmlldygpKTsKKyAgICAgICAgbV9kZXZUb29sc1Rlc3RJbnRlcmZhY2VzLT5z
ZXRXZWJWaWV3KG1fZGV2VG9vbHMtPndlYlZpZXcoKSwgbV9kZXZUb29scy0+cHJveHkoKSk7CiAg
ICAgICAgIEFTU0VSVChtX2RldlRvb2xzKTsKICAgICAgICAgY3JlYXRlRFJURGV2VG9vbHNDbGll
bnQobV9kcnREZXZUb29sc0FnZW50LmdldCgpKTsKICAgICB9CkBAIC0yMzEsNyArMjMxLDcgQEAg
dm9pZCBUZXN0U2hlbGw6OmNsb3NlRGV2VG9vbHMoKQogICAgICAgICBtX2RydERldlRvb2xzQWdl
bnQtPnJlc2V0KCk7CiAgICAgICAgIG1fZHJ0RGV2VG9vbHNDbGllbnQuY2xlYXIoKTsKICAgICAg
ICAgbV9kZXZUb29sc1Rlc3RJbnRlcmZhY2VzLT5zZXREZWxlZ2F0ZSgwKTsKLSAgICAgICAgbV9k
ZXZUb29sc1Rlc3RJbnRlcmZhY2VzLT5zZXRXZWJWaWV3KDApOworICAgICAgICBtX2RldlRvb2xz
VGVzdEludGVyZmFjZXMtPnNldFdlYlZpZXcoMCwgMCk7CiAgICAgICAgIGNsb3NlV2luZG93KG1f
ZGV2VG9vbHMpOwogICAgICAgICBtX2RldlRvb2xzID0gMDsKICAgICB9CkBAIC00MjcsNDMgKzQy
Nyw3IEBAIHZvaWQgVGVzdFNoZWxsOjpkdW1wKCkKICAgICAgICAgLy8gY29tbWFuZCBsaW5lIChm
b3IgdGhlIGR1bXAgcGl4ZWxzIGFyZ3VtZW50KSwgYW5kIHRoZSBNRDUgc3VtIHRvCiAgICAgICAg
IC8vIHN0ZG91dC4KICAgICAgICAgZHVtcGVkQW55dGhpbmcgPSB0cnVlOwotICAgICAgICBtX3dl
YlZpZXctPmxheW91dCgpOwotICAgICAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5l
cigpLT50ZXN0UmVwYWludCgpKSB7Ci0gICAgICAgICAgICBXZWJTaXplIHZpZXdTaXplID0gbV93
ZWJWaWV3LT5zaXplKCk7Ci0gICAgICAgICAgICBpbnQgd2lkdGggPSB2aWV3U2l6ZS53aWR0aDsK
LSAgICAgICAgICAgIGludCBoZWlnaHQgPSB2aWV3U2l6ZS5oZWlnaHQ7Ci0gICAgICAgICAgICBp
ZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5zd2VlcEhvcml6b250YWxseSgpKSB7
Ci0gICAgICAgICAgICAgICAgZm9yIChXZWJSZWN0IGNvbHVtbigwLCAwLCAxLCBoZWlnaHQpOyBj
b2x1bW4ueCA8IHdpZHRoOyBjb2x1bW4ueCsrKQotICAgICAgICAgICAgICAgICAgICBtX3dlYlZp
ZXdIb3N0LT5wYWludFJlY3QoY29sdW1uKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgZm9yIChXZWJSZWN0IGxpbmUoMCwgMCwgd2lkdGgsIDEpOyBsaW5lLnkgPCBoZWln
aHQ7IGxpbmUueSsrKQotICAgICAgICAgICAgICAgICAgICBtX3dlYlZpZXdIb3N0LT5wYWludFJl
Y3QobGluZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAobV90ZXN0SW50ZXJm
YWNlcy0+dGVzdFJ1bm5lcigpLT5pc1ByaW50aW5nKCkpCi0gICAgICAgICAgICBtX3dlYlZpZXdI
b3N0LT5wYWludFBhZ2VzV2l0aEJvdW5kYXJpZXMoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbV93ZWJWaWV3SG9zdC0+cGFpbnRJbnZhbGlkYXRlZFJlZ2lvbigpOwotCi0gICAgICAgIC8v
IFNlZSBpZiB3ZSBuZWVkIHRvIGRyYXcgdGhlIHNlbGVjdGlvbiBib3VuZHMgcmVjdC4gU2VsZWN0
aW9uIGJvdW5kcwotICAgICAgICAvLyByZWN0IGlzIHRoZSByZWN0IGVuY2xvc2luZyB0aGUgKHBv
c3NpYmx5IHRyYW5zZm9ybWVkKSBzZWxlY3Rpb24uCi0gICAgICAgIC8vIFRoZSByZWN0IHNob3Vs
ZCBiZSBkcmF3biBhZnRlciBldmVyeXRoaW5nIGlzIGxhaWQgb3V0IGFuZCBwYWludGVkLgotICAg
ICAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5zaG91bGREdW1wU2VsZWN0
aW9uUmVjdCgpKSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHNlbGVjdGlvbiByZWN0
IC0gZHJhdyBhIHJlZCAxcHggYm9yZGVyIGVuY2xvc2luZyByZWN0Ci0gICAgICAgICAgICBXZWJS
ZWN0IHdyID0gZnJhbWUtPnNlbGVjdGlvbkJvdW5kc1JlY3QoKTsKLSAgICAgICAgICAgIGlmICgh
d3IuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gUmVuZGVyIGEgcmVkIHJlY3Rhbmds
ZSBib3VuZGluZyBzZWxlY3Rpb24gcmVjdAotICAgICAgICAgICAgICAgIFNrUGFpbnQgcGFpbnQ7
Ci0gICAgICAgICAgICAgICAgcGFpbnQuc2V0Q29sb3IoMHhGRkZGMDAwMCk7IC8vIEZ1bGx5IG9w
YXF1ZSByZWQKLSAgICAgICAgICAgICAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tl
X1N0eWxlKTsKLSAgICAgICAgICAgICAgICBwYWludC5zZXRGbGFncyhTa1BhaW50OjprQW50aUFs
aWFzX0ZsYWcpOwotICAgICAgICAgICAgICAgIHBhaW50LnNldFN0cm9rZVdpZHRoKDEuMGYpOwot
ICAgICAgICAgICAgICAgIFNrSVJlY3QgcmVjdDsgLy8gQm91bmRpbmcgcmVjdAotICAgICAgICAg
ICAgICAgIHJlY3Quc2V0KHdyLngsIHdyLnksIHdyLnggKyB3ci53aWR0aCwgd3IueSArIHdyLmhl
aWdodCk7Ci0gICAgICAgICAgICAgICAgbV93ZWJWaWV3SG9zdC0+Y2FudmFzKCktPmRyYXdJUmVj
dChyZWN0LCBwYWludCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBkdW1w
SW1hZ2UobV93ZWJWaWV3SG9zdC0+Y2FudmFzKCkpOworICAgICAgICBkdW1wSW1hZ2UobV93ZWJW
aWV3SG9zdC0+cHJveHkoKS0+Y2FwdHVyZVBpeGVscygpKTsKICAgICB9CiAgICAgbV9wcmludGVy
LmhhbmRsZVRlc3RGb290ZXIoZHVtcGVkQW55dGhpbmcpOwogICAgIGZmbHVzaChzdGRvdXQpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IGZk
Y2I3ZWIzNmJmNjE5ZWMyNGFhMTg0ZTNiNDU1NGY2MjQ3MDIwZGIuLmYxZTgyY2RhYTY0NWU4ODY3
NWEzMzBkYzRlOGZhYjgzMzQ1N2MzNjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAgLTYwLDcgKzYwLDYgQEAKICNpbmNsdWRlICJXZWJTdG9y
YWdlTmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgIldlYldpbmRv
d0ZlYXR1cmVzLmgiCi0jaW5jbHVkZSAic2tpYS9leHQvcGxhdGZvcm1fY2FudmFzLmgiCiAjaW5j
bHVkZSAid2Via2l0L3N1cHBvcnQvdGVzdF9tZWRpYV9zdHJlYW1fY2xpZW50LmgiCiAjaW5jbHVk
ZSAid2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKICNpbmNsdWRlIDxjY3R5cGU+CkBA
IC00NjksNyArNDY4LDYgQEAgdm9pZCBXZWJWaWV3SG9zdDo6c2V0V2luZG93UmVjdChjb25zdCBX
ZWJSZWN0JiByZWN0KQogICAgICAgICBtX3dpbmRvd1JlY3QuaGVpZ2h0ID0gMSArIGJvcmRlcjI7
CiAgICAgaW50IHdpZHRoID0gbV93aW5kb3dSZWN0LndpZHRoIC0gYm9yZGVyMjsKICAgICBpbnQg
aGVpZ2h0ID0gbV93aW5kb3dSZWN0LmhlaWdodCAtIGJvcmRlcjI7Ci0gICAgZGlzY2FyZEJhY2tp
bmdTdG9yZSgpOwogICAgIHdlYldpZGdldCgpLT5yZXNpemUoV2ViU2l6ZSh3aWR0aCwgaGVpZ2h0
KSk7CiB9CiAKQEAgLTcyMiw3ICs3MjAsNiBAQCB2b2lkIFdlYlZpZXdIb3N0OjpzZXREYXRhYmFz
ZVF1b3RhKGludCBxdW90YSkKIHZvaWQgV2ViVmlld0hvc3Q6OnNldERldmljZVNjYWxlRmFjdG9y
KGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogewogICAgIHdlYlZpZXcoKS0+c2V0RGV2aWNlU2Nh
bGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIGRpc2NhcmRCYWNraW5nU3RvcmUoKTsK
IH0KIAogdm9pZCBXZWJWaWV3SG9zdDo6c2V0Rm9jdXMoYm9vbCBmb2N1c2VkKQpAQCAtODUwLDIx
ICs4NDcsNiBAQCBib29sIFdlYlZpZXdIb3N0Ojp3YXNNb2NrU3BlZWNoUmVjb2duaXRpb25BYm9y
dGVkKCkKIH0KICNlbmRpZgogCi12b2lkIFdlYlZpZXdIb3N0OjpkaXNwbGF5KCkKLXsKLSAgICBj
b25zdCBXZWJLaXQ6OldlYlNpemUmIHNpemUgPSB3ZWJWaWV3KCktPnNpemUoKTsKLSAgICBXZWJS
ZWN0IHJlY3QoMCwgMCwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpOwotICAgIHByb3h5KCktPnNl
dFBhaW50UmVjdChyZWN0KTsKLSAgICBwYWludEludmFsaWRhdGVkUmVnaW9uKCk7Ci0gICAgZGlz
cGxheVJlcGFpbnRNYXNrKCk7Ci19Ci0KLXZvaWQgV2ViVmlld0hvc3Q6OmRpc3BsYXlJbnZhbGlk
YXRlZFJlZ2lvbigpCi17Ci0gICAgcGFpbnRJbnZhbGlkYXRlZFJlZ2lvbigpOwotICAgIGRpc3Bs
YXlSZXBhaW50TWFzaygpOwotfQotCiB2b2lkIFdlYlZpZXdIb3N0Ojp0ZXN0RmluaXNoZWQoKQog
ewogICAgIG1fc2hlbGwtPnRlc3RGaW5pc2hlZCh0aGlzKTsKQEAgLTEwMDgsOCArOTkwLDYgQEAg
dm9pZCBXZWJWaWV3SG9zdDo6cmVzZXQoKQogICAgIG1fbGFzdFBhZ2VJZFVwZGF0ZWQgPSAtMTsK
ICAgICBtX2hhc1dpbmRvdyA9IGZhbHNlOwogICAgIG1faW5Nb2RhbExvb3AgPSBmYWxzZTsKLSAg
ICBtX2lzUGFpbnRpbmcgPSBmYWxzZTsKLSAgICBtX2NhbnZhcy5jbGVhcigpOwogI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCiAgICAgbV9wb2ludGVyTG9ja2VkID0gZmFsc2U7CiAgICAgbV9wb2lu
dGVyTG9ja1BsYW5uZWRSZXN1bHQgPSBQb2ludGVyTG9ja1dpbGxTdWNjZWVkOwpAQCAtMTIwMywx
MDkgKzExODMsMyBAQCB3ZWJraXRfc3VwcG9ydDo6VGVzdE1lZGlhU3RyZWFtQ2xpZW50KiBXZWJW
aWV3SG9zdDo6dGVzdE1lZGlhU3RyZWFtQ2xpZW50KCkKICAgICByZXR1cm4gbV90ZXN0TWVkaWFT
dHJlYW1DbGllbnQuZ2V0KCk7CiB9CiAjZW5kaWYKLQotLy8gUGFpbnRpbmcgZnVuY3Rpb25zIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci12b2lkIFdlYlZpZXdIb3N0OjpwYWludFJlY3QoY29uc3QgV2ViUmVjdCYgcmVjdCkKLXsKLSAg
ICBBU1NFUlQoIW1faXNQYWludGluZyk7Ci0gICAgQVNTRVJUKGNhbnZhcygpKTsKLSAgICBtX2lz
UGFpbnRpbmcgPSB0cnVlOwotICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gd2ViVmlldygp
LT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgIGludCBzY2FsZWRYID0gc3RhdGljX2Nhc3Q8aW50
PihzdGF0aWNfY2FzdDxmbG9hdD4ocmVjdC54KSAqIGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBp
bnQgc2NhbGVkWSA9IHN0YXRpY19jYXN0PGludD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlY3QueSkg
KiBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgaW50IHNjYWxlZFdpZHRoID0gc3RhdGljX2Nhc3Q8
aW50PihjZWlsKHN0YXRpY19jYXN0PGZsb2F0PihyZWN0LndpZHRoKSAqIGRldmljZVNjYWxlRmFj
dG9yKSk7Ci0gICAgaW50IHNjYWxlZEhlaWdodCA9IHN0YXRpY19jYXN0PGludD4oY2VpbChzdGF0
aWNfY2FzdDxmbG9hdD4ocmVjdC5oZWlnaHQpICogZGV2aWNlU2NhbGVGYWN0b3IpKTsKLSAgICBX
ZWJSZWN0IGRldmljZVJlY3Qoc2NhbGVkWCwgc2NhbGVkWSwgc2NhbGVkV2lkdGgsIHNjYWxlZEhl
aWdodCk7Ci0gICAgd2ViV2lkZ2V0KCktPnBhaW50KGNhbnZhcygpLCBkZXZpY2VSZWN0KTsKLSAg
ICBtX2lzUGFpbnRpbmcgPSBmYWxzZTsKLX0KLQotdm9pZCBXZWJWaWV3SG9zdDo6cGFpbnRJbnZh
bGlkYXRlZFJlZ2lvbigpCi17Ci0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQot
ICAgIHdlYldpZGdldCgpLT5hbmltYXRlKDAuMCk7Ci0jZW5kaWYKLSAgICB3ZWJXaWRnZXQoKS0+
bGF5b3V0KCk7Ci0gICAgV2ViU2l6ZSB3aWRnZXRTaXplID0gd2ViV2lkZ2V0KCktPnNpemUoKTsK
LSAgICBXZWJSZWN0IGNsaWVudFJlY3QoMCwgMCwgd2lkZ2V0U2l6ZS53aWR0aCwgd2lkZ2V0U2l6
ZS5oZWlnaHQpOwotCi0gICAgLy8gUGFpbnQgdGhlIGNhbnZhcyBpZiBuZWNlc3NhcnkuIEFsbG93
IHBhaW50aW5nIHRvIGdlbmVyYXRlIGV4dHJhIHJlY3RzCi0gICAgLy8gZm9yIHRoZSBmaXJzdCB0
d28gY2FsbHMuIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugc29tZSBXZWJDb3JlIHJlbmRlcmlu
ZwotICAgIC8vIG9iamVjdHMgdXBkYXRlIHRoZWlyIGxheW91dCBvbmx5IHdoZW4gcGFpbnRlZC4K
LSAgICAvLyBTdG9yZSB0aGUgdG90YWwgYXJlYSBwYWludGVkIGluIHRvdGFsX3BhaW50LiBUaGVu
IHRlbGwgdGhlIGdkayB3aW5kb3cKLSAgICAvLyB0byB1cGRhdGUgdGhhdCBhcmVhIGFmdGVyIHdl
J3JlIGRvbmUgcGFpbnRpbmcgaXQuCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpIHsK
LSAgICAgICAgLy8gcmVjdCA9IGludGVyc2VjdChwcm94eSgpLT5wYWludFJlY3QoKSAsIGNsaWVu
dFJlY3QpCi0gICAgICAgIFdlYlJlY3QgZGFtYWdlUmVjdCA9IHByb3h5KCktPnBhaW50UmVjdCgp
OwotICAgICAgICBpbnQgbGVmdCA9IG1heChkYW1hZ2VSZWN0LngsIGNsaWVudFJlY3QueCk7Ci0g
ICAgICAgIGludCB0b3AgPSBtYXgoZGFtYWdlUmVjdC55LCBjbGllbnRSZWN0LnkpOwotICAgICAg
ICBpbnQgcmlnaHQgPSBtaW4oZGFtYWdlUmVjdC54ICsgZGFtYWdlUmVjdC53aWR0aCwgY2xpZW50
UmVjdC54ICsgY2xpZW50UmVjdC53aWR0aCk7Ci0gICAgICAgIGludCBib3R0b20gPSBtaW4oZGFt
YWdlUmVjdC55ICsgZGFtYWdlUmVjdC5oZWlnaHQsIGNsaWVudFJlY3QueSArIGNsaWVudFJlY3Qu
aGVpZ2h0KTsKLSAgICAgICAgV2ViUmVjdCByZWN0OwotICAgICAgICBpZiAobGVmdCA8IHJpZ2h0
ICYmIHRvcCA8IGJvdHRvbSkKLSAgICAgICAgICAgIHJlY3QgPSBXZWJSZWN0KGxlZnQsIHRvcCwg
cmlnaHQgLSBsZWZ0LCBib3R0b20gLSB0b3ApOwotCi0gICAgICAgIHByb3h5KCktPnNldFBhaW50
UmVjdChXZWJSZWN0KCkpOwotICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgcGFpbnRSZWN0KHJlY3QpOwotICAgIH0KLSAgICBBU1NFUlQo
cHJveHkoKS0+cGFpbnRSZWN0KCkuaXNFbXB0eSgpKTsKLX0KLQotdm9pZCBXZWJWaWV3SG9zdDo6
cGFpbnRQYWdlc1dpdGhCb3VuZGFyaWVzKCkKLXsKLSAgICBBU1NFUlQoIW1faXNQYWludGluZyk7
Ci0gICAgQVNTRVJUKGNhbnZhcygpKTsKLSAgICBtX2lzUGFpbnRpbmcgPSB0cnVlOwotCi0gICAg
V2ViU2l6ZSBwYWdlU2l6ZUluUGl4ZWxzID0gd2ViV2lkZ2V0KCktPnNpemUoKTsKLSAgICBXZWJG
cmFtZSogd2ViRnJhbWUgPSB3ZWJWaWV3KCktPm1haW5GcmFtZSgpOwotCi0gICAgaW50IHBhZ2VD
b3VudCA9IHdlYkZyYW1lLT5wcmludEJlZ2luKHBhZ2VTaXplSW5QaXhlbHMpOwotICAgIGludCB0
b3RhbEhlaWdodCA9IHBhZ2VDb3VudCAqIChwYWdlU2l6ZUluUGl4ZWxzLmhlaWdodCArIDEpIC0g
MTsKLQotICAgIFNrQ2FudmFzKiB0ZXN0Q2FudmFzID0gc2tpYTo6VHJ5Q3JlYXRlQml0bWFwQ2Fu
dmFzKHBhZ2VTaXplSW5QaXhlbHMud2lkdGgsIHRvdGFsSGVpZ2h0LCB0cnVlKTsKLSAgICBpZiAo
dGVzdENhbnZhcykgewotICAgICAgICBkaXNjYXJkQmFja2luZ1N0b3JlKCk7Ci0gICAgICAgIG1f
Y2FudmFzID0gYWRvcHRQdHIodGVzdENhbnZhcyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgd2Vi
RnJhbWUtPnByaW50RW5kKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB3ZWJGcmFt
ZS0+cHJpbnRQYWdlc1dpdGhCb3VuZGFyaWVzKGNhbnZhcygpLCBwYWdlU2l6ZUluUGl4ZWxzKTsK
LSAgICB3ZWJGcmFtZS0+cHJpbnRFbmQoKTsKLQotICAgIG1faXNQYWludGluZyA9IGZhbHNlOwot
fQotCi1Ta0NhbnZhcyogV2ViVmlld0hvc3Q6OmNhbnZhcygpCi17Ci0gICAgaWYgKG1fY2FudmFz
KQotICAgICAgICByZXR1cm4gbV9jYW52YXMuZ2V0KCk7Ci0gICAgV2ViU2l6ZSB3aWRnZXRTaXpl
ID0gd2ViV2lkZ2V0KCktPnNpemUoKTsKLSAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IHdl
YlZpZXcoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBpbnQgc2NhbGVkV2lkdGggPSBzdGF0
aWNfY2FzdDxpbnQ+KGNlaWwoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZGdldFNpemUud2lkdGgpICog
ZGV2aWNlU2NhbGVGYWN0b3IpKTsKLSAgICBpbnQgc2NhbGVkSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8
aW50PihjZWlsKHN0YXRpY19jYXN0PGZsb2F0Pih3aWRnZXRTaXplLmhlaWdodCkgKiBkZXZpY2VT
Y2FsZUZhY3RvcikpOwotICAgIHJlc2V0U2Nyb2xsUmVjdCgpOwotICAgIG1fY2FudmFzID0gYWRv
cHRQdHIoc2tpYTo6Q3JlYXRlQml0bWFwQ2FudmFzKHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQs
IHRydWUpKTsKLSAgICByZXR1cm4gbV9jYW52YXMuZ2V0KCk7Ci19Ci0KLXZvaWQgV2ViVmlld0hv
c3Q6OnJlc2V0U2Nyb2xsUmVjdCgpCi17Ci19Ci0KLXZvaWQgV2ViVmlld0hvc3Q6OmRpc2NhcmRC
YWNraW5nU3RvcmUoKQotewotICAgIG1fY2FudmFzLmNsZWFyKCk7Ci19Ci0KLS8vIFBhaW50cyB0
aGUgZW50aXJlIGNhbnZhcyBhIHNlbWktdHJhbnNwYXJlbnQgYmxhY2sgKGdyYXlpc2gpLiBUaGlz
IGlzIHVzZWQKLS8vIGJ5IHRoZSBsYXlvdXQgdGVzdHMgaW4gZmFzdC9yZXBhaW50LiBUaGUgYWxw
aGEgdmFsdWUgbWF0Y2hlcyB1cHN0cmVhbS4KLXZvaWQgV2ViVmlld0hvc3Q6OmRpc3BsYXlSZXBh
aW50TWFzaygpCi17Ci0gICAgY2FudmFzKCktPmRyYXdBUkdCKDE2NywgMCwgMCwgMCk7Ci19CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAppbmRleCBmNzMwMmVl
MmNlMDMzZjc3OTZhODk5ZDlhN2FlZjBjODlkYzE1YzY0Li41NjQzNGY3MDM5NDcyYjIwNTFhNGVi
NzBkZmY5NTQ4NDRhYzcwMzk5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0LmgKQEAgLTg4LDEyICs4OCw2IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGlj
IFdlYktpdDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVDbGllbnQsCiAg
ICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQgc2V0UGVuZGluZ0V4dHJhRGF0YShQYXNzT3duUHRy
PFRlc3RTaGVsbEV4dHJhRGF0YT4pOwogCi0gICAgdm9pZCBwYWludFJlY3QoY29uc3QgV2ViS2l0
OjpXZWJSZWN0Jik7Ci0gICAgdm9pZCBwYWludEludmFsaWRhdGVkUmVnaW9uKCk7Ci0gICAgdm9p
ZCBwYWludFBhZ2VzV2l0aEJvdW5kYXJpZXMoKTsKLSAgICBTa0NhbnZhcyogY2FudmFzKCk7Ci0g
ICAgdm9pZCBkaXNwbGF5UmVwYWludE1hc2soKTsKLQogICAgIFRlc3ROYXZpZ2F0aW9uQ29udHJv
bGxlciogbmF2aWdhdGlvbkNvbnRyb2xsZXIoKSB7IHJldHVybiBtX25hdmlnYXRpb25Db250cm9s
bGVyLmdldCgpOyB9CiAKICAgICB2b2lkIGNsb3NlV2lkZ2V0KCk7CkBAIC0xNTcsOCArMTUxLDYg
QEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJs
aWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja1NwZWVj
aFJlY29nbml0aW9uRXJyb3IoY29uc3Qgc3RkOjpzdHJpbmcmLCBjb25zdCBzdGQ6OnN0cmluZyYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCB3YXNNb2NrU3BlZWNoUmVjb2duaXRpb25BYm9y
dGVkKCkgT1ZFUlJJREU7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGxheSgpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24oKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgdGVzdEZpbmlzaGVkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHRlc3RUaW1lZE91dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc0JlaW5n
RGVidWdnZWQoKSBPVkVSUklERTsKQEAgLTMwNSw4ICsyOTcsNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgcHJpbnRGcmFtZURlc2NyaXB0aW9uKFdlYktpdDo6V2ViRnJhbWUqKTsKIAogICAgIGJvb2wg
aGFzV2luZG93KCkgY29uc3QgeyByZXR1cm4gbV9oYXNXaW5kb3c7IH0KLSAgICB2b2lkIHJlc2V0
U2Nyb2xsUmVjdCgpOwotICAgIHZvaWQgZGlzY2FyZEJhY2tpbmdTdG9yZSgpOwogCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKICAgICB3ZWJraXRfc3VwcG9ydDo6VGVzdE1lZGlhU3RyZWFtQ2xp
ZW50KiB0ZXN0TWVkaWFTdHJlYW1DbGllbnQoKTsKQEAgLTM0MCwxMCArMzMwLDYgQEAgcHJpdmF0
ZToKICAgICBzdGQ6OnN0cmluZyBtX2VkaXRDb21tYW5kTmFtZTsKICAgICBzdGQ6OnN0cmluZyBt
X2VkaXRDb21tYW5kVmFsdWU7CiAKLSAgICAvLyBQYWludGluZy4KLSAgICBPd25QdHI8U2tDYW52
YXM+IG1fY2FudmFzOwotICAgIFdlYktpdDo6V2ViUmVjdCBtX3BhaW50UmVjdDsKLSAgICBib29s
IG1faXNQYWludGluZzsKIAogICAgIE93blB0cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51RGF0YT4g
bV9sYXN0Q29udGV4dE1lbnVEYXRhOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188287</attachid>
            <date>2013-02-14 01:36:46 -0800</date>
            <delta_ts>2013-02-14 14:11:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109686-20130214103313.patch</filename>
            <type>text/plain</type>
            <size>34947</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyODU3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzU0YWU5NzMyNzk1OGEzYjhkMTlhYzJkOWRlNGI5YThi
NTMzNDQxNS4uYTdiODFkNGViNWI4MjhmMTJmOTg0OGIwNTc2ZjNhNjY0Nzk1M2Q2MyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY0
IEBACiAyMDEzLTAyLTE0ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgog
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBwaXhlbCBnZW5lcmF0aW9uIGxvZ2ljIHRvIFRlc3RS
dW5uZXIgbGlicmFyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA5Njg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUu
Z3lwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYlRlc3REZWxlZ2F0ZS5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1Ymxp
Yy9XZWJUZXN0UHJveHkuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUZXN0UnVubmVyLmg6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50
ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0SW50ZXJmYWNlczo6flRl
c3RJbnRlcmZhY2VzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RJbnRlcmZhY2VzOjpz
ZXRXZWJWaWV3KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RJbnRlcmZhY2VzOjpwcm94
eSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcik6CisgICAgICAgIChUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpzZXRXZWJWaWV3KToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2V0QmFja2luZ1Nj
YWxlRmFjdG9yKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OmRpc3BsYXkp
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6ZGlzcGxheUludmFsaWRhdGVk
UmVnaW9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0UnVubmVyLmg6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFRlc3RS
dW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlRlc3RJbnRlcmZhY2VzLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJ
bnRlcmZhY2VzOjpzZXRXZWJWaWV3KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6V2ViVGVzdFByb3h5QmFzZTo6cmVzZXQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2Vi
VGVzdFByb3h5QmFzZTo6Y2FwdHVyZVBpeGVscyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnBhaW50UmVjdCk6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjpwYWludEludmFsaWRhdGVk
UmVnaW9uKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnBhaW50
UGFnZXNXaXRoQm91bmRhcmllcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJv
eHlCYXNlOjpjYW52YXMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFz
ZTo6ZGlzcGxheVJlcGFpbnRNYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQ
cm94eUJhc2U6OmRpc3BsYXkpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5
QmFzZTo6ZGlzcGxheUludmFsaWRhdGVkUmVnaW9uKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OldlYlRlc3RQcm94eUJhc2U6OmRpc2NhcmRCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6c2V0V2luZG93UmVjdCk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcDoKKyAgICAgICAgKFRlc3RTaGVsbDo6
Y3JlYXRlTWFpbldpbmRvdyk6CisgICAgICAgIChUZXN0U2hlbGw6On5UZXN0U2hlbGwpOgorICAg
ICAgICAoVGVzdFNoZWxsOjpzaG93RGV2VG9vbHMpOgorICAgICAgICAoVGVzdFNoZWxsOjpjbG9z
ZURldlRvb2xzKToKKyAgICAgICAgKFRlc3RTaGVsbDo6ZHVtcCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6
OnNldFdpbmRvd1JlY3QpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnNldERldmljZVNjYWxlRmFj
dG9yKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpyZXNldCk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKyAgICAgICAgKFdlYlZpZXdIb3N0KToKKwor
MjAxMy0wMi0xNCAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KKwogICAg
ICAgICBbY2hyb21pdW1dIG1vdmUgbW9jayBub3RpZmljYXRpb24gcHJlc2VudGVyIHRvIFRlc3RS
dW5uZXIgbGlicmFyeQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA5NzA2CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5k
ZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1w
UmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwCmluZGV4IDA4MzkzOTZiODJiMTQzY2Fi
MGQwZmUzMjJmYWEwMGE0NWMzMTgxMzkuLmQ0MzhlMzdkYzAzMWZlMjU5NjQ0NjYwZmE1MDI5Zjg1
ZWMwNmU0OTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cApAQCAtMTE0LDYgKzExNCw3IEBACiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IFsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYmFzZS9iYXNlLmd5cDpiYXNl
JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikv
YnVpbGQvdGVtcF9neXAvZ29vZ2xldXJsLmd5cDpnb29nbGV1cmwnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9za2lhL3NraWEuZ3lwOnNraWEn
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS92
OC90b29scy9neXAvdjguZ3lwOnY4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXJlY3RfZGVwZW5kZW50X3NldHRpbmdzJzog
ewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9w
dWJsaWMvV2ViVGVzdERlbGVnYXRlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaAppbmRleCAyODU2YzdkNThiODY1MjZh
NjdlOWEyYjJjMjBlMmUyNzllODM4NGRmLi4wNzc4ZWMxZmQ1ODI3Y2MxMWMyZDFlZWE0NTIzYjE2
NGI3Y2I3YTczIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaApAQCAtOTksOCAr
OTksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFkZE1vY2tTcGVlY2hSZWNvZ25pdGlv
blJlc3VsdChjb25zdCBzdGQ6OnN0cmluZyYsIGRvdWJsZSkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldE1vY2tTcGVlY2hSZWNvZ25pdGlvbkVycm9yKGNvbnN0IHN0ZDo6c3RyaW5nJiwgY29uc3Qg
c3RkOjpzdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgd2FzTW9ja1NwZWVjaFJlY29nbml0
aW9uQWJvcnRlZCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BsYXko
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGxheUludmFsaWRhdGVkUmVnaW9uKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHRlc3RGaW5pc2hlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0ZXN0
VGltZWRPdXQoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNCZWluZ0RlYnVnZ2VkKCkgeyByZXR1
cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oCmluZGV4IDAw
NjIwM2NjYTIwYWIyZWEwOTg0MTc1MDYwZTY4NDhmZjc4YzQwNDAuLjQ1MmMxNDkxZTVhYWI4Mzk2
MWIyZTYxNjQzODIzMDdmNjdkYmYyYTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVy
ZmFjZXMuaApAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIGNs
YXNzIFRlc3RJbnRlcmZhY2VzOwogY2xhc3MgV2ViVGVzdERlbGVnYXRlOworY2xhc3MgV2ViVGVz
dFByb3h5QmFzZTsKIGNsYXNzIFdlYlRlc3RSdW5uZXI7CiAKIGNsYXNzIFdFQlRFU1RSVU5ORVJf
RVhQT1JUIFdlYlRlc3RJbnRlcmZhY2VzIHsKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogICAg
IFdlYlRlc3RJbnRlcmZhY2VzKCk7CiAgICAgfldlYlRlc3RJbnRlcmZhY2VzKCk7CiAKLSAgICB2
b2lkIHNldFdlYlZpZXcoV2ViS2l0OjpXZWJWaWV3Kik7CisgICAgdm9pZCBzZXRXZWJWaWV3KFdl
YktpdDo6V2ViVmlldyosIFdlYlRlc3RQcm94eUJhc2UqKTsKICAgICB2b2lkIHNldERlbGVnYXRl
KFdlYlRlc3REZWxlZ2F0ZSopOwogICAgIHZvaWQgYmluZFRvKFdlYktpdDo6V2ViRnJhbWUqKTsK
ICAgICB2b2lkIHJlc2V0QWxsKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UHJveHkuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oCmluZGV4IDE1
ZjU2MGJiYTk5NjI3OGRmMDc0MDhiZGI2M2E3ZjQyYWE1N2EyNzIuLmUzN2UyYmQ2NTNkNDliNGIz
MjU2ZTc2NDY2NWI4NDhlNjQzMTI4NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oCkBA
IC03NCw2ICs3NCw4IEBAIHN0cnVjdCBXZWJTaXplOwogc3RydWN0IFdlYldpbmRvd0ZlYXR1cmVz
OwogfQogCitjbGFzcyBTa0NhbnZhczsKKwogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCiBj
bGFzcyBTcGVsbENoZWNrQ2xpZW50OwpAQCAtOTIsMTMgKzk0LDE1IEBAIHB1YmxpYzoKIAogICAg
IFdlYktpdDo6V2ViU3BlbGxDaGVja0NsaWVudCAqc3BlbGxDaGVja0NsaWVudCgpIGNvbnN0Owog
Ci0gICAgdm9pZCBzZXRQYWludFJlY3QoY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7Ci0gICAgV2Vi
S2l0OjpXZWJSZWN0IHBhaW50UmVjdCgpIGNvbnN0OwotCiAgICAgc3RkOjpzdHJpbmcgY2FwdHVy
ZVRyZWUoYm9vbCBkZWJ1Z1JlbmRlclRyZWUpOworICAgIFNrQ2FudmFzKiBjYXB0dXJlUGl4ZWxz
KCk7CiAKICAgICB2b2lkIHNldExvZ0NvbnNvbGVPdXRwdXQoYm9vbCBlbmFibGVkKTsKIAorICAg
IHZvaWQgZGlzcGxheSgpOworICAgIHZvaWQgZGlzcGxheUludmFsaWRhdGVkUmVnaW9uKCk7Cisg
ICAgdm9pZCBkaXNjYXJkQmFja2luZ1N0b3JlKCk7CisKIHByb3RlY3RlZDoKICAgICBXZWJUZXN0
UHJveHlCYXNlKCk7CiAgICAgfldlYlRlc3RQcm94eUJhc2UoKTsKQEAgLTE2OSw2ICsxNzMsMTEg
QEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHZvaWQgbG9jYXRpb25DaGFuZ2VEb25lKFdl
YktpdDo6V2ViRnJhbWUqKTsKKyAgICB2b2lkIHBhaW50UmVjdChjb25zdCBXZWJLaXQ6OldlYlJl
Y3QmKTsKKyAgICB2b2lkIHBhaW50SW52YWxpZGF0ZWRSZWdpb24oKTsKKyAgICB2b2lkIHBhaW50
UGFnZXNXaXRoQm91bmRhcmllcygpOworICAgIFNrQ2FudmFzKiBjYW52YXMoKTsKKyAgICB2b2lk
IGRpc3BsYXlSZXBhaW50TWFzaygpOwogCiAgICAgVGVzdEludGVyZmFjZXMqIG1fdGVzdEludGVy
ZmFjZXM7CiAgICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOwpAQCAtMTc2LDcgKzE4NSwx
MCBAQCBwcml2YXRlOgogICAgIHN0ZDo6YXV0b19wdHI8U3BlbGxDaGVja0NsaWVudD4gbV9zcGVs
bGNoZWNrOwogICAgIHN0ZDo6YXV0b19wdHI8V2ViVXNlck1lZGlhQ2xpZW50TW9jaz4gbV91c2Vy
TWVkaWFDbGllbnQ7CiAKKyAgICAvLyBQYWludGluZy4KKyAgICBzdGQ6OmF1dG9fcHRyPFNrQ2Fu
dmFzPiBtX2NhbnZhczsKICAgICBXZWJLaXQ6OldlYlJlY3QgbV9wYWludFJlY3Q7CisgICAgYm9v
bCBtX2lzUGFpbnRpbmc7CiAgICAgc3RkOjptYXA8dW5zaWduZWQsIHN0ZDo6c3RyaW5nPiBtX3Jl
c291cmNlSWRlbnRpZmllck1hcDsKIAogICAgIGJvb2wgbV9sb2dDb25zb2xlT3V0cHV0OwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9wdWJsaWMvV2ViVGVzdFJ1bm5lci5oCmluZGV4IDg4ZDRhZTViN2E2NjU4YzA5OWQ2OTFmOTBj
MTUyNzZlNGM2ODU5OWUuLjExZDJmMzQ1ZDhhM2VkOTJmZGVkMWI2MjBmOGJhZjc2OTU1ZjYxZmEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVi
bGljL1dlYlRlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UnVubmVyLmgKQEAgLTQ0LDEwICs0NCw2IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcEFzQXVkaW8oKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBjb25zdCBXZWJLaXQ6OldlYkFycmF5QnVmZmVyVmlldyogYXVkaW9EYXRhKCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJQZXJtaXNzaW9uQ2xpZW50KiB3ZWJQZXJt
aXNzaW9ucygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcFNlbGVjdGlv
blJlY3QoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIHRlc3RSZXBhaW50KCkgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgYm9vbCBzd2VlcEhvcml6b250YWxseSgpIGNvbnN0ID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNQcmludGluZygpIGNvbnN0ID0gMDsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRl
cmZhY2VzLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RJbnRlcmZhY2VzLmNwcAppbmRleCBiNDQzZGY1MGYzOGI2ZGY2NjJhMzEzYjlhMjRlMDYz
ZmVhYjE5MmIwLi5hZDdlMmRlNGY2MjUwZDQzMDllNTRjZDFmOTkyYjJjY2M5NTkxZWQ1IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0
SW50ZXJmYWNlcy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3BwCkBAIC02Myw3ICs2Myw3IEBAIFRlc3RJbnRlcmZh
Y2VzOjp+VGVzdEludGVyZmFjZXMoKQogICAgIG1fZXZlbnRTZW5kZXItPnNldFdlYlZpZXcoMCk7
CiAgICAgLy8gbV9nYW1lcGFkQ29udHJvbGxlciBkb2Vzbid0IGRlcGVuZCBvbiBXZWJWaWV3Lgog
ICAgIG1fdGV4dElucHV0Q29udHJvbGxlci0+c2V0V2ViVmlldygwKTsKLSAgICBtX3Rlc3RSdW5u
ZXItPnNldFdlYlZpZXcoMCk7CisgICAgbV90ZXN0UnVubmVyLT5zZXRXZWJWaWV3KDAsIDApOwog
CiAgICAgbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlci0+c2V0RGVsZWdhdGUoMCk7CiAgICAgbV9l
dmVudFNlbmRlci0+c2V0RGVsZWdhdGUoMCk7CkBAIC03MiwxNCArNzIsMTUgQEAgVGVzdEludGVy
ZmFjZXM6On5UZXN0SW50ZXJmYWNlcygpCiAgICAgbV90ZXN0UnVubmVyLT5zZXREZWxlZ2F0ZSgw
KTsKIH0KIAotdm9pZCBUZXN0SW50ZXJmYWNlczo6c2V0V2ViVmlldyhXZWJWaWV3KiB3ZWJWaWV3
KQordm9pZCBUZXN0SW50ZXJmYWNlczo6c2V0V2ViVmlldyhXZWJWaWV3KiB3ZWJWaWV3LCBXZWJU
ZXN0UHJveHlCYXNlKiBwcm94eSkKIHsKICAgICBtX3dlYlZpZXcgPSB3ZWJWaWV3OworICAgIG1f
cHJveHkgPSBwcm94eTsKICAgICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLT5zZXRXZWJWaWV3
KHdlYlZpZXcpOwogICAgIG1fZXZlbnRTZW5kZXItPnNldFdlYlZpZXcod2ViVmlldyk7CiAgICAg
Ly8gbV9nYW1lcGFkQ29udHJvbGxlciBkb2Vzbid0IGRlcGVuZCBvbiBXZWJWaWV3LgogICAgIG1f
dGV4dElucHV0Q29udHJvbGxlci0+c2V0V2ViVmlldyh3ZWJWaWV3KTsKLSAgICBtX3Rlc3RSdW5u
ZXItPnNldFdlYlZpZXcod2ViVmlldyk7CisgICAgbV90ZXN0UnVubmVyLT5zZXRXZWJWaWV3KHdl
YlZpZXcsIHByb3h5KTsKIH0KIAogdm9pZCBUZXN0SW50ZXJmYWNlczo6c2V0RGVsZWdhdGUoV2Vi
VGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSkKQEAgLTE1Niw0ICsxNTcsOSBAQCBXZWJUZXN0RGVsZWdh
dGUqIFRlc3RJbnRlcmZhY2VzOjpkZWxlZ2F0ZSgpCiAgICAgcmV0dXJuIG1fZGVsZWdhdGU7CiB9
CiAKK1dlYlRlc3RQcm94eUJhc2UqIFRlc3RJbnRlcmZhY2VzOjpwcm94eSgpCit7CisgICAgcmV0
dXJuIG1fcHJveHk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oCmluZGV4IGVjM2Ex
ZGUyODY5OGNmYTBlNzY4MDlhYjQ3MjQwOTg2ZDA4YzNjMzUuLjlkMmU4YzMxNzMwYTQwMDZiNTdj
MTIyY2Q2MzQyNjMwZmE4NGEyZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaApAQCAtNDcs
MTMgKzQ3LDE0IEBAIGNsYXNzIEdhbWVwYWRDb250cm9sbGVyOwogY2xhc3MgVGVzdFJ1bm5lcjsK
IGNsYXNzIFRleHRJbnB1dENvbnRyb2xsZXI7CiBjbGFzcyBXZWJUZXN0RGVsZWdhdGU7CitjbGFz
cyBXZWJUZXN0UHJveHlCYXNlOwogCiBjbGFzcyBUZXN0SW50ZXJmYWNlcyB7CiBwdWJsaWM6CiAg
ICAgVGVzdEludGVyZmFjZXMoKTsKICAgICB+VGVzdEludGVyZmFjZXMoKTsKIAotICAgIHZvaWQg
c2V0V2ViVmlldyhXZWJLaXQ6OldlYlZpZXcqKTsKKyAgICB2b2lkIHNldFdlYlZpZXcoV2ViS2l0
OjpXZWJWaWV3KiwgV2ViVGVzdFByb3h5QmFzZSopOwogICAgIHZvaWQgc2V0RGVsZWdhdGUoV2Vi
VGVzdERlbGVnYXRlKik7CiAgICAgdm9pZCBiaW5kVG8oV2ViS2l0OjpXZWJGcmFtZSopOwogICAg
IHZvaWQgcmVzZXRBbGwoKTsKQEAgLTY1LDYgKzY2LDcgQEAgcHVibGljOgogICAgIFRlc3RSdW5u
ZXIqIHRlc3RSdW5uZXIoKTsKICAgICBXZWJLaXQ6OldlYlZpZXcqIHdlYlZpZXcoKTsKICAgICBX
ZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlKCk7CisgICAgV2ViVGVzdFByb3h5QmFzZSogcHJveHko
KTsKIAogCiBwcml2YXRlOgpAQCAtNzUsNiArNzcsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6YXV0
b19wdHI8VGVzdFJ1bm5lcj4gbV90ZXN0UnVubmVyOwogICAgIFdlYktpdDo6V2ViVmlldyogbV93
ZWJWaWV3OwogICAgIFdlYlRlc3REZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKKyAgICBXZWJUZXN0UHJv
eHlCYXNlKiBtX3Byb3h5OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAppbmRleCBkNjQ5
YWJkMGQ2ZTM2NjIxODM4NWRkYjYxZDQyODg5NGQ0Y2RmNjEwLi45NTMyMjFlYjMwYjEwMjg0ZTQy
YWQ5Mzg2MWZiYjRmNGYwNDg2ZjNmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcApAQCAtNTEsNiAr
NTEsNyBAQAogI2luY2x1ZGUgIldlYlN1cnJvdW5kaW5nVGV4dC5oIgogI2luY2x1ZGUgIldlYlRh
c2suaCIKICNpbmNsdWRlICJXZWJUZXN0RGVsZWdhdGUuaCIKKyNpbmNsdWRlICJXZWJUZXN0UHJv
eHkuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSAidjgvaW5jbHVkZS92OC5oIgog
I2luY2x1ZGUgPGxpbWl0cz4KQEAgLTMzOSw2ICszNDAsMTIgQEAgdm9pZCBUZXN0UnVubmVyOjpz
ZXREZWxlZ2F0ZShXZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlKQogI2VuZGlmCiB9CiAKK3ZvaWQg
VGVzdFJ1bm5lcjo6c2V0V2ViVmlldyhXZWJWaWV3KiB3ZWJWaWV3LCBXZWJUZXN0UHJveHlCYXNl
KiBwcm94eSkKK3sKKyAgICBtX3dlYlZpZXcgPSB3ZWJWaWV3OworICAgIG1fcHJveHkgPSBwcm94
eTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpyZXNldCgpCiB7CiAgICAgaWYgKG1fd2ViVmlldykg
ewpAQCAtMTczNCw2ICsxNzQxLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRCYWNraW5nU2NhbGVG
YWN0b3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmkKIAogICAgIGZs
b2F0IHZhbHVlID0gYXJndW1lbnRzWzBdLnZhbHVlLmRvdWJsZVZhbHVlOwogICAgIG1fZGVsZWdh
dGUtPnNldERldmljZVNjYWxlRmFjdG9yKHZhbHVlKTsKKyAgICBtX3Byb3h5LT5kaXNjYXJkQmFj
a2luZ1N0b3JlKCk7CiAKICAgICBhdXRvX3B0cjxDcHBWYXJpYW50PiBjYWxsYmFja0FyZ3VtZW50
cyhuZXcgQ3BwVmFyaWFudCgpKTsKICAgICBjYWxsYmFja0FyZ3VtZW50cy0+c2V0KGFyZ3VtZW50
c1sxXSk7CkBAIC0xODQzLDEzICsxODUxLDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6d2FzTW9ja1Nw
ZWVjaFJlY29nbml0aW9uQWJvcnRlZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpCiAK
IHZvaWQgVGVzdFJ1bm5lcjo6ZGlzcGxheShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50
cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewotICAgIG1fZGVsZWdhdGUtPmRpc3BsYXkoKTsKKyAg
ICBtX3Byb3h5LT5kaXNwbGF5KCk7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKIHZvaWQg
VGVzdFJ1bm5lcjo6ZGlzcGxheUludmFsaWRhdGVkUmVnaW9uKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7Ci0gICAgbV9kZWxlZ2F0ZS0+ZGlz
cGxheUludmFsaWRhdGVkUmVnaW9uKCk7CisgICAgbV9wcm94eS0+ZGlzcGxheUludmFsaWRhdGVk
UmVnaW9uKCk7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaApp
bmRleCA1MWYzMDljZWEwYTA4MGVlOWQxMDk1ZTY5MjZjYzExZWJiMmQ4YzY5Li40NjI3OTRhZjdk
MzI5ZmI4NzA1NGY4YWRhNGExNzM3MDlhNzZiNDRlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCkBAIC01
Nyw2ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIGNsYXNzIE5vdGlmaWNhdGlv
blByZXNlbnRlcjsKIGNsYXNzIFdlYlBlcm1pc3Npb25zOwogY2xhc3MgV2ViVGVzdERlbGVnYXRl
OworY2xhc3MgV2ViVGVzdFByb3h5QmFzZTsKIAogY2xhc3MgVGVzdFJ1bm5lciA6IHB1YmxpYyBX
ZWJUZXN0UnVubmVyLCBwdWJsaWMgQ3BwQm91bmRDbGFzcyB7CiBwdWJsaWM6CkBAIC02NCw3ICs2
NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXN0UnVubmVyKCk7CiAKICAgICB2b2lkIHNl
dERlbGVnYXRlKFdlYlRlc3REZWxlZ2F0ZSopOwotICAgIHZvaWQgc2V0V2ViVmlldyhXZWJLaXQ6
OldlYlZpZXcqIHdlYlZpZXcpIHsgbV93ZWJWaWV3ID0gd2ViVmlldzsgfQorICAgIHZvaWQgc2V0
V2ViVmlldyhXZWJLaXQ6OldlYlZpZXcqLCBXZWJUZXN0UHJveHlCYXNlKik7CiAKICAgICB2b2lk
IHJlc2V0KCk7CiAKQEAgLTc3LDEyICs3OCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IHNob3VsZER1bXBBc0F1ZGlvKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBX
ZWJLaXQ6OldlYkFycmF5QnVmZmVyVmlldyogYXVkaW9EYXRhKCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBXZWJLaXQ6OldlYlBlcm1pc3Npb25DbGllbnQqIHdlYlBlcm1pc3Npb25zKCkg
Y29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZER1bXBTZWxlY3Rpb25SZWN0
KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHRlc3RSZXBhaW50KCkgY29uc3Qg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHN3ZWVwSG9yaXpvbnRhbGx5KCkgY29uc3QgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBib29sIGlzUHJpbnRpbmcoKSBjb25zdCBPVkVSUklERTsKIAog
ICAgIC8vIE1ldGhvZHMgdXNlZCBieSBXZWJUZXN0UHJveHlCYXNlLgorICAgIGJvb2wgc2hvdWxk
RHVtcFNlbGVjdGlvblJlY3QoKSBjb25zdDsKKyAgICBib29sIHRlc3RSZXBhaW50KCkgY29uc3Q7
CisgICAgYm9vbCBzd2VlcEhvcml6b250YWxseSgpIGNvbnN0OworICAgIGJvb2wgaXNQcmludGlu
ZygpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkRHVtcEFzVGV4dCgpOwogICAgIGJvb2wgc2hvdWxk
RHVtcEJhY2tGb3J3YXJkTGlzdCgpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkRHVtcENoaWxkRnJh
bWVTY3JvbGxQb3NpdGlvbnMoKSBjb25zdDsKQEAgLTY2MSw2ICs2NjIsNyBAQCBwcml2YXRlOgog
CiAgICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOwogICAgIFdlYktpdDo6V2ViVmlldyog
bV93ZWJWaWV3OworICAgIFdlYlRlc3RQcm94eUJhc2UqIG1fcHJveHk7CiAKICAgICAvLyBUaGlz
IGlzIG5vbi0wIElGRiBhIGxvYWQgaXMgaW4gcHJvZ3Jlc3MuCiAgICAgV2ViS2l0OjpXZWJGcmFt
ZSogbV90b3BMb2FkaW5nRnJhbWU7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAK
aW5kZXggZDQwYjA0NDg4MmEzM2NjYzI3ZDAwMTBkZDYzNGYwZDRlM2FmZTU1YS4uMmExNzZkNzYz
OWE5MzA1ODk0MDIwNWFjMmYwNTgzOGQ0YTYyZjYzMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJ
bnRlcmZhY2VzLmNwcApAQCAtNDksOSArNDksOSBAQCBXZWJUZXN0SW50ZXJmYWNlczo6fldlYlRl
c3RJbnRlcmZhY2VzKCkKIHsKIH0KIAotdm9pZCBXZWJUZXN0SW50ZXJmYWNlczo6c2V0V2ViVmll
dyhXZWJWaWV3KiB3ZWJWaWV3KQordm9pZCBXZWJUZXN0SW50ZXJmYWNlczo6c2V0V2ViVmlldyhX
ZWJWaWV3KiB3ZWJWaWV3LCBXZWJUZXN0UHJveHlCYXNlKiBwcm94eSkKIHsKLSAgICBtX2ludGVy
ZmFjZXMtPnNldFdlYlZpZXcod2ViVmlldyk7CisgICAgbV9pbnRlcmZhY2VzLT5zZXRXZWJWaWV3
KHdlYlZpZXcsIHByb3h5KTsKIH0KIAogdm9pZCBXZWJUZXN0SW50ZXJmYWNlczo6c2V0RGVsZWdh
dGUoV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwCmlu
ZGV4IDUwNTg5YTE5OGZlYjMxODkwZjAzMTU1YThkMjI1ZGI2M2VmMmRjYjguLjc2YjQ0ODI0MmQ1
YmQyODY3MzdjYjVjYWNkMDlhMjAxMTMzN2Y0ODIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNw
cApAQCAtNTcsNiArNTcsOCBAQAogI2luY2x1ZGUgIldlYlRlc3RSdW5uZXIuaCIKICNpbmNsdWRl
ICJXZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgorLy8gRklY
TUU6IEluY2x1ZGluZyBwbGF0Zm9ybV9jYW52YXMuaCBoZXJlIGlzIGEgbGF5ZXJpbmcgdmlvbGF0
aW9uLgorI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgogI2luY2x1ZGUgPGNj
dHlwZT4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ1N0cmluZy5oPgogI2luY2x1ZGUgPHB1YmxpYy9X
ZWJVUkxFcnJvci5oPgpAQCAtNDM2LDYgKzQzOCw4IEBAIHZvaWQgV2ViVGVzdFByb3h5QmFzZTo6
c2V0RGVsZWdhdGUoV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSkKIHZvaWQgV2ViVGVzdFByb3h5
QmFzZTo6cmVzZXQoKQogewogICAgIG1fcGFpbnRSZWN0ID0gV2ViUmVjdCgpOworICAgIG1fY2Fu
dmFzLnJlc2V0KCk7CisgICAgbV9pc1BhaW50aW5nID0gZmFsc2U7CiAgICAgbV9yZXNvdXJjZUlk
ZW50aWZpZXJNYXAuY2xlYXIoKTsKICAgICBtX2xvZ0NvbnNvbGVPdXRwdXQgPSB0cnVlOwogfQpA
QCAtNDQ1LDE2ICs0NDksNiBAQCBXZWJTcGVsbENoZWNrQ2xpZW50KiBXZWJUZXN0UHJveHlCYXNl
OjpzcGVsbENoZWNrQ2xpZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9zcGVsbGNoZWNrLmdldCgp
OwogfQogCi12b2lkIFdlYlRlc3RQcm94eUJhc2U6OnNldFBhaW50UmVjdChjb25zdCBXZWJSZWN0
JiByZWN0KQotewotICAgIG1fcGFpbnRSZWN0ID0gcmVjdDsKLX0KLQotV2ViUmVjdCBXZWJUZXN0
UHJveHlCYXNlOjpwYWludFJlY3QoKSBjb25zdAotewotICAgIHJldHVybiBtX3BhaW50UmVjdDsK
LX0KLQogc3RyaW5nIFdlYlRlc3RQcm94eUJhc2U6OmNhcHR1cmVUcmVlKGJvb2wgZGVidWdSZW5k
ZXJUcmVlKQogewogICAgIFdlYlNjcmlwdENvbnRyb2xsZXI6OmZsdXNoQ29uc29sZU1lc3NhZ2Vz
KCk7CkBAIC00ODMsMTEgKzQ3NywxNjQgQEAgc3RyaW5nIFdlYlRlc3RQcm94eUJhc2U6OmNhcHR1
cmVUcmVlKGJvb2wgZGVidWdSZW5kZXJUcmVlKQogICAgIHJldHVybiBkYXRhVXRmODsKIH0KIAor
U2tDYW52YXMqIFdlYlRlc3RQcm94eUJhc2U6OmNhcHR1cmVQaXhlbHMoKQoreworICAgIG1fdGVz
dEludGVyZmFjZXMtPndlYlZpZXcoKS0+bGF5b3V0KCk7CisgICAgaWYgKG1fdGVzdEludGVyZmFj
ZXMtPnRlc3RSdW5uZXIoKS0+dGVzdFJlcGFpbnQoKSkgeworICAgICAgICBXZWJTaXplIHZpZXdT
aXplID0gbV90ZXN0SW50ZXJmYWNlcy0+d2ViVmlldygpLT5zaXplKCk7CisgICAgICAgIGludCB3
aWR0aCA9IHZpZXdTaXplLndpZHRoOworICAgICAgICBpbnQgaGVpZ2h0ID0gdmlld1NpemUuaGVp
Z2h0OworICAgICAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5zd2VlcEhv
cml6b250YWxseSgpKSB7CisgICAgICAgICAgICBmb3IgKFdlYlJlY3QgY29sdW1uKDAsIDAsIDEs
IGhlaWdodCk7IGNvbHVtbi54IDwgd2lkdGg7IGNvbHVtbi54KyspCisgICAgICAgICAgICAgICAg
cGFpbnRSZWN0KGNvbHVtbik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKFdl
YlJlY3QgbGluZSgwLCAwLCB3aWR0aCwgMSk7IGxpbmUueSA8IGhlaWdodDsgbGluZS55KyspCisg
ICAgICAgICAgICAgICAgcGFpbnRSZWN0KGxpbmUpOworICAgICAgICB9CisgICAgfSBlbHNlIGlm
IChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCktPmlzUHJpbnRpbmcoKSkKKyAgICAgICAg
cGFpbnRQYWdlc1dpdGhCb3VuZGFyaWVzKCk7CisgICAgZWxzZQorICAgICAgICBwYWludEludmFs
aWRhdGVkUmVnaW9uKCk7CisKKyAgICAvLyBTZWUgaWYgd2UgbmVlZCB0byBkcmF3IHRoZSBzZWxl
Y3Rpb24gYm91bmRzIHJlY3QuIFNlbGVjdGlvbiBib3VuZHMKKyAgICAvLyByZWN0IGlzIHRoZSBy
ZWN0IGVuY2xvc2luZyB0aGUgKHBvc3NpYmx5IHRyYW5zZm9ybWVkKSBzZWxlY3Rpb24uCisgICAg
Ly8gVGhlIHJlY3Qgc2hvdWxkIGJlIGRyYXduIGFmdGVyIGV2ZXJ5dGhpbmcgaXMgbGFpZCBvdXQg
YW5kIHBhaW50ZWQuCisgICAgaWYgKG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+c2hv
dWxkRHVtcFNlbGVjdGlvblJlY3QoKSkgeworICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHNlbGVj
dGlvbiByZWN0IC0gZHJhdyBhIHJlZCAxcHggYm9yZGVyIGVuY2xvc2luZyByZWN0CisgICAgICAg
IFdlYlJlY3Qgd3IgPSBtX3Rlc3RJbnRlcmZhY2VzLT53ZWJWaWV3KCktPm1haW5GcmFtZSgpLT5z
ZWxlY3Rpb25Cb3VuZHNSZWN0KCk7CisgICAgICAgIGlmICghd3IuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICAvLyBSZW5kZXIgYSByZWQgcmVjdGFuZ2xlIGJvdW5kaW5nIHNlbGVjdGlvbiByZWN0
CisgICAgICAgICAgICBTa1BhaW50IHBhaW50OworICAgICAgICAgICAgcGFpbnQuc2V0Q29sb3Io
MHhGRkZGMDAwMCk7IC8vIEZ1bGx5IG9wYXF1ZSByZWQKKyAgICAgICAgICAgIHBhaW50LnNldFN0
eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgICAgICAgICAgcGFpbnQuc2V0RmxhZ3Mo
U2tQYWludDo6a0FudGlBbGlhc19GbGFnKTsKKyAgICAgICAgICAgIHBhaW50LnNldFN0cm9rZVdp
ZHRoKDEuMGYpOworICAgICAgICAgICAgU2tJUmVjdCByZWN0OyAvLyBCb3VuZGluZyByZWN0Cisg
ICAgICAgICAgICByZWN0LnNldCh3ci54LCB3ci55LCB3ci54ICsgd3Iud2lkdGgsIHdyLnkgKyB3
ci5oZWlnaHQpOworICAgICAgICAgICAgY2FudmFzKCktPmRyYXdJUmVjdChyZWN0LCBwYWludCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gY2FudmFzKCk7Cit9CisKIHZvaWQgV2Vi
VGVzdFByb3h5QmFzZTo6c2V0TG9nQ29uc29sZU91dHB1dChib29sIGVuYWJsZWQpCiB7CiAgICAg
bV9sb2dDb25zb2xlT3V0cHV0ID0gZW5hYmxlZDsKIH0KIAordm9pZCBXZWJUZXN0UHJveHlCYXNl
OjpwYWludFJlY3QoY29uc3QgV2ViUmVjdCYgcmVjdCkKK3sKKyAgICBXRUJLSVRfQVNTRVJUKCFt
X2lzUGFpbnRpbmcpOworICAgIFdFQktJVF9BU1NFUlQoY2FudmFzKCkpOworICAgIG1faXNQYWlu
dGluZyA9IHRydWU7CisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBtX3Rlc3RJbnRlcmZh
Y2VzLT53ZWJWaWV3KCktPmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgaW50IHNjYWxlZFggPSBz
dGF0aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PGZsb2F0PihyZWN0LngpICogZGV2aWNlU2NhbGVG
YWN0b3IpOworICAgIGludCBzY2FsZWRZID0gc3RhdGljX2Nhc3Q8aW50PihzdGF0aWNfY2FzdDxm
bG9hdD4ocmVjdC55KSAqIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBpbnQgc2NhbGVkV2lkdGgg
PSBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlY3Qud2lkdGgpICog
ZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICBpbnQgc2NhbGVkSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8
aW50PihjZWlsKHN0YXRpY19jYXN0PGZsb2F0PihyZWN0LmhlaWdodCkgKiBkZXZpY2VTY2FsZUZh
Y3RvcikpOworICAgIFdlYlJlY3QgZGV2aWNlUmVjdChzY2FsZWRYLCBzY2FsZWRZLCBzY2FsZWRX
aWR0aCwgc2NhbGVkSGVpZ2h0KTsKKyAgICBtX3Rlc3RJbnRlcmZhY2VzLT53ZWJWaWV3KCktPnBh
aW50KGNhbnZhcygpLCBkZXZpY2VSZWN0KTsKKyAgICBtX2lzUGFpbnRpbmcgPSBmYWxzZTsKK30K
Kwordm9pZCBXZWJUZXN0UHJveHlCYXNlOjpwYWludEludmFsaWRhdGVkUmVnaW9uKCkKK3sKKyAg
ICBtX3Rlc3RJbnRlcmZhY2VzLT53ZWJWaWV3KCktPmFuaW1hdGUoMC4wKTsKKyAgICBtX3Rlc3RJ
bnRlcmZhY2VzLT53ZWJWaWV3KCktPmxheW91dCgpOworICAgIFdlYlNpemUgd2lkZ2V0U2l6ZSA9
IG1fdGVzdEludGVyZmFjZXMtPndlYlZpZXcoKS0+c2l6ZSgpOworICAgIFdlYlJlY3QgY2xpZW50
UmVjdCgwLCAwLCB3aWRnZXRTaXplLndpZHRoLCB3aWRnZXRTaXplLmhlaWdodCk7CisKKyAgICAv
LyBQYWludCB0aGUgY2FudmFzIGlmIG5lY2Vzc2FyeS4gQWxsb3cgcGFpbnRpbmcgdG8gZ2VuZXJh
dGUgZXh0cmEgcmVjdHMKKyAgICAvLyBmb3IgdGhlIGZpcnN0IHR3byBjYWxscy4gVGhpcyBpcyBu
ZWNlc3NhcnkgYmVjYXVzZSBzb21lIFdlYkNvcmUgcmVuZGVyaW5nCisgICAgLy8gb2JqZWN0cyB1
cGRhdGUgdGhlaXIgbGF5b3V0IG9ubHkgd2hlbiBwYWludGVkLgorICAgIC8vIFN0b3JlIHRoZSB0
b3RhbCBhcmVhIHBhaW50ZWQgaW4gdG90YWxfcGFpbnQuIFRoZW4gdGVsbCB0aGUgZ2RrIHdpbmRv
dworICAgIC8vIHRvIHVwZGF0ZSB0aGF0IGFyZWEgYWZ0ZXIgd2UncmUgZG9uZSBwYWludGluZyBp
dC4KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkgeworICAgICAgICAvLyByZWN0ID0g
aW50ZXJzZWN0KG1fcGFpbnRSZWN0ICwgY2xpZW50UmVjdCkKKyAgICAgICAgV2ViUmVjdCBkYW1h
Z2VSZWN0ID0gbV9wYWludFJlY3Q7CisgICAgICAgIGludCBsZWZ0ID0gbWF4KGRhbWFnZVJlY3Qu
eCwgY2xpZW50UmVjdC54KTsKKyAgICAgICAgaW50IHRvcCA9IG1heChkYW1hZ2VSZWN0LnksIGNs
aWVudFJlY3QueSk7CisgICAgICAgIGludCByaWdodCA9IG1pbihkYW1hZ2VSZWN0LnggKyBkYW1h
Z2VSZWN0LndpZHRoLCBjbGllbnRSZWN0LnggKyBjbGllbnRSZWN0LndpZHRoKTsKKyAgICAgICAg
aW50IGJvdHRvbSA9IG1pbihkYW1hZ2VSZWN0LnkgKyBkYW1hZ2VSZWN0LmhlaWdodCwgY2xpZW50
UmVjdC55ICsgY2xpZW50UmVjdC5oZWlnaHQpOworICAgICAgICBXZWJSZWN0IHJlY3Q7CisgICAg
ICAgIGlmIChsZWZ0IDwgcmlnaHQgJiYgdG9wIDwgYm90dG9tKQorICAgICAgICAgICAgcmVjdCA9
IFdlYlJlY3QobGVmdCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRvbSAtIHRvcCk7CisKKyAgICAg
ICAgbV9wYWludFJlY3QgPSBXZWJSZWN0KCk7CisgICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBwYWludFJlY3QocmVjdCk7CisgICAgfQor
ICAgIFdFQktJVF9BU1NFUlQobV9wYWludFJlY3QuaXNFbXB0eSgpKTsKK30KKwordm9pZCBXZWJU
ZXN0UHJveHlCYXNlOjpwYWludFBhZ2VzV2l0aEJvdW5kYXJpZXMoKQoreworICAgIFdFQktJVF9B
U1NFUlQoIW1faXNQYWludGluZyk7CisgICAgV0VCS0lUX0FTU0VSVChjYW52YXMoKSk7CisgICAg
bV9pc1BhaW50aW5nID0gdHJ1ZTsKKworICAgIFdlYlNpemUgcGFnZVNpemVJblBpeGVscyA9IG1f
dGVzdEludGVyZmFjZXMtPndlYlZpZXcoKS0+c2l6ZSgpOworICAgIFdlYkZyYW1lKiB3ZWJGcmFt
ZSA9IG1fdGVzdEludGVyZmFjZXMtPndlYlZpZXcoKS0+bWFpbkZyYW1lKCk7CisKKyAgICBpbnQg
cGFnZUNvdW50ID0gd2ViRnJhbWUtPnByaW50QmVnaW4ocGFnZVNpemVJblBpeGVscyk7CisgICAg
aW50IHRvdGFsSGVpZ2h0ID0gcGFnZUNvdW50ICogKHBhZ2VTaXplSW5QaXhlbHMuaGVpZ2h0ICsg
MSkgLSAxOworCisgICAgU2tDYW52YXMqIHRlc3RDYW52YXMgPSBza2lhOjpUcnlDcmVhdGVCaXRt
YXBDYW52YXMocGFnZVNpemVJblBpeGVscy53aWR0aCwgdG90YWxIZWlnaHQsIHRydWUpOworICAg
IGlmICh0ZXN0Q2FudmFzKSB7CisgICAgICAgIGRpc2NhcmRCYWNraW5nU3RvcmUoKTsKKyAgICAg
ICAgbV9jYW52YXMgPSBzdGQ6OmF1dG9fcHRyPFNrQ2FudmFzPih0ZXN0Q2FudmFzKTsKKyAgICB9
IGVsc2UgeworICAgICAgICB3ZWJGcmFtZS0+cHJpbnRFbmQoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHdlYkZyYW1lLT5wcmludFBhZ2VzV2l0aEJvdW5kYXJpZXMoY2FudmFzKCks
IHBhZ2VTaXplSW5QaXhlbHMpOworICAgIHdlYkZyYW1lLT5wcmludEVuZCgpOworCisgICAgbV9p
c1BhaW50aW5nID0gZmFsc2U7Cit9CisKK1NrQ2FudmFzKiBXZWJUZXN0UHJveHlCYXNlOjpjYW52
YXMoKQoreworICAgIGlmIChtX2NhbnZhcy5nZXQoKSkKKyAgICAgICAgcmV0dXJuIG1fY2FudmFz
LmdldCgpOworICAgIFdlYlNpemUgd2lkZ2V0U2l6ZSA9IG1fdGVzdEludGVyZmFjZXMtPndlYlZp
ZXcoKS0+c2l6ZSgpOworICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gbV90ZXN0SW50ZXJm
YWNlcy0+d2ViVmlldygpLT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgIGludCBzY2FsZWRXaWR0
aCA9IHN0YXRpY19jYXN0PGludD4oY2VpbChzdGF0aWNfY2FzdDxmbG9hdD4od2lkZ2V0U2l6ZS53
aWR0aCkgKiBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgIGludCBzY2FsZWRIZWlnaHQgPSBzdGF0
aWNfY2FzdDxpbnQ+KGNlaWwoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZGdldFNpemUuaGVpZ2h0KSAq
IGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgbV9jYW52YXMgPSBzdGQ6OmF1dG9fcHRyPFNrQ2Fu
dmFzPihza2lhOjpDcmVhdGVCaXRtYXBDYW52YXMoc2NhbGVkV2lkdGgsIHNjYWxlZEhlaWdodCwg
dHJ1ZSkpOworICAgIHJldHVybiBtX2NhbnZhcy5nZXQoKTsKK30KKworLy8gUGFpbnRzIHRoZSBl
bnRpcmUgY2FudmFzIGEgc2VtaS10cmFuc3BhcmVudCBibGFjayAoZ3JheWlzaCkuIFRoaXMgaXMg
dXNlZAorLy8gYnkgdGhlIGxheW91dCB0ZXN0cyBpbiBmYXN0L3JlcGFpbnQuIFRoZSBhbHBoYSB2
YWx1ZSBtYXRjaGVzIHVwc3RyZWFtLgordm9pZCBXZWJUZXN0UHJveHlCYXNlOjpkaXNwbGF5UmVw
YWludE1hc2soKQoreworICAgIGNhbnZhcygpLT5kcmF3QVJHQigxNjcsIDAsIDAsIDApOworfQor
Cit2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpc3BsYXkoKQoreworICAgIGNvbnN0IFdlYktpdDo6
V2ViU2l6ZSYgc2l6ZSA9IG1fdGVzdEludGVyZmFjZXMtPndlYlZpZXcoKS0+c2l6ZSgpOworICAg
IFdlYlJlY3QgcmVjdCgwLCAwLCBzaXplLndpZHRoLCBzaXplLmhlaWdodCk7CisgICAgbV9wYWlu
dFJlY3QgPSByZWN0OworICAgIHBhaW50SW52YWxpZGF0ZWRSZWdpb24oKTsKKyAgICBkaXNwbGF5
UmVwYWludE1hc2soKTsKK30KKwordm9pZCBXZWJUZXN0UHJveHlCYXNlOjpkaXNwbGF5SW52YWxp
ZGF0ZWRSZWdpb24oKQoreworICAgIHBhaW50SW52YWxpZGF0ZWRSZWdpb24oKTsKKyAgICBkaXNw
bGF5UmVwYWludE1hc2soKTsKK30KKwordm9pZCBXZWJUZXN0UHJveHlCYXNlOjpkaXNjYXJkQmFj
a2luZ1N0b3JlKCkKK3sKKyAgICBtX2NhbnZhcy5yZXNldCgpOworfQorCiB2b2lkIFdlYlRlc3RQ
cm94eUJhc2U6OmRpZEludmFsaWRhdGVSZWN0KGNvbnN0IFdlYlJlY3QmIHJlY3QpCiB7CiAgICAg
Ly8gbV9wYWludFJlY3QgPSBtX3BhaW50UmVjdCBVIHJlY3QKQEAgLTUyNyw2ICs2NzQsNyBAQCB2
b2lkIFdlYlRlc3RQcm94eUJhc2U6OnNob3coV2ViTmF2aWdhdGlvblBvbGljeSkKIHZvaWQgV2Vi
VGVzdFByb3h5QmFzZTo6c2V0V2luZG93UmVjdChjb25zdCBXZWJSZWN0JiByZWN0KQogewogICAg
IHNjaGVkdWxlQ29tcG9zaXRlKCk7CisgICAgZGlzY2FyZEJhY2tpbmdTdG9yZSgpOwogfQogCiB2
b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpZEF1dG9SZXNpemUoY29uc3QgV2ViU2l6ZSYpCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAppbmRleCAyZTZhY2QyNDcz
Nzc1YmVhYTc2ZDYyMmI5ZmEwOTUwY2ExYTVhYThkLi41MGVlNmFmMmM5NmE4MjVhMGY2NTljZGQ1
OTcyMGNmMGJiMGY1YjkxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RT
aGVsbC5jcHAKQEAgLTE4MiwxNiArMTgyLDE2IEBAIHZvaWQgVGVzdFNoZWxsOjpjcmVhdGVNYWlu
V2luZG93KCkKICAgICBtX3dlYlZpZXdIb3N0ID0gYWRvcHRQdHIoY3JlYXRlTmV3V2luZG93KFdl
YlVSTCgpLCBtX2RydERldlRvb2xzQWdlbnQuZ2V0KCksIG1fdGVzdEludGVyZmFjZXMuZ2V0KCkp
KTsKICAgICBtX3dlYlZpZXcgPSBtX3dlYlZpZXdIb3N0LT53ZWJWaWV3KCk7CiAgICAgbV90ZXN0
SW50ZXJmYWNlcy0+c2V0RGVsZWdhdGUobV93ZWJWaWV3SG9zdC5nZXQoKSk7Ci0gICAgbV90ZXN0
SW50ZXJmYWNlcy0+c2V0V2ViVmlldyhtX3dlYlZpZXcpOworICAgIG1fdGVzdEludGVyZmFjZXMt
PnNldFdlYlZpZXcobV93ZWJWaWV3LCBtX3dlYlZpZXdIb3N0LT5wcm94eSgpKTsKICAgICBtX2Ry
dERldlRvb2xzQWdlbnQtPnNldFdlYlZpZXcobV93ZWJWaWV3KTsKIH0KIAogVGVzdFNoZWxsOjp+
VGVzdFNoZWxsKCkKIHsKICAgICBtX3Rlc3RJbnRlcmZhY2VzLT5zZXREZWxlZ2F0ZSgwKTsKLSAg
ICBtX3Rlc3RJbnRlcmZhY2VzLT5zZXRXZWJWaWV3KDApOworICAgIG1fdGVzdEludGVyZmFjZXMt
PnNldFdlYlZpZXcoMCwgMCk7CiAgICAgbV9kZXZUb29sc1Rlc3RJbnRlcmZhY2VzLT5zZXREZWxl
Z2F0ZSgwKTsKLSAgICBtX2RldlRvb2xzVGVzdEludGVyZmFjZXMtPnNldFdlYlZpZXcoMCk7Cisg
ICAgbV9kZXZUb29sc1Rlc3RJbnRlcmZhY2VzLT5zZXRXZWJWaWV3KDAsIDApOwogICAgIG1fZHJ0
RGV2VG9vbHNBZ2VudC0+c2V0V2ViVmlldygwKTsKICAgICBpZiAobV93ZWJWaWV3SG9zdCkKICAg
ICAgICAgbV93ZWJWaWV3SG9zdC0+c2h1dGRvd24oKTsKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lk
IFRlc3RTaGVsbDo6c2hvd0RldlRvb2xzKCkKICAgICAgICAgbV9kZXZUb29scy0+d2ViVmlldygp
LT5zZXR0aW5ncygpLT5zZXRNZW1vcnlJbmZvRW5hYmxlZCh0cnVlKTsKICAgICAgICAgbV9kZXZU
b29scy0+cHJveHkoKS0+c2V0TG9nQ29uc29sZU91dHB1dChmYWxzZSk7CiAgICAgICAgIG1fZGV2
VG9vbHNUZXN0SW50ZXJmYWNlcy0+c2V0RGVsZWdhdGUobV9kZXZUb29scyk7Ci0gICAgICAgIG1f
ZGV2VG9vbHNUZXN0SW50ZXJmYWNlcy0+c2V0V2ViVmlldyhtX2RldlRvb2xzLT53ZWJWaWV3KCkp
OworICAgICAgICBtX2RldlRvb2xzVGVzdEludGVyZmFjZXMtPnNldFdlYlZpZXcobV9kZXZUb29s
cy0+d2ViVmlldygpLCBtX2RldlRvb2xzLT5wcm94eSgpKTsKICAgICAgICAgQVNTRVJUKG1fZGV2
VG9vbHMpOwogICAgICAgICBjcmVhdGVEUlREZXZUb29sc0NsaWVudChtX2RydERldlRvb2xzQWdl
bnQuZ2V0KCkpOwogICAgIH0KQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFRlc3RTaGVsbDo6Y2xv
c2VEZXZUb29scygpCiAgICAgICAgIG1fZHJ0RGV2VG9vbHNBZ2VudC0+cmVzZXQoKTsKICAgICAg
ICAgbV9kcnREZXZUb29sc0NsaWVudC5jbGVhcigpOwogICAgICAgICBtX2RldlRvb2xzVGVzdElu
dGVyZmFjZXMtPnNldERlbGVnYXRlKDApOwotICAgICAgICBtX2RldlRvb2xzVGVzdEludGVyZmFj
ZXMtPnNldFdlYlZpZXcoMCk7CisgICAgICAgIG1fZGV2VG9vbHNUZXN0SW50ZXJmYWNlcy0+c2V0
V2ViVmlldygwLCAwKTsKICAgICAgICAgY2xvc2VXaW5kb3cobV9kZXZUb29scyk7CiAgICAgICAg
IG1fZGV2VG9vbHMgPSAwOwogICAgIH0KQEAgLTQyMSw0MyArNDIxLDcgQEAgdm9pZCBUZXN0U2hl
bGw6OmR1bXAoKQogICAgICAgICAvLyBjb21tYW5kIGxpbmUgKGZvciB0aGUgZHVtcCBwaXhlbHMg
YXJndW1lbnQpLCBhbmQgdGhlIE1ENSBzdW0gdG8KICAgICAgICAgLy8gc3Rkb3V0LgogICAgICAg
ICBkdW1wZWRBbnl0aGluZyA9IHRydWU7Ci0gICAgICAgIG1fd2ViVmlldy0+bGF5b3V0KCk7Ci0g
ICAgICAgIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCktPnRlc3RSZXBhaW50KCkp
IHsKLSAgICAgICAgICAgIFdlYlNpemUgdmlld1NpemUgPSBtX3dlYlZpZXctPnNpemUoKTsKLSAg
ICAgICAgICAgIGludCB3aWR0aCA9IHZpZXdTaXplLndpZHRoOwotICAgICAgICAgICAgaW50IGhl
aWdodCA9IHZpZXdTaXplLmhlaWdodDsKLSAgICAgICAgICAgIGlmIChtX3Rlc3RJbnRlcmZhY2Vz
LT50ZXN0UnVubmVyKCktPnN3ZWVwSG9yaXpvbnRhbGx5KCkpIHsKLSAgICAgICAgICAgICAgICBm
b3IgKFdlYlJlY3QgY29sdW1uKDAsIDAsIDEsIGhlaWdodCk7IGNvbHVtbi54IDwgd2lkdGg7IGNv
bHVtbi54KyspCi0gICAgICAgICAgICAgICAgICAgIG1fd2ViVmlld0hvc3QtPnBhaW50UmVjdChj
b2x1bW4pOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBmb3IgKFdlYlJl
Y3QgbGluZSgwLCAwLCB3aWR0aCwgMSk7IGxpbmUueSA8IGhlaWdodDsgbGluZS55KyspCi0gICAg
ICAgICAgICAgICAgICAgIG1fd2ViVmlld0hvc3QtPnBhaW50UmVjdChsaW5lKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCkt
PmlzUHJpbnRpbmcoKSkKLSAgICAgICAgICAgIG1fd2ViVmlld0hvc3QtPnBhaW50UGFnZXNXaXRo
Qm91bmRhcmllcygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3dlYlZpZXdIb3N0LT5w
YWludEludmFsaWRhdGVkUmVnaW9uKCk7Ci0KLSAgICAgICAgLy8gU2VlIGlmIHdlIG5lZWQgdG8g
ZHJhdyB0aGUgc2VsZWN0aW9uIGJvdW5kcyByZWN0LiBTZWxlY3Rpb24gYm91bmRzCi0gICAgICAg
IC8vIHJlY3QgaXMgdGhlIHJlY3QgZW5jbG9zaW5nIHRoZSAocG9zc2libHkgdHJhbnNmb3JtZWQp
IHNlbGVjdGlvbi4KLSAgICAgICAgLy8gVGhlIHJlY3Qgc2hvdWxkIGJlIGRyYXduIGFmdGVyIGV2
ZXJ5dGhpbmcgaXMgbGFpZCBvdXQgYW5kIHBhaW50ZWQuCi0gICAgICAgIGlmIChtX3Rlc3RJbnRl
cmZhY2VzLT50ZXN0UnVubmVyKCktPnNob3VsZER1bXBTZWxlY3Rpb25SZWN0KCkpIHsKLSAgICAg
ICAgICAgIC8vIElmIHRoZXJlIGlzIGEgc2VsZWN0aW9uIHJlY3QgLSBkcmF3IGEgcmVkIDFweCBi
b3JkZXIgZW5jbG9zaW5nIHJlY3QKLSAgICAgICAgICAgIFdlYlJlY3Qgd3IgPSBmcmFtZS0+c2Vs
ZWN0aW9uQm91bmRzUmVjdCgpOwotICAgICAgICAgICAgaWYgKCF3ci5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgICAgICAvLyBSZW5kZXIgYSByZWQgcmVjdGFuZ2xlIGJvdW5kaW5nIHNlbGVjdGlv
biByZWN0Ci0gICAgICAgICAgICAgICAgU2tQYWludCBwYWludDsKLSAgICAgICAgICAgICAgICBw
YWludC5zZXRDb2xvcigweEZGRkYwMDAwKTsgLy8gRnVsbHkgb3BhcXVlIHJlZAotICAgICAgICAg
ICAgICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOwotICAgICAgICAg
ICAgICAgIHBhaW50LnNldEZsYWdzKFNrUGFpbnQ6OmtBbnRpQWxpYXNfRmxhZyk7Ci0gICAgICAg
ICAgICAgICAgcGFpbnQuc2V0U3Ryb2tlV2lkdGgoMS4wZik7Ci0gICAgICAgICAgICAgICAgU2tJ
UmVjdCByZWN0OyAvLyBCb3VuZGluZyByZWN0Ci0gICAgICAgICAgICAgICAgcmVjdC5zZXQod3Iu
eCwgd3IueSwgd3IueCArIHdyLndpZHRoLCB3ci55ICsgd3IuaGVpZ2h0KTsKLSAgICAgICAgICAg
ICAgICBtX3dlYlZpZXdIb3N0LT5jYW52YXMoKS0+ZHJhd0lSZWN0KHJlY3QsIHBhaW50KTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGR1bXBJbWFnZShtX3dlYlZpZXdIb3N0
LT5jYW52YXMoKSk7CisgICAgICAgIGR1bXBJbWFnZShtX3dlYlZpZXdIb3N0LT5wcm94eSgpLT5j
YXB0dXJlUGl4ZWxzKCkpOwogICAgIH0KICAgICBtX3ByaW50ZXIuaGFuZGxlVGVzdEZvb3Rlcihk
dW1wZWRBbnl0aGluZyk7CiAgICAgZmZsdXNoKHN0ZG91dCk7CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggMjhmNDM1Njk1NWNjYmJjYjNiZWU3
MGJjZTNiMzY0OTMyMzkwNjliYS4uZGQ5YmUwNTMyMDVlYTg1NTZiYzQ2ZTNjNWZiZWI0OGUyOGQx
MjU0YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cApAQCAtNjAsNyArNjAsNiBAQAogI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3BhY2UuaCIKICNp
bmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViV2luZG93RmVhdHVyZXMuaCIKLSNpbmNs
dWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9y
dC90ZXN0X21lZGlhX3N0cmVhbV9jbGllbnQuaCIKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93
ZWJraXRfc3VwcG9ydC5oIgogI2luY2x1ZGUgPGNjdHlwZT4KQEAgLTQ3Myw3ICs0NzIsNiBAQCB2
b2lkIFdlYlZpZXdIb3N0OjpzZXRXaW5kb3dSZWN0KGNvbnN0IFdlYlJlY3QmIHJlY3QpCiAgICAg
ICAgIG1fd2luZG93UmVjdC5oZWlnaHQgPSAxICsgYm9yZGVyMjsKICAgICBpbnQgd2lkdGggPSBt
X3dpbmRvd1JlY3Qud2lkdGggLSBib3JkZXIyOwogICAgIGludCBoZWlnaHQgPSBtX3dpbmRvd1Jl
Y3QuaGVpZ2h0IC0gYm9yZGVyMjsKLSAgICBkaXNjYXJkQmFja2luZ1N0b3JlKCk7CiAgICAgd2Vi
V2lkZ2V0KCktPnJlc2l6ZShXZWJTaXplKHdpZHRoLCBoZWlnaHQpKTsKIH0KIApAQCAtNzI2LDcg
KzcyNCw2IEBAIHZvaWQgV2ViVmlld0hvc3Q6OnNldERhdGFiYXNlUXVvdGEoaW50IHF1b3RhKQog
dm9pZCBXZWJWaWV3SG9zdDo6c2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVG
YWN0b3IpCiB7CiAgICAgd2ViVmlldygpLT5zZXREZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2Fs
ZUZhY3Rvcik7Ci0gICAgZGlzY2FyZEJhY2tpbmdTdG9yZSgpOwogfQogCiB2b2lkIFdlYlZpZXdI
b3N0OjpzZXRGb2N1cyhib29sIGZvY3VzZWQpCkBAIC04NDIsMjEgKzgzOSw2IEBAIGJvb2wgV2Vi
Vmlld0hvc3Q6Ondhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQoKQogfQogI2VuZGlmCiAK
LXZvaWQgV2ViVmlld0hvc3Q6OmRpc3BsYXkoKQotewotICAgIGNvbnN0IFdlYktpdDo6V2ViU2l6
ZSYgc2l6ZSA9IHdlYlZpZXcoKS0+c2l6ZSgpOwotICAgIFdlYlJlY3QgcmVjdCgwLCAwLCBzaXpl
LndpZHRoLCBzaXplLmhlaWdodCk7Ci0gICAgcHJveHkoKS0+c2V0UGFpbnRSZWN0KHJlY3QpOwot
ICAgIHBhaW50SW52YWxpZGF0ZWRSZWdpb24oKTsKLSAgICBkaXNwbGF5UmVwYWludE1hc2soKTsK
LX0KLQotdm9pZCBXZWJWaWV3SG9zdDo6ZGlzcGxheUludmFsaWRhdGVkUmVnaW9uKCkKLXsKLSAg
ICBwYWludEludmFsaWRhdGVkUmVnaW9uKCk7Ci0gICAgZGlzcGxheVJlcGFpbnRNYXNrKCk7Ci19
Ci0KIHZvaWQgV2ViVmlld0hvc3Q6OnRlc3RGaW5pc2hlZCgpCiB7CiAgICAgbV9zaGVsbC0+dGVz
dEZpbmlzaGVkKHRoaXMpOwpAQCAtMTAwMCw4ICs5ODIsNiBAQCB2b2lkIFdlYlZpZXdIb3N0Ojpy
ZXNldCgpCiAgICAgbV9sYXN0UGFnZUlkVXBkYXRlZCA9IC0xOwogICAgIG1faGFzV2luZG93ID0g
ZmFsc2U7CiAgICAgbV9pbk1vZGFsTG9vcCA9IGZhbHNlOwotICAgIG1faXNQYWludGluZyA9IGZh
bHNlOwotICAgIG1fY2FudmFzLmNsZWFyKCk7CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAg
ICBtX3BvaW50ZXJMb2NrZWQgPSBmYWxzZTsKICAgICBtX3BvaW50ZXJMb2NrUGxhbm5lZFJlc3Vs
dCA9IFBvaW50ZXJMb2NrV2lsbFN1Y2NlZWQ7CkBAIC0xMTk1LDEwOSArMTE3NSwzIEBAIHdlYmtp
dF9zdXBwb3J0OjpUZXN0TWVkaWFTdHJlYW1DbGllbnQqIFdlYlZpZXdIb3N0Ojp0ZXN0TWVkaWFT
dHJlYW1DbGllbnQoKQogICAgIHJldHVybiBtX3Rlc3RNZWRpYVN0cmVhbUNsaWVudC5nZXQoKTsK
IH0KICNlbmRpZgotCi0vLyBQYWludGluZyBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXZvaWQgV2ViVmlld0hvc3Q6
OnBhaW50UmVjdChjb25zdCBXZWJSZWN0JiByZWN0KQotewotICAgIEFTU0VSVCghbV9pc1BhaW50
aW5nKTsKLSAgICBBU1NFUlQoY2FudmFzKCkpOwotICAgIG1faXNQYWludGluZyA9IHRydWU7Ci0g
ICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSB3ZWJWaWV3KCktPmRldmljZVNjYWxlRmFjdG9y
KCk7Ci0gICAgaW50IHNjYWxlZFggPSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PGZsb2F0
PihyZWN0LngpICogZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIGludCBzY2FsZWRZID0gc3RhdGlj
X2Nhc3Q8aW50PihzdGF0aWNfY2FzdDxmbG9hdD4ocmVjdC55KSAqIGRldmljZVNjYWxlRmFjdG9y
KTsKLSAgICBpbnQgc2NhbGVkV2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHJlY3Qud2lkdGgpICogZGV2aWNlU2NhbGVGYWN0b3IpKTsKLSAgICBpbnQgc2Nh
bGVkSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihjZWlsKHN0YXRpY19jYXN0PGZsb2F0PihyZWN0
LmhlaWdodCkgKiBkZXZpY2VTY2FsZUZhY3RvcikpOwotICAgIFdlYlJlY3QgZGV2aWNlUmVjdChz
Y2FsZWRYLCBzY2FsZWRZLCBzY2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0KTsKLSAgICB3ZWJXaWRn
ZXQoKS0+cGFpbnQoY2FudmFzKCksIGRldmljZVJlY3QpOwotICAgIG1faXNQYWludGluZyA9IGZh
bHNlOwotfQotCi12b2lkIFdlYlZpZXdIb3N0OjpwYWludEludmFsaWRhdGVkUmVnaW9uKCkKLXsK
LSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCi0gICAgd2ViV2lkZ2V0KCktPmFu
aW1hdGUoMC4wKTsKLSNlbmRpZgotICAgIHdlYldpZGdldCgpLT5sYXlvdXQoKTsKLSAgICBXZWJT
aXplIHdpZGdldFNpemUgPSB3ZWJXaWRnZXQoKS0+c2l6ZSgpOwotICAgIFdlYlJlY3QgY2xpZW50
UmVjdCgwLCAwLCB3aWRnZXRTaXplLndpZHRoLCB3aWRnZXRTaXplLmhlaWdodCk7Ci0KLSAgICAv
LyBQYWludCB0aGUgY2FudmFzIGlmIG5lY2Vzc2FyeS4gQWxsb3cgcGFpbnRpbmcgdG8gZ2VuZXJh
dGUgZXh0cmEgcmVjdHMKLSAgICAvLyBmb3IgdGhlIGZpcnN0IHR3byBjYWxscy4gVGhpcyBpcyBu
ZWNlc3NhcnkgYmVjYXVzZSBzb21lIFdlYkNvcmUgcmVuZGVyaW5nCi0gICAgLy8gb2JqZWN0cyB1
cGRhdGUgdGhlaXIgbGF5b3V0IG9ubHkgd2hlbiBwYWludGVkLgotICAgIC8vIFN0b3JlIHRoZSB0
b3RhbCBhcmVhIHBhaW50ZWQgaW4gdG90YWxfcGFpbnQuIFRoZW4gdGVsbCB0aGUgZ2RrIHdpbmRv
dwotICAgIC8vIHRvIHVwZGF0ZSB0aGF0IGFyZWEgYWZ0ZXIgd2UncmUgZG9uZSBwYWludGluZyBp
dC4KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkgewotICAgICAgICAvLyByZWN0ID0g
aW50ZXJzZWN0KHByb3h5KCktPnBhaW50UmVjdCgpICwgY2xpZW50UmVjdCkKLSAgICAgICAgV2Vi
UmVjdCBkYW1hZ2VSZWN0ID0gcHJveHkoKS0+cGFpbnRSZWN0KCk7Ci0gICAgICAgIGludCBsZWZ0
ID0gbWF4KGRhbWFnZVJlY3QueCwgY2xpZW50UmVjdC54KTsKLSAgICAgICAgaW50IHRvcCA9IG1h
eChkYW1hZ2VSZWN0LnksIGNsaWVudFJlY3QueSk7Ci0gICAgICAgIGludCByaWdodCA9IG1pbihk
YW1hZ2VSZWN0LnggKyBkYW1hZ2VSZWN0LndpZHRoLCBjbGllbnRSZWN0LnggKyBjbGllbnRSZWN0
LndpZHRoKTsKLSAgICAgICAgaW50IGJvdHRvbSA9IG1pbihkYW1hZ2VSZWN0LnkgKyBkYW1hZ2VS
ZWN0LmhlaWdodCwgY2xpZW50UmVjdC55ICsgY2xpZW50UmVjdC5oZWlnaHQpOwotICAgICAgICBX
ZWJSZWN0IHJlY3Q7Ci0gICAgICAgIGlmIChsZWZ0IDwgcmlnaHQgJiYgdG9wIDwgYm90dG9tKQot
ICAgICAgICAgICAgcmVjdCA9IFdlYlJlY3QobGVmdCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRv
bSAtIHRvcCk7Ci0KLSAgICAgICAgcHJveHkoKS0+c2V0UGFpbnRSZWN0KFdlYlJlY3QoKSk7Ci0g
ICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBwYWludFJlY3QocmVjdCk7Ci0gICAgfQotICAgIEFTU0VSVChwcm94eSgpLT5wYWludFJlY3Qo
KS5pc0VtcHR5KCkpOwotfQotCi12b2lkIFdlYlZpZXdIb3N0OjpwYWludFBhZ2VzV2l0aEJvdW5k
YXJpZXMoKQotewotICAgIEFTU0VSVCghbV9pc1BhaW50aW5nKTsKLSAgICBBU1NFUlQoY2FudmFz
KCkpOwotICAgIG1faXNQYWludGluZyA9IHRydWU7Ci0KLSAgICBXZWJTaXplIHBhZ2VTaXplSW5Q
aXhlbHMgPSB3ZWJXaWRnZXQoKS0+c2l6ZSgpOwotICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdl
YlZpZXcoKS0+bWFpbkZyYW1lKCk7Ci0KLSAgICBpbnQgcGFnZUNvdW50ID0gd2ViRnJhbWUtPnBy
aW50QmVnaW4ocGFnZVNpemVJblBpeGVscyk7Ci0gICAgaW50IHRvdGFsSGVpZ2h0ID0gcGFnZUNv
dW50ICogKHBhZ2VTaXplSW5QaXhlbHMuaGVpZ2h0ICsgMSkgLSAxOwotCi0gICAgU2tDYW52YXMq
IHRlc3RDYW52YXMgPSBza2lhOjpUcnlDcmVhdGVCaXRtYXBDYW52YXMocGFnZVNpemVJblBpeGVs
cy53aWR0aCwgdG90YWxIZWlnaHQsIHRydWUpOwotICAgIGlmICh0ZXN0Q2FudmFzKSB7Ci0gICAg
ICAgIGRpc2NhcmRCYWNraW5nU3RvcmUoKTsKLSAgICAgICAgbV9jYW52YXMgPSBhZG9wdFB0cih0
ZXN0Q2FudmFzKTsKLSAgICB9IGVsc2UgewotICAgICAgICB3ZWJGcmFtZS0+cHJpbnRFbmQoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHdlYkZyYW1lLT5wcmludFBhZ2VzV2l0aEJv
dW5kYXJpZXMoY2FudmFzKCksIHBhZ2VTaXplSW5QaXhlbHMpOwotICAgIHdlYkZyYW1lLT5wcmlu
dEVuZCgpOwotCi0gICAgbV9pc1BhaW50aW5nID0gZmFsc2U7Ci19Ci0KLVNrQ2FudmFzKiBXZWJW
aWV3SG9zdDo6Y2FudmFzKCkKLXsKLSAgICBpZiAobV9jYW52YXMpCi0gICAgICAgIHJldHVybiBt
X2NhbnZhcy5nZXQoKTsKLSAgICBXZWJTaXplIHdpZGdldFNpemUgPSB3ZWJXaWRnZXQoKS0+c2l6
ZSgpOwotICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gd2ViVmlldygpLT5kZXZpY2VTY2Fs
ZUZhY3RvcigpOwotICAgIGludCBzY2FsZWRXaWR0aCA9IHN0YXRpY19jYXN0PGludD4oY2VpbChz
dGF0aWNfY2FzdDxmbG9hdD4od2lkZ2V0U2l6ZS53aWR0aCkgKiBkZXZpY2VTY2FsZUZhY3Rvcikp
OwotICAgIGludCBzY2FsZWRIZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHdpZGdldFNpemUuaGVpZ2h0KSAqIGRldmljZVNjYWxlRmFjdG9yKSk7Ci0gICAg
cmVzZXRTY3JvbGxSZWN0KCk7Ci0gICAgbV9jYW52YXMgPSBhZG9wdFB0cihza2lhOjpDcmVhdGVC
aXRtYXBDYW52YXMoc2NhbGVkV2lkdGgsIHNjYWxlZEhlaWdodCwgdHJ1ZSkpOwotICAgIHJldHVy
biBtX2NhbnZhcy5nZXQoKTsKLX0KLQotdm9pZCBXZWJWaWV3SG9zdDo6cmVzZXRTY3JvbGxSZWN0
KCkKLXsKLX0KLQotdm9pZCBXZWJWaWV3SG9zdDo6ZGlzY2FyZEJhY2tpbmdTdG9yZSgpCi17Ci0g
ICAgbV9jYW52YXMuY2xlYXIoKTsKLX0KLQotLy8gUGFpbnRzIHRoZSBlbnRpcmUgY2FudmFzIGEg
c2VtaS10cmFuc3BhcmVudCBibGFjayAoZ3JheWlzaCkuIFRoaXMgaXMgdXNlZAotLy8gYnkgdGhl
IGxheW91dCB0ZXN0cyBpbiBmYXN0L3JlcGFpbnQuIFRoZSBhbHBoYSB2YWx1ZSBtYXRjaGVzIHVw
c3RyZWFtLgotdm9pZCBXZWJWaWV3SG9zdDo6ZGlzcGxheVJlcGFpbnRNYXNrKCkKLXsKLSAgICBj
YW52YXMoKS0+ZHJhd0FSR0IoMTY3LCAwLCAwLCAwKTsKLX0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4IDIzYTIyZDhmZjgwOGE4MjE0ZDA1NzllOWJl
YzU5MjRjZDY0ZGVkOGUuLjRmOWM3YzkyMjQwNWY1MDQ2ZDE5MWViZGIwYmMwMTI1NmQxZDM2OWQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtODgs
MTIgKzg4LDYgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xp
ZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2b2lkIHJlc2V0KCk7CiAg
ICAgdm9pZCBzZXRQZW5kaW5nRXh0cmFEYXRhKFBhc3NPd25QdHI8VGVzdFNoZWxsRXh0cmFEYXRh
Pik7CiAKLSAgICB2b2lkIHBhaW50UmVjdChjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKLSAgICB2
b2lkIHBhaW50SW52YWxpZGF0ZWRSZWdpb24oKTsKLSAgICB2b2lkIHBhaW50UGFnZXNXaXRoQm91
bmRhcmllcygpOwotICAgIFNrQ2FudmFzKiBjYW52YXMoKTsKLSAgICB2b2lkIGRpc3BsYXlSZXBh
aW50TWFzaygpOwotCiAgICAgVGVzdE5hdmlnYXRpb25Db250cm9sbGVyKiBuYXZpZ2F0aW9uQ29u
dHJvbGxlcigpIHsgcmV0dXJuIG1fbmF2aWdhdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KIAogICAg
IHZvaWQgY2xvc2VXaWRnZXQoKTsKQEAgLTE1Myw4ICsxNDcsNiBAQCBjbGFzcyBXZWJWaWV3SG9z
dCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1l
Q2xpZW50LAogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrU3BlZWNoUmVjb2duaXRpb25FcnJvcihj
b25zdCBzdGQ6OnN0cmluZyYsIGNvbnN0IHN0ZDo6c3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBib29sIHdhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQoKSBPVkVSUklERTsKICNl
bmRpZgotICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lvbigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCB0ZXN0RmluaXNoZWQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdGVzdFRpbWVkT3V0
KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzQmVpbmdEZWJ1Z2dlZCgpIE9WRVJSSURF
OwpAQCAtMjk4LDggKzI5MCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcmludEZyYW1lRGVzY3Jp
cHRpb24oV2ViS2l0OjpXZWJGcmFtZSopOwogCiAgICAgYm9vbCBoYXNXaW5kb3coKSBjb25zdCB7
IHJldHVybiBtX2hhc1dpbmRvdzsgfQotICAgIHZvaWQgcmVzZXRTY3JvbGxSZWN0KCk7Ci0gICAg
dm9pZCBkaXNjYXJkQmFja2luZ1N0b3JlKCk7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
ICAgIHdlYmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFTdHJlYW1DbGllbnQqIHRlc3RNZWRpYVN0cmVh
bUNsaWVudCgpOwpAQCAtMzMzLDEwICszMjMsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6c3RyaW5n
IG1fZWRpdENvbW1hbmROYW1lOwogICAgIHN0ZDo6c3RyaW5nIG1fZWRpdENvbW1hbmRWYWx1ZTsK
IAotICAgIC8vIFBhaW50aW5nLgotICAgIE93blB0cjxTa0NhbnZhcz4gbV9jYW52YXM7Ci0gICAg
V2ViS2l0OjpXZWJSZWN0IG1fcGFpbnRSZWN0OwotICAgIGJvb2wgbV9pc1BhaW50aW5nOwogCiAg
ICAgT3duUHRyPFdlYktpdDo6V2ViQ29udGV4dE1lbnVEYXRhPiBtX2xhc3RDb250ZXh0TWVudURh
dGE7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188415</attachid>
            <date>2013-02-14 13:38:28 -0800</date>
            <delta_ts>2013-02-14 14:18:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109686-20130214223455.patch</filename>
            <type>text/plain</type>
            <size>35373</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyOTAwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTdiMGY1ZDk1YjU0MDViMDllYTg0MWIxYzA4NzhkYTEy
ZDUzZDA0ZC4uOWVjZTRmYTU2ZTQwZGQ3NjRjODY1MDllYzc2YzkzODQ2MmVjMmFiZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0
IEBACisyMDEzLTAyLTE0ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBwaXhlbCBnZW5lcmF0aW9uIGxvZ2ljIHRvIFRlc3RS
dW5uZXIgbGlicmFyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA5Njg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUu
Z3lwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYlRlc3REZWxlZ2F0ZS5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1Ymxp
Yy9XZWJUZXN0UHJveHkuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUZXN0UnVubmVyLmg6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50
ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0SW50ZXJmYWNlczo6flRl
c3RJbnRlcmZhY2VzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RJbnRlcmZhY2VzOjpz
ZXRXZWJWaWV3KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RJbnRlcmZhY2VzOjpwcm94
eSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcik6CisgICAgICAgIChUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpzZXRXZWJWaWV3KToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2V0QmFja2luZ1Nj
YWxlRmFjdG9yKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OmRpc3BsYXkp
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6ZGlzcGxheUludmFsaWRhdGVk
UmVnaW9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0UnVubmVyLmg6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFRlc3RS
dW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlRlc3RJbnRlcmZhY2VzLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJ
bnRlcmZhY2VzOjpzZXRXZWJWaWV3KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6V2ViVGVzdFByb3h5QmFzZTo6V2ViVGVzdFByb3h5QmFzZSk6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjp+V2ViVGVzdFByb3h5QmFzZSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjpyZXNldCk6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjpjYXB0dXJlUGl4ZWxzKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6cGFp
bnRSZWN0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnBhaW50
SW52YWxpZGF0ZWRSZWdpb24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5
QmFzZTo6cGFpbnRQYWdlc1dpdGhCb3VuZGFyaWVzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OldlYlRlc3RQcm94eUJhc2U6OmNhbnZhcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJU
ZXN0UHJveHlCYXNlOjpkaXNwbGF5UmVwYWludE1hc2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6V2ViVGVzdFByb3h5QmFzZTo6ZGlzcGxheSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpX
ZWJUZXN0UHJveHlCYXNlOjpkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24pOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6ZGlzY2FyZEJhY2tpbmdTdG9yZSk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjpzZXRXaW5kb3dSZWN0KToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwOgorICAgICAgICAo
VGVzdFNoZWxsOjpjcmVhdGVNYWluV2luZG93KToKKyAgICAgICAgKFRlc3RTaGVsbDo6flRlc3RT
aGVsbCk6CisgICAgICAgIChUZXN0U2hlbGw6OnNob3dEZXZUb29scyk6CisgICAgICAgIChUZXN0
U2hlbGw6OmNsb3NlRGV2VG9vbHMpOgorICAgICAgICAoVGVzdFNoZWxsOjpkdW1wKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChX
ZWJWaWV3SG9zdDo6c2V0V2luZG93UmVjdCk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6c2V0RGV2
aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnJlc2V0KToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorICAgICAgICAoV2ViVmll
d0hvc3QpOgorCiAyMDEzLTAyLTE0ICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIGVvbC1zdHlsZT1uYXRpdmUgdG8gc29sdXRpb24gZmlsZXMuIEFkZCBh
IG5ldyBzb2x1dGlvbiBmaWxlLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKaW5kZXggMDgzOTM5NmI4MmIx
NDNjYWIwZDBmZTMyMmZhYTAwYTQ1YzMxODEzOS4uZDQzOGUzN2RjMDMxZmUyNTk2NDQ2NjBmYTUw
MjlmODVlYzA2ZTQ5NSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwCkBAIC0xMTQsNiArMTE0LDcgQEAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNlL2Jhc2UuZ3lw
OmJhc2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNf
ZGlyKS9idWlsZC90ZW1wX2d5cC9nb29nbGV1cmwuZ3lwOmdvb2dsZXVybCcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3NraWEvc2tpYS5neXA6
c2tpYScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19k
aXIpL3Y4L3Rvb2xzL2d5cC92OC5neXA6djgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGlu
Z3MnOiB7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oCmluZGV4IDI4NTZjN2Q1OGI4
NjUyNmE2N2U5YTJiMmMyMGUyZTI3OWU4Mzg0ZGYuLjA3NzhlYzFmZDU4MjdjYzExYzJkMWVlYTQ1
MjNiMTY0YjdjYjdhNzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oCkBAIC05
OSw4ICs5OSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWRkTW9ja1NwZWVjaFJlY29n
bml0aW9uUmVzdWx0KGNvbnN0IHN0ZDo6c3RyaW5nJiwgZG91YmxlKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0TW9ja1NwZWVjaFJlY29nbml0aW9uRXJyb3IoY29uc3Qgc3RkOjpzdHJpbmcmLCBj
b25zdCBzdGQ6OnN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCB3YXNNb2NrU3BlZWNoUmVj
b2duaXRpb25BYm9ydGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlz
cGxheSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24oKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgdGVzdEZpbmlzaGVkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHRlc3RUaW1lZE91dCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0JlaW5nRGVidWdnZWQoKSB7
IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgKaW5k
ZXggMDA2MjAzY2NhMjBhYjJlYTA5ODQxNzUwNjBlNjg0OGZmNzhjNDA0MC4uNDUyYzE0OTFlNWFh
YjgzOTYxYjJlNjE2NDM4MjMwN2Y2N2RiZjJhOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0
SW50ZXJmYWNlcy5oCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsK
IAogY2xhc3MgVGVzdEludGVyZmFjZXM7CiBjbGFzcyBXZWJUZXN0RGVsZWdhdGU7CitjbGFzcyBX
ZWJUZXN0UHJveHlCYXNlOwogY2xhc3MgV2ViVGVzdFJ1bm5lcjsKIAogY2xhc3MgV0VCVEVTVFJV
Tk5FUl9FWFBPUlQgV2ViVGVzdEludGVyZmFjZXMgewpAQCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgV2ViVGVzdEludGVyZmFjZXMoKTsKICAgICB+V2ViVGVzdEludGVyZmFjZXMoKTsKIAot
ICAgIHZvaWQgc2V0V2ViVmlldyhXZWJLaXQ6OldlYlZpZXcqKTsKKyAgICB2b2lkIHNldFdlYlZp
ZXcoV2ViS2l0OjpXZWJWaWV3KiwgV2ViVGVzdFByb3h5QmFzZSopOwogICAgIHZvaWQgc2V0RGVs
ZWdhdGUoV2ViVGVzdERlbGVnYXRlKik7CiAgICAgdm9pZCBiaW5kVG8oV2ViS2l0OjpXZWJGcmFt
ZSopOwogICAgIHZvaWQgcmVzZXRBbGwoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgKaW5k
ZXggMTVmNTYwYmJhOTk2Mjc4ZGYwNzQwOGJkYjYzYTdmNDJhYTU3YTI3Mi4uNzQ3ZDZmM2RlM2Yy
NjNjMzk1Zjg5MWJlOWY4OTQ2ZjkyNzJjYzYyNSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5
LmgKQEAgLTc0LDYgKzc0LDggQEAgc3RydWN0IFdlYlNpemU7CiBzdHJ1Y3QgV2ViV2luZG93RmVh
dHVyZXM7CiB9CiAKK2NsYXNzIFNrQ2FudmFzOworCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7
CiAKIGNsYXNzIFNwZWxsQ2hlY2tDbGllbnQ7CkBAIC05MiwxMyArOTQsMTUgQEAgcHVibGljOgog
CiAgICAgV2ViS2l0OjpXZWJTcGVsbENoZWNrQ2xpZW50ICpzcGVsbENoZWNrQ2xpZW50KCkgY29u
c3Q7CiAKLSAgICB2b2lkIHNldFBhaW50UmVjdChjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKLSAg
ICBXZWJLaXQ6OldlYlJlY3QgcGFpbnRSZWN0KCkgY29uc3Q7Ci0KICAgICBzdGQ6OnN0cmluZyBj
YXB0dXJlVHJlZShib29sIGRlYnVnUmVuZGVyVHJlZSk7CisgICAgU2tDYW52YXMqIGNhcHR1cmVQ
aXhlbHMoKTsKIAogICAgIHZvaWQgc2V0TG9nQ29uc29sZU91dHB1dChib29sIGVuYWJsZWQpOwog
CisgICAgdm9pZCBkaXNwbGF5KCk7CisgICAgdm9pZCBkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24o
KTsKKyAgICB2b2lkIGRpc2NhcmRCYWNraW5nU3RvcmUoKTsKKwogcHJvdGVjdGVkOgogICAgIFdl
YlRlc3RQcm94eUJhc2UoKTsKICAgICB+V2ViVGVzdFByb3h5QmFzZSgpOwpAQCAtMTY5LDYgKzE3
MywxMSBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBsb2NhdGlvbkNoYW5nZURv
bmUoV2ViS2l0OjpXZWJGcmFtZSopOworICAgIHZvaWQgcGFpbnRSZWN0KGNvbnN0IFdlYktpdDo6
V2ViUmVjdCYpOworICAgIHZvaWQgcGFpbnRJbnZhbGlkYXRlZFJlZ2lvbigpOworICAgIHZvaWQg
cGFpbnRQYWdlc1dpdGhCb3VuZGFyaWVzKCk7CisgICAgU2tDYW52YXMqIGNhbnZhcygpOworICAg
IHZvaWQgZGlzcGxheVJlcGFpbnRNYXNrKCk7CiAKICAgICBUZXN0SW50ZXJmYWNlcyogbV90ZXN0
SW50ZXJmYWNlczsKICAgICBXZWJUZXN0RGVsZWdhdGUqIG1fZGVsZWdhdGU7CkBAIC0xNzYsNyAr
MTg1LDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjphdXRvX3B0cjxTcGVsbENoZWNrQ2xpZW50PiBt
X3NwZWxsY2hlY2s7CiAgICAgc3RkOjphdXRvX3B0cjxXZWJVc2VyTWVkaWFDbGllbnRNb2NrPiBt
X3VzZXJNZWRpYUNsaWVudDsKIAorICAgIC8vIFBhaW50aW5nLgorICAgIFNrQ2FudmFzKiBtX2Nh
bnZhczsKICAgICBXZWJLaXQ6OldlYlJlY3QgbV9wYWludFJlY3Q7CisgICAgYm9vbCBtX2lzUGFp
bnRpbmc7CiAgICAgc3RkOjptYXA8dW5zaWduZWQsIHN0ZDo6c3RyaW5nPiBtX3Jlc291cmNlSWRl
bnRpZmllck1hcDsKIAogICAgIGJvb2wgbV9sb2dDb25zb2xlT3V0cHV0OwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFJ1
bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViVGVzdFJ1bm5lci5oCmluZGV4IDg4ZDRhZTViN2E2NjU4YzA5OWQ2OTFmOTBjMTUyNzZlNGM2
ODU5OWUuLjExZDJmMzQ1ZDhhM2VkOTJmZGVkMWI2MjBmOGJhZjc2OTU1ZjYxZmEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRl
c3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3B1YmxpYy9XZWJUZXN0UnVubmVyLmgKQEAgLTQ0LDEwICs0NCw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcEFzQXVkaW8oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBj
b25zdCBXZWJLaXQ6OldlYkFycmF5QnVmZmVyVmlldyogYXVkaW9EYXRhKCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJQZXJtaXNzaW9uQ2xpZW50KiB3ZWJQZXJtaXNzaW9ucygp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcFNlbGVjdGlvblJlY3QoKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIHRlc3RSZXBhaW50KCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBzd2VlcEhvcml6b250YWxseSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFs
IGJvb2wgaXNQcmludGluZygpIGNvbnN0ID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRl
cmZhY2VzLmNwcAppbmRleCBiNDQzZGY1MGYzOGI2ZGY2NjJhMzEzYjlhMjRlMDYzZmVhYjE5MmIw
Li5hZDdlMmRlNGY2MjUwZDQzMDllNTRjZDFmOTkyYjJjY2M5NTkxZWQ1IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNl
cy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
VGVzdEludGVyZmFjZXMuY3BwCkBAIC02Myw3ICs2Myw3IEBAIFRlc3RJbnRlcmZhY2VzOjp+VGVz
dEludGVyZmFjZXMoKQogICAgIG1fZXZlbnRTZW5kZXItPnNldFdlYlZpZXcoMCk7CiAgICAgLy8g
bV9nYW1lcGFkQ29udHJvbGxlciBkb2Vzbid0IGRlcGVuZCBvbiBXZWJWaWV3LgogICAgIG1fdGV4
dElucHV0Q29udHJvbGxlci0+c2V0V2ViVmlldygwKTsKLSAgICBtX3Rlc3RSdW5uZXItPnNldFdl
YlZpZXcoMCk7CisgICAgbV90ZXN0UnVubmVyLT5zZXRXZWJWaWV3KDAsIDApOwogCiAgICAgbV9h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci0+c2V0RGVsZWdhdGUoMCk7CiAgICAgbV9ldmVudFNlbmRl
ci0+c2V0RGVsZWdhdGUoMCk7CkBAIC03MiwxNCArNzIsMTUgQEAgVGVzdEludGVyZmFjZXM6On5U
ZXN0SW50ZXJmYWNlcygpCiAgICAgbV90ZXN0UnVubmVyLT5zZXREZWxlZ2F0ZSgwKTsKIH0KIAot
dm9pZCBUZXN0SW50ZXJmYWNlczo6c2V0V2ViVmlldyhXZWJWaWV3KiB3ZWJWaWV3KQordm9pZCBU
ZXN0SW50ZXJmYWNlczo6c2V0V2ViVmlldyhXZWJWaWV3KiB3ZWJWaWV3LCBXZWJUZXN0UHJveHlC
YXNlKiBwcm94eSkKIHsKICAgICBtX3dlYlZpZXcgPSB3ZWJWaWV3OworICAgIG1fcHJveHkgPSBw
cm94eTsKICAgICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLT5zZXRXZWJWaWV3KHdlYlZpZXcp
OwogICAgIG1fZXZlbnRTZW5kZXItPnNldFdlYlZpZXcod2ViVmlldyk7CiAgICAgLy8gbV9nYW1l
cGFkQ29udHJvbGxlciBkb2Vzbid0IGRlcGVuZCBvbiBXZWJWaWV3LgogICAgIG1fdGV4dElucHV0
Q29udHJvbGxlci0+c2V0V2ViVmlldyh3ZWJWaWV3KTsKLSAgICBtX3Rlc3RSdW5uZXItPnNldFdl
YlZpZXcod2ViVmlldyk7CisgICAgbV90ZXN0UnVubmVyLT5zZXRXZWJWaWV3KHdlYlZpZXcsIHBy
b3h5KTsKIH0KIAogdm9pZCBUZXN0SW50ZXJmYWNlczo6c2V0RGVsZWdhdGUoV2ViVGVzdERlbGVn
YXRlKiBkZWxlZ2F0ZSkKQEAgLTE1Niw0ICsxNTcsOSBAQCBXZWJUZXN0RGVsZWdhdGUqIFRlc3RJ
bnRlcmZhY2VzOjpkZWxlZ2F0ZSgpCiAgICAgcmV0dXJuIG1fZGVsZWdhdGU7CiB9CiAKK1dlYlRl
c3RQcm94eUJhc2UqIFRlc3RJbnRlcmZhY2VzOjpwcm94eSgpCit7CisgICAgcmV0dXJuIG1fcHJv
eHk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oCmluZGV4IGVjM2ExZGUyODY5OGNm
YTBlNzY4MDlhYjQ3MjQwOTg2ZDA4YzNjMzUuLjlkMmU4YzMxNzMwYTQwMDZiNTdjMTIyY2Q2MzQy
NjMwZmE4NGEyZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaApAQCAtNDcsMTMgKzQ3LDE0
IEBAIGNsYXNzIEdhbWVwYWRDb250cm9sbGVyOwogY2xhc3MgVGVzdFJ1bm5lcjsKIGNsYXNzIFRl
eHRJbnB1dENvbnRyb2xsZXI7CiBjbGFzcyBXZWJUZXN0RGVsZWdhdGU7CitjbGFzcyBXZWJUZXN0
UHJveHlCYXNlOwogCiBjbGFzcyBUZXN0SW50ZXJmYWNlcyB7CiBwdWJsaWM6CiAgICAgVGVzdElu
dGVyZmFjZXMoKTsKICAgICB+VGVzdEludGVyZmFjZXMoKTsKIAotICAgIHZvaWQgc2V0V2ViVmll
dyhXZWJLaXQ6OldlYlZpZXcqKTsKKyAgICB2b2lkIHNldFdlYlZpZXcoV2ViS2l0OjpXZWJWaWV3
KiwgV2ViVGVzdFByb3h5QmFzZSopOwogICAgIHZvaWQgc2V0RGVsZWdhdGUoV2ViVGVzdERlbGVn
YXRlKik7CiAgICAgdm9pZCBiaW5kVG8oV2ViS2l0OjpXZWJGcmFtZSopOwogICAgIHZvaWQgcmVz
ZXRBbGwoKTsKQEAgLTY1LDYgKzY2LDcgQEAgcHVibGljOgogICAgIFRlc3RSdW5uZXIqIHRlc3RS
dW5uZXIoKTsKICAgICBXZWJLaXQ6OldlYlZpZXcqIHdlYlZpZXcoKTsKICAgICBXZWJUZXN0RGVs
ZWdhdGUqIGRlbGVnYXRlKCk7CisgICAgV2ViVGVzdFByb3h5QmFzZSogcHJveHkoKTsKIAogCiBw
cml2YXRlOgpAQCAtNzUsNiArNzcsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6YXV0b19wdHI8VGVz
dFJ1bm5lcj4gbV90ZXN0UnVubmVyOwogICAgIFdlYktpdDo6V2ViVmlldyogbV93ZWJWaWV3Owog
ICAgIFdlYlRlc3REZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKKyAgICBXZWJUZXN0UHJveHlCYXNlKiBt
X3Byb3h5OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAppbmRleCBkNjQ5YWJkMGQ2ZTM2
NjIxODM4NWRkYjYxZDQyODg5NGQ0Y2RmNjEwLi45NTMyMjFlYjMwYjEwMjg0ZTQyYWQ5Mzg2MWZi
YjRmNGYwNDg2ZjNmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcApAQCAtNTEsNiArNTEsNyBAQAog
I2luY2x1ZGUgIldlYlN1cnJvdW5kaW5nVGV4dC5oIgogI2luY2x1ZGUgIldlYlRhc2suaCIKICNp
bmNsdWRlICJXZWJUZXN0RGVsZWdhdGUuaCIKKyNpbmNsdWRlICJXZWJUZXN0UHJveHkuaCIKICNp
bmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSAidjgvaW5jbHVkZS92OC5oIgogI2luY2x1ZGUg
PGxpbWl0cz4KQEAgLTMzOSw2ICszNDAsMTIgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXREZWxlZ2F0
ZShXZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlKQogI2VuZGlmCiB9CiAKK3ZvaWQgVGVzdFJ1bm5l
cjo6c2V0V2ViVmlldyhXZWJWaWV3KiB3ZWJWaWV3LCBXZWJUZXN0UHJveHlCYXNlKiBwcm94eSkK
K3sKKyAgICBtX3dlYlZpZXcgPSB3ZWJWaWV3OworICAgIG1fcHJveHkgPSBwcm94eTsKK30KKwog
dm9pZCBUZXN0UnVubmVyOjpyZXNldCgpCiB7CiAgICAgaWYgKG1fd2ViVmlldykgewpAQCAtMTcz
NCw2ICsxNzQxLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRCYWNraW5nU2NhbGVGYWN0b3IoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmkKIAogICAgIGZsb2F0IHZhbHVl
ID0gYXJndW1lbnRzWzBdLnZhbHVlLmRvdWJsZVZhbHVlOwogICAgIG1fZGVsZWdhdGUtPnNldERl
dmljZVNjYWxlRmFjdG9yKHZhbHVlKTsKKyAgICBtX3Byb3h5LT5kaXNjYXJkQmFja2luZ1N0b3Jl
KCk7CiAKICAgICBhdXRvX3B0cjxDcHBWYXJpYW50PiBjYWxsYmFja0FyZ3VtZW50cyhuZXcgQ3Bw
VmFyaWFudCgpKTsKICAgICBjYWxsYmFja0FyZ3VtZW50cy0+c2V0KGFyZ3VtZW50c1sxXSk7CkBA
IC0xODQzLDEzICsxODUxLDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6d2FzTW9ja1NwZWVjaFJlY29n
bml0aW9uQWJvcnRlZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpCiAKIHZvaWQgVGVz
dFJ1bm5lcjo6ZGlzcGxheShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFy
aWFudCogcmVzdWx0KQogewotICAgIG1fZGVsZWdhdGUtPmRpc3BsYXkoKTsKKyAgICBtX3Byb3h5
LT5kaXNwbGF5KCk7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5l
cjo6ZGlzcGxheUludmFsaWRhdGVkUmVnaW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7Ci0gICAgbV9kZWxlZ2F0ZS0+ZGlzcGxheUludmFs
aWRhdGVkUmVnaW9uKCk7CisgICAgbV9wcm94eS0+ZGlzcGxheUludmFsaWRhdGVkUmVnaW9uKCk7
CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAppbmRleCA1MWYz
MDljZWEwYTA4MGVlOWQxMDk1ZTY5MjZjYzExZWJiMmQ4YzY5Li40NjI3OTRhZjdkMzI5ZmI4NzA1
NGY4YWRhNGExNzM3MDlhNzZiNDRlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCkBAIC01Nyw2ICs1Nyw3
IEBAIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIGNsYXNzIE5vdGlmaWNhdGlvblByZXNlbnRl
cjsKIGNsYXNzIFdlYlBlcm1pc3Npb25zOwogY2xhc3MgV2ViVGVzdERlbGVnYXRlOworY2xhc3Mg
V2ViVGVzdFByb3h5QmFzZTsKIAogY2xhc3MgVGVzdFJ1bm5lciA6IHB1YmxpYyBXZWJUZXN0UnVu
bmVyLCBwdWJsaWMgQ3BwQm91bmRDbGFzcyB7CiBwdWJsaWM6CkBAIC02NCw3ICs2NSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5UZXN0UnVubmVyKCk7CiAKICAgICB2b2lkIHNldERlbGVnYXRl
KFdlYlRlc3REZWxlZ2F0ZSopOwotICAgIHZvaWQgc2V0V2ViVmlldyhXZWJLaXQ6OldlYlZpZXcq
IHdlYlZpZXcpIHsgbV93ZWJWaWV3ID0gd2ViVmlldzsgfQorICAgIHZvaWQgc2V0V2ViVmlldyhX
ZWJLaXQ6OldlYlZpZXcqLCBXZWJUZXN0UHJveHlCYXNlKik7CiAKICAgICB2b2lkIHJlc2V0KCk7
CiAKQEAgLTc3LDEyICs3OCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZER1
bXBBc0F1ZGlvKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBXZWJLaXQ6Oldl
YkFycmF5QnVmZmVyVmlldyogYXVkaW9EYXRhKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBXZWJLaXQ6OldlYlBlcm1pc3Npb25DbGllbnQqIHdlYlBlcm1pc3Npb25zKCkgY29uc3QgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZER1bXBTZWxlY3Rpb25SZWN0KCkgY29uc3Qg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHRlc3RSZXBhaW50KCkgY29uc3QgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBib29sIHN3ZWVwSG9yaXpvbnRhbGx5KCkgY29uc3QgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBib29sIGlzUHJpbnRpbmcoKSBjb25zdCBPVkVSUklERTsKIAogICAgIC8vIE1l
dGhvZHMgdXNlZCBieSBXZWJUZXN0UHJveHlCYXNlLgorICAgIGJvb2wgc2hvdWxkRHVtcFNlbGVj
dGlvblJlY3QoKSBjb25zdDsKKyAgICBib29sIHRlc3RSZXBhaW50KCkgY29uc3Q7CisgICAgYm9v
bCBzd2VlcEhvcml6b250YWxseSgpIGNvbnN0OworICAgIGJvb2wgaXNQcmludGluZygpIGNvbnN0
OwogICAgIGJvb2wgc2hvdWxkRHVtcEFzVGV4dCgpOwogICAgIGJvb2wgc2hvdWxkRHVtcEJhY2tG
b3J3YXJkTGlzdCgpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkRHVtcENoaWxkRnJhbWVTY3JvbGxQ
b3NpdGlvbnMoKSBjb25zdDsKQEAgLTY2MSw2ICs2NjIsNyBAQCBwcml2YXRlOgogCiAgICAgV2Vi
VGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOwogICAgIFdlYktpdDo6V2ViVmlldyogbV93ZWJWaWV3
OworICAgIFdlYlRlc3RQcm94eUJhc2UqIG1fcHJveHk7CiAKICAgICAvLyBUaGlzIGlzIG5vbi0w
IElGRiBhIGxvYWQgaXMgaW4gcHJvZ3Jlc3MuCiAgICAgV2ViS2l0OjpXZWJGcmFtZSogbV90b3BM
b2FkaW5nRnJhbWU7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKaW5kZXggZDQw
YjA0NDg4MmEzM2NjYzI3ZDAwMTBkZDYzNGYwZDRlM2FmZTU1YS4uMmExNzZkNzYzOWE5MzA1ODk0
MDIwNWFjMmYwNTgzOGQ0YTYyZjYzMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2Vz
LmNwcApAQCAtNDksOSArNDksOSBAQCBXZWJUZXN0SW50ZXJmYWNlczo6fldlYlRlc3RJbnRlcmZh
Y2VzKCkKIHsKIH0KIAotdm9pZCBXZWJUZXN0SW50ZXJmYWNlczo6c2V0V2ViVmlldyhXZWJWaWV3
KiB3ZWJWaWV3KQordm9pZCBXZWJUZXN0SW50ZXJmYWNlczo6c2V0V2ViVmlldyhXZWJWaWV3KiB3
ZWJWaWV3LCBXZWJUZXN0UHJveHlCYXNlKiBwcm94eSkKIHsKLSAgICBtX2ludGVyZmFjZXMtPnNl
dFdlYlZpZXcod2ViVmlldyk7CisgICAgbV9pbnRlcmZhY2VzLT5zZXRXZWJWaWV3KHdlYlZpZXcs
IHByb3h5KTsKIH0KIAogdm9pZCBXZWJUZXN0SW50ZXJmYWNlczo6c2V0RGVsZWdhdGUoV2ViVGVz
dERlbGVnYXRlKiBkZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwCmluZGV4IDUwNTg5
YTE5OGZlYjMxODkwZjAzMTU1YThkMjI1ZGI2M2VmMmRjYjguLmUyMTVlZWVmMjk4ZTAyMDY4MDE0
ZTI1ZjY4ODRmNTI4OGI0NTg2OGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcApAQCAtNTcs
NiArNTcsOCBAQAogI2luY2x1ZGUgIldlYlRlc3RSdW5uZXIuaCIKICNpbmNsdWRlICJXZWJVc2Vy
TWVkaWFDbGllbnRNb2NrLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgorLy8gRklYTUU6IEluY2x1
ZGluZyBwbGF0Zm9ybV9jYW52YXMuaCBoZXJlIGlzIGEgbGF5ZXJpbmcgdmlvbGF0aW9uLgorI2lu
Y2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgogI2luY2x1ZGUgPGNjdHlwZT4KICNp
bmNsdWRlIDxwdWJsaWMvV2ViQ1N0cmluZy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkxFcnJv
ci5oPgpAQCAtNDE0LDEyICs0MTYsMTQgQEAgV2ViVGVzdFByb3h5QmFzZTo6V2ViVGVzdFByb3h5
QmFzZSgpCiAgICAgOiBtX3Rlc3RJbnRlcmZhY2VzKDApCiAgICAgLCBtX2RlbGVnYXRlKDApCiAg
ICAgLCBtX3NwZWxsY2hlY2sobmV3IFNwZWxsQ2hlY2tDbGllbnQpCisgICAgLCBtX2NhbnZhcygw
KQogewogICAgIHJlc2V0KCk7CiB9CiAKIFdlYlRlc3RQcm94eUJhc2U6On5XZWJUZXN0UHJveHlC
YXNlKCkKIHsKKyAgICBTa0F1dG9UVW5yZWY8U2tDYW52YXM+IGF1dG9fdW5yZWYobV9jYW52YXMp
OwogfQogCiB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OnNldEludGVyZmFjZXMoV2ViVGVzdEludGVy
ZmFjZXMqIGludGVyZmFjZXMpCkBAIC00MzYsNiArNDQwLDkgQEAgdm9pZCBXZWJUZXN0UHJveHlC
YXNlOjpzZXREZWxlZ2F0ZShXZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlKQogdm9pZCBXZWJUZXN0
UHJveHlCYXNlOjpyZXNldCgpCiB7CiAgICAgbV9wYWludFJlY3QgPSBXZWJSZWN0KCk7CisgICAg
U2tBdXRvVFVucmVmPFNrQ2FudmFzPiBhdXRvVW5yZWYobV9jYW52YXMpOworICAgIG1fY2FudmFz
ID0gMDsKKyAgICBtX2lzUGFpbnRpbmcgPSBmYWxzZTsKICAgICBtX3Jlc291cmNlSWRlbnRpZmll
ck1hcC5jbGVhcigpOwogICAgIG1fbG9nQ29uc29sZU91dHB1dCA9IHRydWU7CiB9CkBAIC00NDUs
MTYgKzQ1Miw2IEBAIFdlYlNwZWxsQ2hlY2tDbGllbnQqIFdlYlRlc3RQcm94eUJhc2U6OnNwZWxs
Q2hlY2tDbGllbnQoKSBjb25zdAogICAgIHJldHVybiBtX3NwZWxsY2hlY2suZ2V0KCk7CiB9CiAK
LXZvaWQgV2ViVGVzdFByb3h5QmFzZTo6c2V0UGFpbnRSZWN0KGNvbnN0IFdlYlJlY3QmIHJlY3Qp
Ci17Ci0gICAgbV9wYWludFJlY3QgPSByZWN0OwotfQotCi1XZWJSZWN0IFdlYlRlc3RQcm94eUJh
c2U6OnBhaW50UmVjdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFpbnRSZWN0OwotfQotCiBz
dHJpbmcgV2ViVGVzdFByb3h5QmFzZTo6Y2FwdHVyZVRyZWUoYm9vbCBkZWJ1Z1JlbmRlclRyZWUp
CiB7CiAgICAgV2ViU2NyaXB0Q29udHJvbGxlcjo6Zmx1c2hDb25zb2xlTWVzc2FnZXMoKTsKQEAg
LTQ4MywxMSArNDgwLDE2NSBAQCBzdHJpbmcgV2ViVGVzdFByb3h5QmFzZTo6Y2FwdHVyZVRyZWUo
Ym9vbCBkZWJ1Z1JlbmRlclRyZWUpCiAgICAgcmV0dXJuIGRhdGFVdGY4OwogfQogCitTa0NhbnZh
cyogV2ViVGVzdFByb3h5QmFzZTo6Y2FwdHVyZVBpeGVscygpCit7CisgICAgbV90ZXN0SW50ZXJm
YWNlcy0+d2ViVmlldygpLT5sYXlvdXQoKTsKKyAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVz
dFJ1bm5lcigpLT50ZXN0UmVwYWludCgpKSB7CisgICAgICAgIFdlYlNpemUgdmlld1NpemUgPSBt
X3Rlc3RJbnRlcmZhY2VzLT53ZWJWaWV3KCktPnNpemUoKTsKKyAgICAgICAgaW50IHdpZHRoID0g
dmlld1NpemUud2lkdGg7CisgICAgICAgIGludCBoZWlnaHQgPSB2aWV3U2l6ZS5oZWlnaHQ7Cisg
ICAgICAgIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCktPnN3ZWVwSG9yaXpvbnRh
bGx5KCkpIHsKKyAgICAgICAgICAgIGZvciAoV2ViUmVjdCBjb2x1bW4oMCwgMCwgMSwgaGVpZ2h0
KTsgY29sdW1uLnggPCB3aWR0aDsgY29sdW1uLngrKykKKyAgICAgICAgICAgICAgICBwYWludFJl
Y3QoY29sdW1uKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoV2ViUmVjdCBs
aW5lKDAsIDAsIHdpZHRoLCAxKTsgbGluZS55IDwgaGVpZ2h0OyBsaW5lLnkrKykKKyAgICAgICAg
ICAgICAgICBwYWludFJlY3QobGluZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG1fdGVz
dEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+aXNQcmludGluZygpKQorICAgICAgICBwYWludFBh
Z2VzV2l0aEJvdW5kYXJpZXMoKTsKKyAgICBlbHNlCisgICAgICAgIHBhaW50SW52YWxpZGF0ZWRS
ZWdpb24oKTsKKworICAgIC8vIFNlZSBpZiB3ZSBuZWVkIHRvIGRyYXcgdGhlIHNlbGVjdGlvbiBi
b3VuZHMgcmVjdC4gU2VsZWN0aW9uIGJvdW5kcworICAgIC8vIHJlY3QgaXMgdGhlIHJlY3QgZW5j
bG9zaW5nIHRoZSAocG9zc2libHkgdHJhbnNmb3JtZWQpIHNlbGVjdGlvbi4KKyAgICAvLyBUaGUg
cmVjdCBzaG91bGQgYmUgZHJhd24gYWZ0ZXIgZXZlcnl0aGluZyBpcyBsYWlkIG91dCBhbmQgcGFp
bnRlZC4KKyAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5zaG91bGREdW1w
U2VsZWN0aW9uUmVjdCgpKSB7CisgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgc2VsZWN0aW9uIHJl
Y3QgLSBkcmF3IGEgcmVkIDFweCBib3JkZXIgZW5jbG9zaW5nIHJlY3QKKyAgICAgICAgV2ViUmVj
dCB3ciA9IG1fdGVzdEludGVyZmFjZXMtPndlYlZpZXcoKS0+bWFpbkZyYW1lKCktPnNlbGVjdGlv
bkJvdW5kc1JlY3QoKTsKKyAgICAgICAgaWYgKCF3ci5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IC8vIFJlbmRlciBhIHJlZCByZWN0YW5nbGUgYm91bmRpbmcgc2VsZWN0aW9uIHJlY3QKKyAgICAg
ICAgICAgIFNrUGFpbnQgcGFpbnQ7CisgICAgICAgICAgICBwYWludC5zZXRDb2xvcigweEZGRkYw
MDAwKTsgLy8gRnVsbHkgb3BhcXVlIHJlZAorICAgICAgICAgICAgcGFpbnQuc2V0U3R5bGUoU2tQ
YWludDo6a1N0cm9rZV9TdHlsZSk7CisgICAgICAgICAgICBwYWludC5zZXRGbGFncyhTa1BhaW50
OjprQW50aUFsaWFzX0ZsYWcpOworICAgICAgICAgICAgcGFpbnQuc2V0U3Ryb2tlV2lkdGgoMS4w
Zik7CisgICAgICAgICAgICBTa0lSZWN0IHJlY3Q7IC8vIEJvdW5kaW5nIHJlY3QKKyAgICAgICAg
ICAgIHJlY3Quc2V0KHdyLngsIHdyLnksIHdyLnggKyB3ci53aWR0aCwgd3IueSArIHdyLmhlaWdo
dCk7CisgICAgICAgICAgICBjYW52YXMoKS0+ZHJhd0lSZWN0KHJlY3QsIHBhaW50KTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiBjYW52YXMoKTsKK30KKwogdm9pZCBXZWJUZXN0UHJv
eHlCYXNlOjpzZXRMb2dDb25zb2xlT3V0cHV0KGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX2xvZ0Nv
bnNvbGVPdXRwdXQgPSBlbmFibGVkOwogfQogCit2b2lkIFdlYlRlc3RQcm94eUJhc2U6OnBhaW50
UmVjdChjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIFdFQktJVF9BU1NFUlQoIW1faXNQYWlu
dGluZyk7CisgICAgV0VCS0lUX0FTU0VSVChjYW52YXMoKSk7CisgICAgbV9pc1BhaW50aW5nID0g
dHJ1ZTsKKyAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IG1fdGVzdEludGVyZmFjZXMtPndl
YlZpZXcoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICBpbnQgc2NhbGVkWCA9IHN0YXRpY19j
YXN0PGludD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlY3QueCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7
CisgICAgaW50IHNjYWxlZFkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PGZsb2F0Pihy
ZWN0LnkpICogZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIGludCBzY2FsZWRXaWR0aCA9IHN0YXRp
Y19jYXN0PGludD4oY2VpbChzdGF0aWNfY2FzdDxmbG9hdD4ocmVjdC53aWR0aCkgKiBkZXZpY2VT
Y2FsZUZhY3RvcikpOworICAgIGludCBzY2FsZWRIZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KGNl
aWwoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlY3QuaGVpZ2h0KSAqIGRldmljZVNjYWxlRmFjdG9yKSk7
CisgICAgV2ViUmVjdCBkZXZpY2VSZWN0KHNjYWxlZFgsIHNjYWxlZFksIHNjYWxlZFdpZHRoLCBz
Y2FsZWRIZWlnaHQpOworICAgIG1fdGVzdEludGVyZmFjZXMtPndlYlZpZXcoKS0+cGFpbnQoY2Fu
dmFzKCksIGRldmljZVJlY3QpOworICAgIG1faXNQYWludGluZyA9IGZhbHNlOworfQorCit2b2lk
IFdlYlRlc3RQcm94eUJhc2U6OnBhaW50SW52YWxpZGF0ZWRSZWdpb24oKQoreworICAgIG1fdGVz
dEludGVyZmFjZXMtPndlYlZpZXcoKS0+YW5pbWF0ZSgwLjApOworICAgIG1fdGVzdEludGVyZmFj
ZXMtPndlYlZpZXcoKS0+bGF5b3V0KCk7CisgICAgV2ViU2l6ZSB3aWRnZXRTaXplID0gbV90ZXN0
SW50ZXJmYWNlcy0+d2ViVmlldygpLT5zaXplKCk7CisgICAgV2ViUmVjdCBjbGllbnRSZWN0KDAs
IDAsIHdpZGdldFNpemUud2lkdGgsIHdpZGdldFNpemUuaGVpZ2h0KTsKKworICAgIC8vIFBhaW50
IHRoZSBjYW52YXMgaWYgbmVjZXNzYXJ5LiBBbGxvdyBwYWludGluZyB0byBnZW5lcmF0ZSBleHRy
YSByZWN0cworICAgIC8vIGZvciB0aGUgZmlyc3QgdHdvIGNhbGxzLiBUaGlzIGlzIG5lY2Vzc2Fy
eSBiZWNhdXNlIHNvbWUgV2ViQ29yZSByZW5kZXJpbmcKKyAgICAvLyBvYmplY3RzIHVwZGF0ZSB0
aGVpciBsYXlvdXQgb25seSB3aGVuIHBhaW50ZWQuCisgICAgLy8gU3RvcmUgdGhlIHRvdGFsIGFy
ZWEgcGFpbnRlZCBpbiB0b3RhbF9wYWludC4gVGhlbiB0ZWxsIHRoZSBnZGsgd2luZG93CisgICAg
Ly8gdG8gdXBkYXRlIHRoYXQgYXJlYSBhZnRlciB3ZSdyZSBkb25lIHBhaW50aW5nIGl0LgorICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgICAgIC8vIHJlY3QgPSBpbnRlcnNl
Y3QobV9wYWludFJlY3QgLCBjbGllbnRSZWN0KQorICAgICAgICBXZWJSZWN0IGRhbWFnZVJlY3Qg
PSBtX3BhaW50UmVjdDsKKyAgICAgICAgaW50IGxlZnQgPSBtYXgoZGFtYWdlUmVjdC54LCBjbGll
bnRSZWN0LngpOworICAgICAgICBpbnQgdG9wID0gbWF4KGRhbWFnZVJlY3QueSwgY2xpZW50UmVj
dC55KTsKKyAgICAgICAgaW50IHJpZ2h0ID0gbWluKGRhbWFnZVJlY3QueCArIGRhbWFnZVJlY3Qu
d2lkdGgsIGNsaWVudFJlY3QueCArIGNsaWVudFJlY3Qud2lkdGgpOworICAgICAgICBpbnQgYm90
dG9tID0gbWluKGRhbWFnZVJlY3QueSArIGRhbWFnZVJlY3QuaGVpZ2h0LCBjbGllbnRSZWN0Lnkg
KyBjbGllbnRSZWN0LmhlaWdodCk7CisgICAgICAgIFdlYlJlY3QgcmVjdDsKKyAgICAgICAgaWYg
KGxlZnQgPCByaWdodCAmJiB0b3AgPCBib3R0b20pCisgICAgICAgICAgICByZWN0ID0gV2ViUmVj
dChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9wKTsKKworICAgICAgICBtX3Bh
aW50UmVjdCA9IFdlYlJlY3QoKTsKKyAgICAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIHBhaW50UmVjdChyZWN0KTsKKyAgICB9CisgICAgV0VC
S0lUX0FTU0VSVChtX3BhaW50UmVjdC5pc0VtcHR5KCkpOworfQorCit2b2lkIFdlYlRlc3RQcm94
eUJhc2U6OnBhaW50UGFnZXNXaXRoQm91bmRhcmllcygpCit7CisgICAgV0VCS0lUX0FTU0VSVCgh
bV9pc1BhaW50aW5nKTsKKyAgICBXRUJLSVRfQVNTRVJUKGNhbnZhcygpKTsKKyAgICBtX2lzUGFp
bnRpbmcgPSB0cnVlOworCisgICAgV2ViU2l6ZSBwYWdlU2l6ZUluUGl4ZWxzID0gbV90ZXN0SW50
ZXJmYWNlcy0+d2ViVmlldygpLT5zaXplKCk7CisgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gbV90
ZXN0SW50ZXJmYWNlcy0+d2ViVmlldygpLT5tYWluRnJhbWUoKTsKKworICAgIGludCBwYWdlQ291
bnQgPSB3ZWJGcmFtZS0+cHJpbnRCZWdpbihwYWdlU2l6ZUluUGl4ZWxzKTsKKyAgICBpbnQgdG90
YWxIZWlnaHQgPSBwYWdlQ291bnQgKiAocGFnZVNpemVJblBpeGVscy5oZWlnaHQgKyAxKSAtIDE7
CisKKyAgICBTa0NhbnZhcyogdGVzdENhbnZhcyA9IHNraWE6OlRyeUNyZWF0ZUJpdG1hcENhbnZh
cyhwYWdlU2l6ZUluUGl4ZWxzLndpZHRoLCB0b3RhbEhlaWdodCwgdHJ1ZSk7CisgICAgaWYgKHRl
c3RDYW52YXMpIHsKKyAgICAgICAgZGlzY2FyZEJhY2tpbmdTdG9yZSgpOworICAgICAgICBtX2Nh
bnZhcyA9IHRlc3RDYW52YXM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgd2ViRnJhbWUtPnByaW50
RW5kKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3ZWJGcmFtZS0+cHJpbnRQYWdl
c1dpdGhCb3VuZGFyaWVzKGNhbnZhcygpLCBwYWdlU2l6ZUluUGl4ZWxzKTsKKyAgICB3ZWJGcmFt
ZS0+cHJpbnRFbmQoKTsKKworICAgIG1faXNQYWludGluZyA9IGZhbHNlOworfQorCitTa0NhbnZh
cyogV2ViVGVzdFByb3h5QmFzZTo6Y2FudmFzKCkKK3sKKyAgICBpZiAobV9jYW52YXMpCisgICAg
ICAgIHJldHVybiBtX2NhbnZhczsKKyAgICBXZWJTaXplIHdpZGdldFNpemUgPSBtX3Rlc3RJbnRl
cmZhY2VzLT53ZWJWaWV3KCktPnNpemUoKTsKKyAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9
IG1fdGVzdEludGVyZmFjZXMtPndlYlZpZXcoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICBp
bnQgc2NhbGVkV2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHdpZGdldFNpemUud2lkdGgpICogZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICBpbnQgc2NhbGVk
SGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihjZWlsKHN0YXRpY19jYXN0PGZsb2F0Pih3aWRnZXRT
aXplLmhlaWdodCkgKiBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgIG1fY2FudmFzID0gc2tpYTo6
Q3JlYXRlQml0bWFwQ2FudmFzKHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQsIHRydWUpOworICAg
IHJldHVybiBtX2NhbnZhczsKK30KKworLy8gUGFpbnRzIHRoZSBlbnRpcmUgY2FudmFzIGEgc2Vt
aS10cmFuc3BhcmVudCBibGFjayAoZ3JheWlzaCkuIFRoaXMgaXMgdXNlZAorLy8gYnkgdGhlIGxh
eW91dCB0ZXN0cyBpbiBmYXN0L3JlcGFpbnQuIFRoZSBhbHBoYSB2YWx1ZSBtYXRjaGVzIHVwc3Ry
ZWFtLgordm9pZCBXZWJUZXN0UHJveHlCYXNlOjpkaXNwbGF5UmVwYWludE1hc2soKQoreworICAg
IGNhbnZhcygpLT5kcmF3QVJHQigxNjcsIDAsIDAsIDApOworfQorCit2b2lkIFdlYlRlc3RQcm94
eUJhc2U6OmRpc3BsYXkoKQoreworICAgIGNvbnN0IFdlYktpdDo6V2ViU2l6ZSYgc2l6ZSA9IG1f
dGVzdEludGVyZmFjZXMtPndlYlZpZXcoKS0+c2l6ZSgpOworICAgIFdlYlJlY3QgcmVjdCgwLCAw
LCBzaXplLndpZHRoLCBzaXplLmhlaWdodCk7CisgICAgbV9wYWludFJlY3QgPSByZWN0OworICAg
IHBhaW50SW52YWxpZGF0ZWRSZWdpb24oKTsKKyAgICBkaXNwbGF5UmVwYWludE1hc2soKTsKK30K
Kwordm9pZCBXZWJUZXN0UHJveHlCYXNlOjpkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24oKQorewor
ICAgIHBhaW50SW52YWxpZGF0ZWRSZWdpb24oKTsKKyAgICBkaXNwbGF5UmVwYWludE1hc2soKTsK
K30KKwordm9pZCBXZWJUZXN0UHJveHlCYXNlOjpkaXNjYXJkQmFja2luZ1N0b3JlKCkKK3sKKyAg
ICBTa0F1dG9UVW5yZWY8U2tDYW52YXM+IGF1dG9fdW5yZWYobV9jYW52YXMpOworICAgIG1fY2Fu
dmFzID0gMDsKK30KKwogdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpkaWRJbnZhbGlkYXRlUmVjdChj
b25zdCBXZWJSZWN0JiByZWN0KQogewogICAgIC8vIG1fcGFpbnRSZWN0ID0gbV9wYWludFJlY3Qg
VSByZWN0CkBAIC01MjcsNiArNjc4LDcgQEAgdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpzaG93KFdl
Yk5hdmlnYXRpb25Qb2xpY3kpCiB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OnNldFdpbmRvd1JlY3Qo
Y29uc3QgV2ViUmVjdCYgcmVjdCkKIHsKICAgICBzY2hlZHVsZUNvbXBvc2l0ZSgpOworICAgIGRp
c2NhcmRCYWNraW5nU3RvcmUoKTsKIH0KIAogdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpkaWRBdXRv
UmVzaXplKGNvbnN0IFdlYlNpemUmKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFNoZWxsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RTaGVsbC5jcHAKaW5kZXggMmU2YWNkMjQ3Mzc3NWJlYWE3NmQ2MjJiOWZhMDk1MGNhMWE1YWE4
ZC4uNTBlZTZhZjJjOTZhODI1YTBmNjU5Y2RkNTk3MjBjZjBiYjBmNWI5MSAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCkBAIC0xODIsMTYgKzE4MiwxNiBA
QCB2b2lkIFRlc3RTaGVsbDo6Y3JlYXRlTWFpbldpbmRvdygpCiAgICAgbV93ZWJWaWV3SG9zdCA9
IGFkb3B0UHRyKGNyZWF0ZU5ld1dpbmRvdyhXZWJVUkwoKSwgbV9kcnREZXZUb29sc0FnZW50Lmdl
dCgpLCBtX3Rlc3RJbnRlcmZhY2VzLmdldCgpKSk7CiAgICAgbV93ZWJWaWV3ID0gbV93ZWJWaWV3
SG9zdC0+d2ViVmlldygpOwogICAgIG1fdGVzdEludGVyZmFjZXMtPnNldERlbGVnYXRlKG1fd2Vi
Vmlld0hvc3QuZ2V0KCkpOwotICAgIG1fdGVzdEludGVyZmFjZXMtPnNldFdlYlZpZXcobV93ZWJW
aWV3KTsKKyAgICBtX3Rlc3RJbnRlcmZhY2VzLT5zZXRXZWJWaWV3KG1fd2ViVmlldywgbV93ZWJW
aWV3SG9zdC0+cHJveHkoKSk7CiAgICAgbV9kcnREZXZUb29sc0FnZW50LT5zZXRXZWJWaWV3KG1f
d2ViVmlldyk7CiB9CiAKIFRlc3RTaGVsbDo6flRlc3RTaGVsbCgpCiB7CiAgICAgbV90ZXN0SW50
ZXJmYWNlcy0+c2V0RGVsZWdhdGUoMCk7Ci0gICAgbV90ZXN0SW50ZXJmYWNlcy0+c2V0V2ViVmll
dygwKTsKKyAgICBtX3Rlc3RJbnRlcmZhY2VzLT5zZXRXZWJWaWV3KDAsIDApOwogICAgIG1fZGV2
VG9vbHNUZXN0SW50ZXJmYWNlcy0+c2V0RGVsZWdhdGUoMCk7Ci0gICAgbV9kZXZUb29sc1Rlc3RJ
bnRlcmZhY2VzLT5zZXRXZWJWaWV3KDApOworICAgIG1fZGV2VG9vbHNUZXN0SW50ZXJmYWNlcy0+
c2V0V2ViVmlldygwLCAwKTsKICAgICBtX2RydERldlRvb2xzQWdlbnQtPnNldFdlYlZpZXcoMCk7
CiAgICAgaWYgKG1fd2ViVmlld0hvc3QpCiAgICAgICAgIG1fd2ViVmlld0hvc3QtPnNodXRkb3du
KCk7CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBUZXN0U2hlbGw6OnNob3dEZXZUb29scygpCiAg
ICAgICAgIG1fZGV2VG9vbHMtPndlYlZpZXcoKS0+c2V0dGluZ3MoKS0+c2V0TWVtb3J5SW5mb0Vu
YWJsZWQodHJ1ZSk7CiAgICAgICAgIG1fZGV2VG9vbHMtPnByb3h5KCktPnNldExvZ0NvbnNvbGVP
dXRwdXQoZmFsc2UpOwogICAgICAgICBtX2RldlRvb2xzVGVzdEludGVyZmFjZXMtPnNldERlbGVn
YXRlKG1fZGV2VG9vbHMpOwotICAgICAgICBtX2RldlRvb2xzVGVzdEludGVyZmFjZXMtPnNldFdl
YlZpZXcobV9kZXZUb29scy0+d2ViVmlldygpKTsKKyAgICAgICAgbV9kZXZUb29sc1Rlc3RJbnRl
cmZhY2VzLT5zZXRXZWJWaWV3KG1fZGV2VG9vbHMtPndlYlZpZXcoKSwgbV9kZXZUb29scy0+cHJv
eHkoKSk7CiAgICAgICAgIEFTU0VSVChtX2RldlRvb2xzKTsKICAgICAgICAgY3JlYXRlRFJURGV2
VG9vbHNDbGllbnQobV9kcnREZXZUb29sc0FnZW50LmdldCgpKTsKICAgICB9CkBAIC0yMjgsNyAr
MjI4LDcgQEAgdm9pZCBUZXN0U2hlbGw6OmNsb3NlRGV2VG9vbHMoKQogICAgICAgICBtX2RydERl
dlRvb2xzQWdlbnQtPnJlc2V0KCk7CiAgICAgICAgIG1fZHJ0RGV2VG9vbHNDbGllbnQuY2xlYXIo
KTsKICAgICAgICAgbV9kZXZUb29sc1Rlc3RJbnRlcmZhY2VzLT5zZXREZWxlZ2F0ZSgwKTsKLSAg
ICAgICAgbV9kZXZUb29sc1Rlc3RJbnRlcmZhY2VzLT5zZXRXZWJWaWV3KDApOworICAgICAgICBt
X2RldlRvb2xzVGVzdEludGVyZmFjZXMtPnNldFdlYlZpZXcoMCwgMCk7CiAgICAgICAgIGNsb3Nl
V2luZG93KG1fZGV2VG9vbHMpOwogICAgICAgICBtX2RldlRvb2xzID0gMDsKICAgICB9CkBAIC00
MjEsNDMgKzQyMSw3IEBAIHZvaWQgVGVzdFNoZWxsOjpkdW1wKCkKICAgICAgICAgLy8gY29tbWFu
ZCBsaW5lIChmb3IgdGhlIGR1bXAgcGl4ZWxzIGFyZ3VtZW50KSwgYW5kIHRoZSBNRDUgc3VtIHRv
CiAgICAgICAgIC8vIHN0ZG91dC4KICAgICAgICAgZHVtcGVkQW55dGhpbmcgPSB0cnVlOwotICAg
ICAgICBtX3dlYlZpZXctPmxheW91dCgpOwotICAgICAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+
dGVzdFJ1bm5lcigpLT50ZXN0UmVwYWludCgpKSB7Ci0gICAgICAgICAgICBXZWJTaXplIHZpZXdT
aXplID0gbV93ZWJWaWV3LT5zaXplKCk7Ci0gICAgICAgICAgICBpbnQgd2lkdGggPSB2aWV3U2l6
ZS53aWR0aDsKLSAgICAgICAgICAgIGludCBoZWlnaHQgPSB2aWV3U2l6ZS5oZWlnaHQ7Ci0gICAg
ICAgICAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5zd2VlcEhvcml6b250
YWxseSgpKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChXZWJSZWN0IGNvbHVtbigwLCAwLCAxLCBo
ZWlnaHQpOyBjb2x1bW4ueCA8IHdpZHRoOyBjb2x1bW4ueCsrKQotICAgICAgICAgICAgICAgICAg
ICBtX3dlYlZpZXdIb3N0LT5wYWludFJlY3QoY29sdW1uKTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgZm9yIChXZWJSZWN0IGxpbmUoMCwgMCwgd2lkdGgsIDEpOyBsaW5l
LnkgPCBoZWlnaHQ7IGxpbmUueSsrKQotICAgICAgICAgICAgICAgICAgICBtX3dlYlZpZXdIb3N0
LT5wYWludFJlY3QobGluZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAobV90
ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5pc1ByaW50aW5nKCkpCi0gICAgICAgICAgICBt
X3dlYlZpZXdIb3N0LT5wYWludFBhZ2VzV2l0aEJvdW5kYXJpZXMoKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV93ZWJWaWV3SG9zdC0+cGFpbnRJbnZhbGlkYXRlZFJlZ2lvbigpOwotCi0g
ICAgICAgIC8vIFNlZSBpZiB3ZSBuZWVkIHRvIGRyYXcgdGhlIHNlbGVjdGlvbiBib3VuZHMgcmVj
dC4gU2VsZWN0aW9uIGJvdW5kcwotICAgICAgICAvLyByZWN0IGlzIHRoZSByZWN0IGVuY2xvc2lu
ZyB0aGUgKHBvc3NpYmx5IHRyYW5zZm9ybWVkKSBzZWxlY3Rpb24uCi0gICAgICAgIC8vIFRoZSBy
ZWN0IHNob3VsZCBiZSBkcmF3biBhZnRlciBldmVyeXRoaW5nIGlzIGxhaWQgb3V0IGFuZCBwYWlu
dGVkLgotICAgICAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5zaG91bGRE
dW1wU2VsZWN0aW9uUmVjdCgpKSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHNlbGVj
dGlvbiByZWN0IC0gZHJhdyBhIHJlZCAxcHggYm9yZGVyIGVuY2xvc2luZyByZWN0Ci0gICAgICAg
ICAgICBXZWJSZWN0IHdyID0gZnJhbWUtPnNlbGVjdGlvbkJvdW5kc1JlY3QoKTsKLSAgICAgICAg
ICAgIGlmICghd3IuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gUmVuZGVyIGEgcmVk
IHJlY3RhbmdsZSBib3VuZGluZyBzZWxlY3Rpb24gcmVjdAotICAgICAgICAgICAgICAgIFNrUGFp
bnQgcGFpbnQ7Ci0gICAgICAgICAgICAgICAgcGFpbnQuc2V0Q29sb3IoMHhGRkZGMDAwMCk7IC8v
IEZ1bGx5IG9wYXF1ZSByZWQKLSAgICAgICAgICAgICAgICBwYWludC5zZXRTdHlsZShTa1BhaW50
OjprU3Ryb2tlX1N0eWxlKTsKLSAgICAgICAgICAgICAgICBwYWludC5zZXRGbGFncyhTa1BhaW50
OjprQW50aUFsaWFzX0ZsYWcpOwotICAgICAgICAgICAgICAgIHBhaW50LnNldFN0cm9rZVdpZHRo
KDEuMGYpOwotICAgICAgICAgICAgICAgIFNrSVJlY3QgcmVjdDsgLy8gQm91bmRpbmcgcmVjdAot
ICAgICAgICAgICAgICAgIHJlY3Quc2V0KHdyLngsIHdyLnksIHdyLnggKyB3ci53aWR0aCwgd3Iu
eSArIHdyLmhlaWdodCk7Ci0gICAgICAgICAgICAgICAgbV93ZWJWaWV3SG9zdC0+Y2FudmFzKCkt
PmRyYXdJUmVjdChyZWN0LCBwYWludCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAg
ICAgICBkdW1wSW1hZ2UobV93ZWJWaWV3SG9zdC0+Y2FudmFzKCkpOworICAgICAgICBkdW1wSW1h
Z2UobV93ZWJWaWV3SG9zdC0+cHJveHkoKS0+Y2FwdHVyZVBpeGVscygpKTsKICAgICB9CiAgICAg
bV9wcmludGVyLmhhbmRsZVRlc3RGb290ZXIoZHVtcGVkQW55dGhpbmcpOwogICAgIGZmbHVzaChz
dGRvdXQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3Bw
CmluZGV4IDVkOGZlZDM2YmM2ODY2ZGRiZjdjZGE3ZmVmOTQ5OTI0M2ZiOWM2YmUuLmM0Yzk2MmRi
ZjljNjNlODRhOGM0M2Q3NTE4MWU5NWNkZDhjMjcxYWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAgLTYwLDcgKzYwLDYgQEAKICNpbmNsdWRl
ICJXZWJTdG9yYWdlTmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUg
IldlYldpbmRvd0ZlYXR1cmVzLmgiCi0jaW5jbHVkZSAic2tpYS9leHQvcGxhdGZvcm1fY2FudmFz
LmgiCiAjaW5jbHVkZSAid2Via2l0L3N1cHBvcnQvdGVzdF9tZWRpYV9zdHJlYW1fY2xpZW50Lmgi
CiAjaW5jbHVkZSAid2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKICNpbmNsdWRlIDxj
Y3R5cGU+CkBAIC00NjIsNyArNDYxLDYgQEAgdm9pZCBXZWJWaWV3SG9zdDo6c2V0V2luZG93UmVj
dChjb25zdCBXZWJSZWN0JiByZWN0KQogICAgICAgICBtX3dpbmRvd1JlY3QuaGVpZ2h0ID0gMSAr
IGJvcmRlcjI7CiAgICAgaW50IHdpZHRoID0gbV93aW5kb3dSZWN0LndpZHRoIC0gYm9yZGVyMjsK
ICAgICBpbnQgaGVpZ2h0ID0gbV93aW5kb3dSZWN0LmhlaWdodCAtIGJvcmRlcjI7Ci0gICAgZGlz
Y2FyZEJhY2tpbmdTdG9yZSgpOwogICAgIHdlYldpZGdldCgpLT5yZXNpemUoV2ViU2l6ZSh3aWR0
aCwgaGVpZ2h0KSk7CiB9CiAKQEAgLTcxNSw3ICs3MTMsNiBAQCB2b2lkIFdlYlZpZXdIb3N0Ojpz
ZXREYXRhYmFzZVF1b3RhKGludCBxdW90YSkKIHZvaWQgV2ViVmlld0hvc3Q6OnNldERldmljZVNj
YWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogewogICAgIHdlYlZpZXcoKS0+c2V0
RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIGRpc2NhcmRCYWNraW5n
U3RvcmUoKTsKIH0KIAogdm9pZCBXZWJWaWV3SG9zdDo6c2V0Rm9jdXMoYm9vbCBmb2N1c2VkKQpA
QCAtODMxLDIxICs4MjgsNiBAQCBib29sIFdlYlZpZXdIb3N0Ojp3YXNNb2NrU3BlZWNoUmVjb2du
aXRpb25BYm9ydGVkKCkKIH0KICNlbmRpZgogCi12b2lkIFdlYlZpZXdIb3N0OjpkaXNwbGF5KCkK
LXsKLSAgICBjb25zdCBXZWJLaXQ6OldlYlNpemUmIHNpemUgPSB3ZWJWaWV3KCktPnNpemUoKTsK
LSAgICBXZWJSZWN0IHJlY3QoMCwgMCwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpOwotICAgIHBy
b3h5KCktPnNldFBhaW50UmVjdChyZWN0KTsKLSAgICBwYWludEludmFsaWRhdGVkUmVnaW9uKCk7
Ci0gICAgZGlzcGxheVJlcGFpbnRNYXNrKCk7Ci19Ci0KLXZvaWQgV2ViVmlld0hvc3Q6OmRpc3Bs
YXlJbnZhbGlkYXRlZFJlZ2lvbigpCi17Ci0gICAgcGFpbnRJbnZhbGlkYXRlZFJlZ2lvbigpOwot
ICAgIGRpc3BsYXlSZXBhaW50TWFzaygpOwotfQotCiB2b2lkIFdlYlZpZXdIb3N0Ojp0ZXN0Rmlu
aXNoZWQoKQogewogICAgIG1fc2hlbGwtPnRlc3RGaW5pc2hlZCh0aGlzKTsKQEAgLTk4OSw4ICs5
NzEsNiBAQCB2b2lkIFdlYlZpZXdIb3N0OjpyZXNldCgpCiAgICAgbV9sYXN0UGFnZUlkVXBkYXRl
ZCA9IC0xOwogICAgIG1faGFzV2luZG93ID0gZmFsc2U7CiAgICAgbV9pbk1vZGFsTG9vcCA9IGZh
bHNlOwotICAgIG1faXNQYWludGluZyA9IGZhbHNlOwotICAgIG1fY2FudmFzLmNsZWFyKCk7CiAj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBtX3BvaW50ZXJMb2NrZWQgPSBmYWxzZTsKICAg
ICBtX3BvaW50ZXJMb2NrUGxhbm5lZFJlc3VsdCA9IFBvaW50ZXJMb2NrV2lsbFN1Y2NlZWQ7CkBA
IC0xMTg0LDEwOSArMTE2NCwzIEBAIHdlYmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFTdHJlYW1DbGll
bnQqIFdlYlZpZXdIb3N0Ojp0ZXN0TWVkaWFTdHJlYW1DbGllbnQoKQogICAgIHJldHVybiBtX3Rl
c3RNZWRpYVN0cmVhbUNsaWVudC5nZXQoKTsKIH0KICNlbmRpZgotCi0vLyBQYWludGluZyBmdW5j
dGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0KLXZvaWQgV2ViVmlld0hvc3Q6OnBhaW50UmVjdChjb25zdCBXZWJSZWN0JiByZWN0
KQotewotICAgIEFTU0VSVCghbV9pc1BhaW50aW5nKTsKLSAgICBBU1NFUlQoY2FudmFzKCkpOwot
ICAgIG1faXNQYWludGluZyA9IHRydWU7Ci0gICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSB3
ZWJWaWV3KCktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgaW50IHNjYWxlZFggPSBzdGF0aWNf
Y2FzdDxpbnQ+KHN0YXRpY19jYXN0PGZsb2F0PihyZWN0LngpICogZGV2aWNlU2NhbGVGYWN0b3Ip
OwotICAgIGludCBzY2FsZWRZID0gc3RhdGljX2Nhc3Q8aW50PihzdGF0aWNfY2FzdDxmbG9hdD4o
cmVjdC55KSAqIGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBpbnQgc2NhbGVkV2lkdGggPSBzdGF0
aWNfY2FzdDxpbnQ+KGNlaWwoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlY3Qud2lkdGgpICogZGV2aWNl
U2NhbGVGYWN0b3IpKTsKLSAgICBpbnQgc2NhbGVkSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50Pihj
ZWlsKHN0YXRpY19jYXN0PGZsb2F0PihyZWN0LmhlaWdodCkgKiBkZXZpY2VTY2FsZUZhY3Rvcikp
OwotICAgIFdlYlJlY3QgZGV2aWNlUmVjdChzY2FsZWRYLCBzY2FsZWRZLCBzY2FsZWRXaWR0aCwg
c2NhbGVkSGVpZ2h0KTsKLSAgICB3ZWJXaWRnZXQoKS0+cGFpbnQoY2FudmFzKCksIGRldmljZVJl
Y3QpOwotICAgIG1faXNQYWludGluZyA9IGZhbHNlOwotfQotCi12b2lkIFdlYlZpZXdIb3N0Ojpw
YWludEludmFsaWRhdGVkUmVnaW9uKCkKLXsKLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05f
RlJBTUUpCi0gICAgd2ViV2lkZ2V0KCktPmFuaW1hdGUoMC4wKTsKLSNlbmRpZgotICAgIHdlYldp
ZGdldCgpLT5sYXlvdXQoKTsKLSAgICBXZWJTaXplIHdpZGdldFNpemUgPSB3ZWJXaWRnZXQoKS0+
c2l6ZSgpOwotICAgIFdlYlJlY3QgY2xpZW50UmVjdCgwLCAwLCB3aWRnZXRTaXplLndpZHRoLCB3
aWRnZXRTaXplLmhlaWdodCk7Ci0KLSAgICAvLyBQYWludCB0aGUgY2FudmFzIGlmIG5lY2Vzc2Fy
eS4gQWxsb3cgcGFpbnRpbmcgdG8gZ2VuZXJhdGUgZXh0cmEgcmVjdHMKLSAgICAvLyBmb3IgdGhl
IGZpcnN0IHR3byBjYWxscy4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBzb21lIFdlYkNvcmUg
cmVuZGVyaW5nCi0gICAgLy8gb2JqZWN0cyB1cGRhdGUgdGhlaXIgbGF5b3V0IG9ubHkgd2hlbiBw
YWludGVkLgotICAgIC8vIFN0b3JlIHRoZSB0b3RhbCBhcmVhIHBhaW50ZWQgaW4gdG90YWxfcGFp
bnQuIFRoZW4gdGVsbCB0aGUgZ2RrIHdpbmRvdwotICAgIC8vIHRvIHVwZGF0ZSB0aGF0IGFyZWEg
YWZ0ZXIgd2UncmUgZG9uZSBwYWludGluZyBpdC4KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7
ICsraSkgewotICAgICAgICAvLyByZWN0ID0gaW50ZXJzZWN0KHByb3h5KCktPnBhaW50UmVjdCgp
ICwgY2xpZW50UmVjdCkKLSAgICAgICAgV2ViUmVjdCBkYW1hZ2VSZWN0ID0gcHJveHkoKS0+cGFp
bnRSZWN0KCk7Ci0gICAgICAgIGludCBsZWZ0ID0gbWF4KGRhbWFnZVJlY3QueCwgY2xpZW50UmVj
dC54KTsKLSAgICAgICAgaW50IHRvcCA9IG1heChkYW1hZ2VSZWN0LnksIGNsaWVudFJlY3QueSk7
Ci0gICAgICAgIGludCByaWdodCA9IG1pbihkYW1hZ2VSZWN0LnggKyBkYW1hZ2VSZWN0LndpZHRo
LCBjbGllbnRSZWN0LnggKyBjbGllbnRSZWN0LndpZHRoKTsKLSAgICAgICAgaW50IGJvdHRvbSA9
IG1pbihkYW1hZ2VSZWN0LnkgKyBkYW1hZ2VSZWN0LmhlaWdodCwgY2xpZW50UmVjdC55ICsgY2xp
ZW50UmVjdC5oZWlnaHQpOwotICAgICAgICBXZWJSZWN0IHJlY3Q7Ci0gICAgICAgIGlmIChsZWZ0
IDwgcmlnaHQgJiYgdG9wIDwgYm90dG9tKQotICAgICAgICAgICAgcmVjdCA9IFdlYlJlY3QobGVm
dCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRvbSAtIHRvcCk7Ci0KLSAgICAgICAgcHJveHkoKS0+
c2V0UGFpbnRSZWN0KFdlYlJlY3QoKSk7Ci0gICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBwYWludFJlY3QocmVjdCk7Ci0gICAgfQotICAg
IEFTU0VSVChwcm94eSgpLT5wYWludFJlY3QoKS5pc0VtcHR5KCkpOwotfQotCi12b2lkIFdlYlZp
ZXdIb3N0OjpwYWludFBhZ2VzV2l0aEJvdW5kYXJpZXMoKQotewotICAgIEFTU0VSVCghbV9pc1Bh
aW50aW5nKTsKLSAgICBBU1NFUlQoY2FudmFzKCkpOwotICAgIG1faXNQYWludGluZyA9IHRydWU7
Ci0KLSAgICBXZWJTaXplIHBhZ2VTaXplSW5QaXhlbHMgPSB3ZWJXaWRnZXQoKS0+c2l6ZSgpOwot
ICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYlZpZXcoKS0+bWFpbkZyYW1lKCk7Ci0KLSAgICBp
bnQgcGFnZUNvdW50ID0gd2ViRnJhbWUtPnByaW50QmVnaW4ocGFnZVNpemVJblBpeGVscyk7Ci0g
ICAgaW50IHRvdGFsSGVpZ2h0ID0gcGFnZUNvdW50ICogKHBhZ2VTaXplSW5QaXhlbHMuaGVpZ2h0
ICsgMSkgLSAxOwotCi0gICAgU2tDYW52YXMqIHRlc3RDYW52YXMgPSBza2lhOjpUcnlDcmVhdGVC
aXRtYXBDYW52YXMocGFnZVNpemVJblBpeGVscy53aWR0aCwgdG90YWxIZWlnaHQsIHRydWUpOwot
ICAgIGlmICh0ZXN0Q2FudmFzKSB7Ci0gICAgICAgIGRpc2NhcmRCYWNraW5nU3RvcmUoKTsKLSAg
ICAgICAgbV9jYW52YXMgPSBhZG9wdFB0cih0ZXN0Q2FudmFzKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICB3ZWJGcmFtZS0+cHJpbnRFbmQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IHdlYkZyYW1lLT5wcmludFBhZ2VzV2l0aEJvdW5kYXJpZXMoY2FudmFzKCksIHBhZ2VTaXplSW5Q
aXhlbHMpOwotICAgIHdlYkZyYW1lLT5wcmludEVuZCgpOwotCi0gICAgbV9pc1BhaW50aW5nID0g
ZmFsc2U7Ci19Ci0KLVNrQ2FudmFzKiBXZWJWaWV3SG9zdDo6Y2FudmFzKCkKLXsKLSAgICBpZiAo
bV9jYW52YXMpCi0gICAgICAgIHJldHVybiBtX2NhbnZhcy5nZXQoKTsKLSAgICBXZWJTaXplIHdp
ZGdldFNpemUgPSB3ZWJXaWRnZXQoKS0+c2l6ZSgpOwotICAgIGZsb2F0IGRldmljZVNjYWxlRmFj
dG9yID0gd2ViVmlldygpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgIGludCBzY2FsZWRXaWR0
aCA9IHN0YXRpY19jYXN0PGludD4oY2VpbChzdGF0aWNfY2FzdDxmbG9hdD4od2lkZ2V0U2l6ZS53
aWR0aCkgKiBkZXZpY2VTY2FsZUZhY3RvcikpOwotICAgIGludCBzY2FsZWRIZWlnaHQgPSBzdGF0
aWNfY2FzdDxpbnQ+KGNlaWwoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZGdldFNpemUuaGVpZ2h0KSAq
IGRldmljZVNjYWxlRmFjdG9yKSk7Ci0gICAgcmVzZXRTY3JvbGxSZWN0KCk7Ci0gICAgbV9jYW52
YXMgPSBhZG9wdFB0cihza2lhOjpDcmVhdGVCaXRtYXBDYW52YXMoc2NhbGVkV2lkdGgsIHNjYWxl
ZEhlaWdodCwgdHJ1ZSkpOwotICAgIHJldHVybiBtX2NhbnZhcy5nZXQoKTsKLX0KLQotdm9pZCBX
ZWJWaWV3SG9zdDo6cmVzZXRTY3JvbGxSZWN0KCkKLXsKLX0KLQotdm9pZCBXZWJWaWV3SG9zdDo6
ZGlzY2FyZEJhY2tpbmdTdG9yZSgpCi17Ci0gICAgbV9jYW52YXMuY2xlYXIoKTsKLX0KLQotLy8g
UGFpbnRzIHRoZSBlbnRpcmUgY2FudmFzIGEgc2VtaS10cmFuc3BhcmVudCBibGFjayAoZ3JheWlz
aCkuIFRoaXMgaXMgdXNlZAotLy8gYnkgdGhlIGxheW91dCB0ZXN0cyBpbiBmYXN0L3JlcGFpbnQu
IFRoZSBhbHBoYSB2YWx1ZSBtYXRjaGVzIHVwc3RyZWFtLgotdm9pZCBXZWJWaWV3SG9zdDo6ZGlz
cGxheVJlcGFpbnRNYXNrKCkKLXsKLSAgICBjYW52YXMoKS0+ZHJhd0FSR0IoMTY3LCAwLCAwLCAw
KTsKLX0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4
IDIzYTIyZDhmZjgwOGE4MjE0ZDA1NzllOWJlYzU5MjRjZDY0ZGVkOGUuLjRmOWM3YzkyMjQwNWY1
MDQ2ZDE5MWViZGIwYmMwMTI1NmQxZDM2OWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuaApAQCAtODgsMTIgKzg4LDYgQEAgY2xhc3MgV2ViVmlld0hvc3Qg
OiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNs
aWVudCwKICAgICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCBzZXRQZW5kaW5nRXh0cmFEYXRhKFBh
c3NPd25QdHI8VGVzdFNoZWxsRXh0cmFEYXRhPik7CiAKLSAgICB2b2lkIHBhaW50UmVjdChjb25z
dCBXZWJLaXQ6OldlYlJlY3QmKTsKLSAgICB2b2lkIHBhaW50SW52YWxpZGF0ZWRSZWdpb24oKTsK
LSAgICB2b2lkIHBhaW50UGFnZXNXaXRoQm91bmRhcmllcygpOwotICAgIFNrQ2FudmFzKiBjYW52
YXMoKTsKLSAgICB2b2lkIGRpc3BsYXlSZXBhaW50TWFzaygpOwotCiAgICAgVGVzdE5hdmlnYXRp
b25Db250cm9sbGVyKiBuYXZpZ2F0aW9uQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fbmF2aWdhdGlv
bkNvbnRyb2xsZXIuZ2V0KCk7IH0KIAogICAgIHZvaWQgY2xvc2VXaWRnZXQoKTsKQEAgLTE1Myw4
ICsxNDcsNiBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGll
bnQsIHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1lQ2xpZW50LAogICAgIHZpcnR1YWwgdm9pZCBzZXRN
b2NrU3BlZWNoUmVjb2duaXRpb25FcnJvcihjb25zdCBzdGQ6OnN0cmluZyYsIGNvbnN0IHN0ZDo6
c3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHdhc01vY2tTcGVlY2hSZWNvZ25p
dGlvbkFib3J0ZWQoKSBPVkVSUklERTsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5
KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lvbigp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0ZXN0RmluaXNoZWQoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgdGVzdFRpbWVkT3V0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29s
IGlzQmVpbmdEZWJ1Z2dlZCgpIE9WRVJSSURFOwpAQCAtMjk4LDggKzI5MCw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwcmludEZyYW1lRGVzY3JpcHRpb24oV2ViS2l0OjpXZWJGcmFtZSopOwogCiAg
ICAgYm9vbCBoYXNXaW5kb3coKSBjb25zdCB7IHJldHVybiBtX2hhc1dpbmRvdzsgfQotICAgIHZv
aWQgcmVzZXRTY3JvbGxSZWN0KCk7Ci0gICAgdm9pZCBkaXNjYXJkQmFja2luZ1N0b3JlKCk7CiAK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIHdlYmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFT
dHJlYW1DbGllbnQqIHRlc3RNZWRpYVN0cmVhbUNsaWVudCgpOwpAQCAtMzMzLDEwICszMjMsNiBA
QCBwcml2YXRlOgogICAgIHN0ZDo6c3RyaW5nIG1fZWRpdENvbW1hbmROYW1lOwogICAgIHN0ZDo6
c3RyaW5nIG1fZWRpdENvbW1hbmRWYWx1ZTsKIAotICAgIC8vIFBhaW50aW5nLgotICAgIE93blB0
cjxTa0NhbnZhcz4gbV9jYW52YXM7Ci0gICAgV2ViS2l0OjpXZWJSZWN0IG1fcGFpbnRSZWN0Owot
ICAgIGJvb2wgbV9pc1BhaW50aW5nOwogCiAgICAgT3duUHRyPFdlYktpdDo6V2ViQ29udGV4dE1l
bnVEYXRhPiBtX2xhc3RDb250ZXh0TWVudURhdGE7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188424</attachid>
            <date>2013-02-14 14:18:27 -0800</date>
            <delta_ts>2013-02-14 15:52:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109686-20130214231454.patch</filename>
            <type>text/plain</type>
            <size>35273</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyOTAwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTdiMGY1ZDk1YjU0MDViMDllYTg0MWIxYzA4NzhkYTEy
ZDUzZDA0ZC4uZTIzZGQ0ODA2ZDI1NGEzZjcwZjJlOGZkNDc3MjFiYjFkMzcxODk0MyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYz
IEBACisyMDEzLTAyLTE0ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBwaXhlbCBnZW5lcmF0aW9uIGxvZ2ljIHRvIFRlc3RS
dW5uZXIgbGlicmFyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA5Njg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUu
Z3lwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYlRlc3REZWxlZ2F0ZS5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1Ymxp
Yy9XZWJUZXN0UHJveHkuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUZXN0UnVubmVyLmg6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50
ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0SW50ZXJmYWNlczo6flRl
c3RJbnRlcmZhY2VzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RJbnRlcmZhY2VzOjpz
ZXRXZWJWaWV3KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RJbnRlcmZhY2VzOjpwcm94
eSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcik6CisgICAgICAgIChUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpzZXRXZWJWaWV3KToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2V0QmFja2luZ1Nj
YWxlRmFjdG9yKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OmRpc3BsYXkp
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6ZGlzcGxheUludmFsaWRhdGVk
UmVnaW9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0UnVubmVyLmg6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFRlc3RS
dW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlRlc3RJbnRlcmZhY2VzLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJ
bnRlcmZhY2VzOjpzZXRXZWJWaWV3KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6V2ViVGVzdFByb3h5QmFzZTo6cmVzZXQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2Vi
VGVzdFByb3h5QmFzZTo6Y2FwdHVyZVBpeGVscyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnBhaW50UmVjdCk6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjpwYWludEludmFsaWRhdGVk
UmVnaW9uKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnBhaW50
UGFnZXNXaXRoQm91bmRhcmllcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJv
eHlCYXNlOjpjYW52YXMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFz
ZTo6ZGlzcGxheVJlcGFpbnRNYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQ
cm94eUJhc2U6OmRpc3BsYXkpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5
QmFzZTo6ZGlzcGxheUludmFsaWRhdGVkUmVnaW9uKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OldlYlRlc3RQcm94eUJhc2U6OmRpc2NhcmRCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6c2V0V2luZG93UmVjdCk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjp1c2VyTWVkaWFDbGllbnQpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHA6CisgICAgICAgIChUZXN0U2hl
bGw6OmNyZWF0ZU1haW5XaW5kb3cpOgorICAgICAgICAoVGVzdFNoZWxsOjp+VGVzdFNoZWxsKToK
KyAgICAgICAgKFRlc3RTaGVsbDo6c2hvd0RldlRvb2xzKToKKyAgICAgICAgKFRlc3RTaGVsbDo6
Y2xvc2VEZXZUb29scyk6CisgICAgICAgIChUZXN0U2hlbGw6OmR1bXApOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdI
b3N0OjpzZXRXaW5kb3dSZWN0KToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpzZXREZXZpY2VTY2Fs
ZUZhY3Rvcik6CisgICAgICAgIChXZWJWaWV3SG9zdDo6cmVzZXQpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6CisgICAgICAgIChXZWJWaWV3SG9zdCk6
CisKIDIwMTMtMDItMTQgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgZW9sLXN0eWxlPW5hdGl2ZSB0byBzb2x1dGlvbiBmaWxlcy4gQWRkIGEgbmV3IHNv
bHV0aW9uIGZpbGUuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVy
VHJlZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cAppbmRleCAwODM5Mzk2YjgyYjE0M2NhYjBk
MGZlMzIyZmFhMDBhNDVjMzE4MTM5Li5kNDM4ZTM3ZGMwMzFmZTI1OTY0NDY2MGZhNTAyOWY4NWVj
MDZlNDk1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5n
eXAvRHVtcFJlbmRlclRyZWUuZ3lwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5k
ZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKQEAgLTExNCw2ICsxMTQsNyBAQAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2Jhc2UvYmFzZS5neXA6YmFzZScs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2J1
aWxkL3RlbXBfZ3lwL2dvb2dsZXVybC5neXA6Z29vZ2xldXJsJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvc2tpYS9za2lhLmd5cDpza2lhJywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvdjgv
dG9vbHMvZ3lwL3Y4Lmd5cDp2OCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6IHsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVi
bGljL1dlYlRlc3REZWxlZ2F0ZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmgKaW5kZXggMjg1NmM3ZDU4Yjg2NTI2YTY3
ZTlhMmIyYzIwZTJlMjc5ZTgzODRkZi4uMDc3OGVjMWZkNTgyN2NjMTFjMmQxZWVhNDUyM2IxNjRi
N2NiN2E3MyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmgKQEAgLTk5LDggKzk5
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhZGRNb2NrU3BlZWNoUmVjb2duaXRpb25S
ZXN1bHQoY29uc3Qgc3RkOjpzdHJpbmcmLCBkb3VibGUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRNb2NrU3BlZWNoUmVjb2duaXRpb25FcnJvcihjb25zdCBzdGQ6OnN0cmluZyYsIGNvbnN0IHN0
ZDo6c3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBib29sIHdhc01vY2tTcGVlY2hSZWNvZ25pdGlv
bkFib3J0ZWQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5KCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lvbigpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCB0ZXN0RmluaXNoZWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdGVzdFRp
bWVkT3V0KCkgeyB9CiAgICAgdmlydHVhbCBib29sIGlzQmVpbmdEZWJ1Z2dlZCgpIHsgcmV0dXJu
IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaAppbmRleCAwMDYy
MDNjY2EyMGFiMmVhMDk4NDE3NTA2MGU2ODQ4ZmY3OGM0MDQwLi40NTJjMTQ5MWU1YWFiODM5NjFi
MmU2MTY0MzgyMzA3ZjY3ZGJmMmE4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZh
Y2VzLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCiBjbGFz
cyBUZXN0SW50ZXJmYWNlczsKIGNsYXNzIFdlYlRlc3REZWxlZ2F0ZTsKK2NsYXNzIFdlYlRlc3RQ
cm94eUJhc2U7CiBjbGFzcyBXZWJUZXN0UnVubmVyOwogCiBjbGFzcyBXRUJURVNUUlVOTkVSX0VY
UE9SVCBXZWJUZXN0SW50ZXJmYWNlcyB7CkBAIC01NSw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBX
ZWJUZXN0SW50ZXJmYWNlcygpOwogICAgIH5XZWJUZXN0SW50ZXJmYWNlcygpOwogCi0gICAgdm9p
ZCBzZXRXZWJWaWV3KFdlYktpdDo6V2ViVmlldyopOworICAgIHZvaWQgc2V0V2ViVmlldyhXZWJL
aXQ6OldlYlZpZXcqLCBXZWJUZXN0UHJveHlCYXNlKik7CiAgICAgdm9pZCBzZXREZWxlZ2F0ZShX
ZWJUZXN0RGVsZWdhdGUqKTsKICAgICB2b2lkIGJpbmRUbyhXZWJLaXQ6OldlYkZyYW1lKik7CiAg
ICAgdm9pZCByZXNldEFsbCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UHJveHkuaAppbmRleCAxNWY1
NjBiYmE5OTYyNzhkZjA3NDA4YmRiNjNhN2Y0MmFhNTdhMjcyLi5lMzdlMmJkNjUzZDQ5YjRiMzI1
NmU3NjQ2NjViODQ4ZTY0MzEyODY1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UHJveHkuaAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UHJveHkuaApAQCAt
NzQsNiArNzQsOCBAQCBzdHJ1Y3QgV2ViU2l6ZTsKIHN0cnVjdCBXZWJXaW5kb3dGZWF0dXJlczsK
IH0KIAorY2xhc3MgU2tDYW52YXM7CisKIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIAogY2xh
c3MgU3BlbGxDaGVja0NsaWVudDsKQEAgLTkyLDEzICs5NCwxNSBAQCBwdWJsaWM6CiAKICAgICBX
ZWJLaXQ6OldlYlNwZWxsQ2hlY2tDbGllbnQgKnNwZWxsQ2hlY2tDbGllbnQoKSBjb25zdDsKIAot
ICAgIHZvaWQgc2V0UGFpbnRSZWN0KGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOwotICAgIFdlYktp
dDo6V2ViUmVjdCBwYWludFJlY3QoKSBjb25zdDsKLQogICAgIHN0ZDo6c3RyaW5nIGNhcHR1cmVU
cmVlKGJvb2wgZGVidWdSZW5kZXJUcmVlKTsKKyAgICBTa0NhbnZhcyogY2FwdHVyZVBpeGVscygp
OwogCiAgICAgdm9pZCBzZXRMb2dDb25zb2xlT3V0cHV0KGJvb2wgZW5hYmxlZCk7CiAKKyAgICB2
b2lkIGRpc3BsYXkoKTsKKyAgICB2b2lkIGRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lvbigpOworICAg
IHZvaWQgZGlzY2FyZEJhY2tpbmdTdG9yZSgpOworCiBwcm90ZWN0ZWQ6CiAgICAgV2ViVGVzdFBy
b3h5QmFzZSgpOwogICAgIH5XZWJUZXN0UHJveHlCYXNlKCk7CkBAIC0xNjksNiArMTczLDExIEBA
IHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICB2b2lkIGxvY2F0aW9uQ2hhbmdlRG9uZShXZWJL
aXQ6OldlYkZyYW1lKik7CisgICAgdm9pZCBwYWludFJlY3QoY29uc3QgV2ViS2l0OjpXZWJSZWN0
Jik7CisgICAgdm9pZCBwYWludEludmFsaWRhdGVkUmVnaW9uKCk7CisgICAgdm9pZCBwYWludFBh
Z2VzV2l0aEJvdW5kYXJpZXMoKTsKKyAgICBTa0NhbnZhcyogY2FudmFzKCk7CisgICAgdm9pZCBk
aXNwbGF5UmVwYWludE1hc2soKTsKIAogICAgIFRlc3RJbnRlcmZhY2VzKiBtX3Rlc3RJbnRlcmZh
Y2VzOwogICAgIFdlYlRlc3REZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKQEAgLTE3Niw3ICsxODUsMTAg
QEAgcHJpdmF0ZToKICAgICBzdGQ6OmF1dG9fcHRyPFNwZWxsQ2hlY2tDbGllbnQ+IG1fc3BlbGxj
aGVjazsKICAgICBzdGQ6OmF1dG9fcHRyPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+IG1fdXNlck1l
ZGlhQ2xpZW50OwogCisgICAgLy8gUGFpbnRpbmcuCisgICAgc3RkOjphdXRvX3B0cjxTa0NhbnZh
cz4gbV9jYW52YXM7CiAgICAgV2ViS2l0OjpXZWJSZWN0IG1fcGFpbnRSZWN0OworICAgIGJvb2wg
bV9pc1BhaW50aW5nOwogICAgIHN0ZDo6bWFwPHVuc2lnbmVkLCBzdGQ6OnN0cmluZz4gbV9yZXNv
dXJjZUlkZW50aWZpZXJNYXA7CiAKICAgICBib29sIG1fbG9nQ29uc29sZU91dHB1dDsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dl
YlRlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
cHVibGljL1dlYlRlc3RSdW5uZXIuaAppbmRleCA4OGQ0YWU1YjdhNjY1OGMwOTlkNjkxZjkwYzE1
Mjc2ZTRjNjg1OTllLi4xMWQyZjM0NWQ4YTNlZDkyZmRlZDFiNjIwZjhiYWY3Njk1NWY2MWZhIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1Ymxp
Yy9XZWJUZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGVzdFJ1bm5lci5oCkBAIC00NCwxMCArNDQsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBBc0F1ZGlvKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgY29uc3QgV2ViS2l0OjpXZWJBcnJheUJ1ZmZlclZpZXcqIGF1ZGlvRGF0YSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViUGVybWlzc2lvbkNsaWVudCogd2ViUGVybWlz
c2lvbnMoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZER1bXBTZWxlY3Rpb25S
ZWN0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCB0ZXN0UmVwYWludCgpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgc3dlZXBIb3Jpem9udGFsbHkoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBib29sIGlzUHJpbnRpbmcoKSBjb25zdCA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJm
YWNlcy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0SW50ZXJmYWNlcy5jcHAKaW5kZXggYjQ0M2RmNTBmMzhiNmRmNjYyYTMxM2I5YTI0ZTA2M2Zl
YWIxOTJiMC4uYWQ3ZTJkZTRmNjI1MGQ0MzA5ZTU0Y2QxZjk5MmIyY2NjOTU5MWVkNSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdElu
dGVyZmFjZXMuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcApAQCAtNjMsNyArNjMsNyBAQCBUZXN0SW50ZXJmYWNl
czo6flRlc3RJbnRlcmZhY2VzKCkKICAgICBtX2V2ZW50U2VuZGVyLT5zZXRXZWJWaWV3KDApOwog
ICAgIC8vIG1fZ2FtZXBhZENvbnRyb2xsZXIgZG9lc24ndCBkZXBlbmQgb24gV2ViVmlldy4KICAg
ICBtX3RleHRJbnB1dENvbnRyb2xsZXItPnNldFdlYlZpZXcoMCk7Ci0gICAgbV90ZXN0UnVubmVy
LT5zZXRXZWJWaWV3KDApOworICAgIG1fdGVzdFJ1bm5lci0+c2V0V2ViVmlldygwLCAwKTsKIAog
ICAgIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXItPnNldERlbGVnYXRlKDApOwogICAgIG1fZXZl
bnRTZW5kZXItPnNldERlbGVnYXRlKDApOwpAQCAtNzIsMTQgKzcyLDE1IEBAIFRlc3RJbnRlcmZh
Y2VzOjp+VGVzdEludGVyZmFjZXMoKQogICAgIG1fdGVzdFJ1bm5lci0+c2V0RGVsZWdhdGUoMCk7
CiB9CiAKLXZvaWQgVGVzdEludGVyZmFjZXM6OnNldFdlYlZpZXcoV2ViVmlldyogd2ViVmlldykK
K3ZvaWQgVGVzdEludGVyZmFjZXM6OnNldFdlYlZpZXcoV2ViVmlldyogd2ViVmlldywgV2ViVGVz
dFByb3h5QmFzZSogcHJveHkpCiB7CiAgICAgbV93ZWJWaWV3ID0gd2ViVmlldzsKKyAgICBtX3By
b3h5ID0gcHJveHk7CiAgICAgbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlci0+c2V0V2ViVmlldyh3
ZWJWaWV3KTsKICAgICBtX2V2ZW50U2VuZGVyLT5zZXRXZWJWaWV3KHdlYlZpZXcpOwogICAgIC8v
IG1fZ2FtZXBhZENvbnRyb2xsZXIgZG9lc24ndCBkZXBlbmQgb24gV2ViVmlldy4KICAgICBtX3Rl
eHRJbnB1dENvbnRyb2xsZXItPnNldFdlYlZpZXcod2ViVmlldyk7Ci0gICAgbV90ZXN0UnVubmVy
LT5zZXRXZWJWaWV3KHdlYlZpZXcpOworICAgIG1fdGVzdFJ1bm5lci0+c2V0V2ViVmlldyh3ZWJW
aWV3LCBwcm94eSk7CiB9CiAKIHZvaWQgVGVzdEludGVyZmFjZXM6OnNldERlbGVnYXRlKFdlYlRl
c3REZWxlZ2F0ZSogZGVsZWdhdGUpCkBAIC0xNTYsNCArMTU3LDkgQEAgV2ViVGVzdERlbGVnYXRl
KiBUZXN0SW50ZXJmYWNlczo6ZGVsZWdhdGUoKQogICAgIHJldHVybiBtX2RlbGVnYXRlOwogfQog
CitXZWJUZXN0UHJveHlCYXNlKiBUZXN0SW50ZXJmYWNlczo6cHJveHkoKQoreworICAgIHJldHVy
biBtX3Byb3h5OworfQorCiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaAppbmRleCBlYzNhMWRl
Mjg2OThjZmEwZTc2ODA5YWI0NzI0MDk4NmQwOGMzYzM1Li45ZDJlOGMzMTczMGE0MDA2YjU3YzEy
MmNkNjM0MjYzMGZhODRhMmViIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgKQEAgLTQ3LDEz
ICs0NywxNCBAQCBjbGFzcyBHYW1lcGFkQ29udHJvbGxlcjsKIGNsYXNzIFRlc3RSdW5uZXI7CiBj
bGFzcyBUZXh0SW5wdXRDb250cm9sbGVyOwogY2xhc3MgV2ViVGVzdERlbGVnYXRlOworY2xhc3Mg
V2ViVGVzdFByb3h5QmFzZTsKIAogY2xhc3MgVGVzdEludGVyZmFjZXMgewogcHVibGljOgogICAg
IFRlc3RJbnRlcmZhY2VzKCk7CiAgICAgflRlc3RJbnRlcmZhY2VzKCk7CiAKLSAgICB2b2lkIHNl
dFdlYlZpZXcoV2ViS2l0OjpXZWJWaWV3Kik7CisgICAgdm9pZCBzZXRXZWJWaWV3KFdlYktpdDo6
V2ViVmlldyosIFdlYlRlc3RQcm94eUJhc2UqKTsKICAgICB2b2lkIHNldERlbGVnYXRlKFdlYlRl
c3REZWxlZ2F0ZSopOwogICAgIHZvaWQgYmluZFRvKFdlYktpdDo6V2ViRnJhbWUqKTsKICAgICB2
b2lkIHJlc2V0QWxsKCk7CkBAIC02NSw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICBUZXN0UnVubmVy
KiB0ZXN0UnVubmVyKCk7CiAgICAgV2ViS2l0OjpXZWJWaWV3KiB3ZWJWaWV3KCk7CiAgICAgV2Vi
VGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSgpOworICAgIFdlYlRlc3RQcm94eUJhc2UqIHByb3h5KCk7
CiAKIAogcHJpdmF0ZToKQEAgLTc1LDYgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OmF1dG9f
cHRyPFRlc3RSdW5uZXI+IG1fdGVzdFJ1bm5lcjsKICAgICBXZWJLaXQ6OldlYlZpZXcqIG1fd2Vi
VmlldzsKICAgICBXZWJUZXN0RGVsZWdhdGUqIG1fZGVsZWdhdGU7CisgICAgV2ViVGVzdFByb3h5
QmFzZSogbV9wcm94eTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKaW5kZXggZDY0OWFi
ZDBkNmUzNjYyMTgzODVkZGI2MWQ0Mjg4OTRkNGNkZjYxMC4uOTUzMjIxZWIzMGIxMDI4NGU0MmFk
OTM4NjFmYmI0ZjRmMDQ4NmYzZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKQEAgLTUxLDYgKzUx
LDcgQEAKICNpbmNsdWRlICJXZWJTdXJyb3VuZGluZ1RleHQuaCIKICNpbmNsdWRlICJXZWJUYXNr
LmgiCiAjaW5jbHVkZSAiV2ViVGVzdERlbGVnYXRlLmgiCisjaW5jbHVkZSAiV2ViVGVzdFByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgInY4L2luY2x1ZGUvdjguaCIKICNp
bmNsdWRlIDxsaW1pdHM+CkBAIC0zMzksNiArMzQwLDEyIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0
RGVsZWdhdGUoV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSkKICNlbmRpZgogfQogCit2b2lkIFRl
c3RSdW5uZXI6OnNldFdlYlZpZXcoV2ViVmlldyogd2ViVmlldywgV2ViVGVzdFByb3h5QmFzZSog
cHJveHkpCit7CisgICAgbV93ZWJWaWV3ID0gd2ViVmlldzsKKyAgICBtX3Byb3h5ID0gcHJveHk7
Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6cmVzZXQoKQogewogICAgIGlmIChtX3dlYlZpZXcpIHsK
QEAgLTE3MzQsNiArMTc0MSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFj
dG9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpCiAKICAgICBmbG9h
dCB2YWx1ZSA9IGFyZ3VtZW50c1swXS52YWx1ZS5kb3VibGVWYWx1ZTsKICAgICBtX2RlbGVnYXRl
LT5zZXREZXZpY2VTY2FsZUZhY3Rvcih2YWx1ZSk7CisgICAgbV9wcm94eS0+ZGlzY2FyZEJhY2tp
bmdTdG9yZSgpOwogCiAgICAgYXV0b19wdHI8Q3BwVmFyaWFudD4gY2FsbGJhY2tBcmd1bWVudHMo
bmV3IENwcFZhcmlhbnQoKSk7CiAgICAgY2FsbGJhY2tBcmd1bWVudHMtPnNldChhcmd1bWVudHNb
MV0pOwpAQCAtMTg0MywxMyArMTg1MSwxMyBAQCB2b2lkIFRlc3RSdW5uZXI6Ondhc01vY2tTcGVl
Y2hSZWNvZ25pdGlvbkFib3J0ZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaQogCiB2
b2lkIFRlc3RSdW5uZXI6OmRpc3BsYXkoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMs
IENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKLSAgICBtX2RlbGVnYXRlLT5kaXNwbGF5KCk7CisgICAg
bV9wcm94eS0+ZGlzcGxheSgpOwogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCiB2b2lkIFRl
c3RSdW5uZXI6OmRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lvbihjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewotICAgIG1fZGVsZWdhdGUtPmRpc3Bs
YXlJbnZhbGlkYXRlZFJlZ2lvbigpOworICAgIG1fcHJveHktPmRpc3BsYXlJbnZhbGlkYXRlZFJl
Z2lvbigpOwogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKaW5k
ZXggNTFmMzA5Y2VhMGEwODBlZTlkMTA5NWU2OTI2Y2MxMWViYjJkOGM2OS4uNDYyNzk0YWY3ZDMy
OWZiODcwNTRmOGFkYTRhMTczNzA5YTc2YjQ0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaApAQCAtNTcs
NiArNTcsNyBAQCBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiBjbGFzcyBOb3RpZmljYXRpb25Q
cmVzZW50ZXI7CiBjbGFzcyBXZWJQZXJtaXNzaW9uczsKIGNsYXNzIFdlYlRlc3REZWxlZ2F0ZTsK
K2NsYXNzIFdlYlRlc3RQcm94eUJhc2U7CiAKIGNsYXNzIFRlc3RSdW5uZXIgOiBwdWJsaWMgV2Vi
VGVzdFJ1bm5lciwgcHVibGljIENwcEJvdW5kQ2xhc3MgewogcHVibGljOgpAQCAtNjQsNyArNjUs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGVzdFJ1bm5lcigpOwogCiAgICAgdm9pZCBzZXRE
ZWxlZ2F0ZShXZWJUZXN0RGVsZWdhdGUqKTsKLSAgICB2b2lkIHNldFdlYlZpZXcoV2ViS2l0OjpX
ZWJWaWV3KiB3ZWJWaWV3KSB7IG1fd2ViVmlldyA9IHdlYlZpZXc7IH0KKyAgICB2b2lkIHNldFdl
YlZpZXcoV2ViS2l0OjpXZWJWaWV3KiwgV2ViVGVzdFByb3h5QmFzZSopOwogCiAgICAgdm9pZCBy
ZXNldCgpOwogCkBAIC03NywxMiArNzgsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGREdW1wQXNBdWRpbygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgV2Vi
S2l0OjpXZWJBcnJheUJ1ZmZlclZpZXcqIGF1ZGlvRGF0YSgpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgV2ViS2l0OjpXZWJQZXJtaXNzaW9uQ2xpZW50KiB3ZWJQZXJtaXNzaW9ucygpIGNv
bnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wU2VsZWN0aW9uUmVjdCgp
IGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCB0ZXN0UmVwYWludCgpIGNvbnN0IE9W
RVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzd2VlcEhvcml6b250YWxseSgpIGNvbnN0IE9WRVJS
SURFOwotICAgIHZpcnR1YWwgYm9vbCBpc1ByaW50aW5nKCkgY29uc3QgT1ZFUlJJREU7CiAKICAg
ICAvLyBNZXRob2RzIHVzZWQgYnkgV2ViVGVzdFByb3h5QmFzZS4KKyAgICBib29sIHNob3VsZER1
bXBTZWxlY3Rpb25SZWN0KCkgY29uc3Q7CisgICAgYm9vbCB0ZXN0UmVwYWludCgpIGNvbnN0Owor
ICAgIGJvb2wgc3dlZXBIb3Jpem9udGFsbHkoKSBjb25zdDsKKyAgICBib29sIGlzUHJpbnRpbmco
KSBjb25zdDsKICAgICBib29sIHNob3VsZER1bXBBc1RleHQoKTsKICAgICBib29sIHNob3VsZER1
bXBCYWNrRm9yd2FyZExpc3QoKSBjb25zdDsKICAgICBib29sIHNob3VsZER1bXBDaGlsZEZyYW1l
U2Nyb2xsUG9zaXRpb25zKCkgY29uc3Q7CkBAIC02NjEsNiArNjYyLDcgQEAgcHJpdmF0ZToKIAog
ICAgIFdlYlRlc3REZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKICAgICBXZWJLaXQ6OldlYlZpZXcqIG1f
d2ViVmlldzsKKyAgICBXZWJUZXN0UHJveHlCYXNlKiBtX3Byb3h5OwogCiAgICAgLy8gVGhpcyBp
cyBub24tMCBJRkYgYSBsb2FkIGlzIGluIHByb2dyZXNzLgogICAgIFdlYktpdDo6V2ViRnJhbWUq
IG1fdG9wTG9hZGluZ0ZyYW1lOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwCmlu
ZGV4IGQ0MGIwNDQ4ODJhMzNjY2MyN2QwMDEwZGQ2MzRmMGQ0ZTNhZmU1NWEuLjJhMTc2ZDc2Mzlh
OTMwNTg5NDAyMDVhYzJmMDU4MzhkNGE2MmY2MzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50
ZXJmYWNlcy5jcHAKQEAgLTQ5LDkgKzQ5LDkgQEAgV2ViVGVzdEludGVyZmFjZXM6On5XZWJUZXN0
SW50ZXJmYWNlcygpCiB7CiB9CiAKLXZvaWQgV2ViVGVzdEludGVyZmFjZXM6OnNldFdlYlZpZXco
V2ViVmlldyogd2ViVmlldykKK3ZvaWQgV2ViVGVzdEludGVyZmFjZXM6OnNldFdlYlZpZXcoV2Vi
Vmlldyogd2ViVmlldywgV2ViVGVzdFByb3h5QmFzZSogcHJveHkpCiB7Ci0gICAgbV9pbnRlcmZh
Y2VzLT5zZXRXZWJWaWV3KHdlYlZpZXcpOworICAgIG1faW50ZXJmYWNlcy0+c2V0V2ViVmlldyh3
ZWJWaWV3LCBwcm94eSk7CiB9CiAKIHZvaWQgV2ViVGVzdEludGVyZmFjZXM6OnNldERlbGVnYXRl
KFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcAppbmRl
eCA1MDU4OWExOThmZWIzMTg5MGYwMzE1NWE4ZDIyNWRiNjNlZjJkY2I4Li44NWNlNGQ3MmYyMThj
YjczNjljYjVjN2IyYzJiZGVlMGQwZDM2MzJlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAK
QEAgLTU3LDYgKzU3LDggQEAKICNpbmNsdWRlICJXZWJUZXN0UnVubmVyLmgiCiAjaW5jbHVkZSAi
V2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKKy8vIEZJWE1F
OiBJbmNsdWRpbmcgcGxhdGZvcm1fY2FudmFzLmggaGVyZSBpcyBhIGxheWVyaW5nIHZpb2xhdGlv
bi4KKyNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKICNpbmNsdWRlIDxjY3R5
cGU+CiAjaW5jbHVkZSA8cHVibGljL1dlYkNTdHJpbmcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2Vi
VVJMRXJyb3IuaD4KQEAgLTQzNiw2ICs0MzgsOCBAQCB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OnNl
dERlbGVnYXRlKFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUpCiB2b2lkIFdlYlRlc3RQcm94eUJh
c2U6OnJlc2V0KCkKIHsKICAgICBtX3BhaW50UmVjdCA9IFdlYlJlY3QoKTsKKyAgICBtX2NhbnZh
cy5yZXNldCgpOworICAgIG1faXNQYWludGluZyA9IGZhbHNlOwogICAgIG1fcmVzb3VyY2VJZGVu
dGlmaWVyTWFwLmNsZWFyKCk7CiAgICAgbV9sb2dDb25zb2xlT3V0cHV0ID0gdHJ1ZTsKIH0KQEAg
LTQ0NSwxNiArNDQ5LDYgQEAgV2ViU3BlbGxDaGVja0NsaWVudCogV2ViVGVzdFByb3h5QmFzZTo6
c3BlbGxDaGVja0NsaWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3BlbGxjaGVjay5nZXQoKTsK
IH0KIAotdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpzZXRQYWludFJlY3QoY29uc3QgV2ViUmVjdCYg
cmVjdCkKLXsKLSAgICBtX3BhaW50UmVjdCA9IHJlY3Q7Ci19Ci0KLVdlYlJlY3QgV2ViVGVzdFBy
b3h5QmFzZTo6cGFpbnRSZWN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYWludFJlY3Q7Ci19
Ci0KIHN0cmluZyBXZWJUZXN0UHJveHlCYXNlOjpjYXB0dXJlVHJlZShib29sIGRlYnVnUmVuZGVy
VHJlZSkKIHsKICAgICBXZWJTY3JpcHRDb250cm9sbGVyOjpmbHVzaENvbnNvbGVNZXNzYWdlcygp
OwpAQCAtNDgzLDExICs0NzcsMTY0IEBAIHN0cmluZyBXZWJUZXN0UHJveHlCYXNlOjpjYXB0dXJl
VHJlZShib29sIGRlYnVnUmVuZGVyVHJlZSkKICAgICByZXR1cm4gZGF0YVV0Zjg7CiB9CiAKK1Nr
Q2FudmFzKiBXZWJUZXN0UHJveHlCYXNlOjpjYXB0dXJlUGl4ZWxzKCkKK3sKKyAgICBtX3Rlc3RJ
bnRlcmZhY2VzLT53ZWJWaWV3KCktPmxheW91dCgpOworICAgIGlmIChtX3Rlc3RJbnRlcmZhY2Vz
LT50ZXN0UnVubmVyKCktPnRlc3RSZXBhaW50KCkpIHsKKyAgICAgICAgV2ViU2l6ZSB2aWV3U2l6
ZSA9IG1fdGVzdEludGVyZmFjZXMtPndlYlZpZXcoKS0+c2l6ZSgpOworICAgICAgICBpbnQgd2lk
dGggPSB2aWV3U2l6ZS53aWR0aDsKKyAgICAgICAgaW50IGhlaWdodCA9IHZpZXdTaXplLmhlaWdo
dDsKKyAgICAgICAgaWYgKG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+c3dlZXBIb3Jp
em9udGFsbHkoKSkgeworICAgICAgICAgICAgZm9yIChXZWJSZWN0IGNvbHVtbigwLCAwLCAxLCBo
ZWlnaHQpOyBjb2x1bW4ueCA8IHdpZHRoOyBjb2x1bW4ueCsrKQorICAgICAgICAgICAgICAgIHBh
aW50UmVjdChjb2x1bW4pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChXZWJS
ZWN0IGxpbmUoMCwgMCwgd2lkdGgsIDEpOyBsaW5lLnkgPCBoZWlnaHQ7IGxpbmUueSsrKQorICAg
ICAgICAgICAgICAgIHBhaW50UmVjdChsaW5lKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAo
bV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5pc1ByaW50aW5nKCkpCisgICAgICAgIHBh
aW50UGFnZXNXaXRoQm91bmRhcmllcygpOworICAgIGVsc2UKKyAgICAgICAgcGFpbnRJbnZhbGlk
YXRlZFJlZ2lvbigpOworCisgICAgLy8gU2VlIGlmIHdlIG5lZWQgdG8gZHJhdyB0aGUgc2VsZWN0
aW9uIGJvdW5kcyByZWN0LiBTZWxlY3Rpb24gYm91bmRzCisgICAgLy8gcmVjdCBpcyB0aGUgcmVj
dCBlbmNsb3NpbmcgdGhlIChwb3NzaWJseSB0cmFuc2Zvcm1lZCkgc2VsZWN0aW9uLgorICAgIC8v
IFRoZSByZWN0IHNob3VsZCBiZSBkcmF3biBhZnRlciBldmVyeXRoaW5nIGlzIGxhaWQgb3V0IGFu
ZCBwYWludGVkLgorICAgIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCktPnNob3Vs
ZER1bXBTZWxlY3Rpb25SZWN0KCkpIHsKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBzZWxlY3Rp
b24gcmVjdCAtIGRyYXcgYSByZWQgMXB4IGJvcmRlciBlbmNsb3NpbmcgcmVjdAorICAgICAgICBX
ZWJSZWN0IHdyID0gbV90ZXN0SW50ZXJmYWNlcy0+d2ViVmlldygpLT5tYWluRnJhbWUoKS0+c2Vs
ZWN0aW9uQm91bmRzUmVjdCgpOworICAgICAgICBpZiAoIXdyLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgLy8gUmVuZGVyIGEgcmVkIHJlY3RhbmdsZSBib3VuZGluZyBzZWxlY3Rpb24gcmVjdAor
ICAgICAgICAgICAgU2tQYWludCBwYWludDsKKyAgICAgICAgICAgIHBhaW50LnNldENvbG9yKDB4
RkZGRjAwMDApOyAvLyBGdWxseSBvcGFxdWUgcmVkCisgICAgICAgICAgICBwYWludC5zZXRTdHls
ZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsKKyAgICAgICAgICAgIHBhaW50LnNldEZsYWdzKFNr
UGFpbnQ6OmtBbnRpQWxpYXNfRmxhZyk7CisgICAgICAgICAgICBwYWludC5zZXRTdHJva2VXaWR0
aCgxLjBmKTsKKyAgICAgICAgICAgIFNrSVJlY3QgcmVjdDsgLy8gQm91bmRpbmcgcmVjdAorICAg
ICAgICAgICAgcmVjdC5zZXQod3IueCwgd3IueSwgd3IueCArIHdyLndpZHRoLCB3ci55ICsgd3Iu
aGVpZ2h0KTsKKyAgICAgICAgICAgIGNhbnZhcygpLT5kcmF3SVJlY3QocmVjdCwgcGFpbnQpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGNhbnZhcygpOworfQorCiB2b2lkIFdlYlRl
c3RQcm94eUJhc2U6OnNldExvZ0NvbnNvbGVPdXRwdXQoYm9vbCBlbmFibGVkKQogewogICAgIG1f
bG9nQ29uc29sZU91dHB1dCA9IGVuYWJsZWQ7CiB9CiAKK3ZvaWQgV2ViVGVzdFByb3h5QmFzZTo6
cGFpbnRSZWN0KGNvbnN0IFdlYlJlY3QmIHJlY3QpCit7CisgICAgV0VCS0lUX0FTU0VSVCghbV9p
c1BhaW50aW5nKTsKKyAgICBXRUJLSVRfQVNTRVJUKGNhbnZhcygpKTsKKyAgICBtX2lzUGFpbnRp
bmcgPSB0cnVlOworICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gbV90ZXN0SW50ZXJmYWNl
cy0+d2ViVmlldygpLT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgIGludCBzY2FsZWRYID0gc3Rh
dGljX2Nhc3Q8aW50PihzdGF0aWNfY2FzdDxmbG9hdD4ocmVjdC54KSAqIGRldmljZVNjYWxlRmFj
dG9yKTsKKyAgICBpbnQgc2NhbGVkWSA9IHN0YXRpY19jYXN0PGludD4oc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHJlY3QueSkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgaW50IHNjYWxlZFdpZHRoID0g
c3RhdGljX2Nhc3Q8aW50PihjZWlsKHN0YXRpY19jYXN0PGZsb2F0PihyZWN0LndpZHRoKSAqIGRl
dmljZVNjYWxlRmFjdG9yKSk7CisgICAgaW50IHNjYWxlZEhlaWdodCA9IHN0YXRpY19jYXN0PGlu
dD4oY2VpbChzdGF0aWNfY2FzdDxmbG9hdD4ocmVjdC5oZWlnaHQpICogZGV2aWNlU2NhbGVGYWN0
b3IpKTsKKyAgICBXZWJSZWN0IGRldmljZVJlY3Qoc2NhbGVkWCwgc2NhbGVkWSwgc2NhbGVkV2lk
dGgsIHNjYWxlZEhlaWdodCk7CisgICAgbV90ZXN0SW50ZXJmYWNlcy0+d2ViVmlldygpLT5wYWlu
dChjYW52YXMoKSwgZGV2aWNlUmVjdCk7CisgICAgbV9pc1BhaW50aW5nID0gZmFsc2U7Cit9CisK
K3ZvaWQgV2ViVGVzdFByb3h5QmFzZTo6cGFpbnRJbnZhbGlkYXRlZFJlZ2lvbigpCit7CisgICAg
bV90ZXN0SW50ZXJmYWNlcy0+d2ViVmlldygpLT5hbmltYXRlKDAuMCk7CisgICAgbV90ZXN0SW50
ZXJmYWNlcy0+d2ViVmlldygpLT5sYXlvdXQoKTsKKyAgICBXZWJTaXplIHdpZGdldFNpemUgPSBt
X3Rlc3RJbnRlcmZhY2VzLT53ZWJWaWV3KCktPnNpemUoKTsKKyAgICBXZWJSZWN0IGNsaWVudFJl
Y3QoMCwgMCwgd2lkZ2V0U2l6ZS53aWR0aCwgd2lkZ2V0U2l6ZS5oZWlnaHQpOworCisgICAgLy8g
UGFpbnQgdGhlIGNhbnZhcyBpZiBuZWNlc3NhcnkuIEFsbG93IHBhaW50aW5nIHRvIGdlbmVyYXRl
IGV4dHJhIHJlY3RzCisgICAgLy8gZm9yIHRoZSBmaXJzdCB0d28gY2FsbHMuIFRoaXMgaXMgbmVj
ZXNzYXJ5IGJlY2F1c2Ugc29tZSBXZWJDb3JlIHJlbmRlcmluZworICAgIC8vIG9iamVjdHMgdXBk
YXRlIHRoZWlyIGxheW91dCBvbmx5IHdoZW4gcGFpbnRlZC4KKyAgICAvLyBTdG9yZSB0aGUgdG90
YWwgYXJlYSBwYWludGVkIGluIHRvdGFsX3BhaW50LiBUaGVuIHRlbGwgdGhlIGdkayB3aW5kb3cK
KyAgICAvLyB0byB1cGRhdGUgdGhhdCBhcmVhIGFmdGVyIHdlJ3JlIGRvbmUgcGFpbnRpbmcgaXQu
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpIHsKKyAgICAgICAgLy8gcmVjdCA9IGlu
dGVyc2VjdChtX3BhaW50UmVjdCAsIGNsaWVudFJlY3QpCisgICAgICAgIFdlYlJlY3QgZGFtYWdl
UmVjdCA9IG1fcGFpbnRSZWN0OworICAgICAgICBpbnQgbGVmdCA9IG1heChkYW1hZ2VSZWN0Lngs
IGNsaWVudFJlY3QueCk7CisgICAgICAgIGludCB0b3AgPSBtYXgoZGFtYWdlUmVjdC55LCBjbGll
bnRSZWN0LnkpOworICAgICAgICBpbnQgcmlnaHQgPSBtaW4oZGFtYWdlUmVjdC54ICsgZGFtYWdl
UmVjdC53aWR0aCwgY2xpZW50UmVjdC54ICsgY2xpZW50UmVjdC53aWR0aCk7CisgICAgICAgIGlu
dCBib3R0b20gPSBtaW4oZGFtYWdlUmVjdC55ICsgZGFtYWdlUmVjdC5oZWlnaHQsIGNsaWVudFJl
Y3QueSArIGNsaWVudFJlY3QuaGVpZ2h0KTsKKyAgICAgICAgV2ViUmVjdCByZWN0OworICAgICAg
ICBpZiAobGVmdCA8IHJpZ2h0ICYmIHRvcCA8IGJvdHRvbSkKKyAgICAgICAgICAgIHJlY3QgPSBX
ZWJSZWN0KGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0LCBib3R0b20gLSB0b3ApOworCisgICAgICAg
IG1fcGFpbnRSZWN0ID0gV2ViUmVjdCgpOworICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgcGFpbnRSZWN0KHJlY3QpOworICAgIH0KKyAg
ICBXRUJLSVRfQVNTRVJUKG1fcGFpbnRSZWN0LmlzRW1wdHkoKSk7Cit9CisKK3ZvaWQgV2ViVGVz
dFByb3h5QmFzZTo6cGFpbnRQYWdlc1dpdGhCb3VuZGFyaWVzKCkKK3sKKyAgICBXRUJLSVRfQVNT
RVJUKCFtX2lzUGFpbnRpbmcpOworICAgIFdFQktJVF9BU1NFUlQoY2FudmFzKCkpOworICAgIG1f
aXNQYWludGluZyA9IHRydWU7CisKKyAgICBXZWJTaXplIHBhZ2VTaXplSW5QaXhlbHMgPSBtX3Rl
c3RJbnRlcmZhY2VzLT53ZWJWaWV3KCktPnNpemUoKTsKKyAgICBXZWJGcmFtZSogd2ViRnJhbWUg
PSBtX3Rlc3RJbnRlcmZhY2VzLT53ZWJWaWV3KCktPm1haW5GcmFtZSgpOworCisgICAgaW50IHBh
Z2VDb3VudCA9IHdlYkZyYW1lLT5wcmludEJlZ2luKHBhZ2VTaXplSW5QaXhlbHMpOworICAgIGlu
dCB0b3RhbEhlaWdodCA9IHBhZ2VDb3VudCAqIChwYWdlU2l6ZUluUGl4ZWxzLmhlaWdodCArIDEp
IC0gMTsKKworICAgIFNrQ2FudmFzKiB0ZXN0Q2FudmFzID0gc2tpYTo6VHJ5Q3JlYXRlQml0bWFw
Q2FudmFzKHBhZ2VTaXplSW5QaXhlbHMud2lkdGgsIHRvdGFsSGVpZ2h0LCB0cnVlKTsKKyAgICBp
ZiAodGVzdENhbnZhcykgeworICAgICAgICBkaXNjYXJkQmFja2luZ1N0b3JlKCk7CisgICAgICAg
IG1fY2FudmFzLnJlc2V0KHRlc3RDYW52YXMpOworICAgIH0gZWxzZSB7CisgICAgICAgIHdlYkZy
YW1lLT5wcmludEVuZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2ViRnJhbWUt
PnByaW50UGFnZXNXaXRoQm91bmRhcmllcyhjYW52YXMoKSwgcGFnZVNpemVJblBpeGVscyk7Cisg
ICAgd2ViRnJhbWUtPnByaW50RW5kKCk7CisKKyAgICBtX2lzUGFpbnRpbmcgPSBmYWxzZTsKK30K
KworU2tDYW52YXMqIFdlYlRlc3RQcm94eUJhc2U6OmNhbnZhcygpCit7CisgICAgaWYgKG1fY2Fu
dmFzLmdldCgpKQorICAgICAgICByZXR1cm4gbV9jYW52YXMuZ2V0KCk7CisgICAgV2ViU2l6ZSB3
aWRnZXRTaXplID0gbV90ZXN0SW50ZXJmYWNlcy0+d2ViVmlldygpLT5zaXplKCk7CisgICAgZmxv
YXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBtX3Rlc3RJbnRlcmZhY2VzLT53ZWJWaWV3KCktPmRldmlj
ZVNjYWxlRmFjdG9yKCk7CisgICAgaW50IHNjYWxlZFdpZHRoID0gc3RhdGljX2Nhc3Q8aW50Pihj
ZWlsKHN0YXRpY19jYXN0PGZsb2F0Pih3aWRnZXRTaXplLndpZHRoKSAqIGRldmljZVNjYWxlRmFj
dG9yKSk7CisgICAgaW50IHNjYWxlZEhlaWdodCA9IHN0YXRpY19jYXN0PGludD4oY2VpbChzdGF0
aWNfY2FzdDxmbG9hdD4od2lkZ2V0U2l6ZS5oZWlnaHQpICogZGV2aWNlU2NhbGVGYWN0b3IpKTsK
KyAgICBtX2NhbnZhcy5yZXNldChza2lhOjpDcmVhdGVCaXRtYXBDYW52YXMoc2NhbGVkV2lkdGgs
IHNjYWxlZEhlaWdodCwgdHJ1ZSkpOworICAgIHJldHVybiBtX2NhbnZhcy5nZXQoKTsKK30KKwor
Ly8gUGFpbnRzIHRoZSBlbnRpcmUgY2FudmFzIGEgc2VtaS10cmFuc3BhcmVudCBibGFjayAoZ3Jh
eWlzaCkuIFRoaXMgaXMgdXNlZAorLy8gYnkgdGhlIGxheW91dCB0ZXN0cyBpbiBmYXN0L3JlcGFp
bnQuIFRoZSBhbHBoYSB2YWx1ZSBtYXRjaGVzIHVwc3RyZWFtLgordm9pZCBXZWJUZXN0UHJveHlC
YXNlOjpkaXNwbGF5UmVwYWludE1hc2soKQoreworICAgIGNhbnZhcygpLT5kcmF3QVJHQigxNjcs
IDAsIDAsIDApOworfQorCit2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpc3BsYXkoKQoreworICAg
IGNvbnN0IFdlYktpdDo6V2ViU2l6ZSYgc2l6ZSA9IG1fdGVzdEludGVyZmFjZXMtPndlYlZpZXco
KS0+c2l6ZSgpOworICAgIFdlYlJlY3QgcmVjdCgwLCAwLCBzaXplLndpZHRoLCBzaXplLmhlaWdo
dCk7CisgICAgbV9wYWludFJlY3QgPSByZWN0OworICAgIHBhaW50SW52YWxpZGF0ZWRSZWdpb24o
KTsKKyAgICBkaXNwbGF5UmVwYWludE1hc2soKTsKK30KKwordm9pZCBXZWJUZXN0UHJveHlCYXNl
OjpkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24oKQoreworICAgIHBhaW50SW52YWxpZGF0ZWRSZWdp
b24oKTsKKyAgICBkaXNwbGF5UmVwYWludE1hc2soKTsKK30KKwordm9pZCBXZWJUZXN0UHJveHlC
YXNlOjpkaXNjYXJkQmFja2luZ1N0b3JlKCkKK3sKKyAgICBtX2NhbnZhcy5yZXNldCgpOworfQor
CiB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpZEludmFsaWRhdGVSZWN0KGNvbnN0IFdlYlJlY3Qm
IHJlY3QpCiB7CiAgICAgLy8gbV9wYWludFJlY3QgPSBtX3BhaW50UmVjdCBVIHJlY3QKQEAgLTUy
Nyw2ICs2NzQsNyBAQCB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OnNob3coV2ViTmF2aWdhdGlvblBv
bGljeSkKIHZvaWQgV2ViVGVzdFByb3h5QmFzZTo6c2V0V2luZG93UmVjdChjb25zdCBXZWJSZWN0
JiByZWN0KQogewogICAgIHNjaGVkdWxlQ29tcG9zaXRlKCk7CisgICAgZGlzY2FyZEJhY2tpbmdT
dG9yZSgpOwogfQogCiB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpZEF1dG9SZXNpemUoY29uc3Qg
V2ViU2l6ZSYpCkBAIC03ODIsNyArOTMwLDcgQEAgV2ViVXNlck1lZGlhQ2xpZW50KiBXZWJUZXN0
UHJveHlCYXNlOjp1c2VyTWVkaWFDbGllbnQoKQogewogI2lmIEVOQUJMRV9XRUJSVEMKICAgICBp
ZiAoIW1fdXNlck1lZGlhQ2xpZW50LmdldCgpKQotICAgICAgICBtX3VzZXJNZWRpYUNsaWVudCA9
IGF1dG9fcHRyPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+KG5ldyBXZWJVc2VyTWVkaWFDbGllbnRN
b2NrKG1fZGVsZWdhdGUpKTsKKyAgICAgICAgbV91c2VyTWVkaWFDbGllbnQucmVzZXQobmV3IFdl
YlVzZXJNZWRpYUNsaWVudE1vY2sobV9kZWxlZ2F0ZSkpOwogICAgIHJldHVybiBtX3VzZXJNZWRp
YUNsaWVudC5nZXQoKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAppbmRleCAyZTZhY2QyNDczNzc1YmVhYTc2ZDYyMmI5
ZmEwOTUwY2ExYTVhYThkLi41MGVlNmFmMmM5NmE4MjVhMGY2NTljZGQ1OTcyMGNmMGJiMGY1Yjkx
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTE4
MiwxNiArMTgyLDE2IEBAIHZvaWQgVGVzdFNoZWxsOjpjcmVhdGVNYWluV2luZG93KCkKICAgICBt
X3dlYlZpZXdIb3N0ID0gYWRvcHRQdHIoY3JlYXRlTmV3V2luZG93KFdlYlVSTCgpLCBtX2RydERl
dlRvb2xzQWdlbnQuZ2V0KCksIG1fdGVzdEludGVyZmFjZXMuZ2V0KCkpKTsKICAgICBtX3dlYlZp
ZXcgPSBtX3dlYlZpZXdIb3N0LT53ZWJWaWV3KCk7CiAgICAgbV90ZXN0SW50ZXJmYWNlcy0+c2V0
RGVsZWdhdGUobV93ZWJWaWV3SG9zdC5nZXQoKSk7Ci0gICAgbV90ZXN0SW50ZXJmYWNlcy0+c2V0
V2ViVmlldyhtX3dlYlZpZXcpOworICAgIG1fdGVzdEludGVyZmFjZXMtPnNldFdlYlZpZXcobV93
ZWJWaWV3LCBtX3dlYlZpZXdIb3N0LT5wcm94eSgpKTsKICAgICBtX2RydERldlRvb2xzQWdlbnQt
PnNldFdlYlZpZXcobV93ZWJWaWV3KTsKIH0KIAogVGVzdFNoZWxsOjp+VGVzdFNoZWxsKCkKIHsK
ICAgICBtX3Rlc3RJbnRlcmZhY2VzLT5zZXREZWxlZ2F0ZSgwKTsKLSAgICBtX3Rlc3RJbnRlcmZh
Y2VzLT5zZXRXZWJWaWV3KDApOworICAgIG1fdGVzdEludGVyZmFjZXMtPnNldFdlYlZpZXcoMCwg
MCk7CiAgICAgbV9kZXZUb29sc1Rlc3RJbnRlcmZhY2VzLT5zZXREZWxlZ2F0ZSgwKTsKLSAgICBt
X2RldlRvb2xzVGVzdEludGVyZmFjZXMtPnNldFdlYlZpZXcoMCk7CisgICAgbV9kZXZUb29sc1Rl
c3RJbnRlcmZhY2VzLT5zZXRXZWJWaWV3KDAsIDApOwogICAgIG1fZHJ0RGV2VG9vbHNBZ2VudC0+
c2V0V2ViVmlldygwKTsKICAgICBpZiAobV93ZWJWaWV3SG9zdCkKICAgICAgICAgbV93ZWJWaWV3
SG9zdC0+c2h1dGRvd24oKTsKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFRlc3RTaGVsbDo6c2hv
d0RldlRvb2xzKCkKICAgICAgICAgbV9kZXZUb29scy0+d2ViVmlldygpLT5zZXR0aW5ncygpLT5z
ZXRNZW1vcnlJbmZvRW5hYmxlZCh0cnVlKTsKICAgICAgICAgbV9kZXZUb29scy0+cHJveHkoKS0+
c2V0TG9nQ29uc29sZU91dHB1dChmYWxzZSk7CiAgICAgICAgIG1fZGV2VG9vbHNUZXN0SW50ZXJm
YWNlcy0+c2V0RGVsZWdhdGUobV9kZXZUb29scyk7Ci0gICAgICAgIG1fZGV2VG9vbHNUZXN0SW50
ZXJmYWNlcy0+c2V0V2ViVmlldyhtX2RldlRvb2xzLT53ZWJWaWV3KCkpOworICAgICAgICBtX2Rl
dlRvb2xzVGVzdEludGVyZmFjZXMtPnNldFdlYlZpZXcobV9kZXZUb29scy0+d2ViVmlldygpLCBt
X2RldlRvb2xzLT5wcm94eSgpKTsKICAgICAgICAgQVNTRVJUKG1fZGV2VG9vbHMpOwogICAgICAg
ICBjcmVhdGVEUlREZXZUb29sc0NsaWVudChtX2RydERldlRvb2xzQWdlbnQuZ2V0KCkpOwogICAg
IH0KQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFRlc3RTaGVsbDo6Y2xvc2VEZXZUb29scygpCiAg
ICAgICAgIG1fZHJ0RGV2VG9vbHNBZ2VudC0+cmVzZXQoKTsKICAgICAgICAgbV9kcnREZXZUb29s
c0NsaWVudC5jbGVhcigpOwogICAgICAgICBtX2RldlRvb2xzVGVzdEludGVyZmFjZXMtPnNldERl
bGVnYXRlKDApOwotICAgICAgICBtX2RldlRvb2xzVGVzdEludGVyZmFjZXMtPnNldFdlYlZpZXco
MCk7CisgICAgICAgIG1fZGV2VG9vbHNUZXN0SW50ZXJmYWNlcy0+c2V0V2ViVmlldygwLCAwKTsK
ICAgICAgICAgY2xvc2VXaW5kb3cobV9kZXZUb29scyk7CiAgICAgICAgIG1fZGV2VG9vbHMgPSAw
OwogICAgIH0KQEAgLTQyMSw0MyArNDIxLDcgQEAgdm9pZCBUZXN0U2hlbGw6OmR1bXAoKQogICAg
ICAgICAvLyBjb21tYW5kIGxpbmUgKGZvciB0aGUgZHVtcCBwaXhlbHMgYXJndW1lbnQpLCBhbmQg
dGhlIE1ENSBzdW0gdG8KICAgICAgICAgLy8gc3Rkb3V0LgogICAgICAgICBkdW1wZWRBbnl0aGlu
ZyA9IHRydWU7Ci0gICAgICAgIG1fd2ViVmlldy0+bGF5b3V0KCk7Ci0gICAgICAgIGlmIChtX3Rl
c3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCktPnRlc3RSZXBhaW50KCkpIHsKLSAgICAgICAgICAg
IFdlYlNpemUgdmlld1NpemUgPSBtX3dlYlZpZXctPnNpemUoKTsKLSAgICAgICAgICAgIGludCB3
aWR0aCA9IHZpZXdTaXplLndpZHRoOwotICAgICAgICAgICAgaW50IGhlaWdodCA9IHZpZXdTaXpl
LmhlaWdodDsKLSAgICAgICAgICAgIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCkt
PnN3ZWVwSG9yaXpvbnRhbGx5KCkpIHsKLSAgICAgICAgICAgICAgICBmb3IgKFdlYlJlY3QgY29s
dW1uKDAsIDAsIDEsIGhlaWdodCk7IGNvbHVtbi54IDwgd2lkdGg7IGNvbHVtbi54KyspCi0gICAg
ICAgICAgICAgICAgICAgIG1fd2ViVmlld0hvc3QtPnBhaW50UmVjdChjb2x1bW4pOwotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBmb3IgKFdlYlJlY3QgbGluZSgwLCAwLCB3
aWR0aCwgMSk7IGxpbmUueSA8IGhlaWdodDsgbGluZS55KyspCi0gICAgICAgICAgICAgICAgICAg
IG1fd2ViVmlld0hvc3QtPnBhaW50UmVjdChsaW5lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSBlbHNlIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCktPmlzUHJpbnRpbmcoKSkK
LSAgICAgICAgICAgIG1fd2ViVmlld0hvc3QtPnBhaW50UGFnZXNXaXRoQm91bmRhcmllcygpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3dlYlZpZXdIb3N0LT5wYWludEludmFsaWRhdGVk
UmVnaW9uKCk7Ci0KLSAgICAgICAgLy8gU2VlIGlmIHdlIG5lZWQgdG8gZHJhdyB0aGUgc2VsZWN0
aW9uIGJvdW5kcyByZWN0LiBTZWxlY3Rpb24gYm91bmRzCi0gICAgICAgIC8vIHJlY3QgaXMgdGhl
IHJlY3QgZW5jbG9zaW5nIHRoZSAocG9zc2libHkgdHJhbnNmb3JtZWQpIHNlbGVjdGlvbi4KLSAg
ICAgICAgLy8gVGhlIHJlY3Qgc2hvdWxkIGJlIGRyYXduIGFmdGVyIGV2ZXJ5dGhpbmcgaXMgbGFp
ZCBvdXQgYW5kIHBhaW50ZWQuCi0gICAgICAgIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVu
bmVyKCktPnNob3VsZER1bXBTZWxlY3Rpb25SZWN0KCkpIHsKLSAgICAgICAgICAgIC8vIElmIHRo
ZXJlIGlzIGEgc2VsZWN0aW9uIHJlY3QgLSBkcmF3IGEgcmVkIDFweCBib3JkZXIgZW5jbG9zaW5n
IHJlY3QKLSAgICAgICAgICAgIFdlYlJlY3Qgd3IgPSBmcmFtZS0+c2VsZWN0aW9uQm91bmRzUmVj
dCgpOwotICAgICAgICAgICAgaWYgKCF3ci5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAv
LyBSZW5kZXIgYSByZWQgcmVjdGFuZ2xlIGJvdW5kaW5nIHNlbGVjdGlvbiByZWN0Ci0gICAgICAg
ICAgICAgICAgU2tQYWludCBwYWludDsKLSAgICAgICAgICAgICAgICBwYWludC5zZXRDb2xvcigw
eEZGRkYwMDAwKTsgLy8gRnVsbHkgb3BhcXVlIHJlZAotICAgICAgICAgICAgICAgIHBhaW50LnNl
dFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOwotICAgICAgICAgICAgICAgIHBhaW50LnNl
dEZsYWdzKFNrUGFpbnQ6OmtBbnRpQWxpYXNfRmxhZyk7Ci0gICAgICAgICAgICAgICAgcGFpbnQu
c2V0U3Ryb2tlV2lkdGgoMS4wZik7Ci0gICAgICAgICAgICAgICAgU2tJUmVjdCByZWN0OyAvLyBC
b3VuZGluZyByZWN0Ci0gICAgICAgICAgICAgICAgcmVjdC5zZXQod3IueCwgd3IueSwgd3IueCAr
IHdyLndpZHRoLCB3ci55ICsgd3IuaGVpZ2h0KTsKLSAgICAgICAgICAgICAgICBtX3dlYlZpZXdI
b3N0LT5jYW52YXMoKS0+ZHJhd0lSZWN0KHJlY3QsIHBhaW50KTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgIGR1bXBJbWFnZShtX3dlYlZpZXdIb3N0LT5jYW52YXMoKSk7Cisg
ICAgICAgIGR1bXBJbWFnZShtX3dlYlZpZXdIb3N0LT5wcm94eSgpLT5jYXB0dXJlUGl4ZWxzKCkp
OwogICAgIH0KICAgICBtX3ByaW50ZXIuaGFuZGxlVGVzdEZvb3RlcihkdW1wZWRBbnl0aGluZyk7
CiAgICAgZmZsdXNoKHN0ZG91dCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5jcHAKaW5kZXggNWQ4ZmVkMzZiYzY4NjZkZGJmN2NkYTdmZWY5NDk5MjQzZmI5
YzZiZS4uYzRjOTYyZGJmOWM2M2U4NGE4YzQzZDc1MTgxZTk1Y2RkOGMyNzFhYyAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtNjAsNyArNjAs
NiBAQAogI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJXZWJWaWV3
LmgiCiAjaW5jbHVkZSAiV2ViV2luZG93RmVhdHVyZXMuaCIKLSNpbmNsdWRlICJza2lhL2V4dC9w
bGF0Zm9ybV9jYW52YXMuaCIKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC90ZXN0X21lZGlhX3N0
cmVhbV9jbGllbnQuaCIKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5o
IgogI2luY2x1ZGUgPGNjdHlwZT4KQEAgLTQ2Miw3ICs0NjEsNiBAQCB2b2lkIFdlYlZpZXdIb3N0
OjpzZXRXaW5kb3dSZWN0KGNvbnN0IFdlYlJlY3QmIHJlY3QpCiAgICAgICAgIG1fd2luZG93UmVj
dC5oZWlnaHQgPSAxICsgYm9yZGVyMjsKICAgICBpbnQgd2lkdGggPSBtX3dpbmRvd1JlY3Qud2lk
dGggLSBib3JkZXIyOwogICAgIGludCBoZWlnaHQgPSBtX3dpbmRvd1JlY3QuaGVpZ2h0IC0gYm9y
ZGVyMjsKLSAgICBkaXNjYXJkQmFja2luZ1N0b3JlKCk7CiAgICAgd2ViV2lkZ2V0KCktPnJlc2l6
ZShXZWJTaXplKHdpZHRoLCBoZWlnaHQpKTsKIH0KIApAQCAtNzE1LDcgKzcxMyw2IEBAIHZvaWQg
V2ViVmlld0hvc3Q6OnNldERhdGFiYXNlUXVvdGEoaW50IHF1b3RhKQogdm9pZCBXZWJWaWV3SG9z
dDo6c2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiB7CiAgICAg
d2ViVmlldygpLT5zZXREZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAg
ZGlzY2FyZEJhY2tpbmdTdG9yZSgpOwogfQogCiB2b2lkIFdlYlZpZXdIb3N0OjpzZXRGb2N1cyhi
b29sIGZvY3VzZWQpCkBAIC04MzEsMjEgKzgyOCw2IEBAIGJvb2wgV2ViVmlld0hvc3Q6Ondhc01v
Y2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQoKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViVmlld0hv
c3Q6OmRpc3BsYXkoKQotewotICAgIGNvbnN0IFdlYktpdDo6V2ViU2l6ZSYgc2l6ZSA9IHdlYlZp
ZXcoKS0+c2l6ZSgpOwotICAgIFdlYlJlY3QgcmVjdCgwLCAwLCBzaXplLndpZHRoLCBzaXplLmhl
aWdodCk7Ci0gICAgcHJveHkoKS0+c2V0UGFpbnRSZWN0KHJlY3QpOwotICAgIHBhaW50SW52YWxp
ZGF0ZWRSZWdpb24oKTsKLSAgICBkaXNwbGF5UmVwYWludE1hc2soKTsKLX0KLQotdm9pZCBXZWJW
aWV3SG9zdDo6ZGlzcGxheUludmFsaWRhdGVkUmVnaW9uKCkKLXsKLSAgICBwYWludEludmFsaWRh
dGVkUmVnaW9uKCk7Ci0gICAgZGlzcGxheVJlcGFpbnRNYXNrKCk7Ci19Ci0KIHZvaWQgV2ViVmll
d0hvc3Q6OnRlc3RGaW5pc2hlZCgpCiB7CiAgICAgbV9zaGVsbC0+dGVzdEZpbmlzaGVkKHRoaXMp
OwpAQCAtOTg5LDggKzk3MSw2IEBAIHZvaWQgV2ViVmlld0hvc3Q6OnJlc2V0KCkKICAgICBtX2xh
c3RQYWdlSWRVcGRhdGVkID0gLTE7CiAgICAgbV9oYXNXaW5kb3cgPSBmYWxzZTsKICAgICBtX2lu
TW9kYWxMb29wID0gZmFsc2U7Ci0gICAgbV9pc1BhaW50aW5nID0gZmFsc2U7Ci0gICAgbV9jYW52
YXMuY2xlYXIoKTsKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIG1fcG9pbnRlckxvY2tl
ZCA9IGZhbHNlOwogICAgIG1fcG9pbnRlckxvY2tQbGFubmVkUmVzdWx0ID0gUG9pbnRlckxvY2tX
aWxsU3VjY2VlZDsKQEAgLTExODQsMTA5ICsxMTY0LDMgQEAgd2Via2l0X3N1cHBvcnQ6OlRlc3RN
ZWRpYVN0cmVhbUNsaWVudCogV2ViVmlld0hvc3Q6OnRlc3RNZWRpYVN0cmVhbUNsaWVudCgpCiAg
ICAgcmV0dXJuIG1fdGVzdE1lZGlhU3RyZWFtQ2xpZW50LmdldCgpOwogfQogI2VuZGlmCi0KLS8v
IFBhaW50aW5nIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdm9pZCBXZWJWaWV3SG9zdDo6cGFpbnRSZWN0KGNvbnN0
IFdlYlJlY3QmIHJlY3QpCi17Ci0gICAgQVNTRVJUKCFtX2lzUGFpbnRpbmcpOwotICAgIEFTU0VS
VChjYW52YXMoKSk7Ci0gICAgbV9pc1BhaW50aW5nID0gdHJ1ZTsKLSAgICBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvciA9IHdlYlZpZXcoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBpbnQgc2Nh
bGVkWCA9IHN0YXRpY19jYXN0PGludD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlY3QueCkgKiBkZXZp
Y2VTY2FsZUZhY3Rvcik7Ci0gICAgaW50IHNjYWxlZFkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRp
Y19jYXN0PGZsb2F0PihyZWN0LnkpICogZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIGludCBzY2Fs
ZWRXaWR0aCA9IHN0YXRpY19jYXN0PGludD4oY2VpbChzdGF0aWNfY2FzdDxmbG9hdD4ocmVjdC53
aWR0aCkgKiBkZXZpY2VTY2FsZUZhY3RvcikpOwotICAgIGludCBzY2FsZWRIZWlnaHQgPSBzdGF0
aWNfY2FzdDxpbnQ+KGNlaWwoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlY3QuaGVpZ2h0KSAqIGRldmlj
ZVNjYWxlRmFjdG9yKSk7Ci0gICAgV2ViUmVjdCBkZXZpY2VSZWN0KHNjYWxlZFgsIHNjYWxlZFks
IHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQpOwotICAgIHdlYldpZGdldCgpLT5wYWludChjYW52
YXMoKSwgZGV2aWNlUmVjdCk7Ci0gICAgbV9pc1BhaW50aW5nID0gZmFsc2U7Ci19Ci0KLXZvaWQg
V2ViVmlld0hvc3Q6OnBhaW50SW52YWxpZGF0ZWRSZWdpb24oKQotewotI2lmIEVOQUJMRShSRVFV
RVNUX0FOSU1BVElPTl9GUkFNRSkKLSAgICB3ZWJXaWRnZXQoKS0+YW5pbWF0ZSgwLjApOwotI2Vu
ZGlmCi0gICAgd2ViV2lkZ2V0KCktPmxheW91dCgpOwotICAgIFdlYlNpemUgd2lkZ2V0U2l6ZSA9
IHdlYldpZGdldCgpLT5zaXplKCk7Ci0gICAgV2ViUmVjdCBjbGllbnRSZWN0KDAsIDAsIHdpZGdl
dFNpemUud2lkdGgsIHdpZGdldFNpemUuaGVpZ2h0KTsKLQotICAgIC8vIFBhaW50IHRoZSBjYW52
YXMgaWYgbmVjZXNzYXJ5LiBBbGxvdyBwYWludGluZyB0byBnZW5lcmF0ZSBleHRyYSByZWN0cwot
ICAgIC8vIGZvciB0aGUgZmlyc3QgdHdvIGNhbGxzLiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNl
IHNvbWUgV2ViQ29yZSByZW5kZXJpbmcKLSAgICAvLyBvYmplY3RzIHVwZGF0ZSB0aGVpciBsYXlv
dXQgb25seSB3aGVuIHBhaW50ZWQuCi0gICAgLy8gU3RvcmUgdGhlIHRvdGFsIGFyZWEgcGFpbnRl
ZCBpbiB0b3RhbF9wYWludC4gVGhlbiB0ZWxsIHRoZSBnZGsgd2luZG93Ci0gICAgLy8gdG8gdXBk
YXRlIHRoYXQgYXJlYSBhZnRlciB3ZSdyZSBkb25lIHBhaW50aW5nIGl0LgotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgMzsgKytpKSB7Ci0gICAgICAgIC8vIHJlY3QgPSBpbnRlcnNlY3QocHJveHko
KS0+cGFpbnRSZWN0KCkgLCBjbGllbnRSZWN0KQotICAgICAgICBXZWJSZWN0IGRhbWFnZVJlY3Qg
PSBwcm94eSgpLT5wYWludFJlY3QoKTsKLSAgICAgICAgaW50IGxlZnQgPSBtYXgoZGFtYWdlUmVj
dC54LCBjbGllbnRSZWN0LngpOwotICAgICAgICBpbnQgdG9wID0gbWF4KGRhbWFnZVJlY3QueSwg
Y2xpZW50UmVjdC55KTsKLSAgICAgICAgaW50IHJpZ2h0ID0gbWluKGRhbWFnZVJlY3QueCArIGRh
bWFnZVJlY3Qud2lkdGgsIGNsaWVudFJlY3QueCArIGNsaWVudFJlY3Qud2lkdGgpOwotICAgICAg
ICBpbnQgYm90dG9tID0gbWluKGRhbWFnZVJlY3QueSArIGRhbWFnZVJlY3QuaGVpZ2h0LCBjbGll
bnRSZWN0LnkgKyBjbGllbnRSZWN0LmhlaWdodCk7Ci0gICAgICAgIFdlYlJlY3QgcmVjdDsKLSAg
ICAgICAgaWYgKGxlZnQgPCByaWdodCAmJiB0b3AgPCBib3R0b20pCi0gICAgICAgICAgICByZWN0
ID0gV2ViUmVjdChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9wKTsKLQotICAg
ICAgICBwcm94eSgpLT5zZXRQYWludFJlY3QoV2ViUmVjdCgpKTsKLSAgICAgICAgaWYgKHJlY3Qu
aXNFbXB0eSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHBhaW50UmVjdChyZWN0
KTsKLSAgICB9Ci0gICAgQVNTRVJUKHByb3h5KCktPnBhaW50UmVjdCgpLmlzRW1wdHkoKSk7Ci19
Ci0KLXZvaWQgV2ViVmlld0hvc3Q6OnBhaW50UGFnZXNXaXRoQm91bmRhcmllcygpCi17Ci0gICAg
QVNTRVJUKCFtX2lzUGFpbnRpbmcpOwotICAgIEFTU0VSVChjYW52YXMoKSk7Ci0gICAgbV9pc1Bh
aW50aW5nID0gdHJ1ZTsKLQotICAgIFdlYlNpemUgcGFnZVNpemVJblBpeGVscyA9IHdlYldpZGdl
dCgpLT5zaXplKCk7Ci0gICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gd2ViVmlldygpLT5tYWluRnJh
bWUoKTsKLQotICAgIGludCBwYWdlQ291bnQgPSB3ZWJGcmFtZS0+cHJpbnRCZWdpbihwYWdlU2l6
ZUluUGl4ZWxzKTsKLSAgICBpbnQgdG90YWxIZWlnaHQgPSBwYWdlQ291bnQgKiAocGFnZVNpemVJ
blBpeGVscy5oZWlnaHQgKyAxKSAtIDE7Ci0KLSAgICBTa0NhbnZhcyogdGVzdENhbnZhcyA9IHNr
aWE6OlRyeUNyZWF0ZUJpdG1hcENhbnZhcyhwYWdlU2l6ZUluUGl4ZWxzLndpZHRoLCB0b3RhbEhl
aWdodCwgdHJ1ZSk7Ci0gICAgaWYgKHRlc3RDYW52YXMpIHsKLSAgICAgICAgZGlzY2FyZEJhY2tp
bmdTdG9yZSgpOwotICAgICAgICBtX2NhbnZhcyA9IGFkb3B0UHRyKHRlc3RDYW52YXMpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIHdlYkZyYW1lLT5wcmludEVuZCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgd2ViRnJhbWUtPnByaW50UGFnZXNXaXRoQm91bmRhcmllcyhjYW52YXMo
KSwgcGFnZVNpemVJblBpeGVscyk7Ci0gICAgd2ViRnJhbWUtPnByaW50RW5kKCk7Ci0KLSAgICBt
X2lzUGFpbnRpbmcgPSBmYWxzZTsKLX0KLQotU2tDYW52YXMqIFdlYlZpZXdIb3N0OjpjYW52YXMo
KQotewotICAgIGlmIChtX2NhbnZhcykKLSAgICAgICAgcmV0dXJuIG1fY2FudmFzLmdldCgpOwot
ICAgIFdlYlNpemUgd2lkZ2V0U2l6ZSA9IHdlYldpZGdldCgpLT5zaXplKCk7Ci0gICAgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IgPSB3ZWJWaWV3KCktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAg
aW50IHNjYWxlZFdpZHRoID0gc3RhdGljX2Nhc3Q8aW50PihjZWlsKHN0YXRpY19jYXN0PGZsb2F0
Pih3aWRnZXRTaXplLndpZHRoKSAqIGRldmljZVNjYWxlRmFjdG9yKSk7Ci0gICAgaW50IHNjYWxl
ZEhlaWdodCA9IHN0YXRpY19jYXN0PGludD4oY2VpbChzdGF0aWNfY2FzdDxmbG9hdD4od2lkZ2V0
U2l6ZS5oZWlnaHQpICogZGV2aWNlU2NhbGVGYWN0b3IpKTsKLSAgICByZXNldFNjcm9sbFJlY3Qo
KTsKLSAgICBtX2NhbnZhcyA9IGFkb3B0UHRyKHNraWE6OkNyZWF0ZUJpdG1hcENhbnZhcyhzY2Fs
ZWRXaWR0aCwgc2NhbGVkSGVpZ2h0LCB0cnVlKSk7Ci0gICAgcmV0dXJuIG1fY2FudmFzLmdldCgp
OwotfQotCi12b2lkIFdlYlZpZXdIb3N0OjpyZXNldFNjcm9sbFJlY3QoKQotewotfQotCi12b2lk
IFdlYlZpZXdIb3N0OjpkaXNjYXJkQmFja2luZ1N0b3JlKCkKLXsKLSAgICBtX2NhbnZhcy5jbGVh
cigpOwotfQotCi0vLyBQYWludHMgdGhlIGVudGlyZSBjYW52YXMgYSBzZW1pLXRyYW5zcGFyZW50
IGJsYWNrIChncmF5aXNoKS4gVGhpcyBpcyB1c2VkCi0vLyBieSB0aGUgbGF5b3V0IHRlc3RzIGlu
IGZhc3QvcmVwYWludC4gVGhlIGFscGhhIHZhbHVlIG1hdGNoZXMgdXBzdHJlYW0uCi12b2lkIFdl
YlZpZXdIb3N0OjpkaXNwbGF5UmVwYWludE1hc2soKQotewotICAgIGNhbnZhcygpLT5kcmF3QVJH
QigxNjcsIDAsIDAsIDApOwotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmgKaW5kZXggMjNhMjJkOGZmODA4YTgyMTRkMDU3OWU5YmVjNTkyNGNkNjRkZWQ4ZS4u
NGY5YzdjOTIyNDA1ZjUwNDZkMTkxZWJkYjBiYzAxMjU2ZDFkMzY5ZCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCkBAIC04OCwxMiArODgsNiBAQCBjbGFz
cyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1YmxpYyBXZWJL
aXQ6OldlYkZyYW1lQ2xpZW50LAogICAgIHZvaWQgcmVzZXQoKTsKICAgICB2b2lkIHNldFBlbmRp
bmdFeHRyYURhdGEoUGFzc093blB0cjxUZXN0U2hlbGxFeHRyYURhdGE+KTsKIAotICAgIHZvaWQg
cGFpbnRSZWN0KGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOwotICAgIHZvaWQgcGFpbnRJbnZhbGlk
YXRlZFJlZ2lvbigpOwotICAgIHZvaWQgcGFpbnRQYWdlc1dpdGhCb3VuZGFyaWVzKCk7Ci0gICAg
U2tDYW52YXMqIGNhbnZhcygpOwotICAgIHZvaWQgZGlzcGxheVJlcGFpbnRNYXNrKCk7Ci0KICAg
ICBUZXN0TmF2aWdhdGlvbkNvbnRyb2xsZXIqIG5hdmlnYXRpb25Db250cm9sbGVyKCkgeyByZXR1
cm4gbV9uYXZpZ2F0aW9uQ29udHJvbGxlci5nZXQoKTsgfQogCiAgICAgdm9pZCBjbG9zZVdpZGdl
dCgpOwpAQCAtMTUzLDggKzE0Nyw2IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktp
dDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVDbGllbnQsCiAgICAgdmly
dHVhbCB2b2lkIHNldE1vY2tTcGVlY2hSZWNvZ25pdGlvbkVycm9yKGNvbnN0IHN0ZDo6c3RyaW5n
JiwgY29uc3Qgc3RkOjpzdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgd2FzTW9j
a1NwZWVjaFJlY29nbml0aW9uQWJvcnRlZCgpIE9WRVJSSURFOwogI2VuZGlmCi0gICAgdmlydHVh
bCB2b2lkIGRpc3BsYXkoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGxheUludmFs
aWRhdGVkUmVnaW9uKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHRlc3RGaW5pc2hlZCgp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0ZXN0VGltZWRPdXQoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNCZWluZ0RlYnVnZ2VkKCkgT1ZFUlJJREU7CkBAIC0yOTgsOCArMjkw
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByaW50RnJhbWVEZXNjcmlwdGlvbihXZWJLaXQ6Oldl
YkZyYW1lKik7CiAKICAgICBib29sIGhhc1dpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1faGFzV2lu
ZG93OyB9Ci0gICAgdm9pZCByZXNldFNjcm9sbFJlY3QoKTsKLSAgICB2b2lkIGRpc2NhcmRCYWNr
aW5nU3RvcmUoKTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgd2Via2l0X3N1cHBv
cnQ6OlRlc3RNZWRpYVN0cmVhbUNsaWVudCogdGVzdE1lZGlhU3RyZWFtQ2xpZW50KCk7CkBAIC0z
MzMsMTAgKzMyMyw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjpzdHJpbmcgbV9lZGl0Q29tbWFuZE5h
bWU7CiAgICAgc3RkOjpzdHJpbmcgbV9lZGl0Q29tbWFuZFZhbHVlOwogCi0gICAgLy8gUGFpbnRp
bmcuCi0gICAgT3duUHRyPFNrQ2FudmFzPiBtX2NhbnZhczsKLSAgICBXZWJLaXQ6OldlYlJlY3Qg
bV9wYWludFJlY3Q7Ci0gICAgYm9vbCBtX2lzUGFpbnRpbmc7CiAKICAgICBPd25QdHI8V2ViS2l0
OjpXZWJDb250ZXh0TWVudURhdGE+IG1fbGFzdENvbnRleHRNZW51RGF0YTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>