<?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>95399</bug_id>
          
          <creation_ts>2012-08-29 16:38:28 -0700</creation_ts>
          <short_desc>[chromium] Prevent compositor ticking if it can&apos;t draw</short_desc>
          <delta_ts>2012-09-05 03:36:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Anderson">brianderson</reporter>
          <assigned_to name="Brian Anderson">brianderson</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jamesr</cc>
    
    <cc>jbates</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>708038</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Anderson">brianderson</who>
    <bug_when>2012-08-29 16:38:28 -0700</bug_when>
    <thetext>[chromium] Prevent compositor ticking if it can&apos;t draw</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708139</commentid>
    <comment_count>1</comment_count>
      <attachid>161377</attachid>
    <who name="Brian Anderson">brianderson</who>
    <bug_when>2012-08-29 18:09:30 -0700</bug_when>
    <thetext>Created attachment 161377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708155</commentid>
    <comment_count>2</comment_count>
      <attachid>161377</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-29 18:17:56 -0700</bug_when>
    <thetext>Comment on attachment 161377
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Background extensions had an always ticking compositor even though
&gt; +        they couldn&apos;t draw. This patch disables the ticks when canDraw is false

Why are they visible?  Can we figure that out first before patching the compositor to deal with this state?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708162</commentid>
    <comment_count>3</comment_count>
      <attachid>161377</attachid>
    <who name="Brian Anderson">brianderson</who>
    <bug_when>2012-08-29 18:24:14 -0700</bug_when>
    <thetext>Comment on attachment 161377
Patch

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

This fixes the background extension ticking for chromium bug http://code.google.com/p/chromium/issues/detail?id=142061.  There were some issues with live locking and test / assertion failures, but those have been addressed.

The tests have been updated for the new interfaces, but I haven&apos;t yet added a regression test.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:191
&gt; +void CCLayerTreeHostImpl::notifyIfCanDrawChanged()

This is the new function that should be called whenever canDraw might have changed.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:-164
&gt; -    m_stateMachine.setCanDraw(m_client-&gt;canDraw());

Removed this function because we are notified of canDraw state changes and don&apos;t need to poll for here anymore.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:223
&gt; +            m_hasMoreResourceUpdates || m_stateMachine.vsyncCallbackNeeded());

Without the m_hasMoreResourceUpdates check, we will not perform multiple frame uploads since candDraw will not become true until all textures have been uploaded.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.h:-55
&gt; -    virtual bool canDraw() = 0;

The client will now notify us of canDraw changes instead of having to poll for them.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:49
&gt; +    , m_canDraw(false)

This must be default false to match the initial state of the CCLayerTreeImpl, otherwise the scheduler can attempt to tick before everything is initialized.  Tests must explicitly setCanDraw(true) now.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:56
&gt; +String CCSchedulerStateMachine::toString()

This function has been added for convenience.  It isn&apos;t used anywhere in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708167</commentid>
    <comment_count>4</comment_count>
    <who name="Brian Anderson">brianderson</who>
    <bug_when>2012-08-29 18:30:24 -0700</bug_when>
    <thetext>&gt; Why are they visible?  Can we figure that out first before patching the compositor to deal with this state?

I attempted to figure out why they were visible the past two days, but didn&apos;t make much progress.  I agree we should still try to figure that out, but after talking with Nat this morning I decided to shift gears back to this patch.  Notifying of canDraw changes instead of polling for it is something that needs to be fixed anyway and happens to fix this bug too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709042</commentid>
    <comment_count>5</comment_count>
      <attachid>161377</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-08-30 14:45:24 -0700</bug_when>
    <thetext>Comment on attachment 161377
Patch

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

I like this overall, good work. Lets file a new crbug about the visibility being wrong of extensions and see if we can assign it to an extensions team person.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:193
&gt; +    bool newCanDraw = canDraw();

I think its safe to over-call m_client-&gt;onCanDrawStateChanged... that removes a bit of complexity here -- the setter can just call m_cleint-&gt;blahblah. All thats going to do is ping the scheduler, which is cheap.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:165
&gt; +    void resetContentsTexturesPurged() { m_contentsTexturesPurged = false; notifyIfCanDrawChanged(); }

probably move to the cpp now that its not trivial

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:223
&gt;&gt; +            m_hasMoreResourceUpdates || m_stateMachine.vsyncCallbackNeeded());
&gt; 
&gt; Without the m_hasMoreResourceUpdates check, we will not perform multiple frame uploads since candDraw will not become true until all textures have been uploaded.

Are you sure about this? This feels like its another change? Why is canDraw tied to textures being uploaded?

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:56
&gt;&gt; +String CCSchedulerStateMachine::toString()
&gt; 
&gt; This function has been added for convenience.  It isn&apos;t used anywhere in this patch.

&lt;3 This is awesome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709060</commentid>
    <comment_count>6</comment_count>
      <attachid>161377</attachid>
    <who name="Brian Anderson">brianderson</who>
    <bug_when>2012-08-30 14:57:01 -0700</bug_when>
    <thetext>Comment on attachment 161377
Patch

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

Will file a separate bug for the visibility issue.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:193
&gt;&gt; +    bool newCanDraw = canDraw();
&gt; 
&gt; I think its safe to over-call m_client-&gt;onCanDrawStateChanged... that removes a bit of complexity here -- the setter can just call m_cleint-&gt;blahblah. All thats going to do is ping the scheduler, which is cheap.

Ok.

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:223
&gt;&gt;&gt; +            m_hasMoreResourceUpdates || m_stateMachine.vsyncCallbackNeeded());
&gt;&gt; 
&gt;&gt; Without the m_hasMoreResourceUpdates check, we will not perform multiple frame uploads since candDraw will not become true until all textures have been uploaded.
&gt; 
&gt; Are you sure about this? This feels like its another change? Why is canDraw tied to textures being uploaded?

There was live-lock without this, so we need this or we need a way to upload textures when we aren&apos;t ticking (which we might need anyway for http://code.google.com/p/chromium/issues/detail?id=145825, but I don&apos;t think it is trival).

Note: I am moving the m_hasMoreResourceUpdates check into the vsyncCallbackNeeded function.  The information required is also available in the state machine and it makes writing the regression tests easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709104</commentid>
    <comment_count>7</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-08-30 15:32:53 -0700</bug_when>
    <thetext>&gt; Note: I am moving the m_hasMoreResourceUpdates check into the vsyncCallbackNeeded function.  The information required is also available in the state machine and it makes writing the regression tests easier.

Ah, that sounds much cleaner. Perfect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709883</commentid>
    <comment_count>8</comment_count>
      <attachid>161751</attachid>
    <who name="Brian Anderson">brianderson</who>
    <bug_when>2012-08-31 12:23:15 -0700</bug_when>
    <thetext>Created attachment 161751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709886</commentid>
    <comment_count>9</comment_count>
      <attachid>161751</attachid>
    <who name="Brian Anderson">brianderson</who>
    <bug_when>2012-08-31 12:27:47 -0700</bug_when>
    <thetext>Comment on attachment 161751
Patch

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

&gt; Source/WebKit/chromium/tests/CCSchedulerStateMachineTest.cpp:537
&gt; +TEST(CCSchedulerStateMachineTest, TestVsyncCallbackNeededOnCanDrawAndResourceUpdates)

This is the regression test that makes sure the state machine wont request ticking if we can&apos;t draw.  It also tests to make sure we wont disable vsync ticsk if we need to upload textures, which results in live lock with the current logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711257</commentid>
    <comment_count>10</comment_count>
      <attachid>161751</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-04 11:14:55 -0700</bug_when>
    <thetext>Comment on attachment 161751
Patch

This is real nice. It looks like you have some merging to do, however.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711266</commentid>
    <comment_count>11</comment_count>
      <attachid>161751</attachid>
    <who name="Brian Anderson">brianderson</who>
    <bug_when>2012-09-04 11:21:23 -0700</bug_when>
    <thetext>Comment on attachment 161751
Patch

Will rebase once https://bugs.webkit.org/show_bug.cgi?id=94254 lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711471</commentid>
    <comment_count>12</comment_count>
      <attachid>162103</attachid>
    <who name="Brian Anderson">brianderson</who>
    <bug_when>2012-09-04 14:56:43 -0700</bug_when>
    <thetext>Created attachment 162103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711475</commentid>
    <comment_count>13</comment_count>
      <attachid>162103</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-04 15:02:03 -0700</bug_when>
    <thetext>Comment on attachment 162103
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:159
&gt; +    // Avoid nested calls to this function. The top-level call of this
&gt; +    // function will automatically process the next action.
&gt; +    if (m_insideProcessScheduledActions)

this looks new - what&apos;s the reason for this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711513</commentid>
    <comment_count>14</comment_count>
      <attachid>162103</attachid>
    <who name="Brian Anderson">brianderson</who>
    <bug_when>2012-09-04 15:31:51 -0700</bug_when>
    <thetext>Comment on attachment 162103
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:159
&gt;&gt; +    if (m_insideProcessScheduledActions)
&gt; 
&gt; this looks new - what&apos;s the reason for this change?

Was pointing this out to Nat earlier.  The reasoning is that during a commit, the canDraw state would change, triggering a frame to draw in the middle of the commit.  Then, when the commit completed, another frame would draw.  Tests were seeing more commits/frames than expected.

This change warrants it&apos;s own patch, so I&apos;m attempting to move it out. There&apos;s a challenge in making the two patches independent though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711533</commentid>
    <comment_count>15</comment_count>
      <attachid>162117</attachid>
    <who name="Brian Anderson">brianderson</who>
    <bug_when>2012-09-04 16:10:49 -0700</bug_when>
    <thetext>Created attachment 162117
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711536</commentid>
    <comment_count>16</comment_count>
      <attachid>162117</attachid>
    <who name="Brian Anderson">brianderson</who>
    <bug_when>2012-09-04 16:14:11 -0700</bug_when>
    <thetext>Comment on attachment 162117
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:67
&gt; +    m_frameRateController-&gt;setActive(m_stateMachine.vsyncCallbackNeeded());

This is the workaround to prevent recursion and extra frames/commits.  Interestingly, everything still seem to work even without setting the frame rate controller active but I&apos;m keeping this here just in case.

Will make processScheduledActions a separate patch to land after this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711630</commentid>
    <comment_count>17</comment_count>
      <attachid>162117</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-09-04 18:18:46 -0700</bug_when>
    <thetext>Comment on attachment 162117
Patch

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

I like this, but file a bug and put a link about the bug to fix this right where your workaround text goes.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:67
&gt;&gt; +    m_frameRateController-&gt;setActive(m_stateMachine.vsyncCallbackNeeded());
&gt; 
&gt; This is the workaround to prevent recursion and extra frames/commits.  Interestingly, everything still seem to work even without setting the frame rate controller active but I&apos;m keeping this here just in case.
&gt; 
&gt; Will make processScheduledActions a separate patch to land after this one.

Lets file a crbug and assign to you to make the scheduler non reentrant as a fix for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711634</commentid>
    <comment_count>18</comment_count>
      <attachid>162117</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-04 18:21:08 -0700</bug_when>
    <thetext>Comment on attachment 162117
Patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711656</commentid>
    <comment_count>19</comment_count>
      <attachid>162117</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-04 18:46:07 -0700</bug_when>
    <thetext>Comment on attachment 162117
Patch

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

New failing tests:
fast/innerHTML/innerHTML-iframe.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711667</commentid>
    <comment_count>20</comment_count>
      <attachid>162117</attachid>
    <who name="Brian Anderson">brianderson</who>
    <bug_when>2012-09-04 19:00:17 -0700</bug_when>
    <thetext>Comment on attachment 162117
Patch

Need some help parsing the results. The fast/innerHTML/innerHTML-iframe.html was failing before this patch on the bots. I cannot reproduce the error locally on either a Debug or Release build, even with --repeat-each=100.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711676</commentid>
    <comment_count>21</comment_count>
      <attachid>162117</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-04 19:39:51 -0700</bug_when>
    <thetext>Comment on attachment 162117
Patch

Pretty confident that can&apos;t be you - that test doesn&apos;t invoke the compositor and definitely not the threaded path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711746</commentid>
    <comment_count>22</comment_count>
      <attachid>162117</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-04 23:06:55 -0700</bug_when>
    <thetext>Comment on attachment 162117
Patch

Clearing flags on attachment: 162117

Committed r127556: &lt;http://trac.webkit.org/changeset/127556&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711747</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-04 23:07:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711904</commentid>
    <comment_count>24</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-09-05 03:36:46 -0700</bug_when>
    <thetext>w00t!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161377</attachid>
            <date>2012-08-29 18:09:30 -0700</date>
            <delta_ts>2012-08-31 12:23:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95399-20120829180919.patch</filename>
            <type>text/plain</type>
            <size>31102</size>
            <attacher name="Brian Anderson">brianderson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2VmMDFhMjM5ODk1YmRj
MzlkNzIxZTNlMTllZGNkY2I3OWUwYjU3NS4uYWE0YzdlOGNmZTg4NWVlYzBhZGU2ODQ4NGU4ZDY0
Nzk1YTVhODM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA4LTI5ICBCcmlh
biBBbmRlcnNvbiAgPGJyaWFuZGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIFByZXZlbnQgY29tcG9zaXRvciB0aWNraW5nIGlmIGl0IGNhbid0IGRyYXcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mzk5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFja2dyb3VuZCBleHRlbnNp
b25zIGhhZCBhbiBhbHdheXMgdGlja2luZyBjb21wb3NpdG9yIGV2ZW4gdGhvdWdoCisgICAgICAg
IHRoZXkgY291bGRuJ3QgZHJhdy4gVGhpcyBwYXRjaCBkaXNhYmxlcyB0aGUgdGlja3Mgd2hlbiBj
YW5EcmF3IGlzIGZhbHNlCisgICAgICAgIGFuZCBhZGRzIGEgbm90aWZpY2F0aW9uIG1lY2hhbmlz
bSBmb3Igd2hlbiBjYW5EcmF3IGNoYW5nZXMgc3RhdGVzIHNvCisgICAgICAgIHdlIGNhbiByZWNv
dmVyIHByb3Blcmx5LgorCisgICAgICAgIFRlc3RzIHVwZGF0ZWQgZm9yIG5ldyBpbnRlcmZhY2Vz
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xh
eWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6
Om5vdGlmeUlmQ2FuRHJhd0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpyZWxlYXNlQ29udGVudHNUZXh0dXJlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRSb290TGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZVJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpZXdwb3J0U2l6ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpyZXNldENvbnRlbnRzVGV4dHVyZXNQdXJnZWQp
OgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
Y2hlZHVsZXI6OnNldENhbkRyYXcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmg6CisgICAgICAgIChDQ1Nj
aGVkdWxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnZzeW5jQ2FsbGJhY2tOZWVkZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
Lmg6CisgICAgICAgIChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6b25DYW5EcmF3U3RhdGVDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVP
bkltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuaDoKKwogMjAxMi0wOC0yOCAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5j
b20+CiAKICAgICAgICAgW05ldyBNdWx0aWNvbHVtbl0gSW1wbGVtZW50IGNvbHVtbiBjb250ZW50
cyBwYWludGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXgg
YjdiMDFlNjk1OTZkOTQzOWFkYjhhNjVmZjkwZDY1ZDljZjU4ZGQ1OS4uZTVmNDRkNzBiZGU1MjQz
MDQ4NWQ1ZThkZDlmOWQyODQ1MjNhOWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHAKQEAgLTEyNyw2ICsxMjcsNyBAQCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xh
eWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBDQwog
ICAgICwgbV9zZXR0aW5ncyhzZXR0aW5ncykKICAgICAsIG1fZGV2aWNlU2NhbGVGYWN0b3IoMSkK
ICAgICAsIG1fdmlzaWJsZSh0cnVlKQorICAgICwgbV9wcmV2aW91c0NhbkRyYXcoZmFsc2UpCiAg
ICAgLCBtX2NvbnRlbnRzVGV4dHVyZXNQdXJnZWQoZmFsc2UpCiAgICAgLCBtX21lbW9yeUFsbG9j
YXRpb25MaW1pdEJ5dGVzKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6ZGVmYXVsdE1lbW9y
eUFsbG9jYXRpb25MaW1pdCgpKQogICAgICwgbV9wYWdlU2NhbGUoMSkKQEAgLTE4Nyw2ICsxODgs
MTUgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYW5EcmF3KCkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpub3RpZnlJZkNhbkRyYXdDaGFuZ2Vk
KCkKK3sKKyAgICBib29sIG5ld0NhbkRyYXcgPSBjYW5EcmF3KCk7CisgICAgaWYgKG1fcHJldmlv
dXNDYW5EcmF3ICE9IG5ld0NhbkRyYXcpIHsKKyAgICAgICAgbV9jbGllbnQtPm9uQ2FuRHJhd1N0
YXRlQ2hhbmdlZChuZXdDYW5EcmF3KTsKKyAgICAgICAgbV9wcmV2aW91c0NhbkRyYXcgPSBuZXdD
YW5EcmF3OworICAgIH0KK30KKwogQ0NHcmFwaGljc0NvbnRleHQqIENDTGF5ZXJUcmVlSG9zdElt
cGw6OmNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CkBAIC01
MzAsNiArNTQwLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpyZWxlYXNlQ29udGVudHNU
ZXh0dXJlcygpCiAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVPd25lZFJlc291cmNlcyhD
Q1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgbV9jb250ZW50c1RleHR1cmVzUHVyZ2VkID0g
dHJ1ZTsKICAgICBtX2NsaWVudC0+c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKTsKKyAgICBu
b3RpZnlJZkNhbkRyYXdDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6
c2V0TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90IGJ5dGVzKQpAQCAtNjY5LDYgKzY4
MCw4IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Um9vdExheWVyKFBhc3NPd25QdHI8
Q0NMYXllckltcGw+IGxheWVyKQogICAgICAgICBtX2N1cnJlbnRseVNjcm9sbGluZ0xheWVySW1w
bCA9IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6ZmluZExheWVySW5TdWJ0cmVlKG1fcm9vdExheWVy
SW1wbC5nZXQoKSwgbV9zY3JvbGxpbmdMYXllcklkRnJvbVByZXZpb3VzVHJlZSk7CiAKICAgICBt
X3Njcm9sbGluZ0xheWVySWRGcm9tUHJldmlvdXNUcmVlID0gLTE7CisKKyAgICBub3RpZnlJZkNh
bkRyYXdDaGFuZ2VkKCk7CiB9CiAKIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IENDTGF5ZXJUcmVl
SG9zdEltcGw6OmRldGFjaExheWVyVHJlZSgpCkBAIC03MzEsNiArNzQ0LDggQEAgYm9vbCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjppbml0aWFsaXplUmVuZGVyZXIoUGFzc093blB0cjxDQ0dyYXBoaWNz
Q29udGV4dD4gY29udGUKICAgICBpZiAoIW1fdmlzaWJsZSAmJiBtX3JlbmRlcmVyKQogICAgICAg
ICAgbV9yZW5kZXJlci0+c2V0VmlzaWJsZShtX3Zpc2libGUpOwogCisgICAgbm90aWZ5SWZDYW5E
cmF3Q2hhbmdlZCgpOworCiAgICAgcmV0dXJuIG1fcmVuZGVyZXI7CiB9CiAKQEAgLTc0Niw2ICs3
NjEsOCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJ
bnRTaXplJiBsYXlvdXRWaWV3cG9ydFNpemUsIGNvbgogCiAgICAgaWYgKG1fcmVuZGVyZXIpCiAg
ICAgICAgIG1fcmVuZGVyZXItPnZpZXdwb3J0Q2hhbmdlZCgpOworCisgICAgbm90aWZ5SWZDYW5E
cmF3Q2hhbmdlZCgpOwogfQogCiBzdGF0aWMgdm9pZCBhZGp1c3RTY3JvbGxzRm9yUGFnZVNjYWxl
Q2hhbmdlKENDTGF5ZXJJbXBsKiBsYXllckltcGwsIGZsb2F0IHBhZ2VTY2FsZUNoYW5nZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCBiM2QwN2FjMjljMGE4MDc4ZjAx
N2M4ZTE4OTMwYmEwMDcyOTA2Mzg0Li5mNDZlNThiODc0MmVjNDk4OGI1ZjY0NjQ0ODBhMGI5ODQ3
NmEwMzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC01Nyw2ICs1
Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHRPbkltcGxUaHJl
YWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRo
cmVhZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25WU3luY1BhcmFtZXRlcnNDaGFuZ2VkKGRv
dWJsZSBtb25vdG9uaWNUaW1lYmFzZSwgZG91YmxlIGludGVydmFsSW5TZWNvbmRzKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIG9uQ2FuRHJhd1N0YXRlQ2hhbmdlZChib29sIGNhbkRyYXcpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NP
d25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSkgPSAw
OwpAQCAtMTI1LDYgKzEyNiw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEltcGxlbWVudGF0aW9uCiAg
ICAgYm9vbCBjYW5EcmF3KCk7CisgICAgdm9pZCBub3RpZnlJZkNhbkRyYXdDaGFuZ2VkKCk7CiAg
ICAgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQoKSBjb25zdDsKIAogICAgIFN0cmluZyBsYXll
clRyZWVBc1RleHQoKSBjb25zdDsKQEAgLTE2MCw3ICsxNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRTb3VyY2VGcmFtZU51bWJlcihpbnQgZnJhbWVOdW1iZXIpIHsgbV9zb3VyY2VGcmFtZU51
bWJlciA9IGZyYW1lTnVtYmVyOyB9CiAKICAgICBib29sIGNvbnRlbnRzVGV4dHVyZXNQdXJnZWQo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzVGV4dHVyZXNQdXJnZWQ7IH0KLSAgICB2b2lkIHJl
c2V0Q29udGVudHNUZXh0dXJlc1B1cmdlZCgpIHsgbV9jb250ZW50c1RleHR1cmVzUHVyZ2VkID0g
ZmFsc2U7IH0KKyAgICB2b2lkIHJlc2V0Q29udGVudHNUZXh0dXJlc1B1cmdlZCgpIHsgbV9jb250
ZW50c1RleHR1cmVzUHVyZ2VkID0gZmFsc2U7IG5vdGlmeUlmQ2FuRHJhd0NoYW5nZWQoKTsgfQog
ICAgIHNpemVfdCBtZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1f
bWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXM7IH0KIAogICAgIHZvaWQgc2V0Vmlld3BvcnRTaXpl
KGNvbnN0IEludFNpemUmIGxheW91dFZpZXdwb3J0U2l6ZSwgY29uc3QgSW50U2l6ZSYgZGV2aWNl
Vmlld3BvcnRTaXplKTsKQEAgLTI4Miw2ICsyODQsNyBAQCBwcml2YXRlOgogICAgIEludFNpemUg
bV9kZXZpY2VWaWV3cG9ydFNpemU7CiAgICAgZmxvYXQgbV9kZXZpY2VTY2FsZUZhY3RvcjsKICAg
ICBib29sIG1fdmlzaWJsZTsKKyAgICBib29sIG1fcHJldmlvdXNDYW5EcmF3OwogICAgIGJvb2wg
bV9jb250ZW50c1RleHR1cmVzUHVyZ2VkOwogICAgIHNpemVfdCBtX21lbW9yeUFsbG9jYXRpb25M
aW1pdEJ5dGVzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKaW5kZXggNGRmNTJhZWY5NjBmNmMx
YWY4NWZmMDI1NDQ5ZTUxNzU0Y2Y4MWY3Ni4uZjQ2N2JkYmNjYjBmODM1MTgxNmQ4OWRmZjYzZWVj
MjhhYWZiNmZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcApAQCAtNTgsNiArNTgsMTIgQEAg
dm9pZCBDQ1NjaGVkdWxlcjo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgcHJvY2Vzc1Nj
aGVkdWxlZEFjdGlvbnMoKTsKIH0KIAordm9pZCBDQ1NjaGVkdWxlcjo6c2V0Q2FuRHJhdyhib29s
IGNhbkRyYXcpCit7CisgICAgbV9zdGF0ZU1hY2hpbmUuc2V0Q2FuRHJhdyhjYW5EcmF3KTsKKyAg
ICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOworfQorCiB2b2lkIENDU2NoZWR1bGVyOjpzZXRO
ZWVkc0NvbW1pdCgpCiB7CiAgICAgbV9zdGF0ZU1hY2hpbmUuc2V0TmVlZHNDb21taXQoKTsKQEAg
LTE1OSwxNiArMTY1LDEwIEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnVwZGF0ZVJlc291cmNlc0NvbXBs
ZXRlKCkKICAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOwogfQogCi1DQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QWN0aW9uIENDU2NoZWR1bGVyOjpuZXh0QWN0aW9uKCkKLXsKLSAgICBtX3N0
YXRlTWFjaGluZS5zZXRDYW5EcmF3KG1fY2xpZW50LT5jYW5EcmF3KCkpOwotICAgIHJldHVybiBt
X3N0YXRlTWFjaGluZS5uZXh0QWN0aW9uKCk7Ci19Ci0KIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nl
c3NTY2hlZHVsZWRBY3Rpb25zKCkKIHsKICAgICAvLyBFYXJseSBvdXQgc28gd2UgZG9uJ3Qgc3Bh
bSBUUkFDRV9FVkVOVFMgd2l0aCB1c2VsZXNzIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zLgotICAg
IGlmIChuZXh0QWN0aW9uKCkgPT0gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05F
KSB7CisgICAgaWYgKG1fc3RhdGVNYWNoaW5lLm5leHRBY3Rpb24oKSA9PSBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX05PTkUpIHsKICAgICAgICAgbV9mcmFtZVJhdGVDb250cm9sbGVy
LT5zZXRBY3RpdmUobV9zdGF0ZU1hY2hpbmUudnN5bmNDYWxsYmFja05lZWRlZCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIENDU2NoZWR1bGVyOjpw
cm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpCiAgICAgLy8gc2V0TmVlZHNDb21taXQuIFByb2NlZWVk
IHdpdGggY2F1dGlvbi4KICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIGFjdGlv
bjsKICAgICBkbyB7Ci0gICAgICAgIGFjdGlvbiA9IG5leHRBY3Rpb24oKTsKKyAgICAgICAgYWN0
aW9uID0gbV9zdGF0ZU1hY2hpbmUubmV4dEFjdGlvbigpOwogICAgICAgICBtX3N0YXRlTWFjaGlu
ZS51cGRhdGVTdGF0ZShhY3Rpb24pOwogICAgICAgICBUUkFDRV9FVkVOVDEoImNjIiwgIkNDU2No
ZWR1bGVyOjpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpIiwgImFjdGlvbiIsIGFjdGlvbik7CiAK
QEAgLTIxOSw3ICsyMTksOCBAQCB2b2lkIENDU2NoZWR1bGVyOjpwcm9jZXNzU2NoZWR1bGVkQWN0
aW9ucygpCiAgICAgfSB3aGlsZSAoYWN0aW9uICE9IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fTk9ORSk7CiAKICAgICAvLyBBY3RpdmF0ZSBvciBkZWFjdGl2YXRlIHRoZSBmcmFtZSBy
YXRlIGNvbnRyb2xsZXIuCi0gICAgbV9mcmFtZVJhdGVDb250cm9sbGVyLT5zZXRBY3RpdmUobV9z
dGF0ZU1hY2hpbmUudnN5bmNDYWxsYmFja05lZWRlZCgpKTsKKyAgICBtX2ZyYW1lUmF0ZUNvbnRy
b2xsZXItPnNldEFjdGl2ZSgKKyAgICAgICAgICAgIG1faGFzTW9yZVJlc291cmNlVXBkYXRlcyB8
fCBtX3N0YXRlTWFjaGluZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXIuaAppbmRleCBhYTY1MjRjNDk5ZWVjNmEzNTBhMWI0MjU2NWNlMTU3YzNkZGMyMTI4
Li41YzAwMDBhZDVmNGQ2OWRmMzcyNmVlY2Y0ZjVlODdlOTQ2NmRmNjIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyLmgKQEAgLTUyLDggKzUyLDYgQEAgc3RydWN0IENDU2NoZWR1bGVkQWN0aW9uRHJhd0Fu
ZFN3YXBSZXN1bHQgewogCiBjbGFzcyBDQ1NjaGVkdWxlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAg
dmlydHVhbCBib29sIGNhbkRyYXcoKSA9IDA7Ci0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVk
QWN0aW9uQmVnaW5GcmFtZSgpID0gMDsKICAgICB2aXJ0dWFsIENDU2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxlKCkgPSAw
OwogICAgIHZpcnR1YWwgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBzY2hlZHVs
ZWRBY3Rpb25EcmF3QW5kU3dhcEZvcmNlZCgpID0gMDsKQEAgLTc5LDYgKzc3LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0Q2FuQmVnaW5GcmFtZShib29sKTsKIAogICAgIHZvaWQgc2V0VmlzaWJs
ZShib29sKTsKKyAgICB2b2lkIHNldENhbkRyYXcoYm9vbCk7CiAKICAgICB2b2lkIHNldE5lZWRz
Q29tbWl0KCk7CiAKQEAgLTExNCw3ICsxMTMsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEND
U2NoZWR1bGVyKENDU2NoZWR1bGVyQ2xpZW50KiwgUGFzc093blB0cjxDQ0ZyYW1lUmF0ZUNvbnRy
b2xsZXI+KTsKIAotICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gbmV4dEFjdGlv
bigpOwogICAgIHZvaWQgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKIAogICAgIENDU2NoZWR1
bGVyQ2xpZW50KiBtX2NsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lLmNwcAppbmRleCA0MTUxNTZhY2I1ZTk1NDdlZDBhMDgzZWY1NWUzNTUxZTE4YTRlODU5
Li4zZjJiZWMzYmYzZjI4ZDRiODQ5NTlkOTZmNjllMjYzYWFhYTBkZDc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0
YXRlTWFjaGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCkBAIC0yNSw2ICsyNSw4IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJDQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5o
IgorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTQ0LDEzICs0NiwzOCBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmUoKQogICAgICwgbV9pbnNpZGVWU3luYyhmYWxzZSkKICAgICAsIG1fdmlzaWJsZShm
YWxzZSkKICAgICAsIG1fY2FuQmVnaW5GcmFtZShmYWxzZSkKLSAgICAsIG1fY2FuRHJhdyh0cnVl
KQorICAgICwgbV9jYW5EcmF3KGZhbHNlKQogICAgICwgbV9kcmF3SWZQb3NzaWJsZUZhaWxlZChm
YWxzZSkKICAgICAsIG1fdGV4dHVyZVN0YXRlKExBWUVSX1RFWFRVUkVfU1RBVEVfVU5MT0NLRUQp
CiAgICAgLCBtX2NvbnRleHRTdGF0ZShDT05URVhUX0FDVElWRSkKIHsKIH0KIAorU3RyaW5nIEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp0b1N0cmluZygpCit7CisgICAgVGV4dFN0cmVhbSB0czsK
KyAgICB0cyA8PCAibV9jb21taXRTdGF0ZSA9ICIgPDwgbV9jb21taXRTdGF0ZSA8PCAiOyAiOwor
ICAgIHRzIDw8ICJtX2N1cnJlbnRGcmFtZU51bWJlciA9ICIgPDwgbV9jdXJyZW50RnJhbWVOdW1i
ZXIgPDwgIjsgIjsKKyAgICB0cyA8PCAibV9sYXN0RnJhbWVOdW1iZXJXaGVyZURyYXdXYXNDYWxs
ZWQgPSAiIDw8IG1fbGFzdEZyYW1lTnVtYmVyV2hlcmVEcmF3V2FzQ2FsbGVkIDw8ICI7ICI7Cisg
ICAgdHMgPDwgIm1fY29uc2VjdXRpdmVGYWlsZWREcmF3cyA9ICIgPDwgbV9jb25zZWN1dGl2ZUZh
aWxlZERyYXdzIDw8ICI7ICI7CisgICAgdHMgPDwgIm1fbWF4aW11bU51bWJlck9mRmFpbGVkRHJh
d3NCZWZvcmVEcmF3SXNGb3JjZWQgPSAiIDw8IG1fbWF4aW11bU51bWJlck9mRmFpbGVkRHJhd3NC
ZWZvcmVEcmF3SXNGb3JjZWQgPDwgIjsgIjsKKyAgICB0cyA8PCAibV9uZWVkc1JlZHJhdyA9ICIg
PDwgbV9uZWVkc1JlZHJhdyA8PCAiOyAiOworICAgIHRzIDw8ICJtX25lZWRzRm9yY2VkUmVkcmF3
ID0gIiA8PCBtX25lZWRzRm9yY2VkUmVkcmF3IDw8ICI7ICI7CisgICAgdHMgPDwgIm1fbmVlZHNG
b3JjZWRSZWRyYXdBZnRlck5leHRDb21taXQgPSAiIDw8IG1fbmVlZHNGb3JjZWRSZWRyYXdBZnRl
ck5leHRDb21taXQgPDwgIjsgIjsKKyAgICB0cyA8PCAibV9uZWVkc0NvbW1pdCA9ICIgPDwgbV9u
ZWVkc0NvbW1pdCA8PCAiOyAiOworICAgIHRzIDw8ICJtX25lZWRzRm9yY2VkQ29tbWl0ID0gIiA8
PCBtX25lZWRzRm9yY2VkQ29tbWl0IDw8ICI7ICI7CisgICAgdHMgPDwgIm1fbWFpblRocmVhZE5l
ZWRzTGF5ZXJUZXh0dXJlcyA9ICIgPDwgbV9tYWluVGhyZWFkTmVlZHNMYXllclRleHR1cmVzIDw8
ICI7ICI7CisgICAgdHMgPDwgIm1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSAiIDw8IG1f
dXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPDwgIjsgIjsKKyAgICB0cyA8PCAibV9pbnNpZGVW
U3luYyA9ICIgPDwgbV9pbnNpZGVWU3luYyA8PCAiOyAiOworICAgIHRzIDw8ICJtX3Zpc2libGUg
PSAiIDw8IG1fdmlzaWJsZSA8PCAiOyAiOworICAgIHRzIDw8ICJtX2NhbkJlZ2luRnJhbWUgPSAi
IDw8IG1fY2FuQmVnaW5GcmFtZSA8PCAiOyAiOworICAgIHRzIDw8ICJtX2NhbkRyYXcgPSAiIDw8
IG1fY2FuRHJhdyA8PCAiOyAiOworICAgIHRzIDw8ICJtX2RyYXdJZlBvc3NpYmxlRmFpbGVkID0g
IiA8PCBtX2RyYXdJZlBvc3NpYmxlRmFpbGVkIDw8ICI7ICI7CisgICAgdHMgPDwgIm1fdGV4dHVy
ZVN0YXRlID0gIiA8PCBtX3RleHR1cmVTdGF0ZSA8PCAiOyAiOworICAgIHRzIDw8ICJtX2NvbnRl
eHRTdGF0ZSA9ICIgPDwgbV9jb250ZXh0U3RhdGUgPDwgIjsgIjsKKyAgICByZXR1cm4gdHMucmVs
ZWFzZSgpOworfQorCiBib29sIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpoYXNEcmF3blRoaXNG
cmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY3VycmVudEZyYW1lTnVtYmVyID09IG1fbGFz
dEZyYW1lTnVtYmVyV2hlcmVEcmF3V2FzQ2FsbGVkOwpAQCAtMjMwLDYgKzI1Nyw5IEBAIHZvaWQg
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldE1haW5UaHJlYWROZWVkc0xheWVyVGV4dHVyZXMo
KQogCiBib29sIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp2c3luY0NhbGxiYWNrTmVlZGVkKCkg
Y29uc3QKIHsKKyAgICBpZiAoIW1fY2FuRHJhdykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgaWYgKCFtX3Zpc2libGUgfHwgbV9jb250ZXh0U3RhdGUgIT0gQ09OVEVYVF9BQ1RJVkUpIHsK
ICAgICAgICAgaWYgKG1fbmVlZHNGb3JjZWRSZWRyYXcgfHwgbV9jb21taXRTdGF0ZSA9PSBDT01N
SVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAppbmRleCBmZTFiMTgwZmU0
OTQ3ODI5OWYzMzViYWFkODM2NjVkZGQ4MmFkMjEwLi44YmFiYWZhYjhhODBlMjI4MzZiYzM3NDY4
N2E4NWZjNzY5ZDU2NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNkZWZpbmUgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVf
aAogCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQ4LDYgKzE0OSw4IEBAIHB1
YmxpYzoKICAgICAvLyBFeHBvc2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgogICAgIHZvaWQgc2V0
TWF4aW11bU51bWJlck9mRmFpbGVkRHJhd3NCZWZvcmVEcmF3SXNGb3JjZWQoaW50KTsKIAorICAg
IFN0cmluZyB0b1N0cmluZygpOworCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBzaG91bGREcmF3Rm9y
Y2VkKCkgY29uc3Q7CiAgICAgYm9vbCBkcmF3U3VzcGVuZGVkVW50aWxDb21taXQoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCBhNzNhNmFhMTcwM2MzZDRl
M2RjZjczODM2ZWRiNGViYTE4N2E4MDllLi5lN2E0YWJmZWFlM2RkYjlkM2RiN2YwMzVmOGY3YTVh
OTNlODQ1ZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC02OSw2
ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHRPbkltcGxU
aHJlYWQoKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBs
ZXRlT25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBvblZTeW5jUGFyYW1ldGVyc0NoYW5nZWQoZG91YmxlIG1vbm90b25pY1Rp
bWViYXNlLCBkb3VibGUgaW50ZXJ2YWxJblNlY29uZHMpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBvbkNhbkRyYXdTdGF0ZUNoYW5nZWQoYm9vbCBjYW5EcmF3KSBPVkVSUklERSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7
IG1fbGF5ZXJUcmVlSG9zdC0+c2NoZWR1bGVDb21wb3NpdGUoKTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpIE9WRVJSSURFIHsgbV9sYXllclRyZWVIb3N0
LT5zY2hlZHVsZUNvbXBvc2l0ZSgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBbmltYXRpb25F
dmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50
c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5jcHAKaW5kZXggZDZhMjkzOGYwM2Y2YzliNDc3MTVhMzI0MDNhODk2ZTM3YWM4YWMy
ZC4uYjliNjBiZDRhZDU5ZDg4M2U4OGUxNzBjMDJmYWI1ZjRkOGZlNWQ5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHAKQEAgLTMzMyw2ICszMzMsMTMgQEAgdm9pZCBDQ1RocmVhZFByb3h5
OjpvblZTeW5jUGFyYW1ldGVyc0NoYW5nZWQoZG91YmxlIG1vbm90b25pY1RpbWViYXNlLCBkb3Vi
bGUgaW4KICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0VGltZWJhc2VBbmRJbnRlcnZh
bChtb25vdG9uaWNUaW1lYmFzZSwgaW50ZXJ2YWxJblNlY29uZHMpOwogfQogCit2b2lkIENDVGhy
ZWFkUHJveHk6Om9uQ2FuRHJhd1N0YXRlQ2hhbmdlZChib29sIGNhbkRyYXcpCit7CisgICAgQVNT
RVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBUUkFDRV9FVkVOVDEoImNjIiwgIkNDVGhyZWFkUHJv
eHk6Om9uQ2FuRHJhd1N0YXRlQ2hhbmdlZCIsICJjYW5EcmF3IiwgY2FuRHJhdyk7CisgICAgbV9z
Y2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldENhbkRyYXcoY2FuRHJhdyk7Cit9CisKIHZvaWQgQ0NU
aHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKQogewogICAgIEFTU0VSVChp
c0ltcGxUaHJlYWQoKSk7CkBAIC01MTgsOCArNTI1LDEwIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6
YmVnaW5GcmFtZSgpCiAgICAgbV9jb21taXRSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICBtX2ZvcmNl
ZENvbW1pdFJlcXVlc3RlZCA9IGZhbHNlOwogCi0gICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPmlu
aXRpYWxpemVSZW5kZXJlcklmTmVlZGVkKCkpCisgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPmlu
aXRpYWxpemVSZW5kZXJlcklmTmVlZGVkKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIs
ICJFYXJseU91dF9Jbml0aWFsaXplRmFpbGVkIik7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAK
ICAgICBpZiAocmVxdWVzdC0+Y29udGVudHNUZXh0dXJlc1dlcmVEZWxldGVkKQogICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPmV2aWN0QWxsQ29udGVudFRleHR1cmVzKCk7CkBAIC01NjQsNiArNTcz
LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQo
Q0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KICAgICBBU1NFUlQobV9zY2hlZHVsZXJPbklt
cGxUaHJlYWQtPmNvbW1pdFBlbmRpbmcoKSk7CiAKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdElt
cGwpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJFYXJseU91dF9Ob0xheWVyVHJlZSIp
OwogICAgICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTU5NiwxNCArNjA2LDYgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQWJvcnRl
ZE9uSW1wbFRocmVhZCgpCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVB
Ym9ydGVkKCk7CiB9CiAKLWJvb2wgQ0NUaHJlYWRQcm94eTo6Y2FuRHJhdygpCi17Ci0gICAgQVNT
RVJUKGlzSW1wbFRocmVhZCgpKTsKLSAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9sYXllclRyZWVIb3N0SW1wbC0+Y2FuRHJh
dygpOwotfQotCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVS
ZXNvdXJjZXMoZG91YmxlIG1vbm90b25pY1RpbWVMaW1pdCkKIHsKICAgICBUUkFDRV9FVkVOVDAo
ImNjIiwgIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMi
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCBlMTJlZTdlYzE5MDhkMDYzZmNkMGVhOWQy
MWM4NTc2OWUzMTQ4NGQ1Li4xMmVmNzUwNmFiM2VjYWU1YjllZWQyMWM0MDVmN2Q2ODZhYTJkZWU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC03OCwxMiArNzgsMTIgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dE9uSW1wbFRocmVhZCgpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgb25WU3luY1BhcmFtZXRlcnNDaGFuZ2VkKGRvdWJsZSBt
b25vdG9uaWNUaW1lYmFzZSwgZG91YmxlIGludGVydmFsSW5TZWNvbmRzKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgb25DYW5EcmF3U3RhdGVDaGFuZ2VkKGJvb2wgY2FuRHJhdykgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbklt
cGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxs
Q2xvY2tUaW1lKSBPVkVSUklERTsKIAogICAgIC8vIENDU2NoZWR1bGVyQ2xpZW50IGltcGxlbWVu
dGF0aW9uCi0gICAgdmlydHVhbCBib29sIGNhbkRyYXcoKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
Q0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5k
U3dhcElmUG9zc2libGUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIENDU2NoZWR1bGVkQWN0aW9u
RHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBGb3JjZWQoKSBPVkVS
UklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggMmM4NzRlOGNjMGM5MzhhNDk4ODI4ZDY5ZDA3MDVj
NDk2Y2UzODE5Zi4uZDAzOTg5YTRhZjUxYjE5NzliOGRiMzdlMjM0YjY4ZWIxMzY5ZmQxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHAKQEAgLTg0LDYgKzg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRMb3NlQ29udGV4dE9uSW1wbFRocmVhZCgpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgb25WU3luY1BhcmFtZXRlcnNDaGFuZ2VkKGRvdWJsZSwgZG91YmxlKSBP
VkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25DYW5EcmF3U3RhdGVDaGFuZ2VkKGJvb2wg
Y2FuRHJhdykgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25J
bXBsVGhyZWFkKCkgT1ZFUlJJREUgeyBtX2RpZFJlcXVlc3RSZWRyYXcgPSB0cnVlOyB9CiAgICAg
dmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyBtX2Rp
ZFJlcXVlc3RDb21taXQgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBbmltYXRpb25F
dmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50
c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSBPVkVSUklERSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LmNwcAppbmRleCA3ZGZiYmMwMGI5NTRkZjUyNDE5M2U2OTUxZjVkZTU0MjBjOGNiN2Yx
Li44M2FiZTJmNWU3YWI1YjJkMDZiMWJhMzcwY2M1YzlhNTFhNjk3YjZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QuY3BwCkBAIC0xMzYsNiArMTM2LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QsIFRlc3ROZXh0QWN0aW9uQmVnaW5zRnJhbWVJZk5lZWRlZCkKIFRFU1QoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0Rm9yY2VkUmVkcmF3RG9lc05vdFNldHNOb3Jt
YWxSZWRyYXcpCiB7CiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3Rh
dGUuc2V0Q2FuRHJhdyh0cnVlKTsKICAgICBzdGF0ZS5zZXROZWVkc0ZvcmNlZFJlZHJhdygpOwog
ICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5yZWRyYXdQZW5kaW5nKCkpOwogICAgIEVYUEVDVF9UUlVF
KHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7CkBAIC0xNDYsNiArMTQ3LDcgQEAgVEVTVChD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGYWlsZWREcmF3U2V0c05lZWRzQ29tbWl0
QW5kRG9lc05vdERyYXdBZ2EKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBzdGF0ZTsKICAg
ICBzdGF0ZS5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1
ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJh
dygpOwogICAgIEVYUEVDVF9UUlVFKHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7CiAgICAgRVhQRUNU
X1RSVUUoc3RhdGUudnN5bmNDYWxsYmFja05lZWRlZCgpKTsKQEAgLTE3MSw2ICsxNzMsNyBAQCBU
RVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldE5lZWRzUmVkcmF3RHVyaW5n
RmFpbGVkRHJhd0RvZXNOb3RSZW1vdgogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lIHN0YXRl
OwogICAgIHN0YXRlLnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJs
ZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3KHRydWUpOwogICAgIHN0YXRlLnNldE5lZWRz
UmVkcmF3KCk7CiAgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKICAgICBF
WFBFQ1RfVFJVRShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOwpAQCAtMTk5LDYgKzIwMiw3
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29tbWl0QWZ0ZXJGYWls
ZWREcmF3QWxsb3dzRHJhd0luU2FtZUZyYW1lCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUg
c3RhdGU7CiAgICAgc3RhdGUuc2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzdGF0ZS5zZXRW
aXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAKICAgICAvLyBTdGFy
dCBhIGNvbW1pdC4KICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCgpOwpAQCAtMjM5LDYgKzI0Myw3
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29tbWl0QWZ0ZXJGYWls
ZWRBbmRTdWNjZXNzZnVsRHJhd0RvZXNOb3RBCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUg
c3RhdGU7CiAgICAgc3RhdGUuc2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzdGF0ZS5zZXRW
aXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAKICAgICAvLyBTdGFy
dCBhIGNvbW1pdC4KICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCgpOwpAQCAtMjkwLDYgKzI5NSw3
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RmFpbGVkRHJhd3NXaWxs
RXZlbnR1YWxseUZvcmNlQURyYXdBZnRlclRoCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUg
c3RhdGU7CiAgICAgc3RhdGUuc2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzdGF0ZS5zZXRW
aXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAgICAgc3RhdGUuc2V0
TWF4aW11bU51bWJlck9mRmFpbGVkRHJhd3NCZWZvcmVEcmF3SXNGb3JjZWQoMSk7CiAKICAgICAv
LyBTdGFydCBhIGNvbW1pdC4KQEAgLTMzMiw2ICszMzgsNyBAQCBURVNUKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdCwgVGVzdEZhaWxlZERyYXdJc1JldHJpZWROZXh0VlN5bmMpCiAgICAgQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgc3RhdGUuc2V0Q2FuQmVnaW5GcmFtZSh0
cnVlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRyYXco
dHJ1ZSk7CiAKICAgICAvLyBTdGFydCBhIGRyYXcuCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXco
KTsKQEAgLTM2MSw2ICszNjgsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwg
VGVzdERvZXN0RHJhd1R3aWNlSW5TYW1lRnJhbWUpCiB7CiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmUgc3RhdGU7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRD
YW5EcmF3KHRydWUpOwogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KCk7CiAgICAgRVhQRUNUX1RS
VUUoc3RhdGUudnN5bmNDYWxsYmFja05lZWRlZCgpKTsKICAgICBzdGF0ZS5kaWRFbnRlclZTeW5j
KCk7CkBAIC00MTMsNiArNDIxLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3ROZXh0QWN0aW9uRHJhd3NPblZTeW5jKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtQ29tbWl0U3RhdGVzOyArK2kpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IDI7ICsraikgewogICAgICAgICAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAgICAgICAgICAg
c3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKICAgICAgICAgICAgIHN0YXRlLnNldENvbW1pdFN0YXRl
KGFsbENvbW1pdFN0YXRlc1tpXSk7CiAgICAgICAgICAgICBib29sIGZvcmNlZERyYXcgPSBqOwog
ICAgICAgICAgICAgaWYgKCFmb3JjZWREcmF3KSB7CkBAIC01MzIsNiArNTQxLDcgQEAgVEVTVChD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X09uZVJvdW5k
T2ZVcGRhdGVzKQogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNlKTsKICAgICBzdGF0ZS5z
ZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJs
ZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3KHRydWUpOwogCiAgICAgLy8gVmVyaWZ5IHdl
IGJlZ2luIHVwZGF0ZSwgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KICAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNP
VVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CkBAIC01NjAsNiArNTcwLDcgQEAgVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X1R3b1JvdW5kc09m
VXBkYXRlcykKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0
VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwogICAgIHN0YXRlLnNldFZpc2libGUo
dHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB0aGUg
dXBkYXRlIGJlZ2lucywgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KICAgICBzdGF0ZS5k
aWRFbnRlclZTeW5jKCk7CkBAIC01OTksNiArNjEwLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X1R3b1JvdW5kc09mVXBkYXRlcykKIFRF
U1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VlN5bmNOZWVkZWRXaGVuVXBkYXRl
c1BlbmRpbmdCdXRJbnZpc2libGUpCiB7CiAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0
YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMpOwogICAgIHN0
YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKGZhbHNlKTsK
QEAgLTYxNiw2ICs2MjgsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVz
dFVwZGF0ZXNfV2l0aFJlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBzdGF0ZS5zZXROZWVk
c1JlZHJhdyh0cnVlKTsKICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhm
YWxzZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3
KHRydWUpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JF
R0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8v
IEJlZ2luIGFuIHVwZGF0ZS4KQEAgLTY2Myw2ICs2NzYsNyBAQCBURVNUKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdCwgVGVzdFNldE5lZWRzQ29tbWl0SXNOb3RMb3N0KQogICAgIHN0YXRlLnNl
dENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CiAg
ICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3KHRydWUpOwog
CiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwpAQCAtNzA1
LDYgKzcxOSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5
Y2xlKQogICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICBzdGF0ZS5zZXRDYW5CZWdpbkZyYW1l
KHRydWUpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJh
dyh0cnVlKTsKIAogICAgIC8vIFN0YXJ0IGNsZWFuIGFuZCBzZXQgY29tbWl0LgogICAgIHN0YXRl
LnNldE5lZWRzQ29tbWl0KHRydWUpOwpAQCAtNzUzLDYgKzc2OCw3IEBAIFRFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJbmJldHdl
ZW4pCiAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOwogICAgIHN0YXRlLnNldENhbkJlZ2luRnJhbWUo
dHJ1ZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3
KHRydWUpOwogCiAgICAgLy8gU3RhcnQgY2xlYW4gYW5kIHNldCBjb21taXQuCiAgICAgc3RhdGUu
c2V0TmVlZHNDb21taXQodHJ1ZSk7CkBAIC04MTIsNiArODI4LDcgQEAgVEVTVChDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZVRlc3QsIFRlc3RHb2VzSW52aXNpYmxlQmVmb3JlQmVnaW5GcmFtZUNvbXBs
ZXRlcykKICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgc3RhdGUuc2V0Q2FuQmVnaW5GcmFt
ZSh0cnVlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRy
YXcodHJ1ZSk7CiAKICAgICAvLyBTdGFydCBjbGVhbiBhbmQgc2V0IGNvbW1pdC4KICAgICBzdGF0
ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKQEAgLTg1MCw2ICs4NjcsNyBAQCBURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hlbkNvbXBsZXRlbHlJZGxlKQog
ICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICBzdGF0ZS5zZXRDYW5CZWdpbkZyYW1lKHRydWUp
OwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVl
KTsKIAogICAgIHN0YXRlLmRpZExvc2VDb250ZXh0KCk7CiAKQEAgLTg3Miw2ICs4OTAsNyBAQCBU
RVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hlbklkbGVB
bmRDb21taXRSZXF1ZXN0ZWRXaGlsZQogICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICBzdGF0
ZS5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7Cisg
ICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKIAogICAgIHN0YXRlLmRpZExvc2VDb250ZXh0KCk7
CiAKQEAgLTkwOCw2ICs5MjcsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwg
VGVzdENvbnRleHRMb3N0V2hpbGVDb21taXRJblByb2dyZXNzKQogICAgIFN0YXRlTWFjaGluZSBz
dGF0ZTsKICAgICBzdGF0ZS5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHN0YXRlLnNldFZp
c2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKIAogICAgIC8vIEdldCBh
IGNvbW1pdCBpbiBmbGlnaHQuCiAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CkBAIC05
NDksNiArOTY5LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDb250
ZXh0TG9zdFdoaWxlQ29tbWl0SW5Qcm9ncmVzc0FuZEFub3RoZXIKICAgICBTdGF0ZU1hY2hpbmUg
c3RhdGU7CiAgICAgc3RhdGUuc2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzdGF0ZS5zZXRW
aXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAKICAgICAvLyBHZXQg
YSBjb21taXQgaW4gZmxpZ2h0LgogICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwpAQCAt
OTk5LDYgKzEwMjAsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZp
bmlzaEFsbFJlbmRlcmluZ1doaWxlQ29udGV4dExvc3QpCiB7CiAgICAgU3RhdGVNYWNoaW5lIHN0
YXRlOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0
cnVlKTsKIAogICAgIC8vIENhdXNlIGEgbG9zdCBjb250ZXh0IGxvc3QuCiAgICAgc3RhdGUuZGlk
TG9zZUNvbnRleHQoKTsKQEAgLTEwMzcsNiArMTA1OSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LCBUZXN0QmVnaW5GcmFtZVdoZW5DYW5CZWdpbkZyYW1lRmFsc2VBbmRGb3Jj
ZUNvCiB7CiAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1
ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKICAgICBzdGF0ZS5zZXROZWVkc0NvbW1p
dCh0cnVlKTsKICAgICBzdGF0ZS5zZXROZWVkc0ZvcmNlZENvbW1pdCh0cnVlKTsKICAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUu
bmV4dEFjdGlvbigpKTsKQEAgLTEwNjksNiArMTA5Miw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LCBUZXN0QmVnaW5GcmFtZVdoZW5Db250ZXh0TG9zdCkKICAgICBTdGF0ZU1h
Y2hpbmUgc3RhdGU7CiAgICAgc3RhdGUuc2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzdGF0
ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAgICAgc3Rh
dGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CiAgICAgc3RhdGUuc2V0TmVlZHNGb3JjZWRDb21taXQo
dHJ1ZSk7CiAgICAgc3RhdGUuZGlkTG9zZUNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAppbmRleCBjMjczOWU4YjY0MzAyNzgw
MTkwYmY5NzBkYTg3OWQxYjQzYzNlNzM1Li4yNGQ4NzMxYjk4NTk2Y2MzZDVkYmVlYTY2MTRlZTM0
NTg0YWU5OWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2No
ZWR1bGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVk
dWxlclRlc3QuY3BwCkBAIC00MywxNCArNDMsMTEgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXQo
KQogICAgIHsKICAgICAgICAgbV9hY3Rpb25zLmNsZWFyKCk7Ci0gICAgICAgIG1fY2FuRHJhdyA9
IHRydWU7CiAgICAgICAgIG1fZHJhd1dpbGxIYXBwZW4gPSB0cnVlOwogICAgICAgICBtX3N3YXBX
aWxsSGFwcGVuSWZEcmF3SGFwcGVucyA9IHRydWU7CiAgICAgICAgIG1fbnVtRHJhd3MgPSAwOwog
ICAgIH0KIAotICAgIHZvaWQgc2V0Q2FuRHJhdyhib29sIGIpIHsgbV9jYW5EcmF3ID0gYjsgfQot
CiAgICAgaW50IG51bURyYXdzKCkgY29uc3QgeyByZXR1cm4gbV9udW1EcmF3czsgfQogICAgIGlu
dCBudW1BY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtX2FjdGlvbnMu
c2l6ZSgpKTsgfQogICAgIGNvbnN0IGNoYXIqIGFjdGlvbihpbnQgaSkgY29uc3QgeyByZXR1cm4g
bV9hY3Rpb25zW2ldOyB9CkBAIC02Myw3ICs2MCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCkgT1ZFUlJJREUgeyBy
ZXR1cm4gbV9jYW5EcmF3OyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2lu
RnJhbWUoKSBPVkVSUklERSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkJl
Z2luRnJhbWUiKTsgfQogICAgIHZpcnR1YWwgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJl
c3VsdCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUoKSBPVkVSUklERQogICAg
IHsKQEAgLTg4LDcgKzg0LDYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2hh
c01vcmVSZXNvdXJjZVVwZGF0ZXM7Ci0gICAgYm9vbCBtX2NhbkRyYXc7CiAgICAgYm9vbCBtX2Ry
YXdXaWxsSGFwcGVuOwogICAgIGJvb2wgbV9zd2FwV2lsbEhhcHBlbklmRHJhd0hhcHBlbnM7CiAg
ICAgaW50IG1fbnVtRHJhd3M7CkBAIC0xMDIsNiArOTcsNyBAQCBURVNUKENDU2NoZWR1bGVyVGVz
dCwgUmVxdWVzdENvbW1pdCkKICAgICBPd25QdHI8Q0NTY2hlZHVsZXI+IHNjaGVkdWxlciA9IEND
U2NoZWR1bGVyOjpjcmVhdGUoJmNsaWVudCwgYWRvcHRQdHIobmV3IENDRnJhbWVSYXRlQ29udHJv
bGxlcih0aW1lU291cmNlKSkpOwogICAgIHNjaGVkdWxlci0+c2V0Q2FuQmVnaW5GcmFtZSh0cnVl
KTsKICAgICBzY2hlZHVsZXItPnNldFZpc2libGUodHJ1ZSk7CisgICAgc2NoZWR1bGVyLT5zZXRD
YW5EcmF3KHRydWUpOwogCiAgICAgLy8gU2V0TmVlZHNDb21taXQgc2hvdWxkIGJlZ2luIHRoZSBm
cmFtZS4KICAgICBzY2hlZHVsZXItPnNldE5lZWRzQ29tbWl0KCk7CkBAIC0xMzYsNiArMTMyLDcg
QEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRBZnRlckJlZ2luRnJhbWUpCiAg
ICAgT3duUHRyPENDU2NoZWR1bGVyPiBzY2hlZHVsZXIgPSBDQ1NjaGVkdWxlcjo6Y3JlYXRlKCZj
bGllbnQsIGFkb3B0UHRyKG5ldyBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIodGltZVNvdXJjZSkpKTsK
ICAgICBzY2hlZHVsZXItPnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAgICAgc2NoZWR1bGVyLT5z
ZXRWaXNpYmxlKHRydWUpOworICAgIHNjaGVkdWxlci0+c2V0Q2FuRHJhdyh0cnVlKTsKIAogICAg
IC8vIFNldE5lZHNDb21taXQgc2hvdWxkIGJlZ2luIHRoZSBmcmFtZS4KICAgICBzY2hlZHVsZXIt
PnNldE5lZWRzQ29tbWl0KCk7CkBAIC0xNjksNiArMTY2LDcgQEAgVEVTVChDQ1NjaGVkdWxlclRl
c3QsIFRleHR1cmVBY3F1aXNpdGlvbkNvbGxpc2lvbikKICAgICBPd25QdHI8Q0NTY2hlZHVsZXI+
IHNjaGVkdWxlciA9IENDU2NoZWR1bGVyOjpjcmVhdGUoJmNsaWVudCwgYWRvcHRQdHIobmV3IEND
RnJhbWVSYXRlQ29udHJvbGxlcih0aW1lU291cmNlKSkpOwogICAgIHNjaGVkdWxlci0+c2V0Q2Fu
QmVnaW5GcmFtZSh0cnVlKTsKICAgICBzY2hlZHVsZXItPnNldFZpc2libGUodHJ1ZSk7CisgICAg
c2NoZWR1bGVyLT5zZXRDYW5EcmF3KHRydWUpOwogCiAgICAgc2NoZWR1bGVyLT5zZXROZWVkc0Nv
bW1pdCgpOwogICAgIHNjaGVkdWxlci0+c2V0TWFpblRocmVhZE5lZWRzTGF5ZXJUZXh0dXJlcygp
OwpAQCAtMjA3LDYgKzIwNSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBWaXNpYmlsaXR5U3dp
dGNoV2l0aFRleHR1cmVBY3F1aXNpdGlvbikKICAgICBPd25QdHI8Q0NTY2hlZHVsZXI+IHNjaGVk
dWxlciA9IENDU2NoZWR1bGVyOjpjcmVhdGUoJmNsaWVudCwgYWRvcHRQdHIobmV3IENDRnJhbWVS
YXRlQ29udHJvbGxlcih0aW1lU291cmNlKSkpOwogICAgIHNjaGVkdWxlci0+c2V0Q2FuQmVnaW5G
cmFtZSh0cnVlKTsKICAgICBzY2hlZHVsZXItPnNldFZpc2libGUodHJ1ZSk7CisgICAgc2NoZWR1
bGVyLT5zZXRDYW5EcmF3KHRydWUpOwogCiAgICAgc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgp
OwogICAgIHNjaGVkdWxlci0+YmVnaW5GcmFtZUNvbXBsZXRlKGZhbHNlKTsKQEAgLTI3MCw2ICsy
NjksNyBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdFJlZHJhd0luc2lkZURyYXcpCiAg
ICAgY2xpZW50LnNldFNjaGVkdWxlcihzY2hlZHVsZXIuZ2V0KCkpOwogICAgIHNjaGVkdWxlci0+
c2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzY2hlZHVsZXItPnNldFZpc2libGUodHJ1ZSk7
CisgICAgc2NoZWR1bGVyLT5zZXRDYW5EcmF3KHRydWUpOwogCiAgICAgc2NoZWR1bGVyLT5zZXRO
ZWVkc1JlZHJhdygpOwogICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygp
KTsKQEAgLTI5Niw2ICsyOTYsNyBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdFJlZHJh
d0luc2lkZUZhaWxlZERyYXcpCiAgICAgY2xpZW50LnNldFNjaGVkdWxlcihzY2hlZHVsZXIuZ2V0
KCkpOwogICAgIHNjaGVkdWxlci0+c2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzY2hlZHVs
ZXItPnNldFZpc2libGUodHJ1ZSk7CisgICAgc2NoZWR1bGVyLT5zZXRDYW5EcmF3KHRydWUpOwog
ICAgIGNsaWVudC5zZXREcmF3V2lsbEhhcHBlbihmYWxzZSk7CiAKICAgICBzY2hlZHVsZXItPnNl
dE5lZWRzUmVkcmF3KCk7CkBAIC0zNjgsNiArMzY5LDcgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3Qs
IFJlcXVlc3RDb21taXRJbnNpZGVEcmF3KQogICAgIGNsaWVudC5zZXRTY2hlZHVsZXIoc2NoZWR1
bGVyLmdldCgpKTsKICAgICBzY2hlZHVsZXItPnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAgICAg
c2NoZWR1bGVyLT5zZXRWaXNpYmxlKHRydWUpOworICAgIHNjaGVkdWxlci0+c2V0Q2FuRHJhdyh0
cnVlKTsKIAogICAgIHNjaGVkdWxlci0+c2V0TmVlZHNSZWRyYXcoKTsKICAgICBFWFBFQ1RfVFJV
RShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CkBAIC0zOTUsNiArMzk3LDcgQEAgVEVTVChD
Q1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRJbnNpZGVGYWlsZWREcmF3KQogICAgIGNsaWVu
dC5zZXRTY2hlZHVsZXIoc2NoZWR1bGVyLmdldCgpKTsKICAgICBzY2hlZHVsZXItPnNldENhbkJl
Z2luRnJhbWUodHJ1ZSk7CiAgICAgc2NoZWR1bGVyLT5zZXRWaXNpYmxlKHRydWUpOworICAgIHNj
aGVkdWxlci0+c2V0Q2FuRHJhdyh0cnVlKTsKICAgICBjbGllbnQuc2V0RHJhd1dpbGxIYXBwZW4o
ZmFsc2UpOwogCiAgICAgc2NoZWR1bGVyLT5zZXROZWVkc1JlZHJhdygpOwpAQCAtNDM3LDYgKzQ0
MCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBOb0JlZ2luRnJhbWVXaGVuRHJhd0ZhaWxzKQog
ICAgIGNsaWVudC5zZXRTY2hlZHVsZXIoc2NoZWR1bGVyLmdldCgpKTsKICAgICBzY2hlZHVsZXIt
PnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAgICAgc2NoZWR1bGVyLT5zZXRWaXNpYmxlKHRydWUp
OworICAgIHNjaGVkdWxlci0+c2V0Q2FuRHJhdyh0cnVlKTsKIAogICAgIEVYUEVDVF9FUSgwLCBj
b250cm9sbGVyUHRyLT5udW1GcmFtZXNQZW5kaW5nKCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161751</attachid>
            <date>2012-08-31 12:23:15 -0700</date>
            <delta_ts>2012-09-04 14:56:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95399-20120831122302.patch</filename>
            <type>text/plain</type>
            <size>35556</size>
            <attacher name="Brian Anderson">brianderson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2VmMDFhMjM5ODk1YmRj
MzlkNzIxZTNlMTllZGNkY2I3OWUwYjU3NS4uZTdiZTg4NTI3OTMzNTA4YmIyNzlhZTBkMDg0ZTlj
Yjc2ZDVjZGM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA4LTI5ICBCcmlh
biBBbmRlcnNvbiAgPGJyaWFuZGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIFByZXZlbnQgY29tcG9zaXRvciB0aWNraW5nIGlmIGl0IGNhbid0IGRyYXcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mzk5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFja2dyb3VuZCBleHRlbnNp
b25zIGhhZCBhbiBhbHdheXMgdGlja2luZyBjb21wb3NpdG9yIGV2ZW4gdGhvdWdoCisgICAgICAg
IHRoZXkgY291bGRuJ3QgZHJhdy4gVGhpcyBwYXRjaCBkaXNhYmxlcyB0aGUgdGlja3Mgd2hlbiBj
YW5EcmF3IGlzIGZhbHNlCisgICAgICAgIGFuZCBhZGRzIGEgbm90aWZpY2F0aW9uIG1lY2hhbmlz
bSBmb3Igd2hlbiBjYW5EcmF3IGNoYW5nZXMgc3RhdGVzIHNvCisgICAgICAgIHdlIGNhbiByZWNv
dmVyIHByb3Blcmx5LgorCisgICAgICAgIFRlc3RzIHVwZGF0ZWQgZm9yIG5ldyBpbnRlcmZhY2Vz
LgorICAgICAgICBSZWdyZXNzaW9uIHRlc3QgYWRkZWQgdG8gbWFrZSBzdXJlIHRpY2tpbmcgc3Rv
cHMgd2hlbiBjYW5EcmF3IGlzIGZhbHNlLgorICAgICAgICBub3RpZnlJZkNhbkRyYXdDaGFuZ2Vk
IHRlc3QgYWRkZWQgdG8gbWFrZSBzdXJlIG5vdGlmaWNhdGlvbnMgYXJlIHNlbnQKKyAgICAgICAg
Zm9yIGFueSBjaGFuZ2VzIHRoYXQgbWlnaHQgYWZmZWN0IGNhbkRyYXcuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6bm90aWZ5SWZDYW5EcmF3
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdEltcGw6OnJlbGVhc2VDb250ZW50c1RleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFJvb3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjppbml0aWFsaXplUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Vmlld3BvcnRTaXplKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAg
IChDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdEltcGw6OnJlc2V0Q29udGVudHNUZXh0dXJlc1B1cmdlZCk6CisgICAgICAgIChDQ0xh
eWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6c2V0Q2Fu
RHJhdyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVy
Ojpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaDoKKyAgICAgICAgKENDU2NoZWR1bGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dG9TdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6dnN5bmNDYWxsYmFja05lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaDoKKyAgICAgICAgKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5OjpvbkNhbkRyYXdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgor
CiAyMDEyLTA4LTI4ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBb
TmV3IE11bHRpY29sdW1uXSBJbXBsZW1lbnQgY29sdW1uIGNvbnRlbnRzIHBhaW50aW5nLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBiN2IwMWU2OTU5NmQ5NDM5
YWRiOGE2NWZmOTBkNjVkOWNmNThkZDU5Li41MGUzZjZiODBkOTFlMmEyNjIzZWEzMGNkYmY5Y2U4
YTcwZjFlMDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAt
MTI3LDYgKzEyNyw3IEBAIENDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwo
Y29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MsIENDCiAgICAgLCBtX3NldHRpbmdz
KHNldHRpbmdzKQogICAgICwgbV9kZXZpY2VTY2FsZUZhY3RvcigxKQogICAgICwgbV92aXNpYmxl
KHRydWUpCisgICAgLCBtX3ByZXZpb3VzQ2FuRHJhdyhmYWxzZSkKICAgICAsIG1fY29udGVudHNU
ZXh0dXJlc1B1cmdlZChmYWxzZSkKICAgICAsIG1fbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMo
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpkZWZhdWx0TWVtb3J5QWxsb2NhdGlvbkxpbWl0
KCkpCiAgICAgLCBtX3BhZ2VTY2FsZSgxKQpAQCAtMTY4LDYgKzE2OSwxMCBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdEltcGw6OmNvbW1pdENvbXBsZXRlKCkKIAogYm9vbCBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpjYW5EcmF3KCkKIHsKKyAgICAvLyBOb3RlOiBJZiB5b3UgYXJlIGNoYW5naW5nIHRoaXMg
ZnVuY3Rpb24gb3IgYW55IG90aGVyIGZ1bmN0aW9uIHRoYXQgbWlnaHQKKyAgICAvLyBhZmZlY3Qg
dGhlIHJlc3VsdCBvZiBjYW5EcmF3LCBtYWtlIHN1cmUgdG8gY2FsbCBtX2NsaWVudC0+b25DYW5E
cmF3U3RhdGVDaGFuZ2VkCisgICAgLy8gaW4gdGhlIHByb3BlciBwbGFjZXMgYW5kIHVwZGF0ZSB0
aGUgbm90aWZ5SWZDYW5EcmF3Q2hhbmdlZCB0ZXN0LgorCiAgICAgaWYgKCFtX3Jvb3RMYXllcklt
cGwpIHsKICAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoImNjIiwgIkNDTGF5ZXJUcmVlSG9z
dEltcGw6OmNhbkRyYXcgbm8gcm9vdCBsYXllciIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC01MzAsNiArNTM1LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpyZWxlYXNlQ29udGVu
dHNUZXh0dXJlcygpCiAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVPd25lZFJlc291cmNl
cyhDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgbV9jb250ZW50c1RleHR1cmVzUHVyZ2Vk
ID0gdHJ1ZTsKICAgICBtX2NsaWVudC0+c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKTsKKyAg
ICBtX2NsaWVudC0+b25DYW5EcmF3U3RhdGVDaGFuZ2VkKGNhbkRyYXcoKSk7CiB9CiAKIHZvaWQg
Q0NMYXllclRyZWVIb3N0SW1wbDo6c2V0TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90
IGJ5dGVzKQpAQCAtNjY5LDYgKzY3NSw4IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0
Um9vdExheWVyKFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGxheWVyKQogICAgICAgICBtX2N1cnJl
bnRseVNjcm9sbGluZ0xheWVySW1wbCA9IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6ZmluZExheWVy
SW5TdWJ0cmVlKG1fcm9vdExheWVySW1wbC5nZXQoKSwgbV9zY3JvbGxpbmdMYXllcklkRnJvbVBy
ZXZpb3VzVHJlZSk7CiAKICAgICBtX3Njcm9sbGluZ0xheWVySWRGcm9tUHJldmlvdXNUcmVlID0g
LTE7CisKKyAgICBtX2NsaWVudC0+b25DYW5EcmF3U3RhdGVDaGFuZ2VkKGNhbkRyYXcoKSk7CiB9
CiAKIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IENDTGF5ZXJUcmVlSG9zdEltcGw6OmRldGFjaExh
eWVyVHJlZSgpCkBAIC03MzEsOSArNzM5LDE3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6
aW5pdGlhbGl6ZVJlbmRlcmVyKFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRlCiAg
ICAgaWYgKCFtX3Zpc2libGUgJiYgbV9yZW5kZXJlcikKICAgICAgICAgIG1fcmVuZGVyZXItPnNl
dFZpc2libGUobV92aXNpYmxlKTsKIAorICAgIG1fY2xpZW50LT5vbkNhbkRyYXdTdGF0ZUNoYW5n
ZWQoY2FuRHJhdygpKTsKKwogICAgIHJldHVybiBtX3JlbmRlcmVyOwogfQogCit2b2lkIENDTGF5
ZXJUcmVlSG9zdEltcGw6OnJlc2V0Q29udGVudHNUZXh0dXJlc1B1cmdlZCgpCit7CisgICAgbV9j
b250ZW50c1RleHR1cmVzUHVyZ2VkID0gZmFsc2U7CisgICAgbV9jbGllbnQtPm9uQ2FuRHJhd1N0
YXRlQ2hhbmdlZChjYW5EcmF3KCkpOworfQorCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNl
dFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiBsYXlvdXRWaWV3cG9ydFNpemUsIGNvbnN0IElu
dFNpemUmIGRldmljZVZpZXdwb3J0U2l6ZSkKIHsKICAgICBpZiAobGF5b3V0Vmlld3BvcnRTaXpl
ID09IG1fbGF5b3V0Vmlld3BvcnRTaXplICYmIGRldmljZVZpZXdwb3J0U2l6ZSA9PSBtX2Rldmlj
ZVZpZXdwb3J0U2l6ZSkKQEAgLTc0Niw2ICs3NjIsOCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdElt
cGw6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiBsYXlvdXRWaWV3cG9ydFNpemUsIGNv
bgogCiAgICAgaWYgKG1fcmVuZGVyZXIpCiAgICAgICAgIG1fcmVuZGVyZXItPnZpZXdwb3J0Q2hh
bmdlZCgpOworCisgICAgbV9jbGllbnQtPm9uQ2FuRHJhd1N0YXRlQ2hhbmdlZChjYW5EcmF3KCkp
OwogfQogCiBzdGF0aWMgdm9pZCBhZGp1c3RTY3JvbGxzRm9yUGFnZVNjYWxlQ2hhbmdlKENDTGF5
ZXJJbXBsKiBsYXllckltcGwsIGZsb2F0IHBhZ2VTY2FsZUNoYW5nZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCBiM2QwN2FjMjljMGE4MDc4ZjAxN2M4ZTE4OTMwYmEw
MDcyOTA2Mzg0Li5jYmFhZWQ1OWM0YzA0YTc4M2M5ZWY5NDU3MGJlY2IxY2Y4MWViMjFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHRPbkltcGxUaHJlYWQoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgb25WU3luY1BhcmFtZXRlcnNDaGFuZ2VkKGRvdWJsZSBtb25vdG9u
aWNUaW1lYmFzZSwgZG91YmxlIGludGVydmFsSW5TZWNvbmRzKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIG9uQ2FuRHJhd1N0YXRlQ2hhbmdlZChib29sIGNhbkRyYXcpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0
QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmlt
YXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSkgPSAwOwpAQCAtMTYwLDcg
KzE2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNvdXJjZUZyYW1lTnVtYmVyKGludCBmcmFt
ZU51bWJlcikgeyBtX3NvdXJjZUZyYW1lTnVtYmVyID0gZnJhbWVOdW1iZXI7IH0KIAogICAgIGJv
b2wgY29udGVudHNUZXh0dXJlc1B1cmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNUZXh0
dXJlc1B1cmdlZDsgfQotICAgIHZvaWQgcmVzZXRDb250ZW50c1RleHR1cmVzUHVyZ2VkKCkgeyBt
X2NvbnRlbnRzVGV4dHVyZXNQdXJnZWQgPSBmYWxzZTsgfQorICAgIHZvaWQgcmVzZXRDb250ZW50
c1RleHR1cmVzUHVyZ2VkKCk7CiAgICAgc2l6ZV90IG1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVz
KCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlczsgfQogCiAgICAg
dm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgbGF5b3V0Vmlld3BvcnRTaXplLCBj
b25zdCBJbnRTaXplJiBkZXZpY2VWaWV3cG9ydFNpemUpOwpAQCAtMjgyLDYgKzI4Myw3IEBAIHBy
aXZhdGU6CiAgICAgSW50U2l6ZSBtX2RldmljZVZpZXdwb3J0U2l6ZTsKICAgICBmbG9hdCBtX2Rl
dmljZVNjYWxlRmFjdG9yOwogICAgIGJvb2wgbV92aXNpYmxlOworICAgIGJvb2wgbV9wcmV2aW91
c0NhbkRyYXc7CiAgICAgYm9vbCBtX2NvbnRlbnRzVGV4dHVyZXNQdXJnZWQ7CiAgICAgc2l6ZV90
IG1fbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcApp
bmRleCA0ZGY1MmFlZjk2MGY2YzFhZjg1ZmYwMjU0NDllNTE3NTRjZjgxZjc2Li45Y2YwZGIxZjEy
ZTE1NjkzNGQyNWFiM2IzZWNjZDJiOTk0MGE5MWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3Bw
CkBAIC01OCw2ICs1OCwxMiBAQCB2b2lkIENDU2NoZWR1bGVyOjpzZXRWaXNpYmxlKGJvb2wgdmlz
aWJsZSkKICAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOwogfQogCit2b2lkIENDU2NoZWR1
bGVyOjpzZXRDYW5EcmF3KGJvb2wgY2FuRHJhdykKK3sKKyAgICBtX3N0YXRlTWFjaGluZS5zZXRD
YW5EcmF3KGNhbkRyYXcpOworICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7Cit9CisKIHZv
aWQgQ0NTY2hlZHVsZXI6OnNldE5lZWRzQ29tbWl0KCkKIHsKICAgICBtX3N0YXRlTWFjaGluZS5z
ZXROZWVkc0NvbW1pdCgpOwpAQCAtMTU5LDE2ICsxNjUsMTAgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6
dXBkYXRlUmVzb3VyY2VzQ29tcGxldGUoKQogICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7
CiB9CiAKLUNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXI6Om5leHRB
Y3Rpb24oKQotewotICAgIG1fc3RhdGVNYWNoaW5lLnNldENhbkRyYXcobV9jbGllbnQtPmNhbkRy
YXcoKSk7Ci0gICAgcmV0dXJuIG1fc3RhdGVNYWNoaW5lLm5leHRBY3Rpb24oKTsKLX0KLQogdm9p
ZCBDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKQogewogICAgIC8vIEVhcmx5
IG91dCBzbyB3ZSBkb24ndCBzcGFtIFRSQUNFX0VWRU5UUyB3aXRoIHVzZWxlc3MgcHJvY2Vzc1Nj
aGVkdWxlZEFjdGlvbnMuCi0gICAgaWYgKG5leHRBY3Rpb24oKSA9PSBDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX05PTkUpIHsKKyAgICBpZiAobV9zdGF0ZU1hY2hpbmUubmV4dEFjdGlv
bigpID09IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSkgewogICAgICAgICBt
X2ZyYW1lUmF0ZUNvbnRyb2xsZXItPnNldEFjdGl2ZShtX3N0YXRlTWFjaGluZS52c3luY0NhbGxi
YWNrTmVlZGVkKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTc3LDcgKzE3Nyw3IEBA
IHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCkKICAgICAvLyBzZXRO
ZWVkc0NvbW1pdC4gUHJvY2VlZWQgd2l0aCBjYXV0aW9uLgogICAgIENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBY3Rpb24gYWN0aW9uOwogICAgIGRvIHsKLSAgICAgICAgYWN0aW9uID0gbmV4dEFj
dGlvbigpOworICAgICAgICBhY3Rpb24gPSBtX3N0YXRlTWFjaGluZS5uZXh0QWN0aW9uKCk7CiAg
ICAgICAgIG1fc3RhdGVNYWNoaW5lLnVwZGF0ZVN0YXRlKGFjdGlvbik7CiAgICAgICAgIFRSQUNF
X0VWRU5UMSgiY2MiLCAiQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCkiLCAi
YWN0aW9uIiwgYWN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKaW5kZXggYWE2NTI0YzQ5OWVl
YzZhMzUwYTFiNDI1NjVjZTE1N2MzZGRjMjEyOC4uNWMwMDAwYWQ1ZjRkNjlkZjM3MjZlZWNmNGY1
ZTg3ZTk0NjZkZjYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCkBAIC01Miw4ICs1Miw2IEBAIHN0
cnVjdCBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IHsKIAogY2xhc3MgQ0NTY2hl
ZHVsZXJDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCkgPSAwOwot
CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKSA9IDA7CiAgICAg
dmlydHVhbCBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IHNjaGVkdWxlZEFjdGlv
bkRyYXdBbmRTd2FwSWZQb3NzaWJsZSgpID0gMDsKICAgICB2aXJ0dWFsIENDU2NoZWR1bGVkQWN0
aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBGb3JjZWQoKSA9
IDA7CkBAIC03OSw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhbkJlZ2luRnJhbWUo
Ym9vbCk7CiAKICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7CisgICAgdm9pZCBzZXRDYW5EcmF3
KGJvb2wpOwogCiAgICAgdm9pZCBzZXROZWVkc0NvbW1pdCgpOwogCkBAIC0xMTQsNyArMTEzLDYg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDQ1NjaGVkdWxlcihDQ1NjaGVkdWxlckNsaWVudCos
IFBhc3NPd25QdHI8Q0NGcmFtZVJhdGVDb250cm9sbGVyPik7CiAKLSAgICBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QWN0aW9uIG5leHRBY3Rpb24oKTsKICAgICB2b2lkIHByb2Nlc3NTY2hlZHVs
ZWRBY3Rpb25zKCk7CiAKICAgICBDQ1NjaGVkdWxlckNsaWVudCogbV9jbGllbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKaW5kZXggNDE1MTU2YWNiNWU5
NTQ3ZWQwYTA4M2VmNTVlMzU1MWUxOGE0ZTg1OS4uOTUyNjU5MDY0NDNhY2NlNWNhMWZlZGM5ZTFh
ZDZkYWFkZTY4MzQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lLmNwcApAQCAtMjUsNiArMjUsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVk
ZSAiQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaCIKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCisK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NCwxMyArNDYsMzggQEAgQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKCkKICAgICAsIG1faW5zaWRlVlN5
bmMoZmFsc2UpCiAgICAgLCBtX3Zpc2libGUoZmFsc2UpCiAgICAgLCBtX2NhbkJlZ2luRnJhbWUo
ZmFsc2UpCi0gICAgLCBtX2NhbkRyYXcodHJ1ZSkKKyAgICAsIG1fY2FuRHJhdyhmYWxzZSkKICAg
ICAsIG1fZHJhd0lmUG9zc2libGVGYWlsZWQoZmFsc2UpCiAgICAgLCBtX3RleHR1cmVTdGF0ZShM
QVlFUl9URVhUVVJFX1NUQVRFX1VOTE9DS0VEKQogICAgICwgbV9jb250ZXh0U3RhdGUoQ09OVEVY
VF9BQ1RJVkUpCiB7CiB9CiAKK1N0cmluZyBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dG9TdHJp
bmcoKQoreworICAgIFRleHRTdHJlYW0gdHM7CisgICAgdHMgPDwgIm1fY29tbWl0U3RhdGUgPSAi
IDw8IG1fY29tbWl0U3RhdGUgPDwgIjsgIjsKKyAgICB0cyA8PCAibV9jdXJyZW50RnJhbWVOdW1i
ZXIgPSAiIDw8IG1fY3VycmVudEZyYW1lTnVtYmVyIDw8ICI7ICI7CisgICAgdHMgPDwgIm1fbGFz
dEZyYW1lTnVtYmVyV2hlcmVEcmF3V2FzQ2FsbGVkID0gIiA8PCBtX2xhc3RGcmFtZU51bWJlcldo
ZXJlRHJhd1dhc0NhbGxlZCA8PCAiOyAiOworICAgIHRzIDw8ICJtX2NvbnNlY3V0aXZlRmFpbGVk
RHJhd3MgPSAiIDw8IG1fY29uc2VjdXRpdmVGYWlsZWREcmF3cyA8PCAiOyAiOworICAgIHRzIDw8
ICJtX21heGltdW1OdW1iZXJPZkZhaWxlZERyYXdzQmVmb3JlRHJhd0lzRm9yY2VkID0gIiA8PCBt
X21heGltdW1OdW1iZXJPZkZhaWxlZERyYXdzQmVmb3JlRHJhd0lzRm9yY2VkIDw8ICI7ICI7Cisg
ICAgdHMgPDwgIm1fbmVlZHNSZWRyYXcgPSAiIDw8IG1fbmVlZHNSZWRyYXcgPDwgIjsgIjsKKyAg
ICB0cyA8PCAibV9uZWVkc0ZvcmNlZFJlZHJhdyA9ICIgPDwgbV9uZWVkc0ZvcmNlZFJlZHJhdyA8
PCAiOyAiOworICAgIHRzIDw8ICJtX25lZWRzRm9yY2VkUmVkcmF3QWZ0ZXJOZXh0Q29tbWl0ID0g
IiA8PCBtX25lZWRzRm9yY2VkUmVkcmF3QWZ0ZXJOZXh0Q29tbWl0IDw8ICI7ICI7CisgICAgdHMg
PDwgIm1fbmVlZHNDb21taXQgPSAiIDw8IG1fbmVlZHNDb21taXQgPDwgIjsgIjsKKyAgICB0cyA8
PCAibV9uZWVkc0ZvcmNlZENvbW1pdCA9ICIgPDwgbV9uZWVkc0ZvcmNlZENvbW1pdCA8PCAiOyAi
OworICAgIHRzIDw8ICJtX21haW5UaHJlYWROZWVkc0xheWVyVGV4dHVyZXMgPSAiIDw8IG1fbWFp
blRocmVhZE5lZWRzTGF5ZXJUZXh0dXJlcyA8PCAiOyAiOworICAgIHRzIDw8ICJtX3VwZGF0ZU1v
cmVSZXNvdXJjZXNQZW5kaW5nID0gIiA8PCBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nIDw8
ICI7ICI7CisgICAgdHMgPDwgIm1faW5zaWRlVlN5bmMgPSAiIDw8IG1faW5zaWRlVlN5bmMgPDwg
IjsgIjsKKyAgICB0cyA8PCAibV92aXNpYmxlID0gIiA8PCBtX3Zpc2libGUgPDwgIjsgIjsKKyAg
ICB0cyA8PCAibV9jYW5CZWdpbkZyYW1lID0gIiA8PCBtX2NhbkJlZ2luRnJhbWUgPDwgIjsgIjsK
KyAgICB0cyA8PCAibV9jYW5EcmF3ID0gIiA8PCBtX2NhbkRyYXcgPDwgIjsgIjsKKyAgICB0cyA8
PCAibV9kcmF3SWZQb3NzaWJsZUZhaWxlZCA9ICIgPDwgbV9kcmF3SWZQb3NzaWJsZUZhaWxlZCA8
PCAiOyAiOworICAgIHRzIDw8ICJtX3RleHR1cmVTdGF0ZSA9ICIgPDwgbV90ZXh0dXJlU3RhdGUg
PDwgIjsgIjsKKyAgICB0cyA8PCAibV9jb250ZXh0U3RhdGUgPSAiIDw8IG1fY29udGV4dFN0YXRl
IDw8ICI7ICI7CisgICAgcmV0dXJuIHRzLnJlbGVhc2UoKTsKK30KKwogYm9vbCBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6aGFzRHJhd25UaGlzRnJhbWUoKSBjb25zdAogewogICAgIHJldHVybiBt
X2N1cnJlbnRGcmFtZU51bWJlciA9PSBtX2xhc3RGcmFtZU51bWJlcldoZXJlRHJhd1dhc0NhbGxl
ZDsKQEAgLTIzMCwxNCArMjU3LDE4IEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNl
dE1haW5UaHJlYWROZWVkc0xheWVyVGV4dHVyZXMoKQogCiBib29sIENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjp2c3luY0NhbGxiYWNrTmVlZGVkKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fdmlzaWJs
ZSB8fCBtX2NvbnRleHRTdGF0ZSAhPSBDT05URVhUX0FDVElWRSkgewotICAgICAgICBpZiAobV9u
ZWVkc0ZvcmNlZFJlZHJhdyB8fCBtX2NvbW1pdFN0YXRlID09IENPTU1JVF9TVEFURV9VUERBVElO
R19SRVNPVVJDRVMpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBUbyBwcmV2ZW50
IGxpdmUtbG9jaywgd2UgbXVzdCBhbHdheXMgdGljayB3aGVuIHVwZGF0aW5nIHJlc291cmNlcy4K
KyAgICBpZiAobV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyB8fCBtX2NvbW1pdFN0YXRlID09
IENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMpCisgICAgICAgIHJldHVybiB0cnVlOwog
CisgICAgLy8gSWYgd2UgY2FuJ3QgZHJhdywgZG9uJ3QgdGljayB1bnRpbCB3ZSBhcmUgbm90aWZp
ZWQgdGhhdCB3ZSBjYW4gZHJhdyBhZ2Fpbi4KKyAgICBpZiAoIW1fY2FuRHJhdykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KIAotICAgIHJldHVybiBtX25lZWRzUmVkcmF3IHx8IG1fbmVl
ZHNGb3JjZWRSZWRyYXcgfHwgbV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfVVBEQVRJTkdf
UkVTT1VSQ0VTOworICAgIGlmIChtX25lZWRzRm9yY2VkUmVkcmF3KQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIHJldHVybiBtX25lZWRzUmVkcmF3ICYmIG1fdmlzaWJsZSAmJiBtX2NvbnRl
eHRTdGF0ZSA9PSBDT05URVhUX0FDVElWRTsKIH0KIAogdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6ZGlkRW50ZXJWU3luYygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmUuaAppbmRleCBmZTFiMTgwZmU0OTQ3ODI5OWYzMzViYWFkODM2NjVkZGQ4MmFkMjEwLi44
YmFiYWZhYjhhODBlMjI4MzZiYzM3NDY4N2E4NWZjNzY5ZDU2NmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNkZWZpbmUg
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVfaAogCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMTQ4LDYgKzE0OSw4IEBAIHB1YmxpYzoKICAgICAvLyBFeHBvc2VkIGZvciB0ZXN0aW5n
IHB1cnBvc2VzLgogICAgIHZvaWQgc2V0TWF4aW11bU51bWJlck9mRmFpbGVkRHJhd3NCZWZvcmVE
cmF3SXNGb3JjZWQoaW50KTsKIAorICAgIFN0cmluZyB0b1N0cmluZygpOworCiBwcm90ZWN0ZWQ6
CiAgICAgYm9vbCBzaG91bGREcmF3Rm9yY2VkKCkgY29uc3Q7CiAgICAgYm9vbCBkcmF3U3VzcGVu
ZGVkVW50aWxDb21taXQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aAppbmRleCBhNzNhNmFhMTcwM2MzZDRlM2RjZjczODM2ZWRiNGViYTE4N2E4MDllLi5lN2E0YWJm
ZWFlM2RkYjlkM2RiN2YwMzVmOGY3YTVhOTNlODQ1ZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oCkBAIC02OSw2ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlkTG9zZUNvbnRleHRPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvblZTeW5jUGFyYW1ldGVyc0No
YW5nZWQoZG91YmxlIG1vbm90b25pY1RpbWViYXNlLCBkb3VibGUgaW50ZXJ2YWxJblNlY29uZHMp
IE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvbkNhbkRyYXdTdGF0ZUNoYW5nZWQoYm9v
bCBjYW5EcmF3KSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdP
bkltcGxUaHJlYWQoKSBPVkVSUklERSB7IG1fbGF5ZXJUcmVlSG9zdC0+c2NoZWR1bGVDb21wb3Np
dGUoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpIE9W
RVJSSURFIHsgbV9sYXllclRyZWVIb3N0LT5zY2hlZHVsZUNvbXBvc2l0ZSgpOyB9CiAgICAgdmly
dHVhbCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFz
c093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSBP
VkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggZDZhMjkzOGYwM2Y2Yzli
NDc3MTVhMzI0MDNhODk2ZTM3YWM4YWMyZC4uYjliNjBiZDRhZDU5ZDg4M2U4OGUxNzBjMDJmYWI1
ZjRkOGZlNWQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTMzMyw2ICszMzMs
MTMgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpvblZTeW5jUGFyYW1ldGVyc0NoYW5nZWQoZG91Ymxl
IG1vbm90b25pY1RpbWViYXNlLCBkb3VibGUgaW4KICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVh
ZC0+c2V0VGltZWJhc2VBbmRJbnRlcnZhbChtb25vdG9uaWNUaW1lYmFzZSwgaW50ZXJ2YWxJblNl
Y29uZHMpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6Om9uQ2FuRHJhd1N0YXRlQ2hhbmdlZChi
b29sIGNhbkRyYXcpCit7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBUUkFDRV9F
VkVOVDEoImNjIiwgIkNDVGhyZWFkUHJveHk6Om9uQ2FuRHJhd1N0YXRlQ2hhbmdlZCIsICJjYW5E
cmF3IiwgY2FuRHJhdyk7CisgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldENhbkRyYXco
Y2FuRHJhdyk7Cit9CisKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRPbkltcGxU
aHJlYWQoKQogewogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CkBAIC01MTgsOCArNTI1LDEw
IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSgpCiAgICAgbV9jb21taXRSZXF1ZXN0
ZWQgPSBmYWxzZTsKICAgICBtX2ZvcmNlZENvbW1pdFJlcXVlc3RlZCA9IGZhbHNlOwogCi0gICAg
aWYgKCFtX2xheWVyVHJlZUhvc3QtPmluaXRpYWxpemVSZW5kZXJlcklmTmVlZGVkKCkpCisgICAg
aWYgKCFtX2xheWVyVHJlZUhvc3QtPmluaXRpYWxpemVSZW5kZXJlcklmTmVlZGVkKCkpIHsKKyAg
ICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJFYXJseU91dF9Jbml0aWFsaXplRmFpbGVkIik7CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAocmVxdWVzdC0+Y29udGVudHNUZXh0dXJl
c1dlcmVEZWxldGVkKQogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmV2aWN0QWxsQ29udGVudFRl
eHR1cmVzKCk7CkBAIC01NjQsNiArNTczLDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZy
YW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KICAg
ICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmNvbW1pdFBlbmRpbmcoKSk7CiAKICAg
ICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIs
ICJFYXJseU91dF9Ob0xheWVyVHJlZSIpOwogICAgICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTU5NiwxNCArNjA2LDYgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5OjpiZWdpbkZyYW1lQWJvcnRlZE9uSW1wbFRocmVhZCgpCiAgICAgbV9zY2hlZHVsZXJP
bkltcGxUaHJlYWQtPmJlZ2luRnJhbWVBYm9ydGVkKCk7CiB9CiAKLWJvb2wgQ0NUaHJlYWRQcm94
eTo6Y2FuRHJhdygpCi17Ci0gICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKLSAgICBpZiAoIW1f
bGF5ZXJUcmVlSG9zdEltcGwpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9s
YXllclRyZWVIb3N0SW1wbC0+Y2FuRHJhdygpOwotfQotCiB2b2lkIENDVGhyZWFkUHJveHk6OnNj
aGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoZG91YmxlIG1vbm90b25pY1RpbWVMaW1p
dCkKIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFj
dGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCBl
MTJlZTdlYzE5MDhkMDYzZmNkMGVhOWQyMWM4NTc2OWUzMTQ4NGQ1Li4xMmVmNzUwNmFiM2VjYWU1
YjllZWQyMWM0MDVmN2Q2ODZhYTJkZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC03
OCwxMiArNzgsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dE9u
SW1wbFRocmVhZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29t
cGxldGVPbkltcGxUaHJlYWQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgb25WU3luY1Bh
cmFtZXRlcnNDaGFuZ2VkKGRvdWJsZSBtb25vdG9uaWNUaW1lYmFzZSwgZG91YmxlIGludGVydmFs
SW5TZWNvbmRzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgb25DYW5EcmF3U3RhdGVDaGFu
Z2VkKGJvb2wgY2FuRHJhdykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVk
cmF3T25JbXBsVGhyZWFkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29t
bWl0T25JbXBsVGhyZWFkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBbmltYXRp
b25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2
ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSBPVkVSUklERTsKIAogICAgIC8vIEND
U2NoZWR1bGVyQ2xpZW50IGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVhbCBib29sIGNhbkRyYXco
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3Vs
dCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUoKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9u
RHJhd0FuZFN3YXBGb3JjZWQoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggMmM4NzRl
OGNjMGM5MzhhNDk4ODI4ZDY5ZDA3MDVjNDk2Y2UzODE5Zi4uY2EwNTAwYzYwYzNhMzhmNjczZThl
YTM3NDc3ZTc2MTNkNzhmNzgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTcwLDcgKzcwLDggQEAg
bmFtZXNwYWNlIHsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QsIHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IHsKIHB1YmxpYzoKICAg
ICBDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCgpCi0gICAgICAgIDogbV9kaWRSZXF1ZXN0Q29tbWl0
KGZhbHNlKQorICAgICAgICA6IG1fb25DYW5EcmF3U3RhdGVDaGFuZ2VkQ2FsbGVkKGZhbHNlKQor
ICAgICAgICAsIG1fZGlkUmVxdWVzdENvbW1pdChmYWxzZSkKICAgICAgICAgLCBtX2RpZFJlcXVl
c3RSZWRyYXcoZmFsc2UpCiAgICAgewogICAgICAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRp
bmdzOwpAQCAtODQsNiArODUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VD
b250ZXh0T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3dh
cEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCgpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBvblZTeW5jUGFyYW1ldGVyc0NoYW5nZWQoZG91YmxlLCBkb3VibGUpIE9WRVJSSURFIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBvbkNhbkRyYXdTdGF0ZUNoYW5nZWQoYm9vbCBjYW5EcmF3KSBP
VkVSUklERSB7IG1fb25DYW5EcmF3U3RhdGVDaGFuZ2VkQ2FsbGVkID0gdHJ1ZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpIE9WRVJSSURFIHsgbV9kaWRS
ZXF1ZXN0UmVkcmF3ID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9u
SW1wbFRocmVhZCgpIE9WRVJSSURFIHsgbV9kaWRSZXF1ZXN0Q29tbWl0ID0gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFk
KFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGlt
ZSkgT1ZFUlJJREUgeyB9CkBAIC0xODUsNiArMTg3LDcgQEAgcHJvdGVjdGVkOgogICAgIERlYnVn
U2NvcGVkU2V0TWFpblRocmVhZEJsb2NrZWQgbV9hbHdheXNNYWluVGhyZWFkQmxvY2tlZDsKIAog
ICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBtX2hvc3RJbXBsOworICAgIGJvb2wgbV9v
bkNhbkRyYXdTdGF0ZUNoYW5nZWRDYWxsZWQ7CiAgICAgYm9vbCBtX2RpZFJlcXVlc3RDb21taXQ7
CiAgICAgYm9vbCBtX2RpZFJlcXVlc3RSZWRyYXc7CiAgICAgQ0NTY29wZWRTZXR0aW5ncyBtX3Nj
b3BlZFNldHRpbmdzOwpAQCAtMTk1LDYgKzE5OCw1MyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIG1ha2VDb250ZXh0Q3VycmVudCgpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCitURVNUX0Yo
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIG5vdGlmeUlmQ2FuRHJhd0NoYW5nZWQpCit7CisgICAg
Ly8gTm90ZTogSXQgaXMgbm90IHBvc3NpYmxlIHRvIGRpc2FibGUgdGhlIHJlbmRlcmVyIG9uY2Ug
aXQgaGFzIGJlZW4gc2V0LAorICAgIC8vIHNvIHdlIGRvIG5vdCBuZWVkIHRvIHRlc3QgdGhhdCBk
aXNhYmxpbmcgdGhlIHJlbmRlcmVyIG5vdGlmaWVzIHVzCisgICAgLy8gdGhhdCBjYW5EcmF3IGNo
YW5nZWQuCisgICAgRVhQRUNUX0ZBTFNFKG1faG9zdEltcGwtPmNhbkRyYXcoKSk7CisgICAgbV9v
bkNhbkRyYXdTdGF0ZUNoYW5nZWRDYWxsZWQgPSBmYWxzZTsKKworICAgIHNldHVwU2Nyb2xsQW5k
Q29udGVudHNMYXllcnMoSW50U2l6ZSgxMDAsIDEwMCkpOworICAgIEVYUEVDVF9UUlVFKG1faG9z
dEltcGwtPmNhbkRyYXcoKSk7CisgICAgRVhQRUNUX1RSVUUobV9vbkNhbkRyYXdTdGF0ZUNoYW5n
ZWRDYWxsZWQpOworICAgIG1fb25DYW5EcmF3U3RhdGVDaGFuZ2VkQ2FsbGVkID0gZmFsc2U7CisK
KyAgICAvLyBUb2dnbGUgdGhlIHJvb3QgbGF5ZXIgdG8gbWFrZSBzdXJlIGl0IHRvZ2dsZXMgY2Fu
RHJhdworICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihhZG9wdFB0cjxDQ0xheWVySW1wbD4o
MCkpOworICAgIEVYUEVDVF9GQUxTRShtX2hvc3RJbXBsLT5jYW5EcmF3KCkpOworICAgIEVYUEVD
VF9UUlVFKG1fb25DYW5EcmF3U3RhdGVDaGFuZ2VkQ2FsbGVkKTsKKyAgICBtX29uQ2FuRHJhd1N0
YXRlQ2hhbmdlZENhbGxlZCA9IGZhbHNlOworCisgICAgc2V0dXBTY3JvbGxBbmRDb250ZW50c0xh
eWVycyhJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+Y2Fu
RHJhdygpKTsKKyAgICBFWFBFQ1RfVFJVRShtX29uQ2FuRHJhd1N0YXRlQ2hhbmdlZENhbGxlZCk7
CisgICAgbV9vbkNhbkRyYXdTdGF0ZUNoYW5nZWRDYWxsZWQgPSBmYWxzZTsKKworICAgIC8vIFRv
Z2dsZSB0aGUgZGV2aWNlIHZpZXdwb3J0IHNpemUgdG8gbWFrZSBzdXJlIGl0IHRvZ2dsZXMgY2Fu
RHJhdy4KKyAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMDAsIDEwMCks
IEludFNpemUoMCwgMCkpOworICAgIEVYUEVDVF9GQUxTRShtX2hvc3RJbXBsLT5jYW5EcmF3KCkp
OworICAgIEVYUEVDVF9UUlVFKG1fb25DYW5EcmF3U3RhdGVDaGFuZ2VkQ2FsbGVkKTsKKyAgICBt
X29uQ2FuRHJhd1N0YXRlQ2hhbmdlZENhbGxlZCA9IGZhbHNlOworCisgICAgbV9ob3N0SW1wbC0+
c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSk7Cisg
ICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+Y2FuRHJhdygpKTsKKyAgICBFWFBFQ1RfVFJVRSht
X29uQ2FuRHJhd1N0YXRlQ2hhbmdlZENhbGxlZCk7CisgICAgbV9vbkNhbkRyYXdTdGF0ZUNoYW5n
ZWRDYWxsZWQgPSBmYWxzZTsKKworICAgIC8vIFRvZ2dsZSBjb250ZW50cyB0ZXh0dXJlcyBwdXJn
ZWQgdG8gbWFrZSBzdXJlIGl0IHRvZ2dsZXMgY2FuRHJhdworICAgIG1faG9zdEltcGwtPnJlbGVh
c2VDb250ZW50c1RleHR1cmVzKCk7CisgICAgRVhQRUNUX0ZBTFNFKG1faG9zdEltcGwtPmNhbkRy
YXcoKSk7CisgICAgRVhQRUNUX1RSVUUobV9vbkNhbkRyYXdTdGF0ZUNoYW5nZWRDYWxsZWQpOwor
ICAgIG1fb25DYW5EcmF3U3RhdGVDaGFuZ2VkQ2FsbGVkID0gZmFsc2U7CisKKyAgICBtX2hvc3RJ
bXBsLT5yZXNldENvbnRlbnRzVGV4dHVyZXNQdXJnZWQoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hv
c3RJbXBsLT5jYW5EcmF3KCkpOworICAgIEVYUEVDVF9UUlVFKG1fb25DYW5EcmF3U3RhdGVDaGFu
Z2VkQ2FsbGVkKTsKKyAgICBtX29uQ2FuRHJhd1N0YXRlQ2hhbmdlZENhbGxlZCA9IGZhbHNlOwor
fQorCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbERlbHRhTm9MYXllcnMp
CiB7CiAgICAgQVNTRVJUX0ZBTFNFKG1faG9zdEltcGwtPnJvb3RMYXllcigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LmNwcAppbmRleCA3ZGZiYmMwMGI5NTRkZjUyNDE5M2U2OTUxZjVkZTU0MjBjOGNi
N2YxLi4wOWU4OWM4N2Q0ZmM5OWQ0YWQ1OTg5ZWUwYTg5ODY1N2I2Y2YyOGYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QuY3BwCkBAIC0xMzYsNiArMTM2LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QsIFRlc3ROZXh0QWN0aW9uQmVnaW5zRnJhbWVJZk5lZWRlZCkKIFRFU1QoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0Rm9yY2VkUmVkcmF3RG9lc05vdFNldHNO
b3JtYWxSZWRyYXcpCiB7CiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAg
c3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKICAgICBzdGF0ZS5zZXROZWVkc0ZvcmNlZFJlZHJhdygp
OwogICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5yZWRyYXdQZW5kaW5nKCkpOwogICAgIEVYUEVDVF9U
UlVFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7CkBAIC0xNDYsNiArMTQ3LDcgQEAgVEVT
VChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGYWlsZWREcmF3U2V0c05lZWRzQ29t
bWl0QW5kRG9lc05vdERyYXdBZ2EKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBzdGF0ZTsK
ICAgICBzdGF0ZS5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHN0YXRlLnNldFZpc2libGUo
dHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKICAgICBzdGF0ZS5zZXROZWVkc1Jl
ZHJhdygpOwogICAgIEVYUEVDVF9UUlVFKHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7CiAgICAgRVhQ
RUNUX1RSVUUoc3RhdGUudnN5bmNDYWxsYmFja05lZWRlZCgpKTsKQEAgLTE3MSw2ICsxNzMsNyBA
QCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldE5lZWRzUmVkcmF3RHVy
aW5nRmFpbGVkRHJhd0RvZXNOb3RSZW1vdgogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lIHN0
YXRlOwogICAgIHN0YXRlLnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAgICAgc3RhdGUuc2V0Vmlz
aWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3KHRydWUpOwogICAgIHN0YXRlLnNldE5l
ZWRzUmVkcmF3KCk7CiAgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKICAg
ICBFWFBFQ1RfVFJVRShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOwpAQCAtMTk5LDYgKzIw
Miw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29tbWl0QWZ0ZXJG
YWlsZWREcmF3QWxsb3dzRHJhd0luU2FtZUZyYW1lCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUgc3RhdGU7CiAgICAgc3RhdGUuc2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzdGF0ZS5z
ZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAKICAgICAvLyBT
dGFydCBhIGNvbW1pdC4KICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCgpOwpAQCAtMjM5LDYgKzI0
Myw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29tbWl0QWZ0ZXJG
YWlsZWRBbmRTdWNjZXNzZnVsRHJhd0RvZXNOb3RBCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUgc3RhdGU7CiAgICAgc3RhdGUuc2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzdGF0ZS5z
ZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAKICAgICAvLyBT
dGFydCBhIGNvbW1pdC4KICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCgpOwpAQCAtMjkwLDYgKzI5
NSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RmFpbGVkRHJhd3NX
aWxsRXZlbnR1YWxseUZvcmNlQURyYXdBZnRlclRoCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUgc3RhdGU7CiAgICAgc3RhdGUuc2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzdGF0ZS5z
ZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAgICAgc3RhdGUu
c2V0TWF4aW11bU51bWJlck9mRmFpbGVkRHJhd3NCZWZvcmVEcmF3SXNGb3JjZWQoMSk7CiAKICAg
ICAvLyBTdGFydCBhIGNvbW1pdC4KQEAgLTMzMiw2ICszMzgsNyBAQCBURVNUKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZhaWxlZERyYXdJc1JldHJpZWROZXh0VlN5bmMpCiAgICAg
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgc3RhdGUuc2V0Q2FuQmVnaW5GcmFt
ZSh0cnVlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRy
YXcodHJ1ZSk7CiAKICAgICAvLyBTdGFydCBhIGRyYXcuCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRy
YXcoKTsKQEAgLTM2MSw2ICszNjgsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dCwgVGVzdERvZXN0RHJhd1R3aWNlSW5TYW1lRnJhbWUpCiB7CiAgICAgQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmUgc3RhdGU7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5z
ZXRDYW5EcmF3KHRydWUpOwogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KCk7CiAgICAgRVhQRUNU
X1RSVUUoc3RhdGUudnN5bmNDYWxsYmFja05lZWRlZCgpKTsKICAgICBzdGF0ZS5kaWRFbnRlclZT
eW5jKCk7CkBAIC00MTMsNiArNDIxLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRl
c3QsIFRlc3ROZXh0QWN0aW9uRHJhd3NPblZTeW5jKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtQ29tbWl0U3RhdGVzOyArK2kpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsg
aiA8IDI7ICsraikgewogICAgICAgICAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAgICAgICAg
ICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKICAgICAgICAgICAgIHN0YXRlLnNldENvbW1pdFN0
YXRlKGFsbENvbW1pdFN0YXRlc1tpXSk7CiAgICAgICAgICAgICBib29sIGZvcmNlZERyYXcgPSBq
OwogICAgICAgICAgICAgaWYgKCFmb3JjZWREcmF3KSB7CkBAIC01MjUsNiArNTM0LDI4IEBAIFRF
U1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q2FuUmVkcmF3V2l0aFdhaXRpbmdG
b3JGaXJzdERyYXdNYWtlc1Byb2dyCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiB9CiAKK1RFU1Qo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VnN5bmNDYWxsYmFja05lZWRlZE9uQ2Fu
RHJhd0FuZFJlc291cmNlVXBkYXRlcykKK3sKKyAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAg
c3RhdGUuc2V0Q29tbWl0U3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFU
RV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXKTsKKyAgICBzdGF0ZS5zZXRDYW5CZWdpbkZyYW1lKHRy
dWUpOworICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgIHN0YXRlLnNldE5lZWRz
UmVkcmF3KHRydWUpOworICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZh
bHNlKTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRyYXco
ZmFsc2UpOworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOwor
CisgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcodHJ1ZSk7CisgICAgRVhQ
RUNUX1RSVUUoc3RhdGUudnN5bmNDYWxsYmFja05lZWRlZCgpKTsKKworICAgIHN0YXRlLnNldFVw
ZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUu
dnN5bmNDYWxsYmFja05lZWRlZCgpKTsKKworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7Cisg
ICAgRVhQRUNUX1RSVUUoc3RhdGUudnN5bmNDYWxsYmFja05lZWRlZCgpKTsKK30KKwogVEVTVChD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X09uZVJvdW5k
T2ZVcGRhdGVzKQogewogICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKQEAgLTUzMiw2ICs1NjMsNyBA
QCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdf
T25lUm91bmRPZlVwZGF0ZXMpCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoZmFsc2UpOwogICAg
IHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKICAgICBzdGF0ZS5z
ZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAKICAgICAvLyBW
ZXJpZnkgd2UgYmVnaW4gdXBkYXRlLCBib3RoIGZvciB2c3luYyBhbmQgbm90IHZzeW5jLgogICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9N
T1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKQEAgLTU2MCw2ICs1OTIsNyBAQCBU
RVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfVHdv
Um91bmRzT2ZVcGRhdGVzKQogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNlKTsKICAgICBz
dGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0
VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3KHRydWUpOwogCiAgICAgLy8gVmVy
aWZ5IHRoZSB1cGRhdGUgYmVnaW5zLCBib3RoIGZvciB2c3luYyBhbmQgbm90IHZzeW5jLgogICAg
IHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKQEAgLTU5OSw2ICs2MzIsNyBAQCBURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfVHdvUm91bmRzT2ZVcGRh
dGVzKQogVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RWU3luY05lZWRlZFdo
ZW5VcGRhdGVzUGVuZGluZ0J1dEludmlzaWJsZSkKIHsKICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7
CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKICAgICBzdGF0ZS5zZXRDb21taXRTdGF0ZShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUyk7
CiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoZmFsc2UpOwogICAgIHN0YXRlLnNldFZpc2libGUo
ZmFsc2UpOwpAQCAtNjE2LDYgKzY1MCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LCBUZXN0VXBkYXRlc19XaXRoUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0YXRl
LnNldE5lZWRzUmVkcmF3KHRydWUpOwogICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQ
ZW5kaW5nKGZhbHNlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNl
dENhbkRyYXcodHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwog
CiAgICAgLy8gQmVnaW4gYW4gdXBkYXRlLgpAQCAtNjYzLDYgKzY5OCw3IEBAIFRFU1QoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0TmVlZHNDb21taXRJc05vdExvc3QpCiAgICAg
c3RhdGUuc2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0
cnVlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRyYXco
dHJ1ZSk7CiAKICAgICAvLyBCZWdpbiB0aGUgZnJhbWUuCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7
CkBAIC03MDUsNiArNzQxLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRl
c3RGdWxsQ3ljbGUpCiAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOwogICAgIHN0YXRlLnNldENhbkJl
Z2luRnJhbWUodHJ1ZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5z
ZXRDYW5EcmF3KHRydWUpOwogCiAgICAgLy8gU3RhcnQgY2xlYW4gYW5kIHNldCBjb21taXQuCiAg
ICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CkBAIC03NTMsNiArNzkwLDcgQEAgVEVTVChD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGVXaXRoQ29tbWl0UmVxdWVz
dEluYmV0d2VlbikKICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgc3RhdGUuc2V0Q2FuQmVn
aW5GcmFtZSh0cnVlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNl
dENhbkRyYXcodHJ1ZSk7CiAKICAgICAvLyBTdGFydCBjbGVhbiBhbmQgc2V0IGNvbW1pdC4KICAg
ICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKQEAgLTgxMiw2ICs4NTAsNyBAQCBURVNUKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdvZXNJbnZpc2libGVCZWZvcmVCZWdpbkZy
YW1lQ29tcGxldGVzKQogICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICBzdGF0ZS5zZXRDYW5C
ZWdpbkZyYW1lKHRydWUpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUu
c2V0Q2FuRHJhdyh0cnVlKTsKIAogICAgIC8vIFN0YXJ0IGNsZWFuIGFuZCBzZXQgY29tbWl0Lgog
ICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwpAQCAtODUwLDYgKzg4OSw3IEBAIFRFU1Qo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29udGV4dExvc3RXaGVuQ29tcGxldGVs
eUlkbGUpCiAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOwogICAgIHN0YXRlLnNldENhbkJlZ2luRnJh
bWUodHJ1ZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRDYW5E
cmF3KHRydWUpOwogCiAgICAgc3RhdGUuZGlkTG9zZUNvbnRleHQoKTsKIApAQCAtODcyLDYgKzkx
Miw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29udGV4dExvc3RX
aGVuSWRsZUFuZENvbW1pdFJlcXVlc3RlZFdoaWxlCiAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOwog
ICAgIHN0YXRlLnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0
cnVlKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3KHRydWUpOwogCiAgICAgc3RhdGUuZGlkTG9zZUNv
bnRleHQoKTsKIApAQCAtOTA4LDYgKzk0OSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LCBUZXN0Q29udGV4dExvc3RXaGlsZUNvbW1pdEluUHJvZ3Jlc3MpCiAgICAgU3RhdGVN
YWNoaW5lIHN0YXRlOwogICAgIHN0YXRlLnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAgICAgc3Rh
dGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3KHRydWUpOwogCiAgICAg
Ly8gR2V0IGEgY29tbWl0IGluIGZsaWdodC4KICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVl
KTsKQEAgLTk0OSw2ICs5OTEsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwg
VGVzdENvbnRleHRMb3N0V2hpbGVDb21taXRJblByb2dyZXNzQW5kQW5vdGhlcgogICAgIFN0YXRl
TWFjaGluZSBzdGF0ZTsKICAgICBzdGF0ZS5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHN0
YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKIAogICAg
IC8vIEdldCBhIGNvbW1pdCBpbiBmbGlnaHQuCiAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1
ZSk7CkBAIC05OTksNiArMTA0Miw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0RmluaXNoQWxsUmVuZGVyaW5nV2hpbGVDb250ZXh0TG9zdCkKIHsKICAgICBTdGF0ZU1h
Y2hpbmUgc3RhdGU7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRD
YW5EcmF3KHRydWUpOwogCiAgICAgLy8gQ2F1c2UgYSBsb3N0IGNvbnRleHQgbG9zdC4KICAgICBz
dGF0ZS5kaWRMb3NlQ29udGV4dCgpOwpAQCAtMTAzNyw2ICsxMDgxLDcgQEAgVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RCZWdpbkZyYW1lV2hlbkNhbkJlZ2luRnJhbWVGYWxz
ZUFuZEZvcmNlQ28KIHsKICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgc3RhdGUuc2V0Vmlz
aWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3KHRydWUpOwogICAgIHN0YXRlLnNldE5l
ZWRzQ29tbWl0KHRydWUpOwogICAgIHN0YXRlLnNldE5lZWRzRm9yY2VkQ29tbWl0KHRydWUpOwog
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1F
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwpAQCAtMTA2OSw2ICsxMTE0LDcgQEAgVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RCZWdpbkZyYW1lV2hlbkNvbnRleHRMb3N0KQogICAg
IFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICBzdGF0ZS5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwog
ICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsK
ICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKICAgICBzdGF0ZS5zZXROZWVkc0ZvcmNl
ZENvbW1pdCh0cnVlKTsKICAgICBzdGF0ZS5kaWRMb3NlQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCmluZGV4IGMyNzM5ZThi
NjQzMDI3ODAxOTBiZjk3MGRhODc5ZDFiNDNjM2U3MzUuLjI0ZDg3MzFiOTg1OTZjYzNkNWRiZWVh
NjYxNGVlMzQ1ODRhZTk5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDU2NoZWR1bGVyVGVzdC5jcHAKQEAgLTQzLDE0ICs0MywxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZXNldCgpCiAgICAgewogICAgICAgICBtX2FjdGlvbnMuY2xlYXIoKTsKLSAgICAgICAgbV9j
YW5EcmF3ID0gdHJ1ZTsKICAgICAgICAgbV9kcmF3V2lsbEhhcHBlbiA9IHRydWU7CiAgICAgICAg
IG1fc3dhcFdpbGxIYXBwZW5JZkRyYXdIYXBwZW5zID0gdHJ1ZTsKICAgICAgICAgbV9udW1EcmF3
cyA9IDA7CiAgICAgfQogCi0gICAgdm9pZCBzZXRDYW5EcmF3KGJvb2wgYikgeyBtX2NhbkRyYXcg
PSBiOyB9Ci0KICAgICBpbnQgbnVtRHJhd3MoKSBjb25zdCB7IHJldHVybiBtX251bURyYXdzOyB9
CiAgICAgaW50IG51bUFjdGlvbnMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KG1f
YWN0aW9ucy5zaXplKCkpOyB9CiAgICAgY29uc3QgY2hhciogYWN0aW9uKGludCBpKSBjb25zdCB7
IHJldHVybiBtX2FjdGlvbnNbaV07IH0KQEAgLTYzLDcgKzYwLDYgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIGNhbkRyYXcoKSBPVkVS
UklERSB7IHJldHVybiBtX2NhbkRyYXc7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0
aW9uQmVnaW5GcmFtZSgpIE9WRVJSSURFIHsgbV9hY3Rpb25zLnB1c2hfYmFjaygic2NoZWR1bGVk
QWN0aW9uQmVnaW5GcmFtZSIpOyB9CiAgICAgdmlydHVhbCBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdB
bmRTd2FwUmVzdWx0IHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSgpIE9WRVJS
SURFCiAgICAgewpAQCAtODgsNyArODQsNiBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBi
b29sIG1faGFzTW9yZVJlc291cmNlVXBkYXRlczsKLSAgICBib29sIG1fY2FuRHJhdzsKICAgICBi
b29sIG1fZHJhd1dpbGxIYXBwZW47CiAgICAgYm9vbCBtX3N3YXBXaWxsSGFwcGVuSWZEcmF3SGFw
cGVuczsKICAgICBpbnQgbV9udW1EcmF3czsKQEAgLTEwMiw2ICs5Nyw3IEBAIFRFU1QoQ0NTY2hl
ZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0KQogICAgIE93blB0cjxDQ1NjaGVkdWxlcj4gc2NoZWR1
bGVyID0gQ0NTY2hlZHVsZXI6OmNyZWF0ZSgmY2xpZW50LCBhZG9wdFB0cihuZXcgQ0NGcmFtZVJh
dGVDb250cm9sbGVyKHRpbWVTb3VyY2UpKSk7CiAgICAgc2NoZWR1bGVyLT5zZXRDYW5CZWdpbkZy
YW1lKHRydWUpOwogICAgIHNjaGVkdWxlci0+c2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzY2hlZHVs
ZXItPnNldENhbkRyYXcodHJ1ZSk7CiAKICAgICAvLyBTZXROZWVkc0NvbW1pdCBzaG91bGQgYmVn
aW4gdGhlIGZyYW1lLgogICAgIHNjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKQEAgLTEzNiw2
ICsxMzIsNyBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdEFmdGVyQmVnaW5G
cmFtZSkKICAgICBPd25QdHI8Q0NTY2hlZHVsZXI+IHNjaGVkdWxlciA9IENDU2NoZWR1bGVyOjpj
cmVhdGUoJmNsaWVudCwgYWRvcHRQdHIobmV3IENDRnJhbWVSYXRlQ29udHJvbGxlcih0aW1lU291
cmNlKSkpOwogICAgIHNjaGVkdWxlci0+c2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzY2hl
ZHVsZXItPnNldFZpc2libGUodHJ1ZSk7CisgICAgc2NoZWR1bGVyLT5zZXRDYW5EcmF3KHRydWUp
OwogCiAgICAgLy8gU2V0TmVkc0NvbW1pdCBzaG91bGQgYmVnaW4gdGhlIGZyYW1lLgogICAgIHNj
aGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKQEAgLTE2OSw2ICsxNjYsNyBAQCBURVNUKENDU2No
ZWR1bGVyVGVzdCwgVGV4dHVyZUFjcXVpc2l0aW9uQ29sbGlzaW9uKQogICAgIE93blB0cjxDQ1Nj
aGVkdWxlcj4gc2NoZWR1bGVyID0gQ0NTY2hlZHVsZXI6OmNyZWF0ZSgmY2xpZW50LCBhZG9wdFB0
cihuZXcgQ0NGcmFtZVJhdGVDb250cm9sbGVyKHRpbWVTb3VyY2UpKSk7CiAgICAgc2NoZWR1bGVy
LT5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHNjaGVkdWxlci0+c2V0VmlzaWJsZSh0cnVl
KTsKKyAgICBzY2hlZHVsZXItPnNldENhbkRyYXcodHJ1ZSk7CiAKICAgICBzY2hlZHVsZXItPnNl
dE5lZWRzQ29tbWl0KCk7CiAgICAgc2NoZWR1bGVyLT5zZXRNYWluVGhyZWFkTmVlZHNMYXllclRl
eHR1cmVzKCk7CkBAIC0yMDcsNiArMjA1LDcgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFZpc2li
aWxpdHlTd2l0Y2hXaXRoVGV4dHVyZUFjcXVpc2l0aW9uKQogICAgIE93blB0cjxDQ1NjaGVkdWxl
cj4gc2NoZWR1bGVyID0gQ0NTY2hlZHVsZXI6OmNyZWF0ZSgmY2xpZW50LCBhZG9wdFB0cihuZXcg
Q0NGcmFtZVJhdGVDb250cm9sbGVyKHRpbWVTb3VyY2UpKSk7CiAgICAgc2NoZWR1bGVyLT5zZXRD
YW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHNjaGVkdWxlci0+c2V0VmlzaWJsZSh0cnVlKTsKKyAg
ICBzY2hlZHVsZXItPnNldENhbkRyYXcodHJ1ZSk7CiAKICAgICBzY2hlZHVsZXItPnNldE5lZWRz
Q29tbWl0KCk7CiAgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUoZmFsc2UpOwpAQCAt
MjcwLDYgKzI2OSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0UmVkcmF3SW5zaWRl
RHJhdykKICAgICBjbGllbnQuc2V0U2NoZWR1bGVyKHNjaGVkdWxlci5nZXQoKSk7CiAgICAgc2No
ZWR1bGVyLT5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHNjaGVkdWxlci0+c2V0VmlzaWJs
ZSh0cnVlKTsKKyAgICBzY2hlZHVsZXItPnNldENhbkRyYXcodHJ1ZSk7CiAKICAgICBzY2hlZHVs
ZXItPnNldE5lZWRzUmVkcmF3KCk7CiAgICAgRVhQRUNUX1RSVUUoc2NoZWR1bGVyLT5yZWRyYXdQ
ZW5kaW5nKCkpOwpAQCAtMjk2LDYgKzI5Niw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1
ZXN0UmVkcmF3SW5zaWRlRmFpbGVkRHJhdykKICAgICBjbGllbnQuc2V0U2NoZWR1bGVyKHNjaGVk
dWxlci5nZXQoKSk7CiAgICAgc2NoZWR1bGVyLT5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAg
IHNjaGVkdWxlci0+c2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzY2hlZHVsZXItPnNldENhbkRyYXco
dHJ1ZSk7CiAgICAgY2xpZW50LnNldERyYXdXaWxsSGFwcGVuKGZhbHNlKTsKIAogICAgIHNjaGVk
dWxlci0+c2V0TmVlZHNSZWRyYXcoKTsKQEAgLTM2OCw2ICszNjksNyBAQCBURVNUKENDU2NoZWR1
bGVyVGVzdCwgUmVxdWVzdENvbW1pdEluc2lkZURyYXcpCiAgICAgY2xpZW50LnNldFNjaGVkdWxl
cihzY2hlZHVsZXIuZ2V0KCkpOwogICAgIHNjaGVkdWxlci0+c2V0Q2FuQmVnaW5GcmFtZSh0cnVl
KTsKICAgICBzY2hlZHVsZXItPnNldFZpc2libGUodHJ1ZSk7CisgICAgc2NoZWR1bGVyLT5zZXRD
YW5EcmF3KHRydWUpOwogCiAgICAgc2NoZWR1bGVyLT5zZXROZWVkc1JlZHJhdygpOwogICAgIEVY
UEVDVF9UUlVFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygpKTsKQEAgLTM5NSw2ICszOTcsNyBA
QCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdEluc2lkZUZhaWxlZERyYXcpCiAg
ICAgY2xpZW50LnNldFNjaGVkdWxlcihzY2hlZHVsZXIuZ2V0KCkpOwogICAgIHNjaGVkdWxlci0+
c2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzY2hlZHVsZXItPnNldFZpc2libGUodHJ1ZSk7
CisgICAgc2NoZWR1bGVyLT5zZXRDYW5EcmF3KHRydWUpOwogICAgIGNsaWVudC5zZXREcmF3V2ls
bEhhcHBlbihmYWxzZSk7CiAKICAgICBzY2hlZHVsZXItPnNldE5lZWRzUmVkcmF3KCk7CkBAIC00
MzcsNiArNDQwLDcgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIE5vQmVnaW5GcmFtZVdoZW5EcmF3
RmFpbHMpCiAgICAgY2xpZW50LnNldFNjaGVkdWxlcihzY2hlZHVsZXIuZ2V0KCkpOwogICAgIHNj
aGVkdWxlci0+c2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzY2hlZHVsZXItPnNldFZpc2li
bGUodHJ1ZSk7CisgICAgc2NoZWR1bGVyLT5zZXRDYW5EcmF3KHRydWUpOwogCiAgICAgRVhQRUNU
X0VRKDAsIGNvbnRyb2xsZXJQdHItPm51bUZyYW1lc1BlbmRpbmcoKSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162103</attachid>
            <date>2012-09-04 14:56:43 -0700</date>
            <delta_ts>2012-09-04 16:10:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95399-20120904145626.patch</filename>
            <type>text/plain</type>
            <size>36897</size>
            <attacher name="Brian Anderson">brianderson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhkYzY2NGZlNzhlY2Fh
NmViZDE5YmMyNWQzZjEzODdhYTVkOGY2MS4uMzM3MTYyMTgxZmRlY2E3MzgxOGRhMTM2Y2Q0MmZj
Njc4MDQ1YWM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA4LTI5ICBCcmlh
biBBbmRlcnNvbiAgPGJyaWFuZGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIFByZXZlbnQgY29tcG9zaXRvciB0aWNraW5nIGlmIGl0IGNhbid0IGRyYXcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mzk5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFja2dyb3VuZCBleHRlbnNp
b25zIGhhZCBhbiBhbHdheXMgdGlja2luZyBjb21wb3NpdG9yIGV2ZW4gdGhvdWdoCisgICAgICAg
IHRoZXkgY291bGRuJ3QgZHJhdy4gVGhpcyBwYXRjaCBkaXNhYmxlcyB0aGUgdGlja3Mgd2hlbiBj
YW5EcmF3IGlzIGZhbHNlCisgICAgICAgIGFuZCBhZGRzIGEgbm90aWZpY2F0aW9uIG1lY2hhbmlz
bSBmb3Igd2hlbiBjYW5EcmF3IGNoYW5nZXMgc3RhdGVzIHNvCisgICAgICAgIHdlIGNhbiByZWNv
dmVyIHByb3Blcmx5LgorCisgICAgICAgIFRlc3RzIHVwZGF0ZWQgZm9yIG5ldyBpbnRlcmZhY2Vz
LgorICAgICAgICBSZWdyZXNzaW9uIHRlc3QgYWRkZWQgdG8gbWFrZSBzdXJlIHRpY2tpbmcgc3Rv
cHMgd2hlbiBjYW5EcmF3IGlzIGZhbHNlLgorICAgICAgICBub3RpZnlJZkNhbkRyYXdDaGFuZ2Vk
IHRlc3QgYWRkZWQgdG8gbWFrZSBzdXJlIG5vdGlmaWNhdGlvbnMgYXJlIHNlbnQKKyAgICAgICAg
Zm9yIGFueSBjaGFuZ2VzIHRoYXQgbWlnaHQgYWZmZWN0IGNhbkRyYXcuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6bm90aWZ5SWZDYW5EcmF3
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdEltcGw6OnJlbGVhc2VDb250ZW50c1RleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFJvb3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjppbml0aWFsaXplUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Vmlld3BvcnRTaXplKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAg
IChDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdEltcGw6OnJlc2V0Q29udGVudHNUZXh0dXJlc1B1cmdlZCk6CisgICAgICAgIChDQ0xh
eWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6c2V0Q2Fu
RHJhdyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVy
Ojpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaDoKKyAgICAgICAgKENDU2NoZWR1bGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dG9TdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6dnN5bmNDYWxsYmFja05lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaDoKKyAgICAgICAgKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5OjpvbkNhbkRyYXdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgor
CiAyMDEyLTA5LTAzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI3NDI3LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBmY2RkMjhiY2U4NjViNWU2MDFkZjUxOGI1
ZTNjNjgxOTczNDU3YjFjLi43ODVmNDFhNWNjZTA1YjhhMDZiZWVkYjdjMTgwZDMwYTE2ODU4OTNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMTI3LDYgKzEy
Nyw3IEBAIENDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NM
YXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MsIENDCiAgICAgLCBtX3NldHRpbmdzKHNldHRpbmdz
KQogICAgICwgbV9kZXZpY2VTY2FsZUZhY3RvcigxKQogICAgICwgbV92aXNpYmxlKHRydWUpCisg
ICAgLCBtX3ByZXZpb3VzQ2FuRHJhdyhmYWxzZSkKICAgICAsIG1fY29udGVudHNUZXh0dXJlc1B1
cmdlZChmYWxzZSkKICAgICAsIG1fbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjpkZWZhdWx0TWVtb3J5QWxsb2NhdGlvbkxpbWl0KCkpCiAgICAg
LCBtX3BhZ2VTY2FsZSgxKQpAQCAtMTY4LDYgKzE2OSwxMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dEltcGw6OmNvbW1pdENvbXBsZXRlKCkKIAogYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYW5E
cmF3KCkKIHsKKyAgICAvLyBOb3RlOiBJZiB5b3UgYXJlIGNoYW5naW5nIHRoaXMgZnVuY3Rpb24g
b3IgYW55IG90aGVyIGZ1bmN0aW9uIHRoYXQgbWlnaHQKKyAgICAvLyBhZmZlY3QgdGhlIHJlc3Vs
dCBvZiBjYW5EcmF3LCBtYWtlIHN1cmUgdG8gY2FsbCBtX2NsaWVudC0+b25DYW5EcmF3U3RhdGVD
aGFuZ2VkCisgICAgLy8gaW4gdGhlIHByb3BlciBwbGFjZXMgYW5kIHVwZGF0ZSB0aGUgbm90aWZ5
SWZDYW5EcmF3Q2hhbmdlZCB0ZXN0LgorCiAgICAgaWYgKCFtX3Jvb3RMYXllckltcGwpIHsKICAg
ICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoImNjIiwgIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNh
bkRyYXcgbm8gcm9vdCBsYXllciIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MzAsNiAr
NTM1LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpyZWxlYXNlQ29udGVudHNUZXh0dXJl
cygpCiAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVPd25lZFJlc291cmNlcyhDQ1JlbmRl
cmVyOjpDb250ZW50UG9vbCk7CiAgICAgbV9jb250ZW50c1RleHR1cmVzUHVyZ2VkID0gdHJ1ZTsK
ICAgICBtX2NsaWVudC0+c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKTsKKyAgICBtX2NsaWVu
dC0+b25DYW5EcmF3U3RhdGVDaGFuZ2VkKGNhbkRyYXcoKSk7CiB9CiAKIHZvaWQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6c2V0TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90IGJ5dGVzKQpA
QCAtNjY5LDYgKzY3NSw4IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Um9vdExheWVy
KFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGxheWVyKQogICAgICAgICBtX2N1cnJlbnRseVNjcm9s
bGluZ0xheWVySW1wbCA9IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6ZmluZExheWVySW5TdWJ0cmVl
KG1fcm9vdExheWVySW1wbC5nZXQoKSwgbV9zY3JvbGxpbmdMYXllcklkRnJvbVByZXZpb3VzVHJl
ZSk7CiAKICAgICBtX3Njcm9sbGluZ0xheWVySWRGcm9tUHJldmlvdXNUcmVlID0gLTE7CisKKyAg
ICBtX2NsaWVudC0+b25DYW5EcmF3U3RhdGVDaGFuZ2VkKGNhbkRyYXcoKSk7CiB9CiAKIFBhc3NP
d25QdHI8Q0NMYXllckltcGw+IENDTGF5ZXJUcmVlSG9zdEltcGw6OmRldGFjaExheWVyVHJlZSgp
CkBAIC03MzEsOSArNzM5LDE3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6
ZVJlbmRlcmVyKFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRlCiAgICAgaWYgKCFt
X3Zpc2libGUgJiYgbV9yZW5kZXJlcikKICAgICAgICAgIG1fcmVuZGVyZXItPnNldFZpc2libGUo
bV92aXNpYmxlKTsKIAorICAgIG1fY2xpZW50LT5vbkNhbkRyYXdTdGF0ZUNoYW5nZWQoY2FuRHJh
dygpKTsKKwogICAgIHJldHVybiBtX3JlbmRlcmVyOwogfQogCit2b2lkIENDTGF5ZXJUcmVlSG9z
dEltcGw6OnJlc2V0Q29udGVudHNUZXh0dXJlc1B1cmdlZCgpCit7CisgICAgbV9jb250ZW50c1Rl
eHR1cmVzUHVyZ2VkID0gZmFsc2U7CisgICAgbV9jbGllbnQtPm9uQ2FuRHJhd1N0YXRlQ2hhbmdl
ZChjYW5EcmF3KCkpOworfQorCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpZXdwb3J0
U2l6ZShjb25zdCBJbnRTaXplJiBsYXlvdXRWaWV3cG9ydFNpemUsIGNvbnN0IEludFNpemUmIGRl
dmljZVZpZXdwb3J0U2l6ZSkKIHsKICAgICBpZiAobGF5b3V0Vmlld3BvcnRTaXplID09IG1fbGF5
b3V0Vmlld3BvcnRTaXplICYmIGRldmljZVZpZXdwb3J0U2l6ZSA9PSBtX2RldmljZVZpZXdwb3J0
U2l6ZSkKQEAgLTc0Niw2ICs3NjIsOCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZp
ZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiBsYXlvdXRWaWV3cG9ydFNpemUsIGNvbgogCiAgICAg
aWYgKG1fcmVuZGVyZXIpCiAgICAgICAgIG1fcmVuZGVyZXItPnZpZXdwb3J0Q2hhbmdlZCgpOwor
CisgICAgbV9jbGllbnQtPm9uQ2FuRHJhd1N0YXRlQ2hhbmdlZChjYW5EcmF3KCkpOwogfQogCiBz
dGF0aWMgdm9pZCBhZGp1c3RTY3JvbGxzRm9yUGFnZVNjYWxlQ2hhbmdlKENDTGF5ZXJJbXBsKiBs
YXllckltcGwsIGZsb2F0IHBhZ2VTY2FsZUNoYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaAppbmRleCBiM2QwN2FjMjljMGE4MDc4ZjAxN2M4ZTE4OTMwYmEwMDcyOTA2Mzg0
Li5jYmFhZWQ1OWM0YzA0YTc4M2M5ZWY5NDU3MGJlY2IxY2Y4MWViMjFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHRPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgb25WU3luY1BhcmFtZXRlcnNDaGFuZ2VkKGRvdWJsZSBtb25vdG9uaWNUaW1lYmFz
ZSwgZG91YmxlIGludGVydmFsSW5TZWNvbmRzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9uQ2Fu
RHJhd1N0YXRlQ2hhbmdlZChib29sIGNhbkRyYXcpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRz
Q29tbWl0T25JbXBsVGhyZWFkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9u
RXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVu
dHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSkgPSAwOwpAQCAtMTYwLDcgKzE2MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNvdXJjZUZyYW1lTnVtYmVyKGludCBmcmFtZU51bWJlcikg
eyBtX3NvdXJjZUZyYW1lTnVtYmVyID0gZnJhbWVOdW1iZXI7IH0KIAogICAgIGJvb2wgY29udGVu
dHNUZXh0dXJlc1B1cmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNUZXh0dXJlc1B1cmdl
ZDsgfQotICAgIHZvaWQgcmVzZXRDb250ZW50c1RleHR1cmVzUHVyZ2VkKCkgeyBtX2NvbnRlbnRz
VGV4dHVyZXNQdXJnZWQgPSBmYWxzZTsgfQorICAgIHZvaWQgcmVzZXRDb250ZW50c1RleHR1cmVz
UHVyZ2VkKCk7CiAgICAgc2l6ZV90IG1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9tZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlczsgfQogCiAgICAgdm9pZCBzZXRW
aWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgbGF5b3V0Vmlld3BvcnRTaXplLCBjb25zdCBJbnRT
aXplJiBkZXZpY2VWaWV3cG9ydFNpemUpOwpAQCAtMjgyLDYgKzI4Myw3IEBAIHByaXZhdGU6CiAg
ICAgSW50U2l6ZSBtX2RldmljZVZpZXdwb3J0U2l6ZTsKICAgICBmbG9hdCBtX2RldmljZVNjYWxl
RmFjdG9yOwogICAgIGJvb2wgbV92aXNpYmxlOworICAgIGJvb2wgbV9wcmV2aW91c0NhbkRyYXc7
CiAgICAgYm9vbCBtX2NvbnRlbnRzVGV4dHVyZXNQdXJnZWQ7CiAgICAgc2l6ZV90IG1fbWVtb3J5
QWxsb2NhdGlvbkxpbWl0Qnl0ZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAppbmRleCA5OTlh
MDhlYzlkMDUxNDgxNzRkMTNjMGZhNTI4OGJlZjFiMmRiZjYzLi4zN2EzYWNkNjgzNzNkNjY0OTky
NzU5Nzg0NzY0MmU2N2UzYWRkYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCkBAIC0zNCw2
ICszNCw3IEBAIENDU2NoZWR1bGVyOjpDQ1NjaGVkdWxlcihDQ1NjaGVkdWxlckNsaWVudCogY2xp
ZW50LCBQYXNzT3duUHRyPENDRnJhbWVSYXRlQ29udHJvCiAgICAgOiBtX2NsaWVudChjbGllbnQp
CiAgICAgLCBtX2ZyYW1lUmF0ZUNvbnRyb2xsZXIoZnJhbWVSYXRlQ29udHJvbGxlcikKICAgICAs
IG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpCisgICAgLCBtX2luc2lkZVByb2Nl
c3NTY2hlZHVsZWRBY3Rpb25zKGZhbHNlKQogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAg
bV9mcmFtZVJhdGVDb250cm9sbGVyLT5zZXRDbGllbnQodGhpcyk7CkBAIC01Nyw2ICs1OCwxMiBA
QCB2b2lkIENDU2NoZWR1bGVyOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAgICBwcm9jZXNz
U2NoZWR1bGVkQWN0aW9ucygpOwogfQogCit2b2lkIENDU2NoZWR1bGVyOjpzZXRDYW5EcmF3KGJv
b2wgY2FuRHJhdykKK3sKKyAgICBtX3N0YXRlTWFjaGluZS5zZXRDYW5EcmF3KGNhbkRyYXcpOwor
ICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7Cit9CisKIHZvaWQgQ0NTY2hlZHVsZXI6OnNl
dE5lZWRzQ29tbWl0KCkKIHsKICAgICBtX3N0YXRlTWFjaGluZS5zZXROZWVkc0NvbW1pdCgpOwpA
QCAtMTQ1LDI1ICsxNTIsMTYgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6dnN5bmNUaWNrKCkKICAgICBt
X3N0YXRlTWFjaGluZS5kaWRMZWF2ZVZTeW5jKCk7CiB9CiAKLUNDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXI6Om5leHRBY3Rpb24oKQotewotICAgIG1fc3RhdGVNYWNo
aW5lLnNldENhbkRyYXcobV9jbGllbnQtPmNhbkRyYXcoKSk7Ci0gICAgcmV0dXJuIG1fc3RhdGVN
YWNoaW5lLm5leHRBY3Rpb24oKTsKLX0KLQogdm9pZCBDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVk
dWxlZEFjdGlvbnMoKQogewotICAgIC8vIEVhcmx5IG91dCBzbyB3ZSBkb24ndCBzcGFtIFRSQUNF
X0VWRU5UUyB3aXRoIHVzZWxlc3MgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMuCi0gICAgaWYgKG5l
eHRBY3Rpb24oKSA9PSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUpIHsKLSAg
ICAgICAgbV9mcmFtZVJhdGVDb250cm9sbGVyLT5zZXRBY3RpdmUobV9zdGF0ZU1hY2hpbmUudnN5
bmNDYWxsYmFja05lZWRlZCgpKTsKKyAgICAvLyBBdm9pZCBuZXN0ZWQgY2FsbHMgdG8gdGhpcyBm
dW5jdGlvbi4gVGhlIHRvcC1sZXZlbCBjYWxsIG9mIHRoaXMKKyAgICAvLyBmdW5jdGlvbiB3aWxs
IGF1dG9tYXRpY2FsbHkgcHJvY2VzcyB0aGUgbmV4dCBhY3Rpb24uCisgICAgaWYgKG1faW5zaWRl
UHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMpCiAgICAgICAgIHJldHVybjsKLSAgICB9CisgICAgbV9p
bnNpZGVQcm9jZXNzU2NoZWR1bGVkQWN0aW9ucyA9IHRydWU7CiAKLSAgICAvLyBUaGlzIGZ1bmN0
aW9uIGNhbiByZS1lbnRlciBpdHNlbGYuIEZvciBleGFtcGxlLCBkcmF3IG1heSBjYWxsCi0gICAg
Ly8gc2V0TmVlZHNDb21taXQuIFByb2NlZWVkIHdpdGggY2F1dGlvbi4KLSAgICBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QWN0aW9uIGFjdGlvbjsKLSAgICBkbyB7Ci0gICAgICAgIGFjdGlvbiA9
IG5leHRBY3Rpb24oKTsKKyAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIGFjdGlv
biA9IG1fc3RhdGVNYWNoaW5lLm5leHRBY3Rpb24oKTsKKyAgICB3aGlsZSAoYWN0aW9uICE9IEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSkgewogICAgICAgICBtX3N0YXRlTWFj
aGluZS51cGRhdGVTdGF0ZShhY3Rpb24pOwogICAgICAgICBUUkFDRV9FVkVOVDEoImNjIiwgIkND
U2NoZWR1bGVyOjpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpIiwgImFjdGlvbiIsIGFjdGlvbik7
CiAKQEAgLTIwMiwxMCArMjAwLDE0IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVs
ZWRBY3Rpb25zKCkKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25BY3F1aXJl
TGF5ZXJUZXh0dXJlc0Zvck1haW5UaHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9Ci0gICAgfSB3aGlsZSAoYWN0aW9uICE9IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fTk9ORSk7CisKKyAgICAgICAgYWN0aW9uID0gbV9zdGF0ZU1hY2hpbmUubmV4dEFjdGlvbigp
OworICAgIH0KIAogICAgIC8vIEFjdGl2YXRlIG9yIGRlYWN0aXZhdGUgdGhlIGZyYW1lIHJhdGUg
Y29udHJvbGxlci4KICAgICBtX2ZyYW1lUmF0ZUNvbnRyb2xsZXItPnNldEFjdGl2ZShtX3N0YXRl
TWFjaGluZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOworCisgICAgbV9pbnNpZGVQcm9jZXNzU2No
ZWR1bGVkQWN0aW9ucyA9IGZhbHNlOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAppbmRleCA2
MzY2NGJiNTk4NTg1N2IzMDY0ZjA4Y2Q1ZTc2MzdjMzExZjk0ODk5Li5mYmViZjYwMTg5ZDA5Njg4
ZTM4YmVlYTJmYmI1YTgxZTg2N2U2MDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKQEAgLTUyLDcg
KzUyLDYgQEAgc3RydWN0IENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgewogCiBj
bGFzcyBDQ1NjaGVkdWxlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBib29sIGNhbkRy
YXcoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25z
dCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpID0g
MDsKQEAgLTgwLDYgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FuQmVnaW5GcmFtZShi
b29sKTsKIAogICAgIHZvaWQgc2V0VmlzaWJsZShib29sKTsKKyAgICB2b2lkIHNldENhbkRyYXco
Ym9vbCk7CiAKICAgICB2b2lkIHNldE5lZWRzQ29tbWl0KCk7CiAKQEAgLTExMywxMyArMTEzLDEz
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ0NTY2hlZHVsZXIoQ0NTY2hlZHVsZXJDbGllbnQq
LCBQYXNzT3duUHRyPENDRnJhbWVSYXRlQ29udHJvbGxlcj4pOwogCi0gICAgQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFjdGlvbiBuZXh0QWN0aW9uKCk7CiAgICAgdm9pZCBwcm9jZXNzU2NoZWR1
bGVkQWN0aW9ucygpOwogCiAgICAgQ0NTY2hlZHVsZXJDbGllbnQqIG1fY2xpZW50OwogICAgIE93
blB0cjxDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXI+IG1fZnJhbWVSYXRlQ29udHJvbGxlcjsKICAgICBD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZSBtX3N0YXRlTWFjaGluZTsKICAgICBib29sIG1fdXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmc7CisgICAgYm9vbCBtX2luc2lkZVByb2Nlc3NTY2hlZHVsZWRB
Y3Rpb25zOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUuY3BwCmluZGV4IDQxNTE1NmFjYjVlOTU0N2VkMGEwODNlZjU1ZTM1NTFlMThhNGU4NTkuLjk1
MjY1OTA2NDQzYWNjZTVjYTFmZWRjOWUxYWQ2ZGFhZGU2ODM0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKQEAgLTI1LDYgKzI1LDggQEAKICNpbmNs
dWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgiCisj
aW5jbHVkZSAiVGV4dFN0cmVhbS5oIgorCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDQs
MTMgKzQ2LDM4IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZSgpCiAgICAgLCBtX2luc2lkZVZTeW5jKGZhbHNlKQogICAgICwgbV92aXNpYmxlKGZhbHNl
KQogICAgICwgbV9jYW5CZWdpbkZyYW1lKGZhbHNlKQotICAgICwgbV9jYW5EcmF3KHRydWUpCisg
ICAgLCBtX2NhbkRyYXcoZmFsc2UpCiAgICAgLCBtX2RyYXdJZlBvc3NpYmxlRmFpbGVkKGZhbHNl
KQogICAgICwgbV90ZXh0dXJlU3RhdGUoTEFZRVJfVEVYVFVSRV9TVEFURV9VTkxPQ0tFRCkKICAg
ICAsIG1fY29udGV4dFN0YXRlKENPTlRFWFRfQUNUSVZFKQogewogfQogCitTdHJpbmcgQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OnRvU3RyaW5nKCkKK3sKKyAgICBUZXh0U3RyZWFtIHRzOworICAg
IHRzIDw8ICJtX2NvbW1pdFN0YXRlID0gIiA8PCBtX2NvbW1pdFN0YXRlIDw8ICI7ICI7CisgICAg
dHMgPDwgIm1fY3VycmVudEZyYW1lTnVtYmVyID0gIiA8PCBtX2N1cnJlbnRGcmFtZU51bWJlciA8
PCAiOyAiOworICAgIHRzIDw8ICJtX2xhc3RGcmFtZU51bWJlcldoZXJlRHJhd1dhc0NhbGxlZCA9
ICIgPDwgbV9sYXN0RnJhbWVOdW1iZXJXaGVyZURyYXdXYXNDYWxsZWQgPDwgIjsgIjsKKyAgICB0
cyA8PCAibV9jb25zZWN1dGl2ZUZhaWxlZERyYXdzID0gIiA8PCBtX2NvbnNlY3V0aXZlRmFpbGVk
RHJhd3MgPDwgIjsgIjsKKyAgICB0cyA8PCAibV9tYXhpbXVtTnVtYmVyT2ZGYWlsZWREcmF3c0Jl
Zm9yZURyYXdJc0ZvcmNlZCA9ICIgPDwgbV9tYXhpbXVtTnVtYmVyT2ZGYWlsZWREcmF3c0JlZm9y
ZURyYXdJc0ZvcmNlZCA8PCAiOyAiOworICAgIHRzIDw8ICJtX25lZWRzUmVkcmF3ID0gIiA8PCBt
X25lZWRzUmVkcmF3IDw8ICI7ICI7CisgICAgdHMgPDwgIm1fbmVlZHNGb3JjZWRSZWRyYXcgPSAi
IDw8IG1fbmVlZHNGb3JjZWRSZWRyYXcgPDwgIjsgIjsKKyAgICB0cyA8PCAibV9uZWVkc0ZvcmNl
ZFJlZHJhd0FmdGVyTmV4dENvbW1pdCA9ICIgPDwgbV9uZWVkc0ZvcmNlZFJlZHJhd0FmdGVyTmV4
dENvbW1pdCA8PCAiOyAiOworICAgIHRzIDw8ICJtX25lZWRzQ29tbWl0ID0gIiA8PCBtX25lZWRz
Q29tbWl0IDw8ICI7ICI7CisgICAgdHMgPDwgIm1fbmVlZHNGb3JjZWRDb21taXQgPSAiIDw8IG1f
bmVlZHNGb3JjZWRDb21taXQgPDwgIjsgIjsKKyAgICB0cyA8PCAibV9tYWluVGhyZWFkTmVlZHNM
YXllclRleHR1cmVzID0gIiA8PCBtX21haW5UaHJlYWROZWVkc0xheWVyVGV4dHVyZXMgPDwgIjsg
IjsKKyAgICB0cyA8PCAibV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9ICIgPDwgbV91cGRh
dGVNb3JlUmVzb3VyY2VzUGVuZGluZyA8PCAiOyAiOworICAgIHRzIDw8ICJtX2luc2lkZVZTeW5j
ID0gIiA8PCBtX2luc2lkZVZTeW5jIDw8ICI7ICI7CisgICAgdHMgPDwgIm1fdmlzaWJsZSA9ICIg
PDwgbV92aXNpYmxlIDw8ICI7ICI7CisgICAgdHMgPDwgIm1fY2FuQmVnaW5GcmFtZSA9ICIgPDwg
bV9jYW5CZWdpbkZyYW1lIDw8ICI7ICI7CisgICAgdHMgPDwgIm1fY2FuRHJhdyA9ICIgPDwgbV9j
YW5EcmF3IDw8ICI7ICI7CisgICAgdHMgPDwgIm1fZHJhd0lmUG9zc2libGVGYWlsZWQgPSAiIDw8
IG1fZHJhd0lmUG9zc2libGVGYWlsZWQgPDwgIjsgIjsKKyAgICB0cyA8PCAibV90ZXh0dXJlU3Rh
dGUgPSAiIDw8IG1fdGV4dHVyZVN0YXRlIDw8ICI7ICI7CisgICAgdHMgPDwgIm1fY29udGV4dFN0
YXRlID0gIiA8PCBtX2NvbnRleHRTdGF0ZSA8PCAiOyAiOworICAgIHJldHVybiB0cy5yZWxlYXNl
KCk7Cit9CisKIGJvb2wgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Omhhc0RyYXduVGhpc0ZyYW1l
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jdXJyZW50RnJhbWVOdW1iZXIgPT0gbV9sYXN0RnJh
bWVOdW1iZXJXaGVyZURyYXdXYXNDYWxsZWQ7CkBAIC0yMzAsMTQgKzI1NywxOCBAQCB2b2lkIEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXRNYWluVGhyZWFkTmVlZHNMYXllclRleHR1cmVzKCkK
IAogYm9vbCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dnN5bmNDYWxsYmFja05lZWRlZCgpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX3Zpc2libGUgfHwgbV9jb250ZXh0U3RhdGUgIT0gQ09OVEVYVF9B
Q1RJVkUpIHsKLSAgICAgICAgaWYgKG1fbmVlZHNGb3JjZWRSZWRyYXcgfHwgbV9jb21taXRTdGF0
ZSA9PSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTKQotICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgLy8gVG8gcHJldmVudCBsaXZlLWxvY2ssIHdlIG11c3QgYWx3YXlzIHRpY2sg
d2hlbiB1cGRhdGluZyByZXNvdXJjZXMuCisgICAgaWYgKG1fdXBkYXRlTW9yZVJlc291cmNlc1Bl
bmRpbmcgfHwgbV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VT
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIC8vIElmIHdlIGNhbid0IGRyYXcsIGRvbid0
IHRpY2sgdW50aWwgd2UgYXJlIG5vdGlmaWVkIHRoYXQgd2UgY2FuIGRyYXcgYWdhaW4uCisgICAg
aWYgKCFtX2NhbkRyYXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKLSAgICByZXR1
cm4gbV9uZWVkc1JlZHJhdyB8fCBtX25lZWRzRm9yY2VkUmVkcmF3IHx8IG1fY29tbWl0U3RhdGUg
PT0gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzsKKyAgICBpZiAobV9uZWVkc0ZvcmNl
ZFJlZHJhdykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gbV9uZWVkc1JlZHJh
dyAmJiBtX3Zpc2libGUgJiYgbV9jb250ZXh0U3RhdGUgPT0gQ09OVEVYVF9BQ1RJVkU7CiB9CiAK
IHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmRpZEVudGVyVlN5bmMoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKaW5kZXggZmUxYjE4MGZlNDk0NzgyOTlm
MzM1YmFhZDgzNjY1ZGRkODJhZDIxMC4uOGJhYmFmYWI4YTgwZTIyODM2YmMzNzQ2ODdhODVmYzc2
OWQ1NjZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjZGVmaW5lIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lX2gKIAogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0OCw2ICsxNDksOCBAQCBwdWJsaWM6CiAg
ICAgLy8gRXhwb3NlZCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KICAgICB2b2lkIHNldE1heGltdW1O
dW1iZXJPZkZhaWxlZERyYXdzQmVmb3JlRHJhd0lzRm9yY2VkKGludCk7CiAKKyAgICBTdHJpbmcg
dG9TdHJpbmcoKTsKKwogcHJvdGVjdGVkOgogICAgIGJvb2wgc2hvdWxkRHJhd0ZvcmNlZCgpIGNv
bnN0OwogICAgIGJvb2wgZHJhd1N1c3BlbmRlZFVudGlsQ29tbWl0KCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Npbmds
ZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggNzFmNGY0ZjU3ZWNlNGFkZjFlNDY1YTI0
ODU5OTdiNWZjOTBhMmUyZC4uYTdhZmQwZDkwMWJlOTJhYTUxZjNkYjdkNjg5MTRjMzk3MTRlYjk4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtNjksNiArNjksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0T25JbXBsVGhyZWFkKCkg
T1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1w
bFRocmVhZCgpIE9WRVJSSURFIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgb25WU3luY1BhcmFtZXRlcnNDaGFuZ2VkKGRvdWJsZSBtb25vdG9uaWNUaW1lYmFzZSwg
ZG91YmxlIGludGVydmFsSW5TZWNvbmRzKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
b25DYW5EcmF3U3RhdGVDaGFuZ2VkKGJvb2wgY2FuRHJhdykgT1ZFUlJJREUgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyBtX2xheWVy
VHJlZUhvc3QtPnNjaGVkdWxlQ29tcG9zaXRlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVl
ZHNDb21taXRPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7IG1fbGF5ZXJUcmVlSG9zdC0+c2NoZWR1
bGVDb21wb3NpdGUoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9N
YWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+
LCBkb3VibGUgd2FsbENsb2NrVGltZSkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwCmluZGV4IDZkNzQzNWQ1NjU0NGEyYTIyN2Q3OGI0MzI2NDdhZWVhNDU3NGQwMTMuLmRiNDlh
NmExZDQ2MjgzNWEwMjA3OGNlZDU5ODc0OTY2OTlmMzdiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCkBAIC0zNTIsNiArMzUyLDEzIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6b25WU3lu
Y1BhcmFtZXRlcnNDaGFuZ2VkKGRvdWJsZSBtb25vdG9uaWNUaW1lYmFzZSwgZG91YmxlIGluCiAg
ICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldFRpbWViYXNlQW5kSW50ZXJ2YWwobW9ub3Rv
bmljVGltZWJhc2UsIGludGVydmFsSW5TZWNvbmRzKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5
OjpvbkNhbkRyYXdTdGF0ZUNoYW5nZWQoYm9vbCBjYW5EcmF3KQoreworICAgIEFTU0VSVChpc0lt
cGxUaHJlYWQoKSk7CisgICAgVFJBQ0VfRVZFTlQxKCJjYyIsICJDQ1RocmVhZFByb3h5OjpvbkNh
bkRyYXdTdGF0ZUNoYW5nZWQiLCAiY2FuRHJhdyIsIGNhbkRyYXcpOworICAgIG1fc2NoZWR1bGVy
T25JbXBsVGhyZWFkLT5zZXRDYW5EcmF3KGNhbkRyYXcpOworfQorCiB2b2lkIENDVGhyZWFkUHJv
eHk6OnNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkKIHsKICAgICBBU1NFUlQoaXNJbXBsVGhy
ZWFkKCkpOwpAQCAtNTQyLDggKzU0OSwxMCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJh
bWUoKQogICAgIG1fY29tbWl0UmVxdWVzdFNlbnRUb0ltcGxUaHJlYWQgPSBmYWxzZTsKICAgICBt
X2ZvcmNlZENvbW1pdFJlcXVlc3RlZCA9IGZhbHNlOwogCi0gICAgaWYgKCFtX2xheWVyVHJlZUhv
c3QtPmluaXRpYWxpemVSZW5kZXJlcklmTmVlZGVkKCkpCisgICAgaWYgKCFtX2xheWVyVHJlZUhv
c3QtPmluaXRpYWxpemVSZW5kZXJlcklmTmVlZGVkKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQw
KCJjYyIsICJFYXJseU91dF9Jbml0aWFsaXplRmFpbGVkIik7CiAgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKICAgICBpZiAocmVxdWVzdC0+Y29udGVudHNUZXh0dXJlc1dlcmVEZWxldGVkKQogICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPmV2aWN0QWxsQ29udGVudFRleHR1cmVzKCk7CkBAIC01OTMs
NiArNjAyLDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KICAgICBBU1NFUlQobV9zY2hlZHVs
ZXJPbkltcGxUaHJlYWQtPmNvbW1pdFBlbmRpbmcoKSk7CiAKICAgICBpZiAoIW1fbGF5ZXJUcmVl
SG9zdEltcGwpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJFYXJseU91dF9Ob0xheWVy
VHJlZSIpOwogICAgICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTYzMCwxNCArNjQwLDYgQEAgYm9vbCBDQ1RocmVhZFByb3h5OjpoYXNNb3JlUmVz
b3VyY2VVcGRhdGVzKCkgY29uc3QKICAgICByZXR1cm4gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZUNv
bnRyb2xsZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCk7CiB9CiAKLWJvb2wgQ0NUaHJl
YWRQcm94eTo6Y2FuRHJhdygpCi17Ci0gICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKLSAgICBp
ZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gbV9sYXllclRyZWVIb3N0SW1wbC0+Y2FuRHJhdygpOwotfQotCiB2b2lkIENDVGhyZWFkUHJv
eHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoZG91YmxlIG1vbm90b25pY1Rp
bWVMaW1pdCkKIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnNjaGVk
dWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApp
bmRleCA3MmFjODI1Y2E2ZGEwZmFiNzUwNjI1YzQ5OGZiYTQwNzA2MWUzZGUxLi5jNDhkZjkzMDU5
OTZiYzQwM2Y2NmVjNWNkOWEzZTliMzZjNjVkZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
CkBAIC03OCwxMyArNzgsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29u
dGV4dE9uSW1wbFRocmVhZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZm
ZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgb25W
U3luY1BhcmFtZXRlcnNDaGFuZ2VkKGRvdWJsZSBtb25vdG9uaWNUaW1lYmFzZSwgZG91YmxlIGlu
dGVydmFsSW5TZWNvbmRzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgb25DYW5EcmF3U3Rh
dGVDaGFuZ2VkKGJvb2wgY2FuRHJhdykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5l
ZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5l
ZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RB
bmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1h
dGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSBPVkVSUklERTsKIAogICAg
IC8vIENDU2NoZWR1bGVyQ2xpZW50IGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVhbCBib29sIGNh
bkRyYXcoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZVJlc291cmNlVXBkYXRl
cygpIGNvbnN0IE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJl
Z2luRnJhbWUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIENDU2NoZWR1bGVkQWN0aW9uRHJhd0Fu
ZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxlKCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IHNjaGVk
dWxlZEFjdGlvbkRyYXdBbmRTd2FwRm9yY2VkKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmlu
ZGV4IGQwOWJjMzY0OWVhZWJlYzQzZDg5ZGQ2MjM3NDMzNmViZjI1NjFjMjQuLjc5NmEzMTk4ZTY2
NWNhMTQzMGI3ZDgwNDc0MTM3NWQ1ZmY0Y2ZhNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC03MCw3
ICs3MCw4IEBAIG5hbWVzcGFjZSB7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCB7CiBw
dWJsaWM6CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QoKQotICAgICAgICA6IG1fZGlkUmVx
dWVzdENvbW1pdChmYWxzZSkKKyAgICAgICAgOiBtX29uQ2FuRHJhd1N0YXRlQ2hhbmdlZENhbGxl
ZChmYWxzZSkKKyAgICAgICAgLCBtX2RpZFJlcXVlc3RDb21taXQoZmFsc2UpCiAgICAgICAgICwg
bV9kaWRSZXF1ZXN0UmVkcmF3KGZhbHNlKQogICAgIHsKICAgICAgICAgQ0NMYXllclRyZWVTZXR0
aW5ncyBzZXR0aW5nczsKQEAgLTg0LDYgKzg1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRMb3NlQ29udGV4dE9uSW1wbFRocmVhZCgpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgb25WU3luY1BhcmFtZXRlcnNDaGFuZ2VkKGRvdWJsZSwgZG91YmxlKSBP
VkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25DYW5EcmF3U3RhdGVDaGFuZ2VkKGJvb2wg
Y2FuRHJhdykgT1ZFUlJJREUgeyBtX29uQ2FuRHJhd1N0YXRlQ2hhbmdlZENhbGxlZCA9IHRydWU7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSBPVkVSUklE
RSB7IG1fZGlkUmVxdWVzdFJlZHJhdyA9IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVl
ZHNDb21taXRPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7IG1fZGlkUmVxdWVzdENvbW1pdCA9IHRy
dWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9u
SW1wbFRocmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdh
bGxDbG9ja1RpbWUpIE9WRVJSSURFIHsgfQpAQCAtMTg1LDYgKzE4Nyw3IEBAIHByb3RlY3RlZDoK
ICAgICBEZWJ1Z1Njb3BlZFNldE1haW5UaHJlYWRCbG9ja2VkIG1fYWx3YXlzTWFpblRocmVhZEJs
b2NrZWQ7CiAKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbV9ob3N0SW1wbDsKKyAg
ICBib29sIG1fb25DYW5EcmF3U3RhdGVDaGFuZ2VkQ2FsbGVkOwogICAgIGJvb2wgbV9kaWRSZXF1
ZXN0Q29tbWl0OwogICAgIGJvb2wgbV9kaWRSZXF1ZXN0UmVkcmF3OwogICAgIENDU2NvcGVkU2V0
dGluZ3MgbV9zY29wZWRTZXR0aW5nczsKQEAgLTE5NSw2ICsxOTgsNTMgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKSB7IHJldHVybiBmYWxzZTsgfQogfTsK
IAorVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBub3RpZnlJZkNhbkRyYXdDaGFuZ2Vk
KQoreworICAgIC8vIE5vdGU6IEl0IGlzIG5vdCBwb3NzaWJsZSB0byBkaXNhYmxlIHRoZSByZW5k
ZXJlciBvbmNlIGl0IGhhcyBiZWVuIHNldCwKKyAgICAvLyBzbyB3ZSBkbyBub3QgbmVlZCB0byB0
ZXN0IHRoYXQgZGlzYWJsaW5nIHRoZSByZW5kZXJlciBub3RpZmllcyB1cworICAgIC8vIHRoYXQg
Y2FuRHJhdyBjaGFuZ2VkLgorICAgIEVYUEVDVF9GQUxTRShtX2hvc3RJbXBsLT5jYW5EcmF3KCkp
OworICAgIG1fb25DYW5EcmF3U3RhdGVDaGFuZ2VkQ2FsbGVkID0gZmFsc2U7CisKKyAgICBzZXR1
cFNjcm9sbEFuZENvbnRlbnRzTGF5ZXJzKEludFNpemUoMTAwLCAxMDApKTsKKyAgICBFWFBFQ1Rf
VFJVRShtX2hvc3RJbXBsLT5jYW5EcmF3KCkpOworICAgIEVYUEVDVF9UUlVFKG1fb25DYW5EcmF3
U3RhdGVDaGFuZ2VkQ2FsbGVkKTsKKyAgICBtX29uQ2FuRHJhd1N0YXRlQ2hhbmdlZENhbGxlZCA9
IGZhbHNlOworCisgICAgLy8gVG9nZ2xlIHRoZSByb290IGxheWVyIHRvIG1ha2Ugc3VyZSBpdCB0
b2dnbGVzIGNhbkRyYXcKKyAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoYWRvcHRQdHI8Q0NM
YXllckltcGw+KDApKTsKKyAgICBFWFBFQ1RfRkFMU0UobV9ob3N0SW1wbC0+Y2FuRHJhdygpKTsK
KyAgICBFWFBFQ1RfVFJVRShtX29uQ2FuRHJhd1N0YXRlQ2hhbmdlZENhbGxlZCk7CisgICAgbV9v
bkNhbkRyYXdTdGF0ZUNoYW5nZWRDYWxsZWQgPSBmYWxzZTsKKworICAgIHNldHVwU2Nyb2xsQW5k
Q29udGVudHNMYXllcnMoSW50U2l6ZSgxMDAsIDEwMCkpOworICAgIEVYUEVDVF9UUlVFKG1faG9z
dEltcGwtPmNhbkRyYXcoKSk7CisgICAgRVhQRUNUX1RSVUUobV9vbkNhbkRyYXdTdGF0ZUNoYW5n
ZWRDYWxsZWQpOworICAgIG1fb25DYW5EcmF3U3RhdGVDaGFuZ2VkQ2FsbGVkID0gZmFsc2U7CisK
KyAgICAvLyBUb2dnbGUgdGhlIGRldmljZSB2aWV3cG9ydCBzaXplIHRvIG1ha2Ugc3VyZSBpdCB0
b2dnbGVzIGNhbkRyYXcuCisgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUo
MTAwLCAxMDApLCBJbnRTaXplKDAsIDApKTsKKyAgICBFWFBFQ1RfRkFMU0UobV9ob3N0SW1wbC0+
Y2FuRHJhdygpKTsKKyAgICBFWFBFQ1RfVFJVRShtX29uQ2FuRHJhd1N0YXRlQ2hhbmdlZENhbGxl
ZCk7CisgICAgbV9vbkNhbkRyYXdTdGF0ZUNoYW5nZWRDYWxsZWQgPSBmYWxzZTsKKworICAgIG1f
aG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwMCwgMTAwKSwgSW50U2l6ZSgxMDAs
IDEwMCkpOworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPmNhbkRyYXcoKSk7CisgICAgRVhQ
RUNUX1RSVUUobV9vbkNhbkRyYXdTdGF0ZUNoYW5nZWRDYWxsZWQpOworICAgIG1fb25DYW5EcmF3
U3RhdGVDaGFuZ2VkQ2FsbGVkID0gZmFsc2U7CisKKyAgICAvLyBUb2dnbGUgY29udGVudHMgdGV4
dHVyZXMgcHVyZ2VkIHRvIG1ha2Ugc3VyZSBpdCB0b2dnbGVzIGNhbkRyYXcKKyAgICBtX2hvc3RJ
bXBsLT5yZWxlYXNlQ29udGVudHNUZXh0dXJlcygpOworICAgIEVYUEVDVF9GQUxTRShtX2hvc3RJ
bXBsLT5jYW5EcmF3KCkpOworICAgIEVYUEVDVF9UUlVFKG1fb25DYW5EcmF3U3RhdGVDaGFuZ2Vk
Q2FsbGVkKTsKKyAgICBtX29uQ2FuRHJhd1N0YXRlQ2hhbmdlZENhbGxlZCA9IGZhbHNlOworCisg
ICAgbV9ob3N0SW1wbC0+cmVzZXRDb250ZW50c1RleHR1cmVzUHVyZ2VkKCk7CisgICAgRVhQRUNU
X1RSVUUobV9ob3N0SW1wbC0+Y2FuRHJhdygpKTsKKyAgICBFWFBFQ1RfVFJVRShtX29uQ2FuRHJh
d1N0YXRlQ2hhbmdlZENhbGxlZCk7CisgICAgbV9vbkNhbkRyYXdTdGF0ZUNoYW5nZWRDYWxsZWQg
PSBmYWxzZTsKK30KKwogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxEZWx0
YU5vTGF5ZXJzKQogewogICAgIEFTU0VSVF9GQUxTRShtX2hvc3RJbXBsLT5yb290TGF5ZXIoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKaW5kZXggN2RmYmJjMDBiOTU0ZGY1MjQxOTNlNjk1MWY1
ZGU1NDIwYzhjYjdmMS4uMDllODljODdkNGZjOTlkNGFkNTk4OWVlMGE4OTg2NTdiNmNmMjhmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcApAQCAtMTM2LDYgKzEzNiw3IEBAIFRFU1QoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFjdGlvbkJlZ2luc0ZyYW1lSWZOZWVkZWQp
CiBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldEZvcmNlZFJlZHJhd0Rv
ZXNOb3RTZXRzTm9ybWFsUmVkcmF3KQogewogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lIHN0
YXRlOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAgICAgc3RhdGUuc2V0TmVlZHNGb3Jj
ZWRSZWRyYXcoKTsKICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKICAg
ICBFWFBFQ1RfVFJVRShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOwpAQCAtMTQ2LDYgKzE0
Nyw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RmFpbGVkRHJhd1Nl
dHNOZWVkc0NvbW1pdEFuZERvZXNOb3REcmF3QWdhCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUgc3RhdGU7CiAgICAgc3RhdGUuc2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzdGF0ZS5z
ZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAgICAgc3RhdGUu
c2V0TmVlZHNSZWRyYXcoKTsKICAgICBFWFBFQ1RfVFJVRShzdGF0ZS5yZWRyYXdQZW5kaW5nKCkp
OwogICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7CkBAIC0xNzEs
NiArMTczLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RTZXROZWVk
c1JlZHJhd0R1cmluZ0ZhaWxlZERyYXdEb2VzTm90UmVtb3YKICAgICBDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZSBzdGF0ZTsKICAgICBzdGF0ZS5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHN0
YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKICAgICBz
dGF0ZS5zZXROZWVkc1JlZHJhdygpOwogICAgIEVYUEVDVF9UUlVFKHN0YXRlLnJlZHJhd1BlbmRp
bmcoKSk7CiAgICAgRVhQRUNUX1RSVUUoc3RhdGUudnN5bmNDYWxsYmFja05lZWRlZCgpKTsKQEAg
LTE5OSw2ICsyMDIsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENv
bW1pdEFmdGVyRmFpbGVkRHJhd0FsbG93c0RyYXdJblNhbWVGcmFtZQogICAgIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lIHN0YXRlOwogICAgIHN0YXRlLnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAg
ICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3KHRydWUpOwog
CiAgICAgLy8gU3RhcnQgYSBjb21taXQuCiAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoKTsKQEAg
LTIzOSw2ICsyNDMsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENv
bW1pdEFmdGVyRmFpbGVkQW5kU3VjY2Vzc2Z1bERyYXdEb2VzTm90QQogICAgIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lIHN0YXRlOwogICAgIHN0YXRlLnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAg
ICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3KHRydWUpOwog
CiAgICAgLy8gU3RhcnQgYSBjb21taXQuCiAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoKTsKQEAg
LTI5MCw2ICsyOTUsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZh
aWxlZERyYXdzV2lsbEV2ZW50dWFsbHlGb3JjZUFEcmF3QWZ0ZXJUaAogICAgIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lIHN0YXRlOwogICAgIHN0YXRlLnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAg
ICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3KHRydWUpOwog
ICAgIHN0YXRlLnNldE1heGltdW1OdW1iZXJPZkZhaWxlZERyYXdzQmVmb3JlRHJhd0lzRm9yY2Vk
KDEpOwogCiAgICAgLy8gU3RhcnQgYSBjb21taXQuCkBAIC0zMzIsNiArMzM4LDcgQEAgVEVTVChD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGYWlsZWREcmF3SXNSZXRyaWVkTmV4dFZT
eW5jKQogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lIHN0YXRlOwogICAgIHN0YXRlLnNldENh
bkJlZ2luRnJhbWUodHJ1ZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0
ZS5zZXRDYW5EcmF3KHRydWUpOwogCiAgICAgLy8gU3RhcnQgYSBkcmF3LgogICAgIHN0YXRlLnNl
dE5lZWRzUmVkcmF3KCk7CkBAIC0zNjEsNiArMzY4LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QsIFRlc3REb2VzdERyYXdUd2ljZUluU2FtZUZyYW1lKQogewogICAgIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lIHN0YXRlOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7Cisg
ICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdygpOwog
ICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7CiAgICAgc3RhdGUu
ZGlkRW50ZXJWU3luYygpOwpAQCAtNDEzLDYgKzQyMSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFjdGlvbkRyYXdzT25WU3luYykKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG51bUNvbW1pdFN0YXRlczsgKytpKSB7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaiA9IDA7IGogPCAyOyArK2opIHsKICAgICAgICAgICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsK
KyAgICAgICAgICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAgICAgICAgICAgICBzdGF0ZS5z
ZXRDb21taXRTdGF0ZShhbGxDb21taXRTdGF0ZXNbaV0pOwogICAgICAgICAgICAgYm9vbCBmb3Jj
ZWREcmF3ID0gajsKICAgICAgICAgICAgIGlmICghZm9yY2VkRHJhdykgewpAQCAtNTI1LDYgKzUz
NCwyOCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENhblJlZHJhd1dp
dGhXYWl0aW5nRm9yRmlyc3REcmF3TWFrZXNQcm9ncgogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwog
fQogCitURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFZzeW5jQ2FsbGJhY2tO
ZWVkZWRPbkNhbkRyYXdBbmRSZXNvdXJjZVVwZGF0ZXMpCit7CisgICAgU3RhdGVNYWNoaW5lIHN0
YXRlOworICAgIHN0YXRlLnNldENvbW1pdFN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpD
T01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVyk7CisgICAgc3RhdGUuc2V0Q2FuQmVn
aW5GcmFtZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICBzdGF0
ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKKyAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2Vz
UGVuZGluZyhmYWxzZSk7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5z
ZXRDYW5EcmF3KGZhbHNlKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUudnN5bmNDYWxsYmFja05l
ZWRlZCgpKTsKKworICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUp
OworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7CisKKyAgICBz
dGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CisgICAgRVhQRUNUX0ZB
TFNFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7CisKKyAgICBzdGF0ZS5zZXRDYW5EcmF3
KHRydWUpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7Cit9
CisKIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJh
d19PbmVSb3VuZE9mVXBkYXRlcykKIHsKICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CkBAIC01MzIs
NiArNTYzLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVz
X05vUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KGZh
bHNlKTsKICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CiAg
ICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3KHRydWUpOwog
CiAgICAgLy8gVmVyaWZ5IHdlIGJlZ2luIHVwZGF0ZSwgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2
c3luYy4KICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJ
Tl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CkBAIC01NjAsNiAr
NTkyLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05v
UmVkcmF3X1R3b1JvdW5kc09mVXBkYXRlcykKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhmYWxz
ZSk7CiAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwogICAg
IHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKIAog
ICAgIC8vIFZlcmlmeSB0aGUgdXBkYXRlIGJlZ2lucywgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2
c3luYy4KICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CkBAIC01OTksNiArNjMyLDcgQEAgVEVT
VChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X1R3b1Jv
dW5kc09mVXBkYXRlcykKIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VlN5
bmNOZWVkZWRXaGVuVXBkYXRlc1BlbmRpbmdCdXRJbnZpc2libGUpCiB7CiAgICAgU3RhdGVNYWNo
aW5lIHN0YXRlOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAgICAgc3RhdGUuc2V0Q29t
bWl0U3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19S
RVNPVVJDRVMpOwogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNlKTsKICAgICBzdGF0ZS5z
ZXRWaXNpYmxlKGZhbHNlKTsKQEAgLTYxNiw2ICs2NTAsNyBAQCBURVNUKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfV2l0aFJlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykK
ICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKICAgICBzdGF0ZS5zZXRVcGRhdGVNb3Jl
UmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAg
ICBzdGF0ZS5zZXRDYW5EcmF3KHRydWUpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFj
dGlvbigpKTsKIAogICAgIC8vIEJlZ2luIGFuIHVwZGF0ZS4KQEAgLTY2Myw2ICs2OTgsNyBAQCBU
RVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldE5lZWRzQ29tbWl0SXNOb3RM
b3N0KQogICAgIHN0YXRlLnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAgICAgc3RhdGUuc2V0TmVl
ZHNDb21taXQodHJ1ZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5z
ZXRDYW5EcmF3KHRydWUpOwogCiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgogICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0
QWN0aW9uKCkpOwpAQCAtNzA1LDYgKzc0MSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LCBUZXN0RnVsbEN5Y2xlKQogICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICBzdGF0
ZS5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7Cisg
ICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKIAogICAgIC8vIFN0YXJ0IGNsZWFuIGFuZCBzZXQg
Y29tbWl0LgogICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwpAQCAtNzUzLDYgKzc5MCw3
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENv
bW1pdFJlcXVlc3RJbmJldHdlZW4pCiAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOwogICAgIHN0YXRl
LnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAg
ICBzdGF0ZS5zZXRDYW5EcmF3KHRydWUpOwogCiAgICAgLy8gU3RhcnQgY2xlYW4gYW5kIHNldCBj
b21taXQuCiAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CkBAIC04MTIsNiArODUwLDcg
QEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RHb2VzSW52aXNpYmxlQmVm
b3JlQmVnaW5GcmFtZUNvbXBsZXRlcykKICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgc3Rh
dGUuc2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOwor
ICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAKICAgICAvLyBTdGFydCBjbGVhbiBhbmQgc2V0
IGNvbW1pdC4KICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKQEAgLTg1MCw2ICs4ODks
NyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hl
bkNvbXBsZXRlbHlJZGxlKQogICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICBzdGF0ZS5zZXRD
YW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3Rh
dGUuc2V0Q2FuRHJhdyh0cnVlKTsKIAogICAgIHN0YXRlLmRpZExvc2VDb250ZXh0KCk7CiAKQEAg
LTg3Miw2ICs5MTIsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENv
bnRleHRMb3N0V2hlbklkbGVBbmRDb21taXRSZXF1ZXN0ZWRXaGlsZQogICAgIFN0YXRlTWFjaGlu
ZSBzdGF0ZTsKICAgICBzdGF0ZS5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHN0YXRlLnNl
dFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKIAogICAgIHN0YXRl
LmRpZExvc2VDb250ZXh0KCk7CiAKQEAgLTkwOCw2ICs5NDksNyBAQCBURVNUKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hpbGVDb21taXRJblByb2dyZXNzKQog
ICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICBzdGF0ZS5zZXRDYW5CZWdpbkZyYW1lKHRydWUp
OwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVl
KTsKIAogICAgIC8vIEdldCBhIGNvbW1pdCBpbiBmbGlnaHQuCiAgICAgc3RhdGUuc2V0TmVlZHND
b21taXQodHJ1ZSk7CkBAIC05NDksNiArOTkxLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QsIFRlc3RDb250ZXh0TG9zdFdoaWxlQ29tbWl0SW5Qcm9ncmVzc0FuZEFub3RoZXIK
ICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgc3RhdGUuc2V0Q2FuQmVnaW5GcmFtZSh0cnVl
KTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1
ZSk7CiAKICAgICAvLyBHZXQgYSBjb21taXQgaW4gZmxpZ2h0LgogICAgIHN0YXRlLnNldE5lZWRz
Q29tbWl0KHRydWUpOwpAQCAtOTk5LDYgKzEwNDIsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdCwgVGVzdEZpbmlzaEFsbFJlbmRlcmluZ1doaWxlQ29udGV4dExvc3QpCiB7CiAg
ICAgU3RhdGVNYWNoaW5lIHN0YXRlOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAg
c3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKIAogICAgIC8vIENhdXNlIGEgbG9zdCBjb250ZXh0IGxv
c3QuCiAgICAgc3RhdGUuZGlkTG9zZUNvbnRleHQoKTsKQEAgLTEwMzcsNiArMTA4MSw3IEBAIFRF
U1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0QmVnaW5GcmFtZVdoZW5DYW5CZWdp
bkZyYW1lRmFsc2VBbmRGb3JjZUNvCiB7CiAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOwogICAgIHN0
YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKICAgICBz
dGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKICAgICBzdGF0ZS5zZXROZWVkc0ZvcmNlZENvbW1p
dCh0cnVlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9C
RUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKQEAgLTEwNjksNiArMTExNCw3IEBAIFRF
U1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0QmVnaW5GcmFtZVdoZW5Db250ZXh0
TG9zdCkKICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgc3RhdGUuc2V0Q2FuQmVnaW5GcmFt
ZSh0cnVlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRy
YXcodHJ1ZSk7CiAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CiAgICAgc3RhdGUuc2V0
TmVlZHNGb3JjZWRDb21taXQodHJ1ZSk7CiAgICAgc3RhdGUuZGlkTG9zZUNvbnRleHQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAppbmRl
eCA5M2ZmNjZlYTI0ODZiMWJjODEyN2Y1YjVhY2M3NzkyY2MyNjRhNTVjLi5lYjkzM2Y5MmZlYzQ0
NGQ5N2FmZjE1Nzk4YjdiY2RlODUyMmQ5YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCkBAIC00NCwxNCArNDQsMTIgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgbV9hY3Rpb25zLmNsZWFyKCk7CiAgICAgICAgIG1faGFzTW9yZVJl
c291cmNlVXBkYXRlcyA9IGZhbHNlOwotICAgICAgICBtX2NhbkRyYXcgPSB0cnVlOwogICAgICAg
ICBtX2RyYXdXaWxsSGFwcGVuID0gdHJ1ZTsKICAgICAgICAgbV9zd2FwV2lsbEhhcHBlbklmRHJh
d0hhcHBlbnMgPSB0cnVlOwogICAgICAgICBtX251bURyYXdzID0gMDsKICAgICB9CiAKICAgICB2
b2lkIHNldEhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoYm9vbCBiKSB7IG1faGFzTW9yZVJlc291cmNl
VXBkYXRlcyA9IGI7IH0KLSAgICB2b2lkIHNldENhbkRyYXcoYm9vbCBiKSB7IG1fY2FuRHJhdyA9
IGI7IH0KIAogICAgIGludCBudW1EcmF3cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtRHJhd3M7IH0K
ICAgICBpbnQgbnVtQWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obV9h
Y3Rpb25zLnNpemUoKSk7IH0KQEAgLTY1LDggKzYzLDggQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIGNhbkRyYXcoKSBPVkVSUklERSB7
IHJldHVybiBtX2NhbkRyYXc7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZVJlc291cmNlVXBk
YXRlcygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1faGFzTW9yZVJlc291cmNlVXBkYXRlczsg
fQorCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKSBPVkVSUklE
RSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUiKTsgfQog
ICAgIHZpcnR1YWwgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUoKSBPVkVSUklERQogICAgIHsKQEAgLTkxLDcgKzg5
LDYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2hhc01vcmVSZXNvdXJjZVVw
ZGF0ZXM7Ci0gICAgYm9vbCBtX2NhbkRyYXc7CiAgICAgYm9vbCBtX2RyYXdXaWxsSGFwcGVuOwog
ICAgIGJvb2wgbV9zd2FwV2lsbEhhcHBlbklmRHJhd0hhcHBlbnM7CiAgICAgaW50IG1fbnVtRHJh
d3M7CkBAIC0xMDUsNiArMTAyLDcgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21t
aXQpCiAgICAgT3duUHRyPENDU2NoZWR1bGVyPiBzY2hlZHVsZXIgPSBDQ1NjaGVkdWxlcjo6Y3Jl
YXRlKCZjbGllbnQsIGFkb3B0UHRyKG5ldyBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIodGltZVNvdXJj
ZSkpKTsKICAgICBzY2hlZHVsZXItPnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAgICAgc2NoZWR1
bGVyLT5zZXRWaXNpYmxlKHRydWUpOworICAgIHNjaGVkdWxlci0+c2V0Q2FuRHJhdyh0cnVlKTsK
IAogICAgIC8vIFNldE5lZWRzQ29tbWl0IHNob3VsZCBiZWdpbiB0aGUgZnJhbWUuCiAgICAgc2No
ZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOwpAQCAtMTM5LDYgKzEzNyw3IEBAIFRFU1QoQ0NTY2hl
ZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0QWZ0ZXJCZWdpbkZyYW1lKQogICAgIE93blB0cjxDQ1Nj
aGVkdWxlcj4gc2NoZWR1bGVyID0gQ0NTY2hlZHVsZXI6OmNyZWF0ZSgmY2xpZW50LCBhZG9wdFB0
cihuZXcgQ0NGcmFtZVJhdGVDb250cm9sbGVyKHRpbWVTb3VyY2UpKSk7CiAgICAgc2NoZWR1bGVy
LT5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHNjaGVkdWxlci0+c2V0VmlzaWJsZSh0cnVl
KTsKKyAgICBzY2hlZHVsZXItPnNldENhbkRyYXcodHJ1ZSk7CiAKICAgICAvLyBTZXROZWRzQ29t
bWl0IHNob3VsZCBiZWdpbiB0aGUgZnJhbWUuCiAgICAgc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1p
dCgpOwpAQCAtMTcyLDYgKzE3MSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBUZXh0dXJlQWNx
dWlzaXRpb25Db2xsaXNpb24pCiAgICAgT3duUHRyPENDU2NoZWR1bGVyPiBzY2hlZHVsZXIgPSBD
Q1NjaGVkdWxlcjo6Y3JlYXRlKCZjbGllbnQsIGFkb3B0UHRyKG5ldyBDQ0ZyYW1lUmF0ZUNvbnRy
b2xsZXIodGltZVNvdXJjZSkpKTsKICAgICBzY2hlZHVsZXItPnNldENhbkJlZ2luRnJhbWUodHJ1
ZSk7CiAgICAgc2NoZWR1bGVyLT5zZXRWaXNpYmxlKHRydWUpOworICAgIHNjaGVkdWxlci0+c2V0
Q2FuRHJhdyh0cnVlKTsKIAogICAgIHNjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKICAgICBz
Y2hlZHVsZXItPnNldE1haW5UaHJlYWROZWVkc0xheWVyVGV4dHVyZXMoKTsKQEAgLTIxMCw2ICsy
MTAsNyBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgVmlzaWJpbGl0eVN3aXRjaFdpdGhUZXh0dXJl
QWNxdWlzaXRpb24pCiAgICAgT3duUHRyPENDU2NoZWR1bGVyPiBzY2hlZHVsZXIgPSBDQ1NjaGVk
dWxlcjo6Y3JlYXRlKCZjbGllbnQsIGFkb3B0UHRyKG5ldyBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIo
dGltZVNvdXJjZSkpKTsKICAgICBzY2hlZHVsZXItPnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAg
ICAgc2NoZWR1bGVyLT5zZXRWaXNpYmxlKHRydWUpOworICAgIHNjaGVkdWxlci0+c2V0Q2FuRHJh
dyh0cnVlKTsKIAogICAgIHNjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKICAgICBzY2hlZHVs
ZXItPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwpAQCAtMjczLDYgKzI3NCw3IEBAIFRFU1QoQ0NTY2hl
ZHVsZXJUZXN0LCBSZXF1ZXN0UmVkcmF3SW5zaWRlRHJhdykKICAgICBjbGllbnQuc2V0U2NoZWR1
bGVyKHNjaGVkdWxlci5nZXQoKSk7CiAgICAgc2NoZWR1bGVyLT5zZXRDYW5CZWdpbkZyYW1lKHRy
dWUpOwogICAgIHNjaGVkdWxlci0+c2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzY2hlZHVsZXItPnNl
dENhbkRyYXcodHJ1ZSk7CiAKICAgICBzY2hlZHVsZXItPnNldE5lZWRzUmVkcmF3KCk7CiAgICAg
RVhQRUNUX1RSVUUoc2NoZWR1bGVyLT5yZWRyYXdQZW5kaW5nKCkpOwpAQCAtMjk5LDYgKzMwMSw3
IEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0UmVkcmF3SW5zaWRlRmFpbGVkRHJhdykK
ICAgICBjbGllbnQuc2V0U2NoZWR1bGVyKHNjaGVkdWxlci5nZXQoKSk7CiAgICAgc2NoZWR1bGVy
LT5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHNjaGVkdWxlci0+c2V0VmlzaWJsZSh0cnVl
KTsKKyAgICBzY2hlZHVsZXItPnNldENhbkRyYXcodHJ1ZSk7CiAgICAgY2xpZW50LnNldERyYXdX
aWxsSGFwcGVuKGZhbHNlKTsKIAogICAgIHNjaGVkdWxlci0+c2V0TmVlZHNSZWRyYXcoKTsKQEAg
LTM3MSw2ICszNzQsNyBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdEluc2lk
ZURyYXcpCiAgICAgY2xpZW50LnNldFNjaGVkdWxlcihzY2hlZHVsZXIuZ2V0KCkpOwogICAgIHNj
aGVkdWxlci0+c2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzY2hlZHVsZXItPnNldFZpc2li
bGUodHJ1ZSk7CisgICAgc2NoZWR1bGVyLT5zZXRDYW5EcmF3KHRydWUpOwogCiAgICAgc2NoZWR1
bGVyLT5zZXROZWVkc1JlZHJhdygpOwogICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+cmVkcmF3
UGVuZGluZygpKTsKQEAgLTM5OCw2ICs0MDIsNyBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVx
dWVzdENvbW1pdEluc2lkZUZhaWxlZERyYXcpCiAgICAgY2xpZW50LnNldFNjaGVkdWxlcihzY2hl
ZHVsZXIuZ2V0KCkpOwogICAgIHNjaGVkdWxlci0+c2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAg
ICBzY2hlZHVsZXItPnNldFZpc2libGUodHJ1ZSk7CisgICAgc2NoZWR1bGVyLT5zZXRDYW5EcmF3
KHRydWUpOwogICAgIGNsaWVudC5zZXREcmF3V2lsbEhhcHBlbihmYWxzZSk7CiAKICAgICBzY2hl
ZHVsZXItPnNldE5lZWRzUmVkcmF3KCk7CkBAIC00NDAsNiArNDQ1LDcgQEAgVEVTVChDQ1NjaGVk
dWxlclRlc3QsIE5vQmVnaW5GcmFtZVdoZW5EcmF3RmFpbHMpCiAgICAgY2xpZW50LnNldFNjaGVk
dWxlcihzY2hlZHVsZXIuZ2V0KCkpOwogICAgIHNjaGVkdWxlci0+c2V0Q2FuQmVnaW5GcmFtZSh0
cnVlKTsKICAgICBzY2hlZHVsZXItPnNldFZpc2libGUodHJ1ZSk7CisgICAgc2NoZWR1bGVyLT5z
ZXRDYW5EcmF3KHRydWUpOwogCiAgICAgRVhQRUNUX0VRKDAsIGNvbnRyb2xsZXJQdHItPm51bUZy
YW1lc1BlbmRpbmcoKSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162117</attachid>
            <date>2012-09-04 16:10:49 -0700</date>
            <delta_ts>2012-09-04 23:06:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95399-20120904161032.patch</filename>
            <type>text/plain</type>
            <size>35278</size>
            <attacher name="Brian Anderson">brianderson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhkYzY2NGZlNzhlY2Fh
NmViZDE5YmMyNWQzZjEzODdhYTVkOGY2MS4uMzM3MTYyMTgxZmRlY2E3MzgxOGRhMTM2Y2Q0MmZj
Njc4MDQ1YWM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA4LTI5ICBCcmlh
biBBbmRlcnNvbiAgPGJyaWFuZGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIFByZXZlbnQgY29tcG9zaXRvciB0aWNraW5nIGlmIGl0IGNhbid0IGRyYXcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mzk5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFja2dyb3VuZCBleHRlbnNp
b25zIGhhZCBhbiBhbHdheXMgdGlja2luZyBjb21wb3NpdG9yIGV2ZW4gdGhvdWdoCisgICAgICAg
IHRoZXkgY291bGRuJ3QgZHJhdy4gVGhpcyBwYXRjaCBkaXNhYmxlcyB0aGUgdGlja3Mgd2hlbiBj
YW5EcmF3IGlzIGZhbHNlCisgICAgICAgIGFuZCBhZGRzIGEgbm90aWZpY2F0aW9uIG1lY2hhbmlz
bSBmb3Igd2hlbiBjYW5EcmF3IGNoYW5nZXMgc3RhdGVzIHNvCisgICAgICAgIHdlIGNhbiByZWNv
dmVyIHByb3Blcmx5LgorCisgICAgICAgIFRlc3RzIHVwZGF0ZWQgZm9yIG5ldyBpbnRlcmZhY2Vz
LgorICAgICAgICBSZWdyZXNzaW9uIHRlc3QgYWRkZWQgdG8gbWFrZSBzdXJlIHRpY2tpbmcgc3Rv
cHMgd2hlbiBjYW5EcmF3IGlzIGZhbHNlLgorICAgICAgICBub3RpZnlJZkNhbkRyYXdDaGFuZ2Vk
IHRlc3QgYWRkZWQgdG8gbWFrZSBzdXJlIG5vdGlmaWNhdGlvbnMgYXJlIHNlbnQKKyAgICAgICAg
Zm9yIGFueSBjaGFuZ2VzIHRoYXQgbWlnaHQgYWZmZWN0IGNhbkRyYXcuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6bm90aWZ5SWZDYW5EcmF3
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdEltcGw6OnJlbGVhc2VDb250ZW50c1RleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFJvb3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjppbml0aWFsaXplUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Vmlld3BvcnRTaXplKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAg
IChDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdEltcGw6OnJlc2V0Q29udGVudHNUZXh0dXJlc1B1cmdlZCk6CisgICAgICAgIChDQ0xh
eWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6c2V0Q2Fu
RHJhdyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVy
Ojpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaDoKKyAgICAgICAgKENDU2NoZWR1bGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dG9TdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6dnN5bmNDYWxsYmFja05lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaDoKKyAgICAgICAgKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5OjpvbkNhbkRyYXdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgor
CiAyMDEyLTA5LTAzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI3NDI3LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBmY2RkMjhiY2U4NjViNWU2MDFkZjUxOGI1
ZTNjNjgxOTczNDU3YjFjLi5kNDU2N2NiZTQyMjk0OGM5YzUwMjAzMjA4YmFkYzY1NWVmNGMzYzcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMTY4LDYgKzE2
OCwxMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbW1pdENvbXBsZXRlKCkKIAogYm9v
bCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYW5EcmF3KCkKIHsKKyAgICAvLyBOb3RlOiBJZiB5b3Ug
YXJlIGNoYW5naW5nIHRoaXMgZnVuY3Rpb24gb3IgYW55IG90aGVyIGZ1bmN0aW9uIHRoYXQgbWln
aHQKKyAgICAvLyBhZmZlY3QgdGhlIHJlc3VsdCBvZiBjYW5EcmF3LCBtYWtlIHN1cmUgdG8gY2Fs
bCBtX2NsaWVudC0+b25DYW5EcmF3U3RhdGVDaGFuZ2VkCisgICAgLy8gaW4gdGhlIHByb3BlciBw
bGFjZXMgYW5kIHVwZGF0ZSB0aGUgbm90aWZ5SWZDYW5EcmF3Q2hhbmdlZCB0ZXN0LgorCiAgICAg
aWYgKCFtX3Jvb3RMYXllckltcGwpIHsKICAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoImNj
IiwgIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbkRyYXcgbm8gcm9vdCBsYXllciIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC01MzAsNiArNTM0LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpyZWxlYXNlQ29udGVudHNUZXh0dXJlcygpCiAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5k
ZWxldGVPd25lZFJlc291cmNlcyhDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgbV9jb250
ZW50c1RleHR1cmVzUHVyZ2VkID0gdHJ1ZTsKICAgICBtX2NsaWVudC0+c2V0TmVlZHNDb21taXRP
bkltcGxUaHJlYWQoKTsKKyAgICBtX2NsaWVudC0+b25DYW5EcmF3U3RhdGVDaGFuZ2VkKGNhbkRy
YXcoKSk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0TWVtb3J5QWxsb2NhdGlv
bkxpbWl0Qnl0ZXMoc2l6ZV90IGJ5dGVzKQpAQCAtNjY5LDYgKzY3NCw4IEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0SW1wbDo6c2V0Um9vdExheWVyKFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGxheWVy
KQogICAgICAgICBtX2N1cnJlbnRseVNjcm9sbGluZ0xheWVySW1wbCA9IENDTGF5ZXJUcmVlSG9z
dENvbW1vbjo6ZmluZExheWVySW5TdWJ0cmVlKG1fcm9vdExheWVySW1wbC5nZXQoKSwgbV9zY3Jv
bGxpbmdMYXllcklkRnJvbVByZXZpb3VzVHJlZSk7CiAKICAgICBtX3Njcm9sbGluZ0xheWVySWRG
cm9tUHJldmlvdXNUcmVlID0gLTE7CisKKyAgICBtX2NsaWVudC0+b25DYW5EcmF3U3RhdGVDaGFu
Z2VkKGNhbkRyYXcoKSk7CiB9CiAKIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IENDTGF5ZXJUcmVl
SG9zdEltcGw6OmRldGFjaExheWVyVHJlZSgpCkBAIC03MzEsOSArNzM4LDE3IEBAIGJvb2wgQ0NM
YXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZVJlbmRlcmVyKFBhc3NPd25QdHI8Q0NHcmFwaGlj
c0NvbnRleHQ+IGNvbnRlCiAgICAgaWYgKCFtX3Zpc2libGUgJiYgbV9yZW5kZXJlcikKICAgICAg
ICAgIG1fcmVuZGVyZXItPnNldFZpc2libGUobV92aXNpYmxlKTsKIAorICAgIG1fY2xpZW50LT5v
bkNhbkRyYXdTdGF0ZUNoYW5nZWQoY2FuRHJhdygpKTsKKwogICAgIHJldHVybiBtX3JlbmRlcmVy
OwogfQogCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnJlc2V0Q29udGVudHNUZXh0dXJlc1B1
cmdlZCgpCit7CisgICAgbV9jb250ZW50c1RleHR1cmVzUHVyZ2VkID0gZmFsc2U7CisgICAgbV9j
bGllbnQtPm9uQ2FuRHJhd1N0YXRlQ2hhbmdlZChjYW5EcmF3KCkpOworfQorCiB2b2lkIENDTGF5
ZXJUcmVlSG9zdEltcGw6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiBsYXlvdXRWaWV3
cG9ydFNpemUsIGNvbnN0IEludFNpemUmIGRldmljZVZpZXdwb3J0U2l6ZSkKIHsKICAgICBpZiAo
bGF5b3V0Vmlld3BvcnRTaXplID09IG1fbGF5b3V0Vmlld3BvcnRTaXplICYmIGRldmljZVZpZXdw
b3J0U2l6ZSA9PSBtX2RldmljZVZpZXdwb3J0U2l6ZSkKQEAgLTc0Niw2ICs3NjEsOCBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiBsYXlv
dXRWaWV3cG9ydFNpemUsIGNvbgogCiAgICAgaWYgKG1fcmVuZGVyZXIpCiAgICAgICAgIG1fcmVu
ZGVyZXItPnZpZXdwb3J0Q2hhbmdlZCgpOworCisgICAgbV9jbGllbnQtPm9uQ2FuRHJhd1N0YXRl
Q2hhbmdlZChjYW5EcmF3KCkpOwogfQogCiBzdGF0aWMgdm9pZCBhZGp1c3RTY3JvbGxzRm9yUGFn
ZVNjYWxlQ2hhbmdlKENDTGF5ZXJJbXBsKiBsYXllckltcGwsIGZsb2F0IHBhZ2VTY2FsZUNoYW5n
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCBiM2QwN2FjMjljMGE4
MDc4ZjAxN2M4ZTE4OTMwYmEwMDcyOTA2Mzg0Li42OTE5YTUxZTNmZDRjYmI3NjdlYzRhZmU3YzRh
MzJkYjNmOGRhNmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC01
Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHRPbklt
cGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9u
SW1wbFRocmVhZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25WU3luY1BhcmFtZXRlcnNDaGFu
Z2VkKGRvdWJsZSBtb25vdG9uaWNUaW1lYmFzZSwgZG91YmxlIGludGVydmFsSW5TZWNvbmRzKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIG9uQ2FuRHJhd1N0YXRlQ2hhbmdlZChib29sIGNhbkRyYXcp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFk
KFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGlt
ZSkgPSAwOwpAQCAtMTYwLDcgKzE2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNvdXJjZUZy
YW1lTnVtYmVyKGludCBmcmFtZU51bWJlcikgeyBtX3NvdXJjZUZyYW1lTnVtYmVyID0gZnJhbWVO
dW1iZXI7IH0KIAogICAgIGJvb2wgY29udGVudHNUZXh0dXJlc1B1cmdlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGVudHNUZXh0dXJlc1B1cmdlZDsgfQotICAgIHZvaWQgcmVzZXRDb250ZW50c1Rl
eHR1cmVzUHVyZ2VkKCkgeyBtX2NvbnRlbnRzVGV4dHVyZXNQdXJnZWQgPSBmYWxzZTsgfQorICAg
IHZvaWQgcmVzZXRDb250ZW50c1RleHR1cmVzUHVyZ2VkKCk7CiAgICAgc2l6ZV90IG1lbW9yeUFs
bG9jYXRpb25MaW1pdEJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlBbGxvY2F0aW9uTGlt
aXRCeXRlczsgfQogCiAgICAgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgbGF5
b3V0Vmlld3BvcnRTaXplLCBjb25zdCBJbnRTaXplJiBkZXZpY2VWaWV3cG9ydFNpemUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY2hlZHVsZXIuY3BwCmluZGV4IDk5OWEwOGVjOWQwNTE0ODE3NGQxM2MwZmE1Mjg4YmVm
MWIyZGJmNjMuLjg5NGI3MjI2NjgwN2ZkMWE0OThkYTg0MGVhMDdmNzMzY2U0NzI3MGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlci5jcHAKQEAgLTU3LDYgKzU3LDE2IEBAIHZvaWQgQ0NTY2hlZHVsZXI6
OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7
CiB9CiAKK3ZvaWQgQ0NTY2hlZHVsZXI6OnNldENhbkRyYXcoYm9vbCBjYW5EcmF3KQoreworICAg
IG1fc3RhdGVNYWNoaW5lLnNldENhbkRyYXcoY2FuRHJhdyk7CisKKyAgICAvLyBEZWZlciBwcm9j
ZXNzU2NoZWR1bGVBY3Rpb25zIHNvIHdlIGRvbid0IHJlY3Vyc2UgYW5kIGNvbW1pdC9kcmF3Cisg
ICAgLy8gbXVsdGlwbGUgZnJhbWVzLiBXZSBjYW4gY2FsbCBwcm9jZXNzU2NoZWR1bGVkQWN0aW9u
cyBkaXJlY3RseQorICAgIC8vIG9uY2UgaXQgaXMgbm8gbG9uZ2VyIHJlLWVudHJhbnQuCisgICAg
bV9mcmFtZVJhdGVDb250cm9sbGVyLT5zZXRBY3RpdmUobV9zdGF0ZU1hY2hpbmUudnN5bmNDYWxs
YmFja05lZWRlZCgpKTsKK30KKwogdm9pZCBDQ1NjaGVkdWxlcjo6c2V0TmVlZHNDb21taXQoKQog
ewogICAgIG1fc3RhdGVNYWNoaW5lLnNldE5lZWRzQ29tbWl0KCk7CkBAIC0xNDUsMTYgKzE1NSwx
MCBAQCB2b2lkIENDU2NoZWR1bGVyOjp2c3luY1RpY2soKQogICAgIG1fc3RhdGVNYWNoaW5lLmRp
ZExlYXZlVlN5bmMoKTsKIH0KIAotQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1Nj
aGVkdWxlcjo6bmV4dEFjdGlvbigpCi17Ci0gICAgbV9zdGF0ZU1hY2hpbmUuc2V0Q2FuRHJhdyht
X2NsaWVudC0+Y2FuRHJhdygpKTsKLSAgICByZXR1cm4gbV9zdGF0ZU1hY2hpbmUubmV4dEFjdGlv
bigpOwotfQotCiB2b2lkIENDU2NoZWR1bGVyOjpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpCiB7
CiAgICAgLy8gRWFybHkgb3V0IHNvIHdlIGRvbid0IHNwYW0gVFJBQ0VfRVZFTlRTIHdpdGggdXNl
bGVzcyBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucy4KLSAgICBpZiAobmV4dEFjdGlvbigpID09IEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSkgeworICAgIGlmIChtX3N0YXRlTWFj
aGluZS5uZXh0QWN0aW9uKCkgPT0gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05F
KSB7CiAgICAgICAgIG1fZnJhbWVSYXRlQ29udHJvbGxlci0+c2V0QWN0aXZlKG1fc3RhdGVNYWNo
aW5lLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0x
NjMsNyArMTY3LDcgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMo
KQogICAgIC8vIHNldE5lZWRzQ29tbWl0LiBQcm9jZWVlZCB3aXRoIGNhdXRpb24uCiAgICAgQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBhY3Rpb247CiAgICAgZG8gewotICAgICAgICBh
Y3Rpb24gPSBuZXh0QWN0aW9uKCk7CisgICAgICAgIGFjdGlvbiA9IG1fc3RhdGVNYWNoaW5lLm5l
eHRBY3Rpb24oKTsKICAgICAgICAgbV9zdGF0ZU1hY2hpbmUudXBkYXRlU3RhdGUoYWN0aW9uKTsK
ICAgICAgICAgVFJBQ0VfRVZFTlQxKCJjYyIsICJDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxl
ZEFjdGlvbnMoKSIsICJhY3Rpb24iLCBhY3Rpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAppbmRl
eCA2MzY2NGJiNTk4NTg1N2IzMDY0ZjA4Y2Q1ZTc2MzdjMzExZjk0ODk5Li5iODY1YzViOWUwYWY5
YmU1N2U4MjdmOGViZjU0NGNmYWQ0OWIyZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKQEAgLTUy
LDcgKzUyLDYgQEAgc3RydWN0IENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgewog
CiBjbGFzcyBDQ1NjaGVkdWxlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBib29sIGNh
bkRyYXcoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBj
b25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgp
ID0gMDsKQEAgLTgwLDYgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FuQmVnaW5GcmFt
ZShib29sKTsKIAogICAgIHZvaWQgc2V0VmlzaWJsZShib29sKTsKKyAgICB2b2lkIHNldENhbkRy
YXcoYm9vbCk7CiAKICAgICB2b2lkIHNldE5lZWRzQ29tbWl0KCk7CiAKQEAgLTExMyw3ICsxMTMs
NiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENDU2NoZWR1bGVyKENDU2NoZWR1bGVyQ2xpZW50
KiwgUGFzc093blB0cjxDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXI+KTsKIAotICAgIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBY3Rpb24gbmV4dEFjdGlvbigpOwogICAgIHZvaWQgcHJvY2Vzc1NjaGVk
dWxlZEFjdGlvbnMoKTsKIAogICAgIENDU2NoZWR1bGVyQ2xpZW50KiBtX2NsaWVudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAppbmRleCA0MTUxNTZhY2I1
ZTk1NDdlZDBhMDgzZWY1NWUzNTUxZTE4YTRlODU5Li45NTI2NTkwNjQ0M2FjY2U1Y2ExZmVkYzll
MWFkNmRhYWRlNjgzNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmUuY3BwCkBAIC0yNSw2ICsyNSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNs
dWRlICJDQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oIgorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIK
KwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDEzICs0NiwzOCBAQCBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUoKQogICAgICwgbV9pbnNpZGVW
U3luYyhmYWxzZSkKICAgICAsIG1fdmlzaWJsZShmYWxzZSkKICAgICAsIG1fY2FuQmVnaW5GcmFt
ZShmYWxzZSkKLSAgICAsIG1fY2FuRHJhdyh0cnVlKQorICAgICwgbV9jYW5EcmF3KGZhbHNlKQog
ICAgICwgbV9kcmF3SWZQb3NzaWJsZUZhaWxlZChmYWxzZSkKICAgICAsIG1fdGV4dHVyZVN0YXRl
KExBWUVSX1RFWFRVUkVfU1RBVEVfVU5MT0NLRUQpCiAgICAgLCBtX2NvbnRleHRTdGF0ZShDT05U
RVhUX0FDVElWRSkKIHsKIH0KIAorU3RyaW5nIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp0b1N0
cmluZygpCit7CisgICAgVGV4dFN0cmVhbSB0czsKKyAgICB0cyA8PCAibV9jb21taXRTdGF0ZSA9
ICIgPDwgbV9jb21taXRTdGF0ZSA8PCAiOyAiOworICAgIHRzIDw8ICJtX2N1cnJlbnRGcmFtZU51
bWJlciA9ICIgPDwgbV9jdXJyZW50RnJhbWVOdW1iZXIgPDwgIjsgIjsKKyAgICB0cyA8PCAibV9s
YXN0RnJhbWVOdW1iZXJXaGVyZURyYXdXYXNDYWxsZWQgPSAiIDw8IG1fbGFzdEZyYW1lTnVtYmVy
V2hlcmVEcmF3V2FzQ2FsbGVkIDw8ICI7ICI7CisgICAgdHMgPDwgIm1fY29uc2VjdXRpdmVGYWls
ZWREcmF3cyA9ICIgPDwgbV9jb25zZWN1dGl2ZUZhaWxlZERyYXdzIDw8ICI7ICI7CisgICAgdHMg
PDwgIm1fbWF4aW11bU51bWJlck9mRmFpbGVkRHJhd3NCZWZvcmVEcmF3SXNGb3JjZWQgPSAiIDw8
IG1fbWF4aW11bU51bWJlck9mRmFpbGVkRHJhd3NCZWZvcmVEcmF3SXNGb3JjZWQgPDwgIjsgIjsK
KyAgICB0cyA8PCAibV9uZWVkc1JlZHJhdyA9ICIgPDwgbV9uZWVkc1JlZHJhdyA8PCAiOyAiOwor
ICAgIHRzIDw8ICJtX25lZWRzRm9yY2VkUmVkcmF3ID0gIiA8PCBtX25lZWRzRm9yY2VkUmVkcmF3
IDw8ICI7ICI7CisgICAgdHMgPDwgIm1fbmVlZHNGb3JjZWRSZWRyYXdBZnRlck5leHRDb21taXQg
PSAiIDw8IG1fbmVlZHNGb3JjZWRSZWRyYXdBZnRlck5leHRDb21taXQgPDwgIjsgIjsKKyAgICB0
cyA8PCAibV9uZWVkc0NvbW1pdCA9ICIgPDwgbV9uZWVkc0NvbW1pdCA8PCAiOyAiOworICAgIHRz
IDw8ICJtX25lZWRzRm9yY2VkQ29tbWl0ID0gIiA8PCBtX25lZWRzRm9yY2VkQ29tbWl0IDw8ICI7
ICI7CisgICAgdHMgPDwgIm1fbWFpblRocmVhZE5lZWRzTGF5ZXJUZXh0dXJlcyA9ICIgPDwgbV9t
YWluVGhyZWFkTmVlZHNMYXllclRleHR1cmVzIDw8ICI7ICI7CisgICAgdHMgPDwgIm1fdXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmcgPSAiIDw8IG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcg
PDwgIjsgIjsKKyAgICB0cyA8PCAibV9pbnNpZGVWU3luYyA9ICIgPDwgbV9pbnNpZGVWU3luYyA8
PCAiOyAiOworICAgIHRzIDw8ICJtX3Zpc2libGUgPSAiIDw8IG1fdmlzaWJsZSA8PCAiOyAiOwor
ICAgIHRzIDw8ICJtX2NhbkJlZ2luRnJhbWUgPSAiIDw8IG1fY2FuQmVnaW5GcmFtZSA8PCAiOyAi
OworICAgIHRzIDw8ICJtX2NhbkRyYXcgPSAiIDw8IG1fY2FuRHJhdyA8PCAiOyAiOworICAgIHRz
IDw8ICJtX2RyYXdJZlBvc3NpYmxlRmFpbGVkID0gIiA8PCBtX2RyYXdJZlBvc3NpYmxlRmFpbGVk
IDw8ICI7ICI7CisgICAgdHMgPDwgIm1fdGV4dHVyZVN0YXRlID0gIiA8PCBtX3RleHR1cmVTdGF0
ZSA8PCAiOyAiOworICAgIHRzIDw8ICJtX2NvbnRleHRTdGF0ZSA9ICIgPDwgbV9jb250ZXh0U3Rh
dGUgPDwgIjsgIjsKKyAgICByZXR1cm4gdHMucmVsZWFzZSgpOworfQorCiBib29sIENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpoYXNEcmF3blRoaXNGcmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fY3VycmVudEZyYW1lTnVtYmVyID09IG1fbGFzdEZyYW1lTnVtYmVyV2hlcmVEcmF3V2FzQ2Fs
bGVkOwpAQCAtMjMwLDE0ICsyNTcsMTggQEAgdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
c2V0TWFpblRocmVhZE5lZWRzTGF5ZXJUZXh0dXJlcygpCiAKIGJvb2wgQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSBjb25zdAogewotICAgIGlmICghbV92aXNp
YmxlIHx8IG1fY29udGV4dFN0YXRlICE9IENPTlRFWFRfQUNUSVZFKSB7Ci0gICAgICAgIGlmICht
X25lZWRzRm9yY2VkUmVkcmF3IHx8IG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX1VQREFU
SU5HX1JFU09VUkNFUykKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIC8vIFRvIHByZXZl
bnQgbGl2ZS1sb2NrLCB3ZSBtdXN0IGFsd2F5cyB0aWNrIHdoZW4gdXBkYXRpbmcgcmVzb3VyY2Vz
LgorICAgIGlmIChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nIHx8IG1fY29tbWl0U3RhdGUg
PT0gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUykKKyAgICAgICAgcmV0dXJuIHRydWU7
CiAKKyAgICAvLyBJZiB3ZSBjYW4ndCBkcmF3LCBkb24ndCB0aWNrIHVudGlsIHdlIGFyZSBub3Rp
ZmllZCB0aGF0IHdlIGNhbiBkcmF3IGFnYWluLgorICAgIGlmICghbV9jYW5EcmF3KQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCi0gICAgcmV0dXJuIG1fbmVlZHNSZWRyYXcgfHwgbV9u
ZWVkc0ZvcmNlZFJlZHJhdyB8fCBtX2NvbW1pdFN0YXRlID09IENPTU1JVF9TVEFURV9VUERBVElO
R19SRVNPVVJDRVM7CisgICAgaWYgKG1fbmVlZHNGb3JjZWRSZWRyYXcpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgcmV0dXJuIG1fbmVlZHNSZWRyYXcgJiYgbV92aXNpYmxlICYmIG1fY29u
dGV4dFN0YXRlID09IENPTlRFWFRfQUNUSVZFOwogfQogCiB2b2lkIENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpkaWRFbnRlclZTeW5jKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZS5oCmluZGV4IGZlMWIxODBmZTQ5NDc4Mjk5ZjMzNWJhYWQ4MzY2NWRkZDgyYWQyMTAu
LjhiYWJhZmFiOGE4MGUyMjgzNmJjMzc0Njg3YTg1ZmM3NjlkNTY2ZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmlu
ZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZV9oCiAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0xNDgsNiArMTQ5LDggQEAgcHVibGljOgogICAgIC8vIEV4cG9zZWQgZm9yIHRlc3Rp
bmcgcHVycG9zZXMuCiAgICAgdm9pZCBzZXRNYXhpbXVtTnVtYmVyT2ZGYWlsZWREcmF3c0JlZm9y
ZURyYXdJc0ZvcmNlZChpbnQpOwogCisgICAgU3RyaW5nIHRvU3RyaW5nKCk7CisKIHByb3RlY3Rl
ZDoKICAgICBib29sIHNob3VsZERyYXdGb3JjZWQoKSBjb25zdDsKICAgICBib29sIGRyYXdTdXNw
ZW5kZWRVbnRpbENvbW1pdCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oCmluZGV4IDcxZjRmNGY1N2VjZTRhZGYxZTQ2NWEyNDg1OTk3YjVmYzkwYTJlMmQuLmE3YWZk
MGQ5MDFiZTkyYWE1MWYzZGI3ZDY4OTE0YzM5NzE0ZWI5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmgKQEAgLTY5LDYgKzY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRMb3NlQ29udGV4dE9uSW1wbFRocmVhZCgpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9uVlN5bmNQYXJhbWV0ZXJz
Q2hhbmdlZChkb3VibGUgbW9ub3RvbmljVGltZWJhc2UsIGRvdWJsZSBpbnRlcnZhbEluU2Vjb25k
cykgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uQ2FuRHJhd1N0YXRlQ2hhbmdlZChi
b29sIGNhbkRyYXcpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJh
d09uSW1wbFRocmVhZCgpIE9WRVJSSURFIHsgbV9sYXllclRyZWVIb3N0LT5zY2hlZHVsZUNvbXBv
c2l0ZSgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkg
T1ZFUlJJREUgeyBtX2xheWVyVHJlZUhvc3QtPnNjaGVkdWxlQ29tcG9zaXRlKCk7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQ
YXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUp
IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCA2ZDc0MzVkNTY1NDRh
MmEyMjdkNzhiNDMyNjQ3YWVlYTQ1NzRkMDEzLi5kYjQ5YTZhMWQ0NjI4MzVhMDIwNzhjZWQ1OTg3
NDk2Njk5ZjM3YmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMzUyLDYgKzM1
MiwxMyBAQCB2b2lkIENDVGhyZWFkUHJveHk6Om9uVlN5bmNQYXJhbWV0ZXJzQ2hhbmdlZChkb3Vi
bGUgbW9ub3RvbmljVGltZWJhc2UsIGRvdWJsZSBpbgogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhy
ZWFkLT5zZXRUaW1lYmFzZUFuZEludGVydmFsKG1vbm90b25pY1RpbWViYXNlLCBpbnRlcnZhbElu
U2Vjb25kcyk7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6b25DYW5EcmF3U3RhdGVDaGFuZ2Vk
KGJvb2wgY2FuRHJhdykKK3sKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIFRSQUNF
X0VWRU5UMSgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6b25DYW5EcmF3U3RhdGVDaGFuZ2VkIiwgImNh
bkRyYXciLCBjYW5EcmF3KTsKKyAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0Q2FuRHJh
dyhjYW5EcmF3KTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdE9uSW1w
bFRocmVhZCgpCiB7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKQEAgLTU0Miw4ICs1NDks
MTAgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKCkKICAgICBtX2NvbW1pdFJlcXVl
c3RTZW50VG9JbXBsVGhyZWFkID0gZmFsc2U7CiAgICAgbV9mb3JjZWRDb21taXRSZXF1ZXN0ZWQg
PSBmYWxzZTsKIAotICAgIGlmICghbV9sYXllclRyZWVIb3N0LT5pbml0aWFsaXplUmVuZGVyZXJJ
Zk5lZWRlZCgpKQorICAgIGlmICghbV9sYXllclRyZWVIb3N0LT5pbml0aWFsaXplUmVuZGVyZXJJ
Zk5lZWRlZCgpKSB7CisgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiRWFybHlPdXRfSW5pdGlh
bGl6ZUZhaWxlZCIpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKHJlcXVlc3Qt
PmNvbnRlbnRzVGV4dHVyZXNXZXJlRGVsZXRlZCkKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5l
dmljdEFsbENvbnRlbnRUZXh0dXJlcygpOwpAQCAtNTkzLDYgKzYwMiw3IEBAIHZvaWQgQ0NUaHJl
YWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50
KiBjb21wbGV0aW9uCiAgICAgQVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5jb21taXRQ
ZW5kaW5nKCkpOwogCiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKSB7CisgICAgICAgIFRS
QUNFX0VWRU5UMCgiY2MiLCAiRWFybHlPdXRfTm9MYXllclRyZWUiKTsKICAgICAgICAgY29tcGxl
dGlvbi0+c2lnbmFsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MzAsMTQgKzY0MCw2
IEBAIGJvb2wgQ0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fY3VycmVudFRleHR1cmVVcGRhdGVDb250cm9sbGVyT25JbXBsVGhyZWFkLT5o
YXNNb3JlVXBkYXRlcygpOwogfQogCi1ib29sIENDVGhyZWFkUHJveHk6OmNhbkRyYXcoKQotewot
ICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBs
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmNhbkRyYXcoKTsKLX0KLQogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRh
dGVNb3JlUmVzb3VyY2VzKGRvdWJsZSBtb25vdG9uaWNUaW1lTGltaXQpCiB7CiAgICAgVFJBQ0Vf
RVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVz
b3VyY2VzIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggNzJhYzgyNWNhNmRhMGZhYjc1
MDYyNWM0OThmYmE0MDcwNjFlM2RlMS4uYzQ4ZGY5MzA1OTk2YmM0MDNmNjZlYzVjZDlhM2U5YjM2
YzY1ZGVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNzgsMTMgKzc4LDE0IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHRPbkltcGxUaHJlYWQoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFk
KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG9uVlN5bmNQYXJhbWV0ZXJzQ2hhbmdlZChk
b3VibGUgbW9ub3RvbmljVGltZWJhc2UsIGRvdWJsZSBpbnRlcnZhbEluU2Vjb25kcykgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIG9uQ2FuRHJhd1N0YXRlQ2hhbmdlZChib29sIGNhbkRyYXcp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhy
ZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3Vi
bGUgd2FsbENsb2NrVGltZSkgT1ZFUlJJREU7CiAKICAgICAvLyBDQ1NjaGVkdWxlckNsaWVudCBp
bXBsZW1lbnRhdGlvbgotICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBib29sIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdCBPVkVSUklERTsKKwog
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IHNjaGVkdWxlZEFj
dGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgQ0NTY2hl
ZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZv
cmNlZCgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBkMDliYzM2NDllYWViZWM0M2Q4
OWRkNjIzNzQzMzZlYmYyNTYxYzI0Li43OTZhMzE5OGU2NjVjYTE0MzBiN2Q4MDQ3NDEzNzVkNWZm
NGNmYTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtNzAsNyArNzAsOCBAQCBuYW1lc3BhY2Ugewog
Y2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgcHVi
bGljIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgewogcHVibGljOgogICAgIENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0KCkKLSAgICAgICAgOiBtX2RpZFJlcXVlc3RDb21taXQoZmFsc2UpCisgICAg
ICAgIDogbV9vbkNhbkRyYXdTdGF0ZUNoYW5nZWRDYWxsZWQoZmFsc2UpCisgICAgICAgICwgbV9k
aWRSZXF1ZXN0Q29tbWl0KGZhbHNlKQogICAgICAgICAsIG1fZGlkUmVxdWVzdFJlZHJhdyhmYWxz
ZSkKICAgICB7CiAgICAgICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CkBAIC04NCw2
ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHRPbkltcGxU
aHJlYWQoKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBs
ZXRlT25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uVlN5bmNQ
YXJhbWV0ZXJzQ2hhbmdlZChkb3VibGUsIGRvdWJsZSkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVh
bCB2b2lkIG9uQ2FuRHJhd1N0YXRlQ2hhbmdlZChib29sIGNhbkRyYXcpIE9WRVJSSURFIHsgbV9v
bkNhbkRyYXdTdGF0ZUNoYW5nZWRDYWxsZWQgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyBtX2RpZFJlcXVlc3RSZWRyYXcg
PSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkg
T1ZFUlJJREUgeyBtX2RpZFJlcXVlc3RDb21taXQgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lk
IHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxD
Q0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSBPVkVSUklERSB7
IH0KQEAgLTE4NSw2ICsxODcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRGVidWdTY29wZWRTZXRNYWlu
VGhyZWFkQmxvY2tlZCBtX2Fsd2F5c01haW5UaHJlYWRCbG9ja2VkOwogCiAgICAgT3duUHRyPEND
TGF5ZXJUcmVlSG9zdEltcGw+IG1faG9zdEltcGw7CisgICAgYm9vbCBtX29uQ2FuRHJhd1N0YXRl
Q2hhbmdlZENhbGxlZDsKICAgICBib29sIG1fZGlkUmVxdWVzdENvbW1pdDsKICAgICBib29sIG1f
ZGlkUmVxdWVzdFJlZHJhdzsKICAgICBDQ1Njb3BlZFNldHRpbmdzIG1fc2NvcGVkU2V0dGluZ3M7
CkBAIC0xOTUsNiArMTk4LDUzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbWFrZUNvbnRl
eHRDdXJyZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKK1RFU1RfRihDQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdCwgbm90aWZ5SWZDYW5EcmF3Q2hhbmdlZCkKK3sKKyAgICAvLyBOb3RlOiBJdCBp
cyBub3QgcG9zc2libGUgdG8gZGlzYWJsZSB0aGUgcmVuZGVyZXIgb25jZSBpdCBoYXMgYmVlbiBz
ZXQsCisgICAgLy8gc28gd2UgZG8gbm90IG5lZWQgdG8gdGVzdCB0aGF0IGRpc2FibGluZyB0aGUg
cmVuZGVyZXIgbm90aWZpZXMgdXMKKyAgICAvLyB0aGF0IGNhbkRyYXcgY2hhbmdlZC4KKyAgICBF
WFBFQ1RfRkFMU0UobV9ob3N0SW1wbC0+Y2FuRHJhdygpKTsKKyAgICBtX29uQ2FuRHJhd1N0YXRl
Q2hhbmdlZENhbGxlZCA9IGZhbHNlOworCisgICAgc2V0dXBTY3JvbGxBbmRDb250ZW50c0xheWVy
cyhJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+Y2FuRHJh
dygpKTsKKyAgICBFWFBFQ1RfVFJVRShtX29uQ2FuRHJhd1N0YXRlQ2hhbmdlZENhbGxlZCk7Cisg
ICAgbV9vbkNhbkRyYXdTdGF0ZUNoYW5nZWRDYWxsZWQgPSBmYWxzZTsKKworICAgIC8vIFRvZ2ds
ZSB0aGUgcm9vdCBsYXllciB0byBtYWtlIHN1cmUgaXQgdG9nZ2xlcyBjYW5EcmF3CisgICAgbV9o
b3N0SW1wbC0+c2V0Um9vdExheWVyKGFkb3B0UHRyPENDTGF5ZXJJbXBsPigwKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKG1faG9zdEltcGwtPmNhbkRyYXcoKSk7CisgICAgRVhQRUNUX1RSVUUobV9vbkNh
bkRyYXdTdGF0ZUNoYW5nZWRDYWxsZWQpOworICAgIG1fb25DYW5EcmF3U3RhdGVDaGFuZ2VkQ2Fs
bGVkID0gZmFsc2U7CisKKyAgICBzZXR1cFNjcm9sbEFuZENvbnRlbnRzTGF5ZXJzKEludFNpemUo
MTAwLCAxMDApKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5jYW5EcmF3KCkpOworICAg
IEVYUEVDVF9UUlVFKG1fb25DYW5EcmF3U3RhdGVDaGFuZ2VkQ2FsbGVkKTsKKyAgICBtX29uQ2Fu
RHJhd1N0YXRlQ2hhbmdlZENhbGxlZCA9IGZhbHNlOworCisgICAgLy8gVG9nZ2xlIHRoZSBkZXZp
Y2Ugdmlld3BvcnQgc2l6ZSB0byBtYWtlIHN1cmUgaXQgdG9nZ2xlcyBjYW5EcmF3LgorICAgIG1f
aG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwMCwgMTAwKSwgSW50U2l6ZSgwLCAw
KSk7CisgICAgRVhQRUNUX0ZBTFNFKG1faG9zdEltcGwtPmNhbkRyYXcoKSk7CisgICAgRVhQRUNU
X1RSVUUobV9vbkNhbkRyYXdTdGF0ZUNoYW5nZWRDYWxsZWQpOworICAgIG1fb25DYW5EcmF3U3Rh
dGVDaGFuZ2VkQ2FsbGVkID0gZmFsc2U7CisKKyAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNp
emUoSW50U2l6ZSgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKTsKKyAgICBFWFBFQ1RfVFJV
RShtX2hvc3RJbXBsLT5jYW5EcmF3KCkpOworICAgIEVYUEVDVF9UUlVFKG1fb25DYW5EcmF3U3Rh
dGVDaGFuZ2VkQ2FsbGVkKTsKKyAgICBtX29uQ2FuRHJhd1N0YXRlQ2hhbmdlZENhbGxlZCA9IGZh
bHNlOworCisgICAgLy8gVG9nZ2xlIGNvbnRlbnRzIHRleHR1cmVzIHB1cmdlZCB0byBtYWtlIHN1
cmUgaXQgdG9nZ2xlcyBjYW5EcmF3CisgICAgbV9ob3N0SW1wbC0+cmVsZWFzZUNvbnRlbnRzVGV4
dHVyZXMoKTsKKyAgICBFWFBFQ1RfRkFMU0UobV9ob3N0SW1wbC0+Y2FuRHJhdygpKTsKKyAgICBF
WFBFQ1RfVFJVRShtX29uQ2FuRHJhd1N0YXRlQ2hhbmdlZENhbGxlZCk7CisgICAgbV9vbkNhbkRy
YXdTdGF0ZUNoYW5nZWRDYWxsZWQgPSBmYWxzZTsKKworICAgIG1faG9zdEltcGwtPnJlc2V0Q29u
dGVudHNUZXh0dXJlc1B1cmdlZCgpOworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPmNhbkRy
YXcoKSk7CisgICAgRVhQRUNUX1RSVUUobV9vbkNhbkRyYXdTdGF0ZUNoYW5nZWRDYWxsZWQpOwor
ICAgIG1fb25DYW5EcmF3U3RhdGVDaGFuZ2VkQ2FsbGVkID0gZmFsc2U7Cit9CisKIFRFU1RfRihD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsRGVsdGFOb0xheWVycykKIHsKICAgICBBU1NF
UlRfRkFMU0UobV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3Bw
CmluZGV4IDdkZmJiYzAwYjk1NGRmNTI0MTkzZTY5NTFmNWRlNTQyMGM4Y2I3ZjEuLjA5ZTg5Yzg3
ZDRmYzk5ZDRhZDU5ODllZTBhODk4NjU3YjZjZjI4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5j
cHAKQEAgLTEzNiw2ICsxMzYsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwg
VGVzdE5leHRBY3Rpb25CZWdpbnNGcmFtZUlmTmVlZGVkKQogVEVTVChDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QsIFRlc3RTZXRGb3JjZWRSZWRyYXdEb2VzTm90U2V0c05vcm1hbFJlZHJhdykK
IHsKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRDYW5E
cmF3KHRydWUpOwogICAgIHN0YXRlLnNldE5lZWRzRm9yY2VkUmVkcmF3KCk7CiAgICAgRVhQRUNU
X0ZBTFNFKHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7CiAgICAgRVhQRUNUX1RSVUUoc3RhdGUudnN5
bmNDYWxsYmFja05lZWRlZCgpKTsKQEAgLTE0Niw2ICsxNDcsNyBAQCBURVNUKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZhaWxlZERyYXdTZXRzTmVlZHNDb21taXRBbmREb2VzTm90
RHJhd0FnYQogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lIHN0YXRlOwogICAgIHN0YXRlLnNl
dENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBz
dGF0ZS5zZXRDYW5EcmF3KHRydWUpOwogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KCk7CiAgICAg
RVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsKICAgICBFWFBFQ1RfVFJVRShzdGF0
ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOwpAQCAtMTcxLDYgKzE3Myw3IEBAIFRFU1QoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0TmVlZHNSZWRyYXdEdXJpbmdGYWlsZWREcmF3
RG9lc05vdFJlbW92CiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgc3Rh
dGUuc2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOwor
ICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoKTsK
ICAgICBFWFBFQ1RfVFJVRShzdGF0ZS5yZWRyYXdQZW5kaW5nKCkpOwogICAgIEVYUEVDVF9UUlVF
KHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7CkBAIC0xOTksNiArMjAyLDcgQEAgVEVTVChD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDb21taXRBZnRlckZhaWxlZERyYXdBbGxv
d3NEcmF3SW5TYW1lRnJhbWUKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBzdGF0ZTsKICAg
ICBzdGF0ZS5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1
ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKIAogICAgIC8vIFN0YXJ0IGEgY29tbWl0
LgogICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KCk7CkBAIC0yMzksNiArMjQzLDcgQEAgVEVTVChD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDb21taXRBZnRlckZhaWxlZEFuZFN1Y2Nl
c3NmdWxEcmF3RG9lc05vdEEKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBzdGF0ZTsKICAg
ICBzdGF0ZS5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1
ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKIAogICAgIC8vIFN0YXJ0IGEgY29tbWl0
LgogICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KCk7CkBAIC0yOTAsNiArMjk1LDcgQEAgVEVTVChD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGYWlsZWREcmF3c1dpbGxFdmVudHVhbGx5
Rm9yY2VBRHJhd0FmdGVyVGgKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBzdGF0ZTsKICAg
ICBzdGF0ZS5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1
ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKICAgICBzdGF0ZS5zZXRNYXhpbXVtTnVt
YmVyT2ZGYWlsZWREcmF3c0JlZm9yZURyYXdJc0ZvcmNlZCgxKTsKIAogICAgIC8vIFN0YXJ0IGEg
Y29tbWl0LgpAQCAtMzMyLDYgKzMzOCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LCBUZXN0RmFpbGVkRHJhd0lzUmV0cmllZE5leHRWU3luYykKICAgICBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZSBzdGF0ZTsKICAgICBzdGF0ZS5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAg
IHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKIAog
ICAgIC8vIFN0YXJ0IGEgZHJhdy4KICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdygpOwpAQCAtMzYx
LDYgKzM2OCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RG9lc3RE
cmF3VHdpY2VJblNhbWVGcmFtZSkKIHsKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBzdGF0
ZTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1
ZSk7CiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoKTsKICAgICBFWFBFQ1RfVFJVRShzdGF0ZS52
c3luY0NhbGxiYWNrTmVlZGVkKCkpOwogICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKQEAgLTQx
Myw2ICs0MjEsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRB
Y3Rpb25EcmF3c09uVlN5bmMpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Db21taXRT
dGF0ZXM7ICsraSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgMjsgKytqKSB7
CiAgICAgICAgICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgICAgICAgICBzdGF0ZS5zZXRD
YW5EcmF3KHRydWUpOwogICAgICAgICAgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUoYWxsQ29tbWl0
U3RhdGVzW2ldKTsKICAgICAgICAgICAgIGJvb2wgZm9yY2VkRHJhdyA9IGo7CiAgICAgICAgICAg
ICBpZiAoIWZvcmNlZERyYXcpIHsKQEAgLTUyNSw2ICs1MzQsMjggQEAgVEVTVChDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZVRlc3QsIFRlc3RDYW5SZWRyYXdXaXRoV2FpdGluZ0ZvckZpcnN0RHJhd01h
a2VzUHJvZ3IKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9C
RUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIH0KIAorVEVTVChDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QsIFRlc3RWc3luY0NhbGxiYWNrTmVlZGVkT25DYW5EcmF3QW5kUmVzb3Vy
Y2VVcGRhdGVzKQoreworICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRDb21t
aXRTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1dBSVRJTkdfRk9S
X0ZJUlNUX0RSQVcpOworICAgIHN0YXRlLnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CisgICAgc3Rh
dGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CisgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7
CisgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOworICAgIHN0
YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyhmYWxzZSk7CisgICAg
RVhQRUNUX0ZBTFNFKHN0YXRlLnZzeW5jQ2FsbGJhY2tOZWVkZWQoKSk7CisKKyAgICBzdGF0ZS5z
ZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0
ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOworCisgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291
cmNlc1BlbmRpbmcoZmFsc2UpOworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS52c3luY0NhbGxiYWNr
TmVlZGVkKCkpOworCisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKKyAgICBFWFBFQ1RfVFJV
RShzdGF0ZS52c3luY0NhbGxiYWNrTmVlZGVkKCkpOworfQorCiBURVNUKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiB7
CiAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOwpAQCAtNTMyLDYgKzU2Myw3IEBAIFRFU1QoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19PbmVSb3VuZE9mVXBk
YXRlcykKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0VXBk
YXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1
ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB3ZSBiZWdp
biB1cGRhdGUsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCiAgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VT
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwpAQCAtNTYwLDYgKzU5Miw3IEBAIFRFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNPZlVwZGF0
ZXMpCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoZmFsc2UpOwogICAgIHN0YXRlLnNldFVwZGF0
ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUp
OworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAKICAgICAvLyBWZXJpZnkgdGhlIHVwZGF0
ZSBiZWdpbnMsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCiAgICAgc3RhdGUuZGlkRW50
ZXJWU3luYygpOwpAQCAtNTk5LDYgKzYzMiw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNPZlVwZGF0ZXMpCiBURVNUKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFZTeW5jTmVlZGVkV2hlblVwZGF0ZXNQZW5k
aW5nQnV0SW52aXNpYmxlKQogewogICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5z
ZXRDYW5EcmF3KHRydWUpOwogICAgIHN0YXRlLnNldENvbW1pdFN0YXRlKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTKTsKICAgICBzdGF0ZS5z
ZXROZWVkc1JlZHJhdyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZShmYWxzZSk7CkBAIC02
MTYsNiArNjUwLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRh
dGVzX1dpdGhSZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRy
YXcodHJ1ZSk7CiAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2Up
OwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVl
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9V
UERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBCZWdp
biBhbiB1cGRhdGUuCkBAIC02NjMsNiArNjk4LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QsIFRlc3RTZXROZWVkc0NvbW1pdElzTm90TG9zdCkKICAgICBzdGF0ZS5zZXRDYW5C
ZWdpbkZyYW1lKHRydWUpOwogICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwogICAgIHN0
YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVlKTsKIAogICAg
IC8vIEJlZ2luIHRoZSBmcmFtZS4KICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKQEAgLTcwNSw2ICs3
NDEsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZSkK
ICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgc3RhdGUuc2V0Q2FuQmVnaW5GcmFtZSh0cnVl
KTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1
ZSk7CiAKICAgICAvLyBTdGFydCBjbGVhbiBhbmQgc2V0IGNvbW1pdC4KICAgICBzdGF0ZS5zZXRO
ZWVkc0NvbW1pdCh0cnVlKTsKQEAgLTc1Myw2ICs3OTAsNyBAQCBURVNUKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZVdpdGhDb21taXRSZXF1ZXN0SW5iZXR3ZWVuKQog
ICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICBzdGF0ZS5zZXRDYW5CZWdpbkZyYW1lKHRydWUp
OwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuRHJhdyh0cnVl
KTsKIAogICAgIC8vIFN0YXJ0IGNsZWFuIGFuZCBzZXQgY29tbWl0LgogICAgIHN0YXRlLnNldE5l
ZWRzQ29tbWl0KHRydWUpOwpAQCAtODEyLDYgKzg1MCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LCBUZXN0R29lc0ludmlzaWJsZUJlZm9yZUJlZ2luRnJhbWVDb21wbGV0ZXMp
CiAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOwogICAgIHN0YXRlLnNldENhbkJlZ2luRnJhbWUodHJ1
ZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3KHRy
dWUpOwogCiAgICAgLy8gU3RhcnQgY2xlYW4gYW5kIHNldCBjb21taXQuCiAgICAgc3RhdGUuc2V0
TmVlZHNDb21taXQodHJ1ZSk7CkBAIC04NTAsNiArODg5LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QsIFRlc3RDb250ZXh0TG9zdFdoZW5Db21wbGV0ZWx5SWRsZSkKICAgICBT
dGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgc3RhdGUuc2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAg
ICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAK
ICAgICBzdGF0ZS5kaWRMb3NlQ29udGV4dCgpOwogCkBAIC04NzIsNiArOTEyLDcgQEAgVEVTVChD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDb250ZXh0TG9zdFdoZW5JZGxlQW5kQ29t
bWl0UmVxdWVzdGVkV2hpbGUKICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgc3RhdGUuc2V0
Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0
YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAKICAgICBzdGF0ZS5kaWRMb3NlQ29udGV4dCgpOwogCkBA
IC05MDgsNiArOTQ5LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RD
b250ZXh0TG9zdFdoaWxlQ29tbWl0SW5Qcm9ncmVzcykKICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7
CiAgICAgc3RhdGUuc2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxl
KHRydWUpOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAKICAgICAvLyBHZXQgYSBjb21t
aXQgaW4gZmxpZ2h0LgogICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwpAQCAtOTQ5LDYg
Kzk5MSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29udGV4dExv
c3RXaGlsZUNvbW1pdEluUHJvZ3Jlc3NBbmRBbm90aGVyCiAgICAgU3RhdGVNYWNoaW5lIHN0YXRl
OwogICAgIHN0YXRlLnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJs
ZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3KHRydWUpOwogCiAgICAgLy8gR2V0IGEgY29t
bWl0IGluIGZsaWdodC4KICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKQEAgLTk5OSw2
ICsxMDQyLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGaW5pc2hB
bGxSZW5kZXJpbmdXaGlsZUNvbnRleHRMb3N0KQogewogICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsK
ICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7
CiAKICAgICAvLyBDYXVzZSBhIGxvc3QgY29udGV4dCBsb3N0LgogICAgIHN0YXRlLmRpZExvc2VD
b250ZXh0KCk7CkBAIC0xMDM3LDYgKzEwODEsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdCwgVGVzdEJlZ2luRnJhbWVXaGVuQ2FuQmVnaW5GcmFtZUZhbHNlQW5kRm9yY2VDbwog
ewogICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOwor
ICAgIHN0YXRlLnNldENhbkRyYXcodHJ1ZSk7CiAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1
ZSk7CiAgICAgc3RhdGUuc2V0TmVlZHNGb3JjZWRDb21taXQodHJ1ZSk7CiAgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7CkBAIC0xMDY5LDYgKzExMTQsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdCwgVGVzdEJlZ2luRnJhbWVXaGVuQ29udGV4dExvc3QpCiAgICAgU3RhdGVNYWNoaW5l
IHN0YXRlOwogICAgIHN0YXRlLnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAgICAgc3RhdGUuc2V0
VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRDYW5EcmF3KHRydWUpOwogICAgIHN0YXRlLnNl
dE5lZWRzQ29tbWl0KHRydWUpOwogICAgIHN0YXRlLnNldE5lZWRzRm9yY2VkQ29tbWl0KHRydWUp
OwogICAgIHN0YXRlLmRpZExvc2VDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKaW5kZXggOTNmZjY2ZWEyNDg2YjFiYzgxMjdm
NWI1YWNjNzc5MmNjMjY0YTU1Yy4uZWI5MzNmOTJmZWM0NDRkOTdhZmYxNTc5OGI3YmNkZTg1MjJk
OWMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxl
clRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJU
ZXN0LmNwcApAQCAtNDQsMTQgKzQ0LDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fYWN0
aW9ucy5jbGVhcigpOwogICAgICAgICBtX2hhc01vcmVSZXNvdXJjZVVwZGF0ZXMgPSBmYWxzZTsK
LSAgICAgICAgbV9jYW5EcmF3ID0gdHJ1ZTsKICAgICAgICAgbV9kcmF3V2lsbEhhcHBlbiA9IHRy
dWU7CiAgICAgICAgIG1fc3dhcFdpbGxIYXBwZW5JZkRyYXdIYXBwZW5zID0gdHJ1ZTsKICAgICAg
ICAgbV9udW1EcmF3cyA9IDA7CiAgICAgfQogCiAgICAgdm9pZCBzZXRIYXNNb3JlUmVzb3VyY2VV
cGRhdGVzKGJvb2wgYikgeyBtX2hhc01vcmVSZXNvdXJjZVVwZGF0ZXMgPSBiOyB9Ci0gICAgdm9p
ZCBzZXRDYW5EcmF3KGJvb2wgYikgeyBtX2NhbkRyYXcgPSBiOyB9CiAKICAgICBpbnQgbnVtRHJh
d3MoKSBjb25zdCB7IHJldHVybiBtX251bURyYXdzOyB9CiAgICAgaW50IG51bUFjdGlvbnMoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KG1fYWN0aW9ucy5zaXplKCkpOyB9CkBAIC02
NSw4ICs2Myw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IHZpcnR1YWwgYm9vbCBjYW5EcmF3KCkgT1ZFUlJJREUgeyByZXR1cm4gbV9jYW5EcmF3OyB9CiAg
ICAgdmlydHVhbCBib29sIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX2hhc01vcmVSZXNvdXJjZVVwZGF0ZXM7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkgT1ZFUlJJREUgeyBtX2FjdGlvbnMucHVzaF9iYWNr
KCJzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lIik7IH0KICAgICB2aXJ0dWFsIENDU2NoZWR1bGVk
QWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3Np
YmxlKCkgT1ZFUlJJREUKICAgICB7CkBAIC05MSw3ICs4OSw2IEBAIHB1YmxpYzoKIAogcHJvdGVj
dGVkOgogICAgIGJvb2wgbV9oYXNNb3JlUmVzb3VyY2VVcGRhdGVzOwotICAgIGJvb2wgbV9jYW5E
cmF3OwogICAgIGJvb2wgbV9kcmF3V2lsbEhhcHBlbjsKICAgICBib29sIG1fc3dhcFdpbGxIYXBw
ZW5JZkRyYXdIYXBwZW5zOwogICAgIGludCBtX251bURyYXdzOwpAQCAtMTA1LDYgKzEwMiw3IEBA
IFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0KQogICAgIE93blB0cjxDQ1NjaGVk
dWxlcj4gc2NoZWR1bGVyID0gQ0NTY2hlZHVsZXI6OmNyZWF0ZSgmY2xpZW50LCBhZG9wdFB0cihu
ZXcgQ0NGcmFtZVJhdGVDb250cm9sbGVyKHRpbWVTb3VyY2UpKSk7CiAgICAgc2NoZWR1bGVyLT5z
ZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHNjaGVkdWxlci0+c2V0VmlzaWJsZSh0cnVlKTsK
KyAgICBzY2hlZHVsZXItPnNldENhbkRyYXcodHJ1ZSk7CiAKICAgICAvLyBTZXROZWVkc0NvbW1p
dCBzaG91bGQgYmVnaW4gdGhlIGZyYW1lLgogICAgIHNjaGVkdWxlci0+c2V0TmVlZHNDb21taXQo
KTsKQEAgLTEzOSw2ICsxMzcsNyBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1p
dEFmdGVyQmVnaW5GcmFtZSkKICAgICBPd25QdHI8Q0NTY2hlZHVsZXI+IHNjaGVkdWxlciA9IEND
U2NoZWR1bGVyOjpjcmVhdGUoJmNsaWVudCwgYWRvcHRQdHIobmV3IENDRnJhbWVSYXRlQ29udHJv
bGxlcih0aW1lU291cmNlKSkpOwogICAgIHNjaGVkdWxlci0+c2V0Q2FuQmVnaW5GcmFtZSh0cnVl
KTsKICAgICBzY2hlZHVsZXItPnNldFZpc2libGUodHJ1ZSk7CisgICAgc2NoZWR1bGVyLT5zZXRD
YW5EcmF3KHRydWUpOwogCiAgICAgLy8gU2V0TmVkc0NvbW1pdCBzaG91bGQgYmVnaW4gdGhlIGZy
YW1lLgogICAgIHNjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKQEAgLTE3Miw2ICsxNzEsNyBA
QCBURVNUKENDU2NoZWR1bGVyVGVzdCwgVGV4dHVyZUFjcXVpc2l0aW9uQ29sbGlzaW9uKQogICAg
IE93blB0cjxDQ1NjaGVkdWxlcj4gc2NoZWR1bGVyID0gQ0NTY2hlZHVsZXI6OmNyZWF0ZSgmY2xp
ZW50LCBhZG9wdFB0cihuZXcgQ0NGcmFtZVJhdGVDb250cm9sbGVyKHRpbWVTb3VyY2UpKSk7CiAg
ICAgc2NoZWR1bGVyLT5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHNjaGVkdWxlci0+c2V0
VmlzaWJsZSh0cnVlKTsKKyAgICBzY2hlZHVsZXItPnNldENhbkRyYXcodHJ1ZSk7CiAKICAgICBz
Y2hlZHVsZXItPnNldE5lZWRzQ29tbWl0KCk7CiAgICAgc2NoZWR1bGVyLT5zZXRNYWluVGhyZWFk
TmVlZHNMYXllclRleHR1cmVzKCk7CkBAIC0yMTAsNiArMjEwLDcgQEAgVEVTVChDQ1NjaGVkdWxl
clRlc3QsIFZpc2liaWxpdHlTd2l0Y2hXaXRoVGV4dHVyZUFjcXVpc2l0aW9uKQogICAgIE93blB0
cjxDQ1NjaGVkdWxlcj4gc2NoZWR1bGVyID0gQ0NTY2hlZHVsZXI6OmNyZWF0ZSgmY2xpZW50LCBh
ZG9wdFB0cihuZXcgQ0NGcmFtZVJhdGVDb250cm9sbGVyKHRpbWVTb3VyY2UpKSk7CiAgICAgc2No
ZWR1bGVyLT5zZXRDYW5CZWdpbkZyYW1lKHRydWUpOwogICAgIHNjaGVkdWxlci0+c2V0VmlzaWJs
ZSh0cnVlKTsKKyAgICBzY2hlZHVsZXItPnNldENhbkRyYXcodHJ1ZSk7CiAKICAgICBzY2hlZHVs
ZXItPnNldE5lZWRzQ29tbWl0KCk7CiAgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUo
KTsKQEAgLTI3Myw2ICsyNzQsNyBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdFJlZHJh
d0luc2lkZURyYXcpCiAgICAgY2xpZW50LnNldFNjaGVkdWxlcihzY2hlZHVsZXIuZ2V0KCkpOwog
ICAgIHNjaGVkdWxlci0+c2V0Q2FuQmVnaW5GcmFtZSh0cnVlKTsKICAgICBzY2hlZHVsZXItPnNl
dFZpc2libGUodHJ1ZSk7CisgICAgc2NoZWR1bGVyLT5zZXRDYW5EcmF3KHRydWUpOwogCiAgICAg
c2NoZWR1bGVyLT5zZXROZWVkc1JlZHJhdygpOwogICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+
cmVkcmF3UGVuZGluZygpKTsKQEAgLTI5OSw2ICszMDEsNyBAQCBURVNUKENDU2NoZWR1bGVyVGVz
dCwgUmVxdWVzdFJlZHJhd0luc2lkZUZhaWxlZERyYXcpCiAgICAgY2xpZW50LnNldFNjaGVkdWxl
cihzY2hlZHVsZXIuZ2V0KCkpOwogICAgIHNjaGVkdWxlci0+c2V0Q2FuQmVnaW5GcmFtZSh0cnVl
KTsKICAgICBzY2hlZHVsZXItPnNldFZpc2libGUodHJ1ZSk7CisgICAgc2NoZWR1bGVyLT5zZXRD
YW5EcmF3KHRydWUpOwogICAgIGNsaWVudC5zZXREcmF3V2lsbEhhcHBlbihmYWxzZSk7CiAKICAg
ICBzY2hlZHVsZXItPnNldE5lZWRzUmVkcmF3KCk7CkBAIC0zNzEsNiArMzc0LDcgQEAgVEVTVChD
Q1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRJbnNpZGVEcmF3KQogICAgIGNsaWVudC5zZXRT
Y2hlZHVsZXIoc2NoZWR1bGVyLmdldCgpKTsKICAgICBzY2hlZHVsZXItPnNldENhbkJlZ2luRnJh
bWUodHJ1ZSk7CiAgICAgc2NoZWR1bGVyLT5zZXRWaXNpYmxlKHRydWUpOworICAgIHNjaGVkdWxl
ci0+c2V0Q2FuRHJhdyh0cnVlKTsKIAogICAgIHNjaGVkdWxlci0+c2V0TmVlZHNSZWRyYXcoKTsK
ICAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CkBAIC0zOTgsNiAr
NDAyLDcgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRJbnNpZGVGYWlsZWRE
cmF3KQogICAgIGNsaWVudC5zZXRTY2hlZHVsZXIoc2NoZWR1bGVyLmdldCgpKTsKICAgICBzY2hl
ZHVsZXItPnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAgICAgc2NoZWR1bGVyLT5zZXRWaXNpYmxl
KHRydWUpOworICAgIHNjaGVkdWxlci0+c2V0Q2FuRHJhdyh0cnVlKTsKICAgICBjbGllbnQuc2V0
RHJhd1dpbGxIYXBwZW4oZmFsc2UpOwogCiAgICAgc2NoZWR1bGVyLT5zZXROZWVkc1JlZHJhdygp
OwpAQCAtNDQwLDYgKzQ0NSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBOb0JlZ2luRnJhbWVX
aGVuRHJhd0ZhaWxzKQogICAgIGNsaWVudC5zZXRTY2hlZHVsZXIoc2NoZWR1bGVyLmdldCgpKTsK
ICAgICBzY2hlZHVsZXItPnNldENhbkJlZ2luRnJhbWUodHJ1ZSk7CiAgICAgc2NoZWR1bGVyLT5z
ZXRWaXNpYmxlKHRydWUpOworICAgIHNjaGVkdWxlci0+c2V0Q2FuRHJhdyh0cnVlKTsKIAogICAg
IEVYUEVDVF9FUSgwLCBjb250cm9sbGVyUHRyLT5udW1GcmFtZXNQZW5kaW5nKCkpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>