<?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>92108</bug_id>
          
          <creation_ts>2012-07-24 06:02:22 -0700</creation_ts>
          <short_desc>Web Inspector: Resource agent&apos;s reference to cached resources should be weak.</short_desc>
          <delta_ts>2012-07-30 08:59:10 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>92356</dependson>
    
    <dependson>92628</dependson>
    
    <dependson>92632</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>cdumez</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>philn</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>676726</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-07-24 06:02:22 -0700</bug_when>
    <thetext>Patch to follow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676779</commentid>
    <comment_count>1</comment_count>
      <attachid>154051</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-07-24 07:07:04 -0700</bug_when>
    <thetext>Created attachment 154051
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677835</commentid>
    <comment_count>2</comment_count>
      <attachid>154051</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-25 02:33:15 -0700</bug_when>
    <thetext>Comment on attachment 154051
Patch

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

This change looks like a hack both from the API and implementation standpoint. Is there a way to implement it in a more elegant manner?

&gt; Source/WebCore/inspector/Inspector.json:871
&gt; +                    { &quot;name&quot;: &quot;resourceId&quot;, &quot;$ref&quot;: &quot;Page.ResourceId&quot;, &quot;description&quot;: &quot;Identifier of the relevant resource.&quot; },

I don&apos;t think we should introduce resourceId concept. Why is requestId not sufficient in the API?

&gt; Source/WebCore/inspector/InspectorController.cpp:186
&gt; +    InspectorInstrumentation::inspectedPageDestroyed(m_instrumentingAgents.get());

This is very strange - InspectorController has pointers to agents explicitly as well as to m_instrumentingAgents. Why does it use InspectorInstrumentation ?

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:854
&gt; +    if (!cachedResourceToAgentsMap || !cachedResourceToAgentsMap-&gt;contains(cachedResource))

InspectorInstrumentation is just a dispatch, it should not have logic like this.

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:1167
&gt; +void InspectorInstrumentation::inspectedPageDestroyed(InstrumentingAgents* instrumentingAgents)

ditto

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:960
&gt; +        InspectorInstrumentation::addInstrumentingAgentsForCachedResource(cachedResource, m_instrumentingAgents);

This looks like a hack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678033</commentid>
    <comment_count>3</comment_count>
      <attachid>154351</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-07-25 07:37:51 -0700</bug_when>
    <thetext>Created attachment 154351
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678060</commentid>
    <comment_count>4</comment_count>
      <attachid>154351</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-07-25 08:14:47 -0700</bug_when>
    <thetext>Comment on attachment 154351
Patch

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

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:1160
&gt; +void InspectorInstrumentation::registerInstrumentingAgents(InstrumentingAgents* instrumentingAgents)

Why not iterate through all pages (see allPages in Page.cpp) and get InstrumentingAgents from Page instead of introducing a HashSet of all InstrumentingAgents instances?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678067</commentid>
    <comment_count>5</comment_count>
      <attachid>154351</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-07-25 08:20:09 -0700</bug_when>
    <thetext>Comment on attachment 154351
Patch

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

&gt; Source/WebCore/inspector/InspectorInstrumentation.h:98
&gt; +    friend class InspectorController;

I&apos;d rather make (un)registerInstrumentingAgents methods public instead of adding friend class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678074</commentid>
    <comment_count>6</comment_count>
      <attachid>154351</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-25 08:24:41 -0700</bug_when>
    <thetext>Comment on attachment 154351
Patch

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

How do we test this?

&gt; Source/WebCore/loader/cache/CachedResource.cpp:434
&gt; +    if (!deleteIfPossible() &amp;&amp; !hasClients() &amp;&amp; inCache()) {

bool deleted = ...

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:816
&gt; +        if (!res-&gt;deleteIfPossible() &amp;&amp; res-&gt;preloadResult() == CachedResource::PreloadNotReferenced)

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679042</commentid>
    <comment_count>7</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-07-26 01:48:26 -0700</bug_when>
    <thetext>Committed r123715: &lt;http://trac.webkit.org/changeset/123715&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679080</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-26 02:23:01 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 92356</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679087</commentid>
    <comment_count>9</comment_count>
      <attachid>154590</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-07-26 02:34:42 -0700</bug_when>
    <thetext>Created attachment 154590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679266</commentid>
    <comment_count>10</comment_count>
      <attachid>154590</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-07-26 06:35:17 -0700</bug_when>
    <thetext>Comment on attachment 154590
Patch

Attachment 154590 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13351684</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679740</commentid>
    <comment_count>11</comment_count>
      <attachid>154590</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-26 14:04:44 -0700</bug_when>
    <thetext>Comment on attachment 154590
Patch

Attachment 154590 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13349985</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680279</commentid>
    <comment_count>12</comment_count>
      <attachid>154874</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-07-27 01:20:31 -0700</bug_when>
    <thetext>Created attachment 154874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680622</commentid>
    <comment_count>13</comment_count>
      <attachid>154351</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-27 07:32:09 -0700</bug_when>
    <thetext>Comment on attachment 154351
Patch

Cleared Pavel Feldman&apos;s review+ from obsolete attachment 154351 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680676</commentid>
    <comment_count>14</comment_count>
      <attachid>154874</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-07-27 08:26:50 -0700</bug_when>
    <thetext>Comment on attachment 154874
Patch

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

&gt; Source/WebCore/inspector/NetworkResourcesData.h:97
&gt; +        size_t dataLength() const;
&gt; +        void appendData(const char* data, size_t dataLength);
&gt; +        size_t decodeDataToContent();

All these int =&gt; size_t chanegs should be done in a seperate change. It has nothing to do with making the resources weak, it is just noise here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681116</commentid>
    <comment_count>15</comment_count>
      <attachid>154874</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-27 14:52:51 -0700</bug_when>
    <thetext>Comment on attachment 154874
Patch

Attachment 154874 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13372702</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681577</commentid>
    <comment_count>16</comment_count>
      <attachid>155178</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-07-29 13:02:36 -0700</bug_when>
    <thetext>Created attachment 155178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681751</commentid>
    <comment_count>17</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-07-30 00:55:16 -0700</bug_when>
    <thetext>Committed r124000: &lt;http://trac.webkit.org/changeset/124000&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681852</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-30 04:20:04 -0700</bug_when>
    <thetext>This patch appears to cause crashes at least on EFL port. I opened Bug 92628 to address it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681853</commentid>
    <comment_count>19</comment_count>
      <attachid>155178</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-30 04:21:28 -0700</bug_when>
    <thetext>Comment on attachment 155178
Patch

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

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:1173
&gt; +        delete instrumentingAgentsSet;

I believe we should reset instrumentingAgentsSet to 0 after calling delete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681870</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-30 04:42:06 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 92632</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682062</commentid>
    <comment_count>21</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-07-30 08:59:10 -0700</bug_when>
    <thetext>Committed r124032: &lt;http://trac.webkit.org/changeset/124032&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154051</attachid>
            <date>2012-07-24 07:07:04 -0700</date>
            <delta_ts>2012-07-25 07:37:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92108-20120724180654.patch</filename>
            <type>text/plain</type>
            <size>54028</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDkyN2JlOGU1MTM0ZTkx
NTUzMDZhM2E4YzZlMzk0NTk4ZDEwOGIyNy4uMThjZjAxZGQ1M2RkN2E2ODhhYjg3NzE3MTg2ZDE2
ODBmZTk3MGQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDEyLTA3LTI0ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJlc291cmNlIGFnZW50J3MgcmVmZXJlbmNlIHRvIGNhY2hlZCByZXNvdXJjZXMgc2hvdWxk
IGJlIHdlYWssIGRlc3Ryb3llZCByZXNvdXJjZXMgc2hvdWxkIGJlIHJlbW92ZWQgZnJvbSBmcm9u
dC1lbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MjEwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5l
dHdvcmtSZXNvdXJjZXNEYXRhIG5vdyBzdG9yZXMgYSByYXcgcG9pbnRlciB0byBDYWNoZWRSZXNv
dXJjZS4KKyAgICAgICAgQ2FjaGVkUmVzb3VyY2Ugbm93IG5vdGlmaWVzIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbiB0aGF0IGl0IHdpbGwgYmUgZGVzdHJveWVkLgorICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24gc3RvcmVzIGEgbWFwIGZyb20gQ2FjaGVkUmVzb3VyY2UgdG8gYSBzZXQg
b2YgSW5zdHJ1bWVudGluZ0FnZW50cyB0byBub3RpZnkgcGFnZSBhbmQgcmVzb3VyY2UgYWdlbnQg
dGhhdCByZXNvdXJjZSB3aWxsIGJlIGRlc3Ryb3llZC4KKyAgICAgICAgRGVzdHJveWVkIHJlc291
cmNlcyBjb250ZW50IGlzIHNhdmVkIHRvIE5ldHdvcmtSZXNvdXJjZXNEYXRhLgorICAgICAgICBD
aGFuZ2VkIGNvbnRlbnQgc2l6ZSB2YXJpYWJsZXMgdHlwZSBpbiBOZXR3b3JrUmVzb3VyY2VzRGF0
YSBmcm9tIGludCB0byB1bnNpZ25lZCBsb25nIGxvbmcuCisgICAgICAgIERlc3Ryb3llZCByZXNv
dXJjZXMgYXJlIHJlbW92ZWQgZnJvbSBSZXNvdXJjZXNQYW5lbC4KKyAgICAgICAgRHJpdmUtYnk6
IHJlbW92ZWQgdW51c2VkIG1ldGhvZCBmcm9tIE5ldHdvcmtQYW5lbC4KKworICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjppbnNw
ZWN0ZWRQYWdlRGVzdHJveWVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlSW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RlZFBhZ2VE
ZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjph
ZGRJbnN0cnVtZW50aW5nQWdlbnRzRm9yQ2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlSWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OndpbGxEZXN0cm95Q2FjaGVkUmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdEZv
ckZyYW1lVHJlZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmFkZENhY2hlZFJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmdldFJlc3BvbnNl
Qm9keSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAg
ICAgICAgKEluc3BlY3RvclJlc291cmNlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6c2V0Q29udGVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFw
cGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6c2V0UmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZW1vdmVDYWNoZWRSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpzZXRSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0cyk6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6ZW5zdXJlRnJlZVNwYWNlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFJlc291cmNlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpiYXNlNjRF
bmNvZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OmNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKE5ldHdvcmtSZXNvdXJjZXNEYXRhKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRjaGVyLnByb3RvdHlwZS5yZXF1ZXN0V2lsbEJl
U2VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90eXBl
LnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRj
aGVyLnByb3RvdHlwZS5yZXF1ZXN0U2VydmVkRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL05ldHdvcmtSZXF1ZXN0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdv
cmtSZXF1ZXN0LnByb3RvdHlwZS5nZXQgcmVzb3VyY2VJZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBlLnNldCByZXNvdXJjZUlkKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlLnByb3RvdHlwZS5nZXQgcmVzb3VyY2VJZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UucHJvdG90eXBlLnNldCByZXNvdXJjZUlkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5fcmVzb3VyY2VEZXN0cm95ZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5fYWRkRnJhbWVzUmVjdXJz
aXZlbHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lLnByb3RvdHlw
ZS5fYWRkUmVxdWVzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWUu
cHJvdG90eXBlLl9yZW1vdmVSZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUGFnZURp
c3BhdGNoZXIucHJvdG90eXBlLmZyYW1lRGV0YWNoZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlBhZ2VEaXNwYXRjaGVyLnByb3RvdHlwZS5yZXNvdXJjZURlc3Ryb3llZCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuX3Jlc291cmNlUmVtb3ZlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlUmVzb3VyY2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5
cGUub25kZXRhY2gpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvdHJlZW91dGxpbmUu
anM6CisgICAgICAgIChUcmVlRWxlbWVudC5wcm90b3R5cGUuX2RldGFjaCk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlOjp+Q2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2U6OnJlbW92ZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
ZGVsZXRlSWZQb3NzaWJsZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
Lmg6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
TG9hZGVyOjpjbGVhclByZWxvYWRzKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmV2aWN0KToKKwogMjAxMi0w
Ny0yMyAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyIHNob3VsZCBza2lwIGFuIGVtcHR5IGluc2VydGlvbiBwb2ludHMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggNzE3NmFiYjhjNmMz
Y2QzYWMwYWUyZGM2MTQ3MGFmZjI1N2YxNzBkMi4uYmFkNmZlZDdlYjAyMjAwN2RkZDk4YzcyNjll
YTUyZGY4MGFjMzAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpA
QCAtMTI2LDYgKzEyNiwxMiBAQAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCiAgICAg
ICAgICAgICB9LAogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJpZCI6ICJSZXNvdXJj
ZUlkIiwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgcmVzb3VyY2UgaWRlbnRpZmllci4iLAorICAgICAgICAg
ICAgICAgICJoaWRkZW4iOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICJpZCI6ICJGcmFtZVJlc291cmNlVHJlZSIsCiAgICAgICAgICAgICAgICAg
InR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSW5mb3Jt
YXRpb24gYWJvdXQgdGhlIEZyYW1lIGhpZXJhcmNoeSBhbG9uZyB3aXRoIHRoZWlyIGNhY2hlZCBy
ZXNvdXJjZXMuIiwKQEAgLTEzNyw2ICsxNDMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByb3Bl
cnRpZXMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJs
IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlJlc291cmNlIFVSTC4iIH0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzb3VyY2VJZCIsICIk
cmVmIjogIlJlc291cmNlSWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBvZiB0aGUgcmVs
ZXZhbnQgcmVzb3VyY2UuIiB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInR5cGUiLCAiJHJlZiI6ICJSZXNvdXJjZVR5cGUiLCAiZGVzY3JpcHRpb24iOiAiVHlw
ZSBvZiB0aGlzIHJlc291cmNlLiIgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJtaW1lVHlwZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJS
ZXNvdXJjZSBtaW1lVHlwZSBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBicm93c2VyLiIgfSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmYWlsZWQiLCAidHlwZSI6ICJi
b29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRydWUgaWYgdGhlIHJl
c291cmNlIGZhaWxlZCB0byBsb2FkLiIgfSwKQEAgLTM4MCw2ICszODcsMTQgQEAKICAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUlkIiwgIiRyZWYiOiAiTmV0d29yay5GcmFtZUlk
IiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBmcmFtZSB0aGF0IGhhcyBiZWVuIGRldGFjaGVk
LiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUK
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAi
cmVzb3VyY2VEZXN0cm95ZWQiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJl
ZCB3aGVuIHJlc291cmNlIHdhcyBkZXN0cm95ZWQuIiwKKyAgICAgICAgICAgICAgICAicGFyYW1l
dGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXNvdXJjZUlkIiwgIiRy
ZWYiOiAiUmVzb3VyY2VJZCIsICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgcmVzb3VyY2UgdGhh
dCBoYXMgYmVlbiBkZXN0cm95ZWQuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
ICAgICAiaGlkZGVuIjogdHJ1ZQogICAgICAgICAgICAgfQogICAgICAgICBdCiAgICAgfSwKQEAg
LTg1Myw2ICs4NjgsNyBAQAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3
aGVuIEhUVFAgcmVzcG9uc2UgaXMgYXZhaWxhYmxlLiIsCiAgICAgICAgICAgICAgICAgInBhcmFt
ZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRy
ZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgaWRlbnRpZmllci4iIH0s
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzb3VyY2VJZCIsICIkcmVmIjogIlBh
Z2UuUmVzb3VyY2VJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIG9mIHRoZSByZWxldmFu
dCByZXNvdXJjZS4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZnJhbWVJZCIs
ICIkcmVmIjogIkZyYW1lSWQiLCAiZGVzY3JpcHRpb24iOiAiRnJhbWUgaWRlbnRpZmllci4iLCAi
aGlkZGVuIjogdHJ1ZSB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImxvYWRlcklk
IiwgIiRyZWYiOiAiTG9hZGVySWQiLCAiZGVzY3JpcHRpb24iOiAiTG9hZGVyIGlkZW50aWZpZXIu
IiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRpbWVzdGFtcCIsICIkcmVmIjog
IlRpbWVzdGFtcCIsICJkZXNjcmlwdGlvbiI6ICJUaW1lc3RhbXAuIiB9LApAQCAtODkzLDYgKzkw
OSw3IEBACiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVkIHdoZW4gSFRUUCBy
ZXF1ZXN0IGhhcyBiZWVuIHNlcnZlZCBmcm9tIG1lbW9yeSBjYWNoZS4iLAogICAgICAgICAgICAg
ICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVl
c3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IGlkZW50
aWZpZXIuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlc291cmNlSWQiLCAi
JHJlZiI6ICJQYWdlLlJlc291cmNlSWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBvZiB0
aGUgcmVsZXZhbnQgcmVzb3VyY2UuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImZyYW1lSWQiLCAiJHJlZiI6ICJGcmFtZUlkIiwgImRlc2NyaXB0aW9uIjogIkZyYW1lIGlkZW50
aWZpZXIuIiwgImhpZGRlbiI6IHRydWUgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJsb2FkZXJJZCIsICIkcmVmIjogIkxvYWRlcklkIiwgImRlc2NyaXB0aW9uIjogIkxvYWRlciBp
ZGVudGlmaWVyLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkb2N1bWVudFVS
TCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJVUkwgb2YgdGhlIGRvY3VtZW50
IHRoaXMgcmVxdWVzdCBpcyBsb2FkZWQgZm9yLiIgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBjM2Y5ZjA4YjMzOWRiYWMxYjY3
MjA5MDc5NGE3NTQ5YjAwMzgyODhjLi43OWExMWMxMjI3YzI2MWEzNzdhNzQyZTExMDVlZGVhMjE4
NmE5NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwCkBAIC0xODMsNiArMTgzLDcgQEAgUGFzc093blB0cjxJbnNwZWN0b3JDb250cm9s
bGVyPiBJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGUoUGFnZSogcGFnZSwgSW5zcGVjdG8KIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpCiB7CiAgICAg
ZGlzY29ubmVjdEZyb250ZW5kKCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnNw
ZWN0ZWRQYWdlRGVzdHJveWVkKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSk7CiAgICAgbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXItPmRpc2Nvbm5lY3QoKTsKICAgICBtX2luc3BlY3RvckNsaWVu
dC0+aW5zcGVjdG9yRGVzdHJveWVkKCk7CiAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcAppbmRleCAyOTYxNjVmZDc3YjQ0NTk0ODFhYjNhMDU4ZGE3MmVkMGRmMGQ1YTllLi42NGY4
OTVlODAwYWU4YjIwM2RlZDk1Y2U4NDZhZGI3ZGM1YWRmOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODAs
NiArODAsMTEgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNldFRpbWVyRXZlbnROYW1lID0g
InNldFRpbWVyIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBjbGVhclRpbWVyRXZlbnROYW1l
ID0gImNsZWFyVGltZXIiOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHRpbWVyRmlyZWRFdmVu
dE5hbWUgPSAidGltZXJGaXJlZCI7CiAKK25hbWVzcGFjZSB7Cit0eXBlZGVmIEhhc2hNYXA8Q2Fj
aGVkUmVzb3VyY2UqLCBPd25QdHI8SGFzaFNldDxJbnN0cnVtZW50aW5nQWdlbnRzKj4gPiA+IENh
Y2hlZFJlc291cmNlVG9BZ2VudHNNYXA7CitzdGF0aWMgQ2FjaGVkUmVzb3VyY2VUb0FnZW50c01h
cCogY2FjaGVkUmVzb3VyY2VUb0FnZW50c01hcDsKK30KKwogaW50IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6c19mcm9udGVuZENvdW50ZXIgPSAwOwogCiBzdGF0aWMgYm9vbCBldmVudEhhc0xp
c3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB3aW5kb3cs
IE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3RvcnMpCkBAIC04
NDQsNiArODQ5LDI0IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2FkZXJEZXRh
Y2hlZEZyb21GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyoKICAgICAgICAgaW5zcGVjdG9y
UGFnZUFnZW50LT5sb2FkZXJEZXRhY2hlZEZyb21GcmFtZShsb2FkZXIpOwogfQogCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2Fj
aGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQoreworICAgIGlmICghY2FjaGVkUmVzb3VyY2VU
b0FnZW50c01hcCB8fCAhY2FjaGVkUmVzb3VyY2VUb0FnZW50c01hcC0+Y29udGFpbnMoY2FjaGVk
UmVzb3VyY2UpKQorICAgICAgICByZXR1cm47CisgICAgSGFzaFNldDxJbnN0cnVtZW50aW5nQWdl
bnRzKj4qIGluc3RydW1lbnRpbmdBZ2VudHNTZXQgPSBjYWNoZWRSZXNvdXJjZVRvQWdlbnRzTWFw
LT5nZXQoY2FjaGVkUmVzb3VyY2UpOworICAgIEhhc2hTZXQ8SW5zdHJ1bWVudGluZ0FnZW50cyo+
OjppdGVyYXRvciBlbmQgPSBpbnN0cnVtZW50aW5nQWdlbnRzU2V0LT5lbmQoKTsKKyAgICBmb3Ig
KEhhc2hTZXQ8SW5zdHJ1bWVudGluZ0FnZW50cyo+OjppdGVyYXRvciBpdCA9IGluc3RydW1lbnRp
bmdBZ2VudHNTZXQtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gKml0OworICAgICAgICBpZiAoSW5z
cGVjdG9yUGFnZUFnZW50KiBpbnNwZWN0b3JQYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LT5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICAgICAgICAgIGluc3BlY3RvclBhZ2VBZ2VudC0+
d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShjYWNoZWRSZXNvdXJjZSk7CisgICAgICAgIGlmIChJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50KiBpbnNwZWN0b3JSZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQorICAgICAgICAgICAgaW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC0+d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShjYWNoZWRSZXNvdXJj
ZSk7CisgICAgfQorICAgIGNhY2hlZFJlc291cmNlVG9BZ2VudHNNYXAtPnJlbW92ZShjYWNoZWRS
ZXNvdXJjZSk7CisgICAgaWYgKCFjYWNoZWRSZXNvdXJjZVRvQWdlbnRzTWFwLT5zaXplKCkpCisg
ICAgICAgIGRlbGV0ZSBjYWNoZWRSZXNvdXJjZVRvQWdlbnRzTWFwOworfQorCiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsV3JpdGVI
VE1MSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25l
ZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgc3RhcnRMaW5lLCBGcmFtZSogZnJhbWUpCiB7CiAg
ICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7CkBAIC0xMTQxLDYgKzExNjQsMzMgQEAgV1RGOjpU
aHJlYWRTcGVjaWZpYzxJbnNwZWN0b3JUaW1lbGluZUFnZW50Kj4mIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6dGhyZWFkU3AKICAgICByZXR1cm4gKmluc3RhbmNlOwogfQogCit2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQoreworICAgIGlmICghY2FjaGVkUmVzb3VyY2VU
b0FnZW50c01hcCkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ2FjaGVkUmVzb3VyY2VUb0FnZW50
c01hcCBwcmVzZXJ2ZWRNYXA7CisgICAgQ2FjaGVkUmVzb3VyY2VUb0FnZW50c01hcDo6aXRlcmF0
b3IgZW5kID0gY2FjaGVkUmVzb3VyY2VUb0FnZW50c01hcC0+ZW5kKCk7CisgICAgZm9yIChDYWNo
ZWRSZXNvdXJjZVRvQWdlbnRzTWFwOjppdGVyYXRvciBpdCA9IGNhY2hlZFJlc291cmNlVG9BZ2Vu
dHNNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpdC0+c2Vjb25kLT5y
ZW1vdmUoaW5zdHJ1bWVudGluZ0FnZW50cyk7CisgICAgICAgIGlmIChpdC0+c2Vjb25kLT5zaXpl
KCkpCisgICAgICAgICAgICBwcmVzZXJ2ZWRNYXAuc2V0KGl0LT5maXJzdCwgaXQtPnNlY29uZC5y
ZWxlYXNlKCkpOworICAgIH0KKyAgICBjYWNoZWRSZXNvdXJjZVRvQWdlbnRzTWFwLT5zd2FwKHBy
ZXNlcnZlZE1hcCk7CisgICAgaWYgKCFjYWNoZWRSZXNvdXJjZVRvQWdlbnRzTWFwLT5zaXplKCkp
CisgICAgICAgIGRlbGV0ZSBjYWNoZWRSZXNvdXJjZVRvQWdlbnRzTWFwOworfQorCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGluZ0FnZW50c0ZvckNhY2hlZFJl
c291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3sKKyAgICBpZiAoIWNhY2hlZFJlc291cmNlVG9BZ2Vu
dHNNYXApCisgICAgICAgIGNhY2hlZFJlc291cmNlVG9BZ2VudHNNYXAgPSBuZXcgQ2FjaGVkUmVz
b3VyY2VUb0FnZW50c01hcCgpOworICAgIE93blB0cjxIYXNoU2V0PEluc3RydW1lbnRpbmdBZ2Vu
dHMqPiA+ICYgaW5zdHJ1bWVudGluZ0FnZW50c1NldCA9IGNhY2hlZFJlc291cmNlVG9BZ2VudHNN
YXAtPmFkZChjYWNoZWRSZXNvdXJjZSwgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsKKyAgICBp
ZiAoIWluc3RydW1lbnRpbmdBZ2VudHNTZXQpCisgICAgICAgIGluc3RydW1lbnRpbmdBZ2VudHNT
ZXQgPSBhZG9wdFB0cihuZXcgSGFzaFNldDxJbnN0cnVtZW50aW5nQWdlbnRzKj4pOworICAgIGlu
c3RydW1lbnRpbmdBZ2VudHNTZXQtPmFkZChpbnN0cnVtZW50aW5nQWdlbnRzKTsKK30KKwogSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXRyaWV2ZVRp
bWVsaW5lQWdlbnQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUp
CiB7CiAgICAgaWYgKCFjb29raWUuZmlyc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggZmQzOGI0NGUyOTdlYTA2OGM3
MGIwY2VlMjNkY2VjMWY3NTJiOTIyNi4uMjExMGQ0NjM4MTkwNWYxMmY1YmRiYjVkNzlkZGMzZmFj
ODY0OTA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaApAQCAtMTg2LDYgKzE4Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCBmcmFtZURldGFjaGVkRnJvbVBhcmVudChGcmFtZSopOwogICAgIHN0YXRpYyB2b2lkIGRp
ZENvbW1pdExvYWQoRnJhbWUqLCBEb2N1bWVudExvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGxv
YWRlckRldGFjaGVkRnJvbUZyYW1lKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqKTsKKyAgICBzdGF0
aWMgdm9pZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CiAKICAg
ICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxXcml0ZUhUTUwoRG9j
dW1lbnQqLCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgc3RhcnRMaW5lKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWRXcml0ZUhUTUwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llJiwgdW5zaWduZWQgaW50IGVuZExpbmUpOwpAQCAtMjUyLDYgKzI1Myw4IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgYm9vbCBjb2xsZWN0aW5nSFRNTFBhcnNlRXJyb3JzKFBhZ2UqKTsKICAg
ICBzdGF0aWMgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudEZvck9ycGhhbkV2
ZW50cygpOwogICAgIHN0YXRpYyB2b2lkIHNldFRpbWVsaW5lQWdlbnRGb3JPcnBoYW5FdmVudHMo
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCopOworICAgIHN0YXRpYyB2b2lkIGluc3BlY3RlZFBhZ2VE
ZXN0cm95ZWQoSW5zdHJ1bWVudGluZ0FnZW50cyopOworICAgIHN0YXRpYyB2b2lkIGFkZEluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSosIEluc3RydW1l
bnRpbmdBZ2VudHMqKTsKICNlbHNlCiAgICAgc3RhdGljIGJvb2wgaGFzRnJvbnRlbmRzKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgYm9vbCBoYXNGcm9udGVuZEZvclNjcmlwdENvbnRl
eHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0zNTQsNiAr
MzU3LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBmcmFtZURldGFjaGVkRnJvbVBhcmVu
dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgZGlk
Q29tbWl0TG9hZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFBhZ2UqLCBEb2N1bWVudExvYWRl
ciopOwogICAgIHN0YXRpYyB2b2lkIGxvYWRlckRldGFjaGVkRnJvbUZyYW1lSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgRG9jdW1lbnRMb2FkZXIqKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRGVz
dHJveUNhY2hlZFJlc291cmNlSW1wbChDYWNoZWRSZXNvdXJjZSopOwogCiAgICAgc3RhdGljIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsV3JpdGVIVE1MSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgdW5zaWduZWQgaW50IGxlbmd0aCwgdW5zaWduZWQgaW50IHN0YXJ0TGluZSwg
RnJhbWUqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRXcml0ZUhUTUxJbXBsKGNvbnN0IEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIHVuc2lnbmVkIGludCBlbmRMaW5lKTsKQEAgLTExOTEs
NiArMTE5NSwxNCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvYWRl
ckRldGFjaGVkRnJvbUZyYW1lKEZyYW1lKiBmcmFtZSwgRG9jdQogI2VuZGlmCiB9CiAKK2lubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RP
UikKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKKyAgICB3aWxsRGVz
dHJveUNhY2hlZFJlc291cmNlSW1wbChjYWNoZWRSZXNvdXJjZSk7CisjZW5kaWYKK30KKwogaW5s
aW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxXcml0ZUhUTUwoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBpbnQgbGVuZ3Ro
LCB1bnNpZ25lZCBpbnQgc3RhcnRMaW5lKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDk2
NzZkMTM4ZTg1NmZmOTUwOTZiYzJlMDQ4NjRhMThlZGRlODJjNjIuLjg0MDIwYWQ2Y2I5OWQyYWE2
NmQ4MDliODllZGNiMzQ4Zjg1NzZjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC04MjQsNiArODI0LDE4IEBAIFN0cmluZyBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmxvYWRlcklkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgcmV0
dXJuIGlkZW50aWZpZXI7CiB9CiAKK1N0cmluZyBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNl
SWQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQoreworICAgIGlmICghY2FjaGVkUmVz
b3VyY2UpCisgICAgICAgIHJldHVybiAiIjsKKyAgICBTdHJpbmcgaWRlbnRpZmllciA9IG1fcmVz
b3VyY2VUb0lkZW50aWZpZXIuZ2V0KGNhY2hlZFJlc291cmNlKTsKKyAgICBpZiAoaWRlbnRpZmll
ci5pc051bGwoKSkgeworICAgICAgICBpZGVudGlmaWVyID0gSWRlbnRpZmllcnNGYWN0b3J5Ojpj
cmVhdGVJZGVudGlmaWVyKCk7CisgICAgICAgIG1fcmVzb3VyY2VUb0lkZW50aWZpZXIuc2V0KGNh
Y2hlZFJlc291cmNlLCBpZGVudGlmaWVyKTsKKyAgICB9CisgICAgcmV0dXJuIGlkZW50aWZpZXI7
Cit9CisKIEZyYW1lKiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFzc2VydEZyYW1lKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgU3RyaW5nIGZyYW1lSWQpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gZnJh
bWVGb3JJZChmcmFtZUlkKTsKQEAgLTkwNCw2ICs5MTYsMTUgQEAgdm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmRpZExheW91dCgpCiAgICAgICAgIG1fY2xpZW50LT5hdXRvWm9vbVBhZ2VUb0ZpdFdp
ZHRoKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojp3aWxsRGVzdHJveUNhY2hlZFJl
c291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKK3sKKyAgICBtX2Zyb250ZW5k
LT5yZXNvdXJjZURlc3Ryb3llZChyZXNvdXJjZUlkKGNhY2hlZFJlc291cmNlKSk7CisKKyAgICBI
YXNoTWFwPENhY2hlZFJlc291cmNlKiwgU3RyaW5nPjo6aXRlcmF0b3IgaXRlcmF0b3IgPSBtX3Jl
c291cmNlVG9JZGVudGlmaWVyLmZpbmQoY2FjaGVkUmVzb3VyY2UpOworICAgIGlmIChpdGVyYXRv
ciAhPSBtX3Jlc291cmNlVG9JZGVudGlmaWVyLmVuZCgpKQorICAgICAgICBtX3Jlc291cmNlVG9J
ZGVudGlmaWVyLnJlbW92ZShpdGVyYXRvcik7Cit9CisKIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OlBhZ2U6OkZyYW1lPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUoRnJh
bWUqIGZyYW1lKQogewogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IGZyYW1l
T2JqZWN0ID0gVHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lOjpjcmVhdGUoKQpAQCAtOTM2LDkgKzk1
NywxMSBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4g
SW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdAogICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJj
ZSo+IGFsbFJlc291cmNlcyA9IGNhY2hlZFJlc291cmNlc0ZvckZyYW1lKGZyYW1lKTsKICAgICBm
b3IgKFZlY3RvcjxDYWNoZWRSZXNvdXJjZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGFsbFJlc291
cmNlcy5iZWdpbigpOyBpdCAhPSBhbGxSZXNvdXJjZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAg
Q2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gKml0OworICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRpbmdBZ2VudHNGb3JDYWNoZWRSZXNvdXJjZShj
YWNoZWRSZXNvdXJjZSwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKTsKIAogICAgICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpSZXNvdXJjZXM+IHJlc291cmNl
T2JqZWN0ID0gVHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpSZXNvdXJjZXM6
OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0VXJsKGNhY2hlZFJlc291cmNlLT51cmwoKSkKKyAg
ICAgICAgICAgIC5zZXRSZXNvdXJjZUlkKHJlc291cmNlSWQoY2FjaGVkUmVzb3VyY2UpKQogICAg
ICAgICAgICAgLnNldFR5cGUoY2FjaGVkUmVzb3VyY2VUeXBlSnNvbigqY2FjaGVkUmVzb3VyY2Up
KQogICAgICAgICAgICAgLnNldE1pbWVUeXBlKGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLm1p
bWVUeXBlKCkpOwogICAgICAgICBpZiAoY2FjaGVkUmVzb3VyY2UtPnN0YXR1cygpID09IENhY2hl
ZFJlc291cmNlOjpMb2FkRXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50LmgKaW5kZXggYzNiOWE2ZDJmNDViZWUyYjczZmMxMDk4YjY1MmFiYWNhYjJh
ZjlmNi4uY2RlZjIyODBkZWNkY2JjM2Q5ZTVmMGQzZTc2NGNiYWEzZjJmMGMzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtMTIyLDYgKzEy
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxQYWludChHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBMYXlvdXRSZWN0Jik7CiAgICAgdm9pZCBkaWRQYWludCgpOwogICAgIHZvaWQgZGlkTGF5b3V0
KCk7CisgICAgdm9pZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7
CiAKICAgICAvLyBJbnNwZWN0b3IgQ29udHJvbGxlciBBUEkKICAgICB2aXJ0dWFsIHZvaWQgc2V0
RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKQEAgLTEzNCw4ICsxMzUsMTEgQEAgcHVibGlj
OgogICAgIEZyYW1lKiBmcmFtZUZvcklkKGNvbnN0IFN0cmluZyYgZnJhbWVJZCk7CiAgICAgU3Ry
aW5nIGZyYW1lSWQoRnJhbWUqKTsKICAgICBTdHJpbmcgbG9hZGVySWQoRG9jdW1lbnRMb2FkZXIq
KTsKKyAgICBTdHJpbmcgcmVzb3VyY2VJZChDYWNoZWRSZXNvdXJjZSopOwogICAgIEZyYW1lKiBh
c3NlcnRGcmFtZShFcnJvclN0cmluZyosIFN0cmluZyBmcmFtZUlkKTsKICAgICBzdGF0aWMgRG9j
dW1lbnRMb2FkZXIqIGFzc2VydERvY3VtZW50TG9hZGVyKEVycm9yU3RyaW5nKiwgRnJhbWUqKTsK
KyAgICB2b2lkIHJlZ2lzdGVyQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKKwogCiBw
cml2YXRlOgogICAgIEluc3BlY3RvclBhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUGFn
ZSosIEluc3BlY3RvckFnZW50KiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqLCBJbnNwZWN0b3JDbGllbnQqLCBJbnNwZWN0b3JPdmVybGF5Kik7CkBAIC0xNTUsNiArMTU5
LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPEZyYW1lKiwgU3RyaW5nPiBtX2ZyYW1lVG9JZGVu
dGlmaWVyOwogICAgIEhhc2hNYXA8U3RyaW5nLCBGcmFtZSo+IG1faWRlbnRpZmllclRvRnJhbWU7
CiAgICAgSGFzaE1hcDxEb2N1bWVudExvYWRlciosIFN0cmluZz4gbV9sb2FkZXJUb0lkZW50aWZp
ZXI7CisgICAgSGFzaE1hcDxDYWNoZWRSZXNvdXJjZSosIFN0cmluZz4gbV9yZXNvdXJjZVRvSWRl
bnRpZmllcjsKICAgICBHcmFwaGljc0NvbnRleHQqIG1fbGFzdFBhaW50Q29udGV4dDsKICAgICBM
YXlvdXRSZWN0IG1fbGFzdFBhaW50UmVjdDsKICAgICBib29sIG1fZGlkTG9hZEV2ZW50RmlyZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcAppbmRleCA4Nzc2YmI4NTUxNGFkNjcxN2NjNTAyNGY1MGM2ZTJlNWMyOGUzYThmLi4yOTBj
ODFlOWY3MjkwNjA4OWFjOTJjYmFkYzkxZWQ5MWU3Yjk4MjEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC00NCw2ICs0
NCw3IEBACiAjaW5jbHVkZSAiSWRlbnRpZmllcnNGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVl
cy5oIgpAQCAtMjQyLDYgKzI0Myw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lCiAgICAgSW5z
cGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgdHlwZSA9IEluc3BlY3RvclBhZ2VBZ2VudDo6
T3RoZXJSZXNvdXJjZTsKICAgICBsb25nIGNhY2hlZFJlc291cmNlU2l6ZSA9IDA7CiAKKyAgICBT
dHJpbmcgcmVzb3VyY2VJZDsKICAgICBpZiAobG9hZGVyKSB7CiAgICAgICAgIENhY2hlZFJlc291
cmNlKiBjYWNoZWRSZXNvdXJjZSA9IEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2Uo
bG9hZGVyLT5mcmFtZSgpLCByZXNwb25zZS51cmwoKSk7CiAgICAgICAgIGlmIChjYWNoZWRSZXNv
dXJjZSkgewpAQCAtMjUxLDcgKzI1Myw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lCiAgICAg
ICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25zZSAmJiByZXNwb25zZS5taW1lVHlwZSgpLmlzRW1w
dHkoKSkKICAgICAgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoVHlwZUJ1
aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlOjpNaW1lVHlwZSwgY2FjaGVkUmVzb3VyY2UtPnJlc3Bv
bnNlKCkubWltZVR5cGUoKSk7CiAKLSAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkQ2Fj
aGVkUmVzb3VyY2UocmVxdWVzdElkLCBjYWNoZWRSZXNvdXJjZSk7CisgICAgICAgICAgICBhZGRD
YWNoZWRSZXNvdXJjZShyZXF1ZXN0SWQsIGNhY2hlZFJlc291cmNlKTsKICAgICAgICAgfQogICAg
ICAgICBpZiAobV9sb2FkaW5nWEhSU3luY2hyb25vdXNseSB8fCBtX3Jlc291cmNlc0RhdGEtPnJl
c291cmNlVHlwZShyZXF1ZXN0SWQpID09IEluc3BlY3RvclBhZ2VBZ2VudDo6WEhSUmVzb3VyY2Up
CiAgICAgICAgICAgICB0eXBlID0gSW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNvdXJjZTsKQEAg
LTI2MSwxMSArMjYzLDExIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lCiAgICAgICAgICAgICB0
eXBlID0gSW5zcGVjdG9yUGFnZUFnZW50OjpJbWFnZVJlc291cmNlOwogICAgICAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHJlc3BvbnNlLnVybCgpLCBsb2FkZXIt
PnVybCgpKSAmJiAhbG9hZGVyLT5pc0NvbW1pdHRlZCgpKQogICAgICAgICAgICAgdHlwZSA9IElu
c3BlY3RvclBhZ2VBZ2VudDo6RG9jdW1lbnRSZXNvdXJjZTsKLQogICAgICAgICBtX3Jlc291cmNl
c0RhdGEtPnJlc3BvbnNlUmVjZWl2ZWQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChs
b2FkZXItPmZyYW1lKCkpLCByZXNwb25zZSk7CisgICAgICAgIHJlc291cmNlSWQgPSBtX3BhZ2VB
Z2VudC0+cmVzb3VyY2VJZChjYWNoZWRSZXNvdXJjZSk7CiAgICAgfQogICAgIG1fcmVzb3VyY2Vz
RGF0YS0+c2V0UmVzb3VyY2VUeXBlKHJlcXVlc3RJZCwgdHlwZSk7Ci0gICAgbV9mcm9udGVuZC0+
cmVzcG9uc2VSZWNlaXZlZChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+
ZnJhbWUoKSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpLCBjdXJyZW50VGltZSgpLCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24odHlwZSksIHJlc291cmNlUmVzcG9u
c2UpOworICAgIG1fZnJvbnRlbmQtPnJlc3BvbnNlUmVjZWl2ZWQocmVxdWVzdElkLCByZXNvdXJj
ZUlkLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXItPmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+
bG9hZGVySWQobG9hZGVyKSwgY3VycmVudFRpbWUoKSwgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNv
dXJjZVR5cGVKc29uKHR5cGUpLCByZXNvdXJjZVJlc3BvbnNlKTsKICAgICAvLyBJZiB3ZSByZXZh
bGlkYXRlZCB0aGUgcmVzb3VyY2UgYW5kIGdvdCBOb3QgbW9kaWZpZWQsIHNlbmQgY29udGVudCBs
ZW5ndGggZm9sbG93aW5nIGRpZFJlY2VpdmVSZXNwb25zZQogICAgIC8vIGFzIHRoZXJlIHdpbGwg
YmUgbm8gY2FsbHMgdG8gZGlkUmVjZWl2ZURhdGEgZnJvbSB0aGUgbmV0d29yayBzdGFjay4KICAg
ICBpZiAoY2FjaGVkUmVzb3VyY2VTaXplICYmIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0g
MzA0KQpAQCAtMjgzLDcgKzI4NSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlk
UmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyCiAKICAgICBp
ZiAoZGF0YSkgewogICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNv
bnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPmRhdGEocmVxdWVzdElkKTsKLSAg
ICAgICAgaWYgKG1fcmVzb3VyY2VzRGF0YS0+cmVzb3VyY2VUeXBlKHJlcXVlc3RJZCkgPT0gSW5z
cGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlIHx8IChyZXNvdXJjZURhdGEgJiYgaXNFcnJv
clN0YXR1c0NvZGUocmVzb3VyY2VEYXRhLT5odHRwU3RhdHVzQ29kZSgpKSAmJiAocmVzb3VyY2VE
YXRhLT5jYWNoZWRSZXNvdXJjZSgpKSkpCisgICAgICAgIGlmIChtX3Jlc291cmNlc0RhdGEtPnJl
c291cmNlVHlwZShyZXF1ZXN0SWQpID09IEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJj
ZSB8fCAocmVzb3VyY2VEYXRhICYmIGlzRXJyb3JTdGF0dXNDb2RlKHJlc291cmNlRGF0YS0+aHR0
cFN0YXR1c0NvZGUoKSkgJiYgcmVzb3VyY2VEYXRhLT5jYWNoZWRSZXNvdXJjZSgpKSkKICAgICAg
ICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBk
YXRhLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKQEAgLTMyMCwxNSArMzIyLDE2IEBAIHZvaWQgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBEb2N1bWVudExvCiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJl
c291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSkKIHsKKyAgICBTdHJpbmcgcmVzb3VyY2VJZCA9IG1fcGFnZUFnZW50LT5y
ZXNvdXJjZUlkKHJlc291cmNlKTsKICAgICBTdHJpbmcgbG9hZGVySWQgPSBtX3BhZ2VBZ2VudC0+
bG9hZGVySWQobG9hZGVyKTsKICAgICBTdHJpbmcgZnJhbWVJZCA9IG1fcGFnZUFnZW50LT5mcmFt
ZUlkKGxvYWRlci0+ZnJhbWUoKSk7CiAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyID0gbG9h
ZGVyLT5mcmFtZSgpLT5wYWdlKCktPnByb2dyZXNzKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIo
KTsKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQo
aWRlbnRpZmllcik7CiAgICAgbV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZUNyZWF0ZWQocmVxdWVz
dElkLCBsb2FkZXJJZCk7Ci0gICAgbV9yZXNvdXJjZXNEYXRhLT5hZGRDYWNoZWRSZXNvdXJjZShy
ZXF1ZXN0SWQsIHJlc291cmNlKTsKKyAgICBhZGRDYWNoZWRSZXNvdXJjZShyZXF1ZXN0SWQsIHJl
c291cmNlKTsKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5p
dGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0aWF0b3JPYmplY3QobG9hZGVyLT5mcmFtZSgpID8gbG9h
ZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpIDogMCk7CiAKLSAgICBtX2Zyb250ZW5kLT5yZXF1ZXN0
U2VydmVkRnJvbU1lbW9yeUNhY2hlKHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIGxvYWRl
ci0+dXJsKCkuc3RyaW5nKCksIGN1cnJlbnRUaW1lKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRP
YmplY3RGb3JDYWNoZWRSZXNvdXJjZSgqcmVzb3VyY2UsIGxvYWRlcikpOworICAgIG1fZnJvbnRl
bmQtPnJlcXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCByZXNvdXJjZUlkLCBm
cmFtZUlkLCBsb2FkZXJJZCwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgY3VycmVudFRpbWUoKSwg
aW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKCpyZXNvdXJjZSwg
bG9hZGVyKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0SW5pdGlhbFNj
cmlwdENvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVN0cmluZykKQEAgLTM2NCw2ICszNjcsMjUgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRMb2FkWEhSU3luY2hyb25vdXNseSgpCiAgICAgbV9sb2FkaW5nWEhSU3luY2hyb25vdXNs
eSA9IGZhbHNlOwogfQogCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxEZXN0cm95
Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQoreworICAgIFZl
Y3RvcjxTdHJpbmc+IHJlcXVlc3RJZHMgPSBtX3Jlc291cmNlc0RhdGEtPnJlbW92ZUNhY2hlZFJl
c291cmNlKGNhY2hlZFJlc291cmNlKTsKKworICAgIFN0cmluZyBjb250ZW50OworICAgIGJvb2wg
YmFzZTY0RW5jb2RlZDsKKyAgICBpZiAoIUluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3Vy
Y2VDb250ZW50KGNhY2hlZFJlc291cmNlLCAmY29udGVudCwgJmJhc2U2NEVuY29kZWQpKQorICAg
ICAgICByZXR1cm47CisgICAgVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGVuZCA9IHJlcXVlc3RJ
ZHMuZW5kKCk7CisgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgaXQgPSByZXF1ZXN0
SWRzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5z
ZXRSZXNvdXJjZUNvbnRlbnQoKml0LCBjb250ZW50LCBiYXNlNjRFbmNvZGVkKTsKK30KKwordm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjphZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQoreworICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGluZ0FnZW50c0ZvckNhY2hlZFJlc291
cmNlKGNhY2hlZFJlc291cmNlLCBtX2luc3RydW1lbnRpbmdBZ2VudHMpOworICAgIG1fcmVzb3Vy
Y2VzRGF0YS0+YWRkQ2FjaGVkUmVzb3VyY2UocmVxdWVzdElkLCBjYWNoZWRSZXNvdXJjZSk7Cit9
CisKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6YXBwbHlVc2VyQWdlbnRPdmVycmlkZShT
dHJpbmcqIHVzZXJBZ2VudCkKIHsKICAgICBTdHJpbmcgdXNlckFnZW50T3ZlcnJpZGUgPSBtX3N0
YXRlLT5nZXRTdHJpbmcoUmVzb3VyY2VBZ2VudFN0YXRlOjp1c2VyQWdlbnRPdmVycmlkZSk7CkBA
IC01MjksNyArNTUxLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpnZXRSZXNwb25z
ZUJvZHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHIKICAgICB9CiAKICAgICBp
ZiAocmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkpIHsKLSAgICAgICAgKmJhc2U2NEVuY29kZWQg
PSBmYWxzZTsKKyAgICAgICAgKmJhc2U2NEVuY29kZWQgPSByZXNvdXJjZURhdGEtPmJhc2U2NEVu
Y29kZWQoKTsKICAgICAgICAgKmNvbnRlbnQgPSByZXNvdXJjZURhdGEtPmNvbnRlbnQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5oCmluZGV4IDU0Y2Y0OGUxZmZiNWViZDVlMzdhZDg3YjU4YjIw
ZTRlYzVjNmFjZDIuLmU1ZDg1MzMwYWY5ZDI1YWZkZTQ1NWExNDEwNzAyZWY3NzFkNjk1ZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQu
aApAQCAtMTAzLDYgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVYSFJSZXNw
b25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHZvaWQgd2lsbExvYWRYSFJTeW5j
aHJvbm91c2x5KCk7CiAgICAgdm9pZCBkaWRMb2FkWEhSU3luY2hyb25vdXNseSgpOworICAgIHZv
aWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwogCiAgICAgdm9p
ZCBhcHBseVVzZXJBZ2VudE92ZXJyaWRlKFN0cmluZyogdXNlckFnZW50KTsKIApAQCAtMTQ2LDYg
KzE0Nyw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGVuYWJsZSgpOwogCisgICAgdm9pZCBhZGRD
YWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzb3VyY2UqKTsK
KyAgICB2b2lkIHJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CisKICAgICBJ
bnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAgIEluc3BlY3RvckNsaWVudCogbV9j
bGllbnQ7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmQ6Ok5ldHdvcmsqIG1fZnJvbnRlbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRl
eCA2MTlhMTlhYTZkZjM3YjkzMzY5ZWRhOTI4NTg1N2FkNjU4YjEwN2JjLi5hOGYxYjQ4M2E2YTdi
NjQ1NDQzZGU0YzVlMGMyY2Y3NGRiY2RlM2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTM4LDEwICszOCwxMCBAQAogCiBu
YW1lc3BhY2UgewogLy8gMTAwTUIKLXN0YXRpYyBpbnQgbWF4aW11bVJlc291cmNlc0NvbnRlbnRT
aXplID0gMTAwICogMTAwMCAqIDEwMDA7CitzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIG1heGlt
dW1SZXNvdXJjZXNDb250ZW50U2l6ZSA9IDEwMCAqIDEwMDAgKiAxMDAwOwogCiAvLyAxME1CCi1z
dGF0aWMgaW50IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0gMTAgKiAxMDAwICog
MTAwMDsKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgbWF4aW11bVNpbmdsZVJlc291cmNlQ29u
dGVudFNpemUgPSAxMCAqIDEwMDAgKiAxMDAwOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC01MSwxNiArNTEsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBj
b25zdCBTdHJpbmcmIGxvYWRlcklkKQogICAgIDogbV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAg
ICwgbV9sb2FkZXJJZChsb2FkZXJJZCkKKyAgICAsIG1fYmFzZTY0RW5jb2RlZChmYWxzZSkKICAg
ICAsIG1faXNDb250ZW50UHVyZ2VkKGZhbHNlKQogICAgICwgbV90eXBlKEluc3BlY3RvclBhZ2VB
Z2VudDo6T3RoZXJSZXNvdXJjZSkKKyAgICAsIG1fY2FjaGVkUmVzb3VyY2UoMCkKIHsKIH0KIAot
dm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRDb250ZW50KGNvbnN0
IFN0cmluZyYgY29udGVudCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6c2V0Q29udGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCkK
IHsKICAgICBBU1NFUlQoIWhhc0RhdGEoKSk7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwog
ICAgIG1fY29udGVudCA9IGNvbnRlbnQ7CisgICAgbV9iYXNlNjRFbmNvZGVkID0gYmFzZTY0RW5j
b2RlZDsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
cmVtb3ZlQ29udGVudCgpCkBAIC04NiwxMiArODksMTIgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cHVyZ2VDb250ZW50KCkKICAgICByZXR1cm4gcmVtb3Zl
Q29udGVudCgpOwogfQogCi1pbnQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
ZGF0YUxlbmd0aCgpIGNvbnN0Cit1bnNpZ25lZCBsb25nIGxvbmcgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZGF0
YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKIH0KIAotdm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjph
cHBlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBkYXRhTGVuZ3Ro
KQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKICAgICBpZiAoIW1fZGF0YUJ1ZmZlcikK
QEAgLTEwMCwxMCArMTAzLDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6YXBwZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlCiAgICAgICAgIG1f
ZGF0YUJ1ZmZlci0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCi1pbnQgTmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCit1bnNpZ25l
ZCBsb25nIGxvbmcgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0
YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIGludCBkYXRh
TGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGRh
dGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKICAgICBtX2NvbnRlbnQgPSBtX2RlY29k
ZXItPmRlY29kZShtX2RhdGFCdWZmZXItPmRhdGEoKSwgbV9kYXRhQnVmZmVyLT5zaXplKCkpOwog
ICAgIG1fY29udGVudCArPSBtX2RlY29kZXItPmZsdXNoKCk7CiAgICAgbV9kYXRhQnVmZmVyID0g
bnVsbHB0cjsKQEAgLTE3MSwxMiArMTc0LDEyIEBAIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3Vy
Y2VUeXBlIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5nCiAg
ICAgcmV0dXJuIHJlc291cmNlRGF0YS0+dHlwZSgpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpzZXRSZXNvdXJjZUNvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0
IFN0cmluZyYgY29udGVudCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnNldFJlc291cmNl
Q29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBi
b29sIGJhc2U2NEVuY29kZWQpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBt
X3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLmdldChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVz
b3VyY2VEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgaW50IGRhdGFMZW5ndGggPSAyICogY29u
dGVudC5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGF0YUxlbmd0aCA9IDIgKiBj
b250ZW50Lmxlbmd0aCgpOwogICAgIGlmIChkYXRhTGVuZ3RoID4gbV9tYXhpbXVtU2luZ2xlUmVz
b3VyY2VDb250ZW50U2l6ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChyZXNvdXJjZURhdGEt
PmlzQ29udGVudFB1cmdlZCgpKQpAQCAtMTg2LDEyICsxODksMTIgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6c2V0UmVzb3VyY2VDb250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBj
b25zdCBTdHIKICAgICAgICAgaWYgKHJlc291cmNlRGF0YS0+aGFzQ29udGVudCgpKQogICAgICAg
ICAgICAgbV9jb250ZW50U2l6ZSAtPSByZXNvdXJjZURhdGEtPnJlbW92ZUNvbnRlbnQoKTsKICAg
ICAgICAgbV9yZXF1ZXN0SWRzRGVxdWUuYXBwZW5kKHJlcXVlc3RJZCk7Ci0gICAgICAgIHJlc291
cmNlRGF0YS0+c2V0Q29udGVudChjb250ZW50KTsKKyAgICAgICAgcmVzb3VyY2VEYXRhLT5zZXRD
b250ZW50KGNvbnRlbnQsIGJhc2U2NEVuY29kZWQpOwogICAgICAgICBtX2NvbnRlbnRTaXplICs9
IGRhdGFMZW5ndGg7CiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXli
ZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgY2hhciogZGF0
YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJl
c291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgY2hhciogZGF0YSwgdW5z
aWduZWQgbG9uZyBsb25nIGRhdGFMZW5ndGgpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJj
ZURhdGEgPSBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLmdldChyZXF1ZXN0SWQpOwogICAg
IGlmICghcmVzb3VyY2VEYXRhKQpAQCAtMjE3LDcgKzIyMCw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlc0RhdGE6Om1heWJlRGVjb2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCkKICAgICBpZiAoIXJlc291cmNlRGF0YS0+aGFzRGF0YSgpKQogICAgICAgICByZXR1cm47CiAg
ICAgbV9jb250ZW50U2l6ZSArPSByZXNvdXJjZURhdGEtPmRlY29kZURhdGFUb0NvbnRlbnQoKTsK
LSAgICBpbnQgZGF0YUxlbmd0aCA9IDIgKiByZXNvdXJjZURhdGEtPmNvbnRlbnQoKS5sZW5ndGgo
KTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGF0YUxlbmd0aCA9IDIgKiByZXNvdXJjZURhdGEt
PmNvbnRlbnQoKS5sZW5ndGgoKTsKICAgICBpZiAoZGF0YUxlbmd0aCA+IG1fbWF4aW11bVNpbmds
ZVJlc291cmNlQ29udGVudFNpemUpCiAgICAgICAgIG1fY29udGVudFNpemUgLT0gcmVzb3VyY2VE
YXRhLT5wdXJnZUNvbnRlbnQoKTsKIH0KQEAgLTI0NSw2ICsyNDgsMjIgQEAgTmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6OmRhdGEo
Y29uc3QgU3RyaW4KICAgICByZXR1cm4gbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5nZXQo
cmVxdWVzdElkKTsKIH0KIAorVmVjdG9yPFN0cmluZz4gTmV0d29ya1Jlc291cmNlc0RhdGE6OnJl
bW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKK3sKKyAg
ICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CisgICAgUmVzb3VyY2VEYXRhTWFwOjppdGVyYXRvciBp
dDsKKyAgICBSZXNvdXJjZURhdGFNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcmVxdWVzdElkVG9SZXNv
dXJjZURhdGFNYXAuZW5kKCk7CisgICAgZm9yIChpdCA9IG1fcmVxdWVzdElkVG9SZXNvdXJjZURh
dGFNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFJlc291cmNlRGF0YSog
cmVzb3VyY2VEYXRhID0gaXQtPnNlY29uZDsKKyAgICAgICAgaWYgKHJlc291cmNlRGF0YS0+Y2Fj
aGVkUmVzb3VyY2UoKSA9PSBjYWNoZWRSZXNvdXJjZSkgeworICAgICAgICAgICAgcmVzb3VyY2VE
YXRhLT5zZXRDYWNoZWRSZXNvdXJjZSgwKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaXQt
PmZpcnN0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZv
aWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmNsZWFyKGNvbnN0IFN0cmluZyYgcHJlc2VydmVkTG9h
ZGVySWQpCiB7CiAgICAgbV9yZXF1ZXN0SWRzRGVxdWUuY2xlYXIoKTsKQEAgLTI2NCw3ICsyODMs
NyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpjbGVhcihjb25zdCBTdHJpbmcmIHByZXNl
cnZlZExvYWRlcklkKQogICAgIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuc3dhcChwcmVz
ZXJ2ZWRNYXApOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpzZXRSZXNvdXJjZXNE
YXRhU2l6ZUxpbWl0cyhpbnQgbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplLCBpbnQgbWF4aW11
bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpz
ZXRSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0cyh1bnNpZ25lZCBsb25nIGxvbmcgbWF4aW11bVJlc291
cmNlc0NvbnRlbnRTaXplLCB1bnNpZ25lZCBsb25nIGxvbmcgbWF4aW11bVNpbmdsZVJlc291cmNl
Q29udGVudFNpemUpCiB7CiAgICAgY2xlYXIoKTsKICAgICBtX21heGltdW1SZXNvdXJjZXNDb250
ZW50U2l6ZSA9IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZTsKQEAgLTI4Myw3ICszMDIsNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjplbnN1cmVOb0RhdGFGb3JSZXF1ZXN0SWQoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQpCiAgICAgfQogfQogCi1ib29sIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjplbnN1cmVGcmVlU3BhY2UoaW50IHNpemUpCitib29sIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjplbnN1cmVGcmVlU3BhY2UodW5zaWduZWQgbG9uZyBsb25nIHNpemUpCiB7CiAgICAgaWYgKHNp
emUgPiBtX21heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApp
bmRleCAxYjE3MmU3OWUwMTIzZTgxYzFjNTZlMTk0ZmFhMzkwYzdlNTc3YmQ0Li4wYjUyODQ2Nzhk
ZjE2NGIxOGUxZWFkZWNlNWQ0NWI3ZWFlMDIxMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMjksNyArMjksNiBAQAogI2lmbmRl
ZiBOZXR3b3JrUmVzb3VyY2VzRGF0YV9oCiAjZGVmaW5lIE5ldHdvcmtSZXNvdXJjZXNEYXRhX2gK
IAotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
UGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogCkBAIC02NSw3
ICs2NCw5IEBAIHB1YmxpYzoKIAogICAgICAgICBib29sIGhhc0NvbnRlbnQoKSBjb25zdCB7IHJl
dHVybiAhbV9jb250ZW50LmlzTnVsbCgpOyB9CiAgICAgICAgIFN0cmluZyBjb250ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9jb250ZW50OyB9Ci0gICAgICAgIHZvaWQgc2V0Q29udGVudChjb25zdCBT
dHJpbmcmKTsKKyAgICAgICAgdm9pZCBzZXRDb250ZW50KGNvbnN0IFN0cmluZyYsIGJvb2wgYmFz
ZTY0RW5jb2RlZCk7CisKKyAgICAgICAgYm9vbCBiYXNlNjRFbmNvZGVkKCkgY29uc3QgeyByZXR1
cm4gbV9iYXNlNjRFbmNvZGVkOyB9CiAKICAgICAgICAgdW5zaWduZWQgcmVtb3ZlQ29udGVudCgp
OwogICAgICAgICBib29sIGlzQ29udGVudFB1cmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb250
ZW50UHVyZ2VkOyB9CkBAIC04NiwyMCArODcsMjEgQEAgcHVibGljOgogICAgICAgICBQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KICAg
ICAgICAgdm9pZCBzZXRCdWZmZXIoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcikgeyBt
X2J1ZmZlciA9IGJ1ZmZlcjsgfQogCi0gICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNv
dXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2UuZ2V0KCk7IH0KKyAgICAgICAg
Q2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRS
ZXNvdXJjZTsgfQogICAgICAgICB2b2lkIHNldENhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNl
KiBjYWNoZWRSZXNvdXJjZSkgeyBtX2NhY2hlZFJlc291cmNlID0gY2FjaGVkUmVzb3VyY2U7IH0K
IAogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YUJ1ZmZlcjsgfQotICAgICAgICBpbnQgZGF0YUxlbmd0aCgpIGNvbnN0OwotICAgICAgICB2
b2lkIGFwcGVuZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOwotICAgICAg
ICBpbnQgZGVjb2RlRGF0YVRvQ29udGVudCgpOworICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
ZGF0YUxlbmd0aCgpIGNvbnN0OworICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgY2hhciog
ZGF0YSwgdW5zaWduZWQgbG9uZyBsb25nIGRhdGFMZW5ndGgpOworICAgICAgICB1bnNpZ25lZCBs
b25nIGxvbmcgZGVjb2RlRGF0YVRvQ29udGVudCgpOwogCiAgICAgICAgIFN0cmluZyBtX3JlcXVl
c3RJZDsKICAgICAgICAgU3RyaW5nIG1fbG9hZGVySWQ7CiAgICAgICAgIFN0cmluZyBtX2ZyYW1l
SWQ7CiAgICAgICAgIFN0cmluZyBtX3VybDsKICAgICAgICAgU3RyaW5nIG1fY29udGVudDsKKyAg
ICAgICAgYm9vbCBtX2Jhc2U2NEVuY29kZWQ7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fZGF0YUJ1ZmZlcjsKICAgICAgICAgYm9vbCBtX2lzQ29udGVudFB1cmdlZDsKICAgICAgICAg
SW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgbV90eXBlOwpAQCAtMTA5LDcgKzExMSw3
IEBAIHB1YmxpYzoKICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2Rl
cjsKIAogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKLSAgICAgICAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IG1fY2FjaGVkUmVzb3VyY2U7CisgICAg
ICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291cmNlOwogICAgIH07CiAKICAgICBOZXR3
b3JrUmVzb3VyY2VzRGF0YSgpOwpAQCAtMTIwLDI3ICsxMjIsMjggQEAgcHVibGljOgogICAgIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5n
JiBmcmFtZUlkLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBzZXRSZXNvdXJj
ZVR5cGUoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3Vy
Y2VUeXBlKTsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5
cGUoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwotICAgIHZvaWQgc2V0UmVzb3VyY2VDb250ZW50
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwotICAgIHZv
aWQgbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICB2b2lkIHNldFJlc291cmNlQ29udGVudChj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2
NEVuY29kZWQgPSBmYWxzZSk7CisgICAgdm9pZCBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbG9uZyBsb25nIGRh
dGFMZW5ndGgpOwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRC
dWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICBSZXNvdXJjZURhdGEgY29uc3Qq
IGRhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlbW92
ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCBjbGVhcihjb25zdCBT
dHJpbmcmIHByZXNlcnZlZExvYWRlcklkID0gU3RyaW5nKCkpOwogCi0gICAgdm9pZCBzZXRSZXNv
dXJjZXNEYXRhU2l6ZUxpbWl0cyhpbnQgbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplLCBpbnQg
bWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpOworICAgIHZvaWQgc2V0UmVzb3VyY2Vz
RGF0YVNpemVMaW1pdHModW5zaWduZWQgbG9uZyBsb25nIG1heGltdW1SZXNvdXJjZXNDb250ZW50
U2l6ZSwgdW5zaWduZWQgbG9uZyBsb25nIG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXpl
KTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGVuc3VyZU5vRGF0YUZvclJlcXVlc3RJZChjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCk7Ci0gICAgYm9vbCBlbnN1cmVGcmVlU3BhY2UoaW50IHNpemUpOwor
ICAgIGJvb2wgZW5zdXJlRnJlZVNwYWNlKHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKTsKIAogICAg
IERlcXVlPFN0cmluZz4gbV9yZXF1ZXN0SWRzRGVxdWU7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBSZXNvdXJjZURhdGEqPiBSZXNvdXJjZURhdGFNYXA7CiAgICAgUmVzb3VyY2VEYXRh
TWFwIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXA7Ci0gICAgaW50IG1fY29udGVudFNpemU7
Ci0gICAgaW50IG1fbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplOwotICAgIGludCBtX21heGlt
dW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX2Nv
bnRlbnRTaXplOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX21heGltdW1SZXNvdXJjZXNDb250
ZW50U2l6ZTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9tYXhpbXVtU2luZ2xlUmVzb3VyY2VD
b250ZW50U2l6ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCmluZGV4IGZk
NmY2MWMwYzNmMTZhZjM4ZmVmYWMzNTM4ODQ4YzMyMGMwMDFmNDcuLjcwMTgxN2ZkNTc0NWQ1YWQ1
NjdkYTJiMWRmYmU0MTI5MmMyNWYxNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcwpAQCAtMjkwLDcgKzI5MCw3IEBAIFdl
Ykluc3BlY3Rvci5OZXR3b3JrRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAv
LyBGSVhNRTogbW92ZSB0aGlzIGNoZWNrIHRvIHRoZSBiYWNrZW5kLgogICAgICAgICAgICAgaWYg
KCFyZWRpcmVjdFJlc3BvbnNlKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IHRoaXMucmVzcG9uc2VSZWNlaXZlZChyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCB0aW1l
LCAiT3RoZXIiLCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgICAgIHRoaXMucmVzcG9uc2VS
ZWNlaXZlZChyZXF1ZXN0SWQsIHVuZGVmaW5lZCwgZnJhbWVJZCwgbG9hZGVySWQsIHRpbWUsICJP
dGhlciIsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgICAgICAgICAgbmV0d29ya1JlcXVlc3QgPSB0
aGlzLl9hcHBlbmRSZWRpcmVjdChyZXF1ZXN0SWQsIHRpbWUsIHJlcXVlc3QudXJsKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBuZXR3b3JrUmVxdWVzdCA9IHRoaXMuX2NyZWF0ZU5ldHdv
cmtSZXF1ZXN0KHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIHJlcXVlc3QudXJsLCBkb2N1
bWVudFVSTCwgaW5pdGlhdG9yKTsKQEAgLTMxNSwxMyArMzE1LDE0IEBAIFdlYkluc3BlY3Rvci5O
ZXR3b3JrRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAKICAgICAvKioKICAgICAgKiBAcGFyYW0g
e05ldHdvcmtBZ2VudC5SZXF1ZXN0SWR9IHJlcXVlc3RJZAorICAgICAqIEBwYXJhbSB7TmV0d29y
a0FnZW50LlJlc291cmNlSWR9IHJlc291cmNlSWQKICAgICAgKiBAcGFyYW0ge05ldHdvcmtBZ2Vu
dC5GcmFtZUlkfSBmcmFtZUlkCiAgICAgICogQHBhcmFtIHtOZXR3b3JrQWdlbnQuTG9hZGVySWR9
IGxvYWRlcklkCiAgICAgICogQHBhcmFtIHtOZXR3b3JrQWdlbnQuVGltZXN0YW1wfSB0aW1lCiAg
ICAgICogQHBhcmFtIHtQYWdlQWdlbnQuUmVzb3VyY2VUeXBlfSByZXNvdXJjZVR5cGUKICAgICAg
KiBAcGFyYW0ge05ldHdvcmtBZ2VudC5SZXNwb25zZX0gcmVzcG9uc2UKICAgICAgKi8KLSAgICBy
ZXNwb25zZVJlY2VpdmVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCB0
aW1lLCByZXNvdXJjZVR5cGUsIHJlc3BvbnNlKQorICAgIHJlc3BvbnNlUmVjZWl2ZWQ6IGZ1bmN0
aW9uKHJlcXVlc3RJZCwgcmVzb3VyY2VJZCwgZnJhbWVJZCwgbG9hZGVySWQsIHRpbWUsIHJlc291
cmNlVHlwZSwgcmVzcG9uc2UpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogbW92ZSB0aGlzIGNo
ZWNrIHRvIHRoZSBiYWNrZW5kLgogICAgICAgICBpZiAodGhpcy5faXNOdWxsKHJlc3BvbnNlKSkK
QEAgLTMzMiw2ICszMzMsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90
eXBlID0gewogICAgICAgICAgICAgLy8gV2UgbWlzc2VkIHRoZSByZXF1ZXN0V2lsbEJlU2VudC4K
ICAgICAgICAgICAgIHZhciBldmVudERhdGEgPSB7fTsKICAgICAgICAgICAgIGV2ZW50RGF0YS51
cmwgPSByZXNwb25zZS51cmw7CisgICAgICAgICAgICBldmVudERhdGEucmVzb3VyY2VJZCA9IHJl
c3BvbnNlLnJlc291cmNlSWQ7CiAgICAgICAgICAgICBldmVudERhdGEuZnJhbWVJZCA9IGZyYW1l
SWQ7CiAgICAgICAgICAgICBldmVudERhdGEubG9hZGVySWQgPSBsb2FkZXJJZDsKICAgICAgICAg
ICAgIGV2ZW50RGF0YS5yZXNvdXJjZVR5cGUgPSByZXNvdXJjZVR5cGU7CkBAIC0zNDIsOSArMzQ0
LDkgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICBuZXR3b3JrUmVxdWVzdC5yZXNwb25zZVJlY2VpdmVkVGltZSA9IHRpbWU7CiAgICAgICAg
IG5ldHdvcmtSZXF1ZXN0LnR5cGUgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlc1tyZXNvdXJj
ZVR5cGVdOworICAgICAgICBuZXR3b3JrUmVxdWVzdC5yZXNvdXJjZUlkID0gcmVzb3VyY2VJZDsK
IAogICAgICAgICB0aGlzLl91cGRhdGVOZXR3b3JrUmVxdWVzdFdpdGhSZXNwb25zZShuZXR3b3Jr
UmVxdWVzdCwgcmVzcG9uc2UpOwotCiAgICAgICAgIHRoaXMuX3VwZGF0ZU5ldHdvcmtSZXF1ZXN0
KG5ldHdvcmtSZXF1ZXN0KTsKICAgICB9LAogCkBAIC00MDAsNiArNDAyLDcgQEAgV2ViSW5zcGVj
dG9yLk5ldHdvcmtEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKIAogICAgIC8qKgogICAgICAqIEBw
YXJhbSB7TmV0d29ya0FnZW50LlJlcXVlc3RJZH0gcmVxdWVzdElkCisgICAgICogQHBhcmFtIHtO
ZXR3b3JrQWdlbnQuUmVzb3VyY2VJZH0gcmVzb3VyY2VJZAogICAgICAqIEBwYXJhbSB7TmV0d29y
a0FnZW50LkZyYW1lSWR9IGZyYW1lSWQKICAgICAgKiBAcGFyYW0ge05ldHdvcmtBZ2VudC5Mb2Fk
ZXJJZH0gbG9hZGVySWQKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZG9jdW1lbnRVUkwKQEAgLTQw
Nyw5ICs0MTAsMTAgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRjaGVyLnByb3RvdHlwZSA9
IHsKICAgICAgKiBAcGFyYW0ge05ldHdvcmtBZ2VudC5Jbml0aWF0b3J9IGluaXRpYXRvcgogICAg
ICAqIEBwYXJhbSB7TmV0d29ya0FnZW50LkNhY2hlZFJlc291cmNlfSBjYWNoZWRSZXNvdXJjZQog
ICAgICAqLwotICAgIHJlcXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGU6IGZ1bmN0aW9uKHJlcXVl
c3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIGRvY3VtZW50VVJMLCB0aW1lLCBpbml0aWF0b3IsIGNh
Y2hlZFJlc291cmNlKQorICAgIHJlcXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGU6IGZ1bmN0aW9u
KHJlcXVlc3RJZCwgcmVzb3VyY2VJZCwgZnJhbWVJZCwgbG9hZGVySWQsIGRvY3VtZW50VVJMLCB0
aW1lLCBpbml0aWF0b3IsIGNhY2hlZFJlc291cmNlKQogICAgIHsKICAgICAgICAgdmFyIG5ldHdv
cmtSZXF1ZXN0ID0gdGhpcy5fY3JlYXRlTmV0d29ya1JlcXVlc3QocmVxdWVzdElkLCBmcmFtZUlk
LCBsb2FkZXJJZCwgY2FjaGVkUmVzb3VyY2UudXJsLCBkb2N1bWVudFVSTCwgaW5pdGlhdG9yKTsK
KyAgICAgICAgbmV0d29ya1JlcXVlc3QucmVzb3VyY2VJZCA9IHJlc291cmNlSWQ7CiAgICAgICAg
IHRoaXMuX3VwZGF0ZU5ldHdvcmtSZXF1ZXN0V2l0aENhY2hlZFJlc291cmNlKG5ldHdvcmtSZXF1
ZXN0LCBjYWNoZWRSZXNvdXJjZSk7CiAgICAgICAgIG5ldHdvcmtSZXF1ZXN0LmNhY2hlZCA9IHRy
dWU7CiAgICAgICAgIG5ldHdvcmtSZXF1ZXN0LnJlcXVlc3RNZXRob2QgPSAiR0VUIjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKaW5k
ZXggYTgyYTU2MTY4MmIzMTZiYzg3YjNkYTA0YTBhMzM5YTQ0ZjRlYjZhYS4uZDM0M2QzOGE2MmFi
ODI3YTU2ZTcxZDM5YzdiNTQ1ZjJkN2M5OTU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAgLTc5OSwxMyArNzk5LDYgQEAg
V2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
c2NoZWR1bGVSZWZyZXNoKCk7CiAgICAgfSwKIAotICAgIGNsZWFyOiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICBpZiAodGhpcy5fcHJlc2VydmVMb2dUb2dnbGUudG9nZ2xlZCkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5fcmVzZXQoKTsKLSAgICB9LAotCiAgICAgX21haW5G
cmFtZU5hdmlnYXRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5f
cHJlc2VydmVMb2dUb2dnbGUudG9nZ2xlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1JlcXVlc3QuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtSZXF1ZXN0LmpzCmluZGV4IDdmODk5NWE4NzY2ZGQzZjkw
OGU4Y2EyNWI5NWI5MjFkOGZhMWEwNjAuLmZlMjM0ODhiZTZhOGVkNGM0NzE3NTQ5MjdhNDlhZGE4
NDE3NmJlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya1JlcXVlc3QuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9OZXR3b3JrUmVxdWVzdC5qcwpAQCAtODIsNiArODIsMTYgQEAgV2ViSW5zcGVjdG9yLk5ldHdv
cmtSZXF1ZXN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVxdWVzdElkID0gcmVxdWVz
dElkOwogICAgIH0sCiAKKyAgICBnZXQgcmVzb3VyY2VJZCgpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fcmVzb3VyY2VJZDsKKyAgICB9LAorCisgICAgc2V0IHJlc291cmNlSWQoeCkKKyAg
ICB7CisgICAgICAgIHRoaXMuX3Jlc291cmNlSWQgPSB4OworICAgIH0sCisKICAgICAvKioKICAg
ICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcwppbmRleCA4MzI5YTBiN2ExMWM3ZWRjZTM4OTljNjdl
NjRkNTRhYTRkYWExY2JjLi5jMjJlYTJiZjE3YjE2YWEzMmIwOWZlZTZiNDMwNmRiN2QyZWZiMjVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMK
QEAgLTcxLDYgKzcxLDE2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0OwogICAgIH0sCiAKKyAgICBnZXQgcmVzb3VyY2VJ
ZCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VJZDsKKyAgICB9LAorCisg
ICAgc2V0IHJlc291cmNlSWQoeCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jlc291cmNlSWQgPSB4
OworICAgIH0sCisKICAgICAvKioKICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJl
ZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRy
ZWVNb2RlbC5qcwppbmRleCBlMGRmYmFiYjFjODhhOTcyYmM0Y2M1NGRmZWRlY2NhNTI5ZTgzN2Jj
Li5jNDIyODg3YTFiYmZjMWRhYjA5NjIwYWJmOWI5ZTU2ODkyOTdjNDRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwu
anMKQEAgLTYwLDYgKzYwLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50
VHlwZXMgPSB7CiAgICAgRnJhbWVEZXRhY2hlZDogIkZyYW1lRGV0YWNoZWQiLAogICAgIE1haW5G
cmFtZU5hdmlnYXRlZDogIk1haW5GcmFtZU5hdmlnYXRlZCIsCiAgICAgUmVzb3VyY2VBZGRlZDog
IlJlc291cmNlQWRkZWQiLAorICAgIFJlc291cmNlUmVtb3ZlZDogIlJlc291cmNlUmVtb3ZlZCIs
CiAgICAgV2lsbExvYWRDYWNoZWRSZXNvdXJjZXM6ICJXaWxsTG9hZENhY2hlZFJlc291cmNlcyIs
CiAgICAgQ2FjaGVkUmVzb3VyY2VzTG9hZGVkOiAiQ2FjaGVkUmVzb3VyY2VzTG9hZGVkIiwKICAg
ICBET01Db250ZW50TG9hZGVkOiAiRE9NQ29udGVudExvYWRlZCIsCkBAIC0xODgsNiArMTg5LDIz
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgfSwK
IAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7UGFnZUFnZW50LnJlc291cmNlSWR9IHJlc291cmNl
SWQKKyAgICAgKi8KKyAgICBfcmVzb3VyY2VEZXN0cm95ZWQ6IGZ1bmN0aW9uKHJlc291cmNlSWQp
CisgICAgeworICAgICAgICBmdW5jdGlvbiBjaGVja1Jlc291cmNlKHJlc291cmNlKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAocmVzb3VyY2UucmVzb3VyY2VJZCAhPT0gcmVzb3VyY2VJZCkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB2YXIgZnJhbWUgPSB0aGlzLl9m
cmFtZXNbcmVzb3VyY2UuZnJhbWVJZF07CisgICAgICAgICAgICBpZiAoZnJhbWUpCisgICAgICAg
ICAgICAgICAgZnJhbWUuX3JlbW92ZVJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgdGhpcy5mb3JBbGxSZXNvdXJjZXMoY2hlY2tSZXNvdXJjZS5iaW5kKHRo
aXMpKTsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZl
bnR9IGV2ZW50CiAgICAgICovCiAgICAgX29uUmVxdWVzdFVwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50
KQpAQCAtMzQ0LDYgKzM2Miw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWVUcmVlUGF5bG9hZC5y
ZXNvdXJjZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBzdWJyZXNvdXJjZSA9IGZy
YW1lVHJlZVBheWxvYWQucmVzb3VyY2VzW2ldOwogICAgICAgICAgICAgdmFyIHJlc291cmNlID0g
dGhpcy5fY3JlYXRlUmVzb3VyY2VGcm9tRnJhbWVQYXlsb2FkKGZyYW1lUGF5bG9hZCwgc3VicmVz
b3VyY2UudXJsLCBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlc1tzdWJyZXNvdXJjZS50eXBlXSwg
c3VicmVzb3VyY2UubWltZVR5cGUpOworICAgICAgICAgICAgcmVzb3VyY2UucmVzb3VyY2VJZCA9
IHN1YnJlc291cmNlLnJlc291cmNlSWQ7CiAgICAgICAgICAgICBmcmFtZS5hZGRSZXNvdXJjZShy
ZXNvdXJjZSk7CiAgICAgICAgIH0KICAgICB9LApAQCAtNTM0LDEyICs1NTMsMjUgQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlVHJlZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVy
biByZXNvdXJjZTsKICAgICAgICAgfQogICAgICAgICByZXNvdXJjZSA9IG5ldyBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UocmVxdWVzdCwgcmVxdWVzdC51cmwsIHJlcXVlc3QuZG9jdW1lbnRVUkwsIHJl
cXVlc3QuZnJhbWVJZCwgcmVxdWVzdC5sb2FkZXJJZCwgcmVxdWVzdC50eXBlLCByZXF1ZXN0Lm1p
bWVUeXBlKTsKKyAgICAgICAgcmVzb3VyY2UucmVzb3VyY2VJZCA9IHJlcXVlc3QucmVzb3VyY2VJ
ZDsKICAgICAgICAgdGhpcy5fcmVzb3VyY2VzTWFwW3Jlc291cmNlLnVybF0gPSByZXNvdXJjZTsK
ICAgICAgICAgdGhpcy5fbW9kZWwuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLlJlc291cmNlQWRkZWQsIHJlc291cmNlKTsK
ICAgICAgICAgcmV0dXJuIHJlc291cmNlOwogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZX0gcmVzb3VyY2UKKyAgICAgKi8KKyAgICBfcmVtb3Zl
UmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3Jl
c291cmNlc01hcFtyZXNvdXJjZS51cmxdICE9PSByZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBkZWxldGUgdGhpcy5fcmVzb3VyY2VzTWFwW3Jlc291cmNlLnVybF0KKyAg
ICAgICAgdGhpcy5fbW9kZWwuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLlJlc291cmNlUmVtb3ZlZCwgcmVzb3VyY2UpOwor
ICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAcmV0dXJuIHtBcnJheS48V2ViSW5zcGVjdG9yLlJl
c291cmNlPn0KICAgICAgKi8KICAgICByZXNvdXJjZXM6IGZ1bmN0aW9uKCkKQEAgLTYxNSw2ICs2
NDcsMTEgQEAgV2ViSW5zcGVjdG9yLlBhZ2VEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICBm
cmFtZURldGFjaGVkOiBmdW5jdGlvbihmcmFtZUlkKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVz
b3VyY2VUcmVlTW9kZWwuX2ZyYW1lRGV0YWNoZWQoZnJhbWVJZCk7CisgICAgfSwKKworICAgIHJl
c291cmNlRGVzdHJveWVkOiBmdW5jdGlvbihyZXNvdXJjZUlkKQorICAgIHsKKyAgICAgICAgdGhp
cy5fcmVzb3VyY2VUcmVlTW9kZWwuX3Jlc291cmNlRGVzdHJveWVkKHJlc291cmNlSWQpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VzUGFuZWwuanMKaW5kZXggMTEzYjk1YmU5NTdlYmM0MTVmN2JkNmRjOWY1Zjc0NDU4NGFl
MzNmZC4uY2Q4ZDBjNDM3ODNjYTBiM2Q4OTUwN2IzNWZkZTFlMTgwYjZhNjc5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpz
CkBAIC0yMDAsNiArMjAwLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuRnJhbWVOYXZp
Z2F0ZWQsIHRoaXMuX2ZyYW1lTmF2aWdhdGVkLCB0aGlzKTsKICAgICAgICAgV2ViSW5zcGVjdG9y
LnJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNl
VHJlZU1vZGVsLkV2ZW50VHlwZXMuRnJhbWVEZXRhY2hlZCwgdGhpcy5fZnJhbWVEZXRhY2hlZCwg
dGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLlJlc291cmNl
QWRkZWQsIHRoaXMuX3Jlc291cmNlQWRkZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3Iu
cmVzb3VyY2VUcmVlTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VU
cmVlTW9kZWwuRXZlbnRUeXBlcy5SZXNvdXJjZVJlbW92ZWQsIHRoaXMuX3Jlc291cmNlUmVtb3Zl
ZCwgdGhpcyk7CiAKICAgICAgICAgZnVuY3Rpb24gcG9wdWxhdGVGcmFtZShmcmFtZSkKICAgICAg
ICAgewpAQCAtMjYwLDYgKzI2MSwxOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICBmcmFtZVRyZWVFbGVtZW50LmFwcGVuZFJlc291cmNlKHJlc291
cmNlKTsKICAgICB9LAogCisgICAgX3Jlc291cmNlUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgeworICAgICAgICB2YXIgcmVzb3VyY2UgPSBldmVudC5kYXRhOworICAgICAgICB2YXIgZnJh
bWVJZCA9IHJlc291cmNlLmZyYW1lSWQ7CisKKyAgICAgICAgdmFyIGZyYW1lVHJlZUVsZW1lbnQg
PSB0aGlzLl90cmVlRWxlbWVudEZvckZyYW1lSWRbZnJhbWVJZF07CisgICAgICAgIGlmICghZnJh
bWVUcmVlRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmcmFtZVRyZWVF
bGVtZW50LnJlbW92ZVJlc291cmNlKHJlc291cmNlKTsKKyAgICB9LAorCiAgICAgX2ZyYW1lTmF2
aWdhdGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBmcmFtZSA9IGV2ZW50
LmRhdGE7CkBAIC0xMDc0LDYgKzEwODcsMjQgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1l
bnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90cmVlRWxlbWVudEZvclJlc291cmNlW3Jl
c291cmNlLnVybF0gPSByZXNvdXJjZVRyZWVFbGVtZW50OwogICAgIH0sCiAKKyAgICByZW1vdmVS
ZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgeworICAgICAgICB2YXIgY2F0ZWdvcnlO
YW1lID0gcmVzb3VyY2UudHlwZS5uYW1lKCk7CisgICAgICAgIHZhciBjYXRlZ29yeUVsZW1lbnQg
PSByZXNvdXJjZS50eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVudCA/
IHRoaXMgOiB0aGlzLl9jYXRlZ29yeUVsZW1lbnRzW2NhdGVnb3J5TmFtZV07CisgICAgICAgIGlm
ICghY2F0ZWdvcnlFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIgdHJl
ZUVsZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVudEZvclJlc291cmNlW3Jlc291cmNlLnVybF07Cisg
ICAgICAgIGlmICghdHJlZUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRl
bGV0ZSB0aGlzLl90cmVlRWxlbWVudEZvclJlc291cmNlW3Jlc291cmNlLnVybF07CisgICAgICAg
IAorICAgICAgICBjYXRlZ29yeUVsZW1lbnQucmVtb3ZlQ2hpbGQodHJlZUVsZW1lbnQpOworICAg
ICAgICBpZiAoY2F0ZWdvcnlFbGVtZW50ICE9PSB0aGlzICYmICFjYXRlZ29yeUVsZW1lbnQuY2hp
bGRyZW4ubGVuZ3RoKSB7CisgICAgICAgICAgICB0aGlzLnJlbW92ZUNoaWxkKGNhdGVnb3J5RWxl
bWVudCk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fY2F0ZWdvcnlFbGVtZW50c1tjYXRlZ29y
eU5hbWVdOworICAgICAgICB9CisgICAgfSwKKwogICAgIHJlc291cmNlQnlVUkw6IGZ1bmN0aW9u
KHVybCkKICAgICB7CiAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMuX3RyZWVFbGVtZW50
Rm9yUmVzb3VyY2VbdXJsXTsKQEAgLTExODMsNiArMTIxNCwxMyBAQCBXZWJJbnNwZWN0b3IuRnJh
bWVSZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdXBkYXRl
RXJyb3JzQW5kV2FybmluZ3NCdWJibGVzKCk7CiAgICAgfSwKIAorICAgIG9uZGV0YWNoOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9yZXNvdXJjZS5yZW1vdmVFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudHMuTWVzc2FnZUFkZGVkLCB0aGlzLl9jb25zb2xl
TWVzc2FnZUFkZGVkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2UucmVtb3ZlRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnRzLk1lc3NhZ2VzQ2xlYXJlZCwgdGhp
cy5fY29uc29sZU1lc3NhZ2VzQ2xlYXJlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX3Jlc291cmNl
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50cy5SZXZpc2lv
bkFkZGVkLCB0aGlzLl9yZXZpc2lvbkFkZGVkLCB0aGlzKTsKKyAgICB9LAorCiAgICAgX29uZHJh
Z3N0YXJ0OiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zl
ci5zZXREYXRhKCJ0ZXh0L3BsYWluIiwgdGhpcy5fcmVzb3VyY2UuY29udGVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5lLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90cmVlb3V0bGluZS5qcwppbmRleCBk
ZGJkYmIwZTg1NmQ0ZDcxNTcwYWM1NzdkYmM0NWNkNzM4MTY0NzgxLi5jYmExZmRkNmJkNjJlM2Qx
Yzc3MzhkYjkxZjQ3MDBjMjZkZmI1MzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvdHJlZW91dGxpbmUuanMKQEAgLTc5MSw2ICs3OTEsOCBAQCBUcmVlRWxl
bWVudC5wcm90b3R5cGUuX2F0dGFjaCA9IGZ1bmN0aW9uKCkKIAogVHJlZUVsZW1lbnQucHJvdG90
eXBlLl9kZXRhY2ggPSBmdW5jdGlvbigpCiB7CisgICAgaWYgKHRoaXMub25kZXRhY2gpCisgICAg
ICAgIHRoaXMub25kZXRhY2goKTsKICAgICBpZiAodGhpcy5fbGlzdEl0ZW1Ob2RlICYmIHRoaXMu
X2xpc3RJdGVtTm9kZS5wYXJlbnROb2RlKQogICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9saXN0SXRlbU5vZGUpOwogICAgIGlmICh0aGlzLl9j
aGlsZHJlbkxpc3ROb2RlICYmIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUucGFyZW50Tm9kZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDM5
OThlZmQzMjYzMzNmYWIyMmE1M2RjNGZkYTQwMjJmOGUzOThiNTQuLjkxZmNkZjAxMGEzMmMwNTNm
NzEyYzZjYTFiNDE3MTdiZTRkOTRjZTEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5o
IgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIktVUkwu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUHVyZ2VhYmxlQnVmZmVyLmgiCkBA
IC0xNzYsNyArMTc3LDcgQEAgQ2FjaGVkUmVzb3VyY2U6On5DYWNoZWRSZXNvdXJjZSgpCiAgICAg
QVNTRVJUKCFpbkNhY2hlKCkpOwogICAgIEFTU0VSVCghbV9kZWxldGVkKTsKICAgICBBU1NFUlQo
dXJsKCkuaXNOdWxsKCkgfHwgbWVtb3J5Q2FjaGUoKS0+cmVzb3VyY2VGb3JVUkwoS1VSTChQYXJz
ZWRVUkxTdHJpbmcsIHVybCgpKSkgIT0gdGhpcyk7Ci0gICAgCisKICNpZm5kZWYgTkRFQlVHCiAg
ICAgbV9kZWxldGVkID0gdHJ1ZTsKICAgICBjYWNoZWRSZXNvdXJjZUxlYWtDb3VudGVyLmRlY3Jl
bWVudCgpOwpAQCAtNDMwLDkgKzQzMSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnJlbW92ZUNs
aWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQogICAgICAgICBkaWRSZW1vdmVDbGll
bnQoY2xpZW50KTsKICAgICB9CiAKLSAgICBpZiAoY2FuRGVsZXRlKCkgJiYgIWluQ2FjaGUoKSkK
LSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgZWxzZSBpZiAoIWhhc0NsaWVudHMoKSAmJiBpbkNh
Y2hlKCkpIHsKKyAgICBpZiAoIWRlbGV0ZUlmUG9zc2libGUoKSAmJiAhaGFzQ2xpZW50cygpICYm
IGluQ2FjaGUoKSkgewogICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmVGcm9tTGl2ZVJlc291
cmNlc1NpemUodGhpcyk7CiAgICAgICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZUZyb21MaXZlRGVj
b2RlZFJlc291cmNlc0xpc3QodGhpcyk7CiAgICAgICAgIGFsbENsaWVudHNSZW1vdmVkKCk7CkBA
IC00NDksMTAgKzQ0OCwxNCBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpyZW1vdmVDbGllbnQoQ2Fj
aGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCkKICAgICAvLyBUaGlzIG9iamVjdCBtYXkgYmUgZGVh
ZCBoZXJlLgogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpkZWxldGVJZlBvc3NpYmxlKCkKK2Jv
b2wgQ2FjaGVkUmVzb3VyY2U6OmRlbGV0ZUlmUG9zc2libGUoKQogewotICAgIGlmIChjYW5EZWxl
dGUoKSAmJiAhaW5DYWNoZSgpKQorICAgIGlmIChjYW5EZWxldGUoKSAmJiAhaW5DYWNoZSgpKSB7
CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lDYWNoZWRSZXNv
dXJjZSh0aGlzKTsKICAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAgICAgCiB2b2lkIENhY2hlZFJlc291cmNlOjpz
ZXREZWNvZGVkU2l6ZSh1bnNpZ25lZCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCA3ZmJmNzMzNjU4NTViMzhhNzA1M2M1OTJkYjYwNmY4
ZjFlZDJhODRhLi45YWExZjZhMmU5ZWM1YzUwMTQ3YjIwMWIwYzdiMDE1YWI2NThkZGQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTE1LDcg
KzExNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVu
dCopOwogICAgIHZvaWQgcmVtb3ZlQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7CiAgICAg
Ym9vbCBoYXNDbGllbnRzKCkgY29uc3QgeyByZXR1cm4gIW1fY2xpZW50cy5pc0VtcHR5KCkgfHwg
IW1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2suaXNFbXB0eSgpOyB9Ci0gICAgdm9pZCBkZWxldGVJ
ZlBvc3NpYmxlKCk7CisgICAgYm9vbCBkZWxldGVJZlBvc3NpYmxlKCk7CiAKICAgICBlbnVtIFBy
ZWxvYWRSZXN1bHQgewogICAgICAgICBQcmVsb2FkTm90UmVmZXJlbmNlZCwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IGUxOTg3YzNmZTM4Mjc5MzJjZGEzYmNjODMyYzUxY2NhOGZhZDE2MzEuLjkxMjUyMTBkYzQ5MDI0
MTUzMTUyYWI0NTFkOTUxMWM5ZmU4NzUzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtODEzLDkgKzgxMyw3IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNsZWFyUHJlbG9hZHMoKQogICAgIGZvciAoTGlz
dEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPjo6aXRlcmF0b3IgaXQgPSBtX3ByZWxvYWRzLT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlcyA9ICpp
dDsKICAgICAgICAgcmVzLT5kZWNyZWFzZVByZWxvYWRDb3VudCgpOwotICAgICAgICBpZiAocmVz
LT5jYW5EZWxldGUoKSAmJiAhcmVzLT5pbkNhY2hlKCkpCi0gICAgICAgICAgICBkZWxldGUgcmVz
OwotICAgICAgICBlbHNlIGlmIChyZXMtPnByZWxvYWRSZXN1bHQoKSA9PSBDYWNoZWRSZXNvdXJj
ZTo6UHJlbG9hZE5vdFJlZmVyZW5jZWQpCisgICAgICAgIGlmICghcmVzLT5kZWxldGVJZlBvc3Np
YmxlKCkgJiYgcmVzLT5wcmVsb2FkUmVzdWx0KCkgPT0gQ2FjaGVkUmVzb3VyY2U6OlByZWxvYWRO
b3RSZWZlcmVuY2VkKQogICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlKHJlcyk7CiAg
ICAgfQogICAgIG1fcHJlbG9hZHMuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IDI5OWQxMGE3MDUxMjhiNmFjZmYyMzhmZTA3MTk5YTk5
NDU5ZDQyNTQuLjVkYzA0NzQwMmNiM2Q3NDhlZDk3MzQ3OWU2NDIyODc1OTM3ODg5MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtNDAyLDggKzQw
Miw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OmV2aWN0KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkK
ICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJUKG1fcmVzb3VyY2VzLmdldChyZXNvdXJjZS0+dXJs
KCkpICE9IHJlc291cmNlKTsKIAotICAgIGlmIChyZXNvdXJjZS0+Y2FuRGVsZXRlKCkpCi0gICAg
ICAgIGRlbGV0ZSByZXNvdXJjZTsKKyAgICByZXNvdXJjZS0+ZGVsZXRlSWZQb3NzaWJsZSgpOwog
fQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGZhc3RMb2cyKHVuc2lnbmVkIGkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154351</attachid>
            <date>2012-07-25 07:37:51 -0700</date>
            <delta_ts>2012-07-27 07:32:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92108-20120725183740.patch</filename>
            <type>text/plain</type>
            <size>26995</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI2MzliNDc1YzJjMTU4
MmFjYjZlYjM3YmRiYjQ4MGQzMmIwYzBmYy4uYjFlMmY0MTc2YjcwYmM2ZDM5MTJiNmFhZWUwNDky
YjY4YzZkNDgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTA3LTI1ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJlc291cmNlIGFnZW50J3MgcmVmZXJlbmNlIHRvIGNhY2hlZCByZXNvdXJjZXMgc2hvdWxk
IGJlIHdlYWsuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MjEwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5ldHdvcmtSZXNvdXJjZXNEYXRhIG5vdyBzdG9yZXMgYSByYXcgcG9pbnRlciB0byBDYWNoZWRS
ZXNvdXJjZS4KKyAgICAgICAgQ2FjaGVkUmVzb3VyY2Ugbm93IG5vdGlmaWVzIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbiB0aGF0IGl0IHdpbGwgYmUgZGVzdHJveWVkLgorICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24gc3RvcmVzIGEgc2V0IG9mIEluc3RydW1lbnRpbmdBZ2VudHMgYW5k
IGJyb2FkY2FzdHMgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZSBldmVudCB0byBhbGwgYXZhaWxh
YmxlIHJlc291cmNlQWdlbnRzLgorICAgICAgICBEZXN0cm95ZWQgcmVzb3VyY2VzIGNvbnRlbnQg
aXMgc2F2ZWQgdG8gTmV0d29ya1Jlc291cmNlc0RhdGEuCisgICAgICAgIENoYW5nZWQgY29udGVu
dCBzaXplIHZhcmlhYmxlcyB0eXBlIGluIE5ldHdvcmtSZXNvdXJjZXNEYXRhIGZyb20gaW50IHRv
IHVuc2lnbmVkIGxvbmcgbG9uZy4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3Bl
Y3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
aW5zcGVjdGVkUGFnZURlc3Ryb3llZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZWdpc3Rlcklu
c3RydW1lbnRpbmdBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp1bnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6Z2V0UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRDb250
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGE6OmRhdGFMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpzZXRSZXNvdXJjZUNvbnRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZURlY29kZURh
dGFUb0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnJl
bW92ZUNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnNldFJlc291cmNlc0RhdGFTaXplTGltaXRzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjplbnN1cmVGcmVlU3BhY2UpOgor
ICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAoUmVz
b3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6OmJhc2U2NEVuY29kZWQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6Y2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAoTmV0d29y
a1Jlc291cmNlc0RhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6fkNhY2hlZFJlc291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZW1vdmVDbGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRlbGV0ZUlmUG9zc2libGUpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2Up
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2xlYXJQcmVsb2Fkcyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUNhY2hlOjpldmljdCk6CisKIDIwMTItMDctMjUgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1h
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkxOTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKaW5kZXggYzNmOWYwOGIzMzlkYmFjMWI2NzIwOTA3OTRhNzU0OWIwMDM4
Mjg4Yy4uYWI2ZTM3N2MxNWNhZjg1MDQxYTgwZDVlMzQ1MDYzNjcwM2YwNWM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTY1
LDYgKzE2NSw4IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFn
ZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAjaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpCiAgICAgcnVudGltZUFnZW50LT5zZXRTY3JpcHREZWJ1Z1NlcnZlcigmbV9k
ZWJ1Z2dlckFnZW50LT5zY3JpcHREZWJ1Z1NlcnZlcigpKTsKICNlbmRpZgorCisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpyZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMobV9pbnN0cnVt
ZW50aW5nQWdlbnRzLmdldCgpKTsKIH0KIAogSW5zcGVjdG9yQ29udHJvbGxlcjo6fkluc3BlY3Rv
ckNvbnRyb2xsZXIoKQpAQCAtMTgzLDYgKzE4NSw3IEBAIFBhc3NPd25QdHI8SW5zcGVjdG9yQ29u
dHJvbGxlcj4gSW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlKFBhZ2UqIHBhZ2UsIEluc3BlY3Rv
CiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKQogewog
ICAgIGRpc2Nvbm5lY3RGcm9udGVuZCgpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
dW5yZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgp
KTsKICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+ZGlzY29ubmVjdCgpOwogICAgIG1faW5z
cGVjdG9yQ2xpZW50LT5pbnNwZWN0b3JEZXN0cm95ZWQoKTsKICAgICBtX2luc3BlY3RvckNsaWVu
dCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwCmluZGV4IDI5NjE2NWZkNzdiNDQ1OTQ4MWFiM2EwNThkYTcyZWQwZGYw
ZDVhOWUuLmVlYjQ2NzA4MDVlZjE2NDdkOGY5NDE3Nzk5ODUzYTk4Y2NmYTEyYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwCkBAIC04MCw2ICs4MCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc2V0VGltZXJF
dmVudE5hbWUgPSAic2V0VGltZXIiOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGNsZWFyVGlt
ZXJFdmVudE5hbWUgPSAiY2xlYXJUaW1lciI7CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgdGlt
ZXJGaXJlZEV2ZW50TmFtZSA9ICJ0aW1lckZpcmVkIjsKIAorbmFtZXNwYWNlIHsKK3N0YXRpYyBI
YXNoU2V0PEluc3RydW1lbnRpbmdBZ2VudHMqPiogaW5zdHJ1bWVudGluZ0FnZW50c1NldCA9IDA7
Cit9CisKIGludCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNfZnJvbnRlbmRDb3VudGVyID0g
MDsKIAogc3RhdGljIGJvb2wgZXZlbnRIYXNMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8RXZl
bnRDb250ZXh0PiYgYW5jZXN0b3JzKQpAQCAtODQ0LDYgKzg0OCwxOCBAQCB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWVJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMqCiAgICAgICAgIGluc3BlY3RvclBhZ2VBZ2VudC0+bG9hZGVyRGV0YWNoZWRGcm9t
RnJhbWUobG9hZGVyKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxE
ZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkK
K3sKKyAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHNTZXQpCisgICAgICAgIHJldHVybjsKKyAg
ICBIYXNoU2V0PEluc3RydW1lbnRpbmdBZ2VudHMqPjo6aXRlcmF0b3IgZW5kID0gaW5zdHJ1bWVu
dGluZ0FnZW50c1NldC0+ZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PEluc3RydW1lbnRpbmdBZ2Vu
dHMqPjo6aXRlcmF0b3IgaXQgPSBpbnN0cnVtZW50aW5nQWdlbnRzU2V0LT5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKKyAgICAgICAgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9ICppdDsKKyAgICAgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIGluc3Bl
Y3RvclJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KCkpCisgICAgICAgICAgICBpbnNwZWN0b3JSZXNvdXJjZUFnZW50LT53aWxsRGVzdHJv
eUNhY2hlZFJlc291cmNlKGNhY2hlZFJlc291cmNlKTsKKyAgICB9Cit9CisKIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhU
TUxJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVk
IGludCBsZW5ndGgsIHVuc2lnbmVkIGludCBzdGFydExpbmUsIEZyYW1lKiBmcmFtZSkKIHsKICAg
ICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKQEAgLTExNDEsNiArMTE1NywyMiBAQCBXVEY6OlRo
cmVhZFNwZWNpZmljPEluc3BlY3RvclRpbWVsaW5lQWdlbnQqPiYgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp0aHJlYWRTcAogICAgIHJldHVybiAqaW5zdGFuY2U7CiB9CiAKK3ZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpyZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3sKKyAgICBpZiAoIWluc3RydW1lbnRp
bmdBZ2VudHNTZXQpCisgICAgICAgIGluc3RydW1lbnRpbmdBZ2VudHNTZXQgPSBuZXcgSGFzaFNl
dDxJbnN0cnVtZW50aW5nQWdlbnRzKj4oKTsKKyAgICBpbnN0cnVtZW50aW5nQWdlbnRzU2V0LT5h
ZGQoaW5zdHJ1bWVudGluZ0FnZW50cyk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp1bnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzKQoreworICAgIGlmICghaW5zdHJ1bWVudGluZ0FnZW50c1NldCkK
KyAgICAgICAgcmV0dXJuOworICAgIGluc3RydW1lbnRpbmdBZ2VudHNTZXQtPnJlbW92ZShpbnN0
cnVtZW50aW5nQWdlbnRzKTsKKyAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHNTZXQtPnNpemUo
KSkKKyAgICAgICAgZGVsZXRlIGluc3RydW1lbnRpbmdBZ2VudHNTZXQ7Cit9CisKIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVUaW1lbGlu
ZUFnZW50KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQogewog
ICAgIGlmICghY29va2llLmZpcnN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGZkMzhiNDRlMjk3ZWEwNjhjNzBiMGNl
ZTIzZGNlYzFmNzUyYjkyMjYuLjMzZjZjYWY0ZmRhMzVkMzNmMTE0N2JjYjMwNjlhYTUzMzMzNWFl
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgKQEAgLTk1LDYgKzk1LDcgQEAgY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2U7CiB0eXBlZGVmIHBhaXI8SW5zdHJ1bWVudGluZ0FnZW50cyosIGludD4gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llOwogCiBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24g
eworICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwogcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSosIERPTVdyYXBwZXJX
b3JsZCopOwogICAgIHN0YXRpYyBib29sIGlzRGVidWdnZXJQYXVzZWQoRnJhbWUqKTsKQEAgLTE4
Niw2ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZnJhbWVEZXRhY2hlZEZyb21Q
YXJlbnQoRnJhbWUqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDb21taXRMb2FkKEZyYW1lKiwgRG9j
dW1lbnRMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBsb2FkZXJEZXRhY2hlZEZyb21GcmFtZShG
cmFtZSosIERvY3VtZW50TG9hZGVyKik7CisgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNo
ZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwogCiAgICAgc3RhdGljIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSB3aWxsV3JpdGVIVE1MKERvY3VtZW50KiwgdW5zaWduZWQgaW50IGxl
bmd0aCwgdW5zaWduZWQgaW50IHN0YXJ0TGluZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkV3JpdGVI
VE1MKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIHVuc2lnbmVkIGludCBl
bmRMaW5lKTsKQEAgLTI2Miw2ICsyNjQsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiAgICAgc3RhdGljIFdURjo6VGhyZWFkU3BlY2lmaWM8SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCo+JiB0aHJlYWRTcGVjaWZpY1RpbWVsaW5lQWdlbnRGb3JPcnBoYW5FdmVudHMoKTsKIAorICAg
IHN0YXRpYyB2b2lkIHJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdl
bnRzKik7CisgICAgc3RhdGljIHZvaWQgdW5yZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMoSW5z
dHJ1bWVudGluZ0FnZW50cyopOworCiAgICAgc3RhdGljIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmpl
Y3RJbldvcmxkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRnJhbWUqLCBET01XcmFwcGVyV29y
bGQqKTsKICAgICBzdGF0aWMgYm9vbCBpc0RlYnVnZ2VyUGF1c2VkSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKik7CiAKQEAgLTM1NCw2ICszNTksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lk
IGZyYW1lRGV0YWNoZWRGcm9tUGFyZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRnJhbWUq
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRDb21taXRMb2FkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgUGFnZSosIERvY3VtZW50TG9hZGVyKik7CiAgICAgc3RhdGljIHZvaWQgbG9hZGVyRGV0YWNo
ZWRGcm9tRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVudExvYWRlciopOwor
ICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291
cmNlKik7CiAKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxX
cml0ZUhUTUxJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1
bnNpZ25lZCBpbnQgc3RhcnRMaW5lLCBGcmFtZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZFdyaXRl
SFRNTEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgdW5zaWduZWQg
aW50IGVuZExpbmUpOwpAQCAtMTE5MSw2ICsxMTk3LDE0IEBAIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWUoRnJhbWUqIGZyYW1lLCBE
b2N1CiAjZW5kaWYKIH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkK
K3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5E
Uyh2b2lkKCkpOworICAgIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKGNhY2hlZFJlc291
cmNlKTsKKyNlbmRpZgorfQorCiBpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRlSFRNTChEb2N1bWVudCogZG9jdW1l
bnQsIHVuc2lnbmVkIGludCBsZW5ndGgsIHVuc2lnbmVkIGludCBzdGFydExpbmUpCiB7CiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCA4Nzc2YmI4NTUxNGFkNjcxN2NjNTAyNGY1MGM2
ZTJlNWMyOGUzYThmLi42NTE0OGIyMjFjNWEzMWM4MGQzOWFjNGQ3NDY0NjRmNWYwNTYzNDM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuY3BwCkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpk
aWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIKIAogICAg
IGlmIChkYXRhKSB7CiAgICAgICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEg
Y29uc3QqIHJlc291cmNlRGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+ZGF0YShyZXF1ZXN0SWQpOwot
ICAgICAgICBpZiAobV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZVR5cGUocmVxdWVzdElkKSA9PSBJ
bnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgfHwgKHJlc291cmNlRGF0YSAmJiBpc0Vy
cm9yU3RhdHVzQ29kZShyZXNvdXJjZURhdGEtPmh0dHBTdGF0dXNDb2RlKCkpICYmIChyZXNvdXJj
ZURhdGEtPmNhY2hlZFJlc291cmNlKCkpKSkKKyAgICAgICAgaWYgKG1fcmVzb3VyY2VzRGF0YS0+
cmVzb3VyY2VUeXBlKHJlcXVlc3RJZCkgPT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291
cmNlIHx8IChyZXNvdXJjZURhdGEgJiYgaXNFcnJvclN0YXR1c0NvZGUocmVzb3VyY2VEYXRhLT5o
dHRwU3RhdHVzQ29kZSgpKSAmJiByZXNvdXJjZURhdGEtPmNhY2hlZFJlc291cmNlKCkpKQogICAg
ICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQs
IGRhdGEsIGRhdGFMZW5ndGgpOwogICAgIH0KIApAQCAtMzY0LDYgKzM2NCwyMSBAQCB2b2lkIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZExvYWRYSFJTeW5jaHJvbm91c2x5KCkKICAgICBtX2xv
YWRpbmdYSFJTeW5jaHJvbm91c2x5ID0gZmFsc2U7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVk
UmVzb3VyY2UpCit7CisgICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdElkcyA9IG1fcmVzb3VyY2Vz
RGF0YS0+cmVtb3ZlQ2FjaGVkUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UpOworICAgIGlmICghcmVx
dWVzdElkcy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBjb250ZW50Owor
ICAgIGJvb2wgYmFzZTY0RW5jb2RlZDsKKyAgICBpZiAoIUluc3BlY3RvclBhZ2VBZ2VudDo6Y2Fj
aGVkUmVzb3VyY2VDb250ZW50KGNhY2hlZFJlc291cmNlLCAmY29udGVudCwgJmJhc2U2NEVuY29k
ZWQpKQorICAgICAgICByZXR1cm47CisgICAgVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGVuZCA9
IHJlcXVlc3RJZHMuZW5kKCk7CisgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgaXQg
PSByZXF1ZXN0SWRzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgbV9yZXNvdXJj
ZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQoKml0LCBjb250ZW50LCBiYXNlNjRFbmNvZGVkKTsK
K30KKwogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjphcHBseVVzZXJBZ2VudE92ZXJyaWRl
KFN0cmluZyogdXNlckFnZW50KQogewogICAgIFN0cmluZyB1c2VyQWdlbnRPdmVycmlkZSA9IG1f
c3RhdGUtPmdldFN0cmluZyhSZXNvdXJjZUFnZW50U3RhdGU6OnVzZXJBZ2VudE92ZXJyaWRlKTsK
QEAgLTUyOSw3ICs1NDQsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmdldFJlc3Bv
bnNlQm9keShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cgogICAgIH0KIAogICAg
IGlmIChyZXNvdXJjZURhdGEtPmhhc0NvbnRlbnQoKSkgewotICAgICAgICAqYmFzZTY0RW5jb2Rl
ZCA9IGZhbHNlOworICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHJlc291cmNlRGF0YS0+YmFzZTY0
RW5jb2RlZCgpOwogICAgICAgICAqY29udGVudCA9IHJlc291cmNlRGF0YS0+Y29udGVudCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggNTRjZjQ4ZTFmZmI1ZWJkNWUzN2FkODdiNThi
MjBlNGVjNWM2YWNkMi4uOGRhYjI1MzA4YjJlNmM1NTlhYTY0OGU0MzU4NzViYjczYzYzYzM5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5oCkBAIC0xMDMsNiArMTAzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZVhIUlJl
c3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CiAgICAgdm9pZCB3aWxsTG9hZFhIUlN5
bmNocm9ub3VzbHkoKTsKICAgICB2b2lkIGRpZExvYWRYSFJTeW5jaHJvbm91c2x5KCk7CisgICAg
dm9pZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CiAKICAgICB2
b2lkIGFwcGx5VXNlckFnZW50T3ZlcnJpZGUoU3RyaW5nKiB1c2VyQWdlbnQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2
MTlhMTlhYTZkZjM3YjkzMzY5ZWRhOTI4NTg1N2FkNjU4YjEwN2JjLi5hOGYxYjQ4M2E2YTdiNjQ1
NDQzZGU0YzVlMGMyY2Y3NGRiY2RlM2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTM4LDEwICszOCwxMCBAQAogCiBuYW1l
c3BhY2UgewogLy8gMTAwTUIKLXN0YXRpYyBpbnQgbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXpl
ID0gMTAwICogMTAwMCAqIDEwMDA7CitzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIG1heGltdW1S
ZXNvdXJjZXNDb250ZW50U2l6ZSA9IDEwMCAqIDEwMDAgKiAxMDAwOwogCiAvLyAxME1CCi1zdGF0
aWMgaW50IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0gMTAgKiAxMDAwICogMTAw
MDsKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVu
dFNpemUgPSAxMCAqIDEwMDAgKiAxMDAwOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01
MSwxNiArNTEsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcmIGxvYWRlcklkKQogICAgIDogbV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAgICwg
bV9sb2FkZXJJZChsb2FkZXJJZCkKKyAgICAsIG1fYmFzZTY0RW5jb2RlZChmYWxzZSkKICAgICAs
IG1faXNDb250ZW50UHVyZ2VkKGZhbHNlKQogICAgICwgbV90eXBlKEluc3BlY3RvclBhZ2VBZ2Vu
dDo6T3RoZXJSZXNvdXJjZSkKKyAgICAsIG1fY2FjaGVkUmVzb3VyY2UoMCkKIHsKIH0KIAotdm9p
ZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRDb250ZW50KGNvbnN0IFN0
cmluZyYgY29udGVudCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
c2V0Q29udGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCkKIHsK
ICAgICBBU1NFUlQoIWhhc0RhdGEoKSk7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAg
IG1fY29udGVudCA9IGNvbnRlbnQ7CisgICAgbV9iYXNlNjRFbmNvZGVkID0gYmFzZTY0RW5jb2Rl
ZDsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVt
b3ZlQ29udGVudCgpCkBAIC04NiwxMiArODksMTIgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YTo6cHVyZ2VDb250ZW50KCkKICAgICByZXR1cm4gcmVtb3ZlQ29u
dGVudCgpOwogfQogCi1pbnQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0
YUxlbmd0aCgpIGNvbnN0Cit1bnNpZ25lZCBsb25nIGxvbmcgTmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZGF0YUJ1
ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBk
YXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBl
bmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBkYXRhTGVuZ3RoKQog
ewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKICAgICBpZiAoIW1fZGF0YUJ1ZmZlcikKQEAg
LTEwMCwxMCArMTAzLDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6YXBwZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlCiAgICAgICAgIG1fZGF0
YUJ1ZmZlci0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCi1pbnQgTmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCit1bnNpZ25lZCBs
b25nIGxvbmcgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRv
Q29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIGludCBkYXRhTGVu
Z3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGRhdGFM
ZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXIt
PmRlY29kZShtX2RhdGFCdWZmZXItPmRhdGEoKSwgbV9kYXRhQnVmZmVyLT5zaXplKCkpOwogICAg
IG1fY29udGVudCArPSBtX2RlY29kZXItPmZsdXNoKCk7CiAgICAgbV9kYXRhQnVmZmVyID0gbnVs
bHB0cjsKQEAgLTE3MSwxMiArMTc0LDEyIEBAIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VU
eXBlIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5nCiAgICAg
cmV0dXJuIHJlc291cmNlRGF0YS0+dHlwZSgpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpzZXRSZXNvdXJjZUNvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0
cmluZyYgY29udGVudCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnNldFJlc291cmNlQ29u
dGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29s
IGJhc2U2NEVuY29kZWQpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX3Jl
cXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLmdldChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVzb3Vy
Y2VEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgaW50IGRhdGFMZW5ndGggPSAyICogY29udGVu
dC5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGF0YUxlbmd0aCA9IDIgKiBjb250
ZW50Lmxlbmd0aCgpOwogICAgIGlmIChkYXRhTGVuZ3RoID4gbV9tYXhpbXVtU2luZ2xlUmVzb3Vy
Y2VDb250ZW50U2l6ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChyZXNvdXJjZURhdGEtPmlz
Q29udGVudFB1cmdlZCgpKQpAQCAtMTg2LDEyICsxODksMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6c2V0UmVzb3VyY2VDb250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25z
dCBTdHIKICAgICAgICAgaWYgKHJlc291cmNlRGF0YS0+aGFzQ29udGVudCgpKQogICAgICAgICAg
ICAgbV9jb250ZW50U2l6ZSAtPSByZXNvdXJjZURhdGEtPnJlbW92ZUNvbnRlbnQoKTsKICAgICAg
ICAgbV9yZXF1ZXN0SWRzRGVxdWUuYXBwZW5kKHJlcXVlc3RJZCk7Ci0gICAgICAgIHJlc291cmNl
RGF0YS0+c2V0Q29udGVudChjb250ZW50KTsKKyAgICAgICAgcmVzb3VyY2VEYXRhLT5zZXRDb250
ZW50KGNvbnRlbnQsIGJhc2U2NEVuY29kZWQpOwogICAgICAgICBtX2NvbnRlbnRTaXplICs9IGRh
dGFMZW5ndGg7CiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFk
ZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgY2hhciogZGF0YSwg
aW50IGRhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291
cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgY2hhciogZGF0YSwgdW5zaWdu
ZWQgbG9uZyBsb25nIGRhdGFMZW5ndGgpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURh
dGEgPSBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLmdldChyZXF1ZXN0SWQpOwogICAgIGlm
ICghcmVzb3VyY2VEYXRhKQpAQCAtMjE3LDcgKzIyMCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
c0RhdGE6Om1heWJlRGVjb2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkK
ICAgICBpZiAoIXJlc291cmNlRGF0YS0+aGFzRGF0YSgpKQogICAgICAgICByZXR1cm47CiAgICAg
bV9jb250ZW50U2l6ZSArPSByZXNvdXJjZURhdGEtPmRlY29kZURhdGFUb0NvbnRlbnQoKTsKLSAg
ICBpbnQgZGF0YUxlbmd0aCA9IDIgKiByZXNvdXJjZURhdGEtPmNvbnRlbnQoKS5sZW5ndGgoKTsK
KyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGF0YUxlbmd0aCA9IDIgKiByZXNvdXJjZURhdGEtPmNv
bnRlbnQoKS5sZW5ndGgoKTsKICAgICBpZiAoZGF0YUxlbmd0aCA+IG1fbWF4aW11bVNpbmdsZVJl
c291cmNlQ29udGVudFNpemUpCiAgICAgICAgIG1fY29udGVudFNpemUgLT0gcmVzb3VyY2VEYXRh
LT5wdXJnZUNvbnRlbnQoKTsKIH0KQEAgLTI0NSw2ICsyNDgsMjIgQEAgTmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6OmRhdGEoY29u
c3QgU3RyaW4KICAgICByZXR1cm4gbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5nZXQocmVx
dWVzdElkKTsKIH0KIAorVmVjdG9yPFN0cmluZz4gTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlbW92
ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKK3sKKyAgICBW
ZWN0b3I8U3RyaW5nPiByZXN1bHQ7CisgICAgUmVzb3VyY2VEYXRhTWFwOjppdGVyYXRvciBpdDsK
KyAgICBSZXNvdXJjZURhdGFNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcmVxdWVzdElkVG9SZXNvdXJj
ZURhdGFNYXAuZW5kKCk7CisgICAgZm9yIChpdCA9IG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFN
YXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFJlc291cmNlRGF0YSogcmVz
b3VyY2VEYXRhID0gaXQtPnNlY29uZDsKKyAgICAgICAgaWYgKHJlc291cmNlRGF0YS0+Y2FjaGVk
UmVzb3VyY2UoKSA9PSBjYWNoZWRSZXNvdXJjZSkgeworICAgICAgICAgICAgcmVzb3VyY2VEYXRh
LT5zZXRDYWNoZWRSZXNvdXJjZSgwKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaXQtPmZp
cnN0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQg
TmV0d29ya1Jlc291cmNlc0RhdGE6OmNsZWFyKGNvbnN0IFN0cmluZyYgcHJlc2VydmVkTG9hZGVy
SWQpCiB7CiAgICAgbV9yZXF1ZXN0SWRzRGVxdWUuY2xlYXIoKTsKQEAgLTI2NCw3ICsyODMsNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpjbGVhcihjb25zdCBTdHJpbmcmIHByZXNlcnZl
ZExvYWRlcklkKQogICAgIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuc3dhcChwcmVzZXJ2
ZWRNYXApOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpzZXRSZXNvdXJjZXNEYXRh
U2l6ZUxpbWl0cyhpbnQgbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplLCBpbnQgbWF4aW11bVNp
bmdsZVJlc291cmNlQ29udGVudFNpemUpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpzZXRS
ZXNvdXJjZXNEYXRhU2l6ZUxpbWl0cyh1bnNpZ25lZCBsb25nIGxvbmcgbWF4aW11bVJlc291cmNl
c0NvbnRlbnRTaXplLCB1bnNpZ25lZCBsb25nIGxvbmcgbWF4aW11bVNpbmdsZVJlc291cmNlQ29u
dGVudFNpemUpCiB7CiAgICAgY2xlYXIoKTsKICAgICBtX21heGltdW1SZXNvdXJjZXNDb250ZW50
U2l6ZSA9IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZTsKQEAgLTI4Myw3ICszMDIsNyBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjplbnN1cmVOb0RhdGFGb3JSZXF1ZXN0SWQoY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQpCiAgICAgfQogfQogCi1ib29sIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjplbnN1cmVGcmVlU3BhY2UoaW50IHNpemUpCitib29sIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpl
bnN1cmVGcmVlU3BhY2UodW5zaWduZWQgbG9uZyBsb25nIHNpemUpCiB7CiAgICAgaWYgKHNpemUg
PiBtX21heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRl
eCAxYjE3MmU3OWUwMTIzZTgxYzFjNTZlMTk0ZmFhMzkwYzdlNTc3YmQ0Li4wYjUyODQ2NzhkZjE2
NGIxOGUxZWFkZWNlNWQ0NWI3ZWFlMDIxMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMjksNyArMjksNiBAQAogI2lmbmRlZiBO
ZXR3b3JrUmVzb3VyY2VzRGF0YV9oCiAjZGVmaW5lIE5ldHdvcmtSZXNvdXJjZXNEYXRhX2gKIAot
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFn
ZUFnZW50LmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogCkBAIC02NSw3ICs2
NCw5IEBAIHB1YmxpYzoKIAogICAgICAgICBib29sIGhhc0NvbnRlbnQoKSBjb25zdCB7IHJldHVy
biAhbV9jb250ZW50LmlzTnVsbCgpOyB9CiAgICAgICAgIFN0cmluZyBjb250ZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZW50OyB9Ci0gICAgICAgIHZvaWQgc2V0Q29udGVudChjb25zdCBTdHJp
bmcmKTsKKyAgICAgICAgdm9pZCBzZXRDb250ZW50KGNvbnN0IFN0cmluZyYsIGJvb2wgYmFzZTY0
RW5jb2RlZCk7CisKKyAgICAgICAgYm9vbCBiYXNlNjRFbmNvZGVkKCkgY29uc3QgeyByZXR1cm4g
bV9iYXNlNjRFbmNvZGVkOyB9CiAKICAgICAgICAgdW5zaWduZWQgcmVtb3ZlQ29udGVudCgpOwog
ICAgICAgICBib29sIGlzQ29udGVudFB1cmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb250ZW50
UHVyZ2VkOyB9CkBAIC04NiwyMCArODcsMjEgQEAgcHVibGljOgogICAgICAgICBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICAg
ICAgdm9pZCBzZXRCdWZmZXIoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcikgeyBtX2J1
ZmZlciA9IGJ1ZmZlcjsgfQogCi0gICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2UuZ2V0KCk7IH0KKyAgICAgICAgQ2Fj
aGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRSZXNv
dXJjZTsgfQogICAgICAgICB2b2lkIHNldENhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBj
YWNoZWRSZXNvdXJjZSkgeyBtX2NhY2hlZFJlc291cmNlID0gY2FjaGVkUmVzb3VyY2U7IH0KIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YUJ1ZmZlcjsgfQotICAgICAgICBpbnQgZGF0YUxlbmd0aCgpIGNvbnN0OwotICAgICAgICB2b2lk
IGFwcGVuZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOwotICAgICAgICBp
bnQgZGVjb2RlRGF0YVRvQ29udGVudCgpOworICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGF0
YUxlbmd0aCgpIGNvbnN0OworICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgY2hhciogZGF0
YSwgdW5zaWduZWQgbG9uZyBsb25nIGRhdGFMZW5ndGgpOworICAgICAgICB1bnNpZ25lZCBsb25n
IGxvbmcgZGVjb2RlRGF0YVRvQ29udGVudCgpOwogCiAgICAgICAgIFN0cmluZyBtX3JlcXVlc3RJ
ZDsKICAgICAgICAgU3RyaW5nIG1fbG9hZGVySWQ7CiAgICAgICAgIFN0cmluZyBtX2ZyYW1lSWQ7
CiAgICAgICAgIFN0cmluZyBtX3VybDsKICAgICAgICAgU3RyaW5nIG1fY29udGVudDsKKyAgICAg
ICAgYm9vbCBtX2Jhc2U2NEVuY29kZWQ7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YUJ1ZmZlcjsKICAgICAgICAgYm9vbCBtX2lzQ29udGVudFB1cmdlZDsKICAgICAgICAgSW5z
cGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgbV90eXBlOwpAQCAtMTA5LDcgKzExMSw3IEBA
IHB1YmxpYzoKICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsK
IAogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKLSAgICAgICAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IG1fY2FjaGVkUmVzb3VyY2U7CisgICAgICAg
IENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291cmNlOwogICAgIH07CiAKICAgICBOZXR3b3Jr
UmVzb3VyY2VzRGF0YSgpOwpAQCAtMTIwLDI3ICsxMjIsMjggQEAgcHVibGljOgogICAgIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBm
cmFtZUlkLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBzZXRSZXNvdXJjZVR5
cGUoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VU
eXBlKTsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwotICAgIHZvaWQgc2V0UmVzb3VyY2VDb250ZW50KGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwotICAgIHZvaWQg
bWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IGNoYXIq
IGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICB2b2lkIHNldFJlc291cmNlQ29udGVudChjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVu
Y29kZWQgPSBmYWxzZSk7CisgICAgdm9pZCBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbG9uZyBsb25nIGRhdGFM
ZW5ndGgpOwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkKTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIGRh
dGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlbW92ZUNh
Y2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCBjbGVhcihjb25zdCBTdHJp
bmcmIHByZXNlcnZlZExvYWRlcklkID0gU3RyaW5nKCkpOwogCi0gICAgdm9pZCBzZXRSZXNvdXJj
ZXNEYXRhU2l6ZUxpbWl0cyhpbnQgbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplLCBpbnQgbWF4
aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpOworICAgIHZvaWQgc2V0UmVzb3VyY2VzRGF0
YVNpemVMaW1pdHModW5zaWduZWQgbG9uZyBsb25nIG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6
ZSwgdW5zaWduZWQgbG9uZyBsb25nIG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKTsK
IAogcHJpdmF0ZToKICAgICB2b2lkIGVuc3VyZU5vRGF0YUZvclJlcXVlc3RJZChjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCk7Ci0gICAgYm9vbCBlbnN1cmVGcmVlU3BhY2UoaW50IHNpemUpOworICAg
IGJvb2wgZW5zdXJlRnJlZVNwYWNlKHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKTsKIAogICAgIERl
cXVlPFN0cmluZz4gbV9yZXF1ZXN0SWRzRGVxdWU7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBSZXNvdXJjZURhdGEqPiBSZXNvdXJjZURhdGFNYXA7CiAgICAgUmVzb3VyY2VEYXRhTWFw
IG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXA7Ci0gICAgaW50IG1fY29udGVudFNpemU7Ci0g
ICAgaW50IG1fbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplOwotICAgIGludCBtX21heGltdW1T
aW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX2NvbnRl
bnRTaXplOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX21heGltdW1SZXNvdXJjZXNDb250ZW50
U2l6ZTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9tYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250
ZW50U2l6ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDM5OThlZmQzMjYzMzNmYWIy
MmE1M2RjNGZkYTQwMjJmOGUzOThiNTQuLjkxZmNkZjAxMGEzMmMwNTNmNzEyYzZjYTFiNDE3MTdi
ZTRkOTRjZTEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiUHVyZ2VhYmxlQnVmZmVyLmgiCkBAIC0xNzYsNyArMTc3LDcg
QEAgQ2FjaGVkUmVzb3VyY2U6On5DYWNoZWRSZXNvdXJjZSgpCiAgICAgQVNTRVJUKCFpbkNhY2hl
KCkpOwogICAgIEFTU0VSVCghbV9kZWxldGVkKTsKICAgICBBU1NFUlQodXJsKCkuaXNOdWxsKCkg
fHwgbWVtb3J5Q2FjaGUoKS0+cmVzb3VyY2VGb3JVUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVy
bCgpKSkgIT0gdGhpcyk7Ci0gICAgCisKICNpZm5kZWYgTkRFQlVHCiAgICAgbV9kZWxldGVkID0g
dHJ1ZTsKICAgICBjYWNoZWRSZXNvdXJjZUxlYWtDb3VudGVyLmRlY3JlbWVudCgpOwpAQCAtNDMw
LDkgKzQzMSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnJlbW92ZUNsaWVudChDYWNoZWRSZXNv
dXJjZUNsaWVudCogY2xpZW50KQogICAgICAgICBkaWRSZW1vdmVDbGllbnQoY2xpZW50KTsKICAg
ICB9CiAKLSAgICBpZiAoY2FuRGVsZXRlKCkgJiYgIWluQ2FjaGUoKSkKLSAgICAgICAgZGVsZXRl
IHRoaXM7Ci0gICAgZWxzZSBpZiAoIWhhc0NsaWVudHMoKSAmJiBpbkNhY2hlKCkpIHsKKyAgICBp
ZiAoIWRlbGV0ZUlmUG9zc2libGUoKSAmJiAhaGFzQ2xpZW50cygpICYmIGluQ2FjaGUoKSkgewog
ICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmVGcm9tTGl2ZVJlc291cmNlc1NpemUodGhpcyk7
CiAgICAgICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xp
c3QodGhpcyk7CiAgICAgICAgIGFsbENsaWVudHNSZW1vdmVkKCk7CkBAIC00NDksMTAgKzQ0OCwx
NCBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpyZW1vdmVDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQqIGNsaWVudCkKICAgICAvLyBUaGlzIG9iamVjdCBtYXkgYmUgZGVhZCBoZXJlLgogfQogCi12
b2lkIENhY2hlZFJlc291cmNlOjpkZWxldGVJZlBvc3NpYmxlKCkKK2Jvb2wgQ2FjaGVkUmVzb3Vy
Y2U6OmRlbGV0ZUlmUG9zc2libGUoKQogewotICAgIGlmIChjYW5EZWxldGUoKSAmJiAhaW5DYWNo
ZSgpKQorICAgIGlmIChjYW5EZWxldGUoKSAmJiAhaW5DYWNoZSgpKSB7CisgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZSh0aGlzKTsKICAg
ICAgICAgZGVsZXRlIHRoaXM7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7CiB9CiAgICAgCiB2b2lkIENhY2hlZFJlc291cmNlOjpzZXREZWNvZGVkU2l6ZSh1
bnNpZ25lZCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaAppbmRleCA3ZmJmNzMzNjU4NTViMzhhNzA1M2M1OTJkYjYwNmY4ZjFlZDJhODRhLi45YWEx
ZjZhMmU5ZWM1YzUwMTQ3YjIwMWIwYzdiMDE1YWI2NThkZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwogICAgIHZvaWQg
cmVtb3ZlQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7CiAgICAgYm9vbCBoYXNDbGllbnRz
KCkgY29uc3QgeyByZXR1cm4gIW1fY2xpZW50cy5pc0VtcHR5KCkgfHwgIW1fY2xpZW50c0F3YWl0
aW5nQ2FsbGJhY2suaXNFbXB0eSgpOyB9Ci0gICAgdm9pZCBkZWxldGVJZlBvc3NpYmxlKCk7Cisg
ICAgYm9vbCBkZWxldGVJZlBvc3NpYmxlKCk7CiAKICAgICBlbnVtIFByZWxvYWRSZXN1bHQgewog
ICAgICAgICBQcmVsb2FkTm90UmVmZXJlbmNlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGUxOTg3YzNmZTM4Mjc5
MzJjZGEzYmNjODMyYzUxY2NhOGZhZDE2MzEuLjkxMjUyMTBkYzQ5MDI0MTUzMTUyYWI0NTFkOTUx
MWM5ZmU4NzUzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtODEzLDkgKzgxMyw3IEBAIHZvaWQgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OmNsZWFyUHJlbG9hZHMoKQogICAgIGZvciAoTGlzdEhhc2hTZXQ8Q2FjaGVk
UmVzb3VyY2UqPjo6aXRlcmF0b3IgaXQgPSBtX3ByZWxvYWRzLT5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlcyA9ICppdDsKICAgICAgICAgcmVz
LT5kZWNyZWFzZVByZWxvYWRDb3VudCgpOwotICAgICAgICBpZiAocmVzLT5jYW5EZWxldGUoKSAm
JiAhcmVzLT5pbkNhY2hlKCkpCi0gICAgICAgICAgICBkZWxldGUgcmVzOwotICAgICAgICBlbHNl
IGlmIChyZXMtPnByZWxvYWRSZXN1bHQoKSA9PSBDYWNoZWRSZXNvdXJjZTo6UHJlbG9hZE5vdFJl
ZmVyZW5jZWQpCisgICAgICAgIGlmICghcmVzLT5kZWxldGVJZlBvc3NpYmxlKCkgJiYgcmVzLT5w
cmVsb2FkUmVzdWx0KCkgPT0gQ2FjaGVkUmVzb3VyY2U6OlByZWxvYWROb3RSZWZlcmVuY2VkKQog
ICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlKHJlcyk7CiAgICAgfQogICAgIG1fcHJl
bG9hZHMuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUu
Y3BwCmluZGV4IDI5OWQxMGE3MDUxMjhiNmFjZmYyMzhmZTA3MTk5YTk5NDU5ZDQyNTQuLjVkYzA0
NzQwMmNiM2Q3NDhlZDk3MzQ3OWU2NDIyODc1OTM3ODg5MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtNDAyLDggKzQwMiw3IEBAIHZvaWQgTWVt
b3J5Q2FjaGU6OmV2aWN0KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICB9IGVsc2UKICAg
ICAgICAgQVNTRVJUKG1fcmVzb3VyY2VzLmdldChyZXNvdXJjZS0+dXJsKCkpICE9IHJlc291cmNl
KTsKIAotICAgIGlmIChyZXNvdXJjZS0+Y2FuRGVsZXRlKCkpCi0gICAgICAgIGRlbGV0ZSByZXNv
dXJjZTsKKyAgICByZXNvdXJjZS0+ZGVsZXRlSWZQb3NzaWJsZSgpOwogfQogCiBzdGF0aWMgaW5s
aW5lIHVuc2lnbmVkIGZhc3RMb2cyKHVuc2lnbmVkIGkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154590</attachid>
            <date>2012-07-26 02:34:42 -0700</date>
            <delta_ts>2012-07-27 07:26:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92108-20120726133430.patch</filename>
            <type>text/plain</type>
            <size>41130</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVhOGNkNWMxZjYxMzJk
OGFhNjYyZTNlMzI3M2ExZTRmNmZhMGZlYi4uNzg2ZTY4MTZlZTE0MGQyOTk4ODE3MjY3OTgyOWVk
NWM1NWRjNDUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEyLTA3LTI2ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJlc291cmNlIGFnZW50J3MgcmVmZXJlbmNlIHRvIGNhY2hlZCByZXNvdXJjZXMgc2hvdWxk
IGJlIHdlYWsuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MjEwOAorCisgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCisKKyAgICAgICAg
TmV0d29ya1Jlc291cmNlc0RhdGEgbm93IHN0b3JlcyBhIHJhdyBwb2ludGVyIHRvIENhY2hlZFJl
c291cmNlLgorICAgICAgICBDYWNoZWRSZXNvdXJjZSBub3cgbm90aWZpZXMgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uIHRoYXQgaXQgd2lsbCBiZSBkZXN0cm95ZWQuCisgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbiBzdG9yZXMgYSBzZXQgb2YgSW5zdHJ1bWVudGluZ0FnZW50cyBhbmQg
YnJvYWRjYXN0cyB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlIGV2ZW50IHRvIGFsbCBhdmFpbGFi
bGUgcmVzb3VyY2VBZ2VudHMuCisgICAgICAgIERlc3Ryb3llZCByZXNvdXJjZXMgY29udGVudCBp
cyBzYXZlZCB0byBOZXR3b3JrUmVzb3VyY2VzRGF0YS4KKyAgICAgICAgQ2hhbmdlZCBjb250ZW50
IHNpemUgdmFyaWFibGVzIHR5cGUgaW4gTmV0d29ya1Jlc291cmNlc0RhdGEgZnJvbSBpbnQgdG8g
c2l6ZV90LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2Nh
Y2hlZC1yZXNvdXJjZS1kZXN0cm95ZWQtbW92ZWQtdG8tc3RvcmFnZS5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2NhY2hlZC1yZXNvdXJjZS1kZXN0cm95
ZWQtdG9vLWJpZy1kaXNjYXJkZWQuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyOjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNl
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlZ2lz
dGVySW5zdHJ1bWVudGluZ0FnZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnVucmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxEZXN0cm95Q2FjaGVkUmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpnZXRSZXNwb25zZUJvZHkpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnNl
dENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6ZGF0YUxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnNldFJlc291cmNlQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJj
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlRGVj
b2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6cmVtb3ZlQ2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHMp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmVuc3VyZUZyZWVTcGFj
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAg
IChSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6YmFzZTY0RW5jb2RlZCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpjYWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChO
ZXR3b3JrUmVzb3VyY2VzRGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp+Q2FjaGVkUmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJlbW92ZUNsaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZGVsZXRlSWZQb3NzaWJsZSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChDYWNoZWRSZXNv
dXJjZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpnYXJiYWdlQ29sbGVjdERv
Y3VtZW50UmVzb3VyY2VzVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2xlYXJQcmVsb2Fkcyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChDYWNoZWRSZXNv
dXJjZUxvYWRlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpldmljdCk6CisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJj
ZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoK
KyAgICAgICAgKEludGVybmFscyk6CisKIDIwMTItMDctMjYgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxMjM3MTUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKaW5kZXggYzNmOWYwOGIzMzlkYmFjMWI2NzIwOTA3OTRhNzU0OWIwMDM4Mjg4Yy4u
YWI2ZTM3N2MxNWNhZjg1MDQxYTgwZDVlMzQ1MDYzNjcwM2YwNWM1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTY1LDYgKzE2
NSw4IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFn
ZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCiAgICAgcnVudGltZUFnZW50LT5zZXRTY3JpcHREZWJ1Z1NlcnZlcigmbV9kZWJ1Z2dl
ckFnZW50LT5zY3JpcHREZWJ1Z1NlcnZlcigpKTsKICNlbmRpZgorCisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpyZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMobV9pbnN0cnVtZW50aW5n
QWdlbnRzLmdldCgpKTsKIH0KIAogSW5zcGVjdG9yQ29udHJvbGxlcjo6fkluc3BlY3RvckNvbnRy
b2xsZXIoKQpAQCAtMTgzLDYgKzE4NSw3IEBAIFBhc3NPd25QdHI8SW5zcGVjdG9yQ29udHJvbGxl
cj4gSW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlKFBhZ2UqIHBhZ2UsIEluc3BlY3RvCiB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKQogewogICAgIGRp
c2Nvbm5lY3RGcm9udGVuZCgpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dW5yZWdp
c3Rlckluc3RydW1lbnRpbmdBZ2VudHMobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpKTsKICAg
ICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+ZGlzY29ubmVjdCgpOwogICAgIG1faW5zcGVjdG9y
Q2xpZW50LT5pbnNwZWN0b3JEZXN0cm95ZWQoKTsKICAgICBtX2luc3BlY3RvckNsaWVudCA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwCmluZGV4IGRmYWEwYTRjNGQ1MmIwNmEyZjE0NWZiMjdiNzk3MzY3YWUyOWVkMmQu
LjBiYzE2ZjQ5NDA3MTNlNzFjZjhlODgzMWUzZDAyZDEzYmY1YjVjNzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBA
IC04MCw2ICs4MCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc2V0VGltZXJFdmVudE5h
bWUgPSAic2V0VGltZXIiOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGNsZWFyVGltZXJFdmVu
dE5hbWUgPSAiY2xlYXJUaW1lciI7CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgdGltZXJGaXJl
ZEV2ZW50TmFtZSA9ICJ0aW1lckZpcmVkIjsKIAorbmFtZXNwYWNlIHsKK3N0YXRpYyBIYXNoU2V0
PEluc3RydW1lbnRpbmdBZ2VudHMqPiogaW5zdHJ1bWVudGluZ0FnZW50c1NldCA9IDA7Cit9CisK
IGludCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNfZnJvbnRlbmRDb3VudGVyID0gMDsKIAog
c3RhdGljIGJvb2wgZXZlbnRIYXNMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8RXZlbnRDb250
ZXh0PiYgYW5jZXN0b3JzKQpAQCAtODQ0LDYgKzg0OCwxOCBAQCB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqCiAgICAgICAgIGluc3BlY3RvclBhZ2VBZ2VudC0+bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWUo
bG9hZGVyKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95
Q2FjaGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKK3sKKyAg
ICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHNTZXQpCisgICAgICAgIHJldHVybjsKKyAgICBIYXNo
U2V0PEluc3RydW1lbnRpbmdBZ2VudHMqPjo6aXRlcmF0b3IgZW5kID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c1NldC0+ZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PEluc3RydW1lbnRpbmdBZ2VudHMqPjo6
aXRlcmF0b3IgaXQgPSBpbnN0cnVtZW50aW5nQWdlbnRzU2V0LT5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cyA9ICppdDsKKyAgICAgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIGluc3BlY3RvclJl
c291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50
KCkpCisgICAgICAgICAgICBpbnNwZWN0b3JSZXNvdXJjZUFnZW50LT53aWxsRGVzdHJveUNhY2hl
ZFJlc291cmNlKGNhY2hlZFJlc291cmNlKTsKKyAgICB9Cit9CisKIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUxJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGludCBs
ZW5ndGgsIHVuc2lnbmVkIGludCBzdGFydExpbmUsIEZyYW1lKiBmcmFtZSkKIHsKICAgICBpbnQg
dGltZWxpbmVBZ2VudElkID0gMDsKQEAgLTExNDEsNiArMTE1NywyMiBAQCBXVEY6OlRocmVhZFNw
ZWNpZmljPEluc3BlY3RvclRpbWVsaW5lQWdlbnQqPiYgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp0aHJlYWRTcAogICAgIHJldHVybiAqaW5zdGFuY2U7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpyZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3sKKyAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2Vu
dHNTZXQpCisgICAgICAgIGluc3RydW1lbnRpbmdBZ2VudHNTZXQgPSBuZXcgSGFzaFNldDxJbnN0
cnVtZW50aW5nQWdlbnRzKj4oKTsKKyAgICBpbnN0cnVtZW50aW5nQWdlbnRzU2V0LT5hZGQoaW5z
dHJ1bWVudGluZ0FnZW50cyk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1
bnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzKQoreworICAgIGlmICghaW5zdHJ1bWVudGluZ0FnZW50c1NldCkKKyAgICAg
ICAgcmV0dXJuOworICAgIGluc3RydW1lbnRpbmdBZ2VudHNTZXQtPnJlbW92ZShpbnN0cnVtZW50
aW5nQWdlbnRzKTsKKyAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHNTZXQtPnNpemUoKSkKKyAg
ICAgICAgZGVsZXRlIGluc3RydW1lbnRpbmdBZ2VudHNTZXQ7Cit9CisKIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVUaW1lbGluZUFnZW50
KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQogewogICAgIGlm
ICghY29va2llLmZpcnN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDMyODdmNzFjYWFmYWJlMzA0NDhkMWU5YTZhOTk4
YjhlNzAyOTVmMmEuLjYxNDdmNzdkZWY4MzI0NzQ2YjliNmE3YTlkNDFiNjlhM2VhMTMzM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgKQEAgLTE4Nyw2ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZnJhbWVE
ZXRhY2hlZEZyb21QYXJlbnQoRnJhbWUqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDb21taXRMb2Fk
KEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBsb2FkZXJEZXRhY2hl
ZEZyb21GcmFtZShGcmFtZSosIERvY3VtZW50TG9hZGVyKik7CisgICAgc3RhdGljIHZvaWQgd2ls
bERlc3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwogCiAgICAgc3RhdGljIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsV3JpdGVIVE1MKERvY3VtZW50KiwgdW5z
aWduZWQgaW50IGxlbmd0aCwgdW5zaWduZWQgaW50IHN0YXJ0TGluZSk7CiAgICAgc3RhdGljIHZv
aWQgZGlkV3JpdGVIVE1MKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIHVu
c2lnbmVkIGludCBlbmRMaW5lKTsKQEAgLTI2Myw2ICsyNjQsOSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEdlb2xvY2F0aW9uUG9zaXRpb24qIG92ZXJyaWRlR2VvbG9jYXRpb25Qb3NpdGlvbihQYWdl
KiwgR2VvbG9jYXRpb25Qb3NpdGlvbiopOwogI2VuZGlmCiAKKyAgICBzdGF0aWMgdm9pZCByZWdp
c3Rlckluc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50cyopOworICAgIHN0YXRp
YyB2b2lkIHVucmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHMq
KTsKKwogcHJpdmF0ZToKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIHN0YXRpYyBXVEY6OlRo
cmVhZFNwZWNpZmljPEluc3BlY3RvclRpbWVsaW5lQWdlbnQqPiYgdGhyZWFkU3BlY2lmaWNUaW1l
bGluZUFnZW50Rm9yT3JwaGFuRXZlbnRzKCk7CkBAIC0zNTksNiArMzYzLDcgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgdm9pZCBmcmFtZURldGFjaGVkRnJvbVBhcmVudEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgZGlkQ29tbWl0TG9hZEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyosIFBhZ2UqLCBEb2N1bWVudExvYWRlciopOwogICAgIHN0YXRpYyB2
b2lkIGxvYWRlckRldGFjaGVkRnJvbUZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9j
dW1lbnRMb2FkZXIqKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNl
SW1wbChDYWNoZWRSZXNvdXJjZSopOwogCiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSB3aWxsV3JpdGVIVE1MSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWdu
ZWQgaW50IGxlbmd0aCwgdW5zaWduZWQgaW50IHN0YXJ0TGluZSwgRnJhbWUqKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRXcml0ZUhUTUxJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSYsIHVuc2lnbmVkIGludCBlbmRMaW5lKTsKQEAgLTEyMDAsNiArMTIwNSwxNCBAQCBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvYWRlckRldGFjaGVkRnJvbUZyYW1l
KEZyYW1lKiBmcmFtZSwgRG9jdQogI2VuZGlmCiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSog
Y2FjaGVkUmVzb3VyY2UpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKKyAgICB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNl
SW1wbChjYWNoZWRSZXNvdXJjZSk7CisjZW5kaWYKK30KKwogaW5saW5lIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUwo
RG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgc3Rh
cnRMaW5lKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggODc3NmJiODU1MTRh
ZDY3MTdjYzUwMjRmNTBjNmUyZTVjMjhlM2E4Zi4uNjUxNDhiMjIxYzVhMzFjODBkMzlhYzRkNzQ2
NDY0ZjVmMDU2MzQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBjaGFyCiAKICAgICBpZiAoZGF0YSkgewogICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPmRh
dGEocmVxdWVzdElkKTsKLSAgICAgICAgaWYgKG1fcmVzb3VyY2VzRGF0YS0+cmVzb3VyY2VUeXBl
KHJlcXVlc3RJZCkgPT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlIHx8IChyZXNv
dXJjZURhdGEgJiYgaXNFcnJvclN0YXR1c0NvZGUocmVzb3VyY2VEYXRhLT5odHRwU3RhdHVzQ29k
ZSgpKSAmJiAocmVzb3VyY2VEYXRhLT5jYWNoZWRSZXNvdXJjZSgpKSkpCisgICAgICAgIGlmICht
X3Jlc291cmNlc0RhdGEtPnJlc291cmNlVHlwZShyZXF1ZXN0SWQpID09IEluc3BlY3RvclBhZ2VB
Z2VudDo6T3RoZXJSZXNvdXJjZSB8fCAocmVzb3VyY2VEYXRhICYmIGlzRXJyb3JTdGF0dXNDb2Rl
KHJlc291cmNlRGF0YS0+aHR0cFN0YXR1c0NvZGUoKSkgJiYgcmVzb3VyY2VEYXRhLT5jYWNoZWRS
ZXNvdXJjZSgpKSkKICAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJj
ZURhdGEocmVxdWVzdElkLCBkYXRhLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKQEAgLTM2NCw2ICsz
NjQsMjEgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkWEhSU3luY2hyb25v
dXNseSgpCiAgICAgbV9sb2FkaW5nWEhSU3luY2hyb25vdXNseSA9IGZhbHNlOwogfQogCit2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHJlcXVlc3RJ
ZHMgPSBtX3Jlc291cmNlc0RhdGEtPnJlbW92ZUNhY2hlZFJlc291cmNlKGNhY2hlZFJlc291cmNl
KTsKKyAgICBpZiAoIXJlcXVlc3RJZHMuc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBT
dHJpbmcgY29udGVudDsKKyAgICBib29sIGJhc2U2NEVuY29kZWQ7CisgICAgaWYgKCFJbnNwZWN0
b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChjYWNoZWRSZXNvdXJjZSwgJmNvbnRl
bnQsICZiYXNlNjRFbmNvZGVkKSkKKyAgICAgICAgcmV0dXJuOworICAgIFZlY3RvcjxTdHJpbmc+
OjppdGVyYXRvciBlbmQgPSByZXF1ZXN0SWRzLmVuZCgpOworICAgIGZvciAoVmVjdG9yPFN0cmlu
Zz46Oml0ZXJhdG9yIGl0ID0gcmVxdWVzdElkcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisg
ICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KCppdCwgY29udGVudCwg
YmFzZTY0RW5jb2RlZCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6YXBwbHlV
c2VyQWdlbnRPdmVycmlkZShTdHJpbmcqIHVzZXJBZ2VudCkKIHsKICAgICBTdHJpbmcgdXNlckFn
ZW50T3ZlcnJpZGUgPSBtX3N0YXRlLT5nZXRTdHJpbmcoUmVzb3VyY2VBZ2VudFN0YXRlOjp1c2Vy
QWdlbnRPdmVycmlkZSk7CkBAIC01MjksNyArNTQ0LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpnZXRSZXNwb25zZUJvZHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBT
dHIKICAgICB9CiAKICAgICBpZiAocmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkpIHsKLSAgICAg
ICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKKyAgICAgICAgKmJhc2U2NEVuY29kZWQgPSByZXNv
dXJjZURhdGEtPmJhc2U2NEVuY29kZWQoKTsKICAgICAgICAgKmNvbnRlbnQgPSByZXNvdXJjZURh
dGEtPmNvbnRlbnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmluZGV4IDU0Y2Y0OGUxZmZi
NWViZDVlMzdhZDg3YjU4YjIwZTRlYzVjNmFjZDIuLjhkYWIyNTMwOGIyZTZjNTU5YWE2NDhlNDM1
ODc1YmI3M2M2M2MzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuaApAQCAtMTAzLDYgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZFJlY2VpdmVYSFJSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHZv
aWQgd2lsbExvYWRYSFJTeW5jaHJvbm91c2x5KCk7CiAgICAgdm9pZCBkaWRMb2FkWEhSU3luY2hy
b25vdXNseSgpOworICAgIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZSopOwogCiAgICAgdm9pZCBhcHBseVVzZXJBZ2VudE92ZXJyaWRlKFN0cmluZyogdXNlckFn
ZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAKaW5kZXggNjE5YTE5YWE2ZGYzN2I5MzM2OWVkYTkyODU4NTdhZDY1OGIxMDdiYy4u
OWVmNzVmYjE0ZGE0ZDJiYjIxZDgxZmE0ZTc2OTFhNjBjOTk3ZDY1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0zOCwxMCAr
MzgsMTAgQEAKIAogbmFtZXNwYWNlIHsKIC8vIDEwME1CCi1zdGF0aWMgaW50IG1heGltdW1SZXNv
dXJjZXNDb250ZW50U2l6ZSA9IDEwMCAqIDEwMDAgKiAxMDAwOworc3RhdGljIHNpemVfdCBtYXhp
bXVtUmVzb3VyY2VzQ29udGVudFNpemUgPSAxMDAgKiAxMDAwICogMTAwMDsKIAogLy8gMTBNQgot
c3RhdGljIGludCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDEwICogMTAwMCAq
IDEwMDA7CitzdGF0aWMgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0g
MTAgKiAxMDAwICogMTAwMDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsMTYgKzUx
LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5n
JiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVy
SWQobG9hZGVySWQpCisgICAgLCBtX2Jhc2U2NEVuY29kZWQoZmFsc2UpCiAgICAgLCBtX2lzQ29u
dGVudFB1cmdlZChmYWxzZSkKICAgICAsIG1fdHlwZShJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVy
UmVzb3VyY2UpCisgICAgLCBtX2NhY2hlZFJlc291cmNlKDApCiB7CiB9CiAKLXZvaWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6c2V0Q29udGVudChjb25zdCBTdHJpbmcmIGNv
bnRlbnQpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnNldENvbnRl
bnQoY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQpCiB7CiAgICAgQVNT
RVJUKCFoYXNEYXRhKCkpOwogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKICAgICBtX2NvbnRl
bnQgPSBjb250ZW50OworICAgIG1fYmFzZTY0RW5jb2RlZCA9IGJhc2U2NEVuY29kZWQ7CiB9CiAK
IHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRl
bnQoKQpAQCAtODYsMTIgKzg5LDEyIEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OnB1cmdlQ29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92ZUNvbnRlbnQoKTsK
IH0KIAotaW50IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgo
KSBjb25zdAorc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFM
ZW5ndGgoKSBjb25zdAogewogICAgIHJldHVybiBtX2RhdGFCdWZmZXIgPyBtX2RhdGFCdWZmZXIt
PnNpemUoKSA6IDA7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6YXBwZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAg
ICAgaWYgKCFtX2RhdGFCdWZmZXIpCkBAIC0xMDAsMTAgKzEwMywxMCBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgY2hhciogZGF0YSwg
aW50IGRhdGFMZQogICAgICAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3Ro
KTsKIH0KIAotaW50IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURh
dGFUb0NvbnRlbnQoKQorc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAg
ICBpbnQgZGF0YUxlbmd0aCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOworICAgIHNpemVfdCBkYXRh
TGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CiAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVy
LT5kZWNvZGUobV9kYXRhQnVmZmVyLT5kYXRhKCksIG1fZGF0YUJ1ZmZlci0+c2l6ZSgpKTsKICAg
ICBtX2NvbnRlbnQgKz0gbV9kZWNvZGVyLT5mbHVzaCgpOwogICAgIG1fZGF0YUJ1ZmZlciA9IG51
bGxwdHI7CkBAIC0xNzEsMTIgKzE3NCwxMiBAQCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNl
VHlwZSBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZwogICAg
IHJldHVybiByZXNvdXJjZURhdGEtPnR5cGUoKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6c2V0UmVzb3VyY2VDb250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnQpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpzZXRSZXNvdXJjZUNv
bnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9v
bCBiYXNlNjRFbmNvZGVkKQogewogICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gbV9y
ZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5nZXQocmVxdWVzdElkKTsKICAgICBpZiAoIXJlc291
cmNlRGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIGludCBkYXRhTGVuZ3RoID0gMiAqIGNvbnRl
bnQubGVuZ3RoKCk7CisgICAgc2l6ZV90IGRhdGFMZW5ndGggPSAyICogY29udGVudC5sZW5ndGgo
KTsKICAgICBpZiAoZGF0YUxlbmd0aCA+IG1fbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNp
emUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAocmVzb3VyY2VEYXRhLT5pc0NvbnRlbnRQdXJn
ZWQoKSkKQEAgLTE4NiwxMiArMTg5LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnNl
dFJlc291cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyCiAgICAg
ICAgIGlmIChyZXNvdXJjZURhdGEtPmhhc0NvbnRlbnQoKSkKICAgICAgICAgICAgIG1fY29udGVu
dFNpemUgLT0gcmVzb3VyY2VEYXRhLT5yZW1vdmVDb250ZW50KCk7CiAgICAgICAgIG1fcmVxdWVz
dElkc0RlcXVlLmFwcGVuZChyZXF1ZXN0SWQpOwotICAgICAgICByZXNvdXJjZURhdGEtPnNldENv
bnRlbnQoY29udGVudCk7CisgICAgICAgIHJlc291cmNlRGF0YS0+c2V0Q29udGVudChjb250ZW50
LCBiYXNlNjRFbmNvZGVkKTsKICAgICAgICAgbV9jb250ZW50U2l6ZSArPSBkYXRhTGVuZ3RoOwog
ICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZURh
dGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZURhdGEoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
KQogewogICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gbV9yZXF1ZXN0SWRUb1Jlc291
cmNlRGF0YU1hcC5nZXQocmVxdWVzdElkKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKQEAgLTIx
Nyw3ICsyMjAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZURlY29kZURhdGFU
b0NvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpCiAgICAgaWYgKCFyZXNvdXJjZURhdGEt
Pmhhc0RhdGEoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGVudFNpemUgKz0gcmVzb3Vy
Y2VEYXRhLT5kZWNvZGVEYXRhVG9Db250ZW50KCk7Ci0gICAgaW50IGRhdGFMZW5ndGggPSAyICog
cmVzb3VyY2VEYXRhLT5jb250ZW50KCkubGVuZ3RoKCk7CisgICAgc2l6ZV90IGRhdGFMZW5ndGgg
PSAyICogcmVzb3VyY2VEYXRhLT5jb250ZW50KCkubGVuZ3RoKCk7CiAgICAgaWYgKGRhdGFMZW5n
dGggPiBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQogICAgICAgICBtX2NvbnRl
bnRTaXplIC09IHJlc291cmNlRGF0YS0+cHVyZ2VDb250ZW50KCk7CiB9CkBAIC0yNDUsNiArMjQ4
LDIyIEBAIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpkYXRhKGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIG1fcmVxdWVzdElkVG9S
ZXNvdXJjZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCk7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpyZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2Fj
aGVkUmVzb3VyY2UpCit7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OworICAgIFJlc291cmNl
RGF0YU1hcDo6aXRlcmF0b3IgaXQ7CisgICAgUmVzb3VyY2VEYXRhTWFwOjppdGVyYXRvciBlbmQg
PSBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLmVuZCgpOworICAgIGZvciAoaXQgPSBtX3Jl
cXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAg
ICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGlm
IChyZXNvdXJjZURhdGEtPmNhY2hlZFJlc291cmNlKCkgPT0gY2FjaGVkUmVzb3VyY2UpIHsKKyAg
ICAgICAgICAgIHJlc291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UoMCk7CisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKGl0LT5maXJzdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCiB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpjbGVhcihjb25zdCBT
dHJpbmcmIHByZXNlcnZlZExvYWRlcklkKQogewogICAgIG1fcmVxdWVzdElkc0RlcXVlLmNsZWFy
KCk7CkBAIC0yNjQsNyArMjgzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6Y2xlYXIo
Y29uc3QgU3RyaW5nJiBwcmVzZXJ2ZWRMb2FkZXJJZCkKICAgICBtX3JlcXVlc3RJZFRvUmVzb3Vy
Y2VEYXRhTWFwLnN3YXAocHJlc2VydmVkTWFwKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHMoaW50IG1heGltdW1SZXNvdXJjZXNDb250
ZW50U2l6ZSwgaW50IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQordm9pZCBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHMoc2l6ZV90IG1heGlt
dW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRl
bnRTaXplKQogewogICAgIGNsZWFyKCk7CiAgICAgbV9tYXhpbXVtUmVzb3VyY2VzQ29udGVudFNp
emUgPSBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemU7CkBAIC0yODMsNyArMzAyLDcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6ZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkKQogICAgIH0KIH0KIAotYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
ZW5zdXJlRnJlZVNwYWNlKGludCBzaXplKQorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6ZW5z
dXJlRnJlZVNwYWNlKHNpemVfdCBzaXplKQogewogICAgIGlmIChzaXplID4gbV9tYXhpbXVtUmVz
b3VyY2VzQ29udGVudFNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggMWIxNzJlNzllMDEy
M2U4MWMxYzU2ZTE5NGZhYTM5MGM3ZTU3N2JkNC4uOGRmZDVkZDBkYmIyMTFhMGM0OTJlYTZmMWZk
M2E0OGU5MDc3MWVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpZm5kZWYgTmV0d29ya1Jlc291cmNl
c0RhdGFfaAogI2RlZmluZSBOZXR3b3JrUmVzb3VyY2VzRGF0YV9oCiAKLSNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2lu
Y2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKIApAQCAtNjUsNyArNjQsOSBAQCBwdWJsaWM6
CiAKICAgICAgICAgYm9vbCBoYXNDb250ZW50KCkgY29uc3QgeyByZXR1cm4gIW1fY29udGVudC5p
c051bGwoKTsgfQogICAgICAgICBTdHJpbmcgY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGVudDsgfQotICAgICAgICB2b2lkIHNldENvbnRlbnQoY29uc3QgU3RyaW5nJik7CisgICAgICAg
IHZvaWQgc2V0Q29udGVudChjb25zdCBTdHJpbmcmLCBib29sIGJhc2U2NEVuY29kZWQpOworCisg
ICAgICAgIGJvb2wgYmFzZTY0RW5jb2RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZTY0RW5jb2Rl
ZDsgfQogCiAgICAgICAgIHVuc2lnbmVkIHJlbW92ZUNvbnRlbnQoKTsKICAgICAgICAgYm9vbCBp
c0NvbnRlbnRQdXJnZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ29udGVudFB1cmdlZDsgfQpAQCAt
ODYsMjAgKzg3LDIxIEBAIHB1YmxpYzoKICAgICAgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAgICAgICAgIHZvaWQgc2V0QnVm
ZmVyKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIpIHsgbV9idWZmZXIgPSBidWZmZXI7
IH0KIAotICAgICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlZFJlc291cmNlLmdldCgpOyB9CisgICAgICAgIENhY2hlZFJlc291cmNlKiBj
YWNoZWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2U7IH0KICAgICAg
ICAgdm9pZCBzZXRDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2Up
IHsgbV9jYWNoZWRSZXNvdXJjZSA9IGNhY2hlZFJlc291cmNlOyB9CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KLSAg
ICAgICAgaW50IGRhdGFMZW5ndGgoKSBjb25zdDsKLSAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNv
bnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgaW50IGRlY29kZURhdGFU
b0NvbnRlbnQoKTsKKyAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsKKyAgICAgICAg
dm9pZCBhcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKKyAg
ICAgICAgc2l6ZV90IGRlY29kZURhdGFUb0NvbnRlbnQoKTsKIAogICAgICAgICBTdHJpbmcgbV9y
ZXF1ZXN0SWQ7CiAgICAgICAgIFN0cmluZyBtX2xvYWRlcklkOwogICAgICAgICBTdHJpbmcgbV9m
cmFtZUlkOwogICAgICAgICBTdHJpbmcgbV91cmw7CiAgICAgICAgIFN0cmluZyBtX2NvbnRlbnQ7
CisgICAgICAgIGJvb2wgbV9iYXNlNjRFbmNvZGVkOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIGJvb2wgbV9pc0NvbnRlbnRQdXJnZWQ7CiAgICAg
ICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIG1fdHlwZTsKQEAgLTEwOSw3ICsx
MTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2Rl
Y29kZXI7CiAKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Ci0gICAgICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBtX2NhY2hlZFJlc291cmNlOwor
ICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRSZXNvdXJjZTsKICAgICB9OwogCiAgICAg
TmV0d29ya1Jlc291cmNlc0RhdGEoKTsKQEAgLTEyMCwyNyArMTIyLDI4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0
cmluZyYgZnJhbWVJZCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgc2V0UmVz
b3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJl
c291cmNlVHlwZSk7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVzb3Vy
Y2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKLSAgICB2b2lkIHNldFJlc291cmNlQ29u
dGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKLSAg
ICB2b2lkIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25z
dCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CisgICAgdm9pZCBzZXRSZXNvdXJjZUNvbnRl
bnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBi
YXNlNjRFbmNvZGVkID0gZmFsc2UpOworICAgIHZvaWQgbWF5YmVBZGRSZXNvdXJjZURhdGEoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
KTsKICAgICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCk7CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhKGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNoZWRS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiBw
cmVzZXJ2ZWRMb2FkZXJJZCA9IFN0cmluZygpKTsKIAotICAgIHZvaWQgc2V0UmVzb3VyY2VzRGF0
YVNpemVMaW1pdHMoaW50IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgaW50IG1heGltdW1T
aW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKTsKKyAgICB2b2lkIHNldFJlc291cmNlc0RhdGFTaXpl
TGltaXRzKHNpemVfdCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIHNpemVfdCBtYXhpbXVt
U2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVO
b0RhdGFGb3JSZXF1ZXN0SWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwotICAgIGJvb2wgZW5z
dXJlRnJlZVNwYWNlKGludCBzaXplKTsKKyAgICBib29sIGVuc3VyZUZyZWVTcGFjZShzaXplX3Qp
OwogCiAgICAgRGVxdWU8U3RyaW5nPiBtX3JlcXVlc3RJZHNEZXF1ZTsKIAogICAgIHR5cGVkZWYg
SGFzaE1hcDxTdHJpbmcsIFJlc291cmNlRGF0YSo+IFJlc291cmNlRGF0YU1hcDsKICAgICBSZXNv
dXJjZURhdGFNYXAgbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcDsKLSAgICBpbnQgbV9jb250
ZW50U2l6ZTsKLSAgICBpbnQgbV9tYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemU7Ci0gICAgaW50
IG1fbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemU7CisgICAgc2l6ZV90IG1fY29udGVu
dFNpemU7CisgICAgc2l6ZV90IG1fbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplOworICAgIHNp
emVfdCBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAKaW5kZXggMzk5OGVmZDMyNjMzM2ZhYjIyYTUzZGM0ZmRhNDAyMmY4ZTM5OGI1NC4u
NTcxNDM5NjU2ZGFjMjQzZGI5NGI3MzAyYWY2YWY0MDQ5YzAxMTI5YiAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQdXJn
ZWFibGVCdWZmZXIuaCIKQEAgLTE3Niw3ICsxNzcsNyBAQCBDYWNoZWRSZXNvdXJjZTo6fkNhY2hl
ZFJlc291cmNlKCkKICAgICBBU1NFUlQoIWluQ2FjaGUoKSk7CiAgICAgQVNTRVJUKCFtX2RlbGV0
ZWQpOwogICAgIEFTU0VSVCh1cmwoKS5pc051bGwoKSB8fCBtZW1vcnlDYWNoZSgpLT5yZXNvdXJj
ZUZvclVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKCkpKSAhPSB0aGlzKTsKLSAgICAKKwog
I2lmbmRlZiBOREVCVUcKICAgICBtX2RlbGV0ZWQgPSB0cnVlOwogICAgIGNhY2hlZFJlc291cmNl
TGVha0NvdW50ZXIuZGVjcmVtZW50KCk7CkBAIC00MzAsOSArNDMxLDggQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6cmVtb3ZlQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQpCiAgICAg
ICAgIGRpZFJlbW92ZUNsaWVudChjbGllbnQpOwogICAgIH0KIAotICAgIGlmIChjYW5EZWxldGUo
KSAmJiAhaW5DYWNoZSgpKQotICAgICAgICBkZWxldGUgdGhpczsKLSAgICBlbHNlIGlmICghaGFz
Q2xpZW50cygpICYmIGluQ2FjaGUoKSkgeworICAgIGJvb2wgZGVsZXRlZCA9IGRlbGV0ZUlmUG9z
c2libGUoKTsKKyAgICBpZiAoIWRlbGV0ZWQgJiYgIWhhc0NsaWVudHMoKSAmJiBpbkNhY2hlKCkp
IHsKICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlRnJvbUxpdmVSZXNvdXJjZXNTaXplKHRo
aXMpOwogICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmVGcm9tTGl2ZURlY29kZWRSZXNvdXJj
ZXNMaXN0KHRoaXMpOwogICAgICAgICBhbGxDbGllbnRzUmVtb3ZlZCgpOwpAQCAtNDQ5LDEwICs0
NDksMTQgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6cmVtb3ZlQ2xpZW50KENhY2hlZFJlc291cmNl
Q2xpZW50KiBjbGllbnQpCiAgICAgLy8gVGhpcyBvYmplY3QgbWF5IGJlIGRlYWQgaGVyZS4KIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZGVsZXRlSWZQb3NzaWJsZSgpCitib29sIENhY2hlZFJl
c291cmNlOjpkZWxldGVJZlBvc3NpYmxlKCkKIHsKLSAgICBpZiAoY2FuRGVsZXRlKCkgJiYgIWlu
Q2FjaGUoKSkKKyAgICBpZiAoY2FuRGVsZXRlKCkgJiYgIWluQ2FjaGUoKSkgeworICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UodGhpcyk7
CiAgICAgICAgIGRlbGV0ZSB0aGlzOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOwogfQogICAgIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0RGVjb2RlZFNp
emUodW5zaWduZWQgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgKaW5kZXggN2ZiZjczMzY1ODU1YjM4YTcwNTNjNTkyZGI2MDZmOGYxZWQyYTg0YS4u
OWFhMWY2YTJlOWVjNWM1MDE0N2IyMDFiMGM3YjAxNWFiNjU4ZGRkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKICAgICB2
b2lkIHJlbW92ZUNsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwogICAgIGJvb2wgaGFzQ2xp
ZW50cygpIGNvbnN0IHsgcmV0dXJuICFtX2NsaWVudHMuaXNFbXB0eSgpIHx8ICFtX2NsaWVudHNB
d2FpdGluZ0NhbGxiYWNrLmlzRW1wdHkoKTsgfQotICAgIHZvaWQgZGVsZXRlSWZQb3NzaWJsZSgp
OworICAgIGJvb2wgZGVsZXRlSWZQb3NzaWJsZSgpOwogCiAgICAgZW51bSBQcmVsb2FkUmVzdWx0
IHsKICAgICAgICAgUHJlbG9hZE5vdFJlZmVyZW5jZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCBlMTk4N2MzZmUz
ODI3OTMyY2RhM2JjYzgzMmM1MWNjYThmYWQxNjMxLi45YTg4NzI0YTE1MGQxYWU2ZTRhODUwYTEx
OGE5YzRmMzhlZWU5ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTY3Niw3ICs2NzYsMTEgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6bG9hZERvbmUoKQogdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyRmlyZWQoVGltZXI8Q2FjaGVkUmVz
b3VyY2VMb2FkZXI+KiB0aW1lcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9
PSAmbV9nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXIpOworICAgIGdhcmJhZ2VD
b2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMoKTsKK30KIAordm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlcygpCit7CiAgICAgdHlwZWRlZiBWZWN0
b3I8U3RyaW5nLCAxMD4gU3RyaW5nVmVjdG9yOwogICAgIFN0cmluZ1ZlY3RvciByZXNvdXJjZXNU
b0RlbGV0ZTsKIApAQCAtODEzLDkgKzgxNyw4IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OmNsZWFyUHJlbG9hZHMoKQogICAgIGZvciAoTGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPjo6
aXRlcmF0b3IgaXQgPSBtX3ByZWxvYWRzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAg
ICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlcyA9ICppdDsKICAgICAgICAgcmVzLT5kZWNyZWFzZVBy
ZWxvYWRDb3VudCgpOwotICAgICAgICBpZiAocmVzLT5jYW5EZWxldGUoKSAmJiAhcmVzLT5pbkNh
Y2hlKCkpCi0gICAgICAgICAgICBkZWxldGUgcmVzOwotICAgICAgICBlbHNlIGlmIChyZXMtPnBy
ZWxvYWRSZXN1bHQoKSA9PSBDYWNoZWRSZXNvdXJjZTo6UHJlbG9hZE5vdFJlZmVyZW5jZWQpCisg
ICAgICAgIGJvb2wgZGVsZXRlZCA9IHJlcy0+ZGVsZXRlSWZQb3NzaWJsZSgpOworICAgICAgICBp
ZiAoIWRlbGV0ZWQgJiYgcmVzLT5wcmVsb2FkUmVzdWx0KCkgPT0gQ2FjaGVkUmVzb3VyY2U6OlBy
ZWxvYWROb3RSZWZlcmVuY2VkKQogICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlKHJl
cyk7CiAgICAgfQogICAgIG1fcHJlbG9hZHMuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggZDgyYjNiZjQyYTcz
OGM3NzViODZhMDgzNjJhZDVhOWExMmFlOWQzZC4uNWVlYjM4NzFmMDNiNDBmODYwOTgwMDE1NDY4
MWM1YjA1NmQzYWNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTEwNSw2ICsxMDUsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKikgY29uc3Q7CiAgICAgdm9p
ZCBsb2FkRG9uZSgpOworICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlcygp
OwogICAgIAogICAgIHZvaWQgaW5jcmVtZW50UmVxdWVzdENvdW50KGNvbnN0IENhY2hlZFJlc291
cmNlKik7CiAgICAgdm9pZCBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4
IDI5OWQxMGE3MDUxMjhiNmFjZmYyMzhmZTA3MTk5YTk5NDU5ZDQyNTQuLjVkYzA0NzQwMmNiM2Q3
NDhlZDk3MzQ3OWU2NDIyODc1OTM3ODg5MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL01lbW9yeUNhY2hlLmNwcApAQCAtNDAyLDggKzQwMiw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6
OmV2aWN0KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICB9IGVsc2UKICAgICAgICAgQVNT
RVJUKG1fcmVzb3VyY2VzLmdldChyZXNvdXJjZS0+dXJsKCkpICE9IHJlc291cmNlKTsKIAotICAg
IGlmIChyZXNvdXJjZS0+Y2FuRGVsZXRlKCkpCi0gICAgICAgIGRlbGV0ZSByZXNvdXJjZTsKKyAg
ICByZXNvdXJjZS0+ZGVsZXRlSWZQb3NzaWJsZSgpOwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2ln
bmVkIGZhc3RMb2cyKHVuc2lnbmVkIGkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmNwcAppbmRleCA1MzFiMDRmNmNjMjg3NzhkMGFmMjkyMDNhMmEwMDZiMWU0YTI4
MmJmLi40NDViODc4MTVhNzZjZWJiNTczYWE5OWJhZDAyNGY0ZTQzZTUwY2Q0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTI2LDcgKzI2LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRlcm5hbFNldHRpbmdzLmgiCiAKLSNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2lu
Y2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggOWE5NTUzNzdlODNmZTE4NTE0MGM0ZTFiYTY4MGQ4
Y2VmY2ZhODJjMS4uZTVhOTBjMTM5OTNhOWU5ZmUwMTdjNWFmMzlkZmY3YWUxNTQwMzFmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTA5NSw2ICsxMDk1LDE5IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXN1bWVBbmltYXRpb25zKERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0
aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgY29udHJvbGxlci0+cmVzdW1lQW5pbWF0aW9ucygpOwog
fQogCit2b2lkIEludGVybmFsczo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlcyhEb2N1
bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAoreworICAgIGlmICghZG9j
dW1lbnQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIgPSBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKKyAgICBpZiAoIWNhY2hlZFJl
c291cmNlTG9hZGVyKQorICAgICAgICByZXR1cm47CisgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXIt
PmdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMoKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6
OmFsbG93Um91bmRpbmdIYWNrcygpIGNvbnN0CiB7CiAgICAgc2V0dGluZ3MoKS0+YWxsb3dSb3Vu
ZGluZ0hhY2tzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAxNjdiNTI5MTll
OTJlYjc5Y2MxZmVkOWVmZjljNThiOGQwNzU4NjJiLi5kNTEwYmI0OWNiZTY3NTY0NDdkZWJmYTFk
ZWExYTNmNTE3ZTQyNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTE4Miw2
ICsxODIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhEb2N1bWVudCos
IEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoRG9jdW1l
bnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKKyAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9j
dW1lbnRSZXNvdXJjZXMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CisKICAgICB2
b2lkIGFsbG93Um91bmRpbmdIYWNrcygpIGNvbnN0OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA4MTg0YWYzMTY3YzJkNWEzMjcx
Mjc1MzlkNmVkZjg1NzkwYTIyOGRmLi43NmY4ZGFiYTg5ZTdkY2M2NDRlMmQ2NmQ2ZDlkM2M5ZmY5
ZjAyYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xNTUsNiArMTU1
LDggQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoaW4g
RG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBy
ZXN1bWVBbmltYXRpb25zKGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlv
bik7CiAKKyAgICAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzKGluIERv
Y3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisKICAgICAgICAgdm9pZCBh
bGxvd1JvdW5kaW5nSGFja3MoKTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0JBVFRFUllfU1RBVFVT
KSAmJiBFTkFCTEVfQkFUVEVSWV9TVEFUVVMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmZjQ3YmMyODZkMzNiYzI2M2ZkZDY1
NjI3ZTkxODU1N2ZjZGYxYjgxLi5hMmZhZDU3ZDEzZTIwYTE3ZGUzNjA5N2UxYWMyYWI2Yjk4ODRk
MGQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDctMjYgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUmVzb3VyY2Ug
YWdlbnQncyByZWZlcmVuY2UgdG8gY2FjaGVkIHJlc291cmNlcyBzaG91bGQgYmUgd2Vhay4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMTA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvY2FjaGVkLXJlc291cmNlLWRlc3Ryb3llZC1tb3ZlZC10by1zdG9y
YWdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9jYWNoZWQtcmVzb3VyY2UtZGVzdHJveWVkLW1vdmVkLXRvLXN0b3JhZ2UuaHRtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jYWNoZWQtcmVz
b3VyY2UtZGVzdHJveWVkLXRvby1iaWctZGlzY2FyZGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jYWNoZWQtcmVzb3VyY2UtZGVz
dHJveWVkLXRvby1iaWctZGlzY2FyZGVkLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA3LTI2ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTIzNzE1LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jYWNoZWQtcmVzb3VyY2UtZGVzdHJveWVkLW1vdmVkLXRv
LXN0b3JhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9jYWNoZWQtcmVzb3VyY2UtZGVzdHJveWVkLW1vdmVkLXRvLXN0b3JhZ2UtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjczYjQxZWJiN2VhNGM4NjM3NWJkYTUzNTE4Y2EzNjI0MjFiODBi
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2NhY2hlZC1yZXNvdXJjZS1kZXN0cm95ZWQtbW92ZWQtdG8tc3RvcmFnZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMSBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE2OiBEb25lMS4K
K0NPTlNPTEUgTUVTU0FHRTogbGluZSAyNjogRG9uZTIuCitUZXN0cyBjb250ZW50IGlzIG1vdmVk
IGZyb20gY2FjaGVkIHJlc291cmNlIHRvIHJlc291cmNlIGFnZW50J3MgZGF0YSBzdG9yYWdlIHdo
ZW4gY2FjaGVkIHJlc291cmNlIGlzIGRlc3Ryb3llZC4KKworQnVnIDkyMTA4ICAKK2h0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5
cGU9aW1hZ2UmcmFuZG9tPTEmc2l6ZT00MDAKK3JlcXVlc3QudHlwZTogaW1hZ2UKK3JlcXVlc3Qu
Y29udGVudC5sZW5ndGggYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiA1MzYKK1JlbGVhc2luZyBj
YWNoZWQgcmVzb3VyY2UuCityZXF1ZXN0LmNvbnRlbnQubGVuZ3RoIGFmdGVyIHJlcXVlc3Rpbmcg
Y29udGVudDogNTM2CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvY2FjaGVkLXJlc291cmNlLWRlc3Ryb3llZC1tb3ZlZC10by1zdG9yYWdlLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2NhY2hlZC1yZXNv
dXJjZS1kZXN0cm95ZWQtbW92ZWQtdG8tc3RvcmFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5ZTg4ZWNj
MmQ2ZDUwNDNkNzU2YmUwMWE1OWU4YTZmYTQ1NjRiOGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2NhY2hlZC1yZXNvdXJjZS1kZXN0
cm95ZWQtbW92ZWQtdG8tc3RvcmFnZS5odG1sCkBAIC0wLDAgKzEsMTA5IEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9uZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3ZhciBpbWFn
ZTsKK2Z1bmN0aW9uIGxvYWRGaXJzdEltYWdlKCkgeworICAgIGltYWdlID0gbmV3IEltYWdlKCk7
CisgICAgaW1hZ2Uub25sb2FkID0gZmlyc3RJbWFnZUxvYWRlZDsKKyAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGltYWdlKTsKKyAgICBpbWFnZS5zcmMgPSAicmVzb3VyY2VzL3Jlc291cmNl
LnBocD90eXBlPWltYWdlJnJhbmRvbT0xJnNpemU9NDAwIjsKK30KKworZnVuY3Rpb24gZmlyc3RJ
bWFnZUxvYWRlZCgpCit7CisgICAgY29uc29sZS5sb2coIkRvbmUxLiIpOworfQorCitmdW5jdGlv
biBsb2FkU2Vjb25kSW1hZ2UoKSB7CisgICAgaW1hZ2Uub25sb2FkID0gc2Vjb25kSW1hZ2VMb2Fk
ZWQ7CisgICAgaW1hZ2Uuc3JjID0gInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZy
YW5kb209MSZzaXplPTIwMCI7Cit9CisKK2Z1bmN0aW9uIHNlY29uZEltYWdlTG9hZGVkKCkKK3sK
KyAgICBjb25zb2xlLmxvZygiRG9uZTIuIik7Cit9CisKK2Z1bmN0aW9uIGZvcmNlQ2FjaGVkUmVz
b3VyY2VMb2FkZXJHQygpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgd2lu
ZG93LmludGVybmFscy5nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzKCk7Cit9CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIC8vIFNpbmNlIHRoaXMgdGVzdCBjb3VsZCBiZSBydW4gdG9n
ZXRoZXIgd2l0aCBvdGhlciBpbnNwZWN0b3IgYmFja2VuZCBjYWNoZQorICAgIC8vIHRlc3RzLCB3
ZSBuZWVkIHRvIHJlc2V0IHNpemUgbGltaXRzIHRvIGRlZmF1bHQgb25lcy4KKyAgICBJbnNwZWN0
b3JUZXN0LnJlc2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YShzdGVwMSk7CisKKyAgICB2YXIgaW1h
Z2VSZXF1ZXN0OworICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICB7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkQ29uc29sZVNuaWZmZXIoc3RlcDIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKCJsb2FkRmlyc3RJbWFnZSgpIik7CisgICAgfQorCisgICAgZnVuY3Rpb24g
c3RlcDIoKQorICAgIHsKKyAgICAgICAgaW1hZ2VSZXF1ZXN0ID0gV2ViSW5zcGVjdG9yLnBhbmVs
cy5uZXR3b3JrLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0cy5s
ZW5ndGggLSAxXTsKKyAgICAgICAgaW1hZ2VSZXF1ZXN0LnJlcXVlc3RDb250ZW50KHN0ZXAzKTsK
KyAgICB9CisKKyAgICB2YXIgb3JpZ2luYWxDb250ZW50TGVuZ3RoOworICAgIGZ1bmN0aW9uIHN0
ZXAzKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGltYWdlUmVxdWVz
dC51cmwpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVxdWVzdC50eXBlOiAi
ICsgaW1hZ2VSZXF1ZXN0LnR5cGUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
cmVxdWVzdC5jb250ZW50Lmxlbmd0aCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIgKyBpbWFn
ZVJlcXVlc3QuY29udGVudC5sZW5ndGgpOworICAgICAgICBvcmlnaW5hbENvbnRlbnRMZW5ndGgg
PSBpbWFnZVJlcXVlc3QuY29udGVudC5sZW5ndGg7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0VHJ1ZShpbWFnZVJlcXVlc3QuY29udGVudC5sZW5ndGggPiAwLCAiTm8gY29udGVudCBiZWZv
cmUgZGVzdHJveWluZyBDYWNoZWRSZXNvdXJjZS4iKTsKKworICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiUmVsZWFzaW5nIGNhY2hlZCByZXNvdXJjZS4iKTsKKyAgICAgICAgLy8gTG9h
ZGluZyBhbm90aGVyIGltYWdlIHRvIHRoZSBzYW1lIGltYWdlIGVsZW1lbnQgc28gdGhhdCB0aGUg
b3JpZ2luYWwgaW1hZ2UgY2FjaGVkIHJlc291cmNlIGlzIHJlbGVhc2VkLgorICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZENvbnNvbGVTbmlmZmVyKHN0ZXA0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5ldmFsdWF0ZUluUGFnZSgibG9hZFNlY29uZEltYWdlKCkiKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBzdGVwNChtc2cpCisgICAgeworICAgICAgICAvLyBEaXNhYmxlLWVuYWJsZSBjYWNoZSB0
byBmb3JjZSBNZW1vcnlDYWNoZTo6ZXZpY3RSZXNvdXJjZXMoKS4KKyAgICAgICAgTmV0d29ya0Fn
ZW50LnNldENhY2hlRGlzYWJsZWQodHJ1ZSwgc3RlcDUpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHN0ZXA1KG1zZykKKyAgICB7CisgICAgICAgIE5ldHdvcmtBZ2VudC5zZXRDYWNoZURpc2FibGVk
KGZhbHNlLCBzdGVwNik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDYoKQorICAgIHsKKyAg
ICAgICAgLy8gRm9yY2UgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgZ2FyYmFnZSBjb2xsZWN0b3IgcnVu
LgorICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJmb3JjZUNhY2hlZFJlc291
cmNlTG9hZGVyR0MoKSIpOworCisgICAgICAgIC8vIFJlLXJlcXVlc3QgY29udGVudCBub3cgdGhh
dCBDYWNoZWRSZXNvdXJjZSBzaG91bGQgaGF2ZSBiZWVuIGRlc3Ryb3llZC4KKyAgICAgICAgZGVs
ZXRlIGltYWdlUmVxdWVzdC5fY29udGVudDsKKyAgICAgICAgaW1hZ2VSZXF1ZXN0LnJlcXVlc3RD
b250ZW50KHN0ZXA3KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNygpCisgICAgeworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVxdWVzdC5jb250ZW50Lmxlbmd0aCBhZnRl
ciByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIgKyBpbWFnZVJlcXVlc3QuY29udGVudC5sZW5ndGgpOwor
ICAgICAgICBvcmlnaW5hbENvbnRlbnRMZW5ndGggPSBpbWFnZVJlcXVlc3QuY29udGVudC5sZW5n
dGg7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShpbWFnZVJlcXVlc3QuY29udGVu
dC5sZW5ndGggPT09IG9yaWdpbmFsQ29udGVudExlbmd0aCwgIkNvbnRlbnQgY2hhbmdlZCBhZnRl
ciBjYWNoZWQgcmVzb3VyY2Ugd2FzIGRlc3Ryb3llZCIpOworICAgICAgICBJbnNwZWN0b3JUZXN0
LnJlc2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YShzdGVwOCk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gc3RlcDgoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsK
KyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
KzxwPlRlc3RzIGNvbnRlbnQgaXMgbW92ZWQgZnJvbSBjYWNoZWQgcmVzb3VyY2UgdG8gcmVzb3Vy
Y2UgYWdlbnQncyBkYXRhIHN0b3JhZ2Ugd2hlbiBjYWNoZWQgcmVzb3VyY2UgaXMgZGVzdHJveWVk
LjwvcD4KKzxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MjEwOCI+QnVnIDkyMTA4PC9hPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2NhY2hlZC1yZXNvdXJjZS1kZXN0
cm95ZWQtdG9vLWJpZy1kaXNjYXJkZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jYWNoZWQtcmVzb3VyY2UtZGVzdHJveWVkLXRvby1iaWct
ZGlzY2FyZGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTQyNzQ1NmYzYTk5NmMzYjViOTIx
ZWY0M2UyMTg0ZDhiMjJiMzViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jYWNoZWQtcmVzb3VyY2UtZGVzdHJveWVkLXRvby1iaWct
ZGlzY2FyZGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMjM6IERvbmUxLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDMzOiBEb25lMi4KK1Rlc3Rz
IGNhY2hlZCByZXNvdXJjZSBjb250ZW50IGlzIGRpc2NhcmRlZCB3aGVuIGNhY2hlZCByZXNvdXJj
ZSBpcyBkZXN0cm95ZWQgaWYgY29udGVudCBzaXplIGlzIHRvbyBiaWcgZm9yIHRoZSByZXNvdXJj
ZSBhZ2VudCdzIGRhdGEgc3RvcmFnZS4KKworQnVnIDkyMTA4ICAKK2h0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2Um
cmFuZG9tPTEmc2l6ZT00MDAKK3JlcXVlc3QudHlwZTogaW1hZ2UKK3JlcXVlc3QuY29udGVudC5s
ZW5ndGggYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiA1MzYKK1JlbGVhc2luZyBjYWNoZWQgcmVz
b3VyY2UuCityZXF1ZXN0LmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiBudWxsCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY2Fj
aGVkLXJlc291cmNlLWRlc3Ryb3llZC10b28tYmlnLWRpc2NhcmRlZC5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jYWNoZWQtcmVzb3VyY2UtZGVzdHJveWVk
LXRvby1iaWctZGlzY2FyZGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRjMTUwZjYwNTA4YWM1MDM3NTZk
ZjU5Y2JlNWNiMTAzMWJmN2I5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY2FjaGVkLXJlc291cmNlLWRlc3Ryb3llZC10b28tYmln
LWRpc2NhcmRlZC5odG1sCkBAIC0wLDAgKzEsMTA2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9u
ZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3ZhciBpbWFnZTsKK2Z1bmN0aW9u
IGxvYWRGaXJzdEltYWdlKCkgeworICAgIGlmICghd2luZG93LmludGVybmFscykgeworICAgICAg
ICBjb25zb2xlLmxvZygiVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIGFzIHdpbmRvdy5pbnRlcm5h
bHMgaXMgbm90IGF2YWlsYWJsZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBN
YWtlIHN1cmUgdGhlcmUgaXMgbm8gZW5vdWdoIHNwYWNlIHRvIHNhdmUgY29udGVudCBpbiByZXNv
dXJjZSBhZ2VudCdzIHN0b3JhZ2UuCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEluc3BlY3Rv
clJlc291cmNlc0RhdGFTaXplTGltaXRzKDEwMCwgMTAwKTsKKworICAgIGltYWdlID0gbmV3IElt
YWdlKCk7CisgICAgaW1hZ2Uub25sb2FkID0gZmlyc3RJbWFnZUxvYWRlZDsKKyAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGltYWdlKTsKKyAgICBpbWFnZS5zcmMgPSAicmVzb3VyY2VzL3Jl
c291cmNlLnBocD90eXBlPWltYWdlJnJhbmRvbT0xJnNpemU9NDAwIjsKK30KKworZnVuY3Rpb24g
Zmlyc3RJbWFnZUxvYWRlZCgpCit7CisgICAgY29uc29sZS5sb2coIkRvbmUxLiIpOworfQorCitm
dW5jdGlvbiBsb2FkU2Vjb25kSW1hZ2UoKSB7CisgICAgaW1hZ2Uub25sb2FkID0gc2Vjb25kSW1h
Z2VMb2FkZWQ7CisgICAgaW1hZ2Uuc3JjID0gInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1p
bWFnZSZyYW5kb209MSZzaXplPTIwMCI7Cit9CisKK2Z1bmN0aW9uIHNlY29uZEltYWdlTG9hZGVk
KCkKK3sKKyAgICBjb25zb2xlLmxvZygiRG9uZTIuIik7Cit9CisKK2Z1bmN0aW9uIGZvcmNlQ2Fj
aGVkUmVzb3VyY2VMb2FkZXJHQygpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgd2luZG93LmludGVybmFscy5nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzKCk7Cit9
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBpbWFnZVJlcXVlc3Q7CisgICAgSW5zcGVj
dG9yVGVzdC5hZGRDb25zb2xlU25pZmZlcihzdGVwMik7CisgICAgSW5zcGVjdG9yVGVzdC5ldmFs
dWF0ZUluUGFnZSgibG9hZEZpcnN0SW1hZ2UoKSIpOworCisgICAgZnVuY3Rpb24gc3RlcDIoKQor
ICAgIHsKKyAgICAgICAgaW1hZ2VSZXF1ZXN0ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3Jr
LnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0cy5sZW5ndGggLSAx
XTsKKyAgICAgICAgaW1hZ2VSZXF1ZXN0LnJlcXVlc3RDb250ZW50KHN0ZXAzKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdChpbWFnZVJlcXVlc3QudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
InJlcXVlc3QudHlwZTogIiArIGltYWdlUmVxdWVzdC50eXBlKTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoInJlcXVlc3QuY29udGVudC5sZW5ndGggYWZ0ZXIgcmVxdWVzdGluZyBj
b250ZW50OiAiICsgaW1hZ2VSZXF1ZXN0LmNvbnRlbnQubGVuZ3RoKTsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRUcnVlKGltYWdlUmVxdWVzdC5jb250ZW50Lmxlbmd0aCA+IDAsICJObyBj
b250ZW50IGJlZm9yZSBkZXN0cm95aW5nIENhY2hlZFJlc291cmNlLiIpOworCisgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJSZWxlYXNpbmcgY2FjaGVkIHJlc291cmNlLiIpOworICAg
ICAgICAvLyBMb2FkaW5nIGFub3RoZXIgaW1hZ2UgdG8gdGhlIHNhbWUgaW1hZ2UgZWxlbWVudCBz
byB0aGF0IHRoZSBvcmlnaW5hbCBpbWFnZSBjYWNoZWQgcmVzb3VyY2UgaXMgcmVsZWFzZWQuCisg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkQ29uc29sZVNuaWZmZXIoc3RlcDQpOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkU2Vjb25kSW1hZ2UoKSIpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIHN0ZXA0KG1zZykKKyAgICB7CisgICAgICAgIC8vIERpc2FibGUtZW5h
YmxlIGNhY2hlIHRvIGZvcmNlIE1lbW9yeUNhY2hlOjpldmljdFJlc291cmNlcygpLgorICAgICAg
ICBOZXR3b3JrQWdlbnQuc2V0Q2FjaGVEaXNhYmxlZCh0cnVlLCBzdGVwNSk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gc3RlcDUobXNnKQorICAgIHsKKyAgICAgICAgTmV0d29ya0FnZW50LnNldENh
Y2hlRGlzYWJsZWQoZmFsc2UsIHN0ZXA2KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNigp
CisgICAgeworICAgICAgICAvLyBGb3JjZSBDYWNoZWRSZXNvdXJjZUxvYWRlciBnYXJiYWdlIGNv
bGxlY3RvciBydW4uCisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImZvcmNl
Q2FjaGVkUmVzb3VyY2VMb2FkZXJHQygpIik7CisKKyAgICAgICAgLy8gUmUtcmVxdWVzdCBjb250
ZW50IG5vdyB0aGF0IENhY2hlZFJlc291cmNlIHNob3VsZCBoYXZlIGJlZW4gZGVzdHJveWVkLgor
ICAgICAgICBkZWxldGUgaW1hZ2VSZXF1ZXN0Ll9jb250ZW50OworICAgICAgICBpbWFnZVJlcXVl
c3QucmVxdWVzdENvbnRlbnQoc3RlcDcpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA3KCkK
KyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXF1ZXN0LmNvbnRlbnQg
YWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiAiICsgaW1hZ2VSZXF1ZXN0LmNvbnRlbnQpOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRydWUoIWltYWdlUmVxdWVzdC5jb250ZW50LCAiQ29u
dGVudCBhdmFpbGFibGUgYWZ0ZXIgQ2FjaGVkUmVzb3VyY2Ugd2FzIGRlc3Ryb3llZC4iKTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5yZXNldEluc3BlY3RvclJlc291cmNlc0RhdGEoc3RlcDgpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA4KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRl
c3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0cyBjYWNoZWQgcmVzb3VyY2UgY29udGVudCBpcyBk
aXNjYXJkZWQgd2hlbiBjYWNoZWQgcmVzb3VyY2UgaXMgZGVzdHJveWVkIGlmIGNvbnRlbnQgc2l6
ZSBpcyB0b28gYmlnIGZvciB0aGUgcmVzb3VyY2UgYWdlbnQncyBkYXRhIHN0b3JhZ2UuPC9wPgor
PGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMTA4Ij5C
dWcgOTIxMDg8L2E+Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>
<flag name="commit-queue"
          id="163914"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154874</attachid>
            <date>2012-07-27 01:20:31 -0700</date>
            <delta_ts>2012-07-29 13:02:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92108-20120727122018.patch</filename>
            <type>text/plain</type>
            <size>43803</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDlhOGRjZmU2MDA1ZDk0
YTczNTJmMGZjYTUyZjkzNzRjOTA1Y2E5MC4uYjRhMDg2NTgzMmJlYTkzOWEyM2UwNWI2ZTkyNDhj
OWY5YmU2YmQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEyLTA3LTI3ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJlc291cmNlIGFnZW50J3MgcmVmZXJlbmNlIHRvIGNhY2hlZCByZXNvdXJjZXMgc2hvdWxk
IGJlIHdlYWsuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MjEwOAorCisgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCisKKyAgICAgICAg
TmV0d29ya1Jlc291cmNlc0RhdGEgbm93IHN0b3JlcyBhIHJhdyBwb2ludGVyIHRvIENhY2hlZFJl
c291cmNlLgorICAgICAgICBDYWNoZWRSZXNvdXJjZSBub3cgbm90aWZpZXMgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uIHRoYXQgaXQgd2lsbCBiZSBkZXN0cm95ZWQuCisgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbiBzdG9yZXMgYSBzZXQgb2YgSW5zdHJ1bWVudGluZ0FnZW50cyBhbmQg
YnJvYWRjYXN0cyB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlIGV2ZW50IHRvIGFsbCBhdmFpbGFi
bGUgcmVzb3VyY2VBZ2VudHMuCisgICAgICAgIERlc3Ryb3llZCByZXNvdXJjZXMgY29udGVudCBp
cyBzYXZlZCB0byBOZXR3b3JrUmVzb3VyY2VzRGF0YS4KKyAgICAgICAgQ2hhbmdlZCBjb250ZW50
IHNpemUgdmFyaWFibGVzIHR5cGUgaW4gTmV0d29ya1Jlc291cmNlc0RhdGEgZnJvbSBpbnQgdG8g
c2l6ZV90LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2Nh
Y2hlZC1yZXNvdXJjZS1kZXN0cm95ZWQtbW92ZWQtdG8tc3RvcmFnZS5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2NhY2hlZC1yZXNvdXJjZS1kZXN0cm95
ZWQtdG9vLWJpZy1kaXNjYXJkZWQuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnVucmVnaXN0ZXJJbnN0cnVt
ZW50aW5nQWdlbnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmg6CisgICAgICAgIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdl
bnQ6OndpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpnZXRSZXNwb25zZUJvZHkpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgIChJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnNldENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCk6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OmRlY29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNl
c0RhdGE6OnNldFJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1Jlc291cmNlc0RhdGE6Om1heWJlRGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVtb3ZlQ2FjaGVkUmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OmVuc3VyZUZyZWVTcGFjZSk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YmFzZTY0RW5jb2RlZCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpj
YWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChOZXR3b3JrUmVzb3VyY2VzRGF0YSk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlOjp+Q2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2U6OnJlbW92ZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZTo6ZGVsZXRlSWZQb3NzaWJsZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmg6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Z2FyYmFnZUNvbGxlY3REb2N1
bWVudFJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
Y2xlYXJQcmVsb2Fkcyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZUxvYWRlcik6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpl
dmljdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omdh
cmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVybmFscyk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDEyLTA3LTI3ICBEYW5hIEphbnNlbnMgIDxk
YW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRG9uJ3QgYWRkIGEgSFVE
IGxheWVyIHdoZW4gdGhlcmUgaXMgbm8gcm9vdExheWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4
IDE2NThhNDMyZTFkOWMyMjAwYjM4OGI3YTIyMDdiYzY3MThlYjhkMWUuLmFjMjIwNjIyOGExMDcw
NzE2N2RjNmNhMzFiNTZiYTg2MzBiOWIyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC01MTgs
NiArNTE4LDcgQEAgX19aTjdXZWJDb3JlMTlUZXh0UmVzb3VyY2VEZWNvZGVyNWZsdXNoRXYKIF9f
Wk43V2ViQ29yZTE5VGV4dFJlc291cmNlRGVjb2RlcjZkZWNvZGVFUEtjbQogX19aTjdXZWJDb3Jl
MTlUZXh0UmVzb3VyY2VEZWNvZGVyQzFFUktOM1dURjZTdHJpbmdFUktOU18xMlRleHRFbmNvZGlu
Z0ViCiBfX1pON1dlYkNvcmUxOVRleHRSZXNvdXJjZURlY29kZXJEMUV2CitfX1pON1dlYkNvcmUy
MENhY2hlZFJlc291cmNlTG9hZGVyMzFnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzRXYK
IF9fWk43V2ViQ29yZTIwRGljdGF0aW9uQWx0ZXJuYXRpdmVDMUVqankKIF9fWk43V2ViQ29yZTIw
RGljdGF0aW9uQWx0ZXJuYXRpdmVDMUV2CiBfX1pON1dlYkNvcmUyMERpc3BsYXlTbGVlcERpc2Fi
bGVyQzFFUEtjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKaW5kZXggYzNmOWYwOGIzMzlkYmFjMWI2NzIwOTA3OTRhNzU0OWIwMDM4Mjg4Yy4u
YWI2ZTM3N2MxNWNhZjg1MDQxYTgwZDVlMzQ1MDYzNjcwM2YwNWM1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTY1LDYgKzE2
NSw4IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFn
ZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCiAgICAgcnVudGltZUFnZW50LT5zZXRTY3JpcHREZWJ1Z1NlcnZlcigmbV9kZWJ1Z2dl
ckFnZW50LT5zY3JpcHREZWJ1Z1NlcnZlcigpKTsKICNlbmRpZgorCisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpyZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMobV9pbnN0cnVtZW50aW5n
QWdlbnRzLmdldCgpKTsKIH0KIAogSW5zcGVjdG9yQ29udHJvbGxlcjo6fkluc3BlY3RvckNvbnRy
b2xsZXIoKQpAQCAtMTgzLDYgKzE4NSw3IEBAIFBhc3NPd25QdHI8SW5zcGVjdG9yQ29udHJvbGxl
cj4gSW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlKFBhZ2UqIHBhZ2UsIEluc3BlY3RvCiB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKQogewogICAgIGRp
c2Nvbm5lY3RGcm9udGVuZCgpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dW5yZWdp
c3Rlckluc3RydW1lbnRpbmdBZ2VudHMobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpKTsKICAg
ICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+ZGlzY29ubmVjdCgpOwogICAgIG1faW5zcGVjdG9y
Q2xpZW50LT5pbnNwZWN0b3JEZXN0cm95ZWQoKTsKICAgICBtX2luc3BlY3RvckNsaWVudCA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwCmluZGV4IGRmYWEwYTRjNGQ1MmIwNmEyZjE0NWZiMjdiNzk3MzY3YWUyOWVkMmQu
LjBiYzE2ZjQ5NDA3MTNlNzFjZjhlODgzMWUzZDAyZDEzYmY1YjVjNzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBA
IC04MCw2ICs4MCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc2V0VGltZXJFdmVudE5h
bWUgPSAic2V0VGltZXIiOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGNsZWFyVGltZXJFdmVu
dE5hbWUgPSAiY2xlYXJUaW1lciI7CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgdGltZXJGaXJl
ZEV2ZW50TmFtZSA9ICJ0aW1lckZpcmVkIjsKIAorbmFtZXNwYWNlIHsKK3N0YXRpYyBIYXNoU2V0
PEluc3RydW1lbnRpbmdBZ2VudHMqPiogaW5zdHJ1bWVudGluZ0FnZW50c1NldCA9IDA7Cit9CisK
IGludCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNfZnJvbnRlbmRDb3VudGVyID0gMDsKIAog
c3RhdGljIGJvb2wgZXZlbnRIYXNMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8RXZlbnRDb250
ZXh0PiYgYW5jZXN0b3JzKQpAQCAtODQ0LDYgKzg0OCwxOCBAQCB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqCiAgICAgICAgIGluc3BlY3RvclBhZ2VBZ2VudC0+bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWUo
bG9hZGVyKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95
Q2FjaGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKK3sKKyAg
ICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHNTZXQpCisgICAgICAgIHJldHVybjsKKyAgICBIYXNo
U2V0PEluc3RydW1lbnRpbmdBZ2VudHMqPjo6aXRlcmF0b3IgZW5kID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c1NldC0+ZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PEluc3RydW1lbnRpbmdBZ2VudHMqPjo6
aXRlcmF0b3IgaXQgPSBpbnN0cnVtZW50aW5nQWdlbnRzU2V0LT5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cyA9ICppdDsKKyAgICAgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIGluc3BlY3RvclJl
c291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50
KCkpCisgICAgICAgICAgICBpbnNwZWN0b3JSZXNvdXJjZUFnZW50LT53aWxsRGVzdHJveUNhY2hl
ZFJlc291cmNlKGNhY2hlZFJlc291cmNlKTsKKyAgICB9Cit9CisKIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUxJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGludCBs
ZW5ndGgsIHVuc2lnbmVkIGludCBzdGFydExpbmUsIEZyYW1lKiBmcmFtZSkKIHsKICAgICBpbnQg
dGltZWxpbmVBZ2VudElkID0gMDsKQEAgLTExNDEsNiArMTE1NywyMiBAQCBXVEY6OlRocmVhZFNw
ZWNpZmljPEluc3BlY3RvclRpbWVsaW5lQWdlbnQqPiYgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp0aHJlYWRTcAogICAgIHJldHVybiAqaW5zdGFuY2U7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpyZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3sKKyAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2Vu
dHNTZXQpCisgICAgICAgIGluc3RydW1lbnRpbmdBZ2VudHNTZXQgPSBuZXcgSGFzaFNldDxJbnN0
cnVtZW50aW5nQWdlbnRzKj4oKTsKKyAgICBpbnN0cnVtZW50aW5nQWdlbnRzU2V0LT5hZGQoaW5z
dHJ1bWVudGluZ0FnZW50cyk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1
bnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzKQoreworICAgIGlmICghaW5zdHJ1bWVudGluZ0FnZW50c1NldCkKKyAgICAg
ICAgcmV0dXJuOworICAgIGluc3RydW1lbnRpbmdBZ2VudHNTZXQtPnJlbW92ZShpbnN0cnVtZW50
aW5nQWdlbnRzKTsKKyAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHNTZXQtPnNpemUoKSkKKyAg
ICAgICAgZGVsZXRlIGluc3RydW1lbnRpbmdBZ2VudHNTZXQ7Cit9CisKIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVUaW1lbGluZUFnZW50
KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQogewogICAgIGlm
ICghY29va2llLmZpcnN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDMyODdmNzFjYWFmYWJlMzA0NDhkMWU5YTZhOTk4
YjhlNzAyOTVmMmEuLjYxNDdmNzdkZWY4MzI0NzQ2YjliNmE3YTlkNDFiNjlhM2VhMTMzM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgKQEAgLTE4Nyw2ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZnJhbWVE
ZXRhY2hlZEZyb21QYXJlbnQoRnJhbWUqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDb21taXRMb2Fk
KEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBsb2FkZXJEZXRhY2hl
ZEZyb21GcmFtZShGcmFtZSosIERvY3VtZW50TG9hZGVyKik7CisgICAgc3RhdGljIHZvaWQgd2ls
bERlc3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwogCiAgICAgc3RhdGljIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsV3JpdGVIVE1MKERvY3VtZW50KiwgdW5z
aWduZWQgaW50IGxlbmd0aCwgdW5zaWduZWQgaW50IHN0YXJ0TGluZSk7CiAgICAgc3RhdGljIHZv
aWQgZGlkV3JpdGVIVE1MKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIHVu
c2lnbmVkIGludCBlbmRMaW5lKTsKQEAgLTI2Myw2ICsyNjQsOSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEdlb2xvY2F0aW9uUG9zaXRpb24qIG92ZXJyaWRlR2VvbG9jYXRpb25Qb3NpdGlvbihQYWdl
KiwgR2VvbG9jYXRpb25Qb3NpdGlvbiopOwogI2VuZGlmCiAKKyAgICBzdGF0aWMgdm9pZCByZWdp
c3Rlckluc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50cyopOworICAgIHN0YXRp
YyB2b2lkIHVucmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHMq
KTsKKwogcHJpdmF0ZToKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIHN0YXRpYyBXVEY6OlRo
cmVhZFNwZWNpZmljPEluc3BlY3RvclRpbWVsaW5lQWdlbnQqPiYgdGhyZWFkU3BlY2lmaWNUaW1l
bGluZUFnZW50Rm9yT3JwaGFuRXZlbnRzKCk7CkBAIC0zNTksNiArMzYzLDcgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgdm9pZCBmcmFtZURldGFjaGVkRnJvbVBhcmVudEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgZGlkQ29tbWl0TG9hZEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyosIFBhZ2UqLCBEb2N1bWVudExvYWRlciopOwogICAgIHN0YXRpYyB2
b2lkIGxvYWRlckRldGFjaGVkRnJvbUZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9j
dW1lbnRMb2FkZXIqKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNl
SW1wbChDYWNoZWRSZXNvdXJjZSopOwogCiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSB3aWxsV3JpdGVIVE1MSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWdu
ZWQgaW50IGxlbmd0aCwgdW5zaWduZWQgaW50IHN0YXJ0TGluZSwgRnJhbWUqKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRXcml0ZUhUTUxJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSYsIHVuc2lnbmVkIGludCBlbmRMaW5lKTsKQEAgLTEyMDAsNiArMTIwNSwxNCBAQCBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvYWRlckRldGFjaGVkRnJvbUZyYW1l
KEZyYW1lKiBmcmFtZSwgRG9jdQogI2VuZGlmCiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSog
Y2FjaGVkUmVzb3VyY2UpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKKyAgICB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNl
SW1wbChjYWNoZWRSZXNvdXJjZSk7CisjZW5kaWYKK30KKwogaW5saW5lIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUwo
RG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgc3Rh
cnRMaW5lKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggODc3NmJiODU1MTRh
ZDY3MTdjYzUwMjRmNTBjNmUyZTVjMjhlM2E4Zi4uNjUxNDhiMjIxYzVhMzFjODBkMzlhYzRkNzQ2
NDY0ZjVmMDU2MzQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBjaGFyCiAKICAgICBpZiAoZGF0YSkgewogICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPmRh
dGEocmVxdWVzdElkKTsKLSAgICAgICAgaWYgKG1fcmVzb3VyY2VzRGF0YS0+cmVzb3VyY2VUeXBl
KHJlcXVlc3RJZCkgPT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlIHx8IChyZXNv
dXJjZURhdGEgJiYgaXNFcnJvclN0YXR1c0NvZGUocmVzb3VyY2VEYXRhLT5odHRwU3RhdHVzQ29k
ZSgpKSAmJiAocmVzb3VyY2VEYXRhLT5jYWNoZWRSZXNvdXJjZSgpKSkpCisgICAgICAgIGlmICht
X3Jlc291cmNlc0RhdGEtPnJlc291cmNlVHlwZShyZXF1ZXN0SWQpID09IEluc3BlY3RvclBhZ2VB
Z2VudDo6T3RoZXJSZXNvdXJjZSB8fCAocmVzb3VyY2VEYXRhICYmIGlzRXJyb3JTdGF0dXNDb2Rl
KHJlc291cmNlRGF0YS0+aHR0cFN0YXR1c0NvZGUoKSkgJiYgcmVzb3VyY2VEYXRhLT5jYWNoZWRS
ZXNvdXJjZSgpKSkKICAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJj
ZURhdGEocmVxdWVzdElkLCBkYXRhLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKQEAgLTM2NCw2ICsz
NjQsMjEgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkWEhSU3luY2hyb25v
dXNseSgpCiAgICAgbV9sb2FkaW5nWEhSU3luY2hyb25vdXNseSA9IGZhbHNlOwogfQogCit2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHJlcXVlc3RJ
ZHMgPSBtX3Jlc291cmNlc0RhdGEtPnJlbW92ZUNhY2hlZFJlc291cmNlKGNhY2hlZFJlc291cmNl
KTsKKyAgICBpZiAoIXJlcXVlc3RJZHMuc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBT
dHJpbmcgY29udGVudDsKKyAgICBib29sIGJhc2U2NEVuY29kZWQ7CisgICAgaWYgKCFJbnNwZWN0
b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChjYWNoZWRSZXNvdXJjZSwgJmNvbnRl
bnQsICZiYXNlNjRFbmNvZGVkKSkKKyAgICAgICAgcmV0dXJuOworICAgIFZlY3RvcjxTdHJpbmc+
OjppdGVyYXRvciBlbmQgPSByZXF1ZXN0SWRzLmVuZCgpOworICAgIGZvciAoVmVjdG9yPFN0cmlu
Zz46Oml0ZXJhdG9yIGl0ID0gcmVxdWVzdElkcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisg
ICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KCppdCwgY29udGVudCwg
YmFzZTY0RW5jb2RlZCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6YXBwbHlV
c2VyQWdlbnRPdmVycmlkZShTdHJpbmcqIHVzZXJBZ2VudCkKIHsKICAgICBTdHJpbmcgdXNlckFn
ZW50T3ZlcnJpZGUgPSBtX3N0YXRlLT5nZXRTdHJpbmcoUmVzb3VyY2VBZ2VudFN0YXRlOjp1c2Vy
QWdlbnRPdmVycmlkZSk7CkBAIC01MjksNyArNTQ0LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpnZXRSZXNwb25zZUJvZHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBT
dHIKICAgICB9CiAKICAgICBpZiAocmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkpIHsKLSAgICAg
ICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKKyAgICAgICAgKmJhc2U2NEVuY29kZWQgPSByZXNv
dXJjZURhdGEtPmJhc2U2NEVuY29kZWQoKTsKICAgICAgICAgKmNvbnRlbnQgPSByZXNvdXJjZURh
dGEtPmNvbnRlbnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmluZGV4IDU0Y2Y0OGUxZmZi
NWViZDVlMzdhZDg3YjU4YjIwZTRlYzVjNmFjZDIuLjhkYWIyNTMwOGIyZTZjNTU5YWE2NDhlNDM1
ODc1YmI3M2M2M2MzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuaApAQCAtMTAzLDYgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZFJlY2VpdmVYSFJSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHZv
aWQgd2lsbExvYWRYSFJTeW5jaHJvbm91c2x5KCk7CiAgICAgdm9pZCBkaWRMb2FkWEhSU3luY2hy
b25vdXNseSgpOworICAgIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZSopOwogCiAgICAgdm9pZCBhcHBseVVzZXJBZ2VudE92ZXJyaWRlKFN0cmluZyogdXNlckFn
ZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAKaW5kZXggNjE5YTE5YWE2ZGYzN2I5MzM2OWVkYTkyODU4NTdhZDY1OGIxMDdiYy4u
OWVmNzVmYjE0ZGE0ZDJiYjIxZDgxZmE0ZTc2OTFhNjBjOTk3ZDY1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0zOCwxMCAr
MzgsMTAgQEAKIAogbmFtZXNwYWNlIHsKIC8vIDEwME1CCi1zdGF0aWMgaW50IG1heGltdW1SZXNv
dXJjZXNDb250ZW50U2l6ZSA9IDEwMCAqIDEwMDAgKiAxMDAwOworc3RhdGljIHNpemVfdCBtYXhp
bXVtUmVzb3VyY2VzQ29udGVudFNpemUgPSAxMDAgKiAxMDAwICogMTAwMDsKIAogLy8gMTBNQgot
c3RhdGljIGludCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDEwICogMTAwMCAq
IDEwMDA7CitzdGF0aWMgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0g
MTAgKiAxMDAwICogMTAwMDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsMTYgKzUx
LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5n
JiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVy
SWQobG9hZGVySWQpCisgICAgLCBtX2Jhc2U2NEVuY29kZWQoZmFsc2UpCiAgICAgLCBtX2lzQ29u
dGVudFB1cmdlZChmYWxzZSkKICAgICAsIG1fdHlwZShJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVy
UmVzb3VyY2UpCisgICAgLCBtX2NhY2hlZFJlc291cmNlKDApCiB7CiB9CiAKLXZvaWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6c2V0Q29udGVudChjb25zdCBTdHJpbmcmIGNv
bnRlbnQpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnNldENvbnRl
bnQoY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQpCiB7CiAgICAgQVNT
RVJUKCFoYXNEYXRhKCkpOwogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKICAgICBtX2NvbnRl
bnQgPSBjb250ZW50OworICAgIG1fYmFzZTY0RW5jb2RlZCA9IGJhc2U2NEVuY29kZWQ7CiB9CiAK
IHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRl
bnQoKQpAQCAtODYsMTIgKzg5LDEyIEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OnB1cmdlQ29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92ZUNvbnRlbnQoKTsK
IH0KIAotaW50IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgo
KSBjb25zdAorc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFM
ZW5ndGgoKSBjb25zdAogewogICAgIHJldHVybiBtX2RhdGFCdWZmZXIgPyBtX2RhdGFCdWZmZXIt
PnNpemUoKSA6IDA7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6YXBwZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAg
ICAgaWYgKCFtX2RhdGFCdWZmZXIpCkBAIC0xMDAsMTAgKzEwMywxMCBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgY2hhciogZGF0YSwg
aW50IGRhdGFMZQogICAgICAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3Ro
KTsKIH0KIAotaW50IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURh
dGFUb0NvbnRlbnQoKQorc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAg
ICBpbnQgZGF0YUxlbmd0aCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOworICAgIHNpemVfdCBkYXRh
TGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CiAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVy
LT5kZWNvZGUobV9kYXRhQnVmZmVyLT5kYXRhKCksIG1fZGF0YUJ1ZmZlci0+c2l6ZSgpKTsKICAg
ICBtX2NvbnRlbnQgKz0gbV9kZWNvZGVyLT5mbHVzaCgpOwogICAgIG1fZGF0YUJ1ZmZlciA9IG51
bGxwdHI7CkBAIC0xNzEsMTIgKzE3NCwxMiBAQCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNl
VHlwZSBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZwogICAg
IHJldHVybiByZXNvdXJjZURhdGEtPnR5cGUoKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6c2V0UmVzb3VyY2VDb250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnQpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpzZXRSZXNvdXJjZUNv
bnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9v
bCBiYXNlNjRFbmNvZGVkKQogewogICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gbV9y
ZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5nZXQocmVxdWVzdElkKTsKICAgICBpZiAoIXJlc291
cmNlRGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIGludCBkYXRhTGVuZ3RoID0gMiAqIGNvbnRl
bnQubGVuZ3RoKCk7CisgICAgc2l6ZV90IGRhdGFMZW5ndGggPSAyICogY29udGVudC5sZW5ndGgo
KTsKICAgICBpZiAoZGF0YUxlbmd0aCA+IG1fbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNp
emUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAocmVzb3VyY2VEYXRhLT5pc0NvbnRlbnRQdXJn
ZWQoKSkKQEAgLTE4NiwxMiArMTg5LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnNl
dFJlc291cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyCiAgICAg
ICAgIGlmIChyZXNvdXJjZURhdGEtPmhhc0NvbnRlbnQoKSkKICAgICAgICAgICAgIG1fY29udGVu
dFNpemUgLT0gcmVzb3VyY2VEYXRhLT5yZW1vdmVDb250ZW50KCk7CiAgICAgICAgIG1fcmVxdWVz
dElkc0RlcXVlLmFwcGVuZChyZXF1ZXN0SWQpOwotICAgICAgICByZXNvdXJjZURhdGEtPnNldENv
bnRlbnQoY29udGVudCk7CisgICAgICAgIHJlc291cmNlRGF0YS0+c2V0Q29udGVudChjb250ZW50
LCBiYXNlNjRFbmNvZGVkKTsKICAgICAgICAgbV9jb250ZW50U2l6ZSArPSBkYXRhTGVuZ3RoOwog
ICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZURh
dGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZURhdGEoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
KQogewogICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gbV9yZXF1ZXN0SWRUb1Jlc291
cmNlRGF0YU1hcC5nZXQocmVxdWVzdElkKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKQEAgLTIx
Nyw3ICsyMjAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZURlY29kZURhdGFU
b0NvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpCiAgICAgaWYgKCFyZXNvdXJjZURhdGEt
Pmhhc0RhdGEoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGVudFNpemUgKz0gcmVzb3Vy
Y2VEYXRhLT5kZWNvZGVEYXRhVG9Db250ZW50KCk7Ci0gICAgaW50IGRhdGFMZW5ndGggPSAyICog
cmVzb3VyY2VEYXRhLT5jb250ZW50KCkubGVuZ3RoKCk7CisgICAgc2l6ZV90IGRhdGFMZW5ndGgg
PSAyICogcmVzb3VyY2VEYXRhLT5jb250ZW50KCkubGVuZ3RoKCk7CiAgICAgaWYgKGRhdGFMZW5n
dGggPiBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQogICAgICAgICBtX2NvbnRl
bnRTaXplIC09IHJlc291cmNlRGF0YS0+cHVyZ2VDb250ZW50KCk7CiB9CkBAIC0yNDUsNiArMjQ4
LDIyIEBAIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpkYXRhKGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIG1fcmVxdWVzdElkVG9S
ZXNvdXJjZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCk7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpyZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2Fj
aGVkUmVzb3VyY2UpCit7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OworICAgIFJlc291cmNl
RGF0YU1hcDo6aXRlcmF0b3IgaXQ7CisgICAgUmVzb3VyY2VEYXRhTWFwOjppdGVyYXRvciBlbmQg
PSBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLmVuZCgpOworICAgIGZvciAoaXQgPSBtX3Jl
cXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAg
ICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGlm
IChyZXNvdXJjZURhdGEtPmNhY2hlZFJlc291cmNlKCkgPT0gY2FjaGVkUmVzb3VyY2UpIHsKKyAg
ICAgICAgICAgIHJlc291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UoMCk7CisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKGl0LT5maXJzdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCiB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpjbGVhcihjb25zdCBT
dHJpbmcmIHByZXNlcnZlZExvYWRlcklkKQogewogICAgIG1fcmVxdWVzdElkc0RlcXVlLmNsZWFy
KCk7CkBAIC0yNjQsNyArMjgzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6Y2xlYXIo
Y29uc3QgU3RyaW5nJiBwcmVzZXJ2ZWRMb2FkZXJJZCkKICAgICBtX3JlcXVlc3RJZFRvUmVzb3Vy
Y2VEYXRhTWFwLnN3YXAocHJlc2VydmVkTWFwKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHMoaW50IG1heGltdW1SZXNvdXJjZXNDb250
ZW50U2l6ZSwgaW50IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQordm9pZCBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHMoc2l6ZV90IG1heGlt
dW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRl
bnRTaXplKQogewogICAgIGNsZWFyKCk7CiAgICAgbV9tYXhpbXVtUmVzb3VyY2VzQ29udGVudFNp
emUgPSBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemU7CkBAIC0yODMsNyArMzAyLDcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6ZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkKQogICAgIH0KIH0KIAotYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
ZW5zdXJlRnJlZVNwYWNlKGludCBzaXplKQorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6ZW5z
dXJlRnJlZVNwYWNlKHNpemVfdCBzaXplKQogewogICAgIGlmIChzaXplID4gbV9tYXhpbXVtUmVz
b3VyY2VzQ29udGVudFNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggMWIxNzJlNzllMDEy
M2U4MWMxYzU2ZTE5NGZhYTM5MGM3ZTU3N2JkNC4uOGRmZDVkZDBkYmIyMTFhMGM0OTJlYTZmMWZk
M2E0OGU5MDc3MWVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpZm5kZWYgTmV0d29ya1Jlc291cmNl
c0RhdGFfaAogI2RlZmluZSBOZXR3b3JrUmVzb3VyY2VzRGF0YV9oCiAKLSNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2lu
Y2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKIApAQCAtNjUsNyArNjQsOSBAQCBwdWJsaWM6
CiAKICAgICAgICAgYm9vbCBoYXNDb250ZW50KCkgY29uc3QgeyByZXR1cm4gIW1fY29udGVudC5p
c051bGwoKTsgfQogICAgICAgICBTdHJpbmcgY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGVudDsgfQotICAgICAgICB2b2lkIHNldENvbnRlbnQoY29uc3QgU3RyaW5nJik7CisgICAgICAg
IHZvaWQgc2V0Q29udGVudChjb25zdCBTdHJpbmcmLCBib29sIGJhc2U2NEVuY29kZWQpOworCisg
ICAgICAgIGJvb2wgYmFzZTY0RW5jb2RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZTY0RW5jb2Rl
ZDsgfQogCiAgICAgICAgIHVuc2lnbmVkIHJlbW92ZUNvbnRlbnQoKTsKICAgICAgICAgYm9vbCBp
c0NvbnRlbnRQdXJnZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ29udGVudFB1cmdlZDsgfQpAQCAt
ODYsMjAgKzg3LDIxIEBAIHB1YmxpYzoKICAgICAgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAgICAgICAgIHZvaWQgc2V0QnVm
ZmVyKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIpIHsgbV9idWZmZXIgPSBidWZmZXI7
IH0KIAotICAgICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlZFJlc291cmNlLmdldCgpOyB9CisgICAgICAgIENhY2hlZFJlc291cmNlKiBj
YWNoZWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2U7IH0KICAgICAg
ICAgdm9pZCBzZXRDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2Up
IHsgbV9jYWNoZWRSZXNvdXJjZSA9IGNhY2hlZFJlc291cmNlOyB9CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KLSAg
ICAgICAgaW50IGRhdGFMZW5ndGgoKSBjb25zdDsKLSAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNv
bnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgaW50IGRlY29kZURhdGFU
b0NvbnRlbnQoKTsKKyAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsKKyAgICAgICAg
dm9pZCBhcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKKyAg
ICAgICAgc2l6ZV90IGRlY29kZURhdGFUb0NvbnRlbnQoKTsKIAogICAgICAgICBTdHJpbmcgbV9y
ZXF1ZXN0SWQ7CiAgICAgICAgIFN0cmluZyBtX2xvYWRlcklkOwogICAgICAgICBTdHJpbmcgbV9m
cmFtZUlkOwogICAgICAgICBTdHJpbmcgbV91cmw7CiAgICAgICAgIFN0cmluZyBtX2NvbnRlbnQ7
CisgICAgICAgIGJvb2wgbV9iYXNlNjRFbmNvZGVkOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIGJvb2wgbV9pc0NvbnRlbnRQdXJnZWQ7CiAgICAg
ICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIG1fdHlwZTsKQEAgLTEwOSw3ICsx
MTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2Rl
Y29kZXI7CiAKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Ci0gICAgICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBtX2NhY2hlZFJlc291cmNlOwor
ICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRSZXNvdXJjZTsKICAgICB9OwogCiAgICAg
TmV0d29ya1Jlc291cmNlc0RhdGEoKTsKQEAgLTEyMCwyNyArMTIyLDI4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0
cmluZyYgZnJhbWVJZCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgc2V0UmVz
b3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJl
c291cmNlVHlwZSk7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVzb3Vy
Y2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKLSAgICB2b2lkIHNldFJlc291cmNlQ29u
dGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKLSAg
ICB2b2lkIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25z
dCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CisgICAgdm9pZCBzZXRSZXNvdXJjZUNvbnRl
bnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBi
YXNlNjRFbmNvZGVkID0gZmFsc2UpOworICAgIHZvaWQgbWF5YmVBZGRSZXNvdXJjZURhdGEoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
KTsKICAgICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCk7CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhKGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNoZWRS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiBw
cmVzZXJ2ZWRMb2FkZXJJZCA9IFN0cmluZygpKTsKIAotICAgIHZvaWQgc2V0UmVzb3VyY2VzRGF0
YVNpemVMaW1pdHMoaW50IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgaW50IG1heGltdW1T
aW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKTsKKyAgICB2b2lkIHNldFJlc291cmNlc0RhdGFTaXpl
TGltaXRzKHNpemVfdCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIHNpemVfdCBtYXhpbXVt
U2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVO
b0RhdGFGb3JSZXF1ZXN0SWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwotICAgIGJvb2wgZW5z
dXJlRnJlZVNwYWNlKGludCBzaXplKTsKKyAgICBib29sIGVuc3VyZUZyZWVTcGFjZShzaXplX3Qp
OwogCiAgICAgRGVxdWU8U3RyaW5nPiBtX3JlcXVlc3RJZHNEZXF1ZTsKIAogICAgIHR5cGVkZWYg
SGFzaE1hcDxTdHJpbmcsIFJlc291cmNlRGF0YSo+IFJlc291cmNlRGF0YU1hcDsKICAgICBSZXNv
dXJjZURhdGFNYXAgbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcDsKLSAgICBpbnQgbV9jb250
ZW50U2l6ZTsKLSAgICBpbnQgbV9tYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemU7Ci0gICAgaW50
IG1fbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemU7CisgICAgc2l6ZV90IG1fY29udGVu
dFNpemU7CisgICAgc2l6ZV90IG1fbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplOworICAgIHNp
emVfdCBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAKaW5kZXggMzk5OGVmZDMyNjMzM2ZhYjIyYTUzZGM0ZmRhNDAyMmY4ZTM5OGI1NC4u
NTcxNDM5NjU2ZGFjMjQzZGI5NGI3MzAyYWY2YWY0MDQ5YzAxMTI5YiAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQdXJn
ZWFibGVCdWZmZXIuaCIKQEAgLTE3Niw3ICsxNzcsNyBAQCBDYWNoZWRSZXNvdXJjZTo6fkNhY2hl
ZFJlc291cmNlKCkKICAgICBBU1NFUlQoIWluQ2FjaGUoKSk7CiAgICAgQVNTRVJUKCFtX2RlbGV0
ZWQpOwogICAgIEFTU0VSVCh1cmwoKS5pc051bGwoKSB8fCBtZW1vcnlDYWNoZSgpLT5yZXNvdXJj
ZUZvclVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKCkpKSAhPSB0aGlzKTsKLSAgICAKKwog
I2lmbmRlZiBOREVCVUcKICAgICBtX2RlbGV0ZWQgPSB0cnVlOwogICAgIGNhY2hlZFJlc291cmNl
TGVha0NvdW50ZXIuZGVjcmVtZW50KCk7CkBAIC00MzAsOSArNDMxLDggQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6cmVtb3ZlQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQpCiAgICAg
ICAgIGRpZFJlbW92ZUNsaWVudChjbGllbnQpOwogICAgIH0KIAotICAgIGlmIChjYW5EZWxldGUo
KSAmJiAhaW5DYWNoZSgpKQotICAgICAgICBkZWxldGUgdGhpczsKLSAgICBlbHNlIGlmICghaGFz
Q2xpZW50cygpICYmIGluQ2FjaGUoKSkgeworICAgIGJvb2wgZGVsZXRlZCA9IGRlbGV0ZUlmUG9z
c2libGUoKTsKKyAgICBpZiAoIWRlbGV0ZWQgJiYgIWhhc0NsaWVudHMoKSAmJiBpbkNhY2hlKCkp
IHsKICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlRnJvbUxpdmVSZXNvdXJjZXNTaXplKHRo
aXMpOwogICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmVGcm9tTGl2ZURlY29kZWRSZXNvdXJj
ZXNMaXN0KHRoaXMpOwogICAgICAgICBhbGxDbGllbnRzUmVtb3ZlZCgpOwpAQCAtNDQ5LDEwICs0
NDksMTQgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6cmVtb3ZlQ2xpZW50KENhY2hlZFJlc291cmNl
Q2xpZW50KiBjbGllbnQpCiAgICAgLy8gVGhpcyBvYmplY3QgbWF5IGJlIGRlYWQgaGVyZS4KIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZGVsZXRlSWZQb3NzaWJsZSgpCitib29sIENhY2hlZFJl
c291cmNlOjpkZWxldGVJZlBvc3NpYmxlKCkKIHsKLSAgICBpZiAoY2FuRGVsZXRlKCkgJiYgIWlu
Q2FjaGUoKSkKKyAgICBpZiAoY2FuRGVsZXRlKCkgJiYgIWluQ2FjaGUoKSkgeworICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UodGhpcyk7
CiAgICAgICAgIGRlbGV0ZSB0aGlzOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOwogfQogICAgIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0RGVjb2RlZFNp
emUodW5zaWduZWQgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgKaW5kZXggN2ZiZjczMzY1ODU1YjM4YTcwNTNjNTkyZGI2MDZmOGYxZWQyYTg0YS4u
OWFhMWY2YTJlOWVjNWM1MDE0N2IyMDFiMGM3YjAxNWFiNjU4ZGRkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKICAgICB2
b2lkIHJlbW92ZUNsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwogICAgIGJvb2wgaGFzQ2xp
ZW50cygpIGNvbnN0IHsgcmV0dXJuICFtX2NsaWVudHMuaXNFbXB0eSgpIHx8ICFtX2NsaWVudHNB
d2FpdGluZ0NhbGxiYWNrLmlzRW1wdHkoKTsgfQotICAgIHZvaWQgZGVsZXRlSWZQb3NzaWJsZSgp
OworICAgIGJvb2wgZGVsZXRlSWZQb3NzaWJsZSgpOwogCiAgICAgZW51bSBQcmVsb2FkUmVzdWx0
IHsKICAgICAgICAgUHJlbG9hZE5vdFJlZmVyZW5jZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCBlMTk4N2MzZmUz
ODI3OTMyY2RhM2JjYzgzMmM1MWNjYThmYWQxNjMxLi45YTg4NzI0YTE1MGQxYWU2ZTRhODUwYTEx
OGE5YzRmMzhlZWU5ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTY3Niw3ICs2NzYsMTEgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6bG9hZERvbmUoKQogdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyRmlyZWQoVGltZXI8Q2FjaGVkUmVz
b3VyY2VMb2FkZXI+KiB0aW1lcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9
PSAmbV9nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXIpOworICAgIGdhcmJhZ2VD
b2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMoKTsKK30KIAordm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlcygpCit7CiAgICAgdHlwZWRlZiBWZWN0
b3I8U3RyaW5nLCAxMD4gU3RyaW5nVmVjdG9yOwogICAgIFN0cmluZ1ZlY3RvciByZXNvdXJjZXNU
b0RlbGV0ZTsKIApAQCAtODEzLDkgKzgxNyw4IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OmNsZWFyUHJlbG9hZHMoKQogICAgIGZvciAoTGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPjo6
aXRlcmF0b3IgaXQgPSBtX3ByZWxvYWRzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAg
ICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlcyA9ICppdDsKICAgICAgICAgcmVzLT5kZWNyZWFzZVBy
ZWxvYWRDb3VudCgpOwotICAgICAgICBpZiAocmVzLT5jYW5EZWxldGUoKSAmJiAhcmVzLT5pbkNh
Y2hlKCkpCi0gICAgICAgICAgICBkZWxldGUgcmVzOwotICAgICAgICBlbHNlIGlmIChyZXMtPnBy
ZWxvYWRSZXN1bHQoKSA9PSBDYWNoZWRSZXNvdXJjZTo6UHJlbG9hZE5vdFJlZmVyZW5jZWQpCisg
ICAgICAgIGJvb2wgZGVsZXRlZCA9IHJlcy0+ZGVsZXRlSWZQb3NzaWJsZSgpOworICAgICAgICBp
ZiAoIWRlbGV0ZWQgJiYgcmVzLT5wcmVsb2FkUmVzdWx0KCkgPT0gQ2FjaGVkUmVzb3VyY2U6OlBy
ZWxvYWROb3RSZWZlcmVuY2VkKQogICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlKHJl
cyk7CiAgICAgfQogICAgIG1fcHJlbG9hZHMuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggZDgyYjNiZjQyYTcz
OGM3NzViODZhMDgzNjJhZDVhOWExMmFlOWQzZC4uNWVlYjM4NzFmMDNiNDBmODYwOTgwMDE1NDY4
MWM1YjA1NmQzYWNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTEwNSw2ICsxMDUsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKikgY29uc3Q7CiAgICAgdm9p
ZCBsb2FkRG9uZSgpOworICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlcygp
OwogICAgIAogICAgIHZvaWQgaW5jcmVtZW50UmVxdWVzdENvdW50KGNvbnN0IENhY2hlZFJlc291
cmNlKik7CiAgICAgdm9pZCBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4
IDI5OWQxMGE3MDUxMjhiNmFjZmYyMzhmZTA3MTk5YTk5NDU5ZDQyNTQuLjVkYzA0NzQwMmNiM2Q3
NDhlZDk3MzQ3OWU2NDIyODc1OTM3ODg5MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL01lbW9yeUNhY2hlLmNwcApAQCAtNDAyLDggKzQwMiw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6
OmV2aWN0KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICB9IGVsc2UKICAgICAgICAgQVNT
RVJUKG1fcmVzb3VyY2VzLmdldChyZXNvdXJjZS0+dXJsKCkpICE9IHJlc291cmNlKTsKIAotICAg
IGlmIChyZXNvdXJjZS0+Y2FuRGVsZXRlKCkpCi0gICAgICAgIGRlbGV0ZSByZXNvdXJjZTsKKyAg
ICByZXNvdXJjZS0+ZGVsZXRlSWZQb3NzaWJsZSgpOwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2ln
bmVkIGZhc3RMb2cyKHVuc2lnbmVkIGkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmNwcAppbmRleCA1MzFiMDRmNmNjMjg3NzhkMGFmMjkyMDNhMmEwMDZiMWU0YTI4
MmJmLi40NDViODc4MTVhNzZjZWJiNTczYWE5OWJhZDAyNGY0ZTQzZTUwY2Q0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTI2LDcgKzI2LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRlcm5hbFNldHRpbmdzLmgiCiAKLSNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2lu
Y2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMGM1MDY1MWI2MzcxZDBiMzVkZjA0YTBiYjA3ZGMx
ZmM4ZjRjMDk1My4uYzA1MDJhNzlmMmMwMWM1ZDhkYmE5YTA2YWJlNTYwODRhYTkxZGI2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTA5Niw2ICsxMDk2LDE5IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXN1bWVBbmltYXRpb25zKERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0
aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgY29udHJvbGxlci0+cmVzdW1lQW5pbWF0aW9ucygpOwog
fQogCit2b2lkIEludGVybmFsczo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlcyhEb2N1
bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAoreworICAgIGlmICghZG9j
dW1lbnQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIgPSBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKKyAgICBpZiAoIWNhY2hlZFJl
c291cmNlTG9hZGVyKQorICAgICAgICByZXR1cm47CisgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXIt
PmdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMoKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6
OmFsbG93Um91bmRpbmdIYWNrcygpIGNvbnN0CiB7CiAgICAgc2V0dGluZ3MoKS0+YWxsb3dSb3Vu
ZGluZ0hhY2tzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBkNTUxYzQ5M2Mx
ZWFmMWQ2NmM1MDY3NTkzNTU5NTVlNzY1N2RjZGQ3Li4xNTc2NjJjM2RlNmI0ZWQxNDRhMjk5OTgz
NjAzY2NlYjY0MDBhYmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTE4Myw2
ICsxODMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhEb2N1bWVudCos
IEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoRG9jdW1l
bnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKKyAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9j
dW1lbnRSZXNvdXJjZXMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CisKICAgICB2
b2lkIGFsbG93Um91bmRpbmdIYWNrcygpIGNvbnN0OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBmNjg1YTQwY2FjNDQ0MDYxYmQz
ZTIzZGExZjJkNDYwMGMyMjQzYTFlLi42MDFlOGE3NGY5ZjEwZDI0ZTQxOGYxMzgzMzg2ZTA1N2Y1
OGEwNGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xNTUsNiArMTU1
LDggQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoaW4g
RG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBy
ZXN1bWVBbmltYXRpb25zKGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlv
bik7CiAKKyAgICAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzKGluIERv
Y3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisKICAgICAgICAgdm9pZCBh
bGxvd1JvdW5kaW5nSGFja3MoKTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0JBVFRFUllfU1RBVFVT
KSAmJiBFTkFCTEVfQkFUVEVSWV9TVEFUVVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDMy
NjU3ODU5ZGE5MTk3Y2FmNmU1Y2Q4MjEzODI2ZDZhZmQ4ZjMzNTkuLjU4YTk1NjUwNGFmMThmMzk4
MjQwYTM0ZWE4OGUyODExNDg1MTRmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNzIs
MTIgKzcyLDEzIEBAIF9aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUds
b2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDCiBfWk43V2ViQ29yZTE3SW5zcGVj
dG9yQ291bnRlcnMxMmNvdW50ZXJWYWx1ZUVOUzBfMTFDb3VudGVyVHlwZUU7CiBfWk43V2ViQ29y
ZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNfOERvY3VtZW50RTsKIF9aTjdXZWJDb3Jl
MTlJbnNwZWN0b3JDb250cm9sbGVyMzlzZXRSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0c0Zyb21JbnRl
cm5hbHNFaWk7Ci1fWk43V2ViQ29yZTIxSW5zcGVjdG9yQ29uc29sZUFnZW50Mjhjb25zb2xlTWVz
c2FnZUFyZ3VtZW50Q291bnRzRXY7Ci1fWk43V2ViQ29yZTIyaW5zdHJ1bWVudGF0aW9uRm9yUGFn
ZUVQTlNfNFBhZ2VFOworX1pON1dlYkNvcmUyMENhY2hlZFJlc291cmNlTG9hZGVyMzFnYXJiYWdl
Q29sbGVjdERvY3VtZW50UmVzb3VyY2VzRXYKIF9aTjdXZWJDb3JlMjBOb2RlUmVuZGVyaW5nQ29u
dGV4dEMxRVBOU180Tm9kZUU7CiBfWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHREMUV2
OworX1pON1dlYkNvcmUyMUluc3BlY3RvckNvbnNvbGVBZ2VudDI4Y29uc29sZU1lc3NhZ2VBcmd1
bWVudENvdW50c0V2OwogX1pON1dlYkNvcmUyMWdldENhY2hlZERPTVN0cnVjdHVyZUVQTlNfMTdK
U0RPTUdsb2JhbE9iamVjdEVQS04zSlNDOUNsYXNzSW5mb0U7CiBfWk43V2ViQ29yZTIyZXh0ZXJu
YWxSZXByZXNlbnRhdGlvbkVQTlNfN0VsZW1lbnRFajsKK19aTjdXZWJDb3JlMjJpbnN0cnVtZW50
YXRpb25Gb3JQYWdlRVBOU180UGFnZUU7CiBfWk43V2ViQ29yZTIydXNlclByZWZlcnJlZExhbmd1
YWdlc0V2OwogX1pON1dlYkNvcmUyNENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjEwZmlyc3RDaGls
ZEV2OwogX1pON1dlYkNvcmUyNENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjExbmV4dFNpYmxpbmdF
djsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBmNzc1MDUyOWQ4NWY4NzllOTdiNjA0ZWQ4NTI1YTQ0NDljMjUxNDI5Li5lMzE4
MDhmYWU0YWE4MmZiYmJhYjNjNGQ1ZmJkODEzYTY1ODU1YzNlIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTItMDctMjYgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogUmVzb3VyY2UgYWdlbnQncyByZWZlcmVuY2UgdG8gY2Fj
aGVkIHJlc291cmNlcyBzaG91bGQgYmUgd2Vhay4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwg
RmVsZG1hbi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY2FjaGVk
LXJlc291cmNlLWRlc3Ryb3llZC1tb3ZlZC10by1zdG9yYWdlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jYWNoZWQtcmVzb3VyY2Ut
ZGVzdHJveWVkLW1vdmVkLXRvLXN0b3JhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jYWNoZWQtcmVzb3VyY2UtZGVzdHJveWVkLXRvby1iaWct
ZGlzY2FyZGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9jYWNoZWQtcmVzb3VyY2UtZGVzdHJveWVkLXRvby1iaWctZGlzY2FyZGVk
Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTA3LTI3ICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IGluamVjdCBpbmRleCBrZXlzIG9uIGN1cnNv
ci9vYmplY3RzdG9yZS9pbmRleCBnZXQgc3VjY2VzcyBoYW5kbGVycwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jYWNoZWQtcmVzb3VyY2UtZGVz
dHJveWVkLW1vdmVkLXRvLXN0b3JhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jYWNoZWQtcmVzb3VyY2UtZGVzdHJveWVkLW1vdmVkLXRv
LXN0b3JhZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczYjQxZWJiN2VhNGM4NjM3NWJkYTUz
NTE4Y2EzNjI0MjFiODBiYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2NhY2hlZC1yZXNvdXJjZS1kZXN0cm95ZWQtbW92ZWQtdG8t
c3RvcmFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDE2OiBEb25lMS4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyNjogRG9uZTIuCitUZXN0cyBj
b250ZW50IGlzIG1vdmVkIGZyb20gY2FjaGVkIHJlc291cmNlIHRvIHJlc291cmNlIGFnZW50J3Mg
ZGF0YSBzdG9yYWdlIHdoZW4gY2FjaGVkIHJlc291cmNlIGlzIGRlc3Ryb3llZC4KKworQnVnIDky
MTA4ICAKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
cmVzb3VyY2UucGhwP3R5cGU9aW1hZ2UmcmFuZG9tPTEmc2l6ZT00MDAKK3JlcXVlc3QudHlwZTog
aW1hZ2UKK3JlcXVlc3QuY29udGVudC5sZW5ndGggYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiA1
MzYKK1JlbGVhc2luZyBjYWNoZWQgcmVzb3VyY2UuCityZXF1ZXN0LmNvbnRlbnQubGVuZ3RoIGFm
dGVyIHJlcXVlc3RpbmcgY29udGVudDogNTM2CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY2FjaGVkLXJlc291cmNlLWRlc3Ryb3llZC1tb3Zl
ZC10by1zdG9yYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2NhY2hlZC1yZXNvdXJjZS1kZXN0cm95ZWQtbW92ZWQtdG8tc3RvcmFnZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI5ZTg4ZWNjMmQ2ZDUwNDNkNzU2YmUwMWE1OWU4YTZmYTQ1NjRiOGYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2NhY2hl
ZC1yZXNvdXJjZS1kZXN0cm95ZWQtbW92ZWQtdG8tc3RvcmFnZS5odG1sCkBAIC0wLDAgKzEsMTA5
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9uZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KK3ZhciBpbWFnZTsKK2Z1bmN0aW9uIGxvYWRGaXJzdEltYWdlKCkgeworICAgIGltYWdl
ID0gbmV3IEltYWdlKCk7CisgICAgaW1hZ2Uub25sb2FkID0gZmlyc3RJbWFnZUxvYWRlZDsKKyAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlKTsKKyAgICBpbWFnZS5zcmMgPSAicmVz
b3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnJhbmRvbT0xJnNpemU9NDAwIjsKK30KKwor
ZnVuY3Rpb24gZmlyc3RJbWFnZUxvYWRlZCgpCit7CisgICAgY29uc29sZS5sb2coIkRvbmUxLiIp
OworfQorCitmdW5jdGlvbiBsb2FkU2Vjb25kSW1hZ2UoKSB7CisgICAgaW1hZ2Uub25sb2FkID0g
c2Vjb25kSW1hZ2VMb2FkZWQ7CisgICAgaW1hZ2Uuc3JjID0gInJlc291cmNlcy9yZXNvdXJjZS5w
aHA/dHlwZT1pbWFnZSZyYW5kb209MSZzaXplPTIwMCI7Cit9CisKK2Z1bmN0aW9uIHNlY29uZElt
YWdlTG9hZGVkKCkKK3sKKyAgICBjb25zb2xlLmxvZygiRG9uZTIuIik7Cit9CisKK2Z1bmN0aW9u
IGZvcmNlQ2FjaGVkUmVzb3VyY2VMb2FkZXJHQygpIHsKKyAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgd2luZG93LmludGVybmFscy5nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3Vy
Y2VzKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIC8vIFNpbmNlIHRoaXMgdGVzdCBj
b3VsZCBiZSBydW4gdG9nZXRoZXIgd2l0aCBvdGhlciBpbnNwZWN0b3IgYmFja2VuZCBjYWNoZQor
ICAgIC8vIHRlc3RzLCB3ZSBuZWVkIHRvIHJlc2V0IHNpemUgbGltaXRzIHRvIGRlZmF1bHQgb25l
cy4KKyAgICBJbnNwZWN0b3JUZXN0LnJlc2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YShzdGVwMSk7
CisKKyAgICB2YXIgaW1hZ2VSZXF1ZXN0OworICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICB7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkQ29uc29sZVNuaWZmZXIoc3RlcDIpOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkRmlyc3RJbWFnZSgpIik7CisgICAgfQor
CisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgaW1hZ2VSZXF1ZXN0ID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZXF1ZXN0cy5sZW5ndGggLSAxXTsKKyAgICAgICAgaW1hZ2VSZXF1ZXN0LnJlcXVlc3RD
b250ZW50KHN0ZXAzKTsKKyAgICB9CisKKyAgICB2YXIgb3JpZ2luYWxDb250ZW50TGVuZ3RoOwor
ICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KGltYWdlUmVxdWVzdC51cmwpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
cmVxdWVzdC50eXBlOiAiICsgaW1hZ2VSZXF1ZXN0LnR5cGUpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgicmVxdWVzdC5jb250ZW50Lmxlbmd0aCBhZnRlciByZXF1ZXN0aW5nIGNv
bnRlbnQ6ICIgKyBpbWFnZVJlcXVlc3QuY29udGVudC5sZW5ndGgpOworICAgICAgICBvcmlnaW5h
bENvbnRlbnRMZW5ndGggPSBpbWFnZVJlcXVlc3QuY29udGVudC5sZW5ndGg7CisgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShpbWFnZVJlcXVlc3QuY29udGVudC5sZW5ndGggPiAwLCAi
Tm8gY29udGVudCBiZWZvcmUgZGVzdHJveWluZyBDYWNoZWRSZXNvdXJjZS4iKTsKKworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUmVsZWFzaW5nIGNhY2hlZCByZXNvdXJjZS4iKTsK
KyAgICAgICAgLy8gTG9hZGluZyBhbm90aGVyIGltYWdlIHRvIHRoZSBzYW1lIGltYWdlIGVsZW1l
bnQgc28gdGhhdCB0aGUgb3JpZ2luYWwgaW1hZ2UgY2FjaGVkIHJlc291cmNlIGlzIHJlbGVhc2Vk
LgorICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZENvbnNvbGVTbmlmZmVyKHN0ZXA0KTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZFNlY29uZEltYWdlKCkiKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNChtc2cpCisgICAgeworICAgICAgICAvLyBEaXNhYmxl
LWVuYWJsZSBjYWNoZSB0byBmb3JjZSBNZW1vcnlDYWNoZTo6ZXZpY3RSZXNvdXJjZXMoKS4KKyAg
ICAgICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQodHJ1ZSwgc3RlcDUpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIHN0ZXA1KG1zZykKKyAgICB7CisgICAgICAgIE5ldHdvcmtBZ2VudC5z
ZXRDYWNoZURpc2FibGVkKGZhbHNlLCBzdGVwNik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3Rl
cDYoKQorICAgIHsKKyAgICAgICAgLy8gRm9yY2UgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgZ2FyYmFn
ZSBjb2xsZWN0b3IgcnVuLgorICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJm
b3JjZUNhY2hlZFJlc291cmNlTG9hZGVyR0MoKSIpOworCisgICAgICAgIC8vIFJlLXJlcXVlc3Qg
Y29udGVudCBub3cgdGhhdCBDYWNoZWRSZXNvdXJjZSBzaG91bGQgaGF2ZSBiZWVuIGRlc3Ryb3ll
ZC4KKyAgICAgICAgZGVsZXRlIGltYWdlUmVxdWVzdC5fY29udGVudDsKKyAgICAgICAgaW1hZ2VS
ZXF1ZXN0LnJlcXVlc3RDb250ZW50KHN0ZXA3KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVw
NygpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVxdWVzdC5jb250
ZW50Lmxlbmd0aCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIgKyBpbWFnZVJlcXVlc3QuY29u
dGVudC5sZW5ndGgpOworICAgICAgICBvcmlnaW5hbENvbnRlbnRMZW5ndGggPSBpbWFnZVJlcXVl
c3QuY29udGVudC5sZW5ndGg7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShpbWFn
ZVJlcXVlc3QuY29udGVudC5sZW5ndGggPT09IG9yaWdpbmFsQ29udGVudExlbmd0aCwgIkNvbnRl
bnQgY2hhbmdlZCBhZnRlciBjYWNoZWQgcmVzb3VyY2Ugd2FzIGRlc3Ryb3llZCIpOworICAgICAg
ICBJbnNwZWN0b3JUZXN0LnJlc2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YShzdGVwOCk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gc3RlcDgoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5j
b21wbGV0ZVRlc3QoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKzxwPlRlc3RzIGNvbnRlbnQgaXMgbW92ZWQgZnJvbSBjYWNoZWQgcmVz
b3VyY2UgdG8gcmVzb3VyY2UgYWdlbnQncyBkYXRhIHN0b3JhZ2Ugd2hlbiBjYWNoZWQgcmVzb3Vy
Y2UgaXMgZGVzdHJveWVkLjwvcD4KKzxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MjEwOCI+QnVnIDkyMTA4PC9hPgorPC9ib2R5PgorPC9odG1sPgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2NhY2hl
ZC1yZXNvdXJjZS1kZXN0cm95ZWQtdG9vLWJpZy1kaXNjYXJkZWQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jYWNoZWQtcmVzb3VyY2UtZGVz
dHJveWVkLXRvby1iaWctZGlzY2FyZGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTQyNzQ1
NmYzYTk5NmMzYjViOTIxZWY0M2UyMTg0ZDhiMjJiMzViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jYWNoZWQtcmVzb3VyY2UtZGVz
dHJveWVkLXRvby1iaWctZGlzY2FyZGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMjM6IERvbmUxLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDMz
OiBEb25lMi4KK1Rlc3RzIGNhY2hlZCByZXNvdXJjZSBjb250ZW50IGlzIGRpc2NhcmRlZCB3aGVu
IGNhY2hlZCByZXNvdXJjZSBpcyBkZXN0cm95ZWQgaWYgY29udGVudCBzaXplIGlzIHRvbyBiaWcg
Zm9yIHRoZSByZXNvdXJjZSBhZ2VudCdzIGRhdGEgc3RvcmFnZS4KKworQnVnIDkyMTA4ICAKK2h0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2Uu
cGhwP3R5cGU9aW1hZ2UmcmFuZG9tPTEmc2l6ZT00MDAKK3JlcXVlc3QudHlwZTogaW1hZ2UKK3Jl
cXVlc3QuY29udGVudC5sZW5ndGggYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiA1MzYKK1JlbGVh
c2luZyBjYWNoZWQgcmVzb3VyY2UuCityZXF1ZXN0LmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBj
b250ZW50OiBudWxsCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvY2FjaGVkLXJlc291cmNlLWRlc3Ryb3llZC10b28tYmlnLWRpc2NhcmRlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jYWNoZWQtcmVz
b3VyY2UtZGVzdHJveWVkLXRvby1iaWctZGlzY2FyZGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRjMTUw
ZjYwNTA4YWM1MDM3NTZkZjU5Y2JlNWNiMTAzMWJmN2I5MQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY2FjaGVkLXJlc291cmNlLWRl
c3Ryb3llZC10b28tYmlnLWRpc2NhcmRlZC5odG1sCkBAIC0wLDAgKzEsMTA2IEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9uZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3ZhciBp
bWFnZTsKK2Z1bmN0aW9uIGxvYWRGaXJzdEltYWdlKCkgeworICAgIGlmICghd2luZG93LmludGVy
bmFscykgeworICAgICAgICBjb25zb2xlLmxvZygiVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIGFz
IHdpbmRvdy5pbnRlcm5hbHMgaXMgbm90IGF2YWlsYWJsZS4iKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAvLyBNYWtlIHN1cmUgdGhlcmUgaXMgbm8gZW5vdWdoIHNwYWNlIHRvIHNhdmUg
Y29udGVudCBpbiByZXNvdXJjZSBhZ2VudCdzIHN0b3JhZ2UuCisgICAgaW50ZXJuYWxzLnNldHRp
bmdzLnNldEluc3BlY3RvclJlc291cmNlc0RhdGFTaXplTGltaXRzKDEwMCwgMTAwKTsKKworICAg
IGltYWdlID0gbmV3IEltYWdlKCk7CisgICAgaW1hZ2Uub25sb2FkID0gZmlyc3RJbWFnZUxvYWRl
ZDsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlKTsKKyAgICBpbWFnZS5zcmMg
PSAicmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWltYWdlJnJhbmRvbT0xJnNpemU9NDAwIjsK
K30KKworZnVuY3Rpb24gZmlyc3RJbWFnZUxvYWRlZCgpCit7CisgICAgY29uc29sZS5sb2coIkRv
bmUxLiIpOworfQorCitmdW5jdGlvbiBsb2FkU2Vjb25kSW1hZ2UoKSB7CisgICAgaW1hZ2Uub25s
b2FkID0gc2Vjb25kSW1hZ2VMb2FkZWQ7CisgICAgaW1hZ2Uuc3JjID0gInJlc291cmNlcy9yZXNv
dXJjZS5waHA/dHlwZT1pbWFnZSZyYW5kb209MSZzaXplPTIwMCI7Cit9CisKK2Z1bmN0aW9uIHNl
Y29uZEltYWdlTG9hZGVkKCkKK3sKKyAgICBjb25zb2xlLmxvZygiRG9uZTIuIik7Cit9CisKK2Z1
bmN0aW9uIGZvcmNlQ2FjaGVkUmVzb3VyY2VMb2FkZXJHQygpIHsKKyAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgd2luZG93LmludGVybmFscy5nYXJiYWdlQ29sbGVjdERvY3VtZW50
UmVzb3VyY2VzKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBpbWFnZVJlcXVl
c3Q7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRDb25zb2xlU25pZmZlcihzdGVwMik7CisgICAgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZEZpcnN0SW1hZ2UoKSIpOworCisgICAgZnVu
Y3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgaW1hZ2VSZXF1ZXN0ID0gV2ViSW5zcGVjdG9y
LnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1
ZXN0cy5sZW5ndGggLSAxXTsKKyAgICAgICAgaW1hZ2VSZXF1ZXN0LnJlcXVlc3RDb250ZW50KHN0
ZXAzKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgeworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdChpbWFnZVJlcXVlc3QudXJsKTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoInJlcXVlc3QudHlwZTogIiArIGltYWdlUmVxdWVzdC50eXBlKTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlcXVlc3QuY29udGVudC5sZW5ndGggYWZ0
ZXIgcmVxdWVzdGluZyBjb250ZW50OiAiICsgaW1hZ2VSZXF1ZXN0LmNvbnRlbnQubGVuZ3RoKTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKGltYWdlUmVxdWVzdC5jb250ZW50Lmxl
bmd0aCA+IDAsICJObyBjb250ZW50IGJlZm9yZSBkZXN0cm95aW5nIENhY2hlZFJlc291cmNlLiIp
OworCisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJSZWxlYXNpbmcgY2FjaGVkIHJl
c291cmNlLiIpOworICAgICAgICAvLyBMb2FkaW5nIGFub3RoZXIgaW1hZ2UgdG8gdGhlIHNhbWUg
aW1hZ2UgZWxlbWVudCBzbyB0aGF0IHRoZSBvcmlnaW5hbCBpbWFnZSBjYWNoZWQgcmVzb3VyY2Ug
aXMgcmVsZWFzZWQuCisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkQ29uc29sZVNuaWZmZXIoc3Rl
cDQpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkU2Vjb25kSW1h
Z2UoKSIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA0KG1zZykKKyAgICB7CisgICAgICAg
IC8vIERpc2FibGUtZW5hYmxlIGNhY2hlIHRvIGZvcmNlIE1lbW9yeUNhY2hlOjpldmljdFJlc291
cmNlcygpLgorICAgICAgICBOZXR3b3JrQWdlbnQuc2V0Q2FjaGVEaXNhYmxlZCh0cnVlLCBzdGVw
NSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDUobXNnKQorICAgIHsKKyAgICAgICAgTmV0
d29ya0FnZW50LnNldENhY2hlRGlzYWJsZWQoZmFsc2UsIHN0ZXA2KTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBzdGVwNigpCisgICAgeworICAgICAgICAvLyBGb3JjZSBDYWNoZWRSZXNvdXJjZUxv
YWRlciBnYXJiYWdlIGNvbGxlY3RvciBydW4uCisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVh
dGVJblBhZ2UoImZvcmNlQ2FjaGVkUmVzb3VyY2VMb2FkZXJHQygpIik7CisKKyAgICAgICAgLy8g
UmUtcmVxdWVzdCBjb250ZW50IG5vdyB0aGF0IENhY2hlZFJlc291cmNlIHNob3VsZCBoYXZlIGJl
ZW4gZGVzdHJveWVkLgorICAgICAgICBkZWxldGUgaW1hZ2VSZXF1ZXN0Ll9jb250ZW50OworICAg
ICAgICBpbWFnZVJlcXVlc3QucmVxdWVzdENvbnRlbnQoc3RlcDcpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0ZXA3KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJy
ZXF1ZXN0LmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiAiICsgaW1hZ2VSZXF1ZXN0
LmNvbnRlbnQpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRydWUoIWltYWdlUmVxdWVz
dC5jb250ZW50LCAiQ29udGVudCBhdmFpbGFibGUgYWZ0ZXIgQ2FjaGVkUmVzb3VyY2Ugd2FzIGRl
c3Ryb3llZC4iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5yZXNldEluc3BlY3RvclJlc291cmNl
c0RhdGEoc3RlcDgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA4KCkKKyAgICB7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0cyBjYWNoZWQgcmVzb3Vy
Y2UgY29udGVudCBpcyBkaXNjYXJkZWQgd2hlbiBjYWNoZWQgcmVzb3VyY2UgaXMgZGVzdHJveWVk
IGlmIGNvbnRlbnQgc2l6ZSBpcyB0b28gYmlnIGZvciB0aGUgcmVzb3VyY2UgYWdlbnQncyBkYXRh
IHN0b3JhZ2UuPC9wPgorPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkyMTA4Ij5CdWcgOTIxMDg8L2E+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdp
dCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmYzIxMzllYmI2YTk2ZDJiODUxY2ZmMWM4
NmIyOWE3YzFhNWM5ODEwLi4wN2JhMzRhNDQ5NTVlM2QyMGJiOWZjZTNlM2ZlMGZiOWI2ZTkwNWRm
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTItMDctMjcgIHZzZXZpa0BjaHJvbWl1bS5vcmcgIDx2c2V2aWtAY2hyb21pdW0ub3JnQDI2
OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBSZXNvdXJjZSBhZ2VudCdzIHJlZmVyZW5jZSB0byBjYWNoZWQgcmVzb3VyY2VzIHNob3Vs
ZCBiZSB3ZWFrLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTIxMDgKKworICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgorCisgICAgICAg
ICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMi0wNy0yNiAgRGFuIEJl
cm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFdoZW4gU2FmYXJpIDYgaXMgbGF1
bmNoZWQgdmlhIHRoZSBXZWJLaXQgWGNvZGUgd29ya3NwYWNlLCBpdCBkb2VzIG5vdCBsaW5rIGFn
YWluc3QgdGhlIGJ1aWx0IGZyYW1ld29ya3MK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155178</attachid>
            <date>2012-07-29 13:02:36 -0700</date>
            <delta_ts>2012-07-30 04:21:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92108-20120730000221.patch</filename>
            <type>text/plain</type>
            <size>46299</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDlhOGRjZmU2MDA1ZDk0
YTczNTJmMGZjYTUyZjkzNzRjOTA1Y2E5MC4uOTJjYmJlZDNkZDkwM2NjMzkxNTAwMzlmMTFiMTU0
ZTJjMTNiYjIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEyLTA3LTI5ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJlc291cmNlIGFnZW50J3MgcmVmZXJlbmNlIHRvIGNhY2hlZCByZXNvdXJjZXMgc2hvdWxk
IGJlIHdlYWsuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MjEwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5ldHdvcmtSZXNvdXJjZXNEYXRhIG5vdyBzdG9yZXMgYSByYXcgcG9pbnRlciB0byBDYWNoZWRS
ZXNvdXJjZS4KKyAgICAgICAgQ2FjaGVkUmVzb3VyY2Ugbm93IG5vdGlmaWVzIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbiB0aGF0IGl0IHdpbGwgYmUgZGVzdHJveWVkLgorICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24gc3RvcmVzIGEgc2V0IG9mIEluc3RydW1lbnRpbmdBZ2VudHMgYW5k
IGJyb2FkY2FzdHMgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZSBldmVudCB0byBhbGwgYXZhaWxh
YmxlIHJlc291cmNlQWdlbnRzLgorICAgICAgICBEZXN0cm95ZWQgcmVzb3VyY2VzIGNvbnRlbnQg
aXMgc2F2ZWQgdG8gTmV0d29ya1Jlc291cmNlc0RhdGEuCisgICAgICAgIENoYW5nZWQgY29udGVu
dCBzaXplIHZhcmlhYmxlcyB0eXBlIGluIE5ldHdvcmtSZXNvdXJjZXNEYXRhIGZyb20gaW50IHRv
IHNpemVfdC4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9j
YWNoZWQtcmVzb3VyY2UtZGVzdHJveWVkLW1vdmVkLXRvLXN0b3JhZ2UuaHRtbAorICAgICAgICAg
ICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jYWNoZWQtcmVzb3VyY2UtZGVzdHJv
eWVkLXRvby1iaWctZGlzY2FyZGVkLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1bnJlZ2lzdGVySW5zdHJ1
bWVudGluZ0FnZW50cyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oOgorICAgICAgICAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50Ojp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Z2V0UmVzcG9uc2VCb2R5KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOgorICAgICAgICAo
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpzZXRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZURlY29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnJlbW92ZUNhY2hlZFJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OnNldFJlc291cmNlc0RhdGFTaXplTGltaXRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjplbnN1cmVGcmVlU3BhY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAoUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmJhc2U2NEVuY29kZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
Y2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAoTmV0d29ya1Jlc291cmNlc0RhdGEpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZTo6fkNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlOjpyZW1vdmVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OmRlbGV0ZUlmUG9zc2libGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyRmlyZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmdhcmJhZ2VDb2xsZWN0RG9j
dW1lbnRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6
OmNsZWFyUHJlbG9hZHMpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
ZXZpY3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpn
YXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgIChJbnRlcm5hbHMpOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMi0wNy0yNyAgRGFuYSBKYW5zZW5zICA8
ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIERvbid0IGFkZCBhIEhV
RCBsYXllciB3aGVuIHRoZXJlIGlzIG5vIHJvb3RMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDU2OWRkNzVk
YmNhMTU4ZjE3NzFkZmFkMDA4YTViZmE1OGI5ODdlMTUuLjAzYTA2MThjYmE4MzcxMTQyMTU4MmNl
OTllZWE4MGZkZGRhNTRjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNy0y
OSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBSZXNvdXJjZSBhZ2VudCdzIHJlZmVyZW5jZSB0byBjYWNoZWQgcmVzb3VyY2Vz
IHNob3VsZCBiZSB3ZWFrLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTIxMDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHdpbi9XZWJLaXQyLmRlZjoKKyAgICAgICAgKiB3aW4vV2ViS2l0MkNGTGl0ZS5k
ZWY6CisKIDIwMTItMDctMjYgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCBRdCBidWlsZGZpeCBhZnRlciByMTIzNzg2LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgppbmRleCAxNjU4YTQzMmUxZDljMjIwMGIzODhiN2EyMjA3YmM2NzE4ZWI4ZDFlLi5hYzIy
MDYyMjhhMTA3MDcxNjdkYzZjYTMxYjU2YmE4NjMwYjliMjJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgpAQCAtNTE4LDYgKzUxOCw3IEBAIF9fWk43V2ViQ29yZTE5VGV4dFJlc291cmNlRGVjb2RlcjVm
bHVzaEV2CiBfX1pON1dlYkNvcmUxOVRleHRSZXNvdXJjZURlY29kZXI2ZGVjb2RlRVBLY20KIF9f
Wk43V2ViQ29yZTE5VGV4dFJlc291cmNlRGVjb2RlckMxRVJLTjNXVEY2U3RyaW5nRVJLTlNfMTJU
ZXh0RW5jb2RpbmdFYgogX19aTjdXZWJDb3JlMTlUZXh0UmVzb3VyY2VEZWNvZGVyRDFFdgorX19a
TjdXZWJDb3JlMjBDYWNoZWRSZXNvdXJjZUxvYWRlcjMxZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJl
c291cmNlc0V2CiBfX1pON1dlYkNvcmUyMERpY3RhdGlvbkFsdGVybmF0aXZlQzFFamp5CiBfX1pO
N1dlYkNvcmUyMERpY3RhdGlvbkFsdGVybmF0aXZlQzFFdgogX19aTjdXZWJDb3JlMjBEaXNwbGF5
U2xlZXBEaXNhYmxlckMxRVBLYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGMzZjlmMDhiMzM5ZGJhYzFiNjcyMDkwNzk0YTc1NDli
MDAzODI4OGMuLmFiNmUzNzdjMTVjYWY4NTA0MWE4MGQ1ZTM0NTA2MzY3MDNmMDVjNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAg
LTE2NSw2ICsxNjUsOCBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVy
KFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogI2lmIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKQogICAgIHJ1bnRpbWVBZ2VudC0+c2V0U2NyaXB0RGVidWdTZXJ2ZXIo
Jm1fZGVidWdnZXJBZ2VudC0+c2NyaXB0RGVidWdTZXJ2ZXIoKSk7CiAjZW5kaWYKKworICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKG1faW5z
dHJ1bWVudGluZ0FnZW50cy5nZXQoKSk7CiB9CiAKIEluc3BlY3RvckNvbnRyb2xsZXI6On5JbnNw
ZWN0b3JDb250cm9sbGVyKCkKQEAgLTE4Myw2ICsxODUsNyBAQCBQYXNzT3duUHRyPEluc3BlY3Rv
ckNvbnRyb2xsZXI+IEluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZShQYWdlKiBwYWdlLCBJbnNw
ZWN0bwogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCkK
IHsKICAgICBkaXNjb25uZWN0RnJvbnRlbmQoKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnVucmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKG1faW5zdHJ1bWVudGluZ0FnZW50cy5n
ZXQoKSk7CiAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmRpc2Nvbm5lY3QoKTsKICAgICBt
X2luc3BlY3RvckNsaWVudC0+aW5zcGVjdG9yRGVzdHJveWVkKCk7CiAgICAgbV9pbnNwZWN0b3JD
bGllbnQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBkZmFhMGE0YzRkNTJiMDZhMmYxNDVmYjI3Yjc5NzM2
N2FlMjllZDJkLi4wYmMxNmY0OTQwNzEzZTcxY2Y4ZTg4MzFlM2QwMmQxM2JmNWI1Yzc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcApAQCAtODAsNiArODAsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNldFRp
bWVyRXZlbnROYW1lID0gInNldFRpbWVyIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBjbGVh
clRpbWVyRXZlbnROYW1lID0gImNsZWFyVGltZXIiOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0
IHRpbWVyRmlyZWRFdmVudE5hbWUgPSAidGltZXJGaXJlZCI7CiAKK25hbWVzcGFjZSB7CitzdGF0
aWMgSGFzaFNldDxJbnN0cnVtZW50aW5nQWdlbnRzKj4qIGluc3RydW1lbnRpbmdBZ2VudHNTZXQg
PSAwOworfQorCiBpbnQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzX2Zyb250ZW5kQ291bnRl
ciA9IDA7CiAKIHN0YXRpYyBib29sIGV2ZW50SGFzTGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9y
PEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycykKQEAgLTg0NCw2ICs4NDgsMTggQEAgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmxvYWRlckRldGFjaGVkRnJvbUZyYW1lSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKgogICAgICAgICBpbnNwZWN0b3JQYWdlQWdlbnQtPmxvYWRlckRldGFjaGVk
RnJvbUZyYW1lKGxvYWRlcik7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsRGVzdHJveUNhY2hlZFJlc291cmNlSW1wbChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3Vy
Y2UpCit7CisgICAgaWYgKCFpbnN0cnVtZW50aW5nQWdlbnRzU2V0KQorICAgICAgICByZXR1cm47
CisgICAgSGFzaFNldDxJbnN0cnVtZW50aW5nQWdlbnRzKj46Oml0ZXJhdG9yIGVuZCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHNTZXQtPmVuZCgpOworICAgIGZvciAoSGFzaFNldDxJbnN0cnVtZW50aW5n
QWdlbnRzKj46Oml0ZXJhdG9yIGl0ID0gaW5zdHJ1bWVudGluZ0FnZW50c1NldC0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMgPSAqaXQ7CisgICAgICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiBp
bnNwZWN0b3JSZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVz
b3VyY2VBZ2VudCgpKQorICAgICAgICAgICAgaW5zcGVjdG9yUmVzb3VyY2VBZ2VudC0+d2lsbERl
c3Ryb3lDYWNoZWRSZXNvdXJjZShjYWNoZWRSZXNvdXJjZSk7CisgICAgfQorfQorCiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsV3Jp
dGVIVE1MSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNp
Z25lZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgc3RhcnRMaW5lLCBGcmFtZSogZnJhbWUpCiB7
CiAgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7CkBAIC0xMTQxLDYgKzExNTcsMjIgQEAgV1RG
OjpUaHJlYWRTcGVjaWZpYzxJbnNwZWN0b3JUaW1lbGluZUFnZW50Kj4mIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6dGhyZWFkU3AKICAgICByZXR1cm4gKmluc3RhbmNlOwogfQogCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCit7CisgICAgaWYgKCFpbnN0cnVt
ZW50aW5nQWdlbnRzU2V0KQorICAgICAgICBpbnN0cnVtZW50aW5nQWdlbnRzU2V0ID0gbmV3IEhh
c2hTZXQ8SW5zdHJ1bWVudGluZ0FnZW50cyo+KCk7CisgICAgaW5zdHJ1bWVudGluZ0FnZW50c1Nl
dC0+YWRkKGluc3RydW1lbnRpbmdBZ2VudHMpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6dW5yZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3sKKyAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHNT
ZXQpCisgICAgICAgIHJldHVybjsKKyAgICBpbnN0cnVtZW50aW5nQWdlbnRzU2V0LT5yZW1vdmUo
aW5zdHJ1bWVudGluZ0FnZW50cyk7CisgICAgaWYgKCFpbnN0cnVtZW50aW5nQWdlbnRzU2V0LT5z
aXplKCkpCisgICAgICAgIGRlbGV0ZSBpbnN0cnVtZW50aW5nQWdlbnRzU2V0OworfQorCiBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJldHJpZXZlVGlt
ZWxpbmVBZ2VudChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkK
IHsKICAgICBpZiAoIWNvb2tpZS5maXJzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCAzMjg3ZjcxY2FhZmFiZTMwNDQ4
ZDFlOWE2YTk5OGI4ZTcwMjk1ZjJhLi42MTQ3Zjc3ZGVmODMyNDc0NmI5YjZhN2E5ZDQxYjY5YTNl
YTEzMzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oCkBAIC0xODcsNiArMTg3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2
b2lkIGZyYW1lRGV0YWNoZWRGcm9tUGFyZW50KEZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgZGlk
Q29tbWl0TG9hZChGcmFtZSosIERvY3VtZW50TG9hZGVyKik7CiAgICAgc3RhdGljIHZvaWQgbG9h
ZGVyRGV0YWNoZWRGcm9tRnJhbWUoRnJhbWUqLCBEb2N1bWVudExvYWRlciopOworICAgIHN0YXRp
YyB2b2lkIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKIAogICAg
IHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFdyaXRlSFRNTChEb2N1
bWVudCosIHVuc2lnbmVkIGludCBsZW5ndGgsIHVuc2lnbmVkIGludCBzdGFydExpbmUpOwogICAg
IHN0YXRpYyB2b2lkIGRpZFdyaXRlSFRNTChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUmLCB1bnNpZ25lZCBpbnQgZW5kTGluZSk7CkBAIC0yNjMsNiArMjY0LDkgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBHZW9sb2NhdGlvblBvc2l0aW9uKiBvdmVycmlkZUdlb2xvY2F0aW9uUG9z
aXRpb24oUGFnZSosIEdlb2xvY2F0aW9uUG9zaXRpb24qKTsKICNlbmRpZgogCisgICAgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHMqKTsK
KyAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50
aW5nQWdlbnRzKik7CisKIHByaXZhdGU6CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBzdGF0
aWMgV1RGOjpUaHJlYWRTcGVjaWZpYzxJbnNwZWN0b3JUaW1lbGluZUFnZW50Kj4mIHRocmVhZFNw
ZWNpZmljVGltZWxpbmVBZ2VudEZvck9ycGhhbkV2ZW50cygpOwpAQCAtMzU5LDYgKzM2Myw3IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZnJhbWVEZXRhY2hlZEZyb21QYXJlbnRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBGcmFtZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZENvbW1pdExv
YWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBQYWdlKiwgRG9jdW1lbnRMb2FkZXIqKTsKICAg
ICBzdGF0aWMgdm9pZCBsb2FkZXJEZXRhY2hlZEZyb21GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIERvY3VtZW50TG9hZGVyKik7CisgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNo
ZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3VyY2UqKTsKIAogICAgIHN0YXRpYyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgd2lsbFdyaXRlSFRNTEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyosIHVuc2lnbmVkIGludCBsZW5ndGgsIHVuc2lnbmVkIGludCBzdGFydExpbmUsIEZyYW1lKik7
CiAgICAgc3RhdGljIHZvaWQgZGlkV3JpdGVIVE1MSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUmLCB1bnNpZ25lZCBpbnQgZW5kTGluZSk7CkBAIC0xMjAwLDYgKzEyMDUs
MTQgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2FkZXJEZXRhY2hl
ZEZyb21GcmFtZShGcmFtZSogZnJhbWUsIERvY3UKICNlbmRpZgogfQogCitpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAg
RkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CisgICAgd2lsbERlc3Ryb3lDYWNo
ZWRSZXNvdXJjZUltcGwoY2FjaGVkUmVzb3VyY2UpOworI2VuZGlmCit9CisKIGlubGluZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
V3JpdGVIVE1MKERvY3VtZW50KiBkb2N1bWVudCwgdW5zaWduZWQgaW50IGxlbmd0aCwgdW5zaWdu
ZWQgaW50IHN0YXJ0TGluZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDg3
NzZiYjg1NTE0YWQ2NzE3Y2M1MDI0ZjUwYzZlMmU1YzI4ZTNhOGYuLjY1MTQ4YjIyMWM1YTMxYzgw
ZDM5YWM0ZDc0NjQ2NGY1ZjA1NjM0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgY2hhcgogCiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgTmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJj
ZXNEYXRhLT5kYXRhKHJlcXVlc3RJZCk7Ci0gICAgICAgIGlmIChtX3Jlc291cmNlc0RhdGEtPnJl
c291cmNlVHlwZShyZXF1ZXN0SWQpID09IEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJj
ZSB8fCAocmVzb3VyY2VEYXRhICYmIGlzRXJyb3JTdGF0dXNDb2RlKHJlc291cmNlRGF0YS0+aHR0
cFN0YXR1c0NvZGUoKSkgJiYgKHJlc291cmNlRGF0YS0+Y2FjaGVkUmVzb3VyY2UoKSkpKQorICAg
ICAgICBpZiAobV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZVR5cGUocmVxdWVzdElkKSA9PSBJbnNw
ZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgfHwgKHJlc291cmNlRGF0YSAmJiBpc0Vycm9y
U3RhdHVzQ29kZShyZXNvdXJjZURhdGEtPmh0dHBTdGF0dXNDb2RlKCkpICYmIHJlc291cmNlRGF0
YS0+Y2FjaGVkUmVzb3VyY2UoKSkpCiAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPm1heWJl
QWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgZGF0YSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCkBA
IC0zNjQsNiArMzY0LDIxIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFhI
UlN5bmNocm9ub3VzbHkoKQogICAgIG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHkgPSBmYWxzZTsK
IH0KIAordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsRGVzdHJveUNhY2hlZFJlc291
cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKK3sKKyAgICBWZWN0b3I8U3RyaW5n
PiByZXF1ZXN0SWRzID0gbV9yZXNvdXJjZXNEYXRhLT5yZW1vdmVDYWNoZWRSZXNvdXJjZShjYWNo
ZWRSZXNvdXJjZSk7CisgICAgaWYgKCFyZXF1ZXN0SWRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgU3RyaW5nIGNvbnRlbnQ7CisgICAgYm9vbCBiYXNlNjRFbmNvZGVkOworICAgIGlm
ICghSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoY2FjaGVkUmVzb3Vy
Y2UsICZjb250ZW50LCAmYmFzZTY0RW5jb2RlZCkpCisgICAgICAgIHJldHVybjsKKyAgICBWZWN0
b3I8U3RyaW5nPjo6aXRlcmF0b3IgZW5kID0gcmVxdWVzdElkcy5lbmQoKTsKKyAgICBmb3IgKFZl
Y3RvcjxTdHJpbmc+OjppdGVyYXRvciBpdCA9IHJlcXVlc3RJZHMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQorICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlQ29udGVudCgqaXQs
IGNvbnRlbnQsIGJhc2U2NEVuY29kZWQpOworfQorCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmFwcGx5VXNlckFnZW50T3ZlcnJpZGUoU3RyaW5nKiB1c2VyQWdlbnQpCiB7CiAgICAgU3Ry
aW5nIHVzZXJBZ2VudE92ZXJyaWRlID0gbV9zdGF0ZS0+Z2V0U3RyaW5nKFJlc291cmNlQWdlbnRT
dGF0ZTo6dXNlckFnZW50T3ZlcnJpZGUpOwpAQCAtNTI5LDcgKzU0NCw3IEBAIHZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6Z2V0UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyCiAgICAgfQogCiAgICAgaWYgKHJlc291cmNlRGF0YS0+aGFzQ29udGVudCgp
KSB7Ci0gICAgICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7CisgICAgICAgICpiYXNlNjRFbmNv
ZGVkID0gcmVzb3VyY2VEYXRhLT5iYXNlNjRFbmNvZGVkKCk7CiAgICAgICAgICpjb250ZW50ID0g
cmVzb3VyY2VEYXRhLT5jb250ZW50KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCA1
NGNmNDhlMWZmYjVlYmQ1ZTM3YWQ4N2I1OGIyMGU0ZWM1YzZhY2QyLi44ZGFiMjUzMDhiMmU2YzU1
OWFhNjQ4ZTQzNTg3NWJiNzNjNjNjMzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAgLTEwMyw2ICsxMDMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkaWRSZWNlaXZlWEhSUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KTsKICAgICB2b2lkIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseSgpOwogICAgIHZvaWQgZGlkTG9h
ZFhIUlN5bmNocm9ub3VzbHkoKTsKKyAgICB2b2lkIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2UqKTsKIAogICAgIHZvaWQgYXBwbHlVc2VyQWdlbnRPdmVycmlkZShTdHJp
bmcqIHVzZXJBZ2VudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDYxOWExOWFhNmRmMzdiOTMzNjllZGE5Mjg1ODU3YWQ2
NThiMTA3YmMuLjllZjc1ZmIxNGRhNGQyYmIyMWQ4MWZhNGU3NjkxYTYwYzk5N2Q2NTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApA
QCAtMzgsMTAgKzM4LDEwIEBACiAKIG5hbWVzcGFjZSB7CiAvLyAxMDBNQgotc3RhdGljIGludCBt
YXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUgPSAxMDAgKiAxMDAwICogMTAwMDsKK3N0YXRpYyBz
aXplX3QgbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplID0gMTAwICogMTAwMCAqIDEwMDA7CiAK
IC8vIDEwTUIKLXN0YXRpYyBpbnQgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUgPSAx
MCAqIDEwMDAgKiAxMDAwOworc3RhdGljIHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250
ZW50U2l6ZSA9IDEwICogMTAwMCAqIDEwMDA7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTUxLDE2ICs1MSwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZyYgbG9hZGVySWQpCiAgICAgOiBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCiAgICAg
LCBtX2xvYWRlcklkKGxvYWRlcklkKQorICAgICwgbV9iYXNlNjRFbmNvZGVkKGZhbHNlKQogICAg
ICwgbV9pc0NvbnRlbnRQdXJnZWQoZmFsc2UpCiAgICAgLCBtX3R5cGUoSW5zcGVjdG9yUGFnZUFn
ZW50OjpPdGhlclJlc291cmNlKQorICAgICwgbV9jYWNoZWRSZXNvdXJjZSgwKQogewogfQogCi12
b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnNldENvbnRlbnQoY29uc3Qg
U3RyaW5nJiBjb250ZW50KQordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpzZXRDb250ZW50KGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkKQog
ewogICAgIEFTU0VSVCghaGFzRGF0YSgpKTsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAg
ICAgbV9jb250ZW50ID0gY29udGVudDsKKyAgICBtX2Jhc2U2NEVuY29kZWQgPSBiYXNlNjRFbmNv
ZGVkOwogfQogCiB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpy
ZW1vdmVDb250ZW50KCkKQEAgLTg2LDEyICs4OSwxMiBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpwdXJnZUNvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVD
b250ZW50KCk7CiB9CiAKLWludCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpk
YXRhTGVuZ3RoKCkgY29uc3QKK3NpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9k
YXRhQnVmZmVyLT5zaXplKCkgOiAwOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgp
Cit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250
ZW50KCkpOwogICAgIGlmICghbV9kYXRhQnVmZmVyKQpAQCAtMTAwLDEwICsxMDMsMTAgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBkYXRhTGUKICAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwg
ZGF0YUxlbmd0aCk7CiB9CiAKLWludCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpkZWNvZGVEYXRhVG9Db250ZW50KCkKK3NpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVz
b3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRl
bnQoKSk7Ci0gICAgaW50IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAgICBz
aXplX3QgZGF0YUxlbmd0aCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwogICAgIG1fY29udGVudCA9
IG1fZGVjb2Rlci0+ZGVjb2RlKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBtX2RhdGFCdWZmZXItPnNp
emUoKSk7CiAgICAgbV9jb250ZW50ICs9IG1fZGVjb2Rlci0+Zmx1c2goKTsKICAgICBtX2RhdGFC
dWZmZXIgPSBudWxscHRyOwpAQCAtMTcxLDEyICsxNzQsMTIgQEAgSW5zcGVjdG9yUGFnZUFnZW50
OjpSZXNvdXJjZVR5cGUgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlVHlwZShjb25zdCBT
dHJpbmcKICAgICByZXR1cm4gcmVzb3VyY2VEYXRhLT50eXBlKCk7CiB9CiAKLXZvaWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OnNldFJlc291cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6c2V0
UmVzb3VyY2VDb250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNl
RGF0YSA9IG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCk7CiAgICAg
aWYgKCFyZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICBpbnQgZGF0YUxlbmd0aCA9
IDIgKiBjb250ZW50Lmxlbmd0aCgpOworICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gMiAqIGNvbnRl
bnQubGVuZ3RoKCk7CiAgICAgaWYgKGRhdGFMZW5ndGggPiBtX21heGltdW1TaW5nbGVSZXNvdXJj
ZUNvbnRlbnRTaXplKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKHJlc291cmNlRGF0YS0+aXND
b250ZW50UHVyZ2VkKCkpCkBAIC0xODYsMTIgKzE4OSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpzZXRSZXNvdXJjZUNvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0
IFN0cgogICAgICAgICBpZiAocmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkpCiAgICAgICAgICAg
ICBtX2NvbnRlbnRTaXplIC09IHJlc291cmNlRGF0YS0+cmVtb3ZlQ29udGVudCgpOwogICAgICAg
ICBtX3JlcXVlc3RJZHNEZXF1ZS5hcHBlbmQocmVxdWVzdElkKTsKLSAgICAgICAgcmVzb3VyY2VE
YXRhLT5zZXRDb250ZW50KGNvbnRlbnQpOworICAgICAgICByZXNvdXJjZURhdGEtPnNldENvbnRl
bnQoY29udGVudCwgYmFzZTY0RW5jb2RlZCk7CiAgICAgICAgIG1fY29udGVudFNpemUgKz0gZGF0
YUxlbmd0aDsKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRk
UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBjaGFyKiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3Vy
Y2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
ZGF0YUxlbmd0aCkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IG1fcmVxdWVz
dElkVG9SZXNvdXJjZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCk7CiAgICAgaWYgKCFyZXNvdXJjZURh
dGEpCkBAIC0yMTcsNyArMjIwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVE
ZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKQogICAgIGlmICghcmVz
b3VyY2VEYXRhLT5oYXNEYXRhKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRlbnRTaXpl
ICs9IHJlc291cmNlRGF0YS0+ZGVjb2RlRGF0YVRvQ29udGVudCgpOwotICAgIGludCBkYXRhTGVu
Z3RoID0gMiAqIHJlc291cmNlRGF0YS0+Y29udGVudCgpLmxlbmd0aCgpOworICAgIHNpemVfdCBk
YXRhTGVuZ3RoID0gMiAqIHJlc291cmNlRGF0YS0+Y29udGVudCgpLmxlbmd0aCgpOwogICAgIGlm
IChkYXRhTGVuZ3RoID4gbV9tYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSkKICAgICAg
ICAgbV9jb250ZW50U2l6ZSAtPSByZXNvdXJjZURhdGEtPnB1cmdlQ29udGVudCgpOwogfQpAQCAt
MjQ1LDYgKzI0OCwyMiBAQCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0
KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6ZGF0YShjb25zdCBTdHJpbgogICAgIHJldHVybiBtX3Jl
cXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLmdldChyZXF1ZXN0SWQpOwogfQogCitWZWN0b3I8U3Ry
aW5nPiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVtb3ZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2UqIGNhY2hlZFJlc291cmNlKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAg
ICBSZXNvdXJjZURhdGFNYXA6Oml0ZXJhdG9yIGl0OworICAgIFJlc291cmNlRGF0YU1hcDo6aXRl
cmF0b3IgZW5kID0gbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5lbmQoKTsKKyAgICBmb3Ig
KGl0ID0gbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKKyAgICAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBpdC0+c2Vjb25kOwor
ICAgICAgICBpZiAocmVzb3VyY2VEYXRhLT5jYWNoZWRSZXNvdXJjZSgpID09IGNhY2hlZFJlc291
cmNlKSB7CisgICAgICAgICAgICByZXNvdXJjZURhdGEtPnNldENhY2hlZFJlc291cmNlKDApOwor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpdC0+Zmlyc3QpOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6Y2xl
YXIoY29uc3QgU3RyaW5nJiBwcmVzZXJ2ZWRMb2FkZXJJZCkKIHsKICAgICBtX3JlcXVlc3RJZHNE
ZXF1ZS5jbGVhcigpOwpAQCAtMjY0LDcgKzI4Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OmNsZWFyKGNvbnN0IFN0cmluZyYgcHJlc2VydmVkTG9hZGVySWQpCiAgICAgbV9yZXF1ZXN0
SWRUb1Jlc291cmNlRGF0YU1hcC5zd2FwKHByZXNlcnZlZE1hcCk7CiB9CiAKLXZvaWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OnNldFJlc291cmNlc0RhdGFTaXplTGltaXRzKGludCBtYXhpbXVtUmVz
b3VyY2VzQ29udGVudFNpemUsIGludCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSkK
K3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnNldFJlc291cmNlc0RhdGFTaXplTGltaXRzKHNp
emVfdCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIHNpemVfdCBtYXhpbXVtU2luZ2xlUmVz
b3VyY2VDb250ZW50U2l6ZSkKIHsKICAgICBjbGVhcigpOwogICAgIG1fbWF4aW11bVJlc291cmNl
c0NvbnRlbnRTaXplID0gbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplOwpAQCAtMjgzLDcgKzMw
Miw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmVuc3VyZU5vRGF0YUZvclJlcXVlc3RJ
ZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKICAgICB9CiB9CiAKLWJvb2wgTmV0d29ya1Jlc291
cmNlc0RhdGE6OmVuc3VyZUZyZWVTcGFjZShpbnQgc2l6ZSkKK2Jvb2wgTmV0d29ya1Jlc291cmNl
c0RhdGE6OmVuc3VyZUZyZWVTcGFjZShzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoc2l6ZSA+IG1f
bWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IDFi
MTcyZTc5ZTAxMjNlODFjMWM1NmUxOTRmYWEzOTBjN2U1NzdiZDQuLjhkZmQ1ZGQwZGJiMjExYTBj
NDkyZWE2ZjFmZDNhNDhlOTA3NzFlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaWZuZGVmIE5ldHdv
cmtSZXNvdXJjZXNEYXRhX2gKICNkZWZpbmUgTmV0d29ya1Jlc291cmNlc0RhdGFfaAogCi0jaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdl
bnQuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAKQEAgLTY1LDcgKzY0LDkg
QEAgcHVibGljOgogCiAgICAgICAgIGJvb2wgaGFzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuICFt
X2NvbnRlbnQuaXNOdWxsKCk7IH0KICAgICAgICAgU3RyaW5nIGNvbnRlbnQoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRlbnQ7IH0KLSAgICAgICAgdm9pZCBzZXRDb250ZW50KGNvbnN0IFN0cmluZyYp
OworICAgICAgICB2b2lkIHNldENvbnRlbnQoY29uc3QgU3RyaW5nJiwgYm9vbCBiYXNlNjRFbmNv
ZGVkKTsKKworICAgICAgICBib29sIGJhc2U2NEVuY29kZWQoKSBjb25zdCB7IHJldHVybiBtX2Jh
c2U2NEVuY29kZWQ7IH0KIAogICAgICAgICB1bnNpZ25lZCByZW1vdmVDb250ZW50KCk7CiAgICAg
ICAgIGJvb2wgaXNDb250ZW50UHVyZ2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnRlbnRQdXJn
ZWQ7IH0KQEAgLTg2LDIwICs4NywyMSBAQCBwdWJsaWM6CiAgICAgICAgIFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgICAgICB2
b2lkIHNldEJ1ZmZlcihQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKSB7IG1fYnVmZmVy
ID0gYnVmZmVyOyB9CiAKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZWRSZXNvdXJjZS5nZXQoKTsgfQorICAgICAgICBDYWNoZWRS
ZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFJlc291cmNl
OyB9CiAgICAgICAgIHZvaWQgc2V0Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hl
ZFJlc291cmNlKSB7IG1fY2FjaGVkUmVzb3VyY2UgPSBjYWNoZWRSZXNvdXJjZTsgfQogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVm
ZmVyOyB9Ci0gICAgICAgIGludCBkYXRhTGVuZ3RoKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgYXBw
ZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7Ci0gICAgICAgIGludCBk
ZWNvZGVEYXRhVG9Db250ZW50KCk7CisgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7
CisgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCk7CisgICAgICAgIHNpemVfdCBkZWNvZGVEYXRhVG9Db250ZW50KCk7CiAKICAgICAgICAg
U3RyaW5nIG1fcmVxdWVzdElkOwogICAgICAgICBTdHJpbmcgbV9sb2FkZXJJZDsKICAgICAgICAg
U3RyaW5nIG1fZnJhbWVJZDsKICAgICAgICAgU3RyaW5nIG1fdXJsOwogICAgICAgICBTdHJpbmcg
bV9jb250ZW50OworICAgICAgICBib29sIG1fYmFzZTY0RW5jb2RlZDsKICAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVmZmVyOwogICAgICAgICBib29sIG1faXNDb250ZW50UHVy
Z2VkOwogICAgICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSBtX3R5cGU7CkBA
IC0xMDksNyArMTExLDcgQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVj
b2Rlcj4gbV9kZWNvZGVyOwogCiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
OwotICAgICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gbV9jYWNoZWRS
ZXNvdXJjZTsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2U7CiAgICAg
fTsKIAogICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhKCk7CkBAIC0xMjAsMjcgKzEyMiwyOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2
b2lkIHNldFJlc291cmNlVHlwZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgSW5zcGVjdG9yUGFn
ZUFnZW50OjpSZXNvdXJjZVR5cGUpOwogICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VU
eXBlIHJlc291cmNlVHlwZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7Ci0gICAgdm9pZCBzZXRS
ZXNvdXJjZUNvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29u
dGVudCk7Ci0gICAgdm9pZCBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOworICAgIHZvaWQgc2V0UmVz
b3VyY2VDb250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnQsIGJvb2wgYmFzZTY0RW5jb2RlZCA9IGZhbHNlKTsKKyAgICB2b2lkIG1heWJlQWRkUmVzb3Vy
Y2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
ZGF0YUxlbmd0aCk7CiAgICAgdm9pZCBtYXliZURlY29kZURhdGFUb0NvbnRlbnQoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQpOwogICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJl
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwogICAgIFJlc291cmNlRGF0YSBjb25z
dCogZGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVt
b3ZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGNsZWFyKGNvbnN0
IFN0cmluZyYgcHJlc2VydmVkTG9hZGVySWQgPSBTdHJpbmcoKSk7CiAKLSAgICB2b2lkIHNldFJl
c291cmNlc0RhdGFTaXplTGltaXRzKGludCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIGlu
dCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSk7CisgICAgdm9pZCBzZXRSZXNvdXJj
ZXNEYXRhU2l6ZUxpbWl0cyhzaXplX3QgbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplLCBzaXpl
X3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpOwogCiBwcml2YXRlOgogICAgIHZv
aWQgZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKLSAg
ICBib29sIGVuc3VyZUZyZWVTcGFjZShpbnQgc2l6ZSk7CisgICAgYm9vbCBlbnN1cmVGcmVlU3Bh
Y2Uoc2l6ZV90KTsKIAogICAgIERlcXVlPFN0cmluZz4gbV9yZXF1ZXN0SWRzRGVxdWU7CiAKICAg
ICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZXNvdXJjZURhdGEqPiBSZXNvdXJjZURhdGFNYXA7
CiAgICAgUmVzb3VyY2VEYXRhTWFwIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXA7Ci0gICAg
aW50IG1fY29udGVudFNpemU7Ci0gICAgaW50IG1fbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXpl
OwotICAgIGludCBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplOworICAgIHNpemVf
dCBtX2NvbnRlbnRTaXplOworICAgIHNpemVfdCBtX21heGltdW1SZXNvdXJjZXNDb250ZW50U2l6
ZTsKKyAgICBzaXplX3QgbV9tYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDM5OThlZmQzMjYzMzNmYWIyMmE1M2RjNGZkYTQwMjJm
OGUzOThiNTQuLjU3MTQzOTY1NmRhYzI0M2RiOTRiNzMwMmFmNmFmNDA0OWMwMTEyOWIgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiUHVyZ2VhYmxlQnVmZmVyLmgiCkBAIC0xNzYsNyArMTc3LDcgQEAgQ2FjaGVkUmVzb3Vy
Y2U6On5DYWNoZWRSZXNvdXJjZSgpCiAgICAgQVNTRVJUKCFpbkNhY2hlKCkpOwogICAgIEFTU0VS
VCghbV9kZWxldGVkKTsKICAgICBBU1NFUlQodXJsKCkuaXNOdWxsKCkgfHwgbWVtb3J5Q2FjaGUo
KS0+cmVzb3VyY2VGb3JVUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCgpKSkgIT0gdGhpcyk7
Ci0gICAgCisKICNpZm5kZWYgTkRFQlVHCiAgICAgbV9kZWxldGVkID0gdHJ1ZTsKICAgICBjYWNo
ZWRSZXNvdXJjZUxlYWtDb3VudGVyLmRlY3JlbWVudCgpOwpAQCAtNDMwLDkgKzQzMSw4IEBAIHZv
aWQgQ2FjaGVkUmVzb3VyY2U6OnJlbW92ZUNsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xp
ZW50KQogICAgICAgICBkaWRSZW1vdmVDbGllbnQoY2xpZW50KTsKICAgICB9CiAKLSAgICBpZiAo
Y2FuRGVsZXRlKCkgJiYgIWluQ2FjaGUoKSkKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgZWxz
ZSBpZiAoIWhhc0NsaWVudHMoKSAmJiBpbkNhY2hlKCkpIHsKKyAgICBib29sIGRlbGV0ZWQgPSBk
ZWxldGVJZlBvc3NpYmxlKCk7CisgICAgaWYgKCFkZWxldGVkICYmICFoYXNDbGllbnRzKCkgJiYg
aW5DYWNoZSgpKSB7CiAgICAgICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZUZyb21MaXZlUmVzb3Vy
Y2VzU2l6ZSh0aGlzKTsKICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlRnJvbUxpdmVEZWNv
ZGVkUmVzb3VyY2VzTGlzdCh0aGlzKTsKICAgICAgICAgYWxsQ2xpZW50c1JlbW92ZWQoKTsKQEAg
LTQ0OSwxMCArNDQ5LDE0IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnJlbW92ZUNsaWVudChDYWNo
ZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQogICAgIC8vIFRoaXMgb2JqZWN0IG1heSBiZSBkZWFk
IGhlcmUuCiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OmRlbGV0ZUlmUG9zc2libGUoKQorYm9v
bCBDYWNoZWRSZXNvdXJjZTo6ZGVsZXRlSWZQb3NzaWJsZSgpCiB7Ci0gICAgaWYgKGNhbkRlbGV0
ZSgpICYmICFpbkNhY2hlKCkpCisgICAgaWYgKGNhbkRlbGV0ZSgpICYmICFpbkNhY2hlKCkpIHsK
KyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291
cmNlKHRoaXMpOwogICAgICAgICBkZWxldGUgdGhpczsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnNl
dERlY29kZWRTaXplKHVuc2lnbmVkIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDdmYmY3MzM2NTg1NWIzOGE3MDUzYzU5MmRiNjA2Zjhm
MWVkMmE4NGEuLjlhYTFmNmEyZTllYzVjNTAxNDdiMjAxYjBjN2IwMTVhYjY1OGRkZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTUsNyAr
MTE1LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50
Kik7CiAgICAgdm9pZCByZW1vdmVDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKICAgICBi
b29sIGhhc0NsaWVudHMoKSBjb25zdCB7IHJldHVybiAhbV9jbGllbnRzLmlzRW1wdHkoKSB8fCAh
bV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5pc0VtcHR5KCk7IH0KLSAgICB2b2lkIGRlbGV0ZUlm
UG9zc2libGUoKTsKKyAgICBib29sIGRlbGV0ZUlmUG9zc2libGUoKTsKIAogICAgIGVudW0gUHJl
bG9hZFJlc3VsdCB7CiAgICAgICAgIFByZWxvYWROb3RSZWZlcmVuY2VkLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
ZTE5ODdjM2ZlMzgyNzkzMmNkYTNiY2M4MzJjNTFjY2E4ZmFkMTYzMS4uOWE4ODcyNGExNTBkMWFl
NmU0YTg1MGExMThhOWM0ZjM4ZWVlOWUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02NzYsNyArNjc2LDExIEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWREb25lKCkKIHZvaWQgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lckZpcmVkKFRpbWVy
PENhY2hlZFJlc291cmNlTG9hZGVyPiogdGltZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRCh0aW1l
ciwgdGltZXIgPT0gJm1fZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyKTsKKyAg
ICBnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzKCk7Cit9CiAKK3ZvaWQgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OmdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMoKQorewogICAgIHR5
cGVkZWYgVmVjdG9yPFN0cmluZywgMTA+IFN0cmluZ1ZlY3RvcjsKICAgICBTdHJpbmdWZWN0b3Ig
cmVzb3VyY2VzVG9EZWxldGU7CiAKQEAgLTgxMyw5ICs4MTcsOCBAQCB2b2lkIENhY2hlZFJlc291
cmNlTG9hZGVyOjpjbGVhclByZWxvYWRzKCkKICAgICBmb3IgKExpc3RIYXNoU2V0PENhY2hlZFJl
c291cmNlKj46Oml0ZXJhdG9yIGl0ID0gbV9wcmVsb2Fkcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CiAgICAgICAgIENhY2hlZFJlc291cmNlKiByZXMgPSAqaXQ7CiAgICAgICAgIHJlcy0+
ZGVjcmVhc2VQcmVsb2FkQ291bnQoKTsKLSAgICAgICAgaWYgKHJlcy0+Y2FuRGVsZXRlKCkgJiYg
IXJlcy0+aW5DYWNoZSgpKQotICAgICAgICAgICAgZGVsZXRlIHJlczsKLSAgICAgICAgZWxzZSBp
ZiAocmVzLT5wcmVsb2FkUmVzdWx0KCkgPT0gQ2FjaGVkUmVzb3VyY2U6OlByZWxvYWROb3RSZWZl
cmVuY2VkKQorICAgICAgICBib29sIGRlbGV0ZWQgPSByZXMtPmRlbGV0ZUlmUG9zc2libGUoKTsK
KyAgICAgICAgaWYgKCFkZWxldGVkICYmIHJlcy0+cHJlbG9hZFJlc3VsdCgpID09IENhY2hlZFJl
c291cmNlOjpQcmVsb2FkTm90UmVmZXJlbmNlZCkKICAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkt
PnJlbW92ZShyZXMpOwogICAgIH0KICAgICBtX3ByZWxvYWRzLmNsZWFyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4IGQ4
MmIzYmY0MmE3MzhjNzc1Yjg2YTA4MzYyYWQ1YTlhMTJhZTlkM2QuLjVlZWIzODcxZjAzYjQwZjg2
MDk4MDAxNTQ2ODFjNWIwNTZkM2FjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCkBAIC0xMDUsNiArMTA1LDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopIGNvbnN0
OwogICAgIHZvaWQgbG9hZERvbmUoKTsKKyAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRS
ZXNvdXJjZXMoKTsKICAgICAKICAgICB2b2lkIGluY3JlbWVudFJlcXVlc3RDb3VudChjb25zdCBD
YWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50KGNvbnN0IENh
Y2hlZFJlc291cmNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcAppbmRleCAyOTlkMTBhNzA1MTI4YjZhY2ZmMjM4ZmUwNzE5OWE5OTQ1OWQ0MjU0Li41ZGMw
NDc0MDJjYjNkNzQ4ZWQ5NzM0NzllNjQyMjg3NTkzNzg4OTJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTQwMiw4ICs0MDIsNyBAQCB2b2lkIE1l
bW9yeUNhY2hlOjpldmljdChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgfSBlbHNlCiAg
ICAgICAgIEFTU0VSVChtX3Jlc291cmNlcy5nZXQocmVzb3VyY2UtPnVybCgpKSAhPSByZXNvdXJj
ZSk7CiAKLSAgICBpZiAocmVzb3VyY2UtPmNhbkRlbGV0ZSgpKQotICAgICAgICBkZWxldGUgcmVz
b3VyY2U7CisgICAgcmVzb3VyY2UtPmRlbGV0ZUlmUG9zc2libGUoKTsKIH0KIAogc3RhdGljIGlu
bGluZSB1bnNpZ25lZCBmYXN0TG9nMih1bnNpZ25lZCBpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXggNTMxYjA0ZjZjYzI4Nzc4ZDBhZjI5MjAzYTJh
MDA2YjFlNGEyODJiZi4uNDQ1Yjg3ODE1YTc2Y2ViYjU3M2FhOTliYWQwMjRmNGU0M2U1MGNkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCkBAIC0yNiw3
ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxTZXR0aW5n
cy5oIgogCi0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDaHJv
bWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDBjNTA2NTFiNjM3MWQwYjM1ZGYw
NGEwYmIwN2RjMWZjOGY0YzA5NTMuLmMwNTAyYTc5ZjJjMDFjNWQ4ZGJhOWEwNmFiZTU2MDg0YWE5
MWRiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEwOTYsNiArMTA5
NiwxOSBAQCB2b2lkIEludGVybmFsczo6cmVzdW1lQW5pbWF0aW9ucyhEb2N1bWVudCogZG9jdW1l
bnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgIGNvbnRyb2xsZXItPnJlc3VtZUFuaW1h
dGlvbnMoKTsKIH0KIAordm9pZCBJbnRlcm5hbHM6OmdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNv
dXJjZXMoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK3sKKyAg
ICBpZiAoIWRvY3VtZW50KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJl
c291cmNlTG9hZGVyID0gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CisgICAgaWYg
KCFjYWNoZWRSZXNvdXJjZUxvYWRlcikKKyAgICAgICAgcmV0dXJuOworICAgIGNhY2hlZFJlc291
cmNlTG9hZGVyLT5nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzKCk7Cit9CisKIHZvaWQg
SW50ZXJuYWxzOjphbGxvd1JvdW5kaW5nSGFja3MoKSBjb25zdAogewogICAgIHNldHRpbmdzKCkt
PmFsbG93Um91bmRpbmdIYWNrcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXgg
ZDU1MWM0OTNjMWVhZjFkNjZjNTA2NzU5MzU1OTU1ZTc2NTdkY2RkNy4uMTU3NjYyYzNkZTZiNGVk
MTQ0YTI5OTk4MzYwM2NjZWI2NDAwYWJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CkBAIC0xODMsNiArMTgzLDggQEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMo
RG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgdm9pZCByZXN1bWVBbmltYXRp
b25zKERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogCisgICAgdm9pZCBnYXJiYWdl
Q29sbGVjdERvY3VtZW50UmVzb3VyY2VzKERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OworCiAgICAgdm9pZCBhbGxvd1JvdW5kaW5nSGFja3MoKSBjb25zdDsKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggZjY4NWE0MGNh
YzQ0NDA2MWJkM2UyM2RhMWYyZDQ2MDBjMjI0M2ExZS4uNjAxZThhNzRmOWYxMGQyNGU0MThmMTM4
MzM4NmUwNTdmNThhMDRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAt
MTU1LDYgKzE1NSw4IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICB2b2lkIHN1c3BlbmRBbmlt
YXRpb25zKGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAg
ICAgIHZvaWQgcmVzdW1lQW5pbWF0aW9ucyhpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChE
T01FeGNlcHRpb24pOwogCisgICAgICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291
cmNlcyhpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOworCiAgICAg
ICAgIHZvaWQgYWxsb3dSb3VuZGluZ0hhY2tzKCk7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9CQVRU
RVJZX1NUQVRVUykgJiYgRU5BQkxFX0JBVFRFUllfU1RBVFVTCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYK
aW5kZXggZWM2MjI3NGYzNzlkNzZiMDA0ODg2MGVlZmI5MmU1NzY4YzIxYmVkOC4uZGVhMzZlZDkw
MjlhZWIyMmQ1NWFjNzMxNzdhOWZjZTRlMjg1OTQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpA
QCAtMTc1LDYgKzE3NSw3IEBAIEVYUE9SVFMKICAgICAgICAgP2ZpbmRAU3RyaW5nSW1wbEBXVEZA
QFFBRUlQQVYxMkBAWgogICAgICAgICA/YWJzb2x1dGVDYXJldEJvdW5kc0BGcmFtZVNlbGVjdGlv
bkBXZWJDb3JlQEBRQUU/QVZJbnRSZWN0QDJAWFoKICAgICAgICAgP2Zyb21VVEY4V2l0aExhdGlu
MUZhbGxiYWNrQFN0cmluZ0BXVEZAQFNBP0FWMTJAUEJFSUBaCisgICAgICAgID9nYXJiYWdlQ29s
bGVjdERvY3VtZW50UmVzb3VyY2VzQENhY2hlZFJlc291cmNlTG9hZGVyQFdlYkNvcmVAQFFBRVhY
WgogICAgICAgICA/Z2V0Q2FjaGVkRE9NU3RydWN0dXJlQFdlYkNvcmVAQFlBUEFWU3RydWN0dXJl
QEpTQ0BAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQlVDbGFzc0luZm9AM0BAWgogICAgICAgICA/
Z2V0RGF0YTE2U2xvd0Nhc2VAU3RyaW5nSW1wbEBXVEZAQEFCRVBCX1dYWgogICAgICAgICA/Z2V0
RWxlbWVudEJ5SWRAVHJlZVNjb3BlQFdlYkNvcmVAQFFCRVBBVkVsZW1lbnRAMkBBQlZBdG9taWNT
dHJpbmdAV1RGQEBAWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxp
dGUuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCmluZGV4IDUwY2E0
Y2YxODhkYjgwMjY2MWMxYTZhZGM0Y2NlNTFmMDhlMjBmOTcuLjFhNDdkMmYzYTUwNGViNTY0YjA4
N2VhOWZhZjBhYzRjNjljOTI3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJL
aXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYK
QEAgLTE3Miw2ICsxNzIsNyBAQCBFWFBPUlRTCiAgICAgICAgID9maW5kQFN0cmluZ0ltcGxAV1RG
QEBRQUVJUEFWMTJAQFoKICAgICAgICAgP2Fic29sdXRlQ2FyZXRCb3VuZHNARnJhbWVTZWxlY3Rp
b25AV2ViQ29yZUBAUUFFP0FWSW50UmVjdEAyQFhaCiAgICAgICAgID9mcm9tVVRGOFdpdGhMYXRp
bjFGYWxsYmFja0BTdHJpbmdAV1RGQEBTQT9BVjEyQFBCRUlAWgorICAgICAgICA/Z2FyYmFnZUNv
bGxlY3REb2N1bWVudFJlc291cmNlc0BDYWNoZWRSZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBRQUVY
WFoKICAgICAgICAgP2dldENhY2hlZERPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVjdHVy
ZUBKU0NAQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEJVQ2xhc3NJbmZvQDNAQFoKICAgICAgICAg
P2dldERhdGExNlNsb3dDYXNlQFN0cmluZ0ltcGxAV1RGQEBBQkVQQl9XWFoKICAgICAgICAgP2dl
dEVsZW1lbnRCeUlkQFRyZWVTY29wZUBXZWJDb3JlQEBRQkVQQVZFbGVtZW50QDJAQUJWQXRvbWlj
U3RyaW5nQFdURkBAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDMyNjU3ODU5ZGE5MTk3
Y2FmNmU1Y2Q4MjEzODI2ZDZhZmQ4ZjMzNTkuLmRkZWNjZjYwNTI0NDVlOTU3ZDlmYzBhNDg4ZGYy
MDQ4MWUxYzdmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIK
KysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNzIsMTIgKzcyLDEzIEBA
IF9aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQ
TjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDCiBfWk43V2ViQ29yZTE3SW5zcGVjdG9yQ291bnRlcnMx
MmNvdW50ZXJWYWx1ZUVOUzBfMTFDb3VudGVyVHlwZUU7CiBfWk43V2ViQ29yZTE4SFRNTENvbnRl
bnRFbGVtZW50NmNyZWF0ZUVQTlNfOERvY3VtZW50RTsKIF9aTjdXZWJDb3JlMTlJbnNwZWN0b3JD
b250cm9sbGVyMzlzZXRSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0c0Zyb21JbnRlcm5hbHNFaWk7Ci1f
Wk43V2ViQ29yZTIxSW5zcGVjdG9yQ29uc29sZUFnZW50Mjhjb25zb2xlTWVzc2FnZUFyZ3VtZW50
Q291bnRzRXY7Ci1fWk43V2ViQ29yZTIyaW5zdHJ1bWVudGF0aW9uRm9yUGFnZUVQTlNfNFBhZ2VF
OworX1pON1dlYkNvcmUyMENhY2hlZFJlc291cmNlTG9hZGVyMzFnYXJiYWdlQ29sbGVjdERvY3Vt
ZW50UmVzb3VyY2VzRXY7CiBfWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHRDMUVQTlNf
NE5vZGVFOwogX1pON1dlYkNvcmUyME5vZGVSZW5kZXJpbmdDb250ZXh0RDFFdjsKK19aTjdXZWJD
b3JlMjFJbnNwZWN0b3JDb25zb2xlQWdlbnQyOGNvbnNvbGVNZXNzYWdlQXJndW1lbnRDb3VudHNF
djsKIF9aTjdXZWJDb3JlMjFnZXRDYWNoZWRET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxP
YmplY3RFUEtOM0pTQzlDbGFzc0luZm9FOwogX1pON1dlYkNvcmUyMmV4dGVybmFsUmVwcmVzZW50
YXRpb25FUE5TXzdFbGVtZW50RWo7CitfWk43V2ViQ29yZTIyaW5zdHJ1bWVudGF0aW9uRm9yUGFn
ZUVQTlNfNFBhZ2VFOwogX1pON1dlYkNvcmUyMnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNFdjsKIF9a
TjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRFdjsKIF9aTjdX
ZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMW5leHRTaWJsaW5nRXY7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
Zjc3NTA1MjlkODVmODc5ZTk3YjYwNGVkODUyNWE0NDQ5YzI1MTQyOS4uNTllODFmMTJiOWEyMzIx
N2JkOGY4ZGI1Y2VlNjM4NzFhZmMxOGUxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA3
LTI5ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFJlc291cmNlIGFnZW50J3MgcmVmZXJlbmNlIHRvIGNhY2hlZCByZXNvdXJj
ZXMgc2hvdWxkIGJlIHdlYWsuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MjEwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jYWNoZWQtcmVzb3VyY2Ut
ZGVzdHJveWVkLW1vdmVkLXRvLXN0b3JhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2NhY2hlZC1yZXNvdXJjZS1kZXN0cm95ZWQt
bW92ZWQtdG8tc3RvcmFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2NhY2hlZC1yZXNvdXJjZS1kZXN0cm95ZWQtdG9vLWJpZy1kaXNjYXJkZWQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2NhY2hlZC1yZXNvdXJjZS1kZXN0cm95ZWQtdG9vLWJpZy1kaXNjYXJkZWQuaHRtbDogQWRk
ZWQuCisKIDIwMTItMDctMjcgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEluZGV4ZWREQjogaW5qZWN0IGluZGV4IGtleXMgb24gY3Vyc29yL29iamVjdHN0
b3JlL2luZGV4IGdldCBzdWNjZXNzIGhhbmRsZXJzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2NhY2hlZC1yZXNvdXJjZS1kZXN0cm95ZWQtbW92
ZWQtdG8tc3RvcmFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2NhY2hlZC1yZXNvdXJjZS1kZXN0cm95ZWQtbW92ZWQtdG8tc3RvcmFnZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzNiNDFlYmI3ZWE0Yzg2Mzc1YmRhNTM1MThjYTM2MjQy
MWI4MGJjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvY2FjaGVkLXJlc291cmNlLWRlc3Ryb3llZC1tb3ZlZC10by1zdG9yYWdlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTY6IERv
bmUxLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI2OiBEb25lMi4KK1Rlc3RzIGNvbnRlbnQgaXMg
bW92ZWQgZnJvbSBjYWNoZWQgcmVzb3VyY2UgdG8gcmVzb3VyY2UgYWdlbnQncyBkYXRhIHN0b3Jh
Z2Ugd2hlbiBjYWNoZWQgcmVzb3VyY2UgaXMgZGVzdHJveWVkLgorCitCdWcgOTIxMDggIAoraHR0
cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5w
aHA/dHlwZT1pbWFnZSZyYW5kb209MSZzaXplPTQwMAorcmVxdWVzdC50eXBlOiBpbWFnZQorcmVx
dWVzdC5jb250ZW50Lmxlbmd0aCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6IDUzNgorUmVsZWFz
aW5nIGNhY2hlZCByZXNvdXJjZS4KK3JlcXVlc3QuY29udGVudC5sZW5ndGggYWZ0ZXIgcmVxdWVz
dGluZyBjb250ZW50OiA1MzYKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9jYWNoZWQtcmVzb3VyY2UtZGVzdHJveWVkLW1vdmVkLXRvLXN0b3Jh
Z2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY2FjaGVk
LXJlc291cmNlLWRlc3Ryb3llZC1tb3ZlZC10by1zdG9yYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjll
ODhlY2MyZDZkNTA0M2Q3NTZiZTAxYTU5ZThhNmZhNDU2NGI4ZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY2FjaGVkLXJlc291cmNl
LWRlc3Ryb3llZC1tb3ZlZC10by1zdG9yYWdlLmh0bWwKQEAgLTAsMCArMSwxMDkgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL25ldHdvcmstdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFy
IGltYWdlOworZnVuY3Rpb24gbG9hZEZpcnN0SW1hZ2UoKSB7CisgICAgaW1hZ2UgPSBuZXcgSW1h
Z2UoKTsKKyAgICBpbWFnZS5vbmxvYWQgPSBmaXJzdEltYWdlTG9hZGVkOworICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UpOworICAgIGltYWdlLnNyYyA9ICJyZXNvdXJjZXMvcmVz
b3VyY2UucGhwP3R5cGU9aW1hZ2UmcmFuZG9tPTEmc2l6ZT00MDAiOworfQorCitmdW5jdGlvbiBm
aXJzdEltYWdlTG9hZGVkKCkKK3sKKyAgICBjb25zb2xlLmxvZygiRG9uZTEuIik7Cit9CisKK2Z1
bmN0aW9uIGxvYWRTZWNvbmRJbWFnZSgpIHsKKyAgICBpbWFnZS5vbmxvYWQgPSBzZWNvbmRJbWFn
ZUxvYWRlZDsKKyAgICBpbWFnZS5zcmMgPSAicmVzb3VyY2VzL3Jlc291cmNlLnBocD90eXBlPWlt
YWdlJnJhbmRvbT0xJnNpemU9MjAwIjsKK30KKworZnVuY3Rpb24gc2Vjb25kSW1hZ2VMb2FkZWQo
KQoreworICAgIGNvbnNvbGUubG9nKCJEb25lMi4iKTsKK30KKworZnVuY3Rpb24gZm9yY2VDYWNo
ZWRSZXNvdXJjZUxvYWRlckdDKCkgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAg
ICB3aW5kb3cuaW50ZXJuYWxzLmdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMoKTsKK30K
KworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgLy8gU2luY2UgdGhpcyB0ZXN0IGNvdWxkIGJlIHJ1
biB0b2dldGhlciB3aXRoIG90aGVyIGluc3BlY3RvciBiYWNrZW5kIGNhY2hlCisgICAgLy8gdGVz
dHMsIHdlIG5lZWQgdG8gcmVzZXQgc2l6ZSBsaW1pdHMgdG8gZGVmYXVsdCBvbmVzLgorICAgIElu
c3BlY3RvclRlc3QucmVzZXRJbnNwZWN0b3JSZXNvdXJjZXNEYXRhKHN0ZXAxKTsKKworICAgIHZh
ciBpbWFnZVJlcXVlc3Q7CisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRDb25zb2xlU25pZmZlcihzdGVwMik7CisgICAgICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoImxvYWRGaXJzdEltYWdlKCkiKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBzdGVwMigpCisgICAgeworICAgICAgICBpbWFnZVJlcXVlc3QgPSBXZWJJbnNwZWN0b3Iu
cGFuZWxzLm5ldHdvcmsucmVxdWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVl
c3RzLmxlbmd0aCAtIDFdOworICAgICAgICBpbWFnZVJlcXVlc3QucmVxdWVzdENvbnRlbnQoc3Rl
cDMpOworICAgIH0KKworICAgIHZhciBvcmlnaW5hbENvbnRlbnRMZW5ndGg7CisgICAgZnVuY3Rp
b24gc3RlcDMoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoaW1hZ2VS
ZXF1ZXN0LnVybCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXF1ZXN0LnR5
cGU6ICIgKyBpbWFnZVJlcXVlc3QudHlwZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJyZXF1ZXN0LmNvbnRlbnQubGVuZ3RoIGFmdGVyIHJlcXVlc3RpbmcgY29udGVudDogIiAr
IGltYWdlUmVxdWVzdC5jb250ZW50Lmxlbmd0aCk7CisgICAgICAgIG9yaWdpbmFsQ29udGVudExl
bmd0aCA9IGltYWdlUmVxdWVzdC5jb250ZW50Lmxlbmd0aDsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnRUcnVlKGltYWdlUmVxdWVzdC5jb250ZW50Lmxlbmd0aCA+IDAsICJObyBjb250ZW50
IGJlZm9yZSBkZXN0cm95aW5nIENhY2hlZFJlc291cmNlLiIpOworCisgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJSZWxlYXNpbmcgY2FjaGVkIHJlc291cmNlLiIpOworICAgICAgICAv
LyBMb2FkaW5nIGFub3RoZXIgaW1hZ2UgdG8gdGhlIHNhbWUgaW1hZ2UgZWxlbWVudCBzbyB0aGF0
IHRoZSBvcmlnaW5hbCBpbWFnZSBjYWNoZWQgcmVzb3VyY2UgaXMgcmVsZWFzZWQuCisgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkQ29uc29sZVNuaWZmZXIoc3RlcDQpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkU2Vjb25kSW1hZ2UoKSIpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHN0ZXA0KG1zZykKKyAgICB7CisgICAgICAgIC8vIERpc2FibGUtZW5hYmxlIGNh
Y2hlIHRvIGZvcmNlIE1lbW9yeUNhY2hlOjpldmljdFJlc291cmNlcygpLgorICAgICAgICBOZXR3
b3JrQWdlbnQuc2V0Q2FjaGVEaXNhYmxlZCh0cnVlLCBzdGVwNSk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gc3RlcDUobXNnKQorICAgIHsKKyAgICAgICAgTmV0d29ya0FnZW50LnNldENhY2hlRGlz
YWJsZWQoZmFsc2UsIHN0ZXA2KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNigpCisgICAg
eworICAgICAgICAvLyBGb3JjZSBDYWNoZWRSZXNvdXJjZUxvYWRlciBnYXJiYWdlIGNvbGxlY3Rv
ciBydW4uCisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImZvcmNlQ2FjaGVk
UmVzb3VyY2VMb2FkZXJHQygpIik7CisKKyAgICAgICAgLy8gUmUtcmVxdWVzdCBjb250ZW50IG5v
dyB0aGF0IENhY2hlZFJlc291cmNlIHNob3VsZCBoYXZlIGJlZW4gZGVzdHJveWVkLgorICAgICAg
ICBkZWxldGUgaW1hZ2VSZXF1ZXN0Ll9jb250ZW50OworICAgICAgICBpbWFnZVJlcXVlc3QucmVx
dWVzdENvbnRlbnQoc3RlcDcpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA3KCkKKyAgICB7
CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXF1ZXN0LmNvbnRlbnQubGVuZ3Ro
IGFmdGVyIHJlcXVlc3RpbmcgY29udGVudDogIiArIGltYWdlUmVxdWVzdC5jb250ZW50Lmxlbmd0
aCk7CisgICAgICAgIG9yaWdpbmFsQ29udGVudExlbmd0aCA9IGltYWdlUmVxdWVzdC5jb250ZW50
Lmxlbmd0aDsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKGltYWdlUmVxdWVzdC5j
b250ZW50Lmxlbmd0aCA9PT0gb3JpZ2luYWxDb250ZW50TGVuZ3RoLCAiQ29udGVudCBjaGFuZ2Vk
IGFmdGVyIGNhY2hlZCByZXNvdXJjZSB3YXMgZGVzdHJveWVkIik7CisgICAgICAgIEluc3BlY3Rv
clRlc3QucmVzZXRJbnNwZWN0b3JSZXNvdXJjZXNEYXRhKHN0ZXA4KTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBzdGVwOCgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVz
dCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorPHA+VGVzdHMgY29udGVudCBpcyBtb3ZlZCBmcm9tIGNhY2hlZCByZXNvdXJjZSB0byBy
ZXNvdXJjZSBhZ2VudCdzIGRhdGEgc3RvcmFnZSB3aGVuIGNhY2hlZCByZXNvdXJjZSBpcyBkZXN0
cm95ZWQuPC9wPgorPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkyMTA4Ij5CdWcgOTIxMDg8L2E+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY2FjaGVkLXJlc291cmNl
LWRlc3Ryb3llZC10b28tYmlnLWRpc2NhcmRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2NhY2hlZC1yZXNvdXJjZS1kZXN0cm95ZWQtdG9v
LWJpZy1kaXNjYXJkZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhNDI3NDU2ZjNhOTk2YzNi
NWI5MjFlZjQzZTIxODRkOGIyMmIzNWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2NhY2hlZC1yZXNvdXJjZS1kZXN0cm95ZWQtdG9v
LWJpZy1kaXNjYXJkZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAyMzogRG9uZTEuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzM6IERvbmUyLgor
VGVzdHMgY2FjaGVkIHJlc291cmNlIGNvbnRlbnQgaXMgZGlzY2FyZGVkIHdoZW4gY2FjaGVkIHJl
c291cmNlIGlzIGRlc3Ryb3llZCBpZiBjb250ZW50IHNpemUgaXMgdG9vIGJpZyBmb3IgdGhlIHJl
c291cmNlIGFnZW50J3MgZGF0YSBzdG9yYWdlLgorCitCdWcgOTIxMDggIAoraHR0cDovLzEyNy4w
LjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1p
bWFnZSZyYW5kb209MSZzaXplPTQwMAorcmVxdWVzdC50eXBlOiBpbWFnZQorcmVxdWVzdC5jb250
ZW50Lmxlbmd0aCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6IDUzNgorUmVsZWFzaW5nIGNhY2hl
ZCByZXNvdXJjZS4KK3JlcXVlc3QuY29udGVudCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6IG51
bGwKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9jYWNoZWQtcmVzb3VyY2UtZGVzdHJveWVkLXRvby1iaWctZGlzY2FyZGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2NhY2hlZC1yZXNvdXJjZS1kZXN0
cm95ZWQtdG9vLWJpZy1kaXNjYXJkZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZGMxNTBmNjA1MDhhYzUw
Mzc1NmRmNTljYmU1Y2IxMDMxYmY3YjkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jYWNoZWQtcmVzb3VyY2UtZGVzdHJveWVkLXRv
by1iaWctZGlzY2FyZGVkLmh0bWwKQEAgLTAsMCArMSwxMDYgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL25ldHdvcmstdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFyIGltYWdlOworZnVu
Y3Rpb24gbG9hZEZpcnN0SW1hZ2UoKSB7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKSB7Cisg
ICAgICAgIGNvbnNvbGUubG9nKCJUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gYXMgd2luZG93Lmlu
dGVybmFscyBpcyBub3QgYXZhaWxhYmxlLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IC8vIE1ha2Ugc3VyZSB0aGVyZSBpcyBubyBlbm91Z2ggc3BhY2UgdG8gc2F2ZSBjb250ZW50IGlu
IHJlc291cmNlIGFnZW50J3Mgc3RvcmFnZS4KKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW5z
cGVjdG9yUmVzb3VyY2VzRGF0YVNpemVMaW1pdHMoMTAwLCAxMDApOworCisgICAgaW1hZ2UgPSBu
ZXcgSW1hZ2UoKTsKKyAgICBpbWFnZS5vbmxvYWQgPSBmaXJzdEltYWdlTG9hZGVkOworICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UpOworICAgIGltYWdlLnNyYyA9ICJyZXNvdXJj
ZXMvcmVzb3VyY2UucGhwP3R5cGU9aW1hZ2UmcmFuZG9tPTEmc2l6ZT00MDAiOworfQorCitmdW5j
dGlvbiBmaXJzdEltYWdlTG9hZGVkKCkKK3sKKyAgICBjb25zb2xlLmxvZygiRG9uZTEuIik7Cit9
CisKK2Z1bmN0aW9uIGxvYWRTZWNvbmRJbWFnZSgpIHsKKyAgICBpbWFnZS5vbmxvYWQgPSBzZWNv
bmRJbWFnZUxvYWRlZDsKKyAgICBpbWFnZS5zcmMgPSAicmVzb3VyY2VzL3Jlc291cmNlLnBocD90
eXBlPWltYWdlJnJhbmRvbT0xJnNpemU9MjAwIjsKK30KKworZnVuY3Rpb24gc2Vjb25kSW1hZ2VM
b2FkZWQoKQoreworICAgIGNvbnNvbGUubG9nKCJEb25lMi4iKTsKK30KKworZnVuY3Rpb24gZm9y
Y2VDYWNoZWRSZXNvdXJjZUxvYWRlckdDKCkgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLmdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMo
KTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGltYWdlUmVxdWVzdDsKKyAgICBJ
bnNwZWN0b3JUZXN0LmFkZENvbnNvbGVTbmlmZmVyKHN0ZXAyKTsKKyAgICBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5QYWdlKCJsb2FkRmlyc3RJbWFnZSgpIik7CisKKyAgICBmdW5jdGlvbiBzdGVw
MigpCisgICAgeworICAgICAgICBpbWFnZVJlcXVlc3QgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5l
dHdvcmsucmVxdWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3RzLmxlbmd0
aCAtIDFdOworICAgICAgICBpbWFnZVJlcXVlc3QucmVxdWVzdENvbnRlbnQoc3RlcDMpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KGltYWdlUmVxdWVzdC51cmwpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgicmVxdWVzdC50eXBlOiAiICsgaW1hZ2VSZXF1ZXN0LnR5cGUpOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVxdWVzdC5jb250ZW50Lmxlbmd0aCBhZnRlciByZXF1ZXN0
aW5nIGNvbnRlbnQ6ICIgKyBpbWFnZVJlcXVlc3QuY29udGVudC5sZW5ndGgpOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydFRydWUoaW1hZ2VSZXF1ZXN0LmNvbnRlbnQubGVuZ3RoID4gMCwg
Ik5vIGNvbnRlbnQgYmVmb3JlIGRlc3Ryb3lpbmcgQ2FjaGVkUmVzb3VyY2UuIik7CisKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlJlbGVhc2luZyBjYWNoZWQgcmVzb3VyY2UuIik7
CisgICAgICAgIC8vIExvYWRpbmcgYW5vdGhlciBpbWFnZSB0byB0aGUgc2FtZSBpbWFnZSBlbGVt
ZW50IHNvIHRoYXQgdGhlIG9yaWdpbmFsIGltYWdlIGNhY2hlZCByZXNvdXJjZSBpcyByZWxlYXNl
ZC4KKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRDb25zb2xlU25pZmZlcihzdGVwNCk7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImxvYWRTZWNvbmRJbWFnZSgpIik7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQobXNnKQorICAgIHsKKyAgICAgICAgLy8gRGlzYWJs
ZS1lbmFibGUgY2FjaGUgdG8gZm9yY2UgTWVtb3J5Q2FjaGU6OmV2aWN0UmVzb3VyY2VzKCkuCisg
ICAgICAgIE5ldHdvcmtBZ2VudC5zZXRDYWNoZURpc2FibGVkKHRydWUsIHN0ZXA1KTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBzdGVwNShtc2cpCisgICAgeworICAgICAgICBOZXR3b3JrQWdlbnQu
c2V0Q2FjaGVEaXNhYmxlZChmYWxzZSwgc3RlcDYpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0
ZXA2KCkKKyAgICB7CisgICAgICAgIC8vIEZvcmNlIENhY2hlZFJlc291cmNlTG9hZGVyIGdhcmJh
Z2UgY29sbGVjdG9yIHJ1bi4KKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgi
Zm9yY2VDYWNoZWRSZXNvdXJjZUxvYWRlckdDKCkiKTsKKworICAgICAgICAvLyBSZS1yZXF1ZXN0
IGNvbnRlbnQgbm93IHRoYXQgQ2FjaGVkUmVzb3VyY2Ugc2hvdWxkIGhhdmUgYmVlbiBkZXN0cm95
ZWQuCisgICAgICAgIGRlbGV0ZSBpbWFnZVJlcXVlc3QuX2NvbnRlbnQ7CisgICAgICAgIGltYWdl
UmVxdWVzdC5yZXF1ZXN0Q29udGVudChzdGVwNyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3Rl
cDcoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlcXVlc3QuY29u
dGVudCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6ICIgKyBpbWFnZVJlcXVlc3QuY29udGVudCk7
CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZSghaW1hZ2VSZXF1ZXN0LmNvbnRlbnQs
ICJDb250ZW50IGF2YWlsYWJsZSBhZnRlciBDYWNoZWRSZXNvdXJjZSB3YXMgZGVzdHJveWVkLiIp
OworICAgICAgICBJbnNwZWN0b3JUZXN0LnJlc2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YShzdGVw
OCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDgoKQorICAgIHsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3RzIGNhY2hlZCByZXNvdXJjZSBjb250ZW50
IGlzIGRpc2NhcmRlZCB3aGVuIGNhY2hlZCByZXNvdXJjZSBpcyBkZXN0cm95ZWQgaWYgY29udGVu
dCBzaXplIGlzIHRvbyBiaWcgZm9yIHRoZSByZXNvdXJjZSBhZ2VudCdzIGRhdGEgc3RvcmFnZS48
L3A+Cis8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIx
MDgiPkJ1ZyA5MjEwODwvYT4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvQ2hhbmdl
TG9nIGIvQ2hhbmdlTG9nCmluZGV4IGZjMjEzOWViYjZhOTZkMmI4NTFjZmYxYzg2YjI5YTdjMWE1
Yzk4MTAuLjJlNmRiNTNlYTM5ODVjOTEzYjRiNjJiOGI1MmY1NWRkYjI0YzhkZjggMTAwNjQ0Ci0t
LSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNy0y
OSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBSZXNvdXJjZSBhZ2VudCdzIHJlZmVyZW5jZSB0byBjYWNoZWQgcmVzb3VyY2Vz
IHNob3VsZCBiZSB3ZWFrLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTIxMDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKKzIwMTItMDctMjcg
IHZzZXZpa0BjaHJvbWl1bS5vcmcgIDx2c2V2aWtAY2hyb21pdW0ub3JnQDI2OGY0NWNjLWNkMDkt
MDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXNvdXJj
ZSBhZ2VudCdzIHJlZmVyZW5jZSB0byBjYWNoZWQgcmVzb3VyY2VzIHNob3VsZCBiZSB3ZWFrLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIxMDgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgorCisgICAgICAgICogU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMi0wNy0yNiAgRGFuIEJlcm5zdGVpbiAgPG1p
dHpAYXBwbGUuY29tPgogCiAgICAgICAgIFdoZW4gU2FmYXJpIDYgaXMgbGF1bmNoZWQgdmlhIHRo
ZSBXZWJLaXQgWGNvZGUgd29ya3NwYWNlLCBpdCBkb2VzIG5vdCBsaW5rIGFnYWluc3QgdGhlIGJ1
aWx0IGZyYW1ld29ya3MK
</data>

          </attachment>
      

    </bug>

</bugzilla>