<?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>69049</bug_id>
          
          <creation_ts>2011-09-28 17:59:47 -0700</creation_ts>
          <short_desc>[chromium] Extract scheduling logic from CCThreadProxy to its own class</short_desc>
          <delta_ts>2011-10-04 15:37:39 -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="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>enne</cc>
    
    <cc>kbr</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>475141</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-28 17:59:47 -0700</bug_when>
    <thetext>[chromium] Extract scheduling logic from CCThreadProxy to its own class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475151</commentid>
    <comment_count>1</comment_count>
      <attachid>109107</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-28 18:06:34 -0700</bug_when>
    <thetext>Created attachment 109107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475437</commentid>
    <comment_count>2</comment_count>
      <attachid>109107</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-09-29 08:44:42 -0700</bug_when>
    <thetext>Comment on attachment 109107
Patch

Looks like this patch needs to be merged against TOT. Could enne or nduca do an unofficial review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475441</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-29 08:54:28 -0700</bug_when>
    <thetext>I&apos;ll merge and post a new patch - I also think that upon reflection I&apos;m not doing the commit-then-redraw stuff correctly, so I&apos;ll revisit that as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475837</commentid>
    <comment_count>4</comment_count>
      <attachid>109241</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-29 19:30:23 -0700</bug_when>
    <thetext>Created attachment 109241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475838</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-29 19:32:11 -0700</bug_when>
    <thetext>Updated and moved the commitThenRedraw logic to CCLayerTreeHost, which is where I think it really belongs. The behavior now is that calling commitThenRedraw requests a commit and then sets a bit on the main thread side such that after the next commit a redraw is requested, regardless of what&apos;s happened on the thread side.  This is what the callsites really intend and is simpler to boot.

One side effect of this is that now CCScheduler has basically no logic at all and the tests are pretty tautological, but I think that&apos;s an OK problem to have - we can expand this when we add more sophisticated scheduling logic with the infrastructure already in place to test it, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475839</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-29 19:32:48 -0700</bug_when>
    <thetext>Another nice effect of this patch is that with it applied you can run the layout tests in threaded mode without hitting the ASSERT(!m_beginFram...) in finishAllRenderingOnCCThread() on every single test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476303</commentid>
    <comment_count>7</comment_count>
      <attachid>109343</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-30 14:13:37 -0700</bug_when>
    <thetext>Created attachment 109343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477071</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-10-03 10:47:52 -0700</bug_when>
    <thetext>Requesting again that enne, nduca or vangelis do the unofficial review of this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477159</commentid>
    <comment_count>9</comment_count>
      <attachid>109343</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-10-03 12:46:20 -0700</bug_when>
    <thetext>Comment on attachment 109343
Patch

I&apos;m not qualified to fully review this patch (much less no one asked me to =) ), but I did have some minor comments, particularly on the tests.

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.h:56
&gt; +    void didCommit();
&gt; +    void didDraw();

Would it be OK to re-name these with a more command-like verb phrase?   At first I thought these were boolean accessors.  What about something like &quot;resetPendingCommit&quot; ?

&gt; Source/WebKit/chromium/tests/CCSchedulerTest.cpp:69
&gt; +    m_scheduler-&gt;requestCommit();
&gt; +    m_scheduler-&gt;requestCommit();

If we want to make sure that requestCommit() calls scheduleBeginFrameAndCommit() on the first call, maybe we should add another EXPECT_CALL(...).Times(0) in-between these two calls to requestCommit().

Also, though its not technically necessary, in my tests I felt more comfortable explicitly using Mock::VerifyAndClearExpectations, both for readability and safety... especially if we use .Times(0).  The semantics of EXPECT_CALL does not &quot;retire&quot; previous expectations.

&gt; Source/WebKit/chromium/tests/CCSchedulerTest.cpp:73
&gt; +    m_scheduler-&gt;didCommit();
&gt; +    m_scheduler-&gt;requestCommit();

The same thing might apply here, too.  Maybe we could just move the EXPECT_CALL one line down?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477168</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-03 12:58:12 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; Source/WebKit/chromium/tests/CCSchedulerTest.cpp:69
&gt; &gt; +    m_scheduler-&gt;requestCommit();
&gt; &gt; +    m_scheduler-&gt;requestCommit();
&gt; 
&gt; If we want to make sure that requestCommit() calls scheduleBeginFrameAndCommit() on the first call, maybe we should add another EXPECT_CALL(...).Times(0) in-between these two calls to requestCommit().

I&apos;m trying to assert that I get exactly one call to scheduleBeginFrameAndCommit() in response to these two calls - and from local testing I think that&apos;s the behavior I was getting.  I&apos;d consider this section failing if I got 0 or 2+ calls, but beyond that I&apos;m not trying to be too precise - it&apos;s not part of the test whether the first call or the second call yields the sBFAC(), for example.

&gt; 
&gt; Also, though its not technically necessary, in my tests I felt more comfortable explicitly using Mock::VerifyAndClearExpectations, both for readability and safety... especially if we use .Times(0).  The semantics of EXPECT_CALL does not &quot;retire&quot; previous expectations.
&gt; 

I&apos;m not sure I fully grok the EXPECT_CALL semantics here - the code I wrote is based mostly off of local experiments, so it&apos;s possible I&apos;m not doing it correctly.  I find the retiring logic for the mock expectations to be pretty confusing (or maybe it&apos;s just the docs).

I&apos;m not sure when exactly to use Mock::VerifyAndClearExpectations().  Does that cause the test to immediately fail if there are unfulfilled expectations at that point?  The fact that it only shows up in the CookBook and not in the general tutorials makes me wonder if it&apos;s supposed to be used all the time.  When I set new expectations on a mock does that action cause it to verify previously set expectations are already fulfilled?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477193</commentid>
    <comment_count>11</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-10-03 13:32:33 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; &gt; Source/WebKit/chromium/tests/CCSchedulerTest.cpp:69
&gt; &gt; &gt; +    m_scheduler-&gt;requestCommit();
&gt; &gt; &gt; +    m_scheduler-&gt;requestCommit();
&gt; &gt; 
&gt; &gt; If we want to make sure that requestCommit() calls scheduleBeginFrameAndCommit() on the first call, maybe we should add another EXPECT_CALL(...).Times(0) in-between these two calls to requestCommit().
&gt; 
&gt; I&apos;m trying to assert that I get exactly one call to scheduleBeginFrameAndCommit() in response to these two calls - and from local testing I think that&apos;s the behavior I was getting.  I&apos;d consider this section failing if I got 0 or 2+ calls, but beyond that I&apos;m not trying to be too precise - it&apos;s not part of the test whether the first call or the second call yields the sBFAC(), for example.
&gt; 
&gt; &gt; 
&gt; &gt; Also, though its not technically necessary, in my tests I felt more comfortable explicitly using Mock::VerifyAndClearExpectations, both for readability and safety... especially if we use .Times(0).  The semantics of EXPECT_CALL does not &quot;retire&quot; previous expectations.
&gt; &gt; 
&gt; 
&gt; I&apos;m not sure I fully grok the EXPECT_CALL semantics here - the code I wrote is based mostly off of local experiments, so it&apos;s possible I&apos;m not doing it correctly.  I find the retiring logic for the mock expectations to be pretty confusing (or maybe it&apos;s just the docs).
&gt; 
&gt; I&apos;m not sure when exactly to use Mock::VerifyAndClearExpectations().  Does that cause the test to immediately fail if there are unfulfilled expectations at that point?  The fact that it only shows up in the CookBook and not in the general tutorials makes me wonder if it&apos;s supposed to be used all the time.  When I set new expectations on a mock does that action cause it to verify previously set expectations are already fulfilled?

As I understand it, an expectation is &quot;retired&quot; at the destructor, or whenever we explicitly tell it (through  .retiresOnSaturation, or Mock::VerifyAndClearExpectations).   If we specify an expectation on the same function (even if we expect different parameters or behavior), it takes precedence over the older expectation.  I think their primary reason for doing this was to allow &quot;default expectations&quot; to be specified, and then users can override those expectations without knowing about the default.  If their new expectations get retired, it goes back to the default expectations.

However, because of this behavior, its also possible to retire an expectation and accidentally have a previous expectation cause an error (or worse, a cause a false positive).   So, for me personally, to avoid unnecessary &quot;cognitive load&quot; trying to think about it, and to avoid accidental error-prone code, I prefer to always verify and clear expectations before making a new expectation on the same function.  I also prefer to avoid .retiresOnSaturation, because in special cases (like expecting 0 calls) the semantics seem unclear and error-prone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477197</commentid>
    <comment_count>12</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-10-03 13:34:17 -0700</bug_when>
    <thetext>Oh and to answer the other part of your question, verifyAndClearExpectations causes the expectation to be verified exactly at that point (as opposed to waiting until the destructor).  If expectations are not met by then, the test case fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477218</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-03 13:50:10 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #9)
&gt; &gt; &gt; &gt; Source/WebKit/chromium/tests/CCSchedulerTest.cpp:69
&gt; &gt; &gt; &gt; +    m_scheduler-&gt;requestCommit();
&gt; &gt; &gt; &gt; +    m_scheduler-&gt;requestCommit();
&gt; &gt; &gt; 
&gt; &gt; &gt; If we want to make sure that requestCommit() calls scheduleBeginFrameAndCommit() on the first call, maybe we should add another EXPECT_CALL(...).Times(0) in-between these two calls to requestCommit().
&gt; &gt; 
&gt; &gt; I&apos;m trying to assert that I get exactly one call to scheduleBeginFrameAndCommit() in response to these two calls - and from local testing I think that&apos;s the behavior I was getting.  I&apos;d consider this section failing if I got 0 or 2+ calls, but beyond that I&apos;m not trying to be too precise - it&apos;s not part of the test whether the first call or the second call yields the sBFAC(), for example.
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; Also, though its not technically necessary, in my tests I felt more comfortable explicitly using Mock::VerifyAndClearExpectations, both for readability and safety... especially if we use .Times(0).  The semantics of EXPECT_CALL does not &quot;retire&quot; previous expectations.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; I&apos;m not sure I fully grok the EXPECT_CALL semantics here - the code I wrote is based mostly off of local experiments, so it&apos;s possible I&apos;m not doing it correctly.  I find the retiring logic for the mock expectations to be pretty confusing (or maybe it&apos;s just the docs).
&gt; &gt; 
&gt; &gt; I&apos;m not sure when exactly to use Mock::VerifyAndClearExpectations().  Does that cause the test to immediately fail if there are unfulfilled expectations at that point?  The fact that it only shows up in the CookBook and not in the general tutorials makes me wonder if it&apos;s supposed to be used all the time.  When I set new expectations on a mock does that action cause it to verify previously set expectations are already fulfilled?
&gt; 
&gt; As I understand it, an expectation is &quot;retired&quot; at the destructor, or whenever we explicitly tell it (through  .retiresOnSaturation, or Mock::VerifyAndClearExpectations).   If we specify an expectation on the same function (even if we expect different parameters or behavior), it takes precedence over the older expectation.  I think their primary reason for doing this was to allow &quot;default expectations&quot; to be specified, and then users can override those expectations without knowing about the default.  If their new expectations get retired, it goes back to the default expectations.
&gt; 

I see.  So there are two possible failures for this case - too many calls or too few.  I&apos;ve set up a no-call expectation for all mock functions in the test constructor, so if an expectation is satisfied and then the mock is called again, it&apos;ll fail immediately because there aren&apos;t any valid expectations for it with an error like this:

../../third_party/WebKit/Source/WebKit/chromium/tests/CCSchedulerTest.cpp:67: Failure
Mock function called more times than expected - returning directly.
    Function call: scheduleBeginFrameAndCommit()
         Expected: to be called once
           Actual: called twice - over-saturated and active


But that won&apos;t catch the case where we don&apos;t get the call we expect.  So the concern is that we&apos;ll miss a call, and then later in the same testcase set a new expectation on that mock that retroactively makes the test pass?  I think I get the theory but I can&apos;t figure out how to construct this scenario in an actual test - do you know how this would work?

&gt; However, because of this behavior, its also possible to retire an expectation and accidentally have a previous expectation cause an error (or worse, a cause a false positive).   So, for me personally, to avoid unnecessary &quot;cognitive load&quot; trying to think about it, and to avoid accidental error-prone code, I prefer to always verify and clear expectations before making a new expectation on the same function.  I also prefer to avoid .retiresOnSaturation, because in special cases (like expecting 0 calls) the semantics seem unclear and error-prone.

I think it&apos;s more important that we understand our tools than to try to second-guess them.  This mocking stuff is definitely pretty particular (and I&apos;m starting to question our use of it if we can&apos;t even figure out the basics).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477220</commentid>
    <comment_count>14</comment_count>
      <attachid>109525</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-03 13:50:32 -0700</bug_when>
    <thetext>Created attachment 109525
merged up against ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477222</commentid>
    <comment_count>15</comment_count>
      <attachid>109526</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-03 13:51:44 -0700</bug_when>
    <thetext>Created attachment 109526
sort gypi entries</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477978</commentid>
    <comment_count>16</comment_count>
      <attachid>109526</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-10-04 14:46:52 -0700</bug_when>
    <thetext>Comment on attachment 109526
sort gypi entries

This all looks reasonable to me. Unofficial r+ .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477989</commentid>
    <comment_count>17</comment_count>
      <attachid>109526</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-10-04 15:08:35 -0700</bug_when>
    <thetext>Comment on attachment 109526
sort gypi entries

Thanks. rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478014</commentid>
    <comment_count>18</comment_count>
      <attachid>109526</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-04 15:37:33 -0700</bug_when>
    <thetext>Comment on attachment 109526
sort gypi entries

Clearing flags on attachment: 109526

Committed r96655: &lt;http://trac.webkit.org/changeset/96655&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478015</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-04 15:37:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109107</attachid>
            <date>2011-09-28 18:06:34 -0700</date>
            <delta_ts>2011-09-29 19:30:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69049-20110928180633.patch</filename>
            <type>text/plain</type>
            <size>41683</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYxNzMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhNGM2NjlkZjlmMGI4MTU2
MTcyMTMxNzU0NTUzYjIwY2YzNDA1YzAxLi43NDJjYjJkOTc1OWM5ZDU5YmEyMDcwYjhiMTkwMzEw
NzM1Y2QyNTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzUgQEAKKzIwMTEtMDktMjggIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4
dHJhY3Qgc2NoZWR1bGluZyBsb2dpYyBmcm9tIENDVGhyZWFkUHJveHkgdG8gaXRzIG93biBjbGFz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwNDkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
cnRpYWxseSBleHRyYWN0cyB0aGUgY29tbWl0L2RyYXcgc2NoZWR1bGluZyBmcm9tIENDVGhyZWFk
UHJveHkgdG8gYSBzZXBhcmF0ZSBpc29sYXRlZCBjbGFzcy4gVGhpcyBtYWtlcworICAgICAgICB0
aGUgY29tbWl0L2RyYXcgbG9naWMgZWFzaWVyIHRvIHRlc3QsIHVuZGVyc3RhbmQgYW5kIGV4dGVu
ZC4KKworICAgICAgICBUaGVyZSBpcyBvbmUgc3VidGxlIGJlaGF2aW9yIGNoYW5nZSBoZXJlIHRv
IHRoZSB3YXkgdGhhdCB0aGUgZnVuY3Rpb24gZm9ybWVybHkga25vd24gYXMKKyAgICAgICAgQ0NM
YXllclRyZWVIb3N0OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdyB3b3Jrcy4gUHJldmlvdXNseSwg
dGhpcyB3b3VsZCB0cmlnZ2VyIGEgYmVnaW4gZnJhbWUgbWVzc2FnZSwgaWYgb25lCisgICAgICAg
IHdhc24ndCBwZW5kaW5nLCBhbmQgdGhlbiB0cmlnZ2VyIGEgcmVkcmF3IGlmIG9uZSB3YXNuJ3Qg
cGVuZGluZy4gVGhpcyB3YXMgc3VidGx5IHdyb25nIC0gdGhlIGludGVudCBvZiB0aGF0IGNhbGwK
KyAgICAgICAgaXMgdGhhdCBhIHJlZHJhdyBzaG91bGQgaGFwcGVuIGFmdGVyIHRoZSBjb21taXQu
IEl0IGlzbid0IHVzZWZ1bCB0byBkcmF3IGJlZm9yZSB0aGUgY29tbWl0IG9jY3Vycy4gVGhpcyBw
YXRjaAorICAgICAgICBjaGFuZ2VzIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0byBzZXROZWVk
c0NvbW1pdFRoZW5SZWRyYXcgYW5kIGFzc29jaWF0ZXMgdGhlIHJlZHJhdyBsb2dpYyB3aXRoIHRo
YXQgY29tbWl0LAorICAgICAgICBzbyB3ZSBvbmx5IHJlZHJhdyBhZnRlciB0aGUgY29tbWl0IGhh
cHBlbnMuIFRoaXMgbG9naWMgaXNuJ3QgcGVyZmVjdCBpbiB0aGUgY29tcG9zaXRlQW5kUmVhZGJh
Y2soKSBjYXNlIGJ1dCBJCisgICAgICAgIHRoaW5rIGl0J3MgY2xvc2VyIHRvIHdoYXQgd2Ugd2Fu
dC4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBDQ1NjaGVkdWxlclRlc3QgdW5pdCB0ZXN0cywg
Q0NMYXllclRyZWVIb3N0VGVzdCB1bml0IHRlc3RzLCBhbmQgY29tcG9zaXRpbmcvIGxheW91dCB0
ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdDo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0OjpzZXRWaXNpYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNDU2No
ZWR1bGVyOjpDQ1NjaGVkdWxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6cmVx
dWVzdENvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6cmVxdWVzdENvbW1p
dFRoZW5SZWRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnJlcXVlc3RSZWRy
YXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OmRpZENvbW1pdCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6ZGlkRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDQ1NjaGVkdWxlckNsaWVudDo6fkNDU2NoZWR1bGVyQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2NoZWR1bGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6
OmNvbW1pdFBlbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnJlZHJhd1Bl
bmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnJlZHJhd0FmdGVyQ29tbWl0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OnNldE5l
ZWRzQ29tbWl0VGhlblJlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFBy
b3h5OjpzZXROZWVkc1JlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFBy
b3h5OjpyZWNyZWF0ZUNvbnRleHRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Npbmds
ZVRocmVhZFByb3h5Ojpkb0NvbXBvc2l0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ6On5DQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ6OnNj
aGVkdWxlQmVnaW5GcmFtZUFuZENvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFBy
b3h5U2NoZWR1bGVyQ2xpZW50OjpzY2hlZHVsZURyYXdBbmRQcmVzZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ6OkNDVGhyZWFkUHJveHlTY2hlZHVs
ZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94
eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpjb21wb3NpdGVBbmRSZWFkYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdE9uQ0NUaHJl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRUaGVu
UmVkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0
VGhlblJlZHJhd09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6
c2V0TmVlZHNSZWRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0TmVl
ZHNSZWRyYXdPbkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmZp
bmlzaEFsbFJlbmRlcmluZ09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6b2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tGcm9tQ0NUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Y3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tP
bkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVB
bmRDb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Y29tbWl0T25DQ1Ro
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzQW5kUHJl
c2VudE9uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlh
bGl6ZUltcGxPbkNDVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisKIDIwMTEtMDktMjcgIE1paGFpIFBhcnBhcml0YSAgPG1p
aGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk2
MTQxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDFjM2JjMDA4NGFjNzI2MzRjZGI3YmM1NzMyMzdhNmNm
ZWE5NjQzYTcuLmEyNmQwZjJhZTE2NDczYzc1NTk5NDJlNGRiMzMwY2QyNDAwZmNiNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTM1MTAsMTUgKzM1MTAsMTcgQEAKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01haW5UaHJlYWRUYXNrLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllcklt
cGwuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94
eS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5
LmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwJywKKyAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZC5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkVGFzay5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5o
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGEyNWJiZTYxNmRkZTllMTUw
ZGVlNDI3MjQzMGI4NDgyNjhkMzEzZDYuLjYzZDkxYmY0ZDk2MGE3NTY1MzAzN2UwODcxM2JhYjQ1
ZGMwZTVmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtNjAsNiArNjAs
NyBAQCBDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGll
bnQqIGNsaWVudCwgUGFzc1JlZlB0cjxMYXllcgogCiBib29sIENDTGF5ZXJUcmVlSG9zdDo6aW5p
dGlhbGl6ZSgpCiB7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6
ZSIsIHRoaXMsIDApOwogICAgIGlmIChtX3NldHRpbmdzLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQp
IHsKICAgICAgICAgLy8gQWNjZWxlcmF0ZWQgUGFpbnRpbmcgaXMgbm90IHN1cHBvcnRlZCBpbiB0
aHJlYWRlZCBtb2RlLiBUdXJuIGl0IG9mZi4KICAgICAgICAgbV9zZXR0aW5ncy5hY2NlbGVyYXRl
UGFpbnRpbmcgPSBmYWxzZTsKQEAgLTc4LDggKzc5LDcgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6
OmluaXRpYWxpemUoKQogICAgIC8vIFVwZGF0ZSBtX3NldHRpbmdzIGJhc2VkIG9uIGNhcGFiaWxp
dGllcyB0aGF0IHdlIGdvdCBiYWNrIGZyb20gdGhlIHJlbmRlcmVyLgogICAgIG1fc2V0dGluZ3Mu
YWNjZWxlcmF0ZVBhaW50aW5nID0gbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygp
LnVzaW5nQWNjZWxlcmF0ZWRQYWludGluZzsKIAotICAgIC8vIFdlIGNoYW5nZWQgdGhlIHJvb3Qg
bGF5ZXIuIFRlbGwgdGhlIHByb3h5IGEgY29tbWl0IGlzIG5lZWRlZC4KLSAgICBtX3Byb3h5LT5z
ZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOworICAgIHNldE5lZWRzQ29tbWl0VGhlblJlZHJhdygp
OwogCiAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMoKSwgbV9wcm94eS0+bGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIw
NywxNCArMjA3LDE0IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRab29tQW5pbWF0b3JUcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHpvb20pCiAgICAgbV96b29tQW5pbWF0
b3JUcmFuc2Zvcm0gPSB6b29tOwogCiAgICAgaWYgKHpvb21DaGFuZ2VkKQotICAgICAgICBzZXRO
ZWVkc0NvbW1pdEFuZFJlZHJhdygpOworICAgICAgICBzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXco
KTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0QW5kUmVkcmF3KCkK
K3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcoKQogewogI2lm
IFVTRShUSFJFQURFRF9DT01QT1NJVElORykKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVI
b3N0OjpzZXROZWVkc1JlZHJhdyIsIHRoaXMsIDApOwotICAgIG1fcHJveHktPnNldE5lZWRzQ29t
bWl0QW5kUmVkcmF3KCk7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6c2V0TmVl
ZHNDb21taXRUaGVuUmVkcmF3IiwgdGhpcywgMCk7CisgICAgbV9wcm94eS0+c2V0TmVlZHNDb21t
aXRUaGVuUmVkcmF3KCk7CiAjZWxzZQogICAgIG1fY2xpZW50LT5zY2hlZHVsZUNvbXBvc2l0ZSgp
OwogI2VuZGlmCkBAIC0yMzIsMTQgKzIzMiwxNCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0
TmVlZHNSZWRyYXcoKQogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldFZpZXdwb3J0KGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6
ZTsKLSAgICBzZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOworICAgIHNldE5lZWRzQ29tbWl0VGhl
blJlZHJhdygpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZShib29sIHZp
c2libGUpCiB7CiAgICAgbV92aXNpYmxlID0gdmlzaWJsZTsKICAgICBpZiAodmlzaWJsZSkKLSAg
ICAgICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKKyAgICAgICAgc2V0TmVl
ZHNDb21taXRUaGVuUmVkcmF3KCk7CiAgICAgZWxzZSB7CiAgICAgICAgIG1fY29udGVudHNUZXh0
dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdChUZXh0dXJlTWFuYWdlcjo6bG93TGltaXRC
eXRlcygpKTsKICAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxU
ZXh0dXJlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBlMzU5NjhmNTI5ZDc0
NjIwNDUyNDMzNWU2NTc5MTJjZjQ5NTg1OWNmLi5hNTJmYjRmNzMxNTU2MGM1MmEyYThlODNhZGVh
ZDBhY2NhYmZjNDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMTM1LDcgKzEz
NSw3IEBAIHB1YmxpYzoKICAgICAvLyBUZXN0LW9ubHkgaG9vawogICAgIHZvaWQgbG9zZUNvbXBv
c2l0b3JDb250ZXh0KGludCBudW1UaW1lcyk7CiAKLSAgICB2b2lkIHNldE5lZWRzQ29tbWl0QW5k
UmVkcmF3KCk7CisgICAgdm9pZCBzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcoKTsKICAgICB2b2lk
IHNldE5lZWRzUmVkcmF3KCk7CiAKICAgICBMYXllckNocm9taXVtKiByb290TGF5ZXIoKSB7IHJl
dHVybiBtX3Jvb3RMYXllci5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IGIyMjJiOTk4OGQ4MTdm
NDk1YzJhM2EwZjA1YzRjYTFjZWRhZGQxNjMuLmQ5Yjc5M2IwNmZkMGZlZTMwZjExOTkzMDIyYzI0
MzgwOGE4NzViNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1p
dCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0VGhlblJlZHJhdygpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnQoKSA9IDA7IC8vIE11c3QgYmUgY2FsbGVkIGJlZm9yZSB1c2luZyB0aGUgcHJveHkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
aGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NjaGVkdWxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTIzYTE5MjgyOTE3MTYwN2M1MWQzZDMxNWYx
YzFiZGVjMTY2YTllNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcApAQCAtMCwwICsxLDc3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ1NjaGVk
dWxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NDU2NoZWR1bGVyOjpDQ1NjaGVkdWxl
cihDQ1NjaGVkdWxlckNsaWVudCogY2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQorICAg
ICwgbV9jb21taXRQZW5kaW5nKGZhbHNlKQorICAgICwgbV9yZWRyYXdQZW5kaW5nKGZhbHNlKQor
ICAgICwgbV9yZWRyYXdBZnRlckNvbW1pdChmYWxzZSkKK3sKKyAgICBBU1NFUlQobV9jbGllbnQp
OworfQorCit2b2lkIENDU2NoZWR1bGVyOjpyZXF1ZXN0Q29tbWl0KCkKK3sKKyAgICBpZiAobV9j
b21taXRQZW5kaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbW1pdFBlbmRpbmcgPSB0
cnVlOworICAgIG1fY2xpZW50LT5zY2hlZHVsZUJlZ2luRnJhbWVBbmRDb21taXQobV9yZWRyYXdB
ZnRlckNvbW1pdCk7CisgICAgbV9yZWRyYXdBZnRlckNvbW1pdCA9IGZhbHNlOworfQorCit2b2lk
IENDU2NoZWR1bGVyOjpyZXF1ZXN0Q29tbWl0VGhlblJlZHJhdygpCit7CisgICAgbV9yZWRyYXdB
ZnRlckNvbW1pdCA9IHRydWU7CisgICAgcmVxdWVzdENvbW1pdCgpOworfQorCit2b2lkIENDU2No
ZWR1bGVyOjpyZXF1ZXN0UmVkcmF3KCkKK3sKKyAgICBpZiAobV9yZWRyYXdQZW5kaW5nKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3JlZHJhd1BlbmRpbmcgPSB0cnVlOworCisgICAgbV9jbGll
bnQtPnNjaGVkdWxlRHJhd0FuZFByZXNlbnQoKTsKK30KKwordm9pZCBDQ1NjaGVkdWxlcjo6ZGlk
Q29tbWl0KCkKK3sKKyAgICBtX2NvbW1pdFBlbmRpbmcgPSBmYWxzZTsKK30KKwordm9pZCBDQ1Nj
aGVkdWxlcjo6ZGlkRHJhdygpCit7CisgICAgbV9yZWRyYXdQZW5kaW5nID0gZmFsc2U7Cit9CisK
K30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE0NGQ4Mjk5MjM5MjVlOGNlMTQz
Y2IxNTAwZmQxNTA0ZjExZTBhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKQEAgLTAsMCArMSw3NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ1NjaGVkdWxlcl9oCisjZGVmaW5lIENDU2NoZWR1
bGVyX2gKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0NUaHJlYWQ7CisKK2Ns
YXNzIENDU2NoZWR1bGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVCZWdpbkZyYW1lQW5kQ29tbWl0KGJvb2wgcmVkcmF3QWZ0ZXJDb21taXQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2NoZWR1bGVEcmF3QW5kUHJlc2VudCgpID0gMDsKKworcHJvdGVjdGVkOgor
ICAgIHZpcnR1YWwgfkNDU2NoZWR1bGVyQ2xpZW50KCkgeyB9Cit9OworCitjbGFzcyBDQ1NjaGVk
dWxlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NTY2hlZHVsZXIpOworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDU2NoZWR1bGVyPiBjcmVhdGUoQ0NTY2hlZHVsZXJDbGll
bnQqIGNsaWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NTY2hlZHVs
ZXIoY2xpZW50KSk7CisgICAgfQorCisgICAgdm9pZCByZXF1ZXN0Q29tbWl0KCk7CisgICAgdm9p
ZCByZXF1ZXN0Q29tbWl0VGhlblJlZHJhdygpOworICAgIHZvaWQgcmVxdWVzdFJlZHJhdygpOwor
CisgICAgdm9pZCBkaWRDb21taXQoKTsKKyAgICB2b2lkIGRpZERyYXcoKTsKKworICAgIGJvb2wg
Y29tbWl0UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWl0UGVuZGluZzsgfQorICAgIGJv
b2wgcmVkcmF3UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVkcmF3UGVuZGluZzsgfQorICAg
IGJvb2wgcmVkcmF3QWZ0ZXJDb21taXQoKSBjb25zdCB7IHJldHVybiBtX3JlZHJhd0FmdGVyQ29t
bWl0OyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgQ0NTY2hlZHVsZXIoQ0NTY2hlZHVsZXJD
bGllbnQqKTsKKworICAgIENDU2NoZWR1bGVyQ2xpZW50KiBtX2NsaWVudDsKKworICAgIGJvb2wg
bV9jb21taXRQZW5kaW5nOworICAgIGJvb2wgbV9yZWRyYXdQZW5kaW5nOworICAgIGJvb2wgbV9y
ZWRyYXdBZnRlckNvbW1pdDsKK307CisKK30KKworI2VuZGlmIC8vIENDU2NoZWR1bGVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggOWFjZGM2NGE1Y2IxODJk
NWIzNDYwOTU1ZGMwZDIwOTE5MGIzMjE2NS4uOTYyMGI1MTExNDllNzA2ZmE0MzdiNzMyODg3NmM2
NzYzNWExN2ExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAg
LTE2Niw3ICsxNjYsNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0
KCkKICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiB9CiAKLXZvaWQgQ0NT
aW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKQordm9pZCBDQ1Npbmds
ZVRocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcoKQogewogICAgIEFTU0VSVChD
Q1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CiAjaWYgIVVTRShUSFJFQURFRF9DT01QT1NJVElORykK
QEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNldE5lZWRzUmVk
cmF3KCkKIHsKICAgICAvLyBGSVhNRTogT25jZSB3ZSBtb3ZlIHJlbmRlcl93aWRnZXQgc2NoZWR1
bGluZyBpbnRvIHRoaXMgY2xhc3MsIHdlIGNhbgogICAgIC8vIHRyZWF0IHJlZHJhdyByZXF1ZXN0
cyBtb3JlIGVmZmljaWVudGx5IHRoYW4gY29tbWl0QW5kUmVkcmF3IHJlcXVlc3RzLgotICAgIHNl
dE5lZWRzQ29tbWl0QW5kUmVkcmF3KCk7CisgICAgc2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCk7
CiB9CiAKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c3RvcCgpCkBAIC0yNDIsNyArMjQyLDcg
QEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRJZk5lZWRlZCgpCiAg
ICAgLy8gaW4gdGhlIGNvbnRleHQtbG9zdCBtYWNoaW5lcnkuCiAgICAgbV9udW1GYWlsZWRSZWNy
ZWF0ZUF0dGVtcHRzKys7CiAgICAgaWYgKG1fbnVtRmFpbGVkUmVjcmVhdGVBdHRlbXB0cyA8IDUp
IHsKLSAgICAgICAgc2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKKyAgICAgICAgc2V0TmVlZHND
b21taXRUaGVuUmVkcmF3KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI4
NSw3ICsyODUsNyBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tcG9zaXRlKCkKICAg
ICAgICAgICAvLyBhbmQgcmVxdWVzdCBhIHJlcGFpbnQgeWV0IGFnYWluLgogICAgICAgICAgIG1f
Z3JhcGhpY3NDb250ZXh0TG9zdCA9IHRydWU7CiAgICAgICAgICAgbV9udW1GYWlsZWRSZWNyZWF0
ZUF0dGVtcHRzID0gMDsKLSAgICAgICAgICBzZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOworICAg
ICAgICAgIHNldE5lZWRzQ29tbWl0VGhlblJlZHJhdygpOwogICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5k
ZXggYzE4ZTdmMzY0OTM4ZDE5MzY0YzMxMTBmNjZlNGJkM2Y5MzE3MmM1NC4uOGYwMzBhOTYzYmRl
YzMxZWI2NmJiMTNiZGE3YjZlNzFkNmM0MzgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBM
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIGxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQgbnVtVGltZXMp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdCgpOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1p
dFRoZW5SZWRyYXcoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcAppbmRleCBhMWU3MWRhZGViNGQxODlhN2ZkNjdmZThjZTkzZjBkMjlm
NDQ3MGUwLi45OGI5ZDBlNWRiMjY2NjUxMDhiOGE0Y2NiMmYyM2M3MTFiMDE3ZmI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlRyYWNl
RXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9D
Q01haW5UaHJlYWRUYXNrLmgiCisjaW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIuaCIKICNpbmNsdWRl
ICJjYy9DQ1RocmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNDMsNiArNDQsMzMgQEAgQ0NUaHJlYWQqIGNjVGhy
ZWFkOwogaW50IG51bVByb3hpZXMgPSAwOwogfQogCitjbGFzcyBDQ1RocmVhZFByb3h5U2NoZWR1
bGVyQ2xpZW50IDogcHVibGljIENDU2NoZWR1bGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxDQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50PiBjcmVhdGUoQ0NUaHJl
YWRQcm94eSogcHJveHkpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVGhy
ZWFkUHJveHlTY2hlZHVsZXJDbGllbnQocHJveHkpKTsKKyAgICB9CisgICAgdmlydHVhbCB+Q0NU
aHJlYWRQcm94eVNjaGVkdWxlckNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNjaGVk
dWxlQmVnaW5GcmFtZUFuZENvbW1pdChib29sIHJlZHJhd0FmdGVyQ29tbWl0KQorICAgIHsKKyAg
ICAgICAgQ0NNYWluVGhyZWFkOjpwb3N0VGFzayhtX3Byb3h5LT5jcmVhdGVCZWdpbkZyYW1lQW5k
Q29tbWl0VGFza09uQ0NUaHJlYWQocmVkcmF3QWZ0ZXJDb21taXQpKTsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2NoZWR1bGVEcmF3QW5kUHJlc2VudCgpCisgICAgeworICAgICAgICBtX3By
b3h5LT5kcmF3TGF5ZXJzQW5kUHJlc2VudE9uQ0NUaHJlYWQoKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudChDQ1RocmVhZFByb3h5
KiBwcm94eSkKKyAgICB7CisgICAgICAgIG1fcHJveHkgPSBwcm94eTsKKyAgICB9CisKKyAgICBD
Q1RocmVhZFByb3h5KiBtX3Byb3h5OworfTsKKwogUGFzc093blB0cjxDQ1Byb3h5PiBDQ1RocmVh
ZFByb3h5OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogewogICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgQ0NUaHJlYWRQcm94eShsYXllclRyZWVIb3N0KSk7CkBAIC01NCw5
ICs4Miw2IEBAIENDVGhyZWFkUHJveHk6OkNDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0KiBs
YXllclRyZWVIb3N0KQogICAgICwgbV9zdGFydGVkKGZhbHNlKQogICAgICwgbV9sYXN0RXhlY3V0
ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIoLTEpCiAgICAgLCBtX251bUJlZ2lu
RnJhbWVBbmRDb21taXRzSXNzdWVkT25DQ1RocmVhZCgwKQotICAgICwgbV9iZWdpbkZyYW1lQW5k
Q29tbWl0UGVuZGluZ09uQ0NUaHJlYWQoZmFsc2UpCi0gICAgLCBtX2RyYXdUYXNrUG9zdGVkT25D
Q1RocmVhZChmYWxzZSkKLSAgICAsIG1fcmVkcmF3UmVxdWVzdGVkT25DQ1RocmVhZChmYWxzZSkK
IHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94eSIsIHRoaXMs
IDApOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC04NCw2ICsxMDksNyBAQCBDQ1Ro
cmVhZFByb3h5Ojp+Q0NUaHJlYWRQcm94eSgpCiAKIGJvb2wgQ0NUaHJlYWRQcm94eTo6Y29tcG9z
aXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0KQogeworICAg
IFRSQUNFX0VWRU5UKCJDQ1RocmVhZFBSb3h5Ojpjb21wb3NpdGVBbmRSZWFkYmFjayIsIHRoaXMs
IDApOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fbGF5ZXJUcmVl
SG9zdCk7CiAKQEAgLTE1MCw2ICsxNzYsNyBAQCBib29sIENDVGhyZWFkUHJveHk6OmlzU3RhcnRl
ZCgpIGNvbnN0CiAKIGJvb2wgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIo
KQogeworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5k
ZXJlciIsIHRoaXMsIDApOwogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9
IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCgpOwogICAgIGlm
ICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTkxLDMzICsyMTgsNDggQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCgpCiAKICAgICBUUkFDRV9FVkVOVCgi
Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXQiLCB0aGlzLCAwKTsKICAgICBtX2NvbW1pdFJl
cXVlc3RlZCA9IHRydWU7Ci0gICAgY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFz
ayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6dXBkYXRlU2NoZWR1bGVyU3RhdGVPbkNDVGhyZWFkLCBt
X2NvbW1pdFJlcXVlc3RlZCwgdHJ1ZSkpOworICAgIGNjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVD
Q1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0T25DQ1RocmVh
ZCkpOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0QW5kUmVkcmF3KCkK
K3ZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRPbkNDVGhyZWFkKCkKK3sKKyAgICBB
U1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojpz
ZXROZWVkc0NvbW1pdE9uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBtX3NjaGVkdWxlck9uQ0NU
aHJlYWQtPnJlcXVlc3RDb21taXQoKTsKK30KKworCit2b2lkIENDVGhyZWFkUHJveHk6OnNldE5l
ZWRzQ29tbWl0VGhlblJlZHJhdygpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBpZiAobV9jb21taXRSZXF1ZXN0ZWQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbW1pdFJl
cXVlc3RlZCA9IHRydWU7CiAKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2V0TmVl
ZHNDb21taXRBbmRSZWRyYXciLCB0aGlzLCAwKTsKLSAgICBjY1RocmVhZC0+cG9zdFRhc2soY3Jl
YXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojp1cGRhdGVTY2hlZHVsZXJTdGF0
ZU9uQ0NUaHJlYWQsIG1fY29tbWl0UmVxdWVzdGVkLCB0cnVlKSk7CisgICAgVFJBQ0VfRVZFTlQo
IkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0VGhlblJlZHJhdyIsIHRoaXMsIDApOworICAg
IGNjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJv
eHk6OnNldE5lZWRzQ29tbWl0VGhlblJlZHJhd09uQ0NUaHJlYWQpKTsKK30KKwordm9pZCBDQ1Ro
cmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXdPbkNDVGhyZWFkKCkKK3sKKyAgICBB
U1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojpz
ZXROZWVkc0NvbW1pdE9uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBtX3NjaGVkdWxlck9uQ0NU
aHJlYWQtPnJlcXVlc3RDb21taXRUaGVuUmVkcmF3KCk7CiB9CiAKKwogdm9pZCBDQ1RocmVhZFBy
b3h5OjpzZXROZWVkc1JlZHJhdygpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAg
ICBpZiAobV9jb21taXRSZXF1ZXN0ZWQpIC8vIEltcGxpZXMgdGhhdCBhIGNvbW1pdCBpcyBpbiBm
bGlnaHQuCi0gICAgICAgIHJldHVybjsKLSAgICAvLyBVbmxpa2Ugc2V0TmVlZHNDb21taXQgdGhh
dCB0cmFja3Mgd2hldGhlciBhIGNvbW1pdCBtZXNzYWdlIGhhcyBiZWVuIHNlbnQsCi0gICAgLy8g
c2V0TmVlZHNSZWRyYXcgYWx3YXlzIHNlbmRzIGEgbWVzc2FnZSB0byB0aGUgY29tcG9zaXRvciB0
aHJlYWQuIFRoaXMgaXMKLSAgICAvLyBiZWNhdXNlIHRoZSBjb21wb3NpdG9yIHRocmVhZCBjYW4g
ZHJhdyB3aXRob3V0IHRlbGxpbmcgdGhlIG1haW4KLSAgICAvLyB0aHJlYWQuIFRoaXMgc2hvdWxk
IG5vdCBiZSBtdWNoIG9mIGEgcHJvYmxlbSBiZWNhdXNlIGNhbGxzIHRvCi0gICAgLy8gc2V0TmVl
ZHNSZWRyYXcgbWVzc2FnZXMgYXJlIHVuY29tbW9uIChvbmx5IHRyaWdnZXJlZCBieSBXTV9QQUlO
VC9ldGMpLAotICAgIC8vIGNvbXBhcmVkIHRvIHNldE5lZWRzQ29tbWl0QW5kUmVkcmF3IG1lc3Nh
Z2VzLgogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhdyIsIHRo
aXMsIDApOwotICAgIGNjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywg
JkNDVGhyZWFkUHJveHk6OnVwZGF0ZVNjaGVkdWxlclN0YXRlT25DQ1RocmVhZCwgZmFsc2UsIHRy
dWUpKTsKKyAgICBjY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZD
Q1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhd09uQ0NUaHJlYWQpKTsKK30KKwordm9pZCBDQ1Ro
cmVhZFByb3h5OjpzZXROZWVkc1JlZHJhd09uQ0NUaHJlYWQoKQoreworICAgIEFTU0VSVChpc0lt
cGxUaHJlYWQoKSk7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVk
cmF3T25DQ1RocmVhZCIsIHRoaXMsIDApOworICAgIG1fc2NoZWR1bGVyT25DQ1RocmVhZC0+cmVx
dWVzdFJlZHJhdygpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnN0YXJ0KCkKQEAgLTI1MSwx
MSArMjkzLDEwIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25DQ1Ro
cmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgi
Q0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25DQ1RocmVhZCIsIHRoaXMsIDApOwog
ICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgQVNTRVJUKCFtX2JlZ2luRnJhbWVBbmRD
b21taXRQZW5kaW5nT25DQ1RocmVhZCk7Ci0gICAgaWYgKG1fcmVkcmF3UmVxdWVzdGVkT25DQ1Ro
cmVhZCkgeworICAgIGlmIChtX3NjaGVkdWxlck9uQ0NUaHJlYWQtPnJlZHJhd1BlbmRpbmcoKSkg
ewogICAgICAgICBkcmF3TGF5ZXJzT25DQ1RocmVhZCgpOwogICAgICAgICBtX2xheWVyVHJlZUhv
c3RJbXBsLT5wcmVzZW50KCk7Ci0gICAgICAgIG1fcmVkcmF3UmVxdWVzdGVkT25DQ1RocmVhZCA9
IGZhbHNlOworICAgICAgICBtX3NjaGVkdWxlck9uQ0NUaHJlYWQtPmRpZERyYXcoKTsKICAgICB9
CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7CiAgICAgY29t
cGxldGlvbi0+c2lnbmFsKCk7CkBAIC0yNjMsMTcgKzMwNCwxNiBAQCB2b2lkIENDVGhyZWFkUHJv
eHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBs
ZXRpb24pCiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6b2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRh
c2tGcm9tQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIENDTWFpblRocmVh
ZDo6VGFzayoqIHRhc2tQdHIpCiB7Ci0gICAgT3duUHRyPENDTWFpblRocmVhZDo6VGFzaz4gdGFz
ayA9IGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25DQ1RocmVhZCgpOworICAgIE93blB0
cjxDQ01haW5UaHJlYWQ6OlRhc2s+IHRhc2sgPSBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFz
a09uQ0NUaHJlYWQoZmFsc2UpOwogICAgICp0YXNrUHRyID0gdGFzay5sZWFrUHRyKCk7CiAgICAg
Y29tcGxldGlvbi0+c2lnbmFsKCk7CiB9CiAKLVBhc3NPd25QdHI8Q0NNYWluVGhyZWFkOjpUYXNr
PiBDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uQ0NUaHJlYWQo
KQorUGFzc093blB0cjxDQ01haW5UaHJlYWQ6OlRhc2s+IENDVGhyZWFkUHJveHk6OmNyZWF0ZUJl
Z2luRnJhbWVBbmRDb21taXRUYXNrT25DQ1RocmVhZChib29sIHJlZHJhd0FmdGVyQ29tbWl0KQog
ewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29t
bWl0VGFza09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkp
OwogICAgIGRvdWJsZSBmcmFtZUJlZ2luVGltZSA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgbV9iZWdp
bkZyYW1lQW5kQ29tbWl0UGVuZGluZ09uQ0NUaHJlYWQgPSB0cnVlOwogCiAgICAgLy8gTk9URSwg
aXQgaXMgcG9zc2libGUgdG8gcmVjZWlldmUgYSByZXF1ZXN0IGZvciBhCiAgICAgLy8gYmVnaW5G
cmFtZUFuZENvbW1pdE9uQ0NUaHJlYWQgZnJvbSBmaW5pc2hBbGxSZW5kZXJpbmcgd2hpbGUgYQpA
QCAtMjg2LDEwICszMjYsMTAgQEAgUGFzc093blB0cjxDQ01haW5UaHJlYWQ6OlRhc2s+IENDVGhy
ZWFkUHJveHk6OmNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25DQ1QKICAgICAvLyBudW1i
ZXJzIGJlbG93IHRoZSBsYXN0IGV4ZWN1dGVkIG9uZS4KICAgICBpbnQgdGhpc1Rhc2tTZXF1ZW5j
ZU51bWJlciA9IG1fbnVtQmVnaW5GcmFtZUFuZENvbW1pdHNJc3N1ZWRPbkNDVGhyZWFkOwogICAg
IG1fbnVtQmVnaW5GcmFtZUFuZENvbW1pdHNJc3N1ZWRPbkNDVGhyZWFkKys7Ci0gICAgcmV0dXJu
IGNyZWF0ZU1haW5UaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5k
Q29tbWl0LCB0aGlzVGFza1NlcXVlbmNlTnVtYmVyLCBmcmFtZUJlZ2luVGltZSk7CisgICAgcmV0
dXJuIGNyZWF0ZU1haW5UaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1l
QW5kQ29tbWl0LCB0aGlzVGFza1NlcXVlbmNlTnVtYmVyLCBmcmFtZUJlZ2luVGltZSwgcmVkcmF3
QWZ0ZXJDb21taXQpOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21t
aXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbWUpCit2b2lkIENDVGhy
ZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUg
ZnJhbWVCZWdpblRpbWUsIGJvb2wgcmVkcmF3QWZ0ZXJDb21taXQpCiB7CiAgICAgVFJBQ0VfRVZF
TlQoIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQiLCB0aGlzLCAwKTsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtMzI1LDcgKzM2NSw3IEBAIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFt
ZUJlZ2luVGltCiAgICAgICAgIC8vIEJsb2NraW5nIGNhbGwgdG8gQ0NUaHJlYWRQcm94eTo6Y29t
bWl0T25DQ1RocmVhZAogICAgICAgICBUUkFDRV9FVkVOVCgiY29tbWl0IiwgdGhpcywgMCk7CiAg
ICAgICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247Ci0gICAgICAgIGNjVGhyZWFkLT5w
b3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmNvbW1pdE9u
Q0NUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pKSk7CisgICAgICAg
IGNjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJv
eHk6OmNvbW1pdE9uQ0NUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24p
LCByZWRyYXdBZnRlckNvbW1pdCkpOwogICAgICAgICBjb21wbGV0aW9uLndhaXQoKTsKICAgICB9
CiAKQEAgLTMzNCwxMiArMzc0LDExIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFu
ZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltCiAgICAgQVNT
RVJUKG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVyID09IHNl
cXVlbmNlTnVtYmVyKTsKIH0KIAotdm9pZCBDQ1RocmVhZFByb3h5Ojpjb21taXRPbkNDVGhyZWFk
KENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQordm9pZCBDQ1RocmVhZFByb3h5Ojpjb21t
aXRPbkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBib29sIHJlZHJhd0Fm
dGVyQ29tbWl0KQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1l
QW5kQ29tbWl0T25DQ1RocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQo
KSk7Ci0gICAgQVNTRVJUKG1fYmVnaW5GcmFtZUFuZENvbW1pdFBlbmRpbmdPbkNDVGhyZWFkKTsK
LSAgICBtX2JlZ2luRnJhbWVBbmRDb21taXRQZW5kaW5nT25DQ1RocmVhZCA9IGZhbHNlOworICAg
IEFTU0VSVChtX3NjaGVkdWxlck9uQ0NUaHJlYWQtPmNvbW1pdFBlbmRpbmcoKSk7CiAgICAgaWYg
KCFtX2xheWVyVHJlZUhvc3RJbXBsKSB7CiAgICAgICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwog
ICAgICAgICByZXR1cm47CkBAIC0zNTAsMTkgKzM4OSw5IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6
Y29tbWl0T25DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIAogICAgIGNv
bXBsZXRpb24tPnNpZ25hbCgpOwogCi0gICAgaWYgKG1fcmVkcmF3UmVxdWVzdGVkT25DQ1RocmVh
ZCkKLSAgICAgICAgc2NoZWR1bGVEcmF3VGFza09uQ0NUaHJlYWQoKTsKLX0KLQotdm9pZCBDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZURyYXdUYXNrT25DQ1RocmVhZCgpCi17Ci0gICAgQVNTRVJUKGlz
SW1wbFRocmVhZCgpKTsKLSAgICBpZiAobV9kcmF3VGFza1Bvc3RlZE9uQ0NUaHJlYWQpCi0gICAg
ICAgIHJldHVybjsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVEcmF3
VGFza09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKLSAgICBBU1NFUlQobV9sYXllclRyZWVIb3N0SW1w
bCk7Ci0gICAgbV9kcmF3VGFza1Bvc3RlZE9uQ0NUaHJlYWQgPSB0cnVlOwotICAgIGNjVGhyZWFk
LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmRyYXdM
YXllcnNBbmRQcmVzZW50T25DQ1RocmVhZCkpOworICAgIG1fc2NoZWR1bGVyT25DQ1RocmVhZC0+
ZGlkQ29tbWl0KCk7CisgICAgaWYgKHJlZHJhd0FmdGVyQ29tbWl0KQorICAgICAgICBtX3NjaGVk
dWxlck9uQ0NUaHJlYWQtPnJlcXVlc3RSZWRyYXcoKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5
OjpkcmF3TGF5ZXJzQW5kUHJlc2VudE9uQ0NUaHJlYWQoKQpAQCAtMzc0LDggKzQwMyw3IEBAIHZv
aWQgQ0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc0FuZFByZXNlbnRPbkNDVGhyZWFkKCkKIAogICAg
IGRyYXdMYXllcnNPbkNDVGhyZWFkKCk7CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+cHJlc2Vu
dCgpOwotICAgIG1fcmVkcmF3UmVxdWVzdGVkT25DQ1RocmVhZCA9IGZhbHNlOwotICAgIG1fZHJh
d1Rhc2tQb3N0ZWRPbkNDVGhyZWFkID0gZmFsc2U7CisgICAgbV9zY2hlZHVsZXJPbkNDVGhyZWFk
LT5kaWREcmF3KCk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc09uQ0NUaHJl
YWQoKQpAQCAtMzg4LDMwICs0MTYsMTMgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJz
T25DQ1RocmVhZCgpCiAgICAgQVNTRVJUKCFtX2xheWVyVHJlZUhvc3RJbXBsLT5pc0NvbnRleHRM
b3N0KCkpOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6OnVwZGF0ZVNjaGVkdWxlclN0YXRlT25D
Q1RocmVhZChib29sIGNvbW1pdFJlcXVlc3RlZCwgYm9vbCByZWRyYXdSZXF1ZXN0ZWQpCi17Ci0g
ICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnVwZGF0ZVNjaGVkdWxlclN0YXRlT25DQ1Ro
cmVhZCIsIHRoaXMsIDApOwotICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgQVNTRVJU
KG1fbGF5ZXJUcmVlSG9zdEltcGwpOwotCi0gICAgLy8gRklYTUU6IHVzZSBDQ1NjaGVkdWxlciB0
byBkZWNpZGUgd2hlbiB0byBtYW5hZ2UgdGhlIGNvbnZlcnNpb24gb2YgdGhpcwotICAgIC8vIGNv
bW1pdCByZXF1ZXN0IGludG8gYW4gYWN0dWFsIGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNr
T25DQ1RocmVhZCBjYWxsLgotICAgIG1fcmVkcmF3UmVxdWVzdGVkT25DQ1RocmVhZCB8PSByZWRy
YXdSZXF1ZXN0ZWQ7Ci0gICAgaWYgKCFtX2JlZ2luRnJhbWVBbmRDb21taXRQZW5kaW5nT25DQ1Ro
cmVhZCkgewotICAgICAgICBDQ01haW5UaHJlYWQ6OnBvc3RUYXNrKGNyZWF0ZUJlZ2luRnJhbWVB
bmRDb21taXRUYXNrT25DQ1RocmVhZCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IC8vIElmIG5vIGNvbW1pdCBpcyBwZW5kaW5nLCBidXQgYSByZWRyYXcgaXMgcmVxdWVzdGVkLCB0
aGVuIHBvc3QgYSByZWRyYXcgcmlnaHQgYXdheQotICAgIGlmIChtX3JlZHJhd1JlcXVlc3RlZE9u
Q0NUaHJlYWQpCi0gICAgICAgIHNjaGVkdWxlRHJhd1Rhc2tPbkNDVGhyZWFkKCk7Ci19Ci0KIHZv
aWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkNDVGhyZWFkKENDQ29tcGxldGlvbkV2
ZW50KiBjb21wbGV0aW9uKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0
aWFsaXplSW1wbE9uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFk
KCkpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUxh
eWVyVHJlZUhvc3RJbXBsKCk7CisgICAgbV9zY2hlZHVsZXJDbGllbnRPbkNDVGhyZWFkID0gQ0NU
aHJlYWRQcm94eVNjaGVkdWxlckNsaWVudDo6Y3JlYXRlKHRoaXMpOworICAgIG1fc2NoZWR1bGVy
T25DQ1RocmVhZCA9IENDU2NoZWR1bGVyOjpjcmVhdGUobV9zY2hlZHVsZXJDbGllbnRPbkNDVGhy
ZWFkLmdldCgpKTsKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5oCmluZGV4IGQzYjQ4N2ZlYzQwZDQwMTU5MDdhOWY4MDk2Y2Q5ZGJjZTJkMWIxOTIu
LjZhOGM2ZWUzMDA5ZjAwOGMwMmVmZWI5ZTRlNmI1YWU1YWIxYmYyODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmgKQEAgLTM0LDggKzM0LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENDTGF5ZXJUcmVlSG9zdDsKK2NsYXNzIENDU2NoZWR1bGVyOworY2xhc3MgQ0NUaHJlYWRQ
cm94eVNjaGVkdWxlckNsaWVudDsKIAogY2xhc3MgQ0NUaHJlYWRQcm94eSA6IHB1YmxpYyBDQ1By
b3h5IHsKKyAgICBmcmllbmQgY2xhc3MgQ0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudDsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDQ1Byb3h5PiBjcmVhdGUoQ0NMYXllclRyZWVI
b3N0Kik7CiAKQEAgLTUwLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgY29uc3QgTGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCBsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRU
aGVuUmVkcmF3KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3KCk7CiAgICAgdmly
dHVhbCB2b2lkIHN0YXJ0KCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKQEAgLTU5LDEyICs2
MiwxMiBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IENDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVI
b3N0Kik7CiAKICAgICAvLyBDYWxsZWQgb24gQ0NNYWluVGhyZWFkCi0gICAgdm9pZCBiZWdpbkZy
YW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW1lKTsK
KyAgICB2b2lkIGJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUg
ZnJhbWVCZWdpblRpbWUsIGJvb2wgcmVkcmF3QWZ0ZXJDb21taXQpOwogCiAgICAgLy8gQ2FsbGVk
IG9uIENDVGhyZWFkCi0gICAgUGFzc093blB0cjxDQ01haW5UaHJlYWQ6OlRhc2s+IGNyZWF0ZUJl
Z2luRnJhbWVBbmRDb21taXRUYXNrT25DQ1RocmVhZCgpOworICAgIFBhc3NPd25QdHI8Q0NNYWlu
VGhyZWFkOjpUYXNrPiBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uQ0NUaHJlYWQoYm9v
bCByZWRyYXdBZnRlckNvbW1pdCk7CiAgICAgdm9pZCBvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0
VGFza0Zyb21DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDTWFpblRocmVhZDo6VGFzayoq
KTsKLSAgICB2b2lkIGNvbW1pdE9uQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKKyAgICB2
b2lkIGNvbW1pdE9uQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBib29sIHJlZHJhd0FmdGVy
Q29tbWl0KTsKICAgICB2b2lkIGRyYXdMYXllcnNBbmRQcmVzZW50T25DQ1RocmVhZCgpOwogICAg
IHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoKTsKICAgICB2b2lkIGRyYXdMYXllcnNBbmRSZWFk
YmFja09uQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBib29sKiBzdWNjZXNzLCB2b2lkKiBw
aXhlbHMsIGNvbnN0IEludFJlY3QmKTsKQEAgLTcyLDkgKzc1LDkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGluaXRpYWxpemVJbXBsT25DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZv
aWQgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJPbkNDVGhyZWFkKEdyYXBoaWNzQ29udGV4dDNEKiwg
Q0NDb21wbGV0aW9uRXZlbnQqLCBib29sKiBpbml0aWFsaXplU3VjY2VlZGVkLCBMYXllclJlbmRl
cmVyQ2FwYWJpbGl0aWVzKik7CiAgICAgdm9pZCBzZXROZWVkc0NvbW1pdE9uQ0NUaHJlYWQoKTsK
LSAgICB2b2lkIHVwZGF0ZVNjaGVkdWxlclN0YXRlT25DQ1RocmVhZChib29sIGNvbW1pdFJlcXVl
c3RlZCwgYm9vbCByZWRyYXdSZXF1ZXN0ZWQpOworICAgIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkND
VGhyZWFkKCk7CisgICAgdm9pZCBzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXdPbkNDVGhyZWFkKCk7
CiAgICAgdm9pZCBsYXllclRyZWVIb3N0Q2xvc2VkT25DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVu
dCopOwotICAgIHZvaWQgc2NoZWR1bGVEcmF3VGFza09uQ0NUaHJlYWQoKTsKIAogICAgIC8vIEFj
Y2Vzc2VkIG9uIG1haW4gdGhyZWFkIG9ubHkuCiAgICAgYm9vbCBtX2NvbW1pdFJlcXVlc3RlZDsK
QEAgLTg2LDkgKzg5LDkgQEAgcHJpdmF0ZToKICAgICAvLyBVc2VkIG9uIHRoZSBDQ1RocmVhZCBv
bmx5CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG1fbGF5ZXJUcmVlSG9zdEltcGw7
CiAgICAgaW50IG1fbnVtQmVnaW5GcmFtZUFuZENvbW1pdHNJc3N1ZWRPbkNDVGhyZWFkOwotICAg
IGJvb2wgbV9iZWdpbkZyYW1lQW5kQ29tbWl0UGVuZGluZ09uQ0NUaHJlYWQ7Ci0gICAgYm9vbCBt
X2RyYXdUYXNrUG9zdGVkT25DQ1RocmVhZDsKLSAgICBib29sIG1fcmVkcmF3UmVxdWVzdGVkT25D
Q1RocmVhZDsKKworICAgIE93blB0cjxDQ1NjaGVkdWxlcj4gbV9zY2hlZHVsZXJPbkNDVGhyZWFk
OworICAgIE93blB0cjxDQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50PiBtX3NjaGVkdWxlckNs
aWVudE9uQ0NUaHJlYWQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGEx
MTMzNTQ5ZTg1ZDgzMmJhNTJkMDRmYjQwOWNkNGVhMTFjNjZiZGMuLmZjMTA4NjdmZWI5NjJhOTdm
ZTU2YjJmYzRmZTQ3NTkzMTIwNDVkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMTEtMDktMjggIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4dHJhY3Qgc2NoZWR1bGluZyBsb2dpYyBmcm9t
IENDVGhyZWFkUHJveHkgdG8gaXRzIG93biBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwNDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHNvbWUgdW5pdCB0ZXN0cyBmb3IgdGhlIG5ldyBD
Q1NjaGVkdWxlciBjbGFzcy4gU2luY2UgdGhlIGNsYXNzIGlzIHZlcnkgc2ltcGxlIHRvZGF5LCB0
aGUgdGVzdHMgYXJlCisgICAgICAgIHNpbWlsYXJseSBxdWl0ZSBzaW1wbGUuCisKKyAgICAgICAg
KiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Um9vdExheWVyTmVlZHNEaXNwbGF5KToKKyAgICAgICAg
KiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NMYXllclRy
ZWVIb3N0VGVzdDo6cG9zdFNldE5lZWRzQ29tbWl0VGhlblJlZHJhd1RvTWFpblRocmVhZCk6Cisg
ICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRpc3BhdGNoU2V0TmVlZHNDb21taXRU
aGVuUmVkcmF3KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFNob3J0bGl2ZWQy
OjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0Q29tbWl0aW5n
V2l0aENvbnRpbnVvdXNSZWRyYXc6OmJlZ2luVGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJU
cmVlSG9zdFRlc3RDb21taXRpbmdXaXRoQ29udGludW91c1JlZHJhdzo6ZHJhd0xheWVyc09uQ0NU
aHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U2V0TmVlZHNDb21taXQx
OjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U2V0TmVlZHND
b21taXQyOjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U2V0
TmVlZHNDb21taXQyOjpkcmF3TGF5ZXJzT25DQ1RocmVhZCk6CisgICAgICAgIChXVEY6OkNDTGF5
ZXJUcmVlSG9zdFRlc3RTZXROZWVkc1JlZHJhdzo6YmVnaW5UZXN0KToKKyAgICAgICAgKiB0ZXN0
cy9DQ1NjaGVkdWxlclRlc3QuY3BwOiBBZGRlZC4KKwogMjAxMS0wOS0yNyAgU2hlcmlmZiBCb3Qg
IDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gIFJv
bGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
aSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggNzM3NTJhMjk0YzQw
MGFiYzg5N2IzYTgzNTIwYzY0YTIxYmYxYTE0MS4uNDZhMjAyNGQ0OTgwYmFhZDFmZjQ5NTg0OWFi
MjRmYmVhMmY1ZTMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC01NSw2ICs1
NSw3IEBACiAgICAgICAgICAgICAndGVzdHMvQXJlbmFUZXN0SGVscGVycy5oJywKICAgICAgICAg
ICAgICd0ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9DQ1NjaGVk
dWxlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1RocmVhZFRhc2tUZXN0LmNwcCcs
CiAgICAgICAgICAgICAndGVzdHMvQ0NUaHJlYWRUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBmYzA2YzY1OWNiZmU0MTI0NTllMjcwY2M4NTU5ZmQy
OTFlNjU4NWE5Li4wYjlhNzllNWRmNTYyOGQwYTQ0OTdlZTgxMjc1ODE1N2I1YTExOGI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0yNTc0LDcgKzI1
NzQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkoKQogICAg
IH0KICNpZiBVU0UoVEhSRUFERURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9z
dCkKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOwor
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0VGhlblJlZHJhdygpOwogI2Vs
c2UKICAgICBtX2NsaWVudC0+c2NoZWR1bGVDb21wb3NpdGUoKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5k
ZXggMzM0MDUwZGI1ZDk2Y2Y3ZjIzZDUyZTJiZTg4NmU0MTYzMzZiMjcyNS4uMjM0OTc1MzBhMmJh
ZDg4MmYyZjJhNjM3ZjZmZGY0MGY4YTU4OWI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0xOTcsOSArMTk3LDkg
QEAgcHVibGljOgogCiAgICAgdm9pZCBlbmRUZXN0KCk7CiAKLSAgICB2b2lkIHBvc3RTZXROZWVk
c0NvbW1pdFRvTWFpblRocmVhZCgpCisgICAgdm9pZCBwb3N0U2V0TmVlZHNDb21taXRUaGVuUmVk
cmF3VG9NYWluVGhyZWFkKCkKICAgICB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoQ0NMYXll
clRyZWVIb3N0VGVzdDo6ZGlzcGF0Y2hTZXROZWVkc0NvbW1pdCwgdGhpcyk7CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoQ0NMYXllclRyZWVIb3N0VGVzdDo6ZGlzcGF0Y2hTZXROZWVkc0NvbW1p
dFRoZW5SZWRyYXcsIHRoaXMpOwogICAgIH0KIAogICAgIHZvaWQgcG9zdFNldE5lZWRzUmVkcmF3
VG9NYWluVGhyZWFkKCkKQEAgLTIzNywxMyArMjM3LDEzIEBAIHByb3RlY3RlZDoKICAgICAgICAg
dGVzdC0+bV9sYXllclRyZWVIb3N0LmNsZWFyKCk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQg
ZGlzcGF0Y2hTZXROZWVkc0NvbW1pdCh2b2lkKiBzZWxmKQorICAgIHN0YXRpYyB2b2lkIGRpc3Bh
dGNoU2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KHZvaWQqIHNlbGYpCiAgICAgewogICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgIENDTGF5ZXJUcmVlSG9zdFRlc3QqIHRlc3QgPSBz
dGF0aWNfY2FzdDxDQ0xheWVyVHJlZUhvc3RUZXN0Kj4oc2VsZik7CiAgICAgICBBU1NFUlQodGVz
dCk7CiAgICAgICBpZiAodGVzdC0+bV9sYXllclRyZWVIb3N0KQotICAgICAgICAgIHRlc3QtPm1f
bGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKKyAgICAgICAgICB0ZXN0
LT5tX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0VGhlblJlZHJhdygpOwogICAgIH0KIAog
ICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoU2V0TmVlZHNSZWRyYXcodm9pZCogc2VsZikKQEAgLTM1
MSw3ICszNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKICAg
ICB7Ci0gICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgICAgICBw
b3N0U2V0TmVlZHNDb21taXRUaGVuUmVkcmF3VG9NYWluVGhyZWFkKCk7CiAgICAgICAgIGVuZFRl
c3QoKTsKICAgICB9CiAKQEAgLTM5NSw3ICszOTUsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgYmVnaW5UZXN0KCkKICAgICB7Ci0gICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFp
blRocmVhZCgpOworICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUaGVuUmVkcmF3VG9NYWluVGhy
ZWFkKCk7CiAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9CiAKQEAgLTQwOSw3ICs0MDksNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVl
SG9zdEltcGwqKQogICAgIHsKICAgICAgICAgaWYgKG1fbnVtRHJhd3MgPT0gMSkKLSAgICAgICAg
ICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKKyAgICAgICAgICBwb3N0U2V0TmVl
ZHNDb21taXRUaGVuUmVkcmF3VG9NYWluVGhyZWFkKCk7CiAgICAgICAgIG1fbnVtRHJhd3MrKzsK
ICAgICAgICAgcG9zdFNldE5lZWRzUmVkcmF3VG9NYWluVGhyZWFkKCk7CiAgICAgfQpAQCAtNDM5
LDggKzQzOSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQogICAg
IHsKLSAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7Ci0gICAgICAgIHBv
c3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgICAgICBwb3N0U2V0TmVlZHNDb21t
aXRUaGVuUmVkcmF3VG9NYWluVGhyZWFkKCk7CisgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRo
ZW5SZWRyYXdUb01haW5UaHJlYWQoKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xh
eWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKQEAgLTQ4MiwxMyArNDgy
LDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQogICAgIHsKLSAg
ICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAgICAgIHBvc3RTZXRO
ZWVkc0NvbW1pdFRoZW5SZWRyYXdUb01haW5UaHJlYWQoKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKICAg
ICB7CiAgICAgICAgIGlmICghaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSkKLSAgICAgICAgICAg
IHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgICAgICAgICAgcG9zdFNldE5l
ZWRzQ29tbWl0VGhlblJlZHJhd1RvTWFpblRocmVhZCgpOwogICAgICAgICBlbHNlIGlmIChpbXBs
LT5zb3VyY2VGcmFtZU51bWJlcigpID09IDEpCiAgICAgICAgICAgICBlbmRUZXN0KCk7CiAgICAg
fQpAQCAtNTI1LDcgKzUyNSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpblRl
c3QoKQogICAgIHsKLSAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7Cisg
ICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRoZW5SZWRyYXdUb01haW5UaHJlYWQoKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0
SW1wbCogaW1wbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NT
Y2hlZHVsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVs
ZXJUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDA3YmU2MzVlMzUwYTY0OGNlMzMzMTU3MDg4MmE1YWY2
OTAwYmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1NjaGVkdWxlclRlc3QuY3BwCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ1NjaGVkdWxlci5oIgorCisjaW5jbHVk
ZSA8Z21vY2svZ21vY2suaD4KKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdURjsKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwordXNpbmcgOjp0ZXN0aW5nOjpfOworCituYW1lc3BhY2UgeworCitjbGFzcyBNb2NrQ0NT
Y2hlZHVsZXJDbGllbnQgOiBwdWJsaWMgQ0NTY2hlZHVsZXJDbGllbnQgeworcHVibGljOgorICAg
IE1PQ0tfTUVUSE9EMShzY2hlZHVsZUJlZ2luRnJhbWVBbmRDb21taXQsIHZvaWQoYm9vbCByZWRy
YXdBZnRlckNvbW1pdCkpOworICAgIE1PQ0tfTUVUSE9EMChzY2hlZHVsZURyYXdBbmRQcmVzZW50
LCB2b2lkKCkpOworfTsKKworY2xhc3MgQ0NTY2hlZHVsZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgeworcHVibGljOgorICAgIENDU2NoZWR1bGVyVGVzdCgpCisgICAgICAgIDogbV9jbGll
bnQoYWRvcHRQdHIobmV3IE1vY2tDQ1NjaGVkdWxlckNsaWVudCkpCisgICAgICAgICwgbV9zY2hl
ZHVsZXIoQ0NTY2hlZHVsZXI6OmNyZWF0ZShtX2NsaWVudC5nZXQoKSkpCisgICAgeworICAgICAg
ICBFWFBFQ1RfQ0FMTCgqbV9jbGllbnQsIHNjaGVkdWxlQmVnaW5GcmFtZUFuZENvbW1pdChfKSku
VGltZXMoMCk7CisgICAgICAgIEVYUEVDVF9DQUxMKCptX2NsaWVudCwgc2NoZWR1bGVEcmF3QW5k
UHJlc2VudCgpKS5UaW1lcygwKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBPd25QdHI8TW9j
a0NDU2NoZWR1bGVyQ2xpZW50PiBtX2NsaWVudDsKKyAgICBPd25QdHI8Q0NTY2hlZHVsZXI+IG1f
c2NoZWR1bGVyOworfTsKKworVEVTVF9GKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdCkK
K3sKKyAgICBFWFBFQ1RfQ0FMTCgqbV9jbGllbnQsIHNjaGVkdWxlQmVnaW5GcmFtZUFuZENvbW1p
dChmYWxzZSkpLlRpbWVzKDEpOworICAgIG1fc2NoZWR1bGVyLT5yZXF1ZXN0Q29tbWl0KCk7Cit9
CisKK1RFU1RfRihDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRUd2ljZUJlZm9yZUNvbW1p
dCkKK3sKKyAgICBFWFBFQ1RfQ0FMTCgqbV9jbGllbnQsIHNjaGVkdWxlQmVnaW5GcmFtZUFuZENv
bW1pdChmYWxzZSkpLlRpbWVzKDEpOworICAgIG1fc2NoZWR1bGVyLT5yZXF1ZXN0Q29tbWl0KCk7
CisgICAgbV9zY2hlZHVsZXItPnJlcXVlc3RDb21taXQoKTsKKworICAgIEVYUEVDVF9DQUxMKCpt
X2NsaWVudCwgc2NoZWR1bGVCZWdpbkZyYW1lQW5kQ29tbWl0KGZhbHNlKSkuVGltZXMoMSk7Cisg
ICAgbV9zY2hlZHVsZXItPmRpZENvbW1pdCgpOworICAgIG1fc2NoZWR1bGVyLT5yZXF1ZXN0Q29t
bWl0KCk7Cit9CisKK1RFU1RfRihDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRUaGVuUmVk
cmF3QmVmb3JlQ29tbWl0KQoreworICAgIEVYUEVDVF9DQUxMKCptX2NsaWVudCwgc2NoZWR1bGVC
ZWdpbkZyYW1lQW5kQ29tbWl0KGZhbHNlKSkuVGltZXMoMSk7CisgICAgbV9zY2hlZHVsZXItPnJl
cXVlc3RDb21taXQoKTsKKyAgICAvLyBTaW5jZSB3ZSBhbHJlYWR5IGhhdmUgYSBjb21taXQgcGVu
ZGluZyBhdCB0aGlzIHBvaW50LCB0aGUgInRoZW4gcmVkcmF3IiBiaXQgaXMgc2F2ZWQgdW50aWwg
bmV4dCB0aW1lLgorICAgIG1fc2NoZWR1bGVyLT5yZXF1ZXN0Q29tbWl0VGhlblJlZHJhdygpOwor
CisgICAgRVhQRUNUX0NBTEwoKm1fY2xpZW50LCBzY2hlZHVsZUJlZ2luRnJhbWVBbmRDb21taXQo
dHJ1ZSkpLlRpbWVzKDEpOworICAgIG1fc2NoZWR1bGVyLT5kaWRDb21taXQoKTsKKyAgICAvLyBU
aGlzIGNvbW1pdCBzaG91bGQgcGljayB1cCB0aGUgInRoZW4gcmVkcmF3IiBiaXQuCisgICAgbV9z
Y2hlZHVsZXItPnJlcXVlc3RDb21taXQoKTsKK30KKworVEVTVF9GKENDU2NoZWR1bGVyVGVzdCwg
UmVxdWVzdENvbW1pdFRoZW5EcmF3KQoreworICAgIEVYUEVDVF9DQUxMKCptX2NsaWVudCwgc2No
ZWR1bGVCZWdpbkZyYW1lQW5kQ29tbWl0KHRydWUpKS5UaW1lcygxKTsKKyAgICBtX3NjaGVkdWxl
ci0+cmVxdWVzdENvbW1pdFRoZW5SZWRyYXcoKTsKK30KKworVEVTVF9GKENDU2NoZWR1bGVyVGVz
dCwgUmVxdWVzdFJlZHJhdykKK3sKKyAgICBFWFBFQ1RfQ0FMTCgqbV9jbGllbnQsIHNjaGVkdWxl
RHJhd0FuZFByZXNlbnQoKSkuVGltZXMoMSk7CisgICAgbV9zY2hlZHVsZXItPnJlcXVlc3RSZWRy
YXcoKTsKK30KKworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109241</attachid>
            <date>2011-09-29 19:30:23 -0700</date>
            <delta_ts>2011-09-30 14:13:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69049-20110929193022.patch</filename>
            <type>text/plain</type>
            <size>37492</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYzMzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NzI3MzBjODNmOTk0Mjlk
NGI0ZWEwNmFmMjU3NWE0YzhiNDAzYzM0Li43YTJkNjMzMGJlNTE1MzQ5ZWE4ODkwZDAyYTczN2Y3
Y2ZhYjliODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMTEtMDktMjkgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4
dHJhY3Qgc2NoZWR1bGluZyBsb2dpYyBmcm9tIENDVGhyZWFkUHJveHkgdG8gaXRzIG93biBjbGFz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwNDkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
cnRpYWxseSBleHRyYWN0cyB0aGUgY29tbWl0L2RyYXcgc2NoZWR1bGluZyBmcm9tIENDVGhyZWFk
UHJveHkgdG8gYSBzZXBhcmF0ZSBpc29sYXRlZCBjbGFzcy4gVGhpcyBtYWtlcworICAgICAgICB0
aGUgY29tbWl0L2RyYXcgbG9naWMgZWFzaWVyIHRvIHRlc3QsIHVuZGVyc3RhbmQgYW5kIGV4dGVu
ZC4KKworICAgICAgICBUaGVyZSBpcyBvbmUgc3VidGxlIGJlaGF2aW9yIGNoYW5nZSBoZXJlIHRv
IHRoZSB3YXkgdGhhdCB0aGUgZnVuY3Rpb24gZm9ybWVybHkga25vd24gYXMKKyAgICAgICAgQ0NM
YXllclRyZWVIb3N0OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdyB3b3Jrcy4gUHJldmlvdXNseSwg
dGhpcyB3b3VsZCB0cmlnZ2VyIGEgYmVnaW4gZnJhbWUgbWVzc2FnZSwgaWYgb25lCisgICAgICAg
IHdhc24ndCBwZW5kaW5nLCBhbmQgdGhlbiB0cmlnZ2VyIGEgcmVkcmF3IGlmIG9uZSB3YXNuJ3Qg
cGVuZGluZy4gVGhpcyB3YXMgc3VidGx5IHdyb25nIC0gdGhlIGludGVudCBvZiB0aGF0IGNhbGwK
KyAgICAgICAgaXMgdGhhdCBhIHJlZHJhdyBzaG91bGQgaGFwcGVuIGFmdGVyIHRoZSBjb21taXQu
IEl0IGlzbid0IHVzZWZ1bCB0byBkcmF3IGJlZm9yZSB0aGUgY29tbWl0IG9jY3Vycy4gVGhpcyBw
YXRjaAorICAgICAgICBjaGFuZ2VzIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0byBzZXROZWVk
c0NvbW1pdFRoZW5SZWRyYXcgYW5kIG9ubHkgcmVxdWVzdHMgYSByZWRyYXcgYWZ0ZXIgYSBjb21t
aXQgb2NjdXJzLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IENDU2NoZWR1bGVyVGVzdCB1bml0
IHRlc3RzLCBDQ0xheWVyVHJlZUhvc3RUZXN0IHVuaXQgdGVzdHMsIGFuZCBjb21wb3NpdGluZy8g
bGF5b3V0IHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0OjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRWaWV3cG9ydCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNldFZpc2libGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY2hlZHVsZXI6OkNDU2NoZWR1bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1
bGVyOjpyZXF1ZXN0Q29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpyZXF1
ZXN0Q29tbWl0VGhlblJlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6cmVx
dWVzdFJlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6ZGlkQ29tbWl0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpkaWREcmF3KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNDU2NoZWR1bGVyQ2xpZW50Ojp+Q0NTY2hlZHVsZXJDbGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Nj
aGVkdWxlcjo6Y29tbWl0UGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6
cmVkcmF3UGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6cmVkcmF3QWZ0
ZXJDb21taXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94
eTo6c2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xl
VGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xl
VGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tcG9zaXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudDo6fkNDVGhyZWFkUHJveHlTY2hl
ZHVsZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eVNjaGVkdWxlckNs
aWVudDo6c2NoZWR1bGVCZWdpbkZyYW1lQW5kQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkND
VGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ6OnNjaGVkdWxlRHJhd0FuZFByZXNlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudDo6Q0NUaHJlYWRQcm94
eVNjaGVkdWxlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpDQ1Ro
cmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUFu
ZFJlYWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVM
YXllclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNldE5lZWRz
Q29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0
T25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0Nv
bW1pdFRoZW5SZWRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0TmVl
ZHNDb21taXRUaGVuUmVkcmF3T25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjpzZXROZWVkc1JlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
OjpzZXROZWVkc1JlZHJhd09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29t
bWl0VGFza09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVn
aW5GcmFtZUFuZENvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpjb21t
aXRPbkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmRyYXdMYXll
cnNBbmRQcmVzZW50T25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
Ojppbml0aWFsaXplSW1wbE9uQ0NUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKwogMjAxMS0wOS0yOSAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogVUkg
cGVyZm9ybWFuY2UgdGVzdCBmb3IgbmV0d29yayBwYW5lbCBpcyBpbmNvcnJlY3QuIFRoZSB0aW1l
IGlzIGluY2x1ZGluZyBhIHRpbWVvdXQgYmV0d2VlbiBzY2hlZHVsZWQgcmVmcmVzaCBhbmQgYWN0
dWFsIHJlZnJlc2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYjM1NzQ2NDI1Y2VjYWUwODk5NDlmNjJk
ZGE2YWE4Yjg0OWNlY2NmNS4uYjhhZjUwMzJiMTE5NTExMDVjZWFkZDBlMzQzY2Y3YzU5NDNiYjE2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzUxNCwxNSArMzUxNCwxNyBAQAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWFpblRocmVhZFRhc2suaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdp
bkxheWVySW1wbC5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Byb3h5LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUHJveHkuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwJywKKyAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRUYXNrLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5
ZXJJbXBsLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNmRkZDliZDYz
OTUwYmM0N2MyNzAyZDQ4MGU1ODVhMDdlMmQyM2Y3Yi4uODk2MjhkNjM2YTQ2MzMxYTA3N2QyMjM3
ZmY3ZDM3MDFiMjhjZTNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC02
MCw2ICs2MCw3IEBAIENDTGF5ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVl
SG9zdENsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPExheWVyCiAKIGJvb2wgQ0NMYXllclRyZWVI
b3N0Ojppbml0aWFsaXplKCkKIHsKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojpp
bml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgaWYgKG1fc2V0dGluZ3MuZW5hYmxlQ29tcG9zaXRv
clRocmVhZCkgewogICAgICAgICAvLyBBY2NlbGVyYXRlZCBQYWludGluZyBpcyBub3Qgc3VwcG9y
dGVkIGluIHRocmVhZGVkIG1vZGUuIFR1cm4gaXQgb2ZmLgogICAgICAgICBtX3NldHRpbmdzLmFj
Y2VsZXJhdGVQYWludGluZyA9IGZhbHNlOwpAQCAtNzgsOCArNzksNyBAQCBib29sIENDTGF5ZXJU
cmVlSG9zdDo6aW5pdGlhbGl6ZSgpCiAgICAgLy8gVXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQgb24g
Y2FwYWJpbGl0aWVzIHRoYXQgd2UgZ290IGJhY2sgZnJvbSB0aGUgcmVuZGVyZXIuCiAgICAgbV9z
ZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzKCkudXNpbmdBY2NlbGVyYXRlZFBhaW50aW5nOwogCi0gICAgLy8gV2UgY2hhbmdlZCB0
aGUgcm9vdCBsYXllci4gVGVsbCB0aGUgcHJveHkgYSBjb21taXQgaXMgbmVlZGVkLgotICAgIG1f
cHJveHktPnNldE5lZWRzQ29tbWl0QW5kUmVkcmF3KCk7CisgICAgc2V0TmVlZHNDb21taXRUaGVu
UmVkcmF3KCk7CiAKICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdl
cjo6Y3JlYXRlKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcygpLCBtX3Byb3h5LT5sYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOwogICAgIHJldHVybiB0cnVl
OwpAQCAtMjAxLDE0ICsyMDEsMTQgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldFpvb21Bbmlt
YXRvclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgem9vbSkKICAgICBtX3pv
b21BbmltYXRvclRyYW5zZm9ybSA9IHpvb207CiAKICAgICBpZiAoem9vbUNoYW5nZWQpCi0gICAg
ICAgIHNldE5lZWRzQ29tbWl0QW5kUmVkcmF3KCk7CisgICAgICAgIHNldE5lZWRzQ29tbWl0VGhl
blJlZHJhdygpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNDb21taXRBbmRS
ZWRyYXcoKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0VGhlblJlZHJhdygp
CiB7CiAjaWYgVVNFKFRIUkVBREVEX0NPTVBPU0lUSU5HKQotICAgIFRSQUNFX0VWRU5UKCJDQ0xh
eWVyVHJlZUhvc3Q6OnNldE5lZWRzUmVkcmF3IiwgdGhpcywgMCk7Ci0gICAgbV9wcm94eS0+c2V0
TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0
OjpzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXciLCB0aGlzLCAwKTsKKyAgICBtX3Byb3h5LT5zZXRO
ZWVkc0NvbW1pdFRoZW5SZWRyYXcoKTsKICNlbHNlCiAgICAgbV9jbGllbnQtPnNjaGVkdWxlQ29t
cG9zaXRlKCk7CiAjZW5kaWYKQEAgLTIyNiwxNCArMjI2LDE0IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0OjpzZXROZWVkc1JlZHJhdygpCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld3BvcnQo
Y29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogewogICAgIG1fdmlld3BvcnRTaXplID0gdmll
d3BvcnRTaXplOwotICAgIHNldE5lZWRzQ29tbWl0QW5kUmVkcmF3KCk7CisgICAgc2V0TmVlZHND
b21taXRUaGVuUmVkcmF3KCk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxl
KGJvb2wgdmlzaWJsZSkKIHsKICAgICBtX3Zpc2libGUgPSB2aXNpYmxlOwogICAgIGlmICh2aXNp
YmxlKQotICAgICAgICBtX3Byb3h5LT5zZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOworICAgICAg
ICBzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcoKTsKICAgICBlbHNlIHsKICAgICAgICAgbV9jb250
ZW50c1RleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KFRleHR1cmVNYW5hZ2VyOjps
b3dMaW1pdEJ5dGVzKCkpOwogICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnVucHJv
dGVjdEFsbFRleHR1cmVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDU0YWQ0
YzAwMjIyOTZkZjdlOGIxNmU2NzIwMDkwNWE3YjdkNGU1MjIuLjg3YjliNjI0MmRiYzVkYmM1NDBh
YWU1MmFiYWJkNTIxMDcxZDAzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0x
MzYsNyArMTM2LDcgQEAgcHVibGljOgogICAgIC8vIFRlc3Qtb25seSBob29rCiAgICAgdm9pZCBs
b3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKTsKIAotICAgIHZvaWQgc2V0TmVlZHND
b21taXRBbmRSZWRyYXcoKTsKKyAgICB2b2lkIHNldE5lZWRzQ29tbWl0VGhlblJlZHJhdygpOwog
ICAgIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKIAogICAgIExheWVyQ2hyb21pdW0qIHJvb3RMYXll
cigpIHsgcmV0dXJuIG1fcm9vdExheWVyLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggYjIyMmI5
OTg4ZDgxN2Y0OTVjMmEzYTBmMDVjNGNhMWNlZGFkZDE2My4uZDliNzkzYjA2ZmQwZmVlMzBmMTE5
OTMwMjJjMjQzODA4YTg3NWI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE5l
ZWRzQ29tbWl0KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdEFuZFJlZHJh
dygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhdygpID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCBzdGFydCgpID0gMDsgLy8gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIHVzaW5nIHRoZSBwcm94
eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjU0MzE1MzM2MmRkMzY5MTVl
OWYxZTUwMjUyYjJiYWExNDkyNDE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCkBAIC0wLDAgKzEs
NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNj
L0NDU2NoZWR1bGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0NTY2hlZHVsZXI6OkND
U2NoZWR1bGVyKENDU2NoZWR1bGVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGll
bnQpCisgICAgLCBtX2NvbW1pdFBlbmRpbmcoZmFsc2UpCisgICAgLCBtX3JlZHJhd1BlbmRpbmco
ZmFsc2UpCit7CisgICAgQVNTRVJUKG1fY2xpZW50KTsKK30KKwordm9pZCBDQ1NjaGVkdWxlcjo6
cmVxdWVzdENvbW1pdCgpCit7CisgICAgaWYgKG1fY29tbWl0UGVuZGluZykKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9jb21taXRQZW5kaW5nID0gdHJ1ZTsKKyAgICBtX2NsaWVudC0+c2NoZWR1
bGVCZWdpbkZyYW1lQW5kQ29tbWl0KCk7Cit9CisKK3ZvaWQgQ0NTY2hlZHVsZXI6OnJlcXVlc3RS
ZWRyYXcoKQoreworICAgIGlmIChtX3JlZHJhd1BlbmRpbmcpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fcmVkcmF3UGVuZGluZyA9IHRydWU7CisKKyAgICBtX2NsaWVudC0+c2NoZWR1bGVEcmF3
QW5kUHJlc2VudCgpOworfQorCit2b2lkIENDU2NoZWR1bGVyOjpkaWRDb21taXQoKQoreworICAg
IG1fY29tbWl0UGVuZGluZyA9IGZhbHNlOworfQorCit2b2lkIENDU2NoZWR1bGVyOjpkaWREcmF3
KCkKK3sKKyAgICBtX3JlZHJhd1BlbmRpbmcgPSBmYWxzZTsKK30KKworfQorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hl
ZHVsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODM4ZGZjYWEyN2Q0NDE5NmI4NTk1ZDQ0OTY5NzAwODMwNWU3
ZWE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIENDU2NoZWR1bGVyX2gKKyNkZWZpbmUgQ0NTY2hlZHVsZXJfaAorCisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDQ1RocmVhZDsKKworY2xhc3MgQ0NTY2hlZHVsZXJD
bGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUJlZ2luRnJhbWVBbmRD
b21taXQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlRHJhd0FuZFByZXNlbnQoKSA9
IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5DQ1NjaGVkdWxlckNsaWVudCgpIHsgfQor
fTsKKworY2xhc3MgQ0NTY2hlZHVsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDU2No
ZWR1bGVyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1NjaGVkdWxlcj4gY3Jl
YXRlKENDU2NoZWR1bGVyQ2xpZW50KiBjbGllbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IENDU2NoZWR1bGVyKGNsaWVudCkpOworICAgIH0KKworICAgIHZvaWQgcmVxdWVz
dENvbW1pdCgpOworICAgIHZvaWQgcmVxdWVzdFJlZHJhdygpOworCisgICAgdm9pZCBkaWRDb21t
aXQoKTsKKyAgICB2b2lkIGRpZERyYXcoKTsKKworICAgIGJvb2wgY29tbWl0UGVuZGluZygpIGNv
bnN0IHsgcmV0dXJuIG1fY29tbWl0UGVuZGluZzsgfQorICAgIGJvb2wgcmVkcmF3UGVuZGluZygp
IGNvbnN0IHsgcmV0dXJuIG1fcmVkcmF3UGVuZGluZzsgfQorCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IENDU2NoZWR1bGVyKENDU2NoZWR1bGVyQ2xpZW50Kik7CisKKyAgICBDQ1NjaGVkdWxlckNs
aWVudCogbV9jbGllbnQ7CisKKyAgICBib29sIG1fY29tbWl0UGVuZGluZzsKKyAgICBib29sIG1f
cmVkcmF3UGVuZGluZzsKK307CisKK30KKworI2VuZGlmIC8vIENDU2NoZWR1bGVyX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggOTdiY2VhNTJhMjI0ZTFlYWVl
ZmM1MDRhZTUwOTdiYmY4NWRhZDUxOS4uNTViZjhiMGY0ZTFhMjY5YTVlNzlmYWI5NzU2NzdlYjk2
NTRjZWExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTE2
Niw3ICsxNjYsNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0KCkK
ICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiB9CiAKLXZvaWQgQ0NTaW5n
bGVUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKQordm9pZCBDQ1NpbmdsZVRo
cmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcoKQogewogICAgIEFTU0VSVChDQ1By
b3h5Ojppc01haW5UaHJlYWQoKSk7CiAjaWYgIVVTRShUSFJFQURFRF9DT01QT1NJVElORykKQEAg
LTE4MSw3ICsxODEsNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3
KCkKIHsKICAgICAvLyBGSVhNRTogT25jZSB3ZSBtb3ZlIHJlbmRlcl93aWRnZXQgc2NoZWR1bGlu
ZyBpbnRvIHRoaXMgY2xhc3MsIHdlIGNhbgogICAgIC8vIHRyZWF0IHJlZHJhdyByZXF1ZXN0cyBt
b3JlIGVmZmljaWVudGx5IHRoYW4gY29tbWl0QW5kUmVkcmF3IHJlcXVlc3RzLgotICAgIHNldE5l
ZWRzQ29tbWl0QW5kUmVkcmF3KCk7CisgICAgc2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCk7CiB9
CiAKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c3RvcCgpCkBAIC0yNDMsNyArMjQzLDcgQEAg
Ym9vbCBDQ1NpbmdsZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRJZk5lZWRlZCgpCiAgICAg
Ly8gaW4gdGhlIGNvbnRleHQtbG9zdCBtYWNoaW5lcnkuCiAgICAgbV9udW1GYWlsZWRSZWNyZWF0
ZUF0dGVtcHRzKys7CiAgICAgaWYgKG1fbnVtRmFpbGVkUmVjcmVhdGVBdHRlbXB0cyA8IDUpIHsK
LSAgICAgICAgc2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKKyAgICAgICAgc2V0TmVlZHNDb21t
aXRUaGVuUmVkcmF3KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI4Niw3
ICsyODYsNyBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tcG9zaXRlKCkKICAgICAg
ICAgICAvLyBhbmQgcmVxdWVzdCBhIHJlcGFpbnQgeWV0IGFnYWluLgogICAgICAgICAgIG1fZ3Jh
cGhpY3NDb250ZXh0TG9zdCA9IHRydWU7CiAgICAgICAgICAgbV9udW1GYWlsZWRSZWNyZWF0ZUF0
dGVtcHRzID0gMDsKLSAgICAgICAgICBzZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOworICAgICAg
ICAgIHNldE5lZWRzQ29tbWl0VGhlblJlZHJhdygpOwogICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXgg
YzE4ZTdmMzY0OTM4ZDE5MzY0YzMxMTBmNjZlNGJkM2Y5MzE3MmM1NC4uOGYwMzBhOTYzYmRlYzMx
ZWI2NmJiMTNiZGE3YjZlNzFkNmM0MzgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBMYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIGxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQgbnVtVGltZXMpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdCgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc0NvbW1pdEFuZFJlZHJhdygpOworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdFRo
ZW5SZWRyYXcoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcAppbmRleCBlNDA5ODIzYmE3NTRmZGUxZDhiOTk0MGU5MDQyZDU5NDY5NTAw
YjEyLi4xZTljZTAzYTIwYjFjYzU2YjhmNjc0MzVmNmZhNDljMWI2ZDc0ZTZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlRyYWNlRXZl
bnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ01h
aW5UaHJlYWRUYXNrLmgiCisjaW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJj
Yy9DQ1RocmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNDMsNiArNDQsMzMgQEAgQ0NUaHJlYWQqIGNjVGhyZWFk
OwogaW50IG51bVByb3hpZXMgPSAwOwogfQogCitjbGFzcyBDQ1RocmVhZFByb3h5U2NoZWR1bGVy
Q2xpZW50IDogcHVibGljIENDU2NoZWR1bGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxDQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50PiBjcmVhdGUoQ0NUaHJlYWRQ
cm94eSogcHJveHkpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVGhyZWFk
UHJveHlTY2hlZHVsZXJDbGllbnQocHJveHkpKTsKKyAgICB9CisgICAgdmlydHVhbCB+Q0NUaHJl
YWRQcm94eVNjaGVkdWxlckNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxl
QmVnaW5GcmFtZUFuZENvbW1pdCgpCisgICAgeworICAgICAgICBDQ01haW5UaHJlYWQ6OnBvc3RU
YXNrKG1fcHJveHktPmNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25DQ1RocmVhZCgpKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVEcmF3QW5kUHJlc2VudCgpCisgICAg
eworICAgICAgICBtX3Byb3h5LT5kcmF3TGF5ZXJzQW5kUHJlc2VudE9uQ0NUaHJlYWQoKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVu
dChDQ1RocmVhZFByb3h5KiBwcm94eSkKKyAgICB7CisgICAgICAgIG1fcHJveHkgPSBwcm94eTsK
KyAgICB9CisKKyAgICBDQ1RocmVhZFByb3h5KiBtX3Byb3h5OworfTsKKwogUGFzc093blB0cjxD
Q1Byb3h5PiBDQ1RocmVhZFByb3h5OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVI
b3N0KQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaHJlYWRQcm94eShsYXllclRyZWVI
b3N0KSk7CkBAIC01NCw5ICs4Miw2IEBAIENDVGhyZWFkUHJveHk6OkNDVGhyZWFkUHJveHkoQ0NM
YXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogICAgICwgbV9zdGFydGVkKGZhbHNlKQogICAg
ICwgbV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIoLTEpCiAg
ICAgLCBtX251bUJlZ2luRnJhbWVBbmRDb21taXRzSXNzdWVkT25DQ1RocmVhZCgwKQotICAgICwg
bV9iZWdpbkZyYW1lQW5kQ29tbWl0UGVuZGluZ09uQ0NUaHJlYWQoZmFsc2UpCi0gICAgLCBtX2Ry
YXdUYXNrUG9zdGVkT25DQ1RocmVhZChmYWxzZSkKLSAgICAsIG1fcmVkcmF3UmVxdWVzdGVkT25D
Q1RocmVhZChmYWxzZSkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6Q0NUaHJl
YWRQcm94eSIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC04NCw2
ICsxMDksNyBAQCBDQ1RocmVhZFByb3h5Ojp+Q0NUaHJlYWRQcm94eSgpCiAKIGJvb2wgQ0NUaHJl
YWRQcm94eTo6Y29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0
JiByZWN0KQogeworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFBSb3h5Ojpjb21wb3NpdGVBbmRS
ZWFkYmFjayIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNT
RVJUKG1fbGF5ZXJUcmVlSG9zdCk7CiAKQEAgLTE1MCw2ICsxNzYsNyBAQCBib29sIENDVGhyZWFk
UHJveHk6OmlzU3RhcnRlZCgpIGNvbnN0CiAKIGJvb2wgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXIoKQogeworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0
aWFsaXplTGF5ZXJSZW5kZXJlciIsIHRoaXMsIDApOwogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gY29udGV4dCA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRl
eHQzRCgpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTkx
LDMzICsyMTgsMzUgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCgpCiAKICAg
ICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXQiLCB0aGlzLCAwKTsK
ICAgICBtX2NvbW1pdFJlcXVlc3RlZCA9IHRydWU7Ci0gICAgY2NUaHJlYWQtPnBvc3RUYXNrKGNy
ZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6dXBkYXRlU2NoZWR1bGVyU3Rh
dGVPbkNDVGhyZWFkLCBtX2NvbW1pdFJlcXVlc3RlZCwgdHJ1ZSkpOworICAgIGNjVGhyZWFkLT5w
b3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldE5lZWRz
Q29tbWl0T25DQ1RocmVhZCkpOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29t
bWl0QW5kUmVkcmF3KCkKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRUaGVuUmVk
cmF3KCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChtX2NvbW1pdFJl
cXVlc3RlZCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fY29tbWl0UmVxdWVzdGVkID0gdHJ1ZTsK
KyAgICBtX3JlZHJhd0FmdGVyQ29tbWl0ID0gdHJ1ZTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOwor
fQogCi0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0QW5kUmVk
cmF3IiwgdGhpcywgMCk7Ci0gICAgY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFz
ayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6dXBkYXRlU2NoZWR1bGVyU3RhdGVPbkNDVGhyZWFkLCBt
X2NvbW1pdFJlcXVlc3RlZCwgdHJ1ZSkpOwordm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc0Nv
bW1pdE9uQ0NUaHJlYWQoKQoreworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgVFJB
Q0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0T25DQ1RocmVhZCIsIHRoaXMs
IDApOworICAgIG1fc2NoZWR1bGVyT25DQ1RocmVhZC0+cmVxdWVzdENvbW1pdCgpOwogfQogCiB2
b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3KCkKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotICAgIGlmIChtX2NvbW1pdFJlcXVlc3RlZCkgLy8gSW1wbGllcyB0aGF0IGEg
Y29tbWl0IGlzIGluIGZsaWdodC4KLSAgICAgICAgcmV0dXJuOwotICAgIC8vIFVubGlrZSBzZXRO
ZWVkc0NvbW1pdCB0aGF0IHRyYWNrcyB3aGV0aGVyIGEgY29tbWl0IG1lc3NhZ2UgaGFzIGJlZW4g
c2VudCwKLSAgICAvLyBzZXROZWVkc1JlZHJhdyBhbHdheXMgc2VuZHMgYSBtZXNzYWdlIHRvIHRo
ZSBjb21wb3NpdG9yIHRocmVhZC4gVGhpcyBpcwotICAgIC8vIGJlY2F1c2UgdGhlIGNvbXBvc2l0
b3IgdGhyZWFkIGNhbiBkcmF3IHdpdGhvdXQgdGVsbGluZyB0aGUgbWFpbgotICAgIC8vIHRocmVh
ZC4gVGhpcyBzaG91bGQgbm90IGJlIG11Y2ggb2YgYSBwcm9ibGVtIGJlY2F1c2UgY2FsbHMgdG8K
LSAgICAvLyBzZXROZWVkc1JlZHJhdyBtZXNzYWdlcyBhcmUgdW5jb21tb24gKG9ubHkgdHJpZ2dl
cmVkIGJ5IFdNX1BBSU5UL2V0YyksCi0gICAgLy8gY29tcGFyZWQgdG8gc2V0TmVlZHNDb21taXRB
bmRSZWRyYXcgbWVzc2FnZXMuCiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5l
ZWRzUmVkcmF3IiwgdGhpcywgMCk7Ci0gICAgY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhy
ZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6dXBkYXRlU2NoZWR1bGVyU3RhdGVPbkNDVGhy
ZWFkLCBmYWxzZSwgdHJ1ZSkpOworICAgIGNjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVh
ZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3T25DQ1RocmVhZCkpOwor
fQorCit2b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3T25DQ1RocmVhZCgpCit7Cisg
ICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94
eTo6c2V0TmVlZHNSZWRyYXdPbkNDVGhyZWFkIiwgdGhpcywgMCk7CisgICAgbV9zY2hlZHVsZXJP
bkNDVGhyZWFkLT5yZXF1ZXN0UmVkcmF3KCk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3Rh
cnQoKQpAQCAtMjUxLDExICsyODAsMTAgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxS
ZW5kZXJpbmdPbkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewogICAg
IFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkNDVGhyZWFk
IiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKLSAgICBBU1NFUlQoIW1f
YmVnaW5GcmFtZUFuZENvbW1pdFBlbmRpbmdPbkNDVGhyZWFkKTsKLSAgICBpZiAobV9yZWRyYXdS
ZXF1ZXN0ZWRPbkNDVGhyZWFkKSB7CisgICAgaWYgKG1fc2NoZWR1bGVyT25DQ1RocmVhZC0+cmVk
cmF3UGVuZGluZygpKSB7CiAgICAgICAgIGRyYXdMYXllcnNPbkNDVGhyZWFkKCk7CiAgICAgICAg
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnByZXNlbnQoKTsKLSAgICAgICAgbV9yZWRyYXdSZXF1ZXN0
ZWRPbkNDVGhyZWFkID0gZmFsc2U7CisgICAgICAgIG1fc2NoZWR1bGVyT25DQ1RocmVhZC0+ZGlk
RHJhdygpOwogICAgIH0KICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5maW5pc2hBbGxSZW5kZXJp
bmcoKTsKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKQEAgLTI3Myw3ICszMDEsNiBAQCBQYXNz
T3duUHRyPENDTWFpblRocmVhZDo6VGFzaz4gQ0NUaHJlYWRQcm94eTo6Y3JlYXRlQmVnaW5GcmFt
ZUFuZENvbW1pdFRhc2tPbkNDVAogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpjcmVh
dGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NF
UlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIGRvdWJsZSBmcmFtZUJlZ2luVGltZSA9IGN1cnJlbnRU
aW1lKCk7Ci0gICAgbV9iZWdpbkZyYW1lQW5kQ29tbWl0UGVuZGluZ09uQ0NUaHJlYWQgPSB0cnVl
OwogCiAgICAgLy8gTk9URSwgaXQgaXMgcG9zc2libGUgdG8gcmVjZWlldmUgYSByZXF1ZXN0IGZv
ciBhCiAgICAgLy8gYmVnaW5GcmFtZUFuZENvbW1pdE9uQ0NUaHJlYWQgZnJvbSBmaW5pc2hBbGxS
ZW5kZXJpbmcgd2hpbGUgYQpAQCAtMzMxLDYgKzM1OCwxMCBAQCB2b2lkIENDVGhyZWFkUHJveHk6
OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdp
blRpbQogCiAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCisgICAgaWYg
KG1fcmVkcmF3QWZ0ZXJDb21taXQpCisgICAgICAgIHNldE5lZWRzUmVkcmF3KCk7CisgICAgbV9y
ZWRyYXdBZnRlckNvbW1pdCA9IGZhbHNlOworCiAgICAgQVNTRVJUKG1fbGFzdEV4ZWN1dGVkQmVn
aW5GcmFtZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVyID09IHNlcXVlbmNlTnVtYmVyKTsKIH0KIApA
QCAtMzM4LDggKzM2OSw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6Y29tbWl0T25DQ1RocmVhZChD
Q0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJl
YWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdE9uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBB
U1NFUlQoaXNJbXBsVGhyZWFkKCkpOwotICAgIEFTU0VSVChtX2JlZ2luRnJhbWVBbmRDb21taXRQ
ZW5kaW5nT25DQ1RocmVhZCk7Ci0gICAgbV9iZWdpbkZyYW1lQW5kQ29tbWl0UGVuZGluZ09uQ0NU
aHJlYWQgPSBmYWxzZTsKKyAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkNDVGhyZWFkLT5jb21taXRQ
ZW5kaW5nKCkpOwogICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkgewogICAgICAgICBjb21w
bGV0aW9uLT5zaWduYWwoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzUwLDE5ICszODAsNyBAQCB2
b2lkIENDVGhyZWFkUHJveHk6OmNvbW1pdE9uQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNv
bXBsZXRpb24pCiAKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIAotICAgIGlmIChtX3JlZHJh
d1JlcXVlc3RlZE9uQ0NUaHJlYWQpCi0gICAgICAgIHNjaGVkdWxlRHJhd1Rhc2tPbkNDVGhyZWFk
KCk7Ci19Ci0KLXZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVEcmF3VGFza09uQ0NUaHJlYWQo
KQotewotICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgaWYgKG1fZHJhd1Rhc2tQb3N0
ZWRPbkNDVGhyZWFkKQotICAgICAgICByZXR1cm47Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFk
UHJveHk6OnNjaGVkdWxlRHJhd1Rhc2tPbkNDVGhyZWFkIiwgdGhpcywgMCk7Ci0gICAgQVNTRVJU
KG1fbGF5ZXJUcmVlSG9zdEltcGwpOwotICAgIG1fZHJhd1Rhc2tQb3N0ZWRPbkNDVGhyZWFkID0g
dHJ1ZTsKLSAgICBjY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZD
Q1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzQW5kUHJlc2VudE9uQ0NUaHJlYWQpKTsKKyAgICBtX3Nj
aGVkdWxlck9uQ0NUaHJlYWQtPmRpZENvbW1pdCgpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6
OmRyYXdMYXllcnNBbmRQcmVzZW50T25DQ1RocmVhZCgpCkBAIC0zNzQsOCArMzkyLDcgQEAgdm9p
ZCBDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzQW5kUHJlc2VudE9uQ0NUaHJlYWQoKQogCiAgICAg
ZHJhd0xheWVyc09uQ0NUaHJlYWQoKTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5wcmVzZW50
KCk7Ci0gICAgbV9yZWRyYXdSZXF1ZXN0ZWRPbkNDVGhyZWFkID0gZmFsc2U7Ci0gICAgbV9kcmF3
VGFza1Bvc3RlZE9uQ0NUaHJlYWQgPSBmYWxzZTsKKyAgICBtX3NjaGVkdWxlck9uQ0NUaHJlYWQt
PmRpZERyYXcoKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzT25DQ1RocmVh
ZCgpCkBAIC0zODgsMzAgKzQwNSwxMyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmRyYXdMYXllcnNP
bkNDVGhyZWFkKCkKICAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlSG9zdEltcGwtPmlzQ29udGV4dExv
c3QoKSk7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlU2NoZWR1bGVyU3RhdGVPbkND
VGhyZWFkKGJvb2wgY29tbWl0UmVxdWVzdGVkLCBib29sIHJlZHJhd1JlcXVlc3RlZCkKLXsKLSAg
ICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6dXBkYXRlU2NoZWR1bGVyU3RhdGVPbkNDVGhy
ZWFkIiwgdGhpcywgMCk7Ci0gICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKLSAgICBBU1NFUlQo
bV9sYXllclRyZWVIb3N0SW1wbCk7Ci0KLSAgICAvLyBGSVhNRTogdXNlIENDU2NoZWR1bGVyIHRv
IGRlY2lkZSB3aGVuIHRvIG1hbmFnZSB0aGUgY29udmVyc2lvbiBvZiB0aGlzCi0gICAgLy8gY29t
bWl0IHJlcXVlc3QgaW50byBhbiBhY3R1YWwgY3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tP
bkNDVGhyZWFkIGNhbGwuCi0gICAgbV9yZWRyYXdSZXF1ZXN0ZWRPbkNDVGhyZWFkIHw9IHJlZHJh
d1JlcXVlc3RlZDsKLSAgICBpZiAoY29tbWl0UmVxdWVzdGVkICYmICFtX2JlZ2luRnJhbWVBbmRD
b21taXRQZW5kaW5nT25DQ1RocmVhZCkgewotICAgICAgICBDQ01haW5UaHJlYWQ6OnBvc3RUYXNr
KGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25DQ1RocmVhZCgpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIC8vIElmIG5vIGNvbW1pdCBpcyBwZW5kaW5nLCBidXQgYSByZWRy
YXcgaXMgcmVxdWVzdGVkLCB0aGVuIHBvc3QgYSByZWRyYXcgcmlnaHQgYXdheQotICAgIGlmICht
X3JlZHJhd1JlcXVlc3RlZE9uQ0NUaHJlYWQpCi0gICAgICAgIHNjaGVkdWxlRHJhd1Rhc2tPbkND
VGhyZWFkKCk7Ci19Ci0KIHZvaWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkNDVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewogICAgIFRSQUNFX0VWRU5UKCJD
Q1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBB
U1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwgPSBtX2xheWVy
VHJlZUhvc3QtPmNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKCk7CisgICAgbV9zY2hlZHVsZXJDbGll
bnRPbkNDVGhyZWFkID0gQ0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudDo6Y3JlYXRlKHRoaXMp
OworICAgIG1fc2NoZWR1bGVyT25DQ1RocmVhZCA9IENDU2NoZWR1bGVyOjpjcmVhdGUobV9zY2hl
ZHVsZXJDbGllbnRPbkNDVGhyZWFkLmdldCgpKTsKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IGQzYjQ4N2ZlYzQwZDQwMTU5MDdhOWY4
MDk2Y2Q5ZGJjZTJkMWIxOTIuLjEwZGNiNDEyNDM4ZWQ5MTJmYmQ0YjU3NDJlZWQzN2FjYTI1N2M5
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTM0LDggKzM0LDExIEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKK2NsYXNzIENDU2NoZWR1bGVy
OworY2xhc3MgQ0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudDsKIAogY2xhc3MgQ0NUaHJlYWRQ
cm94eSA6IHB1YmxpYyBDQ1Byb3h5IHsKKyAgICBmcmllbmQgY2xhc3MgQ0NUaHJlYWRQcm94eVNj
aGVkdWxlckNsaWVudDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDQ1Byb3h5PiBj
cmVhdGUoQ0NMYXllclRyZWVIb3N0Kik7CiAKQEAgLTUwLDcgKzUzLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBsb3NlQ29tcG9zaXRvckNvbnRl
eHQoaW50IG51bVRpbWVzKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRz
UmVkcmF3KCk7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAgICAgdmlydHVhbCB2b2lkIHN0
b3AoKTsKQEAgLTcyLDEyICs3NSwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZUlt
cGxPbkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBpbml0aWFsaXplTGF5
ZXJSZW5kZXJlck9uQ0NUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ0NvbXBsZXRpb25FdmVu
dCosIGJvb2wqIGluaXRpYWxpemVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMq
KTsKICAgICB2b2lkIHNldE5lZWRzQ29tbWl0T25DQ1RocmVhZCgpOwotICAgIHZvaWQgdXBkYXRl
U2NoZWR1bGVyU3RhdGVPbkNDVGhyZWFkKGJvb2wgY29tbWl0UmVxdWVzdGVkLCBib29sIHJlZHJh
d1JlcXVlc3RlZCk7CisgICAgdm9pZCBzZXROZWVkc1JlZHJhd09uQ0NUaHJlYWQoKTsKKyAgICB2
b2lkIHNldE5lZWRzQ29tbWl0VGhlblJlZHJhd09uQ0NUaHJlYWQoKTsKICAgICB2b2lkIGxheWVy
VHJlZUhvc3RDbG9zZWRPbkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7Ci0gICAgdm9pZCBz
Y2hlZHVsZURyYXdUYXNrT25DQ1RocmVhZCgpOwogCiAgICAgLy8gQWNjZXNzZWQgb24gbWFpbiB0
aHJlYWQgb25seS4KICAgICBib29sIG1fY29tbWl0UmVxdWVzdGVkOworICAgIGJvb2wgbV9yZWRy
YXdBZnRlckNvbW1pdDsKICAgICBDQ0xheWVyVHJlZUhvc3QqIG1fbGF5ZXJUcmVlSG9zdDsKICAg
ICBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzIG1fbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllc01h
aW5UaHJlYWRDb3B5OwogICAgIGJvb2wgbV9zdGFydGVkOwpAQCAtODYsOSArOTAsOSBAQCBwcml2
YXRlOgogICAgIC8vIFVzZWQgb24gdGhlIENDVGhyZWFkIG9ubHkKICAgICBPd25QdHI8Q0NMYXll
clRyZWVIb3N0SW1wbD4gbV9sYXllclRyZWVIb3N0SW1wbDsKICAgICBpbnQgbV9udW1CZWdpbkZy
YW1lQW5kQ29tbWl0c0lzc3VlZE9uQ0NUaHJlYWQ7Ci0gICAgYm9vbCBtX2JlZ2luRnJhbWVBbmRD
b21taXRQZW5kaW5nT25DQ1RocmVhZDsKLSAgICBib29sIG1fZHJhd1Rhc2tQb3N0ZWRPbkNDVGhy
ZWFkOwotICAgIGJvb2wgbV9yZWRyYXdSZXF1ZXN0ZWRPbkNDVGhyZWFkOworCisgICAgT3duUHRy
PENDU2NoZWR1bGVyPiBtX3NjaGVkdWxlck9uQ0NUaHJlYWQ7CisgICAgT3duUHRyPENDVGhyZWFk
UHJveHlTY2hlZHVsZXJDbGllbnQ+IG1fc2NoZWR1bGVyQ2xpZW50T25DQ1RocmVhZDsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNDE2ZGEzZjgyMWM4MjAwNTNmMmQ2NDMy
ZWQyOTU3NDk5NzY3MWI2Yy4uMTA0NGI4ZDRhMmVmNzYxOWJkNmYzMTE1ZGU2NTE3ZDc2ZjkyZGUw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMS0wOS0y
OSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gRXh0cmFjdCBzY2hlZHVsaW5nIGxvZ2ljIGZyb20gQ0NUaHJlYWRQcm94eSB0byBpdHMg
b3duIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02OTA0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZHMgc29tZSB1bml0IHRlc3RzIGZvciB0aGUgbmV3IENDU2NoZWR1bGVyIGNsYXNzLiBTaW5j
ZSB0aGUgY2xhc3MgaXMgdmVyeSBzaW1wbGUgdG9kYXksIHRoZSB0ZXN0cyBhcmUKKyAgICAgICAg
c2ltaWxhcmx5IHF1aXRlIHNpbXBsZS4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAg
ICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpz
ZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9z
dFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0Ojpwb3N0U2V0TmVl
ZHNDb21taXRUaGVuUmVkcmF3VG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRy
ZWVIb3N0VGVzdDo6ZGlzcGF0Y2hTZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcpOgorICAgICAgICAo
V1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U2hvcnRsaXZlZDI6OmJlZ2luVGVzdCk6CisgICAgICAg
IChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RDb21taXRpbmdXaXRoQ29udGludW91c1JlZHJhdzo6
YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdENvbW1pdGluZ1dp
dGhDb250aW51b3VzUmVkcmF3OjpkcmF3TGF5ZXJzT25DQ1RocmVhZCk6CisgICAgICAgIChXVEY6
OkNDTGF5ZXJUcmVlSG9zdFRlc3RTZXROZWVkc0NvbW1pdDE6OmJlZ2luVGVzdCk6CisgICAgICAg
IChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTZXROZWVkc0NvbW1pdDI6OmJlZ2luVGVzdCk6Cisg
ICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTZXROZWVkc0NvbW1pdDI6OmRyYXdMYXll
cnNPbkNDVGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFNldE5lZWRz
UmVkcmF3OjpiZWdpblRlc3QpOgorICAgICAgICAqIHRlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHA6
IEFkZGVkLgorCiAyMDExLTA5LTI5ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgSW5kZXhlZERCOiBVc2UgTGV2ZWxEQiBhbHNvIGZvciBpbi1tZW1vcnkgZGF0
YWJhc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCA3Mzc1MmEyOTRjNDAwYWJj
ODk3YjNhODM1MjBjNjRhMjFiZjFhMTQxLi40NmEyMDI0ZDQ5ODBiYWFkMWZmNDk1ODQ5YWIyNGZi
ZWEyZjVlMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBp
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTU1LDYgKzU1LDcg
QEAKICAgICAgICAgICAgICd0ZXN0cy9BcmVuYVRlc3RIZWxwZXJzLmgnLAogICAgICAgICAgICAg
J3Rlc3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL0NDU2NoZWR1bGVy
VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDVGhyZWFkVGFza1Rlc3QuY3BwJywKICAg
ICAgICAgICAgICd0ZXN0cy9DQ1RocmVhZFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9J
REJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCmluZGV4IDAxMTI1NmI2MzI2OGZhMzdiODI4OTA0YmQzOWZlMTcxNTk2
ZTRhMzAuLjU0NmUyNzIxMDE1ZTAyNTc5YzY5MDBhNmU4NTc2OWI1ZmM1MWYxYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTI1NzQsNyArMjU3NCw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFJvb3RMYXllck5lZWRzRGlzcGxheSgpCiAgICAgfQog
I2lmIFVTRShUSFJFQURFRF9DT01QT1NJVElORykKICAgICBpZiAobV9sYXllclRyZWVIb3N0KQot
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0QW5kUmVkcmF3KCk7CisgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCk7CiAjZWxzZQog
ICAgIG1fY2xpZW50LT5zY2hlZHVsZUNvbXBvc2l0ZSgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCA2
NzNiMWY1M2M3NTk5MzA5Y2FmMTI2MDYwYzA1MWNjMGRlN2E4Y2Q1Li41MThmNDNjNDQ4NjhkNWY3
ZGZmNDA2ZmM1ZWZjYWI1YzQ0Zjc5MjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTE5MSw5ICsxOTEsOSBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGVuZFRlc3QoKTsKIAotICAgIHZvaWQgcG9zdFNldE5lZWRzQ29t
bWl0VG9NYWluVGhyZWFkKCkKKyAgICB2b2lkIHBvc3RTZXROZWVkc0NvbW1pdFRoZW5SZWRyYXdU
b01haW5UaHJlYWQoKQogICAgIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChDQ0xheWVyVHJl
ZUhvc3RUZXN0OjpkaXNwYXRjaFNldE5lZWRzQ29tbWl0LCB0aGlzKTsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChDQ0xheWVyVHJlZUhvc3RUZXN0OjpkaXNwYXRjaFNldE5lZWRzQ29tbWl0VGhl
blJlZHJhdywgdGhpcyk7CiAgICAgfQogCiAgICAgdm9pZCBwb3N0U2V0TmVlZHNSZWRyYXdUb01h
aW5UaHJlYWQoKQpAQCAtMjMxLDEzICsyMzEsMTMgQEAgcHJvdGVjdGVkOgogICAgICAgICB0ZXN0
LT5tX2xheWVyVHJlZUhvc3QuY2xlYXIoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBkaXNw
YXRjaFNldE5lZWRzQ29tbWl0KHZvaWQqIHNlbGYpCisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hT
ZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcodm9pZCogc2VsZikKICAgICB7CiAgICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgICAgQ0NMYXllclRyZWVIb3N0VGVzdCogdGVzdCA9IHN0YXRp
Y19jYXN0PENDTGF5ZXJUcmVlSG9zdFRlc3QqPihzZWxmKTsKICAgICAgIEFTU0VSVCh0ZXN0KTsK
ICAgICAgIGlmICh0ZXN0LT5tX2xheWVyVHJlZUhvc3QpCi0gICAgICAgICAgdGVzdC0+bV9sYXll
clRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOworICAgICAgICAgIHRlc3QtPm1f
bGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCk7CiAgICAgfQogCiAgICAg
c3RhdGljIHZvaWQgZGlzcGF0Y2hTZXROZWVkc1JlZHJhdyh2b2lkKiBzZWxmKQpAQCAtMzQ1LDcg
KzM0NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQogICAgIHsK
LSAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAgICAgIHBvc3RT
ZXROZWVkc0NvbW1pdFRoZW5SZWRyYXdUb01haW5UaHJlYWQoKTsKICAgICAgICAgZW5kVGVzdCgp
OwogICAgIH0KIApAQCAtMzg5LDcgKzM4OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBiZWdpblRlc3QoKQogICAgIHsKLSAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhy
ZWFkKCk7CisgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRoZW5SZWRyYXdUb01haW5UaHJlYWQo
KTsKICAgICAgICAgZW5kVGVzdCgpOwogICAgIH0KIApAQCAtNDAzLDcgKzQwMyw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0
SW1wbCopCiAgICAgewogICAgICAgICBpZiAobV9udW1EcmF3cyA9PSAxKQotICAgICAgICAgIHBv
c3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgICAgICAgIHBvc3RTZXROZWVkc0Nv
bW1pdFRoZW5SZWRyYXdUb01haW5UaHJlYWQoKTsKICAgICAgICAgbV9udW1EcmF3cysrOwogICAg
ICAgICBwb3N0U2V0TmVlZHNSZWRyYXdUb01haW5UaHJlYWQoKTsKICAgICB9CkBAIC00MzMsOCAr
NDMzLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCiAgICAgewot
ICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKLSAgICAgICAgcG9zdFNl
dE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRo
ZW5SZWRyYXdUb01haW5UaHJlYWQoKTsKKyAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VGhlblJl
ZHJhd1RvTWFpblRocmVhZCgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJz
T25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQpAQCAtNDc2LDEzICs0NzYsMTMg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCiAgICAgewotICAgICAg
ICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKKyAgICAgICAgcG9zdFNldE5lZWRz
Q29tbWl0VGhlblJlZHJhd1RvTWFpblRocmVhZCgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQogICAgIHsK
ICAgICAgICAgaWYgKCFpbXBsLT5zb3VyY2VGcmFtZU51bWJlcigpKQotICAgICAgICAgICAgcG9z
dFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAgICAgICAgICBwb3N0U2V0TmVlZHND
b21taXRUaGVuUmVkcmF3VG9NYWluVGhyZWFkKCk7CiAgICAgICAgIGVsc2UgaWYgKGltcGwtPnNv
dXJjZUZyYW1lTnVtYmVyKCkgPT0gMSkKICAgICAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9CkBA
IC01MTksNyArNTE5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgp
CiAgICAgewotICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKKyAgICAg
ICAgcG9zdFNldE5lZWRzQ29tbWl0VGhlblJlZHJhd1RvTWFpblRocmVhZCgpOwogICAgIH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBs
KiBpbXBsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVk
dWxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRl
c3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE2NmRkYzQ2YTI0N2I2NGU4NGQ5OWI2M2EwMjExZWY2ZTc0MjQ1
MzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2No
ZWR1bGVyVGVzdC5jcHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIuaCIKKworI2luY2x1ZGUgPGdt
b2NrL2dtb2NrLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXVEY7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworbmFtZXNwYWNlIHsKKworY2xhc3MgTW9ja0NDU2NoZWR1bGVyQ2xpZW50IDogcHVibGljIEND
U2NoZWR1bGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBNT0NLX01FVEhPRDAoc2NoZWR1bGVCZWdp
bkZyYW1lQW5kQ29tbWl0LCB2b2lkKCkpOworICAgIE1PQ0tfTUVUSE9EMChzY2hlZHVsZURyYXdB
bmRQcmVzZW50LCB2b2lkKCkpOworfTsKKworY2xhc3MgQ0NTY2hlZHVsZXJUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIENDU2NoZWR1bGVyVGVzdCgpCisgICAgICAg
IDogbV9jbGllbnQoYWRvcHRQdHIobmV3IE1vY2tDQ1NjaGVkdWxlckNsaWVudCkpCisgICAgICAg
ICwgbV9zY2hlZHVsZXIoQ0NTY2hlZHVsZXI6OmNyZWF0ZShtX2NsaWVudC5nZXQoKSkpCisgICAg
eworICAgICAgICBFWFBFQ1RfQ0FMTCgqbV9jbGllbnQsIHNjaGVkdWxlQmVnaW5GcmFtZUFuZENv
bW1pdCgpKS5UaW1lcygwKTsKKyAgICAgICAgRVhQRUNUX0NBTEwoKm1fY2xpZW50LCBzY2hlZHVs
ZURyYXdBbmRQcmVzZW50KCkpLlRpbWVzKDApOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIE93
blB0cjxNb2NrQ0NTY2hlZHVsZXJDbGllbnQ+IG1fY2xpZW50OworICAgIE93blB0cjxDQ1NjaGVk
dWxlcj4gbV9zY2hlZHVsZXI7Cit9OworCitURVNUX0YoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0
Q29tbWl0KQoreworICAgIEVYUEVDVF9DQUxMKCptX2NsaWVudCwgc2NoZWR1bGVCZWdpbkZyYW1l
QW5kQ29tbWl0KCkpLlRpbWVzKDEpOworICAgIG1fc2NoZWR1bGVyLT5yZXF1ZXN0Q29tbWl0KCk7
Cit9CisKK1RFU1RfRihDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRUd2ljZUJlZm9yZUNv
bW1pdCkKK3sKKyAgICBFWFBFQ1RfQ0FMTCgqbV9jbGllbnQsIHNjaGVkdWxlQmVnaW5GcmFtZUFu
ZENvbW1pdCgpKS5UaW1lcygxKTsKKyAgICBtX3NjaGVkdWxlci0+cmVxdWVzdENvbW1pdCgpOwor
ICAgIG1fc2NoZWR1bGVyLT5yZXF1ZXN0Q29tbWl0KCk7CisKKyAgICBFWFBFQ1RfQ0FMTCgqbV9j
bGllbnQsIHNjaGVkdWxlQmVnaW5GcmFtZUFuZENvbW1pdCgpKS5UaW1lcygxKTsKKyAgICBtX3Nj
aGVkdWxlci0+ZGlkQ29tbWl0KCk7CisgICAgbV9zY2hlZHVsZXItPnJlcXVlc3RDb21taXQoKTsK
K30KKworVEVTVF9GKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdFJlZHJhdykKK3sKKyAgICBFWFBF
Q1RfQ0FMTCgqbV9jbGllbnQsIHNjaGVkdWxlRHJhd0FuZFByZXNlbnQoKSkuVGltZXMoMSk7Cisg
ICAgbV9zY2hlZHVsZXItPnJlcXVlc3RSZWRyYXcoKTsKK30KKworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109343</attachid>
            <date>2011-09-30 14:13:37 -0700</date>
            <delta_ts>2011-10-03 13:50:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69049-20110930141336.patch</filename>
            <type>text/plain</type>
            <size>37449</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY0MTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2OGFmYmRiNTViZDFkMGYx
NTA5OTUzM2Q0YjY5MjA2YmVjYjk2NjllLi4wZGQ2MDIyMTc5ZDAzMmYzNDg3NTcyZGZhMjVkZTQy
MDRjMjNhNWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMTEtMDktMzAgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4
dHJhY3Qgc2NoZWR1bGluZyBsb2dpYyBmcm9tIENDVGhyZWFkUHJveHkgdG8gaXRzIG93biBjbGFz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwNDkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
cnRpYWxseSBleHRyYWN0cyB0aGUgY29tbWl0L2RyYXcgc2NoZWR1bGluZyBmcm9tIENDVGhyZWFk
UHJveHkgdG8gYSBzZXBhcmF0ZSBpc29sYXRlZCBjbGFzcy4gVGhpcyBtYWtlcworICAgICAgICB0
aGUgY29tbWl0L2RyYXcgbG9naWMgZWFzaWVyIHRvIHRlc3QsIHVuZGVyc3RhbmQgYW5kIGV4dGVu
ZC4KKworICAgICAgICBUaGVyZSBpcyBvbmUgc3VidGxlIGJlaGF2aW9yIGNoYW5nZSBoZXJlIHRv
IHRoZSB3YXkgdGhhdCB0aGUgZnVuY3Rpb24gZm9ybWVybHkga25vd24gYXMKKyAgICAgICAgQ0NM
YXllclRyZWVIb3N0OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdyB3b3Jrcy4gUHJldmlvdXNseSwg
dGhpcyB3b3VsZCB0cmlnZ2VyIGEgYmVnaW4gZnJhbWUgbWVzc2FnZSwgaWYgb25lCisgICAgICAg
IHdhc24ndCBwZW5kaW5nLCBhbmQgdGhlbiB0cmlnZ2VyIGEgcmVkcmF3IGlmIG9uZSB3YXNuJ3Qg
cGVuZGluZy4gVGhpcyB3YXMgc3VidGx5IHdyb25nIC0gdGhlIGludGVudCBvZiB0aGF0IGNhbGwK
KyAgICAgICAgaXMgdGhhdCBhIHJlZHJhdyBzaG91bGQgaGFwcGVuIGFmdGVyIHRoZSBjb21taXQu
IEl0IGlzbid0IHVzZWZ1bCB0byBkcmF3IGJlZm9yZSB0aGUgY29tbWl0IG9jY3Vycy4gVGhpcyBw
YXRjaAorICAgICAgICBjaGFuZ2VzIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0byBzZXROZWVk
c0NvbW1pdFRoZW5SZWRyYXcgYW5kIG9ubHkgcmVxdWVzdHMgYSByZWRyYXcgYWZ0ZXIgYSBjb21t
aXQgb2NjdXJzLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IENDU2NoZWR1bGVyVGVzdCB1bml0
IHRlc3RzLCBDQ0xheWVyVHJlZUhvc3RUZXN0IHVuaXQgdGVzdHMsIGFuZCBjb21wb3NpdGluZy8g
bGF5b3V0IHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0OjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRWaWV3cG9ydCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNldFZpc2libGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY2hlZHVsZXI6OkNDU2NoZWR1bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1
bGVyOjpyZXF1ZXN0Q29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpyZXF1
ZXN0Q29tbWl0VGhlblJlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6cmVx
dWVzdFJlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6ZGlkQ29tbWl0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpkaWREcmF3KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNDU2NoZWR1bGVyQ2xpZW50Ojp+Q0NTY2hlZHVsZXJDbGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Nj
aGVkdWxlcjo6Y29tbWl0UGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6
cmVkcmF3UGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6cmVkcmF3QWZ0
ZXJDb21taXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94
eTo6c2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xl
VGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xl
VGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tcG9zaXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudDo6fkNDVGhyZWFkUHJveHlTY2hl
ZHVsZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eVNjaGVkdWxlckNs
aWVudDo6c2NoZWR1bGVCZWdpbkZyYW1lQW5kQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkND
VGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ6OnNjaGVkdWxlRHJhd0FuZFByZXNlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudDo6Q0NUaHJlYWRQcm94
eVNjaGVkdWxlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpDQ1Ro
cmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUFu
ZFJlYWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVM
YXllclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNldE5lZWRz
Q29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0
T25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0Nv
bW1pdFRoZW5SZWRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0TmVl
ZHNDb21taXRUaGVuUmVkcmF3T25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjpzZXROZWVkc1JlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
OjpzZXROZWVkc1JlZHJhd09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29t
bWl0VGFza09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVn
aW5GcmFtZUFuZENvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpjb21t
aXRPbkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmRyYXdMYXll
cnNBbmRQcmVzZW50T25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
Ojppbml0aWFsaXplSW1wbE9uQ0NUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKwogMjAxMS0wOS0zMCAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIFJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kOjpjb3B5U3R5bGVUb0NoaWxkcmVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZmEz
ZjkxMjNkYzc5ZTEzNDYzZmNlZjA1NzZlMGUwODRkMWI5MzE2Mi4uNDE0ZjgyNDRmZDVlMjEzNWNh
NTk0YzhhYzY0YmIxMjU2NWY4N2RkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzUwOSwxNSArMzUw
OSwxNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWFp
blRocmVhZFRhc2suaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQbHVnaW5MYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oJywKLSAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgnLAotICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3Vy
ZmFjZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyU3VyZmFjZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwJywKKyAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkLmgnLAotICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5j
cHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRUYXNrLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGlsZWRMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5jcHAKaW5kZXggNTUyZjlhYmU5NmUyMzdmZGI1NGRkYzJkNzkyNTcyMzEwYzc1YmE3OC4uZGZh
NjczNzRkOTdmZGEyZGNhNjljYmViNjQyNmUxODMyOWM5MzBmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuY3BwCkBAIC02MCw2ICs2MCw3IEBAIENDTGF5ZXJUcmVlSG9zdDo6Q0NMYXll
clRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPExheWVy
CiAKIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKCkKIHsKKyAgICBUUkFDRV9FVkVO
VCgiQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgaWYgKG1fc2V0
dGluZ3MuZW5hYmxlQ29tcG9zaXRvclRocmVhZCkgewogICAgICAgICAvLyBBY2NlbGVyYXRlZCBQ
YWludGluZyBpcyBub3Qgc3VwcG9ydGVkIGluIHRocmVhZGVkIG1vZGUuIFR1cm4gaXQgb2ZmLgog
ICAgICAgICBtX3NldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IGZhbHNlOwpAQCAtNzgsOCAr
NzksNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSgpCiAgICAgLy8gVXBkYXRl
IG1fc2V0dGluZ3MgYmFzZWQgb24gY2FwYWJpbGl0aWVzIHRoYXQgd2UgZ290IGJhY2sgZnJvbSB0
aGUgcmVuZGVyZXIuCiAgICAgbV9zZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBtX3Byb3h5
LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdBY2NlbGVyYXRlZFBhaW50aW5nOwog
Ci0gICAgLy8gV2UgY2hhbmdlZCB0aGUgcm9vdCBsYXllci4gVGVsbCB0aGUgcHJveHkgYSBjb21t
aXQgaXMgbmVlZGVkLgotICAgIG1fcHJveHktPnNldE5lZWRzQ29tbWl0QW5kUmVkcmF3KCk7Cisg
ICAgc2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCk7CiAKICAgICBtX2NvbnRlbnRzVGV4dHVyZU1h
bmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRC
eXRlcygpLCBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNp
emUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTk2LDE0ICsxOTYsMTQgQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OnNldFpvb21BbmltYXRvclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgem9vbSkKICAgICBtX3pvb21BbmltYXRvclRyYW5zZm9ybSA9IHpvb207CiAKICAgICBp
ZiAoem9vbUNoYW5nZWQpCi0gICAgICAgIHNldE5lZWRzQ29tbWl0QW5kUmVkcmF3KCk7CisgICAg
ICAgIHNldE5lZWRzQ29tbWl0VGhlblJlZHJhdygpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9z
dDo6c2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5l
ZWRzQ29tbWl0VGhlblJlZHJhdygpCiB7CiAjaWYgVVNFKFRIUkVBREVEX0NPTVBPU0lUSU5HKQot
ICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzUmVkcmF3IiwgdGhpcywg
MCk7Ci0gICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKKyAgICBUUkFDRV9F
VkVOVCgiQ0NMYXllclRyZWVIb3N0OjpzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXciLCB0aGlzLCAw
KTsKKyAgICBtX3Byb3h5LT5zZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcoKTsKICNlbHNlCiAgICAg
bV9jbGllbnQtPnNjaGVkdWxlQ29tcG9zaXRlKCk7CiAjZW5kaWYKQEAgLTIyMSwxNCArMjIxLDE0
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXROZWVkc1JlZHJhdygpCiB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6c2V0Vmlld3BvcnQoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogewogICAg
IG1fdmlld3BvcnRTaXplID0gdmlld3BvcnRTaXplOwotICAgIHNldE5lZWRzQ29tbWl0QW5kUmVk
cmF3KCk7CisgICAgc2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCk7CiB9CiAKIHZvaWQgQ0NMYXll
clRyZWVIb3N0OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKICAgICBtX3Zpc2libGUgPSB2
aXNpYmxlOwogICAgIGlmICh2aXNpYmxlKQotICAgICAgICBtX3Byb3h5LT5zZXROZWVkc0NvbW1p
dEFuZFJlZHJhdygpOworICAgICAgICBzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcoKTsKICAgICBl
bHNlIHsKICAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xp
bWl0KFRleHR1cmVNYW5hZ2VyOjpsb3dMaW1pdEJ5dGVzKCkpOwogICAgICAgICBtX2NvbnRlbnRz
VGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oCmluZGV4IGQyMzY2NjRiMGIzNmRlODQ0MjgxMDczMjNhMjQwYTcxNGRlMjk2MmMu
LjEyZjhhNzQxMjBhZTMwYWZiN2RlMTA5MDM3OWMyZWI3N2ZmZDA4ZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogICAgIC8vIFRlc3Qt
b25seSBob29rCiAgICAgdm9pZCBsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKTsK
IAotICAgIHZvaWQgc2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKKyAgICB2b2lkIHNldE5lZWRz
Q29tbWl0VGhlblJlZHJhdygpOwogICAgIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKIAogICAgIExh
eWVyQ2hyb21pdW0qIHJvb3RMYXllcigpIHsgcmV0dXJuIG1fcm9vdExheWVyLmdldCgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Byb3h5LmgKaW5kZXggYjIyMmI5OTg4ZDgxN2Y0OTVjMmEzYTBmMDVjNGNhMWNlZGFkZDE2My4u
ZDliNzkzYjA2ZmQwZmVlMzBmMTE5OTMwMjJjMjQzODA4YTg3NWI2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApA
QCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBMYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHND
b21taXRUaGVuUmVkcmF3KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhdygp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpID0gMDsgLy8gTXVzdCBiZSBjYWxsZWQg
YmVmb3JlIHVzaW5nIHRoZSBwcm94eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43ZjU0MzE1MzM2MmRkMzY5MTVlOWYxZTUwMjUyYjJiYWExNDkyNDE1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hl
ZHVsZXIuY3BwCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgImNjL0NDU2NoZWR1bGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworQ0NTY2hlZHVsZXI6OkNDU2NoZWR1bGVyKENDU2NoZWR1bGVyQ2xpZW50KiBjbGllbnQp
CisgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX2NvbW1pdFBlbmRpbmcoZmFsc2UpCisg
ICAgLCBtX3JlZHJhd1BlbmRpbmcoZmFsc2UpCit7CisgICAgQVNTRVJUKG1fY2xpZW50KTsKK30K
Kwordm9pZCBDQ1NjaGVkdWxlcjo6cmVxdWVzdENvbW1pdCgpCit7CisgICAgaWYgKG1fY29tbWl0
UGVuZGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb21taXRQZW5kaW5nID0gdHJ1ZTsK
KyAgICBtX2NsaWVudC0+c2NoZWR1bGVCZWdpbkZyYW1lQW5kQ29tbWl0KCk7Cit9CisKK3ZvaWQg
Q0NTY2hlZHVsZXI6OnJlcXVlc3RSZWRyYXcoKQoreworICAgIGlmIChtX3JlZHJhd1BlbmRpbmcp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVkcmF3UGVuZGluZyA9IHRydWU7CisKKyAgICBt
X2NsaWVudC0+c2NoZWR1bGVEcmF3QW5kUHJlc2VudCgpOworfQorCit2b2lkIENDU2NoZWR1bGVy
OjpkaWRDb21taXQoKQoreworICAgIG1fY29tbWl0UGVuZGluZyA9IGZhbHNlOworfQorCit2b2lk
IENDU2NoZWR1bGVyOjpkaWREcmF3KCkKK3sKKyAgICBtX3JlZHJhd1BlbmRpbmcgPSBmYWxzZTsK
K30KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODM4ZGZjYWEyN2Q0NDE5
NmI4NTk1ZDQ0OTY5NzAwODMwNWU3ZWE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaApAQCAtMCwwICsx
LDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDU2NoZWR1bGVyX2gKKyNkZWZpbmUgQ0NT
Y2hlZHVsZXJfaAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDQ1RocmVhZDsK
KworY2xhc3MgQ0NTY2hlZHVsZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZUJlZ2luRnJhbWVBbmRDb21taXQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjaGVk
dWxlRHJhd0FuZFByZXNlbnQoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5DQ1Nj
aGVkdWxlckNsaWVudCgpIHsgfQorfTsKKworY2xhc3MgQ0NTY2hlZHVsZXIgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKENDU2NoZWR1bGVyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093
blB0cjxDQ1NjaGVkdWxlcj4gY3JlYXRlKENDU2NoZWR1bGVyQ2xpZW50KiBjbGllbnQpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDU2NoZWR1bGVyKGNsaWVudCkpOworICAg
IH0KKworICAgIHZvaWQgcmVxdWVzdENvbW1pdCgpOworICAgIHZvaWQgcmVxdWVzdFJlZHJhdygp
OworCisgICAgdm9pZCBkaWRDb21taXQoKTsKKyAgICB2b2lkIGRpZERyYXcoKTsKKworICAgIGJv
b2wgY29tbWl0UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWl0UGVuZGluZzsgfQorICAg
IGJvb2wgcmVkcmF3UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVkcmF3UGVuZGluZzsgfQor
Citwcml2YXRlOgorICAgIGV4cGxpY2l0IENDU2NoZWR1bGVyKENDU2NoZWR1bGVyQ2xpZW50Kik7
CisKKyAgICBDQ1NjaGVkdWxlckNsaWVudCogbV9jbGllbnQ7CisKKyAgICBib29sIG1fY29tbWl0
UGVuZGluZzsKKyAgICBib29sIG1fcmVkcmF3UGVuZGluZzsKK307CisKK30KKworI2VuZGlmIC8v
IENDU2NoZWR1bGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5k
ZXggOTdiY2VhNTJhMjI0ZTFlYWVlZmM1MDRhZTUwOTdiYmY4NWRhZDUxOS4uNTViZjhiMGY0ZTFh
MjY5YTVlNzlmYWI5NzU2NzdlYjk2NTRjZWExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJv
eHk6OnNldE5lZWRzQ29tbWl0KCkKICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRl
KCk7CiB9CiAKLXZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRBbmRSZWRy
YXcoKQordm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXco
KQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CiAjaWYgIVVTRShUSFJF
QURFRF9DT01QT1NJVElORykKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFk
UHJveHk6OnNldE5lZWRzUmVkcmF3KCkKIHsKICAgICAvLyBGSVhNRTogT25jZSB3ZSBtb3ZlIHJl
bmRlcl93aWRnZXQgc2NoZWR1bGluZyBpbnRvIHRoaXMgY2xhc3MsIHdlIGNhbgogICAgIC8vIHRy
ZWF0IHJlZHJhdyByZXF1ZXN0cyBtb3JlIGVmZmljaWVudGx5IHRoYW4gY29tbWl0QW5kUmVkcmF3
IHJlcXVlc3RzLgotICAgIHNldE5lZWRzQ29tbWl0QW5kUmVkcmF3KCk7CisgICAgc2V0TmVlZHND
b21taXRUaGVuUmVkcmF3KCk7CiB9CiAKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c3RvcCgp
CkBAIC0yNDMsNyArMjQzLDcgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNv
bnRleHRJZk5lZWRlZCgpCiAgICAgLy8gaW4gdGhlIGNvbnRleHQtbG9zdCBtYWNoaW5lcnkuCiAg
ICAgbV9udW1GYWlsZWRSZWNyZWF0ZUF0dGVtcHRzKys7CiAgICAgaWYgKG1fbnVtRmFpbGVkUmVj
cmVhdGVBdHRlbXB0cyA8IDUpIHsKLSAgICAgICAgc2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsK
KyAgICAgICAgc2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKQEAgLTI4Niw3ICsyODYsNyBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6
OmRvQ29tcG9zaXRlKCkKICAgICAgICAgICAvLyBhbmQgcmVxdWVzdCBhIHJlcGFpbnQgeWV0IGFn
YWluLgogICAgICAgICAgIG1fZ3JhcGhpY3NDb250ZXh0TG9zdCA9IHRydWU7CiAgICAgICAgICAg
bV9udW1GYWlsZWRSZWNyZWF0ZUF0dGVtcHRzID0gMDsKLSAgICAgICAgICBzZXROZWVkc0NvbW1p
dEFuZFJlZHJhdygpOworICAgICAgICAgIHNldE5lZWRzQ29tbWl0VGhlblJlZHJhdygpOwogICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Npbmds
ZVRocmVhZFByb3h5LmgKaW5kZXggYzE4ZTdmMzY0OTM4ZDE5MzY0YzMxMTBmNjZlNGJkM2Y5MzE3
MmM1NC4uOGYwMzBhOTYzYmRlYzMxZWI2NmJiMTNiZGE3YjZlNzFkNmM0MzgzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGxvc2VDb21wb3NpdG9yQ29u
dGV4dChpbnQgbnVtVGltZXMpOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdCgpOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOworICAgIHZpcnR1YWwg
dm9pZCBzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVl
ZHNSZWRyYXcoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCBhZTNmNDc0YjE1NTA5ZDcw
ZWQ4MTUyOWJkYWNkNjU3Yjk3MGJhNzg0Li4xZThiNjhjOTc3MmI0ZmIxMDI1YzliZDFlOTJjYmM2
MTUzMjliNTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3Qu
aCIKICNpbmNsdWRlICJjYy9DQ01haW5UaHJlYWRUYXNrLmgiCisjaW5jbHVkZSAiY2MvQ0NTY2hl
ZHVsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNDgsNiArNDksMzMg
QEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXRUaHJlYWQoQ0NUaHJlYWQqIGNjVGhyZWFkKQogI2Vu
ZGlmCiB9CiAKK2NsYXNzIENDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQgOiBwdWJsaWMgQ0NT
Y2hlZHVsZXJDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGhyZWFk
UHJveHlTY2hlZHVsZXJDbGllbnQ+IGNyZWF0ZShDQ1RocmVhZFByb3h5KiBwcm94eSkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVu
dChwcm94eSkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5DQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xp
ZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVCZWdpbkZyYW1lQW5kQ29tbWl0
KCkKKyAgICB7CisgICAgICAgIENDTWFpblRocmVhZDo6cG9zdFRhc2sobV9wcm94eS0+Y3JlYXRl
QmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkNDVGhyZWFkKCkpOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCBzY2hlZHVsZURyYXdBbmRQcmVzZW50KCkKKyAgICB7CisgICAgICAgIG1fcHJveHkt
PmRyYXdMYXllcnNBbmRQcmVzZW50T25DQ1RocmVhZCgpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBDQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50KENDVGhyZWFkUHJveHkqIHBy
b3h5KQorICAgIHsKKyAgICAgICAgbV9wcm94eSA9IHByb3h5OworICAgIH0KKworICAgIENDVGhy
ZWFkUHJveHkqIG1fcHJveHk7Cit9OworCiBQYXNzT3duUHRyPENDUHJveHk+IENDVGhyZWFkUHJv
eHk6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDQ1RocmVhZFByb3h5KGxheWVyVHJlZUhvc3QpKTsKQEAgLTU5LDkgKzg3
LDYgQEAgQ0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqIGxheWVy
VHJlZUhvc3QpCiAgICAgLCBtX3N0YXJ0ZWQoZmFsc2UpCiAgICAgLCBtX2xhc3RFeGVjdXRlZEJl
Z2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlcigtMSkKICAgICAsIG1fbnVtQmVnaW5GcmFt
ZUFuZENvbW1pdHNJc3N1ZWRPbkNDVGhyZWFkKDApCi0gICAgLCBtX2JlZ2luRnJhbWVBbmRDb21t
aXRQZW5kaW5nT25DQ1RocmVhZChmYWxzZSkKLSAgICAsIG1fZHJhd1Rhc2tQb3N0ZWRPbkNDVGhy
ZWFkKGZhbHNlKQotICAgICwgbV9yZWRyYXdSZXF1ZXN0ZWRPbkNDVGhyZWFkKGZhbHNlKQogewog
ICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5IiwgdGhpcywgMCk7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTc2LDYgKzEwMSw3IEBAIENDVGhyZWFk
UHJveHk6On5DQ1RocmVhZFByb3h5KCkKIAogYm9vbCBDQ1RocmVhZFByb3h5Ojpjb21wb3NpdGVB
bmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CisgICAgVFJB
Q0VfRVZFTlQoIkNDVGhyZWFkUFJveHk6OmNvbXBvc2l0ZUFuZFJlYWRiYWNrIiwgdGhpcywgMCk7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9sYXllclRyZWVIb3N0
KTsKIApAQCAtMTQyLDYgKzE2OCw3IEBAIGJvb2wgQ0NUaHJlYWRQcm94eTo6aXNTdGFydGVkKCkg
Y29uc3QKIAogYm9vbCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCiB7
CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVy
IiwgdGhpcywgMCk7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gbV9s
YXllclRyZWVIb3N0LT5jcmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCk7CiAgICAgaWYgKCFj
b250ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODMsMzMgKzIxMCwzNSBAQCB2b2lk
IENDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0KCkKIAogICAgIFRSQUNFX0VWRU5UKCJDQ1Ro
cmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCIsIHRoaXMsIDApOwogICAgIG1fY29tbWl0UmVxdWVz
dGVkID0gdHJ1ZTsKLSAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2so
dGhpcywgJkNDVGhyZWFkUHJveHk6OnVwZGF0ZVNjaGVkdWxlclN0YXRlT25DQ1RocmVhZCwgbV9j
b21taXRSZXF1ZXN0ZWQsIHRydWUpKTsKKyAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVD
Q1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0T25DQ1RocmVh
ZCkpOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0QW5kUmVkcmF3KCkK
K3ZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChtX2NvbW1pdFJlcXVlc3RlZCkKLSAgICAg
ICAgcmV0dXJuOwotICAgIG1fY29tbWl0UmVxdWVzdGVkID0gdHJ1ZTsKKyAgICBtX3JlZHJhd0Fm
dGVyQ29tbWl0ID0gdHJ1ZTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQogCi0gICAgVFJBQ0Vf
RVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0QW5kUmVkcmF3IiwgdGhpcywgMCk7
Ci0gICAgc19jY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1Ro
cmVhZFByb3h5Ojp1cGRhdGVTY2hlZHVsZXJTdGF0ZU9uQ0NUaHJlYWQsIG1fY29tbWl0UmVxdWVz
dGVkLCB0cnVlKSk7Cit2b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0T25DQ1RocmVh
ZCgpCit7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRPbkNDVGhyZWFkIiwgdGhpcywgMCk7CisgICAgbV9z
Y2hlZHVsZXJPbkNDVGhyZWFkLT5yZXF1ZXN0Q29tbWl0KCk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6c2V0TmVlZHNSZWRyYXcoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgaWYgKG1fY29tbWl0UmVxdWVzdGVkKSAvLyBJbXBsaWVzIHRoYXQgYSBjb21taXQgaXMgaW4g
ZmxpZ2h0LgotICAgICAgICByZXR1cm47Ci0gICAgLy8gVW5saWtlIHNldE5lZWRzQ29tbWl0IHRo
YXQgdHJhY2tzIHdoZXRoZXIgYSBjb21taXQgbWVzc2FnZSBoYXMgYmVlbiBzZW50LAotICAgIC8v
IHNldE5lZWRzUmVkcmF3IGFsd2F5cyBzZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIGNvbXBvc2l0b3Ig
dGhyZWFkLiBUaGlzIGlzCi0gICAgLy8gYmVjYXVzZSB0aGUgY29tcG9zaXRvciB0aHJlYWQgY2Fu
IGRyYXcgd2l0aG91dCB0ZWxsaW5nIHRoZSBtYWluCi0gICAgLy8gdGhyZWFkLiBUaGlzIHNob3Vs
ZCBub3QgYmUgbXVjaCBvZiBhIHByb2JsZW0gYmVjYXVzZSBjYWxscyB0bwotICAgIC8vIHNldE5l
ZWRzUmVkcmF3IG1lc3NhZ2VzIGFyZSB1bmNvbW1vbiAob25seSB0cmlnZ2VyZWQgYnkgV01fUEFJ
TlQvZXRjKSwKLSAgICAvLyBjb21wYXJlZCB0byBzZXROZWVkc0NvbW1pdEFuZFJlZHJhdyBtZXNz
YWdlcy4KICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXciLCB0
aGlzLCAwKTsKLSAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhp
cywgJkNDVGhyZWFkUHJveHk6OnVwZGF0ZVNjaGVkdWxlclN0YXRlT25DQ1RocmVhZCwgZmFsc2Us
IHRydWUpKTsKKyAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhp
cywgJkNDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3T25DQ1RocmVhZCkpOworfQorCit2b2lk
IENDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3T25DQ1RocmVhZCgpCit7CisgICAgQVNTRVJU
KGlzSW1wbFRocmVhZCgpKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2V0TmVl
ZHNSZWRyYXdPbkNDVGhyZWFkIiwgdGhpcywgMCk7CisgICAgbV9zY2hlZHVsZXJPbkNDVGhyZWFk
LT5yZXF1ZXN0UmVkcmF3KCk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RhcnQoKQpAQCAt
MjQ0LDExICsyNzMsMTAgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdP
bkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewogICAgIFRSQUNFX0VW
RU5UKCJDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkNDVGhyZWFkIiwgdGhpcywg
MCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKLSAgICBBU1NFUlQoIW1fYmVnaW5GcmFt
ZUFuZENvbW1pdFBlbmRpbmdPbkNDVGhyZWFkKTsKLSAgICBpZiAobV9yZWRyYXdSZXF1ZXN0ZWRP
bkNDVGhyZWFkKSB7CisgICAgaWYgKG1fc2NoZWR1bGVyT25DQ1RocmVhZC0+cmVkcmF3UGVuZGlu
ZygpKSB7CiAgICAgICAgIGRyYXdMYXllcnNPbkNDVGhyZWFkKCk7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPnByZXNlbnQoKTsKLSAgICAgICAgbV9yZWRyYXdSZXF1ZXN0ZWRPbkNDVGhy
ZWFkID0gZmFsc2U7CisgICAgICAgIG1fc2NoZWR1bGVyT25DQ1RocmVhZC0+ZGlkRHJhdygpOwog
ICAgIH0KICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5maW5pc2hBbGxSZW5kZXJpbmcoKTsKICAg
ICBjb21wbGV0aW9uLT5zaWduYWwoKTsKQEAgLTI2Niw3ICsyOTQsNiBAQCBQYXNzT3duUHRyPEND
TWFpblRocmVhZDo6VGFzaz4gQ0NUaHJlYWRQcm94eTo6Y3JlYXRlQmVnaW5GcmFtZUFuZENvbW1p
dFRhc2tPbkNDVAogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZy
YW1lQW5kQ29tbWl0VGFza09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBs
VGhyZWFkKCkpOwogICAgIGRvdWJsZSBmcmFtZUJlZ2luVGltZSA9IGN1cnJlbnRUaW1lKCk7Ci0g
ICAgbV9iZWdpbkZyYW1lQW5kQ29tbWl0UGVuZGluZ09uQ0NUaHJlYWQgPSB0cnVlOwogCiAgICAg
Ly8gTk9URSwgaXQgaXMgcG9zc2libGUgdG8gcmVjZWlldmUgYSByZXF1ZXN0IGZvciBhCiAgICAg
Ly8gYmVnaW5GcmFtZUFuZENvbW1pdE9uQ0NUaHJlYWQgZnJvbSBmaW5pc2hBbGxSZW5kZXJpbmcg
d2hpbGUgYQpAQCAtMzI0LDYgKzM1MSwxMCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJh
bWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogCiAg
ICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCisgICAgaWYgKG1fcmVkcmF3
QWZ0ZXJDb21taXQpCisgICAgICAgIHNldE5lZWRzUmVkcmF3KCk7CisgICAgbV9yZWRyYXdBZnRl
ckNvbW1pdCA9IGZhbHNlOworCiAgICAgQVNTRVJUKG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFtZUFu
ZENvbW1pdFNlcXVlbmNlTnVtYmVyID09IHNlcXVlbmNlTnVtYmVyKTsKIH0KIApAQCAtMzMxLDgg
KzM2Miw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6Y29tbWl0T25DQ1RocmVhZChDQ0NvbXBsZXRp
b25FdmVudCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6
YmVnaW5GcmFtZUFuZENvbW1pdE9uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJ
bXBsVGhyZWFkKCkpOwotICAgIEFTU0VSVChtX2JlZ2luRnJhbWVBbmRDb21taXRQZW5kaW5nT25D
Q1RocmVhZCk7Ci0gICAgbV9iZWdpbkZyYW1lQW5kQ29tbWl0UGVuZGluZ09uQ0NUaHJlYWQgPSBm
YWxzZTsKKyAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkNDVGhyZWFkLT5jb21taXRQZW5kaW5nKCkp
OwogICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkgewogICAgICAgICBjb21wbGV0aW9uLT5z
aWduYWwoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzQzLDE5ICszNzMsNyBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OmNvbW1pdE9uQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24p
CiAKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIAotICAgIGlmIChtX3JlZHJhd1JlcXVlc3Rl
ZE9uQ0NUaHJlYWQpCi0gICAgICAgIHNjaGVkdWxlRHJhd1Rhc2tPbkNDVGhyZWFkKCk7Ci19Ci0K
LXZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVEcmF3VGFza09uQ0NUaHJlYWQoKQotewotICAg
IEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgaWYgKG1fZHJhd1Rhc2tQb3N0ZWRPbkNDVGhy
ZWFkKQotICAgICAgICByZXR1cm47Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNj
aGVkdWxlRHJhd1Rhc2tPbkNDVGhyZWFkIiwgdGhpcywgMCk7Ci0gICAgQVNTRVJUKG1fbGF5ZXJU
cmVlSG9zdEltcGwpOwotICAgIG1fZHJhd1Rhc2tQb3N0ZWRPbkNDVGhyZWFkID0gdHJ1ZTsKLSAg
ICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFk
UHJveHk6OmRyYXdMYXllcnNBbmRQcmVzZW50T25DQ1RocmVhZCkpOworICAgIG1fc2NoZWR1bGVy
T25DQ1RocmVhZC0+ZGlkQ29tbWl0KCk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZHJhd0xh
eWVyc0FuZFByZXNlbnRPbkNDVGhyZWFkKCkKQEAgLTM2Nyw4ICszODUsNyBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OmRyYXdMYXllcnNBbmRQcmVzZW50T25DQ1RocmVhZCgpCiAKICAgICBkcmF3TGF5
ZXJzT25DQ1RocmVhZCgpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnByZXNlbnQoKTsKLSAg
ICBtX3JlZHJhd1JlcXVlc3RlZE9uQ0NUaHJlYWQgPSBmYWxzZTsKLSAgICBtX2RyYXdUYXNrUG9z
dGVkT25DQ1RocmVhZCA9IGZhbHNlOworICAgIG1fc2NoZWR1bGVyT25DQ1RocmVhZC0+ZGlkRHJh
dygpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmRyYXdMYXllcnNPbkNDVGhyZWFkKCkKQEAg
LTM4MSwzMCArMzk4LDEzIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc09uQ0NUaHJl
YWQoKQogICAgIEFTU0VSVCghbV9sYXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0TG9zdCgpKTsK
IH0KIAotdm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVTY2hlZHVsZXJTdGF0ZU9uQ0NUaHJlYWQo
Ym9vbCBjb21taXRSZXF1ZXN0ZWQsIGJvb2wgcmVkcmF3UmVxdWVzdGVkKQotewotICAgIFRSQUNF
X0VWRU5UKCJDQ1RocmVhZFByb3h5Ojp1cGRhdGVTY2hlZHVsZXJTdGF0ZU9uQ0NUaHJlYWQiLCB0
aGlzLCAwKTsKLSAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwotICAgIEFTU0VSVChtX2xheWVy
VHJlZUhvc3RJbXBsKTsKLQotICAgIC8vIEZJWE1FOiB1c2UgQ0NTY2hlZHVsZXIgdG8gZGVjaWRl
IHdoZW4gdG8gbWFuYWdlIHRoZSBjb252ZXJzaW9uIG9mIHRoaXMKLSAgICAvLyBjb21taXQgcmVx
dWVzdCBpbnRvIGFuIGFjdHVhbCBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uQ0NUaHJl
YWQgY2FsbC4KLSAgICBtX3JlZHJhd1JlcXVlc3RlZE9uQ0NUaHJlYWQgfD0gcmVkcmF3UmVxdWVz
dGVkOwotICAgIGlmIChjb21taXRSZXF1ZXN0ZWQgJiYgIW1fYmVnaW5GcmFtZUFuZENvbW1pdFBl
bmRpbmdPbkNDVGhyZWFkKSB7Ci0gICAgICAgIENDTWFpblRocmVhZDo6cG9zdFRhc2soY3JlYXRl
QmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkNDVGhyZWFkKCkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgLy8gSWYgbm8gY29tbWl0IGlzIHBlbmRpbmcsIGJ1dCBhIHJlZHJhdyBpcyBy
ZXF1ZXN0ZWQsIHRoZW4gcG9zdCBhIHJlZHJhdyByaWdodCBhd2F5Ci0gICAgaWYgKG1fcmVkcmF3
UmVxdWVzdGVkT25DQ1RocmVhZCkKLSAgICAgICAgc2NoZWR1bGVEcmF3VGFza09uQ0NUaHJlYWQo
KTsKLX0KLQogdm9pZCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uQ0NUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFk
UHJveHk6OmluaXRpYWxpemVJbXBsT25DQ1RocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChp
c0ltcGxUaHJlYWQoKSk7CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbCA9IG1fbGF5ZXJUcmVlSG9z
dC0+Y3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoKTsKKyAgICBtX3NjaGVkdWxlckNsaWVudE9uQ0NU
aHJlYWQgPSBDQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50OjpjcmVhdGUodGhpcyk7CisgICAg
bV9zY2hlZHVsZXJPbkNDVGhyZWFkID0gQ0NTY2hlZHVsZXI6OmNyZWF0ZShtX3NjaGVkdWxlckNs
aWVudE9uQ0NUaHJlYWQuZ2V0KCkpOwogICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggMTJlNmRjM2I5Y2U1M2U2MmYzYjU1N2Y3YzBhNDk4
YTI5YTgyNTRmYS4uZjAxOTFhNTI3ZWZhZjFjOThjODdhN2Y3YTFhMWE5NzhiNDBhNWM4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtMzQsOSArMzQsMTIgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ0NMYXllclRyZWVIb3N0OworY2xhc3MgQ0NTY2hlZHVsZXI7CiBjbGFz
cyBDQ1RocmVhZDsKK2NsYXNzIENDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ7CiAKIGNsYXNz
IENDVGhyZWFkUHJveHkgOiBwdWJsaWMgQ0NQcm94eSB7CisgICAgZnJpZW5kIGNsYXNzIENDVGhy
ZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0VGhy
ZWFkKENDVGhyZWFkKik7CiAKQEAgLTUzLDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Y29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51
bVRpbWVzKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVl
ZHNDb21taXRUaGVuUmVkcmF3KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3KCk7
CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKQEAg
LTc1LDEyICs3OCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZUltcGxPbkNDVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJl
ck9uQ0NUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ0NvbXBsZXRpb25FdmVudCosIGJvb2wq
IGluaXRpYWxpemVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqKTsKICAgICB2
b2lkIHNldE5lZWRzQ29tbWl0T25DQ1RocmVhZCgpOwotICAgIHZvaWQgdXBkYXRlU2NoZWR1bGVy
U3RhdGVPbkNDVGhyZWFkKGJvb2wgY29tbWl0UmVxdWVzdGVkLCBib29sIHJlZHJhd1JlcXVlc3Rl
ZCk7CisgICAgdm9pZCBzZXROZWVkc1JlZHJhd09uQ0NUaHJlYWQoKTsKKyAgICB2b2lkIHNldE5l
ZWRzQ29tbWl0VGhlblJlZHJhd09uQ0NUaHJlYWQoKTsKICAgICB2b2lkIGxheWVyVHJlZUhvc3RD
bG9zZWRPbkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7Ci0gICAgdm9pZCBzY2hlZHVsZURy
YXdUYXNrT25DQ1RocmVhZCgpOwogCiAgICAgLy8gQWNjZXNzZWQgb24gbWFpbiB0aHJlYWQgb25s
eS4KICAgICBib29sIG1fY29tbWl0UmVxdWVzdGVkOworICAgIGJvb2wgbV9yZWRyYXdBZnRlckNv
bW1pdDsKICAgICBDQ0xheWVyVHJlZUhvc3QqIG1fbGF5ZXJUcmVlSG9zdDsKICAgICBMYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzIG1fbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllc01haW5UaHJlYWRD
b3B5OwogICAgIGJvb2wgbV9zdGFydGVkOwpAQCAtODksOSArOTMsOSBAQCBwcml2YXRlOgogICAg
IC8vIFVzZWQgb24gdGhlIENDVGhyZWFkIG9ubHkKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0
SW1wbD4gbV9sYXllclRyZWVIb3N0SW1wbDsKICAgICBpbnQgbV9udW1CZWdpbkZyYW1lQW5kQ29t
bWl0c0lzc3VlZE9uQ0NUaHJlYWQ7Ci0gICAgYm9vbCBtX2JlZ2luRnJhbWVBbmRDb21taXRQZW5k
aW5nT25DQ1RocmVhZDsKLSAgICBib29sIG1fZHJhd1Rhc2tQb3N0ZWRPbkNDVGhyZWFkOwotICAg
IGJvb2wgbV9yZWRyYXdSZXF1ZXN0ZWRPbkNDVGhyZWFkOworCisgICAgT3duUHRyPENDU2NoZWR1
bGVyPiBtX3NjaGVkdWxlck9uQ0NUaHJlYWQ7CisgICAgT3duUHRyPENDVGhyZWFkUHJveHlTY2hl
ZHVsZXJDbGllbnQ+IG1fc2NoZWR1bGVyQ2xpZW50T25DQ1RocmVhZDsKIAogICAgIHN0YXRpYyBD
Q1RocmVhZCogc19jY1RocmVhZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDYw
NWY4MzMzNGNiNDRiMmEyNzg2ZDViMDY5MWIxMTcwMGMyMTE0NDcuLmVmMTRiMWZjNGUwOGE4Mzgz
NDU2MjUzMTE2MzY2MmQ0YWMyN2YzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMTEtMDktMzAgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4dHJhY3Qgc2NoZWR1bGluZyBsb2dpYyBmcm9t
IENDVGhyZWFkUHJveHkgdG8gaXRzIG93biBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwNDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHNvbWUgdW5pdCB0ZXN0cyBmb3IgdGhlIG5ldyBD
Q1NjaGVkdWxlciBjbGFzcy4gU2luY2UgdGhlIGNsYXNzIGlzIHZlcnkgc2ltcGxlIHRvZGF5LCB0
aGUgdGVzdHMgYXJlCisgICAgICAgIHNpbWlsYXJseSBxdWl0ZSBzaW1wbGUuCisKKyAgICAgICAg
KiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Um9vdExheWVyTmVlZHNEaXNwbGF5KToKKyAgICAgICAg
KiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NMYXllclRy
ZWVIb3N0VGVzdDo6cG9zdFNldE5lZWRzQ29tbWl0VGhlblJlZHJhd1RvTWFpblRocmVhZCk6Cisg
ICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRpc3BhdGNoU2V0TmVlZHNDb21taXRU
aGVuUmVkcmF3KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFNob3J0bGl2ZWQy
OjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0Q29tbWl0aW5n
V2l0aENvbnRpbnVvdXNSZWRyYXc6OmJlZ2luVGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJU
cmVlSG9zdFRlc3RDb21taXRpbmdXaXRoQ29udGludW91c1JlZHJhdzo6ZHJhd0xheWVyc09uQ0NU
aHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U2V0TmVlZHNDb21taXQx
OjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U2V0TmVlZHND
b21taXQyOjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U2V0
TmVlZHNDb21taXQyOjpkcmF3TGF5ZXJzT25DQ1RocmVhZCk6CisgICAgICAgIChXVEY6OkNDTGF5
ZXJUcmVlSG9zdFRlc3RTZXROZWVkc1JlZHJhdzo6YmVnaW5UZXN0KToKKyAgICAgICAgKiB0ZXN0
cy9DQ1NjaGVkdWxlclRlc3QuY3BwOiBBZGRlZC4KKwogMjAxMS0wOS0zMCAgRWxsaW90IFBvZ2Vy
ICA8ZXBvZ2VyQGdvb2dsZS5jb20+CiAKICAgICAgICAgd2Via2l0LT5jaHJvbWl1bSBERVBTIHJv
bGwgMTAyOTEwLT4xMDM0NzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IDUyNWFm
ZTY5NmNlMzA4YjI1ODkxYWI5NzkyYjQwYzAxNDRmODEwNmMuLjJjMjI3Y2E3ZDIyYTdkYmYyZWRj
OTY4OWU5MGJjNGI4MmIyNjM5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAt
NTYsNiArNTYsNyBAQAogICAgICAgICAgICAgJ3Rlc3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0
LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NMYXllclNvcnRlclRlc3QuY3BwJywKICAgICAg
ICAgICAgICd0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVz
dHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NUaHJlYWRUYXNr
VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDVGhyZWFkVGVzdC5jcHAnLAogICAgICAg
ICAgICAgJ3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMjVmZmZmNTRmODNhMThhOGJiNTc0
MDE0N2QyMDcwNjE4YTk0YWU4ZS4uYzZmZDk3MTFiNTRjODQyNzg2NDYyZWZhMDFjYjMzYmI0ZGY1
MjA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAt
MjU3Myw3ICsyNTczLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdExheWVyTmVlZHNEaXNw
bGF5KCkKICAgICB9CiAjaWYgVVNFKFRIUkVBREVEX0NPTVBPU0lUSU5HKQogICAgIGlmIChtX2xh
eWVyVHJlZUhvc3QpCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXRBbmRS
ZWRyYXcoKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdFRoZW5SZWRy
YXcoKTsKICNlbHNlCiAgICAgbV9jbGllbnQtPnNjaGVkdWxlQ29tcG9zaXRlKCk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRl
c3QuY3BwCmluZGV4IDk3YzlkN2Q2NWM2NzliNTAzM2M2MDAxZWZiNTQwMDJjMjgwZGE2ZTAuLmRi
NjY0MWE3OWUxYTM5NjJiZDRmNTI2NTVhODQwNWYzMzIxZWVmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMTkw
LDkgKzE5MCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZW5kVGVzdCgpOwogCi0gICAgdm9pZCBw
b3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKQorICAgIHZvaWQgcG9zdFNldE5lZWRzQ29t
bWl0VGhlblJlZHJhd1RvTWFpblRocmVhZCgpCiAgICAgewotICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKENDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRpc3BhdGNoU2V0TmVlZHNDb21taXQsIHRoaXMpOwor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKENDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRpc3BhdGNoU2V0
TmVlZHNDb21taXRUaGVuUmVkcmF3LCB0aGlzKTsKICAgICB9CiAKICAgICB2b2lkIHBvc3RTZXRO
ZWVkc1JlZHJhd1RvTWFpblRocmVhZCgpCkBAIC0yMzIsMTMgKzIzMiwxMyBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIHRlc3QtPm1fbGF5ZXJUcmVlSG9zdC5jbGVhcigpOwogICAgIH0KIAotICAgIHN0
YXRpYyB2b2lkIGRpc3BhdGNoU2V0TmVlZHNDb21taXQodm9pZCogc2VsZikKKyAgICBzdGF0aWMg
dm9pZCBkaXNwYXRjaFNldE5lZWRzQ29tbWl0VGhlblJlZHJhdyh2b2lkKiBzZWxmKQogICAgIHsK
ICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0
KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8Q0NMYXllclRyZWVIb3N0VGVzdCo+KHNlbGYpOwogICAgICAg
QVNTRVJUKHRlc3QpOwogICAgICAgaWYgKHRlc3QtPm1fbGF5ZXJUcmVlSG9zdCkKLSAgICAgICAg
ICB0ZXN0LT5tX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0QW5kUmVkcmF3KCk7CisgICAg
ICAgICAgdGVzdC0+bV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFNldE5lZWRzUmVkcmF3KHZvaWQqIHNl
bGYpCkBAIC0zNDgsNyArMzQ4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGJlZ2lu
VGVzdCgpCiAgICAgewotICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsK
KyAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VGhlblJlZHJhd1RvTWFpblRocmVhZCgpOwogICAg
ICAgICBlbmRUZXN0KCk7CiAgICAgfQogCkBAIC0zOTIsNyArMzkyLDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCiAgICAgewotICAgICAgICBwb3N0U2V0TmVlZHND
b21taXRUb01haW5UaHJlYWQoKTsKKyAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VGhlblJlZHJh
d1RvTWFpblRocmVhZCgpOwogICAgICAgICBlbmRUZXN0KCk7CiAgICAgfQogCkBAIC00MDYsNyAr
NDA2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChD
Q0xheWVyVHJlZUhvc3RJbXBsKikKICAgICB7CiAgICAgICAgIGlmIChtX251bURyYXdzID09IDEp
Ci0gICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAgICAgICAg
cG9zdFNldE5lZWRzQ29tbWl0VGhlblJlZHJhd1RvTWFpblRocmVhZCgpOwogICAgICAgICBtX251
bURyYXdzKys7CiAgICAgICAgIHBvc3RTZXROZWVkc1JlZHJhd1RvTWFpblRocmVhZCgpOwogICAg
IH0KQEAgLTQzNiw4ICs0MzYsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5U
ZXN0KCkKICAgICB7Ci0gICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOwot
ICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKKyAgICAgICAgcG9zdFNl
dE5lZWRzQ29tbWl0VGhlblJlZHJhd1RvTWFpblRocmVhZCgpOworICAgICAgICBwb3N0U2V0TmVl
ZHNDb21taXRUaGVuUmVkcmF3VG9NYWluVGhyZWFkKCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2
b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCkBAIC00
NzksMTMgKzQ3OSwxMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkK
ICAgICB7Ci0gICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgICAg
ICBwb3N0U2V0TmVlZHNDb21taXRUaGVuUmVkcmF3VG9NYWluVGhyZWFkKCk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwq
IGltcGwpCiAgICAgewogICAgICAgICBpZiAoIWltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkpCi0g
ICAgICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKKyAgICAgICAgICAg
IHBvc3RTZXROZWVkc0NvbW1pdFRoZW5SZWRyYXdUb01haW5UaHJlYWQoKTsKICAgICAgICAgZWxz
ZSBpZiAoaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSA9PSAxKQogICAgICAgICAgICAgZW5kVGVz
dCgpOwogICAgIH0KQEAgLTUyMiw3ICs1MjIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5UZXN0KCkKICAgICB7Ci0gICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRo
cmVhZCgpOworICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUaGVuUmVkcmF3VG9NYWluVGhyZWFk
KCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5
ZXJUcmVlSG9zdEltcGwqIGltcGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDU2NoZWR1bGVyVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY2ZGRjNDZhMjQ3YjY0ZTg0ZDk5YjYz
YTAyMTFlZjZlNzQyNDUzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ1NjaGVkdWxlci5oIgor
CisjaW5jbHVkZSA8Z21vY2svZ21vY2suaD4KKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdURjsKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgeworCitjbGFzcyBNb2NrQ0NTY2hlZHVsZXJDbGll
bnQgOiBwdWJsaWMgQ0NTY2hlZHVsZXJDbGllbnQgeworcHVibGljOgorICAgIE1PQ0tfTUVUSE9E
MChzY2hlZHVsZUJlZ2luRnJhbWVBbmRDb21taXQsIHZvaWQoKSk7CisgICAgTU9DS19NRVRIT0Qw
KHNjaGVkdWxlRHJhd0FuZFByZXNlbnQsIHZvaWQoKSk7Cit9OworCitjbGFzcyBDQ1NjaGVkdWxl
clRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgQ0NTY2hlZHVsZXJU
ZXN0KCkKKyAgICAgICAgOiBtX2NsaWVudChhZG9wdFB0cihuZXcgTW9ja0NDU2NoZWR1bGVyQ2xp
ZW50KSkKKyAgICAgICAgLCBtX3NjaGVkdWxlcihDQ1NjaGVkdWxlcjo6Y3JlYXRlKG1fY2xpZW50
LmdldCgpKSkKKyAgICB7CisgICAgICAgIEVYUEVDVF9DQUxMKCptX2NsaWVudCwgc2NoZWR1bGVC
ZWdpbkZyYW1lQW5kQ29tbWl0KCkpLlRpbWVzKDApOworICAgICAgICBFWFBFQ1RfQ0FMTCgqbV9j
bGllbnQsIHNjaGVkdWxlRHJhd0FuZFByZXNlbnQoKSkuVGltZXMoMCk7CisgICAgfQorCitwcm90
ZWN0ZWQ6CisgICAgT3duUHRyPE1vY2tDQ1NjaGVkdWxlckNsaWVudD4gbV9jbGllbnQ7CisgICAg
T3duUHRyPENDU2NoZWR1bGVyPiBtX3NjaGVkdWxlcjsKK307CisKK1RFU1RfRihDQ1NjaGVkdWxl
clRlc3QsIFJlcXVlc3RDb21taXQpCit7CisgICAgRVhQRUNUX0NBTEwoKm1fY2xpZW50LCBzY2hl
ZHVsZUJlZ2luRnJhbWVBbmRDb21taXQoKSkuVGltZXMoMSk7CisgICAgbV9zY2hlZHVsZXItPnJl
cXVlc3RDb21taXQoKTsKK30KKworVEVTVF9GKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1p
dFR3aWNlQmVmb3JlQ29tbWl0KQoreworICAgIEVYUEVDVF9DQUxMKCptX2NsaWVudCwgc2NoZWR1
bGVCZWdpbkZyYW1lQW5kQ29tbWl0KCkpLlRpbWVzKDEpOworICAgIG1fc2NoZWR1bGVyLT5yZXF1
ZXN0Q29tbWl0KCk7CisgICAgbV9zY2hlZHVsZXItPnJlcXVlc3RDb21taXQoKTsKKworICAgIEVY
UEVDVF9DQUxMKCptX2NsaWVudCwgc2NoZWR1bGVCZWdpbkZyYW1lQW5kQ29tbWl0KCkpLlRpbWVz
KDEpOworICAgIG1fc2NoZWR1bGVyLT5kaWRDb21taXQoKTsKKyAgICBtX3NjaGVkdWxlci0+cmVx
dWVzdENvbW1pdCgpOworfQorCitURVNUX0YoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0UmVkcmF3
KQoreworICAgIEVYUEVDVF9DQUxMKCptX2NsaWVudCwgc2NoZWR1bGVEcmF3QW5kUHJlc2VudCgp
KS5UaW1lcygxKTsKKyAgICBtX3NjaGVkdWxlci0+cmVxdWVzdFJlZHJhdygpOworfQorCit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109525</attachid>
            <date>2011-10-03 13:50:32 -0700</date>
            <delta_ts>2011-10-03 13:51:40 -0700</delta_ts>
            <desc>merged up against ToT</desc>
            <filename>bug-69049-20111003135031.patch</filename>
            <type>text/plain</type>
            <size>39343</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY1MjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NWQ2MTVkOTM2ZjJjZDFl
YzM5NWI5MTRmYzgzOTBkOWUxNGFiNjhhLi45NGExYjMzMmY5ZjBlYzg1YjgyMTM4M2JiN2EzOTM5
YzA1N2Q4NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMTEtMTAtMDMgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4
dHJhY3Qgc2NoZWR1bGluZyBsb2dpYyBmcm9tIENDVGhyZWFkUHJveHkgdG8gaXRzIG93biBjbGFz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwNDkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
cnRpYWxseSBleHRyYWN0cyB0aGUgY29tbWl0L2RyYXcgc2NoZWR1bGluZyBmcm9tIENDVGhyZWFk
UHJveHkgdG8gYSBzZXBhcmF0ZSBpc29sYXRlZCBjbGFzcy4gVGhpcyBtYWtlcworICAgICAgICB0
aGUgY29tbWl0L2RyYXcgbG9naWMgZWFzaWVyIHRvIHRlc3QsIHVuZGVyc3RhbmQgYW5kIGV4dGVu
ZC4KKworICAgICAgICBUaGVyZSBpcyBvbmUgc3VidGxlIGJlaGF2aW9yIGNoYW5nZSBoZXJlIHRv
IHRoZSB3YXkgdGhhdCB0aGUgZnVuY3Rpb24gZm9ybWVybHkga25vd24gYXMKKyAgICAgICAgQ0NM
YXllclRyZWVIb3N0OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdyB3b3Jrcy4gUHJldmlvdXNseSwg
dGhpcyB3b3VsZCB0cmlnZ2VyIGEgYmVnaW4gZnJhbWUgbWVzc2FnZSwgaWYgb25lCisgICAgICAg
IHdhc24ndCBwZW5kaW5nLCBhbmQgdGhlbiB0cmlnZ2VyIGEgcmVkcmF3IGlmIG9uZSB3YXNuJ3Qg
cGVuZGluZy4gVGhpcyB3YXMgc3VidGx5IHdyb25nIC0gdGhlIGludGVudCBvZiB0aGF0IGNhbGwK
KyAgICAgICAgaXMgdGhhdCBhIHJlZHJhdyBzaG91bGQgaGFwcGVuIGFmdGVyIHRoZSBjb21taXQu
IEl0IGlzbid0IHVzZWZ1bCB0byBkcmF3IGJlZm9yZSB0aGUgY29tbWl0IG9jY3Vycy4gVGhpcyBw
YXRjaAorICAgICAgICBjaGFuZ2VzIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0byBzZXROZWVk
c0NvbW1pdFRoZW5SZWRyYXcgYW5kIG9ubHkgcmVxdWVzdHMgYSByZWRyYXcgYWZ0ZXIgYSBjb21t
aXQgb2NjdXJzLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IENDU2NoZWR1bGVyVGVzdCB1bml0
IHRlc3RzLCBDQ0xheWVyVHJlZUhvc3RUZXN0IHVuaXQgdGVzdHMsIGFuZCBjb21wb3NpdGluZy8g
bGF5b3V0IHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0OjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRWaWV3cG9ydCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNldFZpc2libGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY2hlZHVsZXI6OkNDU2NoZWR1bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1
bGVyOjpyZXF1ZXN0Q29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpyZXF1
ZXN0Q29tbWl0VGhlblJlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6cmVx
dWVzdFJlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6ZGlkQ29tbWl0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpkaWREcmF3KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNDU2NoZWR1bGVyQ2xpZW50Ojp+Q0NTY2hlZHVsZXJDbGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Nj
aGVkdWxlcjo6Y29tbWl0UGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6
cmVkcmF3UGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6cmVkcmF3QWZ0
ZXJDb21taXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94
eTo6c2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xl
VGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xl
VGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tcG9zaXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudDo6fkNDVGhyZWFkUHJveHlTY2hl
ZHVsZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eVNjaGVkdWxlckNs
aWVudDo6c2NoZWR1bGVCZWdpbkZyYW1lQW5kQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkND
VGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ6OnNjaGVkdWxlRHJhd0FuZFByZXNlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudDo6Q0NUaHJlYWRQcm94
eVNjaGVkdWxlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpDQ1Ro
cmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUFu
ZFJlYWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVM
YXllclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNldE5lZWRz
Q29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0
T25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0Nv
bW1pdFRoZW5SZWRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0TmVl
ZHNDb21taXRUaGVuUmVkcmF3T25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjpzZXROZWVkc1JlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
OjpzZXROZWVkc1JlZHJhd09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29t
bWl0VGFza09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVn
aW5GcmFtZUFuZENvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpjb21t
aXRPbkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmRyYXdMYXll
cnNBbmRQcmVzZW50T25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
Ojppbml0aWFsaXplSW1wbE9uQ0NUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKwogMjAxMS0xMC0wMyAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgV0VCX0FVRElPIGJ5IGRlZmF1
bHQgaW4gdGhlIFdlYktpdC9tYWMgcG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmYTNmOTEyM2Rj
NzllMTM0NjNmY2VmMDU3NmUwZTA4NGQxYjkzMTYyLi40MTRmODI0NGZkNWUyMTM1Y2E1OTRjOGFj
NjRiYjEyNTY1Zjg3ZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNTA5LDE1ICszNTA5LDE3IEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYWluVGhyZWFk
VGFzay5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Bs
dWdpbkxheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCcsCi0gICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAnLAorICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJT
dXJmYWNlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY2hlZHVsZXIuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWQuaCcsCi0gICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFRh
c2suaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxl
ZExheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZWRMYXllckltcGwuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApp
bmRleCBkMmJjNmI0ODJhZDdkYTQzYWE3MzM2OWNhOGExZTI0MzMxZjk1NzMzLi43ZjNiYjNlZmQx
ODVjN2VkOGUzMmNiOWVlMjc4NDAwZmUxMzc2ZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5jcHAKQEAgLTYwLDYgKzYwLDcgQEAgQ0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhv
c3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8TGF5ZXIKIAogYm9v
bCBDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemUoKQogeworICAgIFRSQUNFX0VWRU5UKCJDQ0xh
eWVyVHJlZUhvc3Q6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKICAgICBpZiAobV9zZXR0aW5ncy5l
bmFibGVDb21wb3NpdG9yVGhyZWFkKSB7CiAgICAgICAgIC8vIEFjY2VsZXJhdGVkIFBhaW50aW5n
IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhyZWFkZWQgbW9kZS4gVHVybiBpdCBvZmYuCiAgICAgICAg
IG1fc2V0dGluZ3MuYWNjZWxlcmF0ZVBhaW50aW5nID0gZmFsc2U7CkBAIC03OCw4ICs3OSw3IEBA
IGJvb2wgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKCkKICAgICAvLyBVcGRhdGUgbV9zZXR0
aW5ncyBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgdGhhdCB3ZSBnb3QgYmFjayBmcm9tIHRoZSByZW5k
ZXJlci4KICAgICBtX3NldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IG1fcHJveHktPmxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ0FjY2VsZXJhdGVkUGFpbnRpbmc7CiAKLSAgICAv
LyBXZSBjaGFuZ2VkIHRoZSByb290IGxheWVyLiBUZWxsIHRoZSBwcm94eSBhIGNvbW1pdCBpcyBu
ZWVkZWQuCi0gICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKKyAgICBzZXRO
ZWVkc0NvbW1pdFRoZW5SZWRyYXcoKTsKIAogICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlciA9
IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKCks
IG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CiAg
ICAgcmV0dXJuIHRydWU7CkBAIC0xOTYsMTQgKzE5NiwxNCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB6
b29tKQogICAgIG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtID0gem9vbTsKIAogICAgIGlmICh6b29t
Q2hhbmdlZCkKLSAgICAgICAgc2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKKyAgICAgICAgc2V0
TmVlZHNDb21taXRUaGVuUmVkcmF3KCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRO
ZWVkc0NvbW1pdEFuZFJlZHJhdygpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNDb21t
aXRUaGVuUmVkcmF3KCkKIHsKICNpZiBVU0UoVEhSRUFERURfQ09NUE9TSVRJTkcpCi0gICAgVFJB
Q0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNSZWRyYXciLCB0aGlzLCAwKTsKLSAg
ICBtX3Byb3h5LT5zZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOworICAgIFRSQUNFX0VWRU5UKCJD
Q0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0VGhlblJlZHJhdyIsIHRoaXMsIDApOworICAg
IG1fcHJveHktPnNldE5lZWRzQ29tbWl0VGhlblJlZHJhdygpOwogI2Vsc2UKICAgICBtX2NsaWVu
dC0+c2NoZWR1bGVDb21wb3NpdGUoKTsKICNlbmRpZgpAQCAtMjIxLDE0ICsyMjEsMTQgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzUmVkcmF3KCkKIHZvaWQgQ0NMYXllclRyZWVIb3N0
OjpzZXRWaWV3cG9ydChjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiB7CiAgICAgbV92aWV3
cG9ydFNpemUgPSB2aWV3cG9ydFNpemU7Ci0gICAgc2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsK
KyAgICBzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcoKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogewogICAgIG1fdmlzaWJsZSA9IHZpc2libGU7
CiAgICAgaWYgKHZpc2libGUpCi0gICAgICAgIG1fcHJveHktPnNldE5lZWRzQ29tbWl0QW5kUmVk
cmF3KCk7CisgICAgICAgIHNldE5lZWRzQ29tbWl0VGhlblJlZHJhdygpOwogICAgIGVsc2Ugewog
ICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQoVGV4
dHVyZU1hbmFnZXI6Omxvd0xpbWl0Qnl0ZXMoKSk7CiAgICAgICAgIG1fY29udGVudHNUZXh0dXJl
TWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmgKaW5kZXggZGZjNTdmMDQ5MjA4YTEzOGQ3YzIyM2RhOGEwYTcyNDA0ZjM1OTVkZS4uNDc3NGFl
YmJlNzBhMWI1YTA0Mzg3YmM2Y2EzZDA2NmE5M2JmYjZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGVzdC1vbmx5IGhv
b2sKICAgICB2b2lkIGxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQgbnVtVGltZXMpOwogCi0gICAg
dm9pZCBzZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOworICAgIHZvaWQgc2V0TmVlZHNDb21taXRU
aGVuUmVkcmF3KCk7CiAgICAgdm9pZCBzZXROZWVkc1JlZHJhdygpOwogCiAgICAgTGF5ZXJDaHJv
bWl1bSogcm9vdExheWVyKCkgeyByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHku
aAppbmRleCAyMmFiYWRlNmQzODU1OGMzZGRiYzMzOTgxYTM0MjUzNjJiMWMwNjk2Li5hODYwMzE5
NzExZTg0NDUwOTI0YThkYzdjYjUzNDk0YTUyMjIzNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC02Myw3
ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TmVlZHNDb21taXQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRz
Q29tbWl0QW5kUmVkcmF3KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdFRo
ZW5SZWRyYXcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3KCkgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCkgPSAwOyAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUg
dXNpbmcgdGhlIHByb3h5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmNTQz
MTUzMzYyZGQzNjkxNWU5ZjFlNTAyNTJiMmJhYTE0OTI0MTUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5j
cHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitD
Q1NjaGVkdWxlcjo6Q0NTY2hlZHVsZXIoQ0NTY2hlZHVsZXJDbGllbnQqIGNsaWVudCkKKyAgICA6
IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fY29tbWl0UGVuZGluZyhmYWxzZSkKKyAgICAsIG1f
cmVkcmF3UGVuZGluZyhmYWxzZSkKK3sKKyAgICBBU1NFUlQobV9jbGllbnQpOworfQorCit2b2lk
IENDU2NoZWR1bGVyOjpyZXF1ZXN0Q29tbWl0KCkKK3sKKyAgICBpZiAobV9jb21taXRQZW5kaW5n
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbW1pdFBlbmRpbmcgPSB0cnVlOworICAgIG1f
Y2xpZW50LT5zY2hlZHVsZUJlZ2luRnJhbWVBbmRDb21taXQoKTsKK30KKwordm9pZCBDQ1NjaGVk
dWxlcjo6cmVxdWVzdFJlZHJhdygpCit7CisgICAgaWYgKG1fcmVkcmF3UGVuZGluZykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9yZWRyYXdQZW5kaW5nID0gdHJ1ZTsKKworICAgIG1fY2xpZW50
LT5zY2hlZHVsZURyYXdBbmRQcmVzZW50KCk7Cit9CisKK3ZvaWQgQ0NTY2hlZHVsZXI6OmRpZENv
bW1pdCgpCit7CisgICAgbV9jb21taXRQZW5kaW5nID0gZmFsc2U7Cit9CisKK3ZvaWQgQ0NTY2hl
ZHVsZXI6OmRpZERyYXcoKQoreworICAgIG1fcmVkcmF3UGVuZGluZyA9IGZhbHNlOworfQorCit9
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MzhkZmNhYTI3ZDQ0MTk2Yjg1OTVk
NDQ5Njk3MDA4MzA1ZTdlYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCkBAIC0wLDAgKzEsNzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
KyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NTY2hlZHVsZXJfaAorI2RlZmluZSBDQ1NjaGVkdWxl
cl9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENDVGhyZWFkOworCitjbGFz
cyBDQ1NjaGVkdWxlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxl
QmVnaW5GcmFtZUFuZENvbW1pdCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVEcmF3
QW5kUHJlc2VudCgpID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkNDU2NoZWR1bGVy
Q2xpZW50KCkgeyB9Cit9OworCitjbGFzcyBDQ1NjaGVkdWxlciB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQ0NTY2hlZHVsZXIpOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEND
U2NoZWR1bGVyPiBjcmVhdGUoQ0NTY2hlZHVsZXJDbGllbnQqIGNsaWVudCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NTY2hlZHVsZXIoY2xpZW50KSk7CisgICAgfQorCisg
ICAgdm9pZCByZXF1ZXN0Q29tbWl0KCk7CisgICAgdm9pZCByZXF1ZXN0UmVkcmF3KCk7CisKKyAg
ICB2b2lkIGRpZENvbW1pdCgpOworICAgIHZvaWQgZGlkRHJhdygpOworCisgICAgYm9vbCBjb21t
aXRQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb21taXRQZW5kaW5nOyB9CisgICAgYm9vbCBy
ZWRyYXdQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZWRyYXdQZW5kaW5nOyB9CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgQ0NTY2hlZHVsZXIoQ0NTY2hlZHVsZXJDbGllbnQqKTsKKworICAg
IENDU2NoZWR1bGVyQ2xpZW50KiBtX2NsaWVudDsKKworICAgIGJvb2wgbV9jb21taXRQZW5kaW5n
OworICAgIGJvb2wgbV9yZWRyYXdQZW5kaW5nOworfTsKKworfQorCisjZW5kaWYgLy8gQ0NTY2hl
ZHVsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCAwZjAx
NWMwZWYxNjA4ZjZiZDY4YTIwNTdlYzQ1Njc3ZjEyZDkyYzY0Li5kYjBhMGRlYTcxYjA4ZWNhMzQ0
MWNlZTljMmRlMmIyMzQyZTVmNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0
TmVlZHNDb21taXQoKQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIH0K
IAotdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpCit2
b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0VGhlblJlZHJhdygpCiB7CiAg
ICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKICNpZiAhVVNFKFRIUkVBREVEX0NP
TVBPU0lUSU5HKQpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
c2V0TmVlZHNSZWRyYXcoKQogewogICAgIC8vIEZJWE1FOiBPbmNlIHdlIG1vdmUgcmVuZGVyX3dp
ZGdldCBzY2hlZHVsaW5nIGludG8gdGhpcyBjbGFzcywgd2UgY2FuCiAgICAgLy8gdHJlYXQgcmVk
cmF3IHJlcXVlc3RzIG1vcmUgZWZmaWNpZW50bHkgdGhhbiBjb21taXRBbmRSZWRyYXcgcmVxdWVz
dHMuCi0gICAgc2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKKyAgICBzZXROZWVkc0NvbW1pdFRo
ZW5SZWRyYXcoKTsKIH0KIAogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkKQEAgLTIz
Myw3ICsyMzMsNyBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dElm
TmVlZGVkKCkKICAgICAvLyBpbiB0aGUgY29udGV4dC1sb3N0IG1hY2hpbmVyeS4KICAgICBtX251
bUZhaWxlZFJlY3JlYXRlQXR0ZW1wdHMrKzsKICAgICBpZiAobV9udW1GYWlsZWRSZWNyZWF0ZUF0
dGVtcHRzIDwgNSkgewotICAgICAgICBzZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOworICAgICAg
ICBzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApAQCAtMjc2LDcgKzI3Niw3IEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21w
b3NpdGUoKQogICAgICAgICAgIC8vIGFuZCByZXF1ZXN0IGEgcmVwYWludCB5ZXQgYWdhaW4uCiAg
ICAgICAgICAgbV9ncmFwaGljc0NvbnRleHRMb3N0ID0gdHJ1ZTsKICAgICAgICAgICBtX251bUZh
aWxlZFJlY3JlYXRlQXR0ZW1wdHMgPSAwOwotICAgICAgICAgIHNldE5lZWRzQ29tbWl0QW5kUmVk
cmF3KCk7CisgICAgICAgICAgc2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCk7CiAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuaAppbmRleCAwMjMxYTkyODczMTQxMmNkY2I5NGYyMWVjYTIyZmE2MTA2Nzc3OWRkLi5k
OTkzNjFlNzA4MDNlZmFmYjliZDE4YmQxZjgyOTM2YmJmYjcyNzFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbG9zZUNvbXBvc2l0b3JDb250ZXh0KGlu
dCBudW1UaW1lcyk7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0KCk7Ci0gICAgdmly
dHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0QW5kUmVkcmF3KCk7CisgICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzQ29tbWl0VGhlblJlZHJhdygpOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJh
dygpOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDdhZDQwYzIxZjJlZTgyMDZiNzVmOTI1
ZDY0YThhMjc4NTAzZDMzZmYuLmE2Zjk4OThmZWU1NzAxYTE1OTI2OGE3Zjg4OTNiZTY4YTIwZTYw
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2lu
Y2x1ZGUgImNjL0NDTWFpblRocmVhZFRhc2suaCIKKyNpbmNsdWRlICJjYy9DQ1NjaGVkdWxlci5o
IgogI2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC00OCw2ICs0OSwzMyBAQCB2b2lk
IENDVGhyZWFkUHJveHk6OnNldFRocmVhZChDQ1RocmVhZCogY2NUaHJlYWQpCiAjZW5kaWYKIH0K
IAorY2xhc3MgQ0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudCA6IHB1YmxpYyBDQ1NjaGVkdWxl
ckNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaHJlYWRQcm94eVNj
aGVkdWxlckNsaWVudD4gY3JlYXRlKENDVGhyZWFkUHJveHkqIHByb3h5KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50KHByb3h5
KSk7CisgICAgfQorICAgIHZpcnR1YWwgfkNDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQoKSB7
IH0KKworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUJlZ2luRnJhbWVBbmRDb21taXQoKQorICAg
IHsKKyAgICAgICAgQ0NNYWluVGhyZWFkOjpwb3N0VGFzayhtX3Byb3h5LT5jcmVhdGVCZWdpbkZy
YW1lQW5kQ29tbWl0VGFza09uQ0NUaHJlYWQoKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IHNjaGVkdWxlRHJhd0FuZFByZXNlbnQoKQorICAgIHsKKyAgICAgICAgbV9wcm94eS0+ZHJhd0xh
eWVyc0FuZFByZXNlbnRPbkNDVGhyZWFkKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IENDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQoQ0NUaHJlYWRQcm94eSogcHJveHkpCisg
ICAgeworICAgICAgICBtX3Byb3h5ID0gcHJveHk7CisgICAgfQorCisgICAgQ0NUaHJlYWRQcm94
eSogbV9wcm94eTsKK307CisKIFBhc3NPd25QdHI8Q0NQcm94eT4gQ0NUaHJlYWRQcm94eTo6Y3Jl
YXRlKENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKIHsKICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IENDVGhyZWFkUHJveHkobGF5ZXJUcmVlSG9zdCkpOwpAQCAtNTksOSArODcsNiBAQCBD
Q1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9z
dCkKICAgICAsIG1fc3RhcnRlZChmYWxzZSkKICAgICAsIG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFt
ZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVyKC0xKQogICAgICwgbV9udW1CZWdpbkZyYW1lQW5kQ29t
bWl0c0lzc3VlZE9uQ0NUaHJlYWQoMCkKLSAgICAsIG1fYmVnaW5GcmFtZUFuZENvbW1pdFBlbmRp
bmdPbkNDVGhyZWFkKGZhbHNlKQotICAgICwgbV9kcmF3VGFza1Bvc3RlZE9uQ0NUaHJlYWQoZmFs
c2UpCi0gICAgLCBtX3JlZHJhd1JlcXVlc3RlZE9uQ0NUaHJlYWQoZmFsc2UpCiB7CiAgICAgVFJB
Q0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OkNDVGhyZWFkUHJveHkiLCB0aGlzLCAwKTsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNzYsNiArMTAxLDcgQEAgQ0NUaHJlYWRQcm94eTo6
fkNDVGhyZWFkUHJveHkoKQogCiBib29sIENDVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUFuZFJlYWRi
YWNrKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKKyAgICBUUkFDRV9FVkVO
VCgiQ0NUaHJlYWRQUm94eTo6Y29tcG9zaXRlQW5kUmVhZGJhY2siLCB0aGlzLCAwKTsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2xheWVyVHJlZUhvc3QpOwogCkBA
IC0xNDIsNiArMTY4LDcgQEAgYm9vbCBDQ1RocmVhZFByb3h5Ojppc1N0YXJ0ZWQoKSBjb25zdAog
CiBib29sIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKCkKIHsKKyAgICBU
UkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIiLCB0aGlz
LCAwKTsKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBtX2xheWVyVHJl
ZUhvc3QtPmNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QoKTsKICAgICBpZiAoIWNvbnRleHQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4MywzMyArMjEwLDM1IEBAIHZvaWQgQ0NUaHJl
YWRQcm94eTo6c2V0TmVlZHNDb21taXQoKQogCiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJv
eHk6OnNldE5lZWRzQ29tbWl0IiwgdGhpcywgMCk7CiAgICAgbV9jb21taXRSZXF1ZXN0ZWQgPSB0
cnVlOwotICAgIHNfY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAm
Q0NUaHJlYWRQcm94eTo6dXBkYXRlU2NoZWR1bGVyU3RhdGVPbkNDVGhyZWFkLCBtX2NvbW1pdFJl
cXVlc3RlZCwgdHJ1ZSkpOworICAgIHNfY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFk
VGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRPbkNDVGhyZWFkKSk7CiB9
CiAKLXZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKQordm9pZCBD
Q1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcoKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKG1fY29tbWl0UmVxdWVzdGVkKQotICAgICAgICByZXR1
cm47Ci0gICAgbV9jb21taXRSZXF1ZXN0ZWQgPSB0cnVlOworICAgIG1fcmVkcmF3QWZ0ZXJDb21t
aXQgPSB0cnVlOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CiAKLSAgICBUUkFDRV9FVkVOVCgi
Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRBbmRSZWRyYXciLCB0aGlzLCAwKTsKLSAgICBz
X2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJv
eHk6OnVwZGF0ZVNjaGVkdWxlclN0YXRlT25DQ1RocmVhZCwgbV9jb21taXRSZXF1ZXN0ZWQsIHRy
dWUpKTsKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRPbkNDVGhyZWFkKCkKK3sK
KyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFBy
b3h5OjpzZXROZWVkc0NvbW1pdE9uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBtX3NjaGVkdWxl
ck9uQ0NUaHJlYWQtPnJlcXVlc3RDb21taXQoKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5Ojpz
ZXROZWVkc1JlZHJhdygpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAo
bV9jb21taXRSZXF1ZXN0ZWQpIC8vIEltcGxpZXMgdGhhdCBhIGNvbW1pdCBpcyBpbiBmbGlnaHQu
Ci0gICAgICAgIHJldHVybjsKLSAgICAvLyBVbmxpa2Ugc2V0TmVlZHNDb21taXQgdGhhdCB0cmFj
a3Mgd2hldGhlciBhIGNvbW1pdCBtZXNzYWdlIGhhcyBiZWVuIHNlbnQsCi0gICAgLy8gc2V0TmVl
ZHNSZWRyYXcgYWx3YXlzIHNlbmRzIGEgbWVzc2FnZSB0byB0aGUgY29tcG9zaXRvciB0aHJlYWQu
IFRoaXMgaXMKLSAgICAvLyBiZWNhdXNlIHRoZSBjb21wb3NpdG9yIHRocmVhZCBjYW4gZHJhdyB3
aXRob3V0IHRlbGxpbmcgdGhlIG1haW4KLSAgICAvLyB0aHJlYWQuIFRoaXMgc2hvdWxkIG5vdCBi
ZSBtdWNoIG9mIGEgcHJvYmxlbSBiZWNhdXNlIGNhbGxzIHRvCi0gICAgLy8gc2V0TmVlZHNSZWRy
YXcgbWVzc2FnZXMgYXJlIHVuY29tbW9uIChvbmx5IHRyaWdnZXJlZCBieSBXTV9QQUlOVC9ldGMp
LAotICAgIC8vIGNvbXBhcmVkIHRvIHNldE5lZWRzQ29tbWl0QW5kUmVkcmF3IG1lc3NhZ2VzLgog
ICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhdyIsIHRoaXMsIDAp
OwotICAgIHNfY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NU
aHJlYWRQcm94eTo6dXBkYXRlU2NoZWR1bGVyU3RhdGVPbkNDVGhyZWFkLCBmYWxzZSwgdHJ1ZSkp
OworICAgIHNfY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NU
aHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXdPbkNDVGhyZWFkKSk7Cit9CisKK3ZvaWQgQ0NUaHJl
YWRQcm94eTo6c2V0TmVlZHNSZWRyYXdPbkNDVGhyZWFkKCkKK3sKKyAgICBBU1NFUlQoaXNJbXBs
VGhyZWFkKCkpOworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJh
d09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBtX3NjaGVkdWxlck9uQ0NUaHJlYWQtPnJlcXVl
c3RSZWRyYXcoKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpzdGFydCgpCkBAIC0yNDQsMTEg
KzI3MywxMCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uQ0NUaHJl
YWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkND
VGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAg
ICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwotICAgIEFTU0VSVCghbV9iZWdpbkZyYW1lQW5kQ29t
bWl0UGVuZGluZ09uQ0NUaHJlYWQpOwotICAgIGlmIChtX3JlZHJhd1JlcXVlc3RlZE9uQ0NUaHJl
YWQpIHsKKyAgICBpZiAobV9zY2hlZHVsZXJPbkNDVGhyZWFkLT5yZWRyYXdQZW5kaW5nKCkpIHsK
ICAgICAgICAgZHJhd0xheWVyc09uQ0NUaHJlYWQoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0
SW1wbC0+cHJlc2VudCgpOwotICAgICAgICBtX3JlZHJhd1JlcXVlc3RlZE9uQ0NUaHJlYWQgPSBm
YWxzZTsKKyAgICAgICAgbV9zY2hlZHVsZXJPbkNDVGhyZWFkLT5kaWREcmF3KCk7CiAgICAgfQog
ICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgIGNvbXBs
ZXRpb24tPnNpZ25hbCgpOwpAQCAtMjY2LDcgKzI5NCw2IEBAIFBhc3NPd25QdHI8Q0NNYWluVGhy
ZWFkOjpUYXNrPiBDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09u
Q0NUCiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmNyZWF0ZUJlZ2luRnJhbWVBbmRD
b21taXRUYXNrT25DQ1RocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQo
KSk7CiAgICAgZG91YmxlIGZyYW1lQmVnaW5UaW1lID0gY3VycmVudFRpbWUoKTsKLSAgICBtX2Jl
Z2luRnJhbWVBbmRDb21taXRQZW5kaW5nT25DQ1RocmVhZCA9IHRydWU7CiAKICAgICAvLyBOT1RF
LCBpdCBpcyBwb3NzaWJsZSB0byByZWNlaWV2ZSBhIHJlcXVlc3QgZm9yIGEKICAgICAvLyBiZWdp
bkZyYW1lQW5kQ29tbWl0T25DQ1RocmVhZCBmcm9tIGZpbmlzaEFsbFJlbmRlcmluZyB3aGlsZSBh
CkBAIC0zMjgsNiArMzU1LDEwIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENv
bW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltCiAKICAgICBtX2xh
eWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKKyAgICBpZiAobV9yZWRyYXdBZnRlckNv
bW1pdCkKKyAgICAgICAgc2V0TmVlZHNSZWRyYXcoKTsKKyAgICBtX3JlZHJhd0FmdGVyQ29tbWl0
ID0gZmFsc2U7CisKICAgICBBU1NFUlQobV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0
U2VxdWVuY2VOdW1iZXIgPT0gc2VxdWVuY2VOdW1iZXIpOwogfQogCkBAIC0zMzUsOCArMzY2LDcg
QEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpjb21taXRPbkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50
KiBjb21wbGV0aW9uKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZy
YW1lQW5kQ29tbWl0T25DQ1RocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJl
YWQoKSk7Ci0gICAgQVNTRVJUKG1fYmVnaW5GcmFtZUFuZENvbW1pdFBlbmRpbmdPbkNDVGhyZWFk
KTsKLSAgICBtX2JlZ2luRnJhbWVBbmRDb21taXRQZW5kaW5nT25DQ1RocmVhZCA9IGZhbHNlOwor
ICAgIEFTU0VSVChtX3NjaGVkdWxlck9uQ0NUaHJlYWQtPmNvbW1pdFBlbmRpbmcoKSk7CiAgICAg
aWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKSB7CiAgICAgICAgIGNvbXBsZXRpb24tPnNpZ25hbCgp
OwogICAgICAgICByZXR1cm47CkBAIC0zNDcsMTkgKzM3Nyw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94
eTo6Y29tbWl0T25DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIAogICAg
IGNvbXBsZXRpb24tPnNpZ25hbCgpOwogCi0gICAgaWYgKG1fcmVkcmF3UmVxdWVzdGVkT25DQ1Ro
cmVhZCkKLSAgICAgICAgc2NoZWR1bGVEcmF3VGFza09uQ0NUaHJlYWQoKTsKLX0KLQotdm9pZCBD
Q1RocmVhZFByb3h5OjpzY2hlZHVsZURyYXdUYXNrT25DQ1RocmVhZCgpCi17Ci0gICAgQVNTRVJU
KGlzSW1wbFRocmVhZCgpKTsKLSAgICBpZiAobV9kcmF3VGFza1Bvc3RlZE9uQ0NUaHJlYWQpCi0g
ICAgICAgIHJldHVybjsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVE
cmF3VGFza09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKLSAgICBBU1NFUlQobV9sYXllclRyZWVIb3N0
SW1wbCk7Ci0gICAgbV9kcmF3VGFza1Bvc3RlZE9uQ0NUaHJlYWQgPSB0cnVlOwotICAgIHNfY2NU
aHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6
ZHJhd0xheWVyc0FuZFByZXNlbnRPbkNDVGhyZWFkKSk7CisgICAgbV9zY2hlZHVsZXJPbkNDVGhy
ZWFkLT5kaWRDb21taXQoKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzQW5k
UHJlc2VudE9uQ0NUaHJlYWQoKQpAQCAtMzcxLDggKzM4OSw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94
eTo6ZHJhd0xheWVyc0FuZFByZXNlbnRPbkNDVGhyZWFkKCkKIAogICAgIGRyYXdMYXllcnNPbkND
VGhyZWFkKCk7CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+cHJlc2VudCgpOwotICAgIG1fcmVk
cmF3UmVxdWVzdGVkT25DQ1RocmVhZCA9IGZhbHNlOwotICAgIG1fZHJhd1Rhc2tQb3N0ZWRPbkND
VGhyZWFkID0gZmFsc2U7CisgICAgbV9zY2hlZHVsZXJPbkNDVGhyZWFkLT5kaWREcmF3KCk7CiB9
CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc09uQ0NUaHJlYWQoKQpAQCAtMzg1LDMw
ICs0MDIsMTMgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzT25DQ1RocmVhZCgpCiAg
ICAgQVNTRVJUKCFtX2xheWVyVHJlZUhvc3RJbXBsLT5pc0NvbnRleHRMb3N0KCkpOwogfQogCi12
b2lkIENDVGhyZWFkUHJveHk6OnVwZGF0ZVNjaGVkdWxlclN0YXRlT25DQ1RocmVhZChib29sIGNv
bW1pdFJlcXVlc3RlZCwgYm9vbCByZWRyYXdSZXF1ZXN0ZWQpCi17Ci0gICAgVFJBQ0VfRVZFTlQo
IkNDVGhyZWFkUHJveHk6OnVwZGF0ZVNjaGVkdWxlclN0YXRlT25DQ1RocmVhZCIsIHRoaXMsIDAp
OwotICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9z
dEltcGwpOwotCi0gICAgLy8gRklYTUU6IHVzZSBDQ1NjaGVkdWxlciB0byBkZWNpZGUgd2hlbiB0
byBtYW5hZ2UgdGhlIGNvbnZlcnNpb24gb2YgdGhpcwotICAgIC8vIGNvbW1pdCByZXF1ZXN0IGlu
dG8gYW4gYWN0dWFsIGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25DQ1RocmVhZCBjYWxs
LgotICAgIG1fcmVkcmF3UmVxdWVzdGVkT25DQ1RocmVhZCB8PSByZWRyYXdSZXF1ZXN0ZWQ7Ci0g
ICAgaWYgKGNvbW1pdFJlcXVlc3RlZCAmJiAhbV9iZWdpbkZyYW1lQW5kQ29tbWl0UGVuZGluZ09u
Q0NUaHJlYWQpIHsKLSAgICAgICAgQ0NNYWluVGhyZWFkOjpwb3N0VGFzayhjcmVhdGVCZWdpbkZy
YW1lQW5kQ29tbWl0VGFza09uQ0NUaHJlYWQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICAvLyBJZiBubyBjb21taXQgaXMgcGVuZGluZywgYnV0IGEgcmVkcmF3IGlzIHJlcXVlc3Rl
ZCwgdGhlbiBwb3N0IGEgcmVkcmF3IHJpZ2h0IGF3YXkKLSAgICBpZiAobV9yZWRyYXdSZXF1ZXN0
ZWRPbkNDVGhyZWFkKQotICAgICAgICBzY2hlZHVsZURyYXdUYXNrT25DQ1RocmVhZCgpOwotfQot
CiB2b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVJbXBsT25DQ1RocmVhZChDQ0NvbXBsZXRp
b25FdmVudCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6
aW5pdGlhbGl6ZUltcGxPbkNDVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzSW1wbFRo
cmVhZCgpKTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsID0gbV9sYXllclRyZWVIb3N0LT5jcmVh
dGVMYXllclRyZWVIb3N0SW1wbCgpOworICAgIG1fc2NoZWR1bGVyQ2xpZW50T25DQ1RocmVhZCA9
IENDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX3NjaGVk
dWxlck9uQ0NUaHJlYWQgPSBDQ1NjaGVkdWxlcjo6Y3JlYXRlKG1fc2NoZWR1bGVyQ2xpZW50T25D
Q1RocmVhZC5nZXQoKSk7CiAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuaAppbmRleCAzN2Q0NzNiZWUzNmQ4ZDE1ZDZhNGQwNzA2ODJkNTExYzRhZDFk
NTg3Li4zMmM5ZjZkY2UwNmQ5YzRjMzhhMDM1NDYyNDA2YjE2MmRjMzc4YjYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5oCkBAIC0zNCw5ICszNCwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CitjbGFzcyBDQ1NjaGVkdWxlcjsKIGNsYXNzIENDVGhy
ZWFkOworY2xhc3MgQ0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudDsKIAogY2xhc3MgQ0NUaHJl
YWRQcm94eSA6IHB1YmxpYyBDQ1Byb3h5IHsKKyAgICBmcmllbmQgY2xhc3MgQ0NUaHJlYWRQcm94
eVNjaGVkdWxlckNsaWVudDsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRUaHJlYWQoQ0NU
aHJlYWQqKTsKIApAQCAtNTMsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBM
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIGxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQgbnVtVGltZXMp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdCgpOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1p
dFRoZW5SZWRyYXcoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwpAQCAtNzUsMTIg
Kzc4LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplSW1wbE9uQ0NUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIGluaXRpYWxpemVMYXllclJlbmRlcmVyT25DQ1Ro
cmVhZChHcmFwaGljc0NvbnRleHQzRCosIENDQ29tcGxldGlvbkV2ZW50KiwgYm9vbCogaW5pdGlh
bGl6ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyopOwogICAgIHZvaWQgc2V0
TmVlZHNDb21taXRPbkNDVGhyZWFkKCk7Ci0gICAgdm9pZCB1cGRhdGVTY2hlZHVsZXJTdGF0ZU9u
Q0NUaHJlYWQoYm9vbCBjb21taXRSZXF1ZXN0ZWQsIGJvb2wgcmVkcmF3UmVxdWVzdGVkKTsKKyAg
ICB2b2lkIHNldE5lZWRzUmVkcmF3T25DQ1RocmVhZCgpOworICAgIHZvaWQgc2V0TmVlZHNDb21t
aXRUaGVuUmVkcmF3T25DQ1RocmVhZCgpOwogICAgIHZvaWQgbGF5ZXJUcmVlSG9zdENsb3NlZE9u
Q0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKLSAgICB2b2lkIHNjaGVkdWxlRHJhd1Rhc2tP
bkNDVGhyZWFkKCk7CiAKICAgICAvLyBBY2Nlc3NlZCBvbiBtYWluIHRocmVhZCBvbmx5LgogICAg
IGJvb2wgbV9jb21taXRSZXF1ZXN0ZWQ7CisgICAgYm9vbCBtX3JlZHJhd0FmdGVyQ29tbWl0Owog
ICAgIENDTGF5ZXJUcmVlSG9zdCogbV9sYXllclRyZWVIb3N0OwogICAgIExheWVyUmVuZGVyZXJD
YXBhYmlsaXRpZXMgbV9sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzTWFpblRocmVhZENvcHk7CiAg
ICAgYm9vbCBtX3N0YXJ0ZWQ7CkBAIC04OSw5ICs5Myw5IEBAIHByaXZhdGU6CiAgICAgLy8gVXNl
ZCBvbiB0aGUgQ0NUaHJlYWQgb25seQogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBt
X2xheWVyVHJlZUhvc3RJbXBsOwogICAgIGludCBtX251bUJlZ2luRnJhbWVBbmRDb21taXRzSXNz
dWVkT25DQ1RocmVhZDsKLSAgICBib29sIG1fYmVnaW5GcmFtZUFuZENvbW1pdFBlbmRpbmdPbkND
VGhyZWFkOwotICAgIGJvb2wgbV9kcmF3VGFza1Bvc3RlZE9uQ0NUaHJlYWQ7Ci0gICAgYm9vbCBt
X3JlZHJhd1JlcXVlc3RlZE9uQ0NUaHJlYWQ7CisKKyAgICBPd25QdHI8Q0NTY2hlZHVsZXI+IG1f
c2NoZWR1bGVyT25DQ1RocmVhZDsKKyAgICBPd25QdHI8Q0NUaHJlYWRQcm94eVNjaGVkdWxlckNs
aWVudD4gbV9zY2hlZHVsZXJDbGllbnRPbkNDVGhyZWFkOwogCiAgICAgc3RhdGljIENDVGhyZWFk
KiBzX2NjVGhyZWFkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZWU4YzVlN2Y3
YjBlYTc3MDZjYzM2MzMwZjcyZDA1MTZiYWEyZWUxMy4uMzU5MWJmZjZiNTQzNTE4ZGQ0NGI1N2Zm
NGUwMWIzZDQwZGRjZTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwz
MCBAQAogMjAxMS0xMC0wMyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgog
CisgICAgICAgIFtjaHJvbWl1bV0gRXh0cmFjdCBzY2hlZHVsaW5nIGxvZ2ljIGZyb20gQ0NUaHJl
YWRQcm94eSB0byBpdHMgb3duIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02OTA0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZHMgc29tZSB1bml0IHRlc3RzIGZvciB0aGUgbmV3IENDU2NoZWR1
bGVyIGNsYXNzLiBTaW5jZSB0aGUgY2xhc3MgaXMgdmVyeSBzaW1wbGUgdG9kYXksIHRoZSB0ZXN0
cyBhcmUKKyAgICAgICAgc2ltaWxhcmx5IHF1aXRlIHNpbXBsZS4KKworICAgICAgICAqIFdlYktp
dC5neXBpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkpOgorICAgICAgICAqIHRlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RU
ZXN0Ojpwb3N0U2V0TmVlZHNDb21taXRUaGVuUmVkcmF3VG9NYWluVGhyZWFkKToKKyAgICAgICAg
KFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdDo6ZGlzcGF0Y2hTZXROZWVkc0NvbW1pdFRoZW5SZWRy
YXcpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U2hvcnRsaXZlZDI6OmJlZ2lu
VGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RDb21taXRpbmdXaXRoQ29u
dGludW91c1JlZHJhdzo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0
VGVzdENvbW1pdGluZ1dpdGhDb250aW51b3VzUmVkcmF3OjpkcmF3TGF5ZXJzT25DQ1RocmVhZCk6
CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTZXROZWVkc0NvbW1pdDE6OmJlZ2lu
VGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTZXROZWVkc0NvbW1pdDI6
OmJlZ2luVGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTZXROZWVkc0Nv
bW1pdDI6OmRyYXdMYXllcnNPbkNDVGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVI
b3N0VGVzdFNldE5lZWRzUmVkcmF3OjpiZWdpblRlc3QpOgorICAgICAgICAqIHRlc3RzL0NDU2No
ZWR1bGVyVGVzdC5jcHA6IEFkZGVkLgorCisyMDExLTEwLTAzICBKYW1lcyBSb2JpbnNvbiAgPGph
bWVzckBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW2Nocm9taXVtXSBBZGQgV2ViV2lkZ2V0IEFQ
SSBmb3IgYWNjZXNzaW5nIHRoZSBjdXJyZW50IFdlYkNvbXBvc2l0b3IKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MTgxCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXBpCmluZGV4IGQ1YmU3MTcyMjYwNGRhMTUwZGZhZmQ5MmYyMGIyZjRiZmVkNDVh
MGQuLjdkNWFmNmMwMzBiNDRlMzhkNTMxMTkxYTYxN2JjOTMyN2QwMDU0YjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtNTUsOCArNTUsOSBAQAogICAgICAgICAgICAgJ3Rlc3Rz
L0FyZW5hVGVzdEhlbHBlcnMuaCcsCiAgICAgICAgICAgICAndGVzdHMvQXNzb2NpYXRlZFVSTExv
YWRlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ0xheWVyU29ydGVyVGVzdC5jcHAn
LAotICAgICAgICAgICAgJ3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwJywKICAgICAgICAg
ICAgICd0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9DQ1NjaGVk
dWxlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1RocmVhZFRhc2tUZXN0LmNwcCcs
CiAgICAgICAgICAgICAndGVzdHMvQ0NUaHJlYWRUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA4YTI2MmI4ODhkYzg2ZmNkYjhmNGM2ODQ3NzY4ZjMw
NzE4NjNkZjZjLi5kOWVmYzZkODUzZDc1OThhN2FhZjFmY2NlNDc3OGYxYzJkZWRhNmNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0yNTc0LDcgKzI1
NzQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkoKQogICAg
IH0KICNpZiBVU0UoVEhSRUFERURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9z
dCkKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOwor
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0VGhlblJlZHJhdygpOwogI2Vs
c2UKICAgICBtX2NsaWVudC0+c2NoZWR1bGVDb21wb3NpdGUoKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5k
ZXggMTE1YTQ2NjEyN2Q1ZDUyYTQ5NmI4NzU4M2QyNWI0ZjE4Y2ZhN2M4Zi4uNjU2ZDhkNjY0YWY4
ZDFhZjcxZjlhN2U4MmUzMTlkZTY2NGJjM2JlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0xOTcsOSArMTk3LDkg
QEAgcHVibGljOgogCiAgICAgdm9pZCBlbmRUZXN0KCk7CiAKLSAgICB2b2lkIHBvc3RTZXROZWVk
c0NvbW1pdFRvTWFpblRocmVhZCgpCisgICAgdm9pZCBwb3N0U2V0TmVlZHNDb21taXRUaGVuUmVk
cmF3VG9NYWluVGhyZWFkKCkKICAgICB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoQ0NMYXll
clRyZWVIb3N0VGVzdDo6ZGlzcGF0Y2hTZXROZWVkc0NvbW1pdCwgdGhpcyk7CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoQ0NMYXllclRyZWVIb3N0VGVzdDo6ZGlzcGF0Y2hTZXROZWVkc0NvbW1p
dFRoZW5SZWRyYXcsIHRoaXMpOwogICAgIH0KIAogICAgIHZvaWQgcG9zdFNldE5lZWRzUmVkcmF3
VG9NYWluVGhyZWFkKCkKQEAgLTIzOSwxMyArMjM5LDEzIEBAIHByb3RlY3RlZDoKICAgICAgICAg
dGVzdC0+bV9sYXllclRyZWVIb3N0LmNsZWFyKCk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQg
ZGlzcGF0Y2hTZXROZWVkc0NvbW1pdCh2b2lkKiBzZWxmKQorICAgIHN0YXRpYyB2b2lkIGRpc3Bh
dGNoU2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KHZvaWQqIHNlbGYpCiAgICAgewogICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgIENDTGF5ZXJUcmVlSG9zdFRlc3QqIHRlc3QgPSBz
dGF0aWNfY2FzdDxDQ0xheWVyVHJlZUhvc3RUZXN0Kj4oc2VsZik7CiAgICAgICBBU1NFUlQodGVz
dCk7CiAgICAgICBpZiAodGVzdC0+bV9sYXllclRyZWVIb3N0KQotICAgICAgICAgIHRlc3QtPm1f
bGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKKyAgICAgICAgICB0ZXN0
LT5tX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0VGhlblJlZHJhdygpOwogICAgIH0KIAog
ICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoU2V0TmVlZHNSZWRyYXcodm9pZCogc2VsZikKQEAgLTM2
NCw3ICszNjQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKICAg
ICB7Ci0gICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgICAgICBw
b3N0U2V0TmVlZHNDb21taXRUaGVuUmVkcmF3VG9NYWluVGhyZWFkKCk7CiAgICAgICAgIGVuZFRl
c3QoKTsKICAgICB9CiAKQEAgLTQwOCw3ICs0MDgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgYmVnaW5UZXN0KCkKICAgICB7Ci0gICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFp
blRocmVhZCgpOworICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUaGVuUmVkcmF3VG9NYWluVGhy
ZWFkKCk7CiAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9CiAKQEAgLTQyMiw3ICs0MjIsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVl
SG9zdEltcGwqKQogICAgIHsKICAgICAgICAgaWYgKG1fbnVtRHJhd3MgPT0gMSkKLSAgICAgICAg
ICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKKyAgICAgICAgICBwb3N0U2V0TmVl
ZHNDb21taXRUaGVuUmVkcmF3VG9NYWluVGhyZWFkKCk7CiAgICAgICAgIG1fbnVtRHJhd3MrKzsK
ICAgICAgICAgcG9zdFNldE5lZWRzUmVkcmF3VG9NYWluVGhyZWFkKCk7CiAgICAgfQpAQCAtNDUy
LDggKzQ1Miw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQogICAg
IHsKLSAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7Ci0gICAgICAgIHBv
c3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgICAgICBwb3N0U2V0TmVlZHNDb21t
aXRUaGVuUmVkcmF3VG9NYWluVGhyZWFkKCk7CisgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRo
ZW5SZWRyYXdUb01haW5UaHJlYWQoKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xh
eWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKQEAgLTQ5NSwxMyArNDk1
LDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQogICAgIHsKLSAg
ICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAgICAgIHBvc3RTZXRO
ZWVkc0NvbW1pdFRoZW5SZWRyYXdUb01haW5UaHJlYWQoKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKICAg
ICB7CiAgICAgICAgIGlmICghaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSkKLSAgICAgICAgICAg
IHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgICAgICAgICAgcG9zdFNldE5l
ZWRzQ29tbWl0VGhlblJlZHJhd1RvTWFpblRocmVhZCgpOwogICAgICAgICBlbHNlIGlmIChpbXBs
LT5zb3VyY2VGcmFtZU51bWJlcigpID09IDEpCiAgICAgICAgICAgICBlbmRUZXN0KCk7CiAgICAg
fQpAQCAtNTM4LDcgKzUzOCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpblRl
c3QoKQogICAgIHsKLSAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7Cisg
ICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRoZW5SZWRyYXdUb01haW5UaHJlYWQoKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0
SW1wbCogaW1wbCkKQEAgLTU4Niw3ICs1ODYsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnJvb3RMYXllcigpLT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXpl
KDEwMCwgMTAwKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPnNldFNj
cm9sbFBvc2l0aW9uKG1faW5pdGlhbFNjcm9sbCk7Ci0gICAgICAgIHBvc3RTZXROZWVkc0NvbW1p
dFRvTWFpblRocmVhZCgpOworICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUaGVuUmVkcmF3VG9N
YWluVGhyZWFkKCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ29tbWl0T25DQ1Ro
cmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQpAQCAtNjEyLDcgKzYxMiw3IEBAIHB1Ymxp
YzoKICAgICAgICAgaWYgKGltcGwtPmZyYW1lTnVtYmVyKCkgPT0gMSkgewogICAgICAgICAgICAg
RVhQRUNUX0VRKHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIG1faW5pdGlhbFNjcm9sbCk7CiAgICAg
ICAgICAgICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xsRGVsdGEoKSwgbV9zY3JvbGxBbW91bnQpOwot
ICAgICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAgICAgICAg
ICBwb3N0U2V0TmVlZHNDb21taXRUaGVuUmVkcmF3VG9NYWluVGhyZWFkKCk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoaW1wbC0+ZnJhbWVOdW1iZXIoKSA9PSAyKSB7CiAgICAgICAgICAgICBFWFBFQ1Rf
RVEocm9vdC0+c2Nyb2xsUG9zaXRpb24oKSwgbV9zZWNvbmRTY3JvbGwpOwogICAgICAgICAgICAg
RVhQRUNUX0VRKHJvb3QtPnNjcm9sbERlbHRhKCksIG1fc2Nyb2xsQW1vdW50KTsKQEAgLTY1NSw3
ICs2NTUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnJvb3RM
YXllcigpLT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7CiAgICAgICAg
IG1fbGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPnNldFNjcm9sbFBvc2l0aW9uKG1faW5pdGlh
bFNjcm9sbCk7Ci0gICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAg
ICAgICBwb3N0U2V0TmVlZHNDb21taXRUaGVuUmVkcmF3VG9NYWluVGhyZWFkKCk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ29tbWl0T25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJ
bXBsKiBpbXBsKQpAQCAtNjg2LDcgKzY4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEVYUEVD
VF9FUShyb290LT5zY3JvbGxEZWx0YSgpLCBtX3Njcm9sbEFtb3VudCArIG1fc2Nyb2xsQW1vdW50
KTsKIAogICAgICAgICAgICAgRVhQRUNUX0VRKHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIG1faW5p
dGlhbFNjcm9sbCk7Ci0gICAgICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQo
KTsKKyAgICAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRoZW5SZWRyYXdUb01haW5UaHJlYWQo
KTsKICAgICAgICAgfSBlbHNlIGlmIChpbXBsLT5mcmFtZU51bWJlcigpID09IDMpIHsKICAgICAg
ICAgICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxEZWx0YSgpLCBJbnRTaXplKCkpOwogICAgICAg
ICAgICAgRVhQRUNUX0VRKHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIG1faW5pdGlhbFNjcm9sbCAr
IG1fc2Nyb2xsQW1vdW50ICsgbV9zY3JvbGxBbW91bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2NmRkYzQ2YTI0
N2I2NGU4NGQ5OWI2M2EwMjExZWY2ZTc0MjQ1MzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKQEAgLTAsMCArMSw4MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiY2MvQ0NT
Y2hlZHVsZXIuaCIKKworI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+CisjaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXVEY7
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgTW9ja0ND
U2NoZWR1bGVyQ2xpZW50IDogcHVibGljIENDU2NoZWR1bGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICBNT0NLX01FVEhPRDAoc2NoZWR1bGVCZWdpbkZyYW1lQW5kQ29tbWl0LCB2b2lkKCkpOworICAg
IE1PQ0tfTUVUSE9EMChzY2hlZHVsZURyYXdBbmRQcmVzZW50LCB2b2lkKCkpOworfTsKKworY2xh
c3MgQ0NTY2hlZHVsZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAg
IENDU2NoZWR1bGVyVGVzdCgpCisgICAgICAgIDogbV9jbGllbnQoYWRvcHRQdHIobmV3IE1vY2tD
Q1NjaGVkdWxlckNsaWVudCkpCisgICAgICAgICwgbV9zY2hlZHVsZXIoQ0NTY2hlZHVsZXI6OmNy
ZWF0ZShtX2NsaWVudC5nZXQoKSkpCisgICAgeworICAgICAgICBFWFBFQ1RfQ0FMTCgqbV9jbGll
bnQsIHNjaGVkdWxlQmVnaW5GcmFtZUFuZENvbW1pdCgpKS5UaW1lcygwKTsKKyAgICAgICAgRVhQ
RUNUX0NBTEwoKm1fY2xpZW50LCBzY2hlZHVsZURyYXdBbmRQcmVzZW50KCkpLlRpbWVzKDApOwor
ICAgIH0KKworcHJvdGVjdGVkOgorICAgIE93blB0cjxNb2NrQ0NTY2hlZHVsZXJDbGllbnQ+IG1f
Y2xpZW50OworICAgIE93blB0cjxDQ1NjaGVkdWxlcj4gbV9zY2hlZHVsZXI7Cit9OworCitURVNU
X0YoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0KQoreworICAgIEVYUEVDVF9DQUxMKCpt
X2NsaWVudCwgc2NoZWR1bGVCZWdpbkZyYW1lQW5kQ29tbWl0KCkpLlRpbWVzKDEpOworICAgIG1f
c2NoZWR1bGVyLT5yZXF1ZXN0Q29tbWl0KCk7Cit9CisKK1RFU1RfRihDQ1NjaGVkdWxlclRlc3Qs
IFJlcXVlc3RDb21taXRUd2ljZUJlZm9yZUNvbW1pdCkKK3sKKyAgICBFWFBFQ1RfQ0FMTCgqbV9j
bGllbnQsIHNjaGVkdWxlQmVnaW5GcmFtZUFuZENvbW1pdCgpKS5UaW1lcygxKTsKKyAgICBtX3Nj
aGVkdWxlci0+cmVxdWVzdENvbW1pdCgpOworICAgIG1fc2NoZWR1bGVyLT5yZXF1ZXN0Q29tbWl0
KCk7CisKKyAgICBFWFBFQ1RfQ0FMTCgqbV9jbGllbnQsIHNjaGVkdWxlQmVnaW5GcmFtZUFuZENv
bW1pdCgpKS5UaW1lcygxKTsKKyAgICBtX3NjaGVkdWxlci0+ZGlkQ29tbWl0KCk7CisgICAgbV9z
Y2hlZHVsZXItPnJlcXVlc3RDb21taXQoKTsKK30KKworVEVTVF9GKENDU2NoZWR1bGVyVGVzdCwg
UmVxdWVzdFJlZHJhdykKK3sKKyAgICBFWFBFQ1RfQ0FMTCgqbV9jbGllbnQsIHNjaGVkdWxlRHJh
d0FuZFByZXNlbnQoKSkuVGltZXMoMSk7CisgICAgbV9zY2hlZHVsZXItPnJlcXVlc3RSZWRyYXco
KTsKK30KKworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109526</attachid>
            <date>2011-10-03 13:51:44 -0700</date>
            <delta_ts>2011-10-04 15:37:33 -0700</delta_ts>
            <desc>sort gypi entries</desc>
            <filename>bug-69049-20111003135143.patch</filename>
            <type>text/plain</type>
            <size>40166</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY1MjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NWQ2MTVkOTM2ZjJjZDFl
YzM5NWI5MTRmYzgzOTBkOWUxNGFiNjhhLi45NGExYjMzMmY5ZjBlYzg1YjgyMTM4M2JiN2EzOTM5
YzA1N2Q4NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMTEtMTAtMDMgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4
dHJhY3Qgc2NoZWR1bGluZyBsb2dpYyBmcm9tIENDVGhyZWFkUHJveHkgdG8gaXRzIG93biBjbGFz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwNDkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
cnRpYWxseSBleHRyYWN0cyB0aGUgY29tbWl0L2RyYXcgc2NoZWR1bGluZyBmcm9tIENDVGhyZWFk
UHJveHkgdG8gYSBzZXBhcmF0ZSBpc29sYXRlZCBjbGFzcy4gVGhpcyBtYWtlcworICAgICAgICB0
aGUgY29tbWl0L2RyYXcgbG9naWMgZWFzaWVyIHRvIHRlc3QsIHVuZGVyc3RhbmQgYW5kIGV4dGVu
ZC4KKworICAgICAgICBUaGVyZSBpcyBvbmUgc3VidGxlIGJlaGF2aW9yIGNoYW5nZSBoZXJlIHRv
IHRoZSB3YXkgdGhhdCB0aGUgZnVuY3Rpb24gZm9ybWVybHkga25vd24gYXMKKyAgICAgICAgQ0NM
YXllclRyZWVIb3N0OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdyB3b3Jrcy4gUHJldmlvdXNseSwg
dGhpcyB3b3VsZCB0cmlnZ2VyIGEgYmVnaW4gZnJhbWUgbWVzc2FnZSwgaWYgb25lCisgICAgICAg
IHdhc24ndCBwZW5kaW5nLCBhbmQgdGhlbiB0cmlnZ2VyIGEgcmVkcmF3IGlmIG9uZSB3YXNuJ3Qg
cGVuZGluZy4gVGhpcyB3YXMgc3VidGx5IHdyb25nIC0gdGhlIGludGVudCBvZiB0aGF0IGNhbGwK
KyAgICAgICAgaXMgdGhhdCBhIHJlZHJhdyBzaG91bGQgaGFwcGVuIGFmdGVyIHRoZSBjb21taXQu
IEl0IGlzbid0IHVzZWZ1bCB0byBkcmF3IGJlZm9yZSB0aGUgY29tbWl0IG9jY3Vycy4gVGhpcyBw
YXRjaAorICAgICAgICBjaGFuZ2VzIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0byBzZXROZWVk
c0NvbW1pdFRoZW5SZWRyYXcgYW5kIG9ubHkgcmVxdWVzdHMgYSByZWRyYXcgYWZ0ZXIgYSBjb21t
aXQgb2NjdXJzLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IENDU2NoZWR1bGVyVGVzdCB1bml0
IHRlc3RzLCBDQ0xheWVyVHJlZUhvc3RUZXN0IHVuaXQgdGVzdHMsIGFuZCBjb21wb3NpdGluZy8g
bGF5b3V0IHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0OjpzZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRWaWV3cG9ydCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNldFZpc2libGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY2hlZHVsZXI6OkNDU2NoZWR1bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1
bGVyOjpyZXF1ZXN0Q29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpyZXF1
ZXN0Q29tbWl0VGhlblJlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6cmVx
dWVzdFJlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6ZGlkQ29tbWl0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpkaWREcmF3KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNDU2NoZWR1bGVyQ2xpZW50Ojp+Q0NTY2hlZHVsZXJDbGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Nj
aGVkdWxlcjo6Y29tbWl0UGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6
cmVkcmF3UGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6cmVkcmF3QWZ0
ZXJDb21taXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94
eTo6c2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xl
VGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xl
VGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tcG9zaXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudDo6fkNDVGhyZWFkUHJveHlTY2hl
ZHVsZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eVNjaGVkdWxlckNs
aWVudDo6c2NoZWR1bGVCZWdpbkZyYW1lQW5kQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkND
VGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ6OnNjaGVkdWxlRHJhd0FuZFByZXNlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudDo6Q0NUaHJlYWRQcm94
eVNjaGVkdWxlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpDQ1Ro
cmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUFu
ZFJlYWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVM
YXllclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNldE5lZWRz
Q29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0
T25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0Nv
bW1pdFRoZW5SZWRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0TmVl
ZHNDb21taXRUaGVuUmVkcmF3T25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjpzZXROZWVkc1JlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
OjpzZXROZWVkc1JlZHJhd09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29t
bWl0VGFza09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVn
aW5GcmFtZUFuZENvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpjb21t
aXRPbkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmRyYXdMYXll
cnNBbmRQcmVzZW50T25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
Ojppbml0aWFsaXplSW1wbE9uQ0NUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKwogMjAxMS0xMC0wMyAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgV0VCX0FVRElPIGJ5IGRlZmF1
bHQgaW4gdGhlIFdlYktpdC9tYWMgcG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmYTNmOTEyM2Rj
NzllMTM0NjNmY2VmMDU3NmUwZTA4NGQxYjkzMTYyLi5hMzcyYThjZmNhNTY0YzI1YjFiYzQ1MzBl
MjViYjhhMjA5NThjZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNDk4LDEwICszNDk4LDEwIEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRl
ci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VGlsaW5nRGF0YS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUaWxpbmdEYXRhLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RDb21tb24uaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWFpblRocmVhZC5jcHAn
LApAQCAtMzUwOSwxNSArMzUwOSwxNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTWFpblRocmVhZFRhc2suaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oJywKLSAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3BwJywKLSAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Byb3h5LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgnLAorICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRUYXNrLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggZDJiYzZiNDgyYWQ3ZGE0M2FhNzMzNjljYThh
MWUyNDMzMWY5NTczMy4uN2YzYmIzZWZkMTg1YzdlZDhlMzJjYjllZTI3ODQwMGZlMTM3NmY0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC02MCw2ICs2MCw3IEBAIENDTGF5
ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50
LCBQYXNzUmVmUHRyPExheWVyCiAKIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKCkK
IHsKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplIiwgdGhpcywg
MCk7CiAgICAgaWYgKG1fc2V0dGluZ3MuZW5hYmxlQ29tcG9zaXRvclRocmVhZCkgewogICAgICAg
ICAvLyBBY2NlbGVyYXRlZCBQYWludGluZyBpcyBub3Qgc3VwcG9ydGVkIGluIHRocmVhZGVkIG1v
ZGUuIFR1cm4gaXQgb2ZmLgogICAgICAgICBtX3NldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9
IGZhbHNlOwpAQCAtNzgsOCArNzksNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6
ZSgpCiAgICAgLy8gVXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQgb24gY2FwYWJpbGl0aWVzIHRoYXQg
d2UgZ290IGJhY2sgZnJvbSB0aGUgcmVuZGVyZXIuCiAgICAgbV9zZXR0aW5ncy5hY2NlbGVyYXRl
UGFpbnRpbmcgPSBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdBY2Nl
bGVyYXRlZFBhaW50aW5nOwogCi0gICAgLy8gV2UgY2hhbmdlZCB0aGUgcm9vdCBsYXllci4gVGVs
bCB0aGUgcHJveHkgYSBjb21taXQgaXMgbmVlZGVkLgotICAgIG1fcHJveHktPnNldE5lZWRzQ29t
bWl0QW5kUmVkcmF3KCk7CisgICAgc2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCk7CiAKICAgICBt
X2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKFRleHR1cmVN
YW5hZ2VyOjpoaWdoTGltaXRCeXRlcygpLCBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzKCkubWF4VGV4dHVyZVNpemUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTk2LDE0ICsxOTYs
MTQgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldFpvb21BbmltYXRvclRyYW5zZm9ybShjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgem9vbSkKICAgICBtX3pvb21BbmltYXRvclRyYW5zZm9y
bSA9IHpvb207CiAKICAgICBpZiAoem9vbUNoYW5nZWQpCi0gICAgICAgIHNldE5lZWRzQ29tbWl0
QW5kUmVkcmF3KCk7CisgICAgICAgIHNldE5lZWRzQ29tbWl0VGhlblJlZHJhdygpOwogfQogCi12
b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKQordm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0VGhlblJlZHJhdygpCiB7CiAjaWYgVVNFKFRIUkVB
REVEX0NPTVBPU0lUSU5HKQotICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnNldE5l
ZWRzUmVkcmF3IiwgdGhpcywgMCk7Ci0gICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXRBbmRSZWRy
YXcoKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpzZXROZWVkc0NvbW1pdFRo
ZW5SZWRyYXciLCB0aGlzLCAwKTsKKyAgICBtX3Byb3h5LT5zZXROZWVkc0NvbW1pdFRoZW5SZWRy
YXcoKTsKICNlbHNlCiAgICAgbV9jbGllbnQtPnNjaGVkdWxlQ29tcG9zaXRlKCk7CiAjZW5kaWYK
QEAgLTIyMSwxNCArMjIxLDE0IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXROZWVkc1JlZHJh
dygpCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld3BvcnQoY29uc3QgSW50U2l6ZSYgdmll
d3BvcnRTaXplKQogewogICAgIG1fdmlld3BvcnRTaXplID0gdmlld3BvcnRTaXplOwotICAgIHNl
dE5lZWRzQ29tbWl0QW5kUmVkcmF3KCk7CisgICAgc2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCk7
CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsK
ICAgICBtX3Zpc2libGUgPSB2aXNpYmxlOwogICAgIGlmICh2aXNpYmxlKQotICAgICAgICBtX3By
b3h5LT5zZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOworICAgICAgICBzZXROZWVkc0NvbW1pdFRo
ZW5SZWRyYXcoKTsKICAgICBlbHNlIHsKICAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2Vy
LT5yZWR1Y2VNZW1vcnlUb0xpbWl0KFRleHR1cmVNYW5hZ2VyOjpsb3dMaW1pdEJ5dGVzKCkpOwog
ICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGRmYzU3ZjA0OTIwOGExMzhkN2MyMjNk
YThhMGE3MjQwNGYzNTk1ZGUuLjQ3NzRhZWJiZTcwYTFiNWEwNDM4N2JjNmNhM2QwNjZhOTNiZmI2
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0xMzUsNyArMTM1LDcgQEAgcHVi
bGljOgogICAgIC8vIFRlc3Qtb25seSBob29rCiAgICAgdm9pZCBsb3NlQ29tcG9zaXRvckNvbnRl
eHQoaW50IG51bVRpbWVzKTsKIAotICAgIHZvaWQgc2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsK
KyAgICB2b2lkIHNldE5lZWRzQ29tbWl0VGhlblJlZHJhdygpOwogICAgIHZvaWQgc2V0TmVlZHNS
ZWRyYXcoKTsKIAogICAgIExheWVyQ2hyb21pdW0qIHJvb3RMYXllcigpIHsgcmV0dXJuIG1fcm9v
dExheWVyLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggMjJhYmFkZTZkMzg1NThjM2RkYmMzMzk4
MWEzNDI1MzYyYjFjMDY5Ni4uYTg2MDMxOTcxMWU4NDQ1MDkyNGE4ZGM3Y2I1MzQ5NGE1MjIyMzZk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJveHkuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBj
b25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVz
KCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0KCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXROZWVkc1JlZHJhdygpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpID0gMDsg
Ly8gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIHVzaW5nIHRoZSBwcm94eS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1
bGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ZjU0MzE1MzM2MmRkMzY5MTVlOWYxZTUwMjUyYjJiYWExNDky
NDE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDU2NoZWR1bGVyLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0NTY2hlZHVsZXI6OkNDU2NoZWR1bGVyKENDU2NoZWR1
bGVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX2NvbW1p
dFBlbmRpbmcoZmFsc2UpCisgICAgLCBtX3JlZHJhd1BlbmRpbmcoZmFsc2UpCit7CisgICAgQVNT
RVJUKG1fY2xpZW50KTsKK30KKwordm9pZCBDQ1NjaGVkdWxlcjo6cmVxdWVzdENvbW1pdCgpCit7
CisgICAgaWYgKG1fY29tbWl0UGVuZGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb21t
aXRQZW5kaW5nID0gdHJ1ZTsKKyAgICBtX2NsaWVudC0+c2NoZWR1bGVCZWdpbkZyYW1lQW5kQ29t
bWl0KCk7Cit9CisKK3ZvaWQgQ0NTY2hlZHVsZXI6OnJlcXVlc3RSZWRyYXcoKQoreworICAgIGlm
IChtX3JlZHJhd1BlbmRpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVkcmF3UGVuZGlu
ZyA9IHRydWU7CisKKyAgICBtX2NsaWVudC0+c2NoZWR1bGVEcmF3QW5kUHJlc2VudCgpOworfQor
Cit2b2lkIENDU2NoZWR1bGVyOjpkaWRDb21taXQoKQoreworICAgIG1fY29tbWl0UGVuZGluZyA9
IGZhbHNlOworfQorCit2b2lkIENDU2NoZWR1bGVyOjpkaWREcmF3KCkKK3sKKyAgICBtX3JlZHJh
d1BlbmRpbmcgPSBmYWxzZTsKK30KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODM4ZGZjYWEyN2Q0NDE5NmI4NTk1ZDQ0OTY5NzAwODMwNWU3ZWE1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hl
ZHVsZXIuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDU2NoZWR1
bGVyX2gKKyNkZWZpbmUgQ0NTY2hlZHVsZXJfaAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBDQ1RocmVhZDsKKworY2xhc3MgQ0NTY2hlZHVsZXJDbGllbnQgeworcHVibGljOgor
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUJlZ2luRnJhbWVBbmRDb21taXQoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNjaGVkdWxlRHJhd0FuZFByZXNlbnQoKSA9IDA7CisKK3Byb3RlY3RlZDoK
KyAgICB2aXJ0dWFsIH5DQ1NjaGVkdWxlckNsaWVudCgpIHsgfQorfTsKKworY2xhc3MgQ0NTY2hl
ZHVsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDU2NoZWR1bGVyKTsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1NjaGVkdWxlcj4gY3JlYXRlKENDU2NoZWR1bGVyQ2xp
ZW50KiBjbGllbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDU2NoZWR1
bGVyKGNsaWVudCkpOworICAgIH0KKworICAgIHZvaWQgcmVxdWVzdENvbW1pdCgpOworICAgIHZv
aWQgcmVxdWVzdFJlZHJhdygpOworCisgICAgdm9pZCBkaWRDb21taXQoKTsKKyAgICB2b2lkIGRp
ZERyYXcoKTsKKworICAgIGJvb2wgY29tbWl0UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29t
bWl0UGVuZGluZzsgfQorICAgIGJvb2wgcmVkcmF3UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
cmVkcmF3UGVuZGluZzsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IENDU2NoZWR1bGVyKEND
U2NoZWR1bGVyQ2xpZW50Kik7CisKKyAgICBDQ1NjaGVkdWxlckNsaWVudCogbV9jbGllbnQ7CisK
KyAgICBib29sIG1fY29tbWl0UGVuZGluZzsKKyAgICBib29sIG1fcmVkcmF3UGVuZGluZzsKK307
CisKK30KKworI2VuZGlmIC8vIENDU2NoZWR1bGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAKaW5kZXggMGYwMTVjMGVmMTYwOGY2YmQ2OGEyMDU3ZWM0NTY3N2YxMmQ5
MmM2NC4uZGIwYTBkZWE3MWIwOGVjYTM0NDFjZWU5YzJkZTJiMjM0MmU1ZjU2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lk
IENDU2luZ2xlVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0KCkKICAgICBtX2xheWVyVHJlZUhv
c3QtPmNvbW1pdENvbXBsZXRlKCk7CiB9CiAKLXZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0
TmVlZHNDb21taXRBbmRSZWRyYXcoKQordm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXROZWVk
c0NvbW1pdFRoZW5SZWRyYXcoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQo
KSk7CiAjaWYgIVVTRShUSFJFQURFRF9DT01QT1NJVElORykKQEAgLTE3MSw3ICsxNzEsNyBAQCB2
b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3KCkKIHsKICAgICAvLyBGSVhN
RTogT25jZSB3ZSBtb3ZlIHJlbmRlcl93aWRnZXQgc2NoZWR1bGluZyBpbnRvIHRoaXMgY2xhc3Ms
IHdlIGNhbgogICAgIC8vIHRyZWF0IHJlZHJhdyByZXF1ZXN0cyBtb3JlIGVmZmljaWVudGx5IHRo
YW4gY29tbWl0QW5kUmVkcmF3IHJlcXVlc3RzLgotICAgIHNldE5lZWRzQ29tbWl0QW5kUmVkcmF3
KCk7CisgICAgc2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCk7CiB9CiAKIHZvaWQgQ0NTaW5nbGVU
aHJlYWRQcm94eTo6c3RvcCgpCkBAIC0yMzMsNyArMjMzLDcgQEAgYm9vbCBDQ1NpbmdsZVRocmVh
ZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRJZk5lZWRlZCgpCiAgICAgLy8gaW4gdGhlIGNvbnRleHQt
bG9zdCBtYWNoaW5lcnkuCiAgICAgbV9udW1GYWlsZWRSZWNyZWF0ZUF0dGVtcHRzKys7CiAgICAg
aWYgKG1fbnVtRmFpbGVkUmVjcmVhdGVBdHRlbXB0cyA8IDUpIHsKLSAgICAgICAgc2V0TmVlZHND
b21taXRBbmRSZWRyYXcoKTsKKyAgICAgICAgc2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCBib29sIEND
U2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tcG9zaXRlKCkKICAgICAgICAgICAvLyBhbmQgcmVxdWVz
dCBhIHJlcGFpbnQgeWV0IGFnYWluLgogICAgICAgICAgIG1fZ3JhcGhpY3NDb250ZXh0TG9zdCA9
IHRydWU7CiAgICAgICAgICAgbV9udW1GYWlsZWRSZWNyZWF0ZUF0dGVtcHRzID0gMDsKLSAgICAg
ICAgICBzZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOworICAgICAgICAgIHNldE5lZWRzQ29tbWl0
VGhlblJlZHJhdygpOwogICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggMDIzMWE5Mjg3MzE0MTJjZGNi
OTRmMjFlY2EyMmZhNjEwNjc3NzlkZC4uZDk5MzYxZTcwODAzZWZhZmI5YmQxOGJkMWY4MjkzNmJi
ZmI3MjcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtNDgsNyAr
NDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lk
IGxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQgbnVtVGltZXMpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXROZWVkc0NvbW1pdCgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdEFuZFJlZHJh
dygpOworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcoKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRl
eCA3YWQ0MGMyMWYyZWU4MjA2Yjc1ZjkyNWQ2NGE4YTI3ODUwM2QzM2ZmLi5hNmY5ODk4ZmVlNTcw
MWExNTkyNjhhN2Y4ODkzYmU2OGEyMGU2MGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJj
Yy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ01haW5UaHJlYWRUYXNrLmgiCisj
aW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIK
ICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgpAQCAtNDgsNiArNDksMzMgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXRUaHJlYWQoQ0NUaHJl
YWQqIGNjVGhyZWFkKQogI2VuZGlmCiB9CiAKK2NsYXNzIENDVGhyZWFkUHJveHlTY2hlZHVsZXJD
bGllbnQgOiBwdWJsaWMgQ0NTY2hlZHVsZXJDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ+IGNyZWF0ZShDQ1RocmVhZFBy
b3h5KiBwcm94eSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaHJlYWRQ
cm94eVNjaGVkdWxlckNsaWVudChwcm94eSkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5DQ1RocmVh
ZFByb3h5U2NoZWR1bGVyQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVC
ZWdpbkZyYW1lQW5kQ29tbWl0KCkKKyAgICB7CisgICAgICAgIENDTWFpblRocmVhZDo6cG9zdFRh
c2sobV9wcm94eS0+Y3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkNDVGhyZWFkKCkpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZURyYXdBbmRQcmVzZW50KCkKKyAgICB7
CisgICAgICAgIG1fcHJveHktPmRyYXdMYXllcnNBbmRQcmVzZW50T25DQ1RocmVhZCgpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBDQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50
KENDVGhyZWFkUHJveHkqIHByb3h5KQorICAgIHsKKyAgICAgICAgbV9wcm94eSA9IHByb3h5Owor
ICAgIH0KKworICAgIENDVGhyZWFkUHJveHkqIG1fcHJveHk7Cit9OworCiBQYXNzT3duUHRyPEND
UHJveHk+IENDVGhyZWFkUHJveHk6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhv
c3QpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RocmVhZFByb3h5KGxheWVyVHJlZUhv
c3QpKTsKQEAgLTU5LDkgKzg3LDYgQEAgQ0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94eShDQ0xh
eWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiAgICAgLCBtX3N0YXJ0ZWQoZmFsc2UpCiAgICAg
LCBtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlcigtMSkKICAg
ICAsIG1fbnVtQmVnaW5GcmFtZUFuZENvbW1pdHNJc3N1ZWRPbkNDVGhyZWFkKDApCi0gICAgLCBt
X2JlZ2luRnJhbWVBbmRDb21taXRQZW5kaW5nT25DQ1RocmVhZChmYWxzZSkKLSAgICAsIG1fZHJh
d1Rhc2tQb3N0ZWRPbkNDVGhyZWFkKGZhbHNlKQotICAgICwgbV9yZWRyYXdSZXF1ZXN0ZWRPbkND
VGhyZWFkKGZhbHNlKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpDQ1RocmVh
ZFByb3h5IiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTc2LDYg
KzEwMSw3IEBAIENDVGhyZWFkUHJveHk6On5DQ1RocmVhZFByb3h5KCkKIAogYm9vbCBDQ1RocmVh
ZFByb3h5Ojpjb21wb3NpdGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3Qm
IHJlY3QpCiB7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUFJveHk6OmNvbXBvc2l0ZUFuZFJl
YWRiYWNrIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NF
UlQobV9sYXllclRyZWVIb3N0KTsKIApAQCAtMTQyLDYgKzE2OCw3IEBAIGJvb2wgQ0NUaHJlYWRQ
cm94eTo6aXNTdGFydGVkKCkgY29uc3QKIAogYm9vbCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXpl
TGF5ZXJSZW5kZXJlcigpCiB7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRp
YWxpemVMYXllclJlbmRlcmVyIiwgdGhpcywgMCk7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBjb250ZXh0ID0gbV9sYXllclRyZWVIb3N0LT5jcmVhdGVMYXllclRyZWVIb3N0Q29udGV4
dDNEKCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODMs
MzMgKzIxMCwzNSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0KCkKIAogICAg
IFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCIsIHRoaXMsIDApOwog
ICAgIG1fY29tbWl0UmVxdWVzdGVkID0gdHJ1ZTsKLSAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhj
cmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnVwZGF0ZVNjaGVkdWxlclN0
YXRlT25DQ1RocmVhZCwgbV9jb21taXRSZXF1ZXN0ZWQsIHRydWUpKTsKKyAgICBzX2NjVGhyZWFk
LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldE5l
ZWRzQ29tbWl0T25DQ1RocmVhZCkpOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRz
Q29tbWl0QW5kUmVkcmF3KCkKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRUaGVu
UmVkcmF3KCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChtX2NvbW1p
dFJlcXVlc3RlZCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fY29tbWl0UmVxdWVzdGVkID0gdHJ1
ZTsKKyAgICBtX3JlZHJhd0FmdGVyQ29tbWl0ID0gdHJ1ZTsKKyAgICBzZXROZWVkc0NvbW1pdCgp
OworfQogCi0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0QW5k
UmVkcmF3IiwgdGhpcywgMCk7Ci0gICAgc19jY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJl
YWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojp1cGRhdGVTY2hlZHVsZXJTdGF0ZU9uQ0NUaHJl
YWQsIG1fY29tbWl0UmVxdWVzdGVkLCB0cnVlKSk7Cit2b2lkIENDVGhyZWFkUHJveHk6OnNldE5l
ZWRzQ29tbWl0T25DQ1RocmVhZCgpCit7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAg
ICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRPbkNDVGhyZWFkIiwg
dGhpcywgMCk7CisgICAgbV9zY2hlZHVsZXJPbkNDVGhyZWFkLT5yZXF1ZXN0Q29tbWl0KCk7CiB9
CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXcoKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKG1fY29tbWl0UmVxdWVzdGVkKSAvLyBJbXBsaWVzIHRo
YXQgYSBjb21taXQgaXMgaW4gZmxpZ2h0LgotICAgICAgICByZXR1cm47Ci0gICAgLy8gVW5saWtl
IHNldE5lZWRzQ29tbWl0IHRoYXQgdHJhY2tzIHdoZXRoZXIgYSBjb21taXQgbWVzc2FnZSBoYXMg
YmVlbiBzZW50LAotICAgIC8vIHNldE5lZWRzUmVkcmF3IGFsd2F5cyBzZW5kcyBhIG1lc3NhZ2Ug
dG8gdGhlIGNvbXBvc2l0b3IgdGhyZWFkLiBUaGlzIGlzCi0gICAgLy8gYmVjYXVzZSB0aGUgY29t
cG9zaXRvciB0aHJlYWQgY2FuIGRyYXcgd2l0aG91dCB0ZWxsaW5nIHRoZSBtYWluCi0gICAgLy8g
dGhyZWFkLiBUaGlzIHNob3VsZCBub3QgYmUgbXVjaCBvZiBhIHByb2JsZW0gYmVjYXVzZSBjYWxs
cyB0bwotICAgIC8vIHNldE5lZWRzUmVkcmF3IG1lc3NhZ2VzIGFyZSB1bmNvbW1vbiAob25seSB0
cmlnZ2VyZWQgYnkgV01fUEFJTlQvZXRjKSwKLSAgICAvLyBjb21wYXJlZCB0byBzZXROZWVkc0Nv
bW1pdEFuZFJlZHJhdyBtZXNzYWdlcy4KICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6
c2V0TmVlZHNSZWRyYXciLCB0aGlzLCAwKTsKLSAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVh
dGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnVwZGF0ZVNjaGVkdWxlclN0YXRl
T25DQ1RocmVhZCwgZmFsc2UsIHRydWUpKTsKKyAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVh
dGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3T25DQ1Ro
cmVhZCkpOworfQorCit2b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3T25DQ1RocmVh
ZCgpCit7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXdPbkNDVGhyZWFkIiwgdGhpcywgMCk7CisgICAgbV9z
Y2hlZHVsZXJPbkNDVGhyZWFkLT5yZXF1ZXN0UmVkcmF3KCk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6c3RhcnQoKQpAQCAtMjQ0LDExICsyNzMsMTAgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpm
aW5pc2hBbGxSZW5kZXJpbmdPbkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9u
KQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdP
bkNDVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKLSAgICBB
U1NFUlQoIW1fYmVnaW5GcmFtZUFuZENvbW1pdFBlbmRpbmdPbkNDVGhyZWFkKTsKLSAgICBpZiAo
bV9yZWRyYXdSZXF1ZXN0ZWRPbkNDVGhyZWFkKSB7CisgICAgaWYgKG1fc2NoZWR1bGVyT25DQ1Ro
cmVhZC0+cmVkcmF3UGVuZGluZygpKSB7CiAgICAgICAgIGRyYXdMYXllcnNPbkNDVGhyZWFkKCk7
CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnByZXNlbnQoKTsKLSAgICAgICAgbV9yZWRy
YXdSZXF1ZXN0ZWRPbkNDVGhyZWFkID0gZmFsc2U7CisgICAgICAgIG1fc2NoZWR1bGVyT25DQ1Ro
cmVhZC0+ZGlkRHJhdygpOwogICAgIH0KICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5maW5pc2hB
bGxSZW5kZXJpbmcoKTsKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKQEAgLTI2Niw3ICsyOTQs
NiBAQCBQYXNzT3duUHRyPENDTWFpblRocmVhZDo6VGFzaz4gQ0NUaHJlYWRQcm94eTo6Y3JlYXRl
QmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkNDVAogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFBy
b3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsK
ICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIGRvdWJsZSBmcmFtZUJlZ2luVGltZSA9
IGN1cnJlbnRUaW1lKCk7Ci0gICAgbV9iZWdpbkZyYW1lQW5kQ29tbWl0UGVuZGluZ09uQ0NUaHJl
YWQgPSB0cnVlOwogCiAgICAgLy8gTk9URSwgaXQgaXMgcG9zc2libGUgdG8gcmVjZWlldmUgYSBy
ZXF1ZXN0IGZvciBhCiAgICAgLy8gYmVnaW5GcmFtZUFuZENvbW1pdE9uQ0NUaHJlYWQgZnJvbSBm
aW5pc2hBbGxSZW5kZXJpbmcgd2hpbGUgYQpAQCAtMzI4LDYgKzM1NSwxMCBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUg
ZnJhbWVCZWdpblRpbQogCiAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwog
CisgICAgaWYgKG1fcmVkcmF3QWZ0ZXJDb21taXQpCisgICAgICAgIHNldE5lZWRzUmVkcmF3KCk7
CisgICAgbV9yZWRyYXdBZnRlckNvbW1pdCA9IGZhbHNlOworCiAgICAgQVNTRVJUKG1fbGFzdEV4
ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVyID09IHNlcXVlbmNlTnVtYmVy
KTsKIH0KIApAQCAtMzM1LDggKzM2Niw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6Y29tbWl0T25D
Q1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVO
VCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdE9uQ0NUaHJlYWQiLCB0aGlzLCAw
KTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwotICAgIEFTU0VSVChtX2JlZ2luRnJhbWVB
bmRDb21taXRQZW5kaW5nT25DQ1RocmVhZCk7Ci0gICAgbV9iZWdpbkZyYW1lQW5kQ29tbWl0UGVu
ZGluZ09uQ0NUaHJlYWQgPSBmYWxzZTsKKyAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkNDVGhyZWFk
LT5jb21taXRQZW5kaW5nKCkpOwogICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkgewogICAg
ICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzQ3LDE5ICsz
NzcsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmNvbW1pdE9uQ0NUaHJlYWQoQ0NDb21wbGV0aW9u
RXZlbnQqIGNvbXBsZXRpb24pCiAKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIAotICAgIGlm
IChtX3JlZHJhd1JlcXVlc3RlZE9uQ0NUaHJlYWQpCi0gICAgICAgIHNjaGVkdWxlRHJhd1Rhc2tP
bkNDVGhyZWFkKCk7Ci19Ci0KLXZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVEcmF3VGFza09u
Q0NUaHJlYWQoKQotewotICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgaWYgKG1fZHJh
d1Rhc2tQb3N0ZWRPbkNDVGhyZWFkKQotICAgICAgICByZXR1cm47Ci0gICAgVFJBQ0VfRVZFTlQo
IkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlRHJhd1Rhc2tPbkNDVGhyZWFkIiwgdGhpcywgMCk7Ci0g
ICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9zdEltcGwpOwotICAgIG1fZHJhd1Rhc2tQb3N0ZWRPbkND
VGhyZWFkID0gdHJ1ZTsKLSAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRh
c2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmRyYXdMYXllcnNBbmRQcmVzZW50T25DQ1RocmVhZCkp
OworICAgIG1fc2NoZWR1bGVyT25DQ1RocmVhZC0+ZGlkQ29tbWl0KCk7CiB9CiAKIHZvaWQgQ0NU
aHJlYWRQcm94eTo6ZHJhd0xheWVyc0FuZFByZXNlbnRPbkNDVGhyZWFkKCkKQEAgLTM3MSw4ICsz
ODksNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmRyYXdMYXllcnNBbmRQcmVzZW50T25DQ1RocmVh
ZCgpCiAKICAgICBkcmF3TGF5ZXJzT25DQ1RocmVhZCgpOwogICAgIG1fbGF5ZXJUcmVlSG9zdElt
cGwtPnByZXNlbnQoKTsKLSAgICBtX3JlZHJhd1JlcXVlc3RlZE9uQ0NUaHJlYWQgPSBmYWxzZTsK
LSAgICBtX2RyYXdUYXNrUG9zdGVkT25DQ1RocmVhZCA9IGZhbHNlOworICAgIG1fc2NoZWR1bGVy
T25DQ1RocmVhZC0+ZGlkRHJhdygpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmRyYXdMYXll
cnNPbkNDVGhyZWFkKCkKQEAgLTM4NSwzMCArNDAyLDEzIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6
ZHJhd0xheWVyc09uQ0NUaHJlYWQoKQogICAgIEFTU0VSVCghbV9sYXllclRyZWVIb3N0SW1wbC0+
aXNDb250ZXh0TG9zdCgpKTsKIH0KIAotdm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVTY2hlZHVs
ZXJTdGF0ZU9uQ0NUaHJlYWQoYm9vbCBjb21taXRSZXF1ZXN0ZWQsIGJvb2wgcmVkcmF3UmVxdWVz
dGVkKQotewotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojp1cGRhdGVTY2hlZHVsZXJT
dGF0ZU9uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKLSAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwot
ICAgIEFTU0VSVChtX2xheWVyVHJlZUhvc3RJbXBsKTsKLQotICAgIC8vIEZJWE1FOiB1c2UgQ0NT
Y2hlZHVsZXIgdG8gZGVjaWRlIHdoZW4gdG8gbWFuYWdlIHRoZSBjb252ZXJzaW9uIG9mIHRoaXMK
LSAgICAvLyBjb21taXQgcmVxdWVzdCBpbnRvIGFuIGFjdHVhbCBjcmVhdGVCZWdpbkZyYW1lQW5k
Q29tbWl0VGFza09uQ0NUaHJlYWQgY2FsbC4KLSAgICBtX3JlZHJhd1JlcXVlc3RlZE9uQ0NUaHJl
YWQgfD0gcmVkcmF3UmVxdWVzdGVkOwotICAgIGlmIChjb21taXRSZXF1ZXN0ZWQgJiYgIW1fYmVn
aW5GcmFtZUFuZENvbW1pdFBlbmRpbmdPbkNDVGhyZWFkKSB7Ci0gICAgICAgIENDTWFpblRocmVh
ZDo6cG9zdFRhc2soY3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkNDVGhyZWFkKCkpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gSWYgbm8gY29tbWl0IGlzIHBlbmRpbmcs
IGJ1dCBhIHJlZHJhdyBpcyByZXF1ZXN0ZWQsIHRoZW4gcG9zdCBhIHJlZHJhdyByaWdodCBhd2F5
Ci0gICAgaWYgKG1fcmVkcmF3UmVxdWVzdGVkT25DQ1RocmVhZCkKLSAgICAgICAgc2NoZWR1bGVE
cmF3VGFza09uQ0NUaHJlYWQoKTsKLX0KLQogdm9pZCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXpl
SW1wbE9uQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7CiAgICAgVFJB
Q0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVJbXBsT25DQ1RocmVhZCIsIHRoaXMs
IDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgbV9sYXllclRyZWVIb3N0SW1w
bCA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoKTsKKyAgICBtX3Nj
aGVkdWxlckNsaWVudE9uQ0NUaHJlYWQgPSBDQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50Ojpj
cmVhdGUodGhpcyk7CisgICAgbV9zY2hlZHVsZXJPbkNDVGhyZWFkID0gQ0NTY2hlZHVsZXI6OmNy
ZWF0ZShtX3NjaGVkdWxlckNsaWVudE9uQ0NUaHJlYWQuZ2V0KCkpOwogICAgIGNvbXBsZXRpb24t
PnNpZ25hbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggMzdkNDczYmVlMzZk
OGQxNWQ2YTRkMDcwNjgyZDUxMWM0YWQxZDU4Ny4uMzJjOWY2ZGNlMDZkOWM0YzM4YTAzNTQ2MjQw
NmIxNjJkYzM3OGI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtMzQsOSArMzQsMTIg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllclRyZWVIb3N0OworY2xhc3Mg
Q0NTY2hlZHVsZXI7CiBjbGFzcyBDQ1RocmVhZDsKK2NsYXNzIENDVGhyZWFkUHJveHlTY2hlZHVs
ZXJDbGllbnQ7CiAKIGNsYXNzIENDVGhyZWFkUHJveHkgOiBwdWJsaWMgQ0NQcm94eSB7CisgICAg
ZnJpZW5kIGNsYXNzIENDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ7CiBwdWJsaWM6CiAgICAg
c3RhdGljIHZvaWQgc2V0VGhyZWFkKENDVGhyZWFkKik7CiAKQEAgLTUzLDcgKzU2LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJS
ZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBsb3NlQ29tcG9z
aXRvckNvbnRleHQoaW50IG51bVRpbWVzKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21t
aXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldE5lZWRzUmVkcmF3KCk7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAgICAgdmlydHVh
bCB2b2lkIHN0b3AoKTsKQEAgLTc1LDEyICs3OCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5p
dGlhbGl6ZUltcGxPbkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBpbml0
aWFsaXplTGF5ZXJSZW5kZXJlck9uQ0NUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ0NvbXBs
ZXRpb25FdmVudCosIGJvb2wqIGluaXRpYWxpemVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMqKTsKICAgICB2b2lkIHNldE5lZWRzQ29tbWl0T25DQ1RocmVhZCgpOwotICAgIHZv
aWQgdXBkYXRlU2NoZWR1bGVyU3RhdGVPbkNDVGhyZWFkKGJvb2wgY29tbWl0UmVxdWVzdGVkLCBi
b29sIHJlZHJhd1JlcXVlc3RlZCk7CisgICAgdm9pZCBzZXROZWVkc1JlZHJhd09uQ0NUaHJlYWQo
KTsKKyAgICB2b2lkIHNldE5lZWRzQ29tbWl0VGhlblJlZHJhd09uQ0NUaHJlYWQoKTsKICAgICB2
b2lkIGxheWVyVHJlZUhvc3RDbG9zZWRPbkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7Ci0g
ICAgdm9pZCBzY2hlZHVsZURyYXdUYXNrT25DQ1RocmVhZCgpOwogCiAgICAgLy8gQWNjZXNzZWQg
b24gbWFpbiB0aHJlYWQgb25seS4KICAgICBib29sIG1fY29tbWl0UmVxdWVzdGVkOworICAgIGJv
b2wgbV9yZWRyYXdBZnRlckNvbW1pdDsKICAgICBDQ0xheWVyVHJlZUhvc3QqIG1fbGF5ZXJUcmVl
SG9zdDsKICAgICBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzIG1fbGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllc01haW5UaHJlYWRDb3B5OwogICAgIGJvb2wgbV9zdGFydGVkOwpAQCAtODksOSArOTMs
OSBAQCBwcml2YXRlOgogICAgIC8vIFVzZWQgb24gdGhlIENDVGhyZWFkIG9ubHkKICAgICBPd25Q
dHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbV9sYXllclRyZWVIb3N0SW1wbDsKICAgICBpbnQgbV9u
dW1CZWdpbkZyYW1lQW5kQ29tbWl0c0lzc3VlZE9uQ0NUaHJlYWQ7Ci0gICAgYm9vbCBtX2JlZ2lu
RnJhbWVBbmRDb21taXRQZW5kaW5nT25DQ1RocmVhZDsKLSAgICBib29sIG1fZHJhd1Rhc2tQb3N0
ZWRPbkNDVGhyZWFkOwotICAgIGJvb2wgbV9yZWRyYXdSZXF1ZXN0ZWRPbkNDVGhyZWFkOworCisg
ICAgT3duUHRyPENDU2NoZWR1bGVyPiBtX3NjaGVkdWxlck9uQ0NUaHJlYWQ7CisgICAgT3duUHRy
PENDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ+IG1fc2NoZWR1bGVyQ2xpZW50T25DQ1RocmVh
ZDsKIAogICAgIHN0YXRpYyBDQ1RocmVhZCogc19jY1RocmVhZDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGVlOGM1ZTdmN2IwZWE3NzA2Y2MzNjMzMGY3MmQwNTE2YmFhMmVlMTMu
LjM1OTFiZmY2YjU0MzUxOGRkNDRiNTdmZjRlMDFiM2Q0MGRkY2UwNWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzAgQEAKIDIwMTEtMTAtMDMgIEphbWVzIFJvYmluc29u
ICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbY2hyb21pdW1dIEV4dHJhY3Qgc2No
ZWR1bGluZyBsb2dpYyBmcm9tIENDVGhyZWFkUHJveHkgdG8gaXRzIG93biBjbGFzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwNDkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHNvbWUgdW5pdCB0
ZXN0cyBmb3IgdGhlIG5ldyBDQ1NjaGVkdWxlciBjbGFzcy4gU2luY2UgdGhlIGNsYXNzIGlzIHZl
cnkgc2ltcGxlIHRvZGF5LCB0aGUgdGVzdHMgYXJlCisgICAgICAgIHNpbWlsYXJseSBxdWl0ZSBz
aW1wbGUuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Um9vdExheWVyTmVlZHNE
aXNwbGF5KToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAg
ICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdDo6cG9zdFNldE5lZWRzQ29tbWl0VGhlblJlZHJh
d1RvTWFpblRocmVhZCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRpc3Bh
dGNoU2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVI
b3N0VGVzdFNob3J0bGl2ZWQyOjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJl
ZUhvc3RUZXN0Q29tbWl0aW5nV2l0aENvbnRpbnVvdXNSZWRyYXc6OmJlZ2luVGVzdCk6CisgICAg
ICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RDb21taXRpbmdXaXRoQ29udGludW91c1JlZHJh
dzo6ZHJhd0xheWVyc09uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RU
ZXN0U2V0TmVlZHNDb21taXQxOjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJl
ZUhvc3RUZXN0U2V0TmVlZHNDb21taXQyOjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xh
eWVyVHJlZUhvc3RUZXN0U2V0TmVlZHNDb21taXQyOjpkcmF3TGF5ZXJzT25DQ1RocmVhZCk6Cisg
ICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTZXROZWVkc1JlZHJhdzo6YmVnaW5UZXN0
KToKKyAgICAgICAgKiB0ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwOiBBZGRlZC4KKworMjAxMS0x
MC0wMyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtj
aHJvbWl1bV0gQWRkIFdlYldpZGdldCBBUEkgZm9yIGFjY2Vzc2luZyB0aGUgY3VycmVudCBXZWJD
b21wb3NpdG9yCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02OTE4MQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBp
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBkNWJlNzE3MjI2MDRk
YTE1MGRmYWZkOTJmMjBiMmY0YmZlZDQ1YTBkLi43ZDVhZjZjMDMwYjQ0ZTM4ZDUzMTE5MWE2MTdi
YzkzMjdkMDA1NGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTU1LDggKzU1
LDkgQEAKICAgICAgICAgICAgICd0ZXN0cy9BcmVuYVRlc3RIZWxwZXJzLmgnLAogICAgICAgICAg
ICAgJ3Rlc3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvQ0NMYXllclNvcnRlclRlc3QuY3BwJywKLSAgICAgICAgICAgICd0ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCcsCisg
ICAgICAgICAgICAndGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvQ0NUaHJlYWRUYXNrVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDVGhyZWFkVGVz
dC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggOGEyNjJi
ODg4ZGM4NmZjZGI4ZjRjNjg0Nzc2OGYzMDcxODYzZGY2Yy4uZDllZmM2ZDg1M2Q3NTk4YTdhYWYx
ZmNjZTQ3NzhmMWMyZGVkYTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcApAQCAtMjU3NCw3ICsyNTc0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9v
dExheWVyTmVlZHNEaXNwbGF5KCkKICAgICB9CiAjaWYgVVNFKFRIUkVBREVEX0NPTVBPU0lUSU5H
KQogICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0
TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXROZWVk
c0NvbW1pdFRoZW5SZWRyYXcoKTsKICNlbHNlCiAgICAgbV9jbGllbnQtPnNjaGVkdWxlQ29tcG9z
aXRlKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDExNWE0NjYxMjdkNWQ1MmE0OTZiODc1ODNkMjVi
NGYxOGNmYTdjOGYuLjY1NmQ4ZDY2NGFmOGQxYWY3MWY5YTdlODJlMzE5ZGU2NjRiYzNiZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcApAQCAtMTk3LDkgKzE5Nyw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZW5kVGVzdCgp
OwogCi0gICAgdm9pZCBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKQorICAgIHZvaWQg
cG9zdFNldE5lZWRzQ29tbWl0VGhlblJlZHJhd1RvTWFpblRocmVhZCgpCiAgICAgewotICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKENDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRpc3BhdGNoU2V0TmVlZHND
b21taXQsIHRoaXMpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKENDTGF5ZXJUcmVlSG9zdFRl
c3Q6OmRpc3BhdGNoU2V0TmVlZHNDb21taXRUaGVuUmVkcmF3LCB0aGlzKTsKICAgICB9CiAKICAg
ICB2b2lkIHBvc3RTZXROZWVkc1JlZHJhd1RvTWFpblRocmVhZCgpCkBAIC0yMzksMTMgKzIzOSwx
MyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHRlc3QtPm1fbGF5ZXJUcmVlSG9zdC5jbGVhcigpOwog
ICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoU2V0TmVlZHNDb21taXQodm9pZCogc2Vs
ZikKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFNldE5lZWRzQ29tbWl0VGhlblJlZHJhdyh2b2lk
KiBzZWxmKQogICAgIHsKICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICBDQ0xh
eWVyVHJlZUhvc3RUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8Q0NMYXllclRyZWVIb3N0VGVzdCo+
KHNlbGYpOwogICAgICAgQVNTRVJUKHRlc3QpOwogICAgICAgaWYgKHRlc3QtPm1fbGF5ZXJUcmVl
SG9zdCkKLSAgICAgICAgICB0ZXN0LT5tX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0QW5k
UmVkcmF3KCk7CisgICAgICAgICAgdGVzdC0+bV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1p
dFRoZW5SZWRyYXcoKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFNldE5lZWRz
UmVkcmF3KHZvaWQqIHNlbGYpCkBAIC0zNjQsNyArMzY0LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGJlZ2luVGVzdCgpCiAgICAgewotICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRU
b01haW5UaHJlYWQoKTsKKyAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VGhlblJlZHJhd1RvTWFp
blRocmVhZCgpOwogICAgICAgICBlbmRUZXN0KCk7CiAgICAgfQogCkBAIC00MDgsNyArNDA4LDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCiAgICAgewotICAgICAg
ICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKKyAgICAgICAgcG9zdFNldE5lZWRz
Q29tbWl0VGhlblJlZHJhd1RvTWFpblRocmVhZCgpOwogICAgICAgICBlbmRUZXN0KCk7CiAgICAg
fQogCkBAIC00MjIsNyArNDIyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5
ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikKICAgICB7CiAgICAgICAgIGlmICht
X251bURyYXdzID09IDEpCi0gICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFk
KCk7CisgICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VGhlblJlZHJhd1RvTWFpblRocmVhZCgp
OwogICAgICAgICBtX251bURyYXdzKys7CiAgICAgICAgIHBvc3RTZXROZWVkc1JlZHJhd1RvTWFp
blRocmVhZCgpOwogICAgIH0KQEAgLTQ1Miw4ICs0NTIsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgYmVnaW5UZXN0KCkKICAgICB7Ci0gICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRv
TWFpblRocmVhZCgpOwotICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsK
KyAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VGhlblJlZHJhd1RvTWFpblRocmVhZCgpOworICAg
ICAgICBwb3N0U2V0TmVlZHNDb21taXRUaGVuUmVkcmF3VG9NYWluVGhyZWFkKCk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdElt
cGwqIGltcGwpCkBAIC00OTUsMTMgKzQ5NSwxMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5UZXN0KCkKICAgICB7Ci0gICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRo
cmVhZCgpOworICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUaGVuUmVkcmF3VG9NYWluVGhyZWFk
KCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5
ZXJUcmVlSG9zdEltcGwqIGltcGwpCiAgICAgewogICAgICAgICBpZiAoIWltcGwtPnNvdXJjZUZy
YW1lTnVtYmVyKCkpCi0gICAgICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQo
KTsKKyAgICAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRoZW5SZWRyYXdUb01haW5UaHJlYWQo
KTsKICAgICAgICAgZWxzZSBpZiAoaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSA9PSAxKQogICAg
ICAgICAgICAgZW5kVGVzdCgpOwogICAgIH0KQEAgLTUzOCw3ICs1MzgsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKICAgICB7Ci0gICAgICAgIHBvc3RTZXROZWVk
c0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUaGVuUmVk
cmF3VG9NYWluVGhyZWFkKCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNP
bkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpCkBAIC01ODYsNyArNTg2LDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIoKS0+c2V0
TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkpOwogICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPnJvb3RMYXllcigpLT5zZXRTY3JvbGxQb3NpdGlvbihtX2luaXRpYWxTY3JvbGwpOwot
ICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKKyAgICAgICAgcG9zdFNl
dE5lZWRzQ29tbWl0VGhlblJlZHJhd1RvTWFpblRocmVhZCgpOwogICAgIH0KIAogICAgIHZpcnR1
YWwgdm9pZCBiZWdpbkNvbW1pdE9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkK
QEAgLTYxMiw3ICs2MTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChpbXBsLT5mcmFtZU51bWJl
cigpID09IDEpIHsKICAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxQb3NpdGlvbigp
LCBtX2luaXRpYWxTY3JvbGwpOwogICAgICAgICAgICAgRVhQRUNUX0VRKHJvb3QtPnNjcm9sbERl
bHRhKCksIG1fc2Nyb2xsQW1vdW50KTsKLSAgICAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRv
TWFpblRocmVhZCgpOworICAgICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VGhlblJlZHJhd1Rv
TWFpblRocmVhZCgpOwogICAgICAgICB9IGVsc2UgaWYgKGltcGwtPmZyYW1lTnVtYmVyKCkgPT0g
MikgewogICAgICAgICAgICAgRVhQRUNUX0VRKHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIG1fc2Vj
b25kU2Nyb2xsKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxEZWx0YSgpLCBt
X3Njcm9sbEFtb3VudCk7CkBAIC02NTUsNyArNjU1LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIoKS0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50
U2l6ZSgxMDAsIDEwMCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnJvb3RMYXllcigpLT5z
ZXRTY3JvbGxQb3NpdGlvbihtX2luaXRpYWxTY3JvbGwpOwotICAgICAgICBwb3N0U2V0TmVlZHND
b21taXRUb01haW5UaHJlYWQoKTsKKyAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VGhlblJlZHJh
d1RvTWFpblRocmVhZCgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNvbW1pdE9u
Q0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKQEAgLTY4Niw3ICs2ODYsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xsRGVsdGEoKSwgbV9zY3Jv
bGxBbW91bnQgKyBtX3Njcm9sbEFtb3VudCk7CiAKICAgICAgICAgICAgIEVYUEVDVF9FUShyb290
LT5zY3JvbGxQb3NpdGlvbigpLCBtX2luaXRpYWxTY3JvbGwpOwotICAgICAgICAgICAgcG9zdFNl
dE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAgICAgICAgICBwb3N0U2V0TmVlZHNDb21t
aXRUaGVuUmVkcmF3VG9NYWluVGhyZWFkKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoaW1wbC0+ZnJh
bWVOdW1iZXIoKSA9PSAzKSB7CiAgICAgICAgICAgICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xsRGVs
dGEoKSwgSW50U2l6ZSgpKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxQb3Np
dGlvbigpLCBtX2luaXRpYWxTY3JvbGwgKyBtX3Njcm9sbEFtb3VudCArIG1fc2Nyb2xsQW1vdW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hNjZkZGM0NmEyNDdiNjRlODRkOTliNjNhMDIxMWVmNmU3NDI0NTM5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxl
clRlc3QuY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgImNjL0NDU2NoZWR1bGVyLmgiCisKKyNpbmNsdWRlIDxnbW9jay9n
bW9jay5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5o
PgorCit1c2luZyBuYW1lc3BhY2UgV1RGOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSB7CisKK2NsYXNzIE1vY2tDQ1NjaGVkdWxlckNsaWVudCA6IHB1YmxpYyBDQ1NjaGVk
dWxlckNsaWVudCB7CitwdWJsaWM6CisgICAgTU9DS19NRVRIT0QwKHNjaGVkdWxlQmVnaW5GcmFt
ZUFuZENvbW1pdCwgdm9pZCgpKTsKKyAgICBNT0NLX01FVEhPRDAoc2NoZWR1bGVEcmF3QW5kUHJl
c2VudCwgdm9pZCgpKTsKK307CisKK2NsYXNzIENDU2NoZWR1bGVyVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICBDQ1NjaGVkdWxlclRlc3QoKQorICAgICAgICA6IG1f
Y2xpZW50KGFkb3B0UHRyKG5ldyBNb2NrQ0NTY2hlZHVsZXJDbGllbnQpKQorICAgICAgICAsIG1f
c2NoZWR1bGVyKENDU2NoZWR1bGVyOjpjcmVhdGUobV9jbGllbnQuZ2V0KCkpKQorICAgIHsKKyAg
ICAgICAgRVhQRUNUX0NBTEwoKm1fY2xpZW50LCBzY2hlZHVsZUJlZ2luRnJhbWVBbmRDb21taXQo
KSkuVGltZXMoMCk7CisgICAgICAgIEVYUEVDVF9DQUxMKCptX2NsaWVudCwgc2NoZWR1bGVEcmF3
QW5kUHJlc2VudCgpKS5UaW1lcygwKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBPd25QdHI8
TW9ja0NDU2NoZWR1bGVyQ2xpZW50PiBtX2NsaWVudDsKKyAgICBPd25QdHI8Q0NTY2hlZHVsZXI+
IG1fc2NoZWR1bGVyOworfTsKKworVEVTVF9GKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1p
dCkKK3sKKyAgICBFWFBFQ1RfQ0FMTCgqbV9jbGllbnQsIHNjaGVkdWxlQmVnaW5GcmFtZUFuZENv
bW1pdCgpKS5UaW1lcygxKTsKKyAgICBtX3NjaGVkdWxlci0+cmVxdWVzdENvbW1pdCgpOworfQor
CitURVNUX0YoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0VHdpY2VCZWZvcmVDb21taXQp
Cit7CisgICAgRVhQRUNUX0NBTEwoKm1fY2xpZW50LCBzY2hlZHVsZUJlZ2luRnJhbWVBbmRDb21t
aXQoKSkuVGltZXMoMSk7CisgICAgbV9zY2hlZHVsZXItPnJlcXVlc3RDb21taXQoKTsKKyAgICBt
X3NjaGVkdWxlci0+cmVxdWVzdENvbW1pdCgpOworCisgICAgRVhQRUNUX0NBTEwoKm1fY2xpZW50
LCBzY2hlZHVsZUJlZ2luRnJhbWVBbmRDb21taXQoKSkuVGltZXMoMSk7CisgICAgbV9zY2hlZHVs
ZXItPmRpZENvbW1pdCgpOworICAgIG1fc2NoZWR1bGVyLT5yZXF1ZXN0Q29tbWl0KCk7Cit9CisK
K1RFU1RfRihDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RSZWRyYXcpCit7CisgICAgRVhQRUNUX0NB
TEwoKm1fY2xpZW50LCBzY2hlZHVsZURyYXdBbmRQcmVzZW50KCkpLlRpbWVzKDEpOworICAgIG1f
c2NoZWR1bGVyLT5yZXF1ZXN0UmVkcmF3KCk7Cit9CisKK30KKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>