<?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>96730</bug_id>
          
          <creation_ts>2012-09-13 23:21:46 -0700</creation_ts>
          <short_desc>Web Inspector: do not use InspectorInstrumentation::hasFrontends() check when collecting stacks</short_desc>
          <delta_ts>2012-10-01 02:41:11 -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>97921</dependson>
          <blocked>94433</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>aandrey</cc>
    
    <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>mkwst</cc>
    
    <cc>pfeldman</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>720350</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-09-13 23:21:46 -0700</bug_when>
    <thetext>We should instead check for the corresponding agents to be enabled (network, timeline).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727591</commentid>
    <comment_count>1</comment_count>
      <attachid>165604</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-09-25 06:55:21 -0700</bug_when>
    <thetext>Created attachment 165604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727603</commentid>
    <comment_count>2</comment_count>
      <attachid>165604</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-09-25 07:06:21 -0700</bug_when>
    <thetext>Comment on attachment 165604
Patch

Attachment 165604 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/14032091</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727607</commentid>
    <comment_count>3</comment_count>
      <attachid>165604</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-25 07:07:17 -0700</bug_when>
    <thetext>Comment on attachment 165604
Patch

Attachment 165604 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14006511</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727611</commentid>
    <comment_count>4</comment_count>
      <attachid>165604</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-25 07:09:12 -0700</bug_when>
    <thetext>Comment on attachment 165604
Patch

Attachment 165604 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14035066</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727612</commentid>
    <comment_count>5</comment_count>
      <attachid>165604</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-25 07:10:51 -0700</bug_when>
    <thetext>Comment on attachment 165604
Patch

Attachment 165604 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14021123</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727613</commentid>
    <comment_count>6</comment_count>
      <attachid>165604</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-25 07:11:10 -0700</bug_when>
    <thetext>Comment on attachment 165604
Patch

Attachment 165604 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14006512</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727619</commentid>
    <comment_count>7</comment_count>
      <attachid>165604</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-25 07:16:51 -0700</bug_when>
    <thetext>Comment on attachment 165604
Patch

Attachment 165604 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14036037</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727620</commentid>
    <comment_count>8</comment_count>
      <attachid>165604</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-25 07:16:55 -0700</bug_when>
    <thetext>Comment on attachment 165604
Patch

Attachment 165604 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14035068</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727622</commentid>
    <comment_count>9</comment_count>
      <attachid>165604</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-25 07:18:27 -0700</bug_when>
    <thetext>Comment on attachment 165604
Patch

Attachment 165604 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14027115</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727637</commentid>
    <comment_count>10</comment_count>
      <attachid>165612</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-09-25 07:38:06 -0700</bug_when>
    <thetext>Created attachment 165612
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727657</commentid>
    <comment_count>11</comment_count>
      <attachid>165612</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-09-25 08:12:56 -0700</bug_when>
    <thetext>Comment on attachment 165612
Patch

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

&gt; Source/WebCore/inspector/InspectorCanvasAgent.h:67
&gt; +    bool enabled() { return m_enabled; }

plz remove this. CanvasAgent is enabled if it has been set in the InstrumentingAgents. e.g. the canvasAgentEnabled() check resemble to the timelineAgentEnabled(), rather than consoleAgentEnabled()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727658</commentid>
    <comment_count>12</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-09-25 08:13:43 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 165612 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165612&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorCanvasAgent.h:67
&gt; &gt; +    bool enabled() { return m_enabled; }
&gt; 
&gt; plz remove this. CanvasAgent is enabled if it has been set in the InstrumentingAgents. e.g. the canvasAgentEnabled() check resemble to the timelineAgentEnabled(), rather than consoleAgentEnabled()

*resemble -&gt; should resemble</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727668</commentid>
    <comment_count>13</comment_count>
      <attachid>165617</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-09-25 08:29:13 -0700</bug_when>
    <thetext>Created attachment 165617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729407</commentid>
    <comment_count>14</comment_count>
      <attachid>165617</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 04:18:07 -0700</bug_when>
    <thetext>Comment on attachment 165617
Patch

Clearing flags on attachment: 165617

Committed r129751: &lt;http://trac.webkit.org/changeset/129751&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729408</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 04:18:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729638</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-27 09:58:03 -0700</bug_when>
    <thetext>Mike, this patch might effect your eval stack collection patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730746</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-28 09:41:57 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 97921</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730754</commentid>
    <comment_count>18</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-28 09:49:12 -0700</bug_when>
    <thetext>This patched weas rolled out due to crashes, see http://code.google.com/p/chromium/issues/detail?id=152947

I think this might have been caused by the lack of the non-null check of instrumentingAgentsForContext(scriptExecutionContext) in 

    return instrumentingAgentsForContext(scriptExecutionContext)-&gt;inspectorTimelineAgent();

(InspectorInstrumentation.cpp:1165)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731518</commentid>
    <comment_count>19</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-10-01 02:41:11 -0700</bug_when>
    <thetext>Committed r130021: &lt;http://trac.webkit.org/changeset/130021&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165604</attachid>
            <date>2012-09-25 06:55:21 -0700</date>
            <delta_ts>2012-09-25 07:38:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96730-20120925175440.patch</filename>
            <type>text/plain</type>
            <size>46696</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZlMjMxOTFmNzZkYmVl
MGE4YzEwMDc4MDM0YWZiZTdlZGQyYTM3OC4uZDQ1MjZiNzMwOTdlZjc3NjI2YjM0YTEwM2E5YWM1
MDIyNTk3MjE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0wOS0yNSAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBkbyBub3QgdXNlIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkg
Y2hlY2sgd2hlbiBjb2xsZWN0aW5nIHN0YWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY3MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAtIEludHJvZHVjZWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojpjb25zb2xlfHRpbWVsaW5lfHJ1bnRpbWV8Y2FudmFzQWdlbnRFbmFibGVkCisgICAgICAgIC0g
VXNpbmcgaXQgYWxsIG92ZXIgdGhlIHBsYWNlIGluc3RlYWQgb2YgdGhlIGhhc0Zyb250ZW5kICh0
aGUgbGF0dGVyIGlzIG5vdyBvbmx5IHVzZWQgb25jZSB0byBndWFyZCBob3QgcGF0aCkKKyAgICAg
ICAgLSBJbnRyb2R1Y2VkIGV4cGxpY2l0ICJlbmFibGVkIiBzdGF0ZSBvZiB0aGUgY29uc29sZSBh
bmQgcnVudGltZSBhZ2VudHMKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0Vs
ZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6
Z2V0Q29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU01haW5UaHJlYWRFeGVjU3RhdGU6Omluc3RydW1lbnRG
dW5jdGlvbkNhbGwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRl
Q2FsbFdpdGgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
OgorICAgICAgICAoR2VuZXJhdGVDYWxsV2l0aCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0QXJn
dW1lbnRzQW5kQ2FsbFN0YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0ckdldHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxT
dGFja0F0dHJpYnV0ZUF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tDYWxsYmFjayk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmNhbGxGdW5jdGlvbldpdGhJbnN0cnVtZW50YXRpb24pOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhET01XaW5kb3dTaGVsbDo6c2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXI6OmNhbGxMaXN0ZW5l
ckZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93U2V0VGltZW91dEltcGwpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRDYWxsYmFjayk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXRUaW1lb3V0T3JJbnRlcnZhbCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb25z
b2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29uc29sZUFnZW50OjpjbGVhck1lc3NhZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6Y2xlYXJGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OmVuYWJsZWQpOgorICAgICAgICAoSW5zcGVjdG9yQ29uc29sZUFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYW52
YXNBZ2VudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpjb25zb2xlQWdlbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6cnVudGltZUFnZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnRpbWVsaW5lQWdlbnRFbmFibGVkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpjYW52YXNBZ2VudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQWdlbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cnVudGltZUFnZW50RW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnRpbWVsaW5lQWdlbnRFbmFibGVk
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFnZW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUnVudGltZUFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKEluc3BlY3RvclJ1bnRp
bWVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwOgorICAg
ICAgICAoUGFnZVJ1bnRpbWVBZ2VudFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50
aW1lQWdlbnQ6OmNsZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVB
Z2VudDo6cmVzdG9yZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VSdW50aW1lQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFn
ZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmRpZENs
ZWFyV2luZG93T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmRp
ZENyZWF0ZUlzb2xhdGVkQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFn
ZW50OjpyZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rv
ci9QYWdlUnVudGltZUFnZW50Lmg6CisgICAgICAgIChQYWdlUnVudGltZUFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9S
dW50aW1lTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUnVudGltZU1vZGVsLnByb3Rv
dHlwZS5fZGlkTG9hZENhY2hlZFJlc291cmNlcyk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisKIDIwMTIt
MDktMjQgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogT3BlbiByZXNvdXJjZSBkaWFsb2cgaGFzIHRvbyBtYW55IGZhbHNlIHBv
c2l0aXZlIG1hdGNoZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCmluZGV4IDcyYmYzODZhMDY0ZjM2NDY1YzQ1
YTIwNTEwMDkxOGJjZDExZGMwNWYuLmU1OWM2YjNlNmY5ODhkZWJmNTIzNjY0N2VjNWM5NGE3NWZj
NzdhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZh
c0VsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCkBAIC03OCw3ICs3OCw3IEBAIEpTVmFsdWUgSlNIVE1M
Q2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFjb250
ZXh0KQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9K
UyhleGVjLCBnbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoY29udGV4dCkpOwotICAgIGlmIChJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpKSB7CisgICAgaWYgKEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6Y2FudmFzQWdlbnRFbmFibGVkKGNhbnZhcy0+ZG9jdW1lbnQo
KSkpIHsKICAgICAgICAgU2NyaXB0T2JqZWN0IGNvbnRleHRPYmplY3QoZXhlYywganNWYWx1ZS5n
ZXRPYmplY3QoKSk7CiAgICAgICAgIFNjcmlwdE9iamVjdCB3cmFwcGVkOwogICAgICAgICBpZiAo
Y29udGV4dC0+aXMyZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01h
aW5UaHJlYWRFeGVjU3RhdGUuaAppbmRleCAxMDljZThiOTI3ODQwODZmYjRmOWU1ZWEzNmYzMjBj
OWNkYTQ2M2UzLi4yZTk1NjlkNDRlMGQ4NWI5ODA3N2M4OWU1ZjIyMzk2MTg3YzU5NmMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUu
aApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgaW5saW5lIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSBpbnN0cnVtZW50RnVuY3Rpb25DYWxsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6
Q2FsbERhdGEmIGNhbGxEYXRhKQogICAgIHsKLSAgICAgICAgaWYgKCFJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246Omhhc0Zyb250ZW5kcygpKQorICAgICAgICBpZiAoIUluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6dGltZWxpbmVFbmFibGVkKGNvbnRleHQpKQogICAgICAgICAgICAgcmV0dXJuIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwogICAgICAgICBTdHJpbmcgcmVzb3VyY2VO
YW1lOwogICAgICAgICBpbnQgbGluZU51bWJlciA9IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCA3NjgyMDUxMGQxMjI2YzZkMjNkMTIx
ODY5MTJkZTQ2ZGJiOWE1NWQ5Li4yNmFhOWZiYmUyNzIzY2UzZWQ2ZTViNWEzY2IxZDU2MzMzYzMw
YjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5j
cHAKQEAgLTU1LDcgKzU1LDcgQEAgUGFzc093blB0cjxTY2hlZHVsZWRBY3Rpb24+IFNjaGVkdWxl
ZEFjdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgRE9NV3JhcHBlclcKICAgICBKU1ZhbHVl
IHYgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBpZiAo
Z2V0Q2FsbERhdGEodiwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkgewotICAgICAgICBSZWZQ
dHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9ySW5z
cGVjdG9yKGV4ZWMpKTsKKyAgICAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNr
KGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYykpOwogICAgICAgICBpZiAocG9s
aWN5ICYmICFwb2xpY3ktPmFsbG93RXZhbChjYWxsU3RhY2sucmVsZWFzZSgpKSkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBTdHJpbmcgc3RyaW5nID0gdi50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCmluZGV4IDRmYWVlZWQ4OTUyYWY5NzVmZTExOGY4
NjJhMzQ4ZmFlZmYwZThjOTcuLjE5M2Y2NGZkNThkYmNiMTEwZTIzM2JiNTYyNTVkZGQ3NjEyMjZk
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFj
a0ZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxT
dGFja0ZhY3RvcnkuY3BwCkBAIC0xMDQsMTIgKzEwNCwxMiBAQCBQYXNzUmVmUHRyPFNjcmlwdENh
bGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBzaXpl
X3QgbQogICAgIHJldHVybiBTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZShmcmFtZXMpOwogfQogCi1Q
YXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9ySW5zcGVj
dG9yKEpTQzo6RXhlY1N0YXRlKiBleGVjKQorUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNy
ZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgc2l6ZV90IG1heFN0YWNrU2l6ZSA9IDE7CiAgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aGFzRnJvbnRlbmRzKCkpIHsKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAg
ICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRGb3JTY3JpcHRDb250
ZXh0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKQorICAgICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpjb25zb2xlQWdlbnRFbmFibGVkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKQog
ICAgICAgICAgICAgbWF4U3RhY2tTaXplID0gU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tT
aXplVG9DYXB0dXJlOwogICAgIH0KICAgICByZXR1cm4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGV4
ZWMsIG1heFN0YWNrU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgKaW5kZXggNjg5ZDE2NTM5YWI0OGExNGRhYjc0NDcwMWJj
MzMyYmZlYTU5YTk5ZS4uNmU5NGIwM2UxZWEyOGM5OGY1NmZiMWI2MmYxYjVlZDhjMWRkOTE1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0Zh
Y3RvcnkuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiAKIFBhc3NS
ZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2soc2l6ZV90IG1heFN0
YWNrU2l6ZSwgYm9vbCBlbXB0eVN0YWNrSXNBbGxvd2VkKTsKIFBhc3NSZWZQdHI8U2NyaXB0Q2Fs
bFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNDOjpFeGVjU3RhdGUqLCBzaXplX3QgbWF4
U3RhY2tTaXplKTsKLVBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxs
U3RhY2tGb3JJbnNwZWN0b3IoSlNDOjpFeGVjU3RhdGUqKTsKK1Bhc3NSZWZQdHI8U2NyaXB0Q2Fs
bFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKEpTQzo6RXhlY1N0YXRlKik7
CiBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gY3JlYXRlU2NyaXB0QXJndW1lbnRzKEpTQzo6
RXhlY1N0YXRlKiwgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCmluZGV4IGUzNzY2ZDNiYTc2NDRmYzIyMDFmMDQ2MWY4Mjc4NGI1Njc1OWIx
NmUuLjY1OTE0YjU2ODc3ZjY1Y2ExZDkwY2Y2OTU1MjZjMWNmNjY1ZDkxMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0y
NTg4LDcgKzI1ODgsNyBAQCBzdWIgR2VuZXJhdGVDYWxsV2l0aAogICAgICAgICBwdXNoKEBjYWxs
V2l0aEFyZ3MsICJzY3JpcHRBcmd1bWVudHMiKTsKICAgICB9CiAgICAgaWYgKCRjb2RlR2VuZXJh
dG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRjYWxsV2l0aCwgIkNhbGxTdGFjayIpKSB7
Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
PiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9ySW5zcGVjdG9yKGV4ZWMpKTtcbiIp
OworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFj
az4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYykpO1xuIik7
CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IlNjcmlwdENhbGxTdGFjay5oIn0gPSAxOwogICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgifSA9IDE7CiAgICAgICAg
IHB1c2goQGNhbGxXaXRoQXJncywgImNhbGxTdGFjayIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCAwNjgxMDU2MDA2MzIx
Y2JhMjE3MDAyNDUzOGFiZDAxNzVmZDJhMGUyLi44NmQzZWI2OGU5YjI3MDA0OTQ3MTZhN2I1YjUz
MjAxZjExMmY2ODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMTYwOCw3ICsxNjA4LDcgQEAgc3ViIEdlbmVyYXRlQ2Fs
bFdpdGgKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNjcmlwdEFyZ3VtZW50cy5oIik7CiAg
ICAgfQogICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygk
Y2FsbFdpdGgsICJDYWxsU3RhY2siKSkgewotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRp
bmRlbnQgLiAiUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENh
bGxTdGFja0Zvckluc3BlY3RvcigpKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICRpbmRlbnQgLiAiUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlw
dENhbGxTdGFja0ZvckNvbnNvbGUoKSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAkaW5kZW50IC4gImlmICghY2FsbFN0YWNrKVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgJGluZGVudCAuICIgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7XG4iKTsKICAgICAgICAg
cHVzaChAY2FsbFdpdGhBcmdzLCAiY2FsbFN0YWNrIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGY0OGE5Yzgz
MzcwZjUzNGNmNTA4YWEzY2ZlY2FlMjU5NzY2N2VjNjcuLjkxODcxZDRiNzMxZTQ1NDdlNTgwOWY0
Y2RiZDVhMzAyM2I5ZGQ5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC03NjksNyArNzY5LDcgQEAgSlNWYWx1
ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNw
YWNlc0F0dHJpYnV0ZShFeGUKIEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0Fu
ZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0
T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKLSAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBj
YWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9ySW5zcGVjdG9yKGV4ZWMpKTsKKyAgICBS
ZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9y
Q29uc29sZShleGVjKSk7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoq
PihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC0+d2l0aFNjcmlwdEFy
Z3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShjYWxsU3RhY2spKSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKQEAgLTEyOTQsNyArMTI5NCw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFy
Z3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqCiAgICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8
VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgUmVmUHRyPFNjcmlwdENhbGxTdGFj
az4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0Zvckluc3BlY3RvcihleGVjKSk7Cisg
ICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFj
a0ZvckNvbnNvbGUoZXhlYykpOwogICAgIGltcGwtPnNldFdpdGhTY3JpcHRBcmd1bWVudHNBbmRD
YWxsU3RhY2tBdHRyaWJ1dGUoY2FsbFN0YWNrLCB0b1Rlc3RPYmoodmFsdWUpKTsKIH0KIApAQCAt
MTg1Niw3ICsxODU2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWwKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVz
dE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwog
ICAgIFJlZlB0cjxTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhjcmVhdGVTY3JpcHRB
cmd1bWVudHMoZXhlYywgMCkpOwotICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFj
ayhjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JJbnNwZWN0b3IoZXhlYykpOworICAgIFJlZlB0cjxT
Y3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xl
KGV4ZWMpKTsKICAgICBpbXBsLT53aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrKHNjcmlw
dEFyZ3VtZW50cywgY2FsbFN0YWNrKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCA1MDI0MjhhNzEwMGM1ZjcxNjYzY2Y1YzY5MTUx
NjlkOTcyMjE1NTM1Li41YzE2ZjhhN2MzODk5ZTQzZjBhZWYzYWFkNGRjMTUxZmJiNjYxNzFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T2JqLmNwcApAQCAtNzEwLDcgKzcxMCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJHZXR0ZXIoCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0
YWNrQXR0cmlidXRlLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFj
ayhjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JJbnNwZWN0b3IoKSk7CisgICAgUmVmUHRyPFNjcmlw
dENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoKSk7
CiAgICAgaWYgKCFjYWxsU3RhY2spCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAg
IHJldHVybiB0b1Y4KGltcC0+d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0
ZShjYWxsU3RhY2spLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CkBAIC03MjEs
NyArNzIxLDcgQEAgc3RhdGljIHZvaWQgd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0
dHJpYnV0ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHIKICAgICBJTkNfU1RBVFMoIkRPTS5U
ZXN0T2JqLndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUuX3NldCIpOwog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAg
ICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUpID8gVjhUZXN0T2Jq
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOwotICAg
IFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2tG
b3JJbnNwZWN0b3IoKSk7CisgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNy
ZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoKSk7CiAgICAgaWYgKCFjYWxsU3RhY2spCiAg
ICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAgIGltcC0+c2V0V2l0aFNjcmlwdEFyZ3Vt
ZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShjYWxsU3RhY2ssIFdURjo6Z2V0UHRyKHYpKTsKQEAg
LTEzNTEsNyArMTM1MSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlw
dEFyZ3VtZW50c0FuZENhbGxTdGFja0NhbGxiYWNrKGNvbnN0IHY4OjpBCiAgICAgSU5DX1NUQVRT
KCJET00uVGVzdE9iai53aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrIik7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBSZWZQ
dHI8U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoY3JlYXRlU2NyaXB0QXJndW1lbnRz
KGFyZ3MsIDApKTsKLSAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRl
U2NyaXB0Q2FsbFN0YWNrRm9ySW5zcGVjdG9yKCkpOworICAgIFJlZlB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKCkpOwogICAgIGlm
ICghY2FsbFN0YWNrKQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICBpbXAtPndp
dGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2soc2NyaXB0QXJndW1lbnRzLCBjYWxsU3RhY2sp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tG
YWN0b3J5LmNwcAppbmRleCA1ZjMyYmEyMGUxNWZjNTcxMGI4OTA2ZTMzMWNhMDdmMDBiOGFhMTdl
Li5mNTZlZDMzZjdiY2RhNTg5NzIwNzIwODE0MTMwNDcxNGMxOGZlNzQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcApA
QCAtMTA1LDEyICsxMDUsMTIgQEAgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNj
cmlwdENhbGxTdGFjayhzaXplX3QgbWF4U3RhY2tTaXplLCBib29sIGVtcHQKICAgICByZXR1cm4g
Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKHN0YWNrVHJhY2UsIG1heFN0YWNrU2l6ZSwgZW1wdHlTdGFj
a0lzQWxsb3dlZCk7CiB9CiAKLVBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3Jp
cHRDYWxsU3RhY2tGb3JJbnNwZWN0b3IoKQorUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNy
ZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoKQogewogICAgIHNpemVfdCBtYXhTdGFja1Np
emUgPSAxOwogICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygp
KSB7CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgIGlmIChJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kRm9yU2NyaXB0Q29udGV4dChzY3JpcHRFeGVjdXRp
b25Db250ZXh0KSkKKyAgICAgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29s
ZUFnZW50RW5hYmxlZChzY3JpcHRFeGVjdXRpb25Db250ZXh0KSkKICAgICAgICAgICAgIG1heFN0
YWNrU2l6ZSA9IFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZTsKICAg
ICB9CiAgICAgcmV0dXJuIGNyZWF0ZVNjcmlwdENhbGxTdGFjayhtYXhTdGFja1NpemUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5o
CmluZGV4IDEzOGZjMzdjMzQ3NzY1MGI4ZWRjZTJmZjVmZWI2Mjk0MDBlZTA3NTIuLmU1NThlMWI4
OGE3ZjU0OGRiMWJmZDM1Mzk0NmNlNWIwZmNiMTM1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgY29uc3Qgdjg6OlN0YWNrVHJhY2U6OlN0YWNrVHJhY2VPcHRpb25zIHN0YWNrVHJhY2VPcHRp
b25zID0gc3RhdGljX2Nhc3Q8djg6OlN0YWMKIAogUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+
IGNyZWF0ZVNjcmlwdENhbGxTdGFjayh2ODo6SGFuZGxlPHY4OjpTdGFja1RyYWNlPiwgc2l6ZV90
IG1heFN0YWNrU2l6ZSk7CiBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0
Q2FsbFN0YWNrKHNpemVfdCBtYXhTdGFja1NpemUsIGJvb2wgZW1wdHlTdGFja0lzQWxsb3dlZCA9
IGZhbHNlKTsKLVBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3Rh
Y2tGb3JJbnNwZWN0b3IoKTsKK1Bhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3Jp
cHRDYWxsU3RhY2tGb3JDb25zb2xlKCk7CiBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gY3Jl
YXRlU2NyaXB0QXJndW1lbnRzKGNvbnN0IHY4OjpBcmd1bWVudHMmIHY4YXJndW1lbnRzLCB1bnNp
Z25lZCBza2lwQXJndW1lbnRDb3VudCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNDgw
MGFkZTkxNGUyMDIxOGNlOWJmMzg3YWIxZWQ3YWY1Mjk5NWZlOS4uMmZjYWNhNjJjOGFkNDJhNmYx
YjQxMmE5MjZkMDI4ZGJmN2NiOWQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCB2ODo6TG9jYWw8djg6
OlZhbHVlPiBTY3JpcHRDb250cm9sbGVyOjpjYWxsRnVuY3Rpb25XaXRoSW5zdHJ1bWVudGF0aW9u
KFNjcmlwdEV4ZQogICAgICAgICByZXR1cm4gaGFuZGxlTWF4UmVjdXJzaW9uRGVwdGhFeGNlZWRl
ZCgpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZTsKLSAgICBp
ZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSAmJiBjb250ZXh0KSB7
CisgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dGltZWxpbmVBZ2VudEVuYWJsZWQo
Y29udGV4dCkpIHsKICAgICAgICAgU3RyaW5nIHJlc291cmNlTmFtZTsKICAgICAgICAgaW50IGxp
bmVOdW1iZXI7CiAgICAgICAgIHJlc291cmNlSW5mbyhmdW5jdGlvbiwgcmVzb3VyY2VOYW1lLCBs
aW5lTnVtYmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9N
V2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dT
aGVsbC5jcHAKaW5kZXggODFlYTIxYTNiOGVkNTRmM2E3YWU2Mjc1MDY3Y2YyMmFkMmM2OGI0OC4u
MTkzNmFlOGQwYTRiODNkYTEwNGJjZDFlNWM5NDUyY2EzYzczOTQ4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKQEAgLTYxMSw3ICs2MTEs
NyBAQCB2b2lkIFY4RE9NV2luZG93U2hlbGw6OnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdp
bihQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPgogewogICAgIEFTU0VSVCghbV93b3JsZC0+aXNN
YWluV29ybGQoKSk7CiAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIGhlcmU/Ci0gICAgaWYg
KCFtX2lzb2xhdGVkV29ybGRTaGVsbFNlY3VyaXR5T3JpZ2luICYmICFjb250ZXh0KCkuSXNFbXB0
eSgpICYmIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpIHsKKyAgICBp
ZiAoIW1faXNvbGF0ZWRXb3JsZFNoZWxsU2VjdXJpdHlPcmlnaW4gJiYgIWNvbnRleHQoKS5Jc0Vt
cHR5KCkgJiYgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpydW50aW1lQWdlbnRFbmFibGVkKG1f
ZnJhbWUpKSB7CiAgICAgICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICAgICAg
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gU2NyaXB0U3RhdGU6OmZvckNvbnRleHQodjg6Okxv
Y2FsPHY4OjpDb250ZXh0Pjo6TmV3KGNvbnRleHQoKSkpOwogICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZENyZWF0ZUlzb2xhdGVkQ29udGV4dChtX2ZyYW1lLCBzY3JpcHRTdGF0
ZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcAppbmRleCA2MjE0
MWQ2NzY0MzNkM2IxN2I4ODQwYmIwMGIzMzVmZjNkY2VhNDU2Li5kOWJiOTU1NDU0NDQ3ZDhmYjcw
NTg5NTU5YTNhMDU5MDE3MWNjYzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcApAQCAtOTUsNyAr
OTUsNyBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVy
OjpjYWxsTGlzdGVuZXJGdW5jdGlvbihTY3JpcHRFeAogICAgICAgICByZXR1cm4gdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4oKTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29r
aWU7Ci0gICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpIHsK
KyAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp0aW1lbGluZUFnZW50RW5hYmxlZChj
b250ZXh0KSkgewogICAgICAgICBTdHJpbmcgcmVzb3VyY2VOYW1lKCJ1bmRlZmluZWQiKTsKICAg
ICAgICAgaW50IGxpbmVOdW1iZXIgPSAxOwogICAgICAgICB2ODo6U2NyaXB0T3JpZ2luIG9yaWdp
biA9IGhhbmRsZXJGdW5jdGlvbi0+R2V0U2NyaXB0T3JpZ2luKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRl
eCAwYjQ2OGQ0YmVmN2UyZTNiY2Q0ZWIzNDlkYTg4MmNhMDliODY2ZDVmLi4xYTkxNzA1ODEyODdj
MGQxYjFjNDAzMTljMGViZjczN2U0Y2FlOTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTEyOCw3ICsx
MjgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2luZG93U2V0VGltZW91dEltcGwoY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogCiAgICAgICAgIGlkID0gRE9NVGltZXI6
Omluc3RhbGwoc2NyaXB0Q29udGV4dCwgYWN0aW9uLnJlbGVhc2UoKSwgdGltZW91dCwgc2luZ2xl
U2hvdCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2Fs
bFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0Zvckluc3BlY3RvcigpKTsKKyAgICAgICAgUmVm
UHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNv
bnNvbGUoKSk7CiAgICAgICAgIGlmIChpbXAtPmRvY3VtZW50KCkgJiYgIWltcC0+ZG9jdW1lbnQo
KS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93RXZhbChjYWxsU3RhY2sucmVsZWFzZSgp
KSkKICAgICAgICAgICAgIHJldHVybiB2OEludGVnZXIoMCwgYXJncy5HZXRJc29sYXRlKCkpOwog
ICAgICAgICBBU1NFUlQoaW1wLT5mcmFtZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNw
cAppbmRleCBhNmZiMjJhNDQxYjk0ZjA4ZjVjYmE1NTVlOTk4ZTdlMDYyYmI1MzQyLi4xNGFkNGFi
YWNiMTA4NGQ5YjAyN2JkYWJiMDFmZTI5MWUyMzFhMmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRD
dXN0b20uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxD
YW52YXNFbGVtZW50OjpnZXRDb250ZXh0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50CiAgICAg
ICAgIHJldHVybiB2ODo6TnVsbChhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgZWxzZSBpZiAocmVz
dWx0LT5pczJkKCkpIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4UmVzdWx0ID0g
dG9WOChzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqPihyZXN1bHQpLCBhcmdz
LkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgICAgIGlmIChJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpKSB7CisgICAgICAgIGlmIChJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmNhbnZhc0FnZW50RW5hYmxlZChpbXAtPmRvY3VtZW50KCkpKSB7CiAgICAg
ICAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Zm9yQ29udGV4
dCh2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKTsKICAgICAgICAgICAgIFNjcmlwdE9iamVjdCBj
b250ZXh0KHNjcmlwdFN0YXRlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4UmVzdWx0
KSk7CiAgICAgICAgICAgICBTY3JpcHRPYmplY3Qgd3JhcHBlZCA9IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d3JhcENhbnZhczJEUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihp
bXAtPmRvY3VtZW50KCksIGNvbnRleHQpOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0Q2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50CiAgICAgICAgIHBlcklzb2xhdGVEYXRhLT5zZXRTaG91bGRDb2xsZWN0R2Fy
YmFnZVNvb24oKTsKIAogICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhSZXN1bHQgPSB0
b1Y4KHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KHJlc3VsdCksIGFyZ3MuSG9s
ZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICAgICAgaWYgKEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpIHsKKyAgICAgICAgaWYgKEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6Y2FudmFzQWdlbnRFbmFibGVkKGltcC0+ZG9jdW1lbnQoKSkpIHsKICAgICAgICAg
ICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpmb3JDb250ZXh0KHY4
OjpDb250ZXh0OjpHZXRDdXJyZW50KCkpOwogICAgICAgICAgICAgU2NyaXB0T2JqZWN0IGdsQ29u
dGV4dChzY3JpcHRTdGF0ZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OFJlc3VsdCkp
OwogICAgICAgICAgICAgU2NyaXB0T2JqZWN0IHdyYXBwZWQgPSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oaW1wLT5k
b2N1bWVudCgpLCBnbENvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAppbmRleCA4OWVjZGM5
ODY3OWU4MzViNmMyZmY3NmM1YzUzMGUwNjJhZTYzYjk4Li5jYTkzNTMzNzk3ZDRjYzU4YjkxNTRj
NmRhNTdlOTJkM2ZmOTJmNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApAQCAtNjcsNyArNjcs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2V0VGltZW91dE9ySW50ZXJ2YWwoY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IHY4Q29udGV4dCA9IHByb3h5LT5jb250ZXh0KCk7CiAgICAgaWYgKGZ1bmN0aW9uLT5Jc1N0cmlu
ZygpKSB7CiAgICAgICAgIGlmIChDb250ZW50U2VjdXJpdHlQb2xpY3kqIHBvbGljeSA9IHdvcmtl
ckNvbnRleHQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8
U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2sgPSBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JJbnNw
ZWN0b3IoKTsKKyAgICAgICAgICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayA9
IGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoKTsKICAgICAgICAgICAgIGlmICghcG9s
aWN5LT5hbGxvd0V2YWwoY2FsbFN0YWNrLnJlbGVhc2UoKSkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHY4SW50ZWdlcigwLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA1YzE4ZGFkOTU1MWVjMjMyODk4M2Fj
ZjE4MmY5NjYxZmY4ZTc2NjY3Li44NzM2MzcwN2IyZDI4MmZlYWQxMTEyMjhlZjA1YWU4YTcyMDhi
YjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24K
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC01ODksMTQg
KzU4OSwxNSBAQAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUZWxscyBpbnNwZWN0
ZWQgaW5zdGFuY2Uod29ya2VyIG9yIHBhZ2UpIHRoYXQgaXQgY2FuIHJ1biBpbiBjYXNlIGl0IHdh
cyBzdGFydGVkIHBhdXNlZC4iCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICJuYW1lIjogInNldFJlcG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlvbiIsCi0g
ICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiZW5hYmxlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiUmVwb3J0
aW5nIGVuYWJsZWQgc3RhdGUuIiB9Ci0gICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICAibmFtZSI6ICJlbmFibGUiLAorICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlLAorICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJFbmFibGVzIHJlcG9ydGluZyBvZiBleGVjdXRp
b24gY29udGV4dHMgY3JlYXRpb24gYnkgbWVhbnMgb2YgPGNvZGU+ZXhlY3V0aW9uQ29udGV4dENy
ZWF0ZWQ8L2NvZGU+IGV2ZW50LiBXaGVuIHRoZSByZXBvcnRpbmcgZ2V0cyBlbmFibGVkIHRoZSBl
dmVudCB3aWxsIGJlIHNlbnQgaW1tZWRpYXRlbHkgZm9yIGVhY2ggZXhpc3RpbmcgZXhlY3V0aW9u
IGNvbnRleHQuIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAibmFtZSI6ICJkaXNhYmxlIiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZSwKLSAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRW5hYmxlcyByZXBvcnRpbmcgYWJvdXQgY3Jl
YXRpb24gb2YgZXhlY3V0aW9uIGNvbnRleHRzIGJ5IG1lYW5zIG9mIDxjb2RlPmV4ZWN1dGlvbkNv
bnRleHRDcmVhdGVkPC9jb2RlPiBldmVudC4gV2hlbiB0aGUgcmVwb3J0aW5nIGdldHMgZW5hYmxl
ZCB0aGUgZXZlbnQgd2lsbCBiZSBzZW50IGltbWVkaWF0ZWx5IGZvciBlYWNoIGV4aXN0aW5nIGV4
ZWN1dGlvbiBjb250ZXh0LiIKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlzYWJs
ZXMgcmVwb3J0aW5nIG9mIGV4ZWN1dGlvbiBjb250ZXh0cyBjcmVhdGlvbi4iCiAgICAgICAgICAg
ICB9Ci0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6IFsKICAgICAgICAgICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAK
aW5kZXggYWNlYjJkYTRhZjZmODUzNTFmODhkOThjODNmNjk1ODA1NTgxNjJmYi4uZjU0NGIxNTg5
Zjk2ZWQyZmI1Y2NjYTY2ZDNiNTljZWEyZTIzNTI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUu
aCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmls
ZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTYwLDEyICs2MSwxNSBAQCBz
dGF0aWMgY29uc3QgY2hhciBtb25pdG9yaW5nWEhSW10gPSAibW9uaXRvcmluZ1hIUiI7CiBzdGF0
aWMgY29uc3QgY2hhciBjb25zb2xlTWVzc2FnZXNFbmFibGVkW10gPSAiY29uc29sZU1lc3NhZ2Vz
RW5hYmxlZCI7CiB9CiAKK2ludCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnNfZW5hYmxlZEFnZW50
Q291bnQgPSAwOworCiBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0
ZSogc3RhdGUsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQog
ICAgIDogSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckNvbnNvbGVBZ2VudD4oIkNvbnNvbGUi
LCBpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fZnJvbnRlbmQoMCkKICAgICAsIG1f
cHJldmlvdXNNZXNzYWdlKDApCiAgICAgLCBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50KDAp
CisgICAgLCBtX2VuYWJsZWQoZmFsc2UpCiB7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5z
ZXRJbnNwZWN0b3JDb25zb2xlQWdlbnQodGhpcyk7CiB9CkBAIC04MCw2ICs4NCwxMyBAQCBJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6On5JbnNwZWN0b3JDb25zb2xlQWdlbnQoKQogCiB2b2lkIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKIHsKKyAgICBpZiAobV9lbmFi
bGVkKQorICAgICAgICByZXR1cm47CisgICAgbV9lbmFibGVkID0gdHJ1ZTsKKyAgICBpZiAoIXNf
ZW5hYmxlZEFnZW50Q291bnQpCisgICAgICAgIFNjcmlwdENvbnRyb2xsZXI6OnNldENhcHR1cmVD
YWxsU3RhY2tGb3JVbmNhdWdodEV4Y2VwdGlvbnModHJ1ZSk7CisgICAgKytzX2VuYWJsZWRBZ2Vu
dENvdW50OworCiAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihDb25zb2xlQWdlbnRTdGF0ZTo6Y29u
c29sZU1lc3NhZ2VzRW5hYmxlZCwgdHJ1ZSk7CiAKICAgICBpZiAobV9leHBpcmVkQ29uc29sZU1l
c3NhZ2VDb3VudCkgewpAQCAtOTQsNiArMTA1LDExIEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFn
ZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6
ZGlzYWJsZShFcnJvclN0cmluZyopCiB7CisgICAgaWYgKCFtX2VuYWJsZWQpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2VuYWJsZWQgPSBmYWxzZTsKKyAgICBpZiAoISgtLXNfZW5hYmxlZEFnZW50
Q291bnQpKQorICAgICAgICBTY3JpcHRDb250cm9sbGVyOjpzZXRDYXB0dXJlQ2FsbFN0YWNrRm9y
VW5jYXVnaHRFeGNlcHRpb25zKGZhbHNlKTsKICAgICBtX3N0YXRlLT5zZXRCb29sZWFuKENvbnNv
bGVBZ2VudFN0YXRlOjpjb25zb2xlTWVzc2FnZXNFbmFibGVkLCBmYWxzZSk7CiB9CiAKQEAgLTEw
Myw3ICsxMTksNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y2xlYXJNZXNzYWdlcyhF
cnJvclN0cmluZyopCiAgICAgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCA9IDA7CiAgICAg
bV9wcmV2aW91c01lc3NhZ2UgPSAwOwogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5yZWxl
YXNlT2JqZWN0R3JvdXAoImNvbnNvbGUiKTsKLSAgICBpZiAobV9mcm9udGVuZCAmJiBtX3N0YXRl
LT5nZXRCb29sZWFuKENvbnNvbGVBZ2VudFN0YXRlOjpjb25zb2xlTWVzc2FnZXNFbmFibGVkKSkK
KyAgICBpZiAobV9mcm9udGVuZCAmJiBtX2VuYWJsZWQpCiAgICAgICAgIG1fZnJvbnRlbmQtPm1l
c3NhZ2VzQ2xlYXJlZCgpOwogfQogCkBAIC0xMzIsNyArMTQ4LDggQEAgdm9pZCBJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKIHZv
aWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpjbGVhckZyb250ZW5kKCkKIHsKICAgICBtX2Zyb250
ZW5kID0gMDsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKENvbnNvbGVBZ2VudFN0YXRlOjpjb25z
b2xlTWVzc2FnZXNFbmFibGVkLCBmYWxzZSk7CisgICAgU3RyaW5nIGVycm9yU3RyaW5nOworICAg
IGRpc2FibGUoJmVycm9yU3RyaW5nKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5
cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRy
PFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4g
Y2FsbFN0YWNrKQpAQCAtMjc5LDEyICsyOTYsMTIgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdl
bnQ6OmFkZENvbnNvbGVNZXNzYWdlKFBhc3NPd25QdHI8Q29uc29sZU1lc3NhZ2U+IGNvbnNvbGUK
IAogICAgIGlmIChtX3ByZXZpb3VzTWVzc2FnZSAmJiAhaXNHcm91cE1lc3NhZ2UobV9wcmV2aW91
c01lc3NhZ2UtPnR5cGUoKSkgJiYgbV9wcmV2aW91c01lc3NhZ2UtPmlzRXF1YWwoY29uc29sZU1l
c3NhZ2UuZ2V0KCkpKSB7CiAgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT5pbmNyZW1lbnRDb3Vu
dCgpOwotICAgICAgICBpZiAobV9mcm9udGVuZCAmJiBtX3N0YXRlLT5nZXRCb29sZWFuKENvbnNv
bGVBZ2VudFN0YXRlOjpjb25zb2xlTWVzc2FnZXNFbmFibGVkKSkKKyAgICAgICAgaWYgKG1fZnJv
bnRlbmQgJiYgbV9lbmFibGVkKQogICAgICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2UtPnVwZGF0
ZVJlcGVhdENvdW50SW5Db25zb2xlKG1fZnJvbnRlbmQpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IG1fcHJldmlvdXNNZXNzYWdlID0gY29uc29sZU1lc3NhZ2UuZ2V0KCk7CiAgICAgICAgIG1fY29u
c29sZU1lc3NhZ2VzLmFwcGVuZChjb25zb2xlTWVzc2FnZSk7Ci0gICAgICAgIGlmIChtX2Zyb250
ZW5kICYmIG1fc3RhdGUtPmdldEJvb2xlYW4oQ29uc29sZUFnZW50U3RhdGU6OmNvbnNvbGVNZXNz
YWdlc0VuYWJsZWQpKQorICAgICAgICBpZiAobV9mcm9udGVuZCAmJiBtX2VuYWJsZWQpCiAgICAg
ICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZS0+YWRkVG9Gcm9udGVuZChtX2Zyb250ZW5kLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlciwgdHJ1ZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKaW5kZXggNTJiZTExODE4MjUwMmZj
YzIwMDY1ZDY0ODljZTY2YjYyZDM2NDBhYi4uN2Y0MzM5MzEzYzM4MWUxNzM3NzUxODg0MmU2YjQy
ODIyMWY2MDRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b25zb2xlQWdlbnQuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3Ry
aW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyTWVzc2FnZXMoRXJyb3JTdHJpbmcqKTsKKyAg
ICBib29sIGVuYWJsZWQoKSB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAgICB2b2lkIHJlc2V0KCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKQEAg
LTEwMCw2ICsxMDEsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgaW50IG1fZXhwaXJlZENvbnNvbGVNZXNz
YWdlQ291bnQ7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBtX2NvdW50czsKICAgICBI
YXNoTWFwPFN0cmluZywgZG91YmxlPiBtX3RpbWVzOworICAgIGJvb2wgbV9lbmFibGVkOworcHJp
dmF0ZToKKyAgICBzdGF0aWMgaW50IHNfZW5hYmxlZEFnZW50Q291bnQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKaW5kZXggOWJkNDMzMTFmOTJiNmU5MDc2YmQ0MjAxZjVhMWZkODUwZGFl
YmRiMS4uN2Y4NmYwNDdlYzA2NTEzM2ZiZmYwNzNiNWM5ZDU5NGI1OGY2MjIwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMjIz
LDggKzIyMyw2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFuCiAgICAgZm9yIChBZ2VudHM6Oml0
ZXJhdG9yIGl0ID0gbV9hZ2VudHMuYmVnaW4oKTsgaXQgIT0gbV9hZ2VudHMuZW5kKCk7ICsraXQp
CiAgICAgICAgICgqaXQpLT5zZXRGcm9udGVuZChmcm9udGVuZCk7CiAKLSAgICBpZiAoIUluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpCi0gICAgICAgIFNjcmlwdENvbnRy
b2xsZXI6OnNldENhcHR1cmVDYWxsU3RhY2tGb3JVbmNhdWdodEV4Y2VwdGlvbnModHJ1ZSk7CiAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZENyZWF0ZWQoKTsKIAogICAgIEFT
U0VSVChtX2luc3BlY3RvckNsaWVudCk7CkBAIC0yNTIsOCArMjUwLDYgQEAgdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoKQogICAgIG1faW5zcGVjdG9yRnJvbnRl
bmQuY2xlYXIoKTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmREZWxl
dGVkKCk7Ci0gICAgaWYgKCFJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygp
KQotICAgICAgICBTY3JpcHRDb250cm9sbGVyOjpzZXRDYXB0dXJlQ2FsbFN0YWNrRm9yVW5jYXVn
aHRFeGNlcHRpb25zKGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKaW5kZXggZWIwNjA3MWU0NGY5ZTExMzliMmZmOTYzZjEwMjNjNzc4MmIwOWM3
OC4uZmMzMWIzYTJhZjViNzY0Njg3NTQ1ZThmZThlM2I3OGM3ODhiOGQzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
QEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ1NTQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDYW52YXNBZ2VudC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckNvbnNvbGVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCkBAIC0x
MTM0LDIzICsxMTM1LDM1IEBAIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb2xsZWN0
aW5nSFRNTFBhcnNlRXJyb3JzKEluc3RydW1lbnRpbmdBZ2VudHMqIGluCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRGb3JT
Y3JpcHRDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2FudmFzQWdlbnRFbmFibGVkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7Ci0gICAgaWYg
KCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCB8fCAhaGFzRnJvbnRlbmRzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBJbnNwZWN0
b3JDYW52YXNBZ2VudCogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4
dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KS0+aW5zcGVjdG9yQ2FudmFzQWdlbnQoKTsKKyAgICBy
ZXR1cm4gY2FudmFzQWdlbnQgJiYgY2FudmFzQWdlbnQtPmVuYWJsZWQoKTsKK30KIAotI2lmIEVO
QUJMRShXT1JLRVJTKQotICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc1dvcmtlckNv
bnRleHQoKSkgewotICAgICAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8V29ya2VyQ29udGV4dCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgICAgICBX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKiB3b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyID0gd29y
a2VyQ29udGV4dC0+d29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAgICAgICByZXR1cm4g
d29ya2VySW5zcGVjdG9yQ29udHJvbGxlciAmJiB3b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLT5o
YXNGcm9udGVuZCgpOwotICAgIH0KLSNlbmRpZgorYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmNvbnNvbGVBZ2VudEVuYWJsZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKK3sKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgIWhh
c0Zyb250ZW5kcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgSW5zcGVjdG9yQ29uc29s
ZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KS0+aW5zcGVjdG9yQ29uc29sZUFnZW50KCk7CisgICAgcmV0dXJu
IGNvbnNvbGVBZ2VudCAmJiBjb25zb2xlQWdlbnQtPmVuYWJsZWQoKTsKK30KIAotICAgIEFTU0VS
VChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7
Ci0gICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7Ci0gICAgcmV0dXJuIHBhZ2UgJiYg
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5oYXNGcm9udGVuZCgpOworYm9vbCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnJ1bnRpbWVBZ2VudEVuYWJsZWQoRnJhbWUqIGZyYW1lKQorewor
ICAgIGlmICghZnJhbWUgfHwgIWhhc0Zyb250ZW5kcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgSW5zcGVjdG9yUnVudGltZUFnZW50KiBydW50aW1lQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzRm9yRnJhbWUoZnJhbWUpLT5pbnNwZWN0b3JSdW50aW1lQWdlbnQoKTsKKyAgICByZXR1
cm4gcnVudGltZUFnZW50ICYmIHJ1bnRpbWVBZ2VudC0+ZW5hYmxlZCgpOworfQorCitib29sIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dGltZWxpbmVBZ2VudEVuYWJsZWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKK3sKKyAgICBpZiAoIXNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgfHwgIWhhc0Zyb250ZW5kcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBib29sIGlzRE9NRXZlbnQsIGNvbnN0IFN0cmlu
ZyYgZXZlbnROYW1lLCBib29sIHN5bmNocm9ub3VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDQwMGM0NDNiODRhOTBk
YWUwYmQ1ZjA4ODhhY2UyNmE4M2NkZjc4YTcuLjhkNTc4NTA0ZWQwNjIxNmYyNDY5MTI3Njc5Njcw
MDEyMGQ0OGYwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTI2MywxMSArMjYzLDE3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCBmcm9udGVuZENyZWF0ZWQoKSB7IHNfZnJvbnRlbmRDb3VudGVyICs9IDE7IH0K
ICAgICBzdGF0aWMgdm9pZCBmcm9udGVuZERlbGV0ZWQoKSB7IHNfZnJvbnRlbmRDb3VudGVyIC09
IDE7IH0KICAgICBzdGF0aWMgYm9vbCBoYXNGcm9udGVuZHMoKSB7IHJldHVybiBzX2Zyb250ZW5k
Q291bnRlcjsgfQotICAgIHN0YXRpYyBib29sIGhhc0Zyb250ZW5kRm9yU2NyaXB0Q29udGV4dChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIGJvb2wgY2FudmFzQWdlbnRFbmFi
bGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBzdGF0aWMgYm9vbCBjb25zb2xlQWdl
bnRFbmFibGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBzdGF0aWMgYm9vbCBydW50
aW1lQWdlbnRFbmFibGVkKEZyYW1lKik7CisgICAgc3RhdGljIGJvb2wgdGltZWxpbmVBZ2VudEVu
YWJsZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIHN0YXRpYyBib29sIGNvbGxlY3Rp
bmdIVE1MUGFyc2VFcnJvcnMoUGFnZSopOwogI2Vsc2UKICAgICBzdGF0aWMgYm9vbCBoYXNGcm9u
dGVuZHMoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRpYyBib29sIGhhc0Zyb250ZW5kRm9y
U2NyaXB0Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBzdGF0aWMgYm9vbCBjYW52YXNBZ2VudEVuYWJsZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wgY29uc29sZUFnZW50RW5hYmxl
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMg
Ym9vbCBydW50aW1lQWdlbnRFbmFibGVkKEZyYW1lKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBz
dGF0aWMgYm9vbCB0aW1lbGluZUFnZW50RW5hYmxlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kikg
eyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgYm9vbCBjb2xsZWN0aW5nSFRNTFBhcnNlRXJy
b3JzKFBhZ2UqKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggN2U0ZmQ0YjYy
MzZlM2JlNDkwMWI3M2YzMThkMGRmNzA4MDE3N2Q0NC4uYTNkZmRkZWM5MGE1OWY1MTU2ZWYyZGRk
NDEzNWM4NWY4OTQ4N2MxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgc3RhdGljIGJvb2wgYXNC
b29sKGNvbnN0IGJvb2wqIGNvbnN0IGIpCiAKIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVj
dG9yUnVudGltZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNj
cmlwdE1hbmFnZXIpCiAgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yUnVudGltZUFn
ZW50PigiUnVudGltZSIsIGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlKQorICAgICwgbV9lbmFi
bGVkKGZhbHNlKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKQogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgICwgbV9zY3JpcHRE
ZWJ1Z1NlcnZlcigwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5oCmluZGV4IGY4ZTM0NWUyYjdjMTU3ZjY2ZWQwMWU1MzQxOGE2NjlhNmI4NzVl
OTUuLjY2ZGJhZmQ2NWMyYjhmYjE0ODYzMGNlMDVjYTczMjdkOWRiNTMyMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKQEAgLTU3LDcg
KzU3LDEwIEBAIGNsYXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JC
YXNlQWdlbnQ8SW5zcGVjdG9yUnVudGltZUFnZW50PiwKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5J
bnNwZWN0b3JSdW50aW1lQWdlbnQoKTsKIAorICAgIGJvb2wgZW5hYmxlZCgpIHsgcmV0dXJuIG1f
ZW5hYmxlZDsgfQogICAgIC8vIFBhcnQgb2YgdGhlIHByb3RvY29sLgorICAgIHZpcnR1YWwgdm9p
ZCBlbmFibGUoRXJyb3JTdHJpbmcqKSB7IG1fZW5hYmxlZCA9IHRydWU7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopIHsgbV9lbmFibGVkID0gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZXZhbHVhdGUoRXJyb3JTdHJpbmcqLAogICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nKiBv
YmplY3RHcm91cCwKQEAgLTk1LDYgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9p
ZCB1bm11dGVDb25zb2xlKCkgPSAwOwogCiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoKSB7IHJldHVybiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsgfQor
ICAgIGJvb2wgbV9lbmFibGVkOwogCiBwcml2YXRlOgogICAgIEluamVjdGVkU2NyaXB0TWFuYWdl
ciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggMjU0OTU3YTdmMWZlNTQ4ODk5YTVhM2IyMWRmMTVm
ZGJjNWFhNzk0Mi4uNzRjM2I3ZmY5ZGI2MWI5YjU0MmM5YjJhNjAzNDk3ZWYzNjZkYjRkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcApAQCAtNTAs
NyArNTAsNyBAQCB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6RXhlY3V0aW9u
Q29udGV4dERlc2NyaXB0aW9uOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgUGFn
ZVJ1bnRpbWVBZ2VudFN0YXRlIHsKLXN0YXRpYyBjb25zdCBjaGFyIHJlcG9ydEV4ZWN1dGlvbkNv
bnRleHRDcmVhdGlvbltdID0gInJlcG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlvbiI7CitzdGF0
aWMgY29uc3QgY2hhciBydW50aW1lRW5hYmxlZFtdID0gInJ1bnRpbWVFbmFibGVkIjsKIH07CiAK
IFBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VSdW50aW1lQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBJbmplY3RlZFNjcmlw
dE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgUGFnZSogcGFnZSwgSW5zcGVjdG9yUGFn
ZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCkKQEAgLTc2
LDQ3ICs3Niw0NCBAQCB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQogewog
ICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0UGFnZVJ1bnRpbWVBZ2VudCgwKTsKICAgICBt
X2Zyb250ZW5kID0gMDsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VSdW50aW1lQWdlbnRT
dGF0ZTo6cmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9uLCBmYWxzZSk7CisgICAgU3RyaW5n
IGVycm9yU3RyaW5nOworICAgIGRpc2FibGUoJmVycm9yU3RyaW5nKTsKIH0KIAogdm9pZCBQYWdl
UnVudGltZUFnZW50OjpyZXN0b3JlKCkKIHsKLSAgICBpZiAoIW1fc3RhdGUtPmdldEJvb2xlYW4o
UGFnZVJ1bnRpbWVBZ2VudFN0YXRlOjpyZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24pKQor
ICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKFBhZ2VSdW50aW1lQWdlbnRTdGF0ZTo6cnVudGlt
ZUVuYWJsZWQpKSB7CisgICAgICAgIFN0cmluZyBlcnJvcjsKKyAgICAgICAgZW5hYmxlKCZlcnJv
cik7CisgICAgfQorfQorCit2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmVuYWJsZShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcpCit7CisgICAgaWYgKG1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwor
CisgICAgSW5zcGVjdG9yUnVudGltZUFnZW50OjplbmFibGUoZXJyb3JTdHJpbmcpOworICAgIG1f
c3RhdGUtPnNldEJvb2xlYW4oUGFnZVJ1bnRpbWVBZ2VudFN0YXRlOjpydW50aW1lRW5hYmxlZCwg
dHJ1ZSk7CiAgICAgLy8gT25seSByZXBvcnQgZXhpc3RpbmcgY29udGV4dHMgaWYgdGhlIHBhZ2Ug
ZGlkIGNvbW1pdCBsb2FkLCBvdGhlcndpc2Ugd2UgbWF5CiAgICAgLy8gdW5pbnRlbnRpb25hbGx5
IGluaXRpYWxpemUgY29udGV4dHMgaW4gdGhlIGZyYW1lcyB3aGljaCBtYXkgdHJpZ2dlciBzb21l
IGxpc3RlbmVycwogICAgIC8vIHRoYXQgYXJlIGV4cGVjdGVkIHRvIGJlIHRyaWdnZXJlZCBvbmx5
IGFmdGVyIHRoZSBsb2FkIGlzIGNvbW1pdHRlZCwgc2VlIGh0dHA6Ly9jcmJ1Zy5jb20vMTMxNjIz
Ci0gICAgaWYgKG1faW5zcGVjdG9yQWdlbnQtPmRpZENvbW1pdExvYWRGaXJlZCgpKSB7Ci0gICAg
ICAgIFN0cmluZyBlcnJvcjsKLSAgICAgICAgc2V0UmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0
aW9uKCZlcnJvciwgdHJ1ZSk7Ci0gICAgfQorICAgIGlmIChtX2luc3BlY3RvckFnZW50LT5kaWRD
b21taXRMb2FkRmlyZWQoKSkKKyAgICAgICAgcmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9u
KCk7CiB9CiAKLXZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6c2V0UmVwb3J0RXhlY3V0aW9uQ29udGV4
dENyZWF0aW9uKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGUpCit2b2lkIFBhZ2VSdW50aW1lQWdl
bnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQogewotICAgIG1fc3RhdGUtPnNl
dEJvb2xlYW4oUGFnZVJ1bnRpbWVBZ2VudFN0YXRlOjpyZXBvcnRFeGVjdXRpb25Db250ZXh0Q3Jl
YXRpb24sIGVuYWJsZSk7Ci0gICAgaWYgKCFlbmFibGUpCisgICAgaWYgKCFtX2VuYWJsZWQpCiAg
ICAgICAgIHJldHVybjsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFNjcmlwdFN0YXRlKiwgU2VjdXJp
dHlPcmlnaW4qPiA+IGlzb2xhdGVkQ29udGV4dHM7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBt
X2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LT50cmF2ZXJzZU5leHQoKSkgewotICAgICAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhl
Y3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIFN0cmluZyBmcmFtZUlkID0gbV9wYWdlQWdlbnQtPmZyYW1lSWQoZnJhbWUp
OwogCi0gICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZFNjcmlwdFN0
YXRlKGZyYW1lKTsKLSAgICAgICAgbm90aWZ5Q29udGV4dENyZWF0ZWQoZnJhbWVJZCwgc2NyaXB0
U3RhdGUsIDAsIHRydWUpOwotICAgICAgICBmcmFtZS0+c2NyaXB0KCktPmNvbGxlY3RJc29sYXRl
ZENvbnRleHRzKGlzb2xhdGVkQ29udGV4dHMpOwotICAgICAgICBpZiAoaXNvbGF0ZWRDb250ZXh0
cy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGk8IGlzb2xhdGVkQ29udGV4dHMuc2l6ZSgpOyBpKyspCi0gICAgICAgICAgICBub3Rp
ZnlDb250ZXh0Q3JlYXRlZChmcmFtZUlkLCBpc29sYXRlZENvbnRleHRzW2ldLmZpcnN0LCBpc29s
YXRlZENvbnRleHRzW2ldLnNlY29uZCwgZmFsc2UpOwotICAgICAgICBpc29sYXRlZENvbnRleHRz
LmNsZWFyKCk7Ci0gICAgfQorICAgIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZGlzYWJsZShlcnJv
clN0cmluZyk7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQYWdlUnVudGltZUFnZW50U3RhdGU6
OnJ1bnRpbWVFbmFibGVkLCBmYWxzZSk7CiB9CiAKIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlk
Q2xlYXJXaW5kb3dPYmplY3QoRnJhbWUqIGZyYW1lKQogewotICAgIGlmICghbV9zdGF0ZS0+Z2V0
Qm9vbGVhbihQYWdlUnVudGltZUFnZW50U3RhdGU6OnJlcG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVh
dGlvbikpCisgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQo
bV9mcm9udGVuZCk7CiAgICAgU3RyaW5nIGZyYW1lSWQgPSBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChm
cmFtZSk7CkBAIC0xMjYsNyArMTIzLDcgQEAgdm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRDbGVh
cldpbmRvd09iamVjdChGcmFtZSogZnJhbWUpCiAKIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlk
Q3JlYXRlSXNvbGF0ZWRDb250ZXh0KEZyYW1lKiBmcmFtZSwgU2NyaXB0U3RhdGUqIHNjcmlwdFN0
YXRlLCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewotICAgIGlmICghbV9zdGF0ZS0+Z2V0Qm9v
bGVhbihQYWdlUnVudGltZUFnZW50U3RhdGU6OnJlcG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlv
bikpCisgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQobV9m
cm9udGVuZCk7CiAgICAgU3RyaW5nIGZyYW1lSWQgPSBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChmcmFt
ZSk7CkBAIC0xNTUsNiArMTUyLDI1IEBAIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6dW5tdXRlQ29u
c29sZSgpCiAgICAgQ29uc29sZTo6dW5tdXRlKCk7CiB9CiAKK3ZvaWQgUGFnZVJ1bnRpbWVBZ2Vu
dDo6cmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9uKCkKK3sKKyAgICBWZWN0b3I8c3RkOjpw
YWlyPFNjcmlwdFN0YXRlKiwgU2VjdXJpdHlPcmlnaW4qPiA+IGlzb2xhdGVkQ29udGV4dHM7Cisg
ICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBpZiAo
IWZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3Jp
cHQpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFN0cmluZyBmcmFtZUlkID0gbV9w
YWdlQWdlbnQtPmZyYW1lSWQoZnJhbWUpOworCisgICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRT
dGF0ZSA9IG1haW5Xb3JsZFNjcmlwdFN0YXRlKGZyYW1lKTsKKyAgICAgICAgbm90aWZ5Q29udGV4
dENyZWF0ZWQoZnJhbWVJZCwgc2NyaXB0U3RhdGUsIDAsIHRydWUpOworICAgICAgICBmcmFtZS0+
c2NyaXB0KCktPmNvbGxlY3RJc29sYXRlZENvbnRleHRzKGlzb2xhdGVkQ29udGV4dHMpOworICAg
ICAgICBpZiAoaXNvbGF0ZWRDb250ZXh0cy5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGk8IGlzb2xhdGVkQ29udGV4dHMuc2l6ZSgp
OyBpKyspCisgICAgICAgICAgICBub3RpZnlDb250ZXh0Q3JlYXRlZChmcmFtZUlkLCBpc29sYXRl
ZENvbnRleHRzW2ldLmZpcnN0LCBpc29sYXRlZENvbnRleHRzW2ldLnNlY29uZCwgZmFsc2UpOwor
ICAgICAgICBpc29sYXRlZENvbnRleHRzLmNsZWFyKCk7CisgICAgfQorfQorCiB2b2lkIFBhZ2VS
dW50aW1lQWdlbnQ6Om5vdGlmeUNvbnRleHRDcmVhdGVkKGNvbnN0IFN0cmluZyYgZnJhbWVJZCwg
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4s
IGJvb2wgaXNQYWdlQ29udGV4dCkKIHsKICAgICBBU1NFUlQoc2VjdXJpdHlPcmlnaW4gfHwgaXNQ
YWdlQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1
bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQu
aAppbmRleCA5YzkyZDgwN2EwNTI2ZjRjMjI0OGM1NWQ1NTFmMGFkNGM0MzNlYTc3Li41Mjc4YWE3
MzczOGQ0ZTJhN2FhOTE0ZGQ3MWE5YWY3ZWYyNGYwMjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKQEAgLTU1LDcgKzU1LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOwogICAgIHZpcnR1
YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmUoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0UmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9uKEVycm9yU3Ry
aW5nKiwgYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOworICAg
IHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CiAKICAgICB2b2lkIGRpZENsZWFy
V2luZG93T2JqZWN0KEZyYW1lKik7CiAgICAgdm9pZCBkaWRDcmVhdGVJc29sYXRlZENvbnRleHQo
RnJhbWUqLCBTY3JpcHRTdGF0ZSosIFNlY3VyaXR5T3JpZ2luKik7CkBAIC02Niw2ICs2Nyw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2
YWwoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCk7CiAgICAgdmly
dHVhbCB2b2lkIG11dGVDb25zb2xlKCk7CiAgICAgdmlydHVhbCB2b2lkIHVubXV0ZUNvbnNvbGUo
KTsKKyAgICB2b2lkIHJlcG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlvbigpOwogICAgIHZvaWQg
bm90aWZ5Q29udGV4dENyZWF0ZWQoY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBTY3JpcHRTdGF0ZSos
IFNlY3VyaXR5T3JpZ2luKiwgYm9vbCBpc1BhZ2VDb250ZXh0KTsKIAogICAgIFBhZ2UqIG1faW5z
cGVjdGVkUGFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJS
dW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVB
Z2VudC5jcHAKaW5kZXggMzBjMDc3MDAxYWY5MjY2ZWRiOGUwY2FhZDQyYzkzZDczNzMxMjY3Mi4u
ZDc0ZTJhY2ZiOTZmNmQ2NGVmOTA5ZTJjMDZhMjBlZmJjZjZkYmQ2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTQ5LDExICs0OSw2
IEBAIFdvcmtlclJ1bnRpbWVBZ2VudDo6fldvcmtlclJ1bnRpbWVBZ2VudCgpCiB7CiB9CiAKLXZv
aWQgV29ya2VyUnVudGltZUFnZW50OjpzZXRSZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24o
RXJyb3JTdHJpbmcqIGVycm9yLCBib29sKQotewotICAgICplcnJvciA9ICJJc29sYXRlZCBjb250
ZXh0cyBhcmUgbm90IHN1cHBvcnRlZCBmb3Igd29ya2Vycy4iOwotfQotCiBJbmplY3RlZFNjcmlw
dCBXb3JrZXJSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyog
ZXJyb3IsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlmIChleGVjdXRp
b25Db250ZXh0SWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1l
QWdlbnQuaAppbmRleCA2MzExMDkzYmY2M2QxNjM2YTNmYTM2OGM2NmQwZGUzNmViZGQ4MmU2Li45
ZjE5OTdiNzQwZjMyOGZmNGMwYzc0YWNkYTIyMTg2NTMxM2FmMGYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCkBAIC00Nyw3ICs0Nyw2IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJSdW50aW1lQWdlbnQoaW5z
dHJ1bWVudGluZ0FnZW50cywgc3RhdGUsIGluamVjdGVkU2NyaXB0TWFuYWdlciwgY29udGV4dCkp
OwogICAgIH0KICAgICB2aXJ0dWFsIH5Xb3JrZXJSdW50aW1lQWdlbnQoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0UmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9uKEVycm9yU3RyaW5nKiwgYm9v
bCk7CiAKIHByaXZhdGU6CiAgICAgV29ya2VyUnVudGltZUFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCBJbnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciosIFdvcmtlckNvbnRl
eHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUnVu
dGltZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SdW50aW1l
TW9kZWwuanMKaW5kZXggZjU2MzM1NjIyZjI4NDlmOGRkNDFlYTc2ZWM5NGFlNDIxOWMxMjUxOS4u
YjM5ZDgwNTlkMDBlOTI0ZjdmMmI5MjcwMjJmZmE2Y2MwY2Y0ZDVhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SdW50aW1lTW9kZWwuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SdW50aW1lTW9kZWwuanMKQEAgLTk1LDcg
Kzk1LDcgQEAgV2ViSW5zcGVjdG9yLlJ1bnRpbWVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgX2Rp
ZExvYWRDYWNoZWRSZXNvdXJjZXM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIEluc3BlY3Rv
ckJhY2tlbmQucmVnaXN0ZXJSdW50aW1lRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLlJ1bnRp
bWVEaXNwYXRjaGVyKHRoaXMpKTsKLSAgICAgICAgUnVudGltZUFnZW50LnNldFJlcG9ydEV4ZWN1
dGlvbkNvbnRleHRDcmVhdGlvbih0cnVlKTsKKyAgICAgICAgUnVudGltZUFnZW50LmVuYWJsZSgp
OwogICAgIH0sCiAKICAgICBfZXhlY3V0aW9uQ29udGV4dENyZWF0ZWQ6IGZ1bmN0aW9uKGNvbnRl
eHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggYzQ2NTFkNzQ0NGNmNDRhZWFkNzlj
MGQyZDBiZjgxZmVlYTc1YTI3Ny4uNmU5NmU5N2I5NjRiNTFiMzg4M2IxNmQyZTUzMjI2ZWM5OGQz
NDVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtODM0LDcgKzgzNCw3IEBAIHZv
aWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbWVzc2FnZSwgY29uc3QgTWVzCiAKICAgICAvLyBDYXB0dXJlIHN0YWNrIHRyYWNlIG9ubHkg
d2hlbiBpbnNwZWN0b3IgZnJvbnQtZW5kIGlzIGxvYWRlZCBhcyBpdCBtYXkgYmUgdGltZSBjb25z
dW1pbmcuCiAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gc3RhY2tUcmFjZTsKLSAgICBpZiAo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSkKKyAgICBpZiAoSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQWdlbnRFbmFibGVkKHNvdXJjZURvY3VtZW50KSkK
ICAgICAgICAgc3RhY2tUcmFjZSA9IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhTY3JpcHRDYWxsU3Rh
Y2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUsIHRydWUpOwogCiAgICAgLy8gU2NoZWR1bGUg
dGhlIG1lc3NhZ2UuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165612</attachid>
            <date>2012-09-25 07:38:06 -0700</date>
            <delta_ts>2012-09-25 08:29:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96730-20120925183724.patch</filename>
            <type>text/plain</type>
            <size>48662</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ3NmI4NzUwM2Q0Mzhk
NDllNDhlMDYxMjM2NGUzYmQzNzYzMWRmZC4uODg2Y2FmZjM2YjAzODY4MTI1MzUwNDc2ZGEwMzI4
NTk3MGE3NDdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0wOS0yNSAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBkbyBub3QgdXNlIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkg
Y2hlY2sgd2hlbiBjb2xsZWN0aW5nIHN0YWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY3MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAtIEludHJvZHVjZWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojpjb25zb2xlfHRpbWVsaW5lfHJ1bnRpbWV8Y2FudmFzQWdlbnRFbmFibGVkCisgICAgICAgIC0g
VXNpbmcgaXQgYWxsIG92ZXIgdGhlIHBsYWNlIGluc3RlYWQgb2YgdGhlIGhhc0Zyb250ZW5kICh0
aGUgbGF0dGVyIGlzIG5vdyBvbmx5IHVzZWQgb25jZSB0byBndWFyZCBob3QgcGF0aCkKKyAgICAg
ICAgLSBJbnRyb2R1Y2VkIGV4cGxpY2l0ICJlbmFibGVkIiBzdGF0ZSBvZiB0aGUgY29uc29sZSBh
bmQgcnVudGltZSBhZ2VudHMKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0Vs
ZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6
Z2V0Q29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU01haW5UaHJlYWRFeGVjU3RhdGU6Omluc3RydW1lbnRG
dW5jdGlvbkNhbGwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRl
Q2FsbFdpdGgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
OgorICAgICAgICAoR2VuZXJhdGVDYWxsV2l0aCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0QXJn
dW1lbnRzQW5kQ2FsbFN0YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0ckdldHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxT
dGFja0F0dHJpYnV0ZUF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tDYWxsYmFjayk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmNhbGxGdW5jdGlvbldpdGhJbnN0cnVtZW50YXRpb24pOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhET01XaW5kb3dTaGVsbDo6c2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXI6OmNhbGxMaXN0ZW5l
ckZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93U2V0VGltZW91dEltcGwpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRDYWxsYmFjayk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXRUaW1lb3V0T3JJbnRlcnZhbCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb25z
b2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29uc29sZUFnZW50OjpjbGVhck1lc3NhZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6Y2xlYXJGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OmVuYWJsZWQpOgorICAgICAgICAoSW5zcGVjdG9yQ29uc29sZUFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYW52
YXNBZ2VudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpjb25zb2xlQWdlbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6cnVudGltZUFnZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnRpbWVsaW5lQWdlbnRFbmFibGVkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpjYW52YXNBZ2VudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQWdlbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cnVudGltZUFnZW50RW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnRpbWVsaW5lQWdlbnRFbmFibGVk
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFnZW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUnVudGltZUFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKEluc3BlY3RvclJ1bnRp
bWVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwOgorICAg
ICAgICAoUGFnZVJ1bnRpbWVBZ2VudFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50
aW1lQWdlbnQ6OmNsZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVB
Z2VudDo6cmVzdG9yZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VSdW50aW1lQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFn
ZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmRpZENs
ZWFyV2luZG93T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmRp
ZENyZWF0ZUlzb2xhdGVkQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFn
ZW50OjpyZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rv
ci9QYWdlUnVudGltZUFnZW50Lmg6CisgICAgICAgIChQYWdlUnVudGltZUFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9S
dW50aW1lTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUnVudGltZU1vZGVsLnByb3Rv
dHlwZS5fZGlkTG9hZENhY2hlZFJlc291cmNlcyk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisKIDIwMTIt
MDktMjUgIE90dG8gRGVyZWsgQ2hldW5nICA8b3RjaGV1bmdAcmltLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBDb29raWUgaW5mbyBpbiBOZXR3b3JrIFJlc291cmNlcyBDb29raWVzIHRh
YiBzaG93cyAiSW52YWxpZCBEYXRlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA3MmJmMzg2YTA2NGYz
NjQ2NWM0NWEyMDUxMDA5MThiY2QxMWRjMDVmLi5lNTljNmIzZTZmOTg4ZGViZjUyMzY2NDdlYzVj
OTRhNzVmYzc3YTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcApAQCAtNzgsNyArNzgsNyBAQCBKU1ZhbHVl
IEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoRXhlY1N0YXRlKiBleGVjKQogICAgIGlm
ICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIEpTVmFsdWUganNWYWx1
ZSA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGNvbnRleHQpKTsKLSAg
ICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSkgeworICAgIGlm
IChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNhbnZhc0FnZW50RW5hYmxlZChjYW52YXMtPmRv
Y3VtZW50KCkpKSB7CiAgICAgICAgIFNjcmlwdE9iamVjdCBjb250ZXh0T2JqZWN0KGV4ZWMsIGpz
VmFsdWUuZ2V0T2JqZWN0KCkpOwogICAgICAgICBTY3JpcHRPYmplY3Qgd3JhcHBlZDsKICAgICAg
ICAgaWYgKGNvbnRleHQtPmlzMmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKaW5kZXggMTA5Y2U4YjkyNzg0MDg2ZmI0ZjllNWVh
MzZmMzIwYzljZGE0NjNlMy4uMjk3Yzk1M2Q4OTM0MGI4Njc5MDUzZDViZGIzOTA5MWVlODcyZGJl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhl
Y1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhl
Y1N0YXRlLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGlubGluZSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgaW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlLCBjb25z
dCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSkKICAgICB7Ci0gICAgICAgIGlmICghSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSkKKyAgICAgICAgaWYgKCFJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnRpbWVsaW5lQWdlbnRFbmFibGVkKGNvbnRleHQpKQogICAgICAgICAg
ICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwogICAgICAgICBTdHJp
bmcgcmVzb3VyY2VOYW1lOwogICAgICAgICBpbnQgbGluZU51bWJlciA9IDE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCA3NjgyMDUxMGQx
MjI2YzZkMjNkMTIxODY5MTJkZTQ2ZGJiOWE1NWQ5Li4yNmFhOWZiYmUyNzIzY2UzZWQ2ZTViNWEz
Y2IxZDU2MzMzYzMwYjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVk
dWxlZEFjdGlvbi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgUGFzc093blB0cjxTY2hlZHVsZWRBY3Rp
b24+IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgRE9NV3JhcHBlclcK
ICAgICBKU1ZhbHVlIHYgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKICAgICBpZiAoZ2V0Q2FsbERhdGEodiwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkgewot
ICAgICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2Fs
bFN0YWNrRm9ySW5zcGVjdG9yKGV4ZWMpKTsKKyAgICAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFj
az4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYykpOwogICAg
ICAgICBpZiAocG9saWN5ICYmICFwb2xpY3ktPmFsbG93RXZhbChjYWxsU3RhY2sucmVsZWFzZSgp
KSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBTdHJpbmcgc3RyaW5nID0g
di50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCmluZGV4IDRmYWVlZWQ4OTUy
YWY5NzVmZTExOGY4NjJhMzQ4ZmFlZmYwZThjOTcuLjE5M2Y2NGZkNThkYmNiMTEwZTIzM2JiNTYy
NTVkZGQ3NjEyMjZkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCkBAIC0xMDQsMTIgKzEwNCwxMiBAQCBQYXNzUmVm
UHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBzaXplX3QgbQogICAgIHJldHVybiBTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZShmcmFt
ZXMpOwogfQogCi1QYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0
YWNrRm9ySW5zcGVjdG9yKEpTQzo6RXhlY1N0YXRlKiBleGVjKQorUGFzc1JlZlB0cjxTY3JpcHRD
YWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgc2l6ZV90IG1heFN0YWNrU2l6ZSA9IDE7CiAgICAgaWYgKEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpIHsKICAgICAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKLSAgICAgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRG
b3JTY3JpcHRDb250ZXh0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKQorICAgICAgICBpZiAoSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQWdlbnRFbmFibGVkKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpKQogICAgICAgICAgICAgbWF4U3RhY2tTaXplID0gU2NyaXB0Q2FsbFN0YWNrOjpt
YXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlOwogICAgIH0KICAgICByZXR1cm4gY3JlYXRlU2NyaXB0
Q2FsbFN0YWNrKGV4ZWMsIG1heFN0YWNrU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgKaW5kZXggNjg5ZDE2NTM5YWI0OGEx
NGRhYjc0NDcwMWJjMzMyYmZlYTU5YTk5ZS4uNmU5NGIwM2UxZWEyOGM5OGY1NmZiMWI2MmYxYjVl
ZDhjMWRkOTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENhbGxTdGFja0ZhY3RvcnkuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBTY3JpcHRDYWxsU3Rh
Y2s7CiAKIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2so
c2l6ZV90IG1heFN0YWNrU2l6ZSwgYm9vbCBlbXB0eVN0YWNrSXNBbGxvd2VkKTsKIFBhc3NSZWZQ
dHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNDOjpFeGVjU3RhdGUq
LCBzaXplX3QgbWF4U3RhY2tTaXplKTsKLVBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVh
dGVTY3JpcHRDYWxsU3RhY2tGb3JJbnNwZWN0b3IoSlNDOjpFeGVjU3RhdGUqKTsKK1Bhc3NSZWZQ
dHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKEpTQzo6
RXhlY1N0YXRlKik7CiBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gY3JlYXRlU2NyaXB0QXJn
dW1lbnRzKEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGUzNzY2ZDNiYTc2NDRmYzIyMDFmMDQ2MWY4
Mjc4NGI1Njc1OWIxNmUuLjY1OTE0YjU2ODc3ZjY1Y2ExZDkwY2Y2OTU1MjZjMWNmNjY1ZDkxMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCkBAIC0yNTg4LDcgKzI1ODgsNyBAQCBzdWIgR2VuZXJhdGVDYWxsV2l0aAogICAgICAg
ICBwdXNoKEBjYWxsV2l0aEFyZ3MsICJzY3JpcHRBcmd1bWVudHMiKTsKICAgICB9CiAgICAgaWYg
KCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRjYWxsV2l0aCwgIkNh
bGxTdGFjayIpKSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSZWZQdHI8U2Ny
aXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9ySW5zcGVjdG9y
KGV4ZWMpKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPFNj
cmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUo
ZXhlYykpO1xuIik7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IlNjcmlwdENhbGxTdGFjay5oIn0g
PSAxOwogICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgifSA9
IDE7CiAgICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywgImNhbGxTdGFjayIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCAw
NjgxMDU2MDA2MzIxY2JhMjE3MDAyNDUzOGFiZDAxNzVmZDJhMGUyLi44NmQzZWI2OGU5YjI3MDA0
OTQ3MTZhN2I1YjUzMjAxZjExMmY2ODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMTYwOCw3ICsxNjA4LDcgQEAgc3Vi
IEdlbmVyYXRlQ2FsbFdpdGgKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNjcmlwdEFyZ3Vt
ZW50cy5oIik7CiAgICAgfQogICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1
dGVDb250YWlucygkY2FsbFdpdGgsICJDYWxsU3RhY2siKSkgewotICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICRpbmRlbnQgLiAiUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNy
ZWF0ZVNjcmlwdENhbGxTdGFja0Zvckluc3BlY3RvcigpKTtcbiIpOworICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICRpbmRlbnQgLiAiUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNr
KGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoKSk7XG4iKTsKICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAkaW5kZW50IC4gImlmICghY2FsbFN0YWNrKVxuIik7CiAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICIgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7XG4i
KTsKICAgICAgICAgcHVzaChAY2FsbFdpdGhBcmdzLCAiY2FsbFN0YWNrIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmlu
ZGV4IGY0OGE5YzgzMzcwZjUzNGNmNTA4YWEzY2ZlY2FlMjU5NzY2N2VjNjcuLjkxODcxZDRiNzMx
ZTQ1NDdlNTgwOWY0Y2RiZDVhMzAyM2I5ZGQ5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC03NjksNyArNzY5
LDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShFeGUKIEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlw
dEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
c2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKLSAgICBSZWZQdHI8U2NyaXB0
Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9ySW5zcGVjdG9yKGV4
ZWMpKTsKKyAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0
Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjKSk7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19j
YXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC0+
d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShjYWxsU3RhY2spKSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEyOTQsNyArMTI5NCw3IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKICAgICBUZXN0T2JqKiBpbXBsID0g
c3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgUmVmUHRyPFNj
cmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0Zvckluc3BlY3Rv
cihleGVjKSk7CisgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNj
cmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYykpOwogICAgIGltcGwtPnNldFdpdGhTY3JpcHRB
cmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoY2FsbFN0YWNrLCB0b1Rlc3RPYmoodmFsdWUp
KTsKIH0KIApAQCAtMTg1Niw3ICsxODU2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWwKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5m
byk7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlz
LT5pbXBsKCkpOwogICAgIFJlZlB0cjxTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhj
cmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkpOwotICAgIFJlZlB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JJbnNwZWN0b3IoZXhlYykpOwor
ICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3Rh
Y2tGb3JDb25zb2xlKGV4ZWMpKTsKICAgICBpbXBsLT53aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2Fs
bFN0YWNrKHNjcmlwdEFyZ3VtZW50cywgY2FsbFN0YWNrKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCA1MDI0MjhhNzEwMGM1Zjcx
NjYzY2Y1YzY5MTUxNjlkOTcyMjE1NTM1Li41YzE2ZjhhN2MzODk5ZTQzZjBhZWYzYWFkNGRjMTUx
ZmJiNjYxNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtNzEwLDcgKzcxMCw3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0
dHJHZXR0ZXIoCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0QXJndW1l
bnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIFJlZlB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JJbnNwZWN0b3IoKSk7CisgICAg
UmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0Zv
ckNvbnNvbGUoKSk7CiAgICAgaWYgKCFjYWxsU3RhY2spCiAgICAgICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwogICAgIHJldHVybiB0b1Y4KGltcC0+d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxT
dGFja0F0dHJpYnV0ZShjYWxsU3RhY2spLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUo
KSk7CkBAIC03MjEsNyArNzIxLDcgQEAgc3RhdGljIHZvaWQgd2l0aFNjcmlwdEFyZ3VtZW50c0Fu
ZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHIKICAgICBJTkNf
U1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1
dGUuX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CiAgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUp
ID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVl
KSkgOiAwOwotICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3Jp
cHRDYWxsU3RhY2tGb3JJbnNwZWN0b3IoKSk7CisgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4g
Y2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoKSk7CiAgICAgaWYgKCFj
YWxsU3RhY2spCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAgIGltcC0+c2V0V2l0
aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShjYWxsU3RhY2ssIFdURjo6Z2V0
UHRyKHYpKTsKQEAgLTEzNTEsNyArMTM1MSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0NhbGxiYWNrKGNvbnN0IHY4OjpBCiAg
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNr
Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKICAgICBSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoY3JlYXRlU2Ny
aXB0QXJndW1lbnRzKGFyZ3MsIDApKTsKLSAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxs
U3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9ySW5zcGVjdG9yKCkpOworICAgIFJlZlB0cjxT
Y3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xl
KCkpOwogICAgIGlmICghY2FsbFN0YWNrKQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsK
ICAgICBpbXAtPndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2soc2NyaXB0QXJndW1lbnRz
LCBjYWxsU3RhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmNwcAppbmRleCA1ZjMyYmEyMGUxNWZjNTcxMGI4OTA2ZTMzMWNh
MDdmMDBiOGFhMTdlLi5mNTZlZDMzZjdiY2RhNTg5NzIwNzIwODE0MTMwNDcxNGMxOGZlNzQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tG
YWN0b3J5LmNwcApAQCAtMTA1LDEyICsxMDUsMTIgQEAgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhzaXplX3QgbWF4U3RhY2tTaXplLCBib29sIGVtcHQK
ICAgICByZXR1cm4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKHN0YWNrVHJhY2UsIG1heFN0YWNrU2l6
ZSwgZW1wdHlTdGFja0lzQWxsb3dlZCk7CiB9CiAKLVBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
PiBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JJbnNwZWN0b3IoKQorUGFzc1JlZlB0cjxTY3JpcHRD
YWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoKQogewogICAgIHNpemVf
dCBtYXhTdGFja1NpemUgPSAxOwogICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhh
c0Zyb250ZW5kcygpKSB7CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgIGlm
IChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kRm9yU2NyaXB0Q29udGV4dChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KSkKKyAgICAgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6Y29uc29sZUFnZW50RW5hYmxlZChzY3JpcHRFeGVjdXRpb25Db250ZXh0KSkKICAgICAg
ICAgICAgIG1heFN0YWNrU2l6ZSA9IFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRv
Q2FwdHVyZTsKICAgICB9CiAgICAgcmV0dXJuIGNyZWF0ZVNjcmlwdENhbGxTdGFjayhtYXhTdGFj
a1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5oCmluZGV4IDEzOGZjMzdjMzQ3NzY1MGI4ZWRjZTJmZjVmZWI2Mjk0MDBlZTA3
NTIuLmU1NThlMWI4OGE3ZjU0OGRiMWJmZDM1Mzk0NmNlNWIwZmNiMTM1MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgKQEAg
LTQ4LDcgKzQ4LDcgQEAgY29uc3Qgdjg6OlN0YWNrVHJhY2U6OlN0YWNrVHJhY2VPcHRpb25zIHN0
YWNrVHJhY2VPcHRpb25zID0gc3RhdGljX2Nhc3Q8djg6OlN0YWMKIAogUGFzc1JlZlB0cjxTY3Jp
cHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFjayh2ODo6SGFuZGxlPHY4OjpTdGFja1Ry
YWNlPiwgc2l6ZV90IG1heFN0YWNrU2l6ZSk7CiBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4g
Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKHNpemVfdCBtYXhTdGFja1NpemUsIGJvb2wgZW1wdHlTdGFj
a0lzQWxsb3dlZCA9IGZhbHNlKTsKLVBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVT
Y3JpcHRDYWxsU3RhY2tGb3JJbnNwZWN0b3IoKTsKK1Bhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
PiBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKCk7CiBQYXNzUmVmUHRyPFNjcmlwdEFy
Z3VtZW50cz4gY3JlYXRlU2NyaXB0QXJndW1lbnRzKGNvbnN0IHY4OjpBcmd1bWVudHMmIHY4YXJn
dW1lbnRzLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5j
cHAKaW5kZXggNDgwMGFkZTkxNGUyMDIxOGNlOWJmMzg3YWIxZWQ3YWY1Mjk5NWZlOS4uMmZjYWNh
NjJjOGFkNDJhNmYxYjQxMmE5MjZkMDI4ZGJmN2NiOWQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCB2
ODo6TG9jYWw8djg6OlZhbHVlPiBTY3JpcHRDb250cm9sbGVyOjpjYWxsRnVuY3Rpb25XaXRoSW5z
dHJ1bWVudGF0aW9uKFNjcmlwdEV4ZQogICAgICAgICByZXR1cm4gaGFuZGxlTWF4UmVjdXJzaW9u
RGVwdGhFeGNlZWRlZCgpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNv
b2tpZTsKLSAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSAm
JiBjb250ZXh0KSB7CisgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dGltZWxpbmVB
Z2VudEVuYWJsZWQoY29udGV4dCkpIHsKICAgICAgICAgU3RyaW5nIHJlc291cmNlTmFtZTsKICAg
ICAgICAgaW50IGxpbmVOdW1iZXI7CiAgICAgICAgIHJlc291cmNlSW5mbyhmdW5jdGlvbiwgcmVz
b3VyY2VOYW1lLCBsaW5lTnVtYmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggODFlYTIxYTNiOGVkNTRmM2E3YWU2Mjc1MDY3Y2Yy
MmFkMmM2OGI0OC4uMTkzNmFlOGQwYTRiODNkYTEwNGJjZDFlNWM5NDUyY2EzYzczOTQ4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKQEAg
LTYxMSw3ICs2MTEsNyBAQCB2b2lkIFY4RE9NV2luZG93U2hlbGw6OnNldElzb2xhdGVkV29ybGRT
ZWN1cml0eU9yaWdpbihQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPgogewogICAgIEFTU0VSVCgh
bV93b3JsZC0+aXNNYWluV29ybGQoKSk7CiAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIGhl
cmU/Ci0gICAgaWYgKCFtX2lzb2xhdGVkV29ybGRTaGVsbFNlY3VyaXR5T3JpZ2luICYmICFjb250
ZXh0KCkuSXNFbXB0eSgpICYmIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRz
KCkpIHsKKyAgICBpZiAoIW1faXNvbGF0ZWRXb3JsZFNoZWxsU2VjdXJpdHlPcmlnaW4gJiYgIWNv
bnRleHQoKS5Jc0VtcHR5KCkgJiYgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpydW50aW1lQWdl
bnRFbmFibGVkKG1fZnJhbWUpKSB7CiAgICAgICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29w
ZTsKICAgICAgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gU2NyaXB0U3RhdGU6OmZvckNv
bnRleHQodjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KGNvbnRleHQoKSkpOwogICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZUlzb2xhdGVkQ29udGV4dChtX2ZyYW1l
LCBzY3JpcHRTdGF0ZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNw
cAppbmRleCA2MjE0MWQ2NzY0MzNkM2IxN2I4ODQwYmIwMGIzMzVmZjNkY2VhNDU2Li5kOWJiOTU1
NDU0NDQ3ZDhmYjcwNTg5NTU5YTNhMDU5MDE3MWNjYzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNw
cApAQCAtOTUsNyArOTUsNyBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRleHRF
dmVudExpc3RlbmVyOjpjYWxsTGlzdGVuZXJGdW5jdGlvbihTY3JpcHRFeAogICAgICAgICByZXR1
cm4gdjg6OkxvY2FsPHY4OjpWYWx1ZT4oKTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSBjb29raWU7Ci0gICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJv
bnRlbmRzKCkpIHsKKyAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp0aW1lbGluZUFn
ZW50RW5hYmxlZChjb250ZXh0KSkgewogICAgICAgICBTdHJpbmcgcmVzb3VyY2VOYW1lKCJ1bmRl
ZmluZWQiKTsKICAgICAgICAgaW50IGxpbmVOdW1iZXIgPSAxOwogICAgICAgICB2ODo6U2NyaXB0
T3JpZ2luIG9yaWdpbiA9IGhhbmRsZXJGdW5jdGlvbi0+R2V0U2NyaXB0T3JpZ2luKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3Vz
dG9tLmNwcAppbmRleCAwYjQ2OGQ0YmVmN2UyZTNiY2Q0ZWIzNDlkYTg4MmNhMDliODY2ZDVmLi4x
YTkxNzA1ODEyODdjMGQxYjFjNDAzMTljMGViZjczN2U0Y2FlOTIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAK
QEAgLTEyOCw3ICsxMjgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2luZG93U2V0VGltZW91
dEltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogCiAgICAgICAgIGlk
ID0gRE9NVGltZXI6Omluc3RhbGwoc2NyaXB0Q29udGV4dCwgYWN0aW9uLnJlbGVhc2UoKSwgdGlt
ZW91dCwgc2luZ2xlU2hvdCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUmVmUHRyPFNjcmlwdENh
bGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0Zvckluc3BlY3RvcigpKTsK
KyAgICAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENh
bGxTdGFja0ZvckNvbnNvbGUoKSk7CiAgICAgICAgIGlmIChpbXAtPmRvY3VtZW50KCkgJiYgIWlt
cC0+ZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93RXZhbChjYWxsU3Rh
Y2sucmVsZWFzZSgpKSkKICAgICAgICAgICAgIHJldHVybiB2OEludGVnZXIoMCwgYXJncy5HZXRJ
c29sYXRlKCkpOwogICAgICAgICBBU1NFUlQoaW1wLT5mcmFtZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVt
ZW50Q3VzdG9tLmNwcAppbmRleCBhNmZiMjJhNDQxYjk0ZjA4ZjVjYmE1NTVlOTk4ZTdlMDYyYmI1
MzQyLi4xNGFkNGFiYWNiMTA4NGQ5YjAyN2JkYWJiMDFmZTI5MWUyMzFhMmI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENh
bnZhc0VsZW1lbnRDdXN0b20uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50CiAgICAgICAgIHJldHVybiB2ODo6TnVsbChhcmdzLkdldElzb2xhdGUoKSk7CiAgICAg
ZWxzZSBpZiAocmVzdWx0LT5pczJkKCkpIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHY4UmVzdWx0ID0gdG9WOChzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqPihy
ZXN1bHQpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgICAgIGlmIChJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpKSB7CisgICAgICAgIGlmIChJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNhbnZhc0FnZW50RW5hYmxlZChpbXAtPmRvY3VtZW50
KCkpKSB7CiAgICAgICAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBTY3JpcHRTdGF0
ZTo6Zm9yQ29udGV4dCh2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKTsKICAgICAgICAgICAgIFNj
cmlwdE9iamVjdCBjb250ZXh0KHNjcmlwdFN0YXRlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KHY4UmVzdWx0KSk7CiAgICAgICAgICAgICBTY3JpcHRPYmplY3Qgd3JhcHBlZCA9IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcENhbnZhczJEUmVuZGVyaW5nQ29udGV4dEZvckluc3Ry
dW1lbnRhdGlvbihpbXAtPmRvY3VtZW50KCksIGNvbnRleHQpOwpAQCAtMTA1LDcgKzEwNSw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0Q2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50CiAgICAgICAgIHBlcklzb2xhdGVEYXRhLT5zZXRTaG91
bGRDb2xsZWN0R2FyYmFnZVNvb24oKTsKIAogICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
djhSZXN1bHQgPSB0b1Y4KHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KHJlc3Vs
dCksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICAgICAgaWYgKEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpIHsKKyAgICAgICAgaWYgKEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6Y2FudmFzQWdlbnRFbmFibGVkKGltcC0+ZG9jdW1lbnQoKSkp
IHsKICAgICAgICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpm
b3JDb250ZXh0KHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCkpOwogICAgICAgICAgICAgU2NyaXB0
T2JqZWN0IGdsQ29udGV4dChzY3JpcHRTdGF0ZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dCh2OFJlc3VsdCkpOwogICAgICAgICAgICAgU2NyaXB0T2JqZWN0IHdyYXBwZWQgPSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50
YXRpb24oaW1wLT5kb2N1bWVudCgpLCBnbENvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApp
bmRleCA4OWVjZGM5ODY3OWU4MzViNmMyZmY3NmM1YzUzMGUwNjJhZTYzYjk4Li5jYTkzNTMzNzk3
ZDRjYzU4YjkxNTRjNmRhNTdlOTJkM2ZmOTJmNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApA
QCAtNjcsNyArNjcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2V0VGltZW91dE9ySW50ZXJ2
YWwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogICAgIHY4OjpIYW5kbGU8
djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IHByb3h5LT5jb250ZXh0KCk7CiAgICAgaWYgKGZ1bmN0
aW9uLT5Jc1N0cmluZygpKSB7CiAgICAgICAgIGlmIChDb250ZW50U2VjdXJpdHlQb2xpY3kqIHBv
bGljeSA9IHdvcmtlckNvbnRleHQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKSB7Ci0gICAgICAg
ICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2sgPSBjcmVhdGVTY3JpcHRDYWxs
U3RhY2tGb3JJbnNwZWN0b3IoKTsKKyAgICAgICAgICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+
IGNhbGxTdGFjayA9IGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoKTsKICAgICAgICAg
ICAgIGlmICghcG9saWN5LT5hbGxvd0V2YWwoY2FsbFN0YWNrLnJlbGVhc2UoKSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHY4SW50ZWdlcigwLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCAyMWQ5MjdjMjEz
ODdkNjJlYzFkNmM0MjQ0N2NhZWQ1ZTIxMmM2OGMyLi5iOThhNTA5ZWRlMzkzMDFjYTM1OTg2M2I1
ODcyNDZlNDNjOWUxNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
CkBAIC01ODksMTQgKzU4OSwxNSBAQAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJU
ZWxscyBpbnNwZWN0ZWQgaW5zdGFuY2Uod29ya2VyIG9yIHBhZ2UpIHRoYXQgaXQgY2FuIHJ1biBp
biBjYXNlIGl0IHdhcyBzdGFydGVkIHBhdXNlZC4iCiAgICAgICAgICAgICB9LAogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICJuYW1lIjogInNldFJlcG9ydEV4ZWN1dGlvbkNvbnRleHRD
cmVhdGlvbiIsCi0gICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiZW5hYmxlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRp
b24iOiAiUmVwb3J0aW5nIGVuYWJsZWQgc3RhdGUuIiB9Ci0gICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICAibmFtZSI6ICJlbmFibGUiLAorICAgICAgICAgICAgICAgICJoaWRkZW4i
OiB0cnVlLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJFbmFibGVzIHJlcG9ydGlu
ZyBvZiBleGVjdXRpb24gY29udGV4dHMgY3JlYXRpb24gYnkgbWVhbnMgb2YgPGNvZGU+ZXhlY3V0
aW9uQ29udGV4dENyZWF0ZWQ8L2NvZGU+IGV2ZW50LiBXaGVuIHRoZSByZXBvcnRpbmcgZ2V0cyBl
bmFibGVkIHRoZSBldmVudCB3aWxsIGJlIHNlbnQgaW1tZWRpYXRlbHkgZm9yIGVhY2ggZXhpc3Rp
bmcgZXhlY3V0aW9uIGNvbnRleHQuIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAibmFtZSI6ICJkaXNhYmxlIiwKICAgICAgICAgICAgICAgICAiaGlkZGVu
IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRW5hYmxlcyByZXBvcnRp
bmcgYWJvdXQgY3JlYXRpb24gb2YgZXhlY3V0aW9uIGNvbnRleHRzIGJ5IG1lYW5zIG9mIDxjb2Rl
PmV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkPC9jb2RlPiBldmVudC4gV2hlbiB0aGUgcmVwb3J0aW5n
IGdldHMgZW5hYmxlZCB0aGUgZXZlbnQgd2lsbCBiZSBzZW50IGltbWVkaWF0ZWx5IGZvciBlYWNo
IGV4aXN0aW5nIGV4ZWN1dGlvbiBjb250ZXh0LiIKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiRGlzYWJsZXMgcmVwb3J0aW5nIG9mIGV4ZWN1dGlvbiBjb250ZXh0cyBjcmVhdGlvbi4i
CiAgICAgICAgICAgICB9Ci0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6IFsKICAgICAg
ICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCmluZGV4IDEwYmVmMGNkMjEzNGM3YjY0YTFkMTMwNTNiOWNkNjdiOWQzMDliMjYu
LjRkYjI2NzJjYTJhMzZkMjgxNmE0MjA1ODkxZjg2MjMxZDA4MGIxMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtNTUsNiAr
NTUsNyBAQCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVjdG9yQ2FudmFzQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKHBh
Z2UpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIp
CiAgICAgLCBtX2Zyb250ZW5kKDApCisgICAgLCBtX2VuYWJsZWQoZmFsc2UpCiB7CiB9CiAKQEAg
LTg0LDEzICs4NSwxOSBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZXN0b3JlKCkKIAog
dm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKIHsKKyAgICBp
ZiAobV9lbmFibGVkKQorICAgICAgICByZXR1cm47CisgICAgbV9lbmFibGVkID0gdHJ1ZTsKICAg
ICBtX3N0YXRlLT5zZXRCb29sZWFuKENhbnZhc0FnZW50U3RhdGU6OmNhbnZhc0FnZW50RW5hYmxl
ZCwgdHJ1ZSk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JDYW52YXNB
Z2VudCh0aGlzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlzYWJsZShFcnJv
clN0cmluZyopCiB7CisgICAgaWYgKCFtX2VuYWJsZWQpCisgICAgICAgIHJldHVybjsKICAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckNhbnZhc0FnZW50KDApOworICAgIG1f
ZW5hYmxlZCA9IGZhbHNlOwogICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oQ2FudmFzQWdlbnRTdGF0
ZTo6Y2FudmFzQWdlbnRFbmFibGVkLCBmYWxzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmgKaW5kZXggZWY0Y2JkNThjNzI2MzM0NjQw
N2UyN2ZhNWUwZWIzZmU2YzBhMzc0OS4uZTg2ODYxOWQ2ZTU5YWEyMjA5OGMwNDJkYmMyNjBhN2Nk
MWFmZWI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNh
bnZhc0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
c0FnZW50LmgKQEAgLTY0LDYgKzY0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckZyb250ZW5kKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmUoKTsKIAorICAgIGJvb2wgZW5h
YmxlZCgpIHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorCiAgICAgU2NyaXB0T2JqZWN0IHdyYXBDYW52
YXMyRFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oY29uc3QgU2NyaXB0T2JqZWN0
Jik7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIFNjcmlwdE9iamVjdCB3cmFwV2ViR0xSZW5kZXJp
bmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNvbnN0IFNjcmlwdE9iamVjdCYpOwpAQCAtODks
NiArOTEsNyBAQCBwcml2YXRlOgogICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKICAgICBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIEluc3BlY3Rv
ckZyb250ZW5kOjpDYW52YXMqIG1fZnJvbnRlbmQ7CisgICAgYm9vbCBtX2VuYWJsZWQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IGFjZWIyZGE0YWY2Zjg1MzUxZjg4ZDk4
YzgzZjY5NTgwNTU4MTYyZmIuLmY1NDRiMTU4OWY5NmVkMmZiNWNjY2E2NmQzYjU5Y2VhMmUyMzUy
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xl
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xl
QWdlbnQuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgi
CiAjaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNr
LmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVj
dC5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CkBAIC02MCwxMiArNjEsMTUgQEAgc3RhdGljIGNvbnN0IGNoYXIgbW9uaXRvcmluZ1hI
UltdID0gIm1vbml0b3JpbmdYSFIiOwogc3RhdGljIGNvbnN0IGNoYXIgY29uc29sZU1lc3NhZ2Vz
RW5hYmxlZFtdID0gImNvbnNvbGVNZXNzYWdlc0VuYWJsZWQiOwogfQogCitpbnQgSW5zcGVjdG9y
Q29uc29sZUFnZW50OjpzX2VuYWJsZWRBZ2VudENvdW50ID0gMDsKKwogSW5zcGVjdG9yQ29uc29s
ZUFnZW50OjpJbnNwZWN0b3JDb25zb2xlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ+KCJDb25zb2xlIiwgaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUp
CiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAg
ICAgLCBtX2Zyb250ZW5kKDApCiAgICAgLCBtX3ByZXZpb3VzTWVzc2FnZSgwKQogICAgICwgbV9l
eHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCgwKQorICAgICwgbV9lbmFibGVkKGZhbHNlKQogewog
ICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yQ29uc29sZUFnZW50KHRoaXMp
OwogfQpAQCAtODAsNiArODQsMTMgQEAgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojp+SW5zcGVjdG9y
Q29uc29sZUFnZW50KCkKIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmVuYWJsZShFcnJv
clN0cmluZyopCiB7CisgICAgaWYgKG1fZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
ZW5hYmxlZCA9IHRydWU7CisgICAgaWYgKCFzX2VuYWJsZWRBZ2VudENvdW50KQorICAgICAgICBT
Y3JpcHRDb250cm9sbGVyOjpzZXRDYXB0dXJlQ2FsbFN0YWNrRm9yVW5jYXVnaHRFeGNlcHRpb25z
KHRydWUpOworICAgICsrc19lbmFibGVkQWdlbnRDb3VudDsKKwogICAgIG1fc3RhdGUtPnNldEJv
b2xlYW4oQ29uc29sZUFnZW50U3RhdGU6OmNvbnNvbGVNZXNzYWdlc0VuYWJsZWQsIHRydWUpOwog
CiAgICAgaWYgKG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQpIHsKQEAgLTk0LDYgKzEwNSwx
MSBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKIAog
dm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogeworICAg
IGlmICghbV9lbmFibGVkKQorICAgICAgICByZXR1cm47CisgICAgbV9lbmFibGVkID0gZmFsc2U7
CisgICAgaWYgKCEoLS1zX2VuYWJsZWRBZ2VudENvdW50KSkKKyAgICAgICAgU2NyaXB0Q29udHJv
bGxlcjo6c2V0Q2FwdHVyZUNhbGxTdGFja0ZvclVuY2F1Z2h0RXhjZXB0aW9ucyhmYWxzZSk7CiAg
ICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihDb25zb2xlQWdlbnRTdGF0ZTo6Y29uc29sZU1lc3NhZ2Vz
RW5hYmxlZCwgZmFsc2UpOwogfQogCkBAIC0xMDMsNyArMTE5LDcgQEAgdm9pZCBJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OmNsZWFyTWVzc2FnZXMoRXJyb3JTdHJpbmcqKQogICAgIG1fZXhwaXJlZENv
bnNvbGVNZXNzYWdlQ291bnQgPSAwOwogICAgIG1fcHJldmlvdXNNZXNzYWdlID0gMDsKICAgICBt
X2luamVjdGVkU2NyaXB0TWFuYWdlci0+cmVsZWFzZU9iamVjdEdyb3VwKCJjb25zb2xlIik7Ci0g
ICAgaWYgKG1fZnJvbnRlbmQgJiYgbV9zdGF0ZS0+Z2V0Qm9vbGVhbihDb25zb2xlQWdlbnRTdGF0
ZTo6Y29uc29sZU1lc3NhZ2VzRW5hYmxlZCkpCisgICAgaWYgKG1fZnJvbnRlbmQgJiYgbV9lbmFi
bGVkKQogICAgICAgICBtX2Zyb250ZW5kLT5tZXNzYWdlc0NsZWFyZWQoKTsKIH0KIApAQCAtMTMy
LDcgKzE0OCw4IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzZXRGcm9udGVuZChJbnNw
ZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y2xl
YXJGcm9udGVuZCgpCiB7CiAgICAgbV9mcm9udGVuZCA9IDA7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9v
bGVhbihDb25zb2xlQWdlbnRTdGF0ZTo6Y29uc29sZU1lc3NhZ2VzRW5hYmxlZCwgZmFsc2UpOwor
ICAgIFN0cmluZyBlcnJvclN0cmluZzsKKyAgICBkaXNhYmxlKCZlcnJvclN0cmluZyk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VT
b3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywg
UGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKQEAgLTI3OSwxMiArMjk2LDEy
IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRDb25zb2xlTWVzc2FnZShQYXNzT3du
UHRyPENvbnNvbGVNZXNzYWdlPiBjb25zb2xlCiAKICAgICBpZiAobV9wcmV2aW91c01lc3NhZ2Ug
JiYgIWlzR3JvdXBNZXNzYWdlKG1fcHJldmlvdXNNZXNzYWdlLT50eXBlKCkpICYmIG1fcHJldmlv
dXNNZXNzYWdlLT5pc0VxdWFsKGNvbnNvbGVNZXNzYWdlLmdldCgpKSkgewogICAgICAgICBtX3By
ZXZpb3VzTWVzc2FnZS0+aW5jcmVtZW50Q291bnQoKTsKLSAgICAgICAgaWYgKG1fZnJvbnRlbmQg
JiYgbV9zdGF0ZS0+Z2V0Qm9vbGVhbihDb25zb2xlQWdlbnRTdGF0ZTo6Y29uc29sZU1lc3NhZ2Vz
RW5hYmxlZCkpCisgICAgICAgIGlmIChtX2Zyb250ZW5kICYmIG1fZW5hYmxlZCkKICAgICAgICAg
ICAgIG1fcHJldmlvdXNNZXNzYWdlLT51cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZShtX2Zyb250
ZW5kKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZSA9IGNvbnNvbGVN
ZXNzYWdlLmdldCgpOwogICAgICAgICBtX2NvbnNvbGVNZXNzYWdlcy5hcHBlbmQoY29uc29sZU1l
c3NhZ2UpOwotICAgICAgICBpZiAobV9mcm9udGVuZCAmJiBtX3N0YXRlLT5nZXRCb29sZWFuKENv
bnNvbGVBZ2VudFN0YXRlOjpjb25zb2xlTWVzc2FnZXNFbmFibGVkKSkKKyAgICAgICAgaWYgKG1f
ZnJvbnRlbmQgJiYgbV9lbmFibGVkKQogICAgICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2UtPmFk
ZFRvRnJvbnRlbmQobV9mcm9udGVuZCwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsIHRydWUpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5oCmluZGV4IDUyYmUxMTgxODI1MDJmY2MyMDA2NWQ2NDg5Y2U2NmI2MmQzNjQwYWIuLjdm
NDMzOTMxM2MzODFlMTczNzc1MTg4NDJlNmI0MjgyMjFmNjA0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKQEAgLTYxLDYgKzYxLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBjbGVh
ck1lc3NhZ2VzKEVycm9yU3RyaW5nKik7CisgICAgYm9vbCBlbmFibGVkKCkgeyByZXR1cm4gbV9l
bmFibGVkOyB9CiAgICAgdm9pZCByZXNldCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEZyb250
ZW5kKEluc3BlY3RvckZyb250ZW5kKik7CkBAIC0xMDAsNiArMTAxLDkgQEAgcHJvdGVjdGVkOgog
ICAgIGludCBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50OwogICAgIEhhc2hNYXA8U3RyaW5n
LCB1bnNpZ25lZD4gbV9jb3VudHM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIGRvdWJsZT4gbV90aW1l
czsKKyAgICBib29sIG1fZW5hYmxlZDsKK3ByaXZhdGU6CisgICAgc3RhdGljIGludCBzX2VuYWJs
ZWRBZ2VudENvdW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDliZDQzMzEx
ZjkyYjZlOTA3NmJkNDIwMWY1YTFmZDg1MGRhZWJkYjEuLjdmODZmMDQ3ZWMwNjUxMzNmYmZmMDcz
YjVjOWQ1OTRiNThmNjIyMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTIyMyw4ICsyMjMsNiBAQCB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250
ZW5kQ2hhbgogICAgIGZvciAoQWdlbnRzOjppdGVyYXRvciBpdCA9IG1fYWdlbnRzLmJlZ2luKCk7
IGl0ICE9IG1fYWdlbnRzLmVuZCgpOyArK2l0KQogICAgICAgICAoKml0KS0+c2V0RnJvbnRlbmQo
ZnJvbnRlbmQpOwogCi0gICAgaWYgKCFJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250
ZW5kcygpKQotICAgICAgICBTY3JpcHRDb250cm9sbGVyOjpzZXRDYXB0dXJlQ2FsbFN0YWNrRm9y
VW5jYXVnaHRFeGNlcHRpb25zKHRydWUpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZnJvbnRlbmRDcmVhdGVkKCk7CiAKICAgICBBU1NFUlQobV9pbnNwZWN0b3JDbGllbnQpOwpAQCAt
MjUyLDggKzI1MCw2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250
ZW5kKCkKICAgICBtX2luc3BlY3RvckZyb250ZW5kLmNsZWFyKCk7CiAKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmZyb250ZW5kRGVsZXRlZCgpOwotICAgIGlmICghSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSkKLSAgICAgICAgU2NyaXB0Q29udHJvbGxlcjo6
c2V0Q2FwdHVyZUNhbGxTdGFja0ZvclVuY2F1Z2h0RXhjZXB0aW9ucyhmYWxzZSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGViMDYwNzFlNDRm
OWUxMTM5YjJmZjk2M2YxMDIzYzc3ODJiMDljNzguLmZjMzFiM2EyYWY1Yjc2NDY4NzU0NWU4ZmU4
ZTNiNzhjNzg4YjhkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAi
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNTU0FnZW50LmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb25zb2xlQWdl
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5oIgpAQCAtMTEzNCwyMyArMTEzNSwzNSBAQCBib29sIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6Y29sbGVjdGluZ0hUTUxQYXJzZUVycm9ycyhJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Omhhc0Zyb250ZW5kRm9yU2NyaXB0Q29udGV4dChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmNhbnZhc0FnZW50RW5hYmxlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KQogewotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAg
ICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgIWhhc0Zyb250ZW5kcygpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGNhbnZhc0FnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPmlu
c3BlY3RvckNhbnZhc0FnZW50KCk7CisgICAgcmV0dXJuIGNhbnZhc0FnZW50ICYmIGNhbnZhc0Fn
ZW50LT5lbmFibGVkKCk7Cit9CiAKLSNpZiBFTkFCTEUoV09SS0VSUykKLSAgICBpZiAoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpIHsKLSAgICAgICAgV29ya2VyQ29u
dGV4dCogd29ya2VyQ29udGV4dCA9IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihzY3JpcHRF
eGVjdXRpb25Db250ZXh0KTsKLSAgICAgICAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlciogd29y
a2VySW5zcGVjdG9yQ29udHJvbGxlciA9IHdvcmtlckNvbnRleHQtPndvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIoKTsKLSAgICAgICAgcmV0dXJuIHdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIgJiYg
d29ya2VySW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQoKTsKLSAgICB9Ci0jZW5kaWYK
K2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQWdlbnRFbmFibGVkKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7CisgICAgaWYgKCFz
Y3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFoYXNGcm9udGVuZHMoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50c0ZvckNvbnRleHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPmluc3BlY3Rv
ckNvbnNvbGVBZ2VudCgpOworICAgIHJldHVybiBjb25zb2xlQWdlbnQgJiYgY29uc29sZUFnZW50
LT5lbmFibGVkKCk7Cit9CiAKLSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNE
b2N1bWVudCgpKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+
cGFnZSgpOwotICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+
aGFzRnJvbnRlbmQoKTsKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpydW50aW1lQWdl
bnRFbmFibGVkKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoIWZyYW1lIHx8ICFoYXNGcm9udGVu
ZHMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEluc3BlY3RvclJ1bnRpbWVBZ2VudCog
cnVudGltZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKS0+aW5zcGVj
dG9yUnVudGltZUFnZW50KCk7CisgICAgcmV0dXJuIHJ1bnRpbWVBZ2VudCAmJiBydW50aW1lQWdl
bnQtPmVuYWJsZWQoKTsKK30KKworYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnRpbWVs
aW5lQWdlbnRFbmFibGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpCit7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFoYXNGcm9udGVu
ZHMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdl
bnRzRm9yQ29udGV4dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KS0+aW5zcGVjdG9yVGltZWxpbmVB
Z2VudCgpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cGF1c2VPbk5hdGl2
ZUV2ZW50SWZOZWVkZWQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
Ym9vbCBpc0RPTUV2ZW50LCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwgYm9vbCBzeW5jaHJvbm91
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaAppbmRleCA0MDBjNDQzYjg0YTkwZGFlMGJkNWYwODg4YWNlMjZhODNjZGY3OGE3Li44
ZDU3ODUwNGVkMDYyMTZmMjQ2OTEyNzY3OTY3MDAxMjBkNDhmMDUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0yNjMs
MTEgKzI2MywxNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZnJvbnRlbmRDcmVhdGVkKCkg
eyBzX2Zyb250ZW5kQ291bnRlciArPSAxOyB9CiAgICAgc3RhdGljIHZvaWQgZnJvbnRlbmREZWxl
dGVkKCkgeyBzX2Zyb250ZW5kQ291bnRlciAtPSAxOyB9CiAgICAgc3RhdGljIGJvb2wgaGFzRnJv
bnRlbmRzKCkgeyByZXR1cm4gc19mcm9udGVuZENvdW50ZXI7IH0KLSAgICBzdGF0aWMgYm9vbCBo
YXNGcm9udGVuZEZvclNjcmlwdENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAg
IHN0YXRpYyBib29sIGNhbnZhc0FnZW50RW5hYmxlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CisgICAgc3RhdGljIGJvb2wgY29uc29sZUFnZW50RW5hYmxlZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CisgICAgc3RhdGljIGJvb2wgcnVudGltZUFnZW50RW5hYmxlZChGcmFtZSopOworICAg
IHN0YXRpYyBib29sIHRpbWVsaW5lQWdlbnRFbmFibGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKICAgICBzdGF0aWMgYm9vbCBjb2xsZWN0aW5nSFRNTFBhcnNlRXJyb3JzKFBhZ2UqKTsKICNl
bHNlCiAgICAgc3RhdGljIGJvb2wgaGFzRnJvbnRlbmRzKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICBzdGF0aWMgYm9vbCBoYXNGcm9udGVuZEZvclNjcmlwdENvbnRleHQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wgY2FudmFzQWdlbnRF
bmFibGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0
YXRpYyBib29sIGNvbnNvbGVBZ2VudEVuYWJsZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wgcnVudGltZUFnZW50RW5hYmxlZChGcmFt
ZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wgdGltZWxpbmVBZ2VudEVuYWJs
ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgc3RhdGlj
IGJvb2wgY29sbGVjdGluZ0hUTUxQYXJzZUVycm9ycyhQYWdlKikgeyByZXR1cm4gZmFsc2U7IH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwCmluZGV4IDdlNGZkNGI2MjM2ZTNiZTQ5MDFiNzNmMzE4ZDBkZjcwODAxNzdk
NDQuLmEzZGZkZGVjOTBhNTlmNTE1NmVmMmRkZDQxMzVjODVmODk0ODdjMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCkBAIC01
OCw2ICs1OCw3IEBAIHN0YXRpYyBib29sIGFzQm9vbChjb25zdCBib29sKiBjb25zdCBiKQogCiBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6Okluc3BlY3RvclJ1bnRpbWVBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIEluamVj
dGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgIDogSW5zcGVjdG9y
QmFzZUFnZW50PEluc3BlY3RvclJ1bnRpbWVBZ2VudD4oIlJ1bnRpbWUiLCBpbnN0cnVtZW50aW5n
QWdlbnRzLCBzdGF0ZSkKKyAgICAsIG1fZW5hYmxlZChmYWxzZSkKICAgICAsIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikKICAgICAsIG1fc2NyaXB0RGVidWdTZXJ2ZXIoMCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAppbmRleCBmOGUzNDVlMmI3
YzE1N2Y2NmVkMDFlNTM0MThhNjY5YTZiODc1ZTk1Li42NmRiYWZkNjVjMmI4ZmIxNDg2MzBjZTA1
Y2E3MzI3ZDlkYjUzMjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5oCkBAIC01Nyw3ICs1NywxMCBAQCBjbGFzcyBJbnNwZWN0b3JSdW50
aW1lQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dD4sCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yUnVudGltZUFnZW50KCk7CiAKKyAg
ICBib29sIGVuYWJsZWQoKSB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAgICAvLyBQYXJ0IG9mIHRo
ZSBwcm90b2NvbC4KKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKikgeyBtX2Vu
YWJsZWQgPSB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKSB7
IG1fZW5hYmxlZCA9IGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGV2YWx1YXRlKEVycm9yU3Ry
aW5nKiwKICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwKICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsCkBAIC05NSw2ICs5OCw3IEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpID0gMDsKIAogICAg
IEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkgeyByZXR1cm4g
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7IH0KKyAgICBib29sIG1fZW5hYmxlZDsKIAogcHJpdmF0
ZToKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IDI1
NDk1N2E3ZjFmZTU0ODg5OWE1YTNiMjFkZjE1ZmRiYzVhYTc5NDIuLjc0YzNiN2ZmOWRiNjFiOWI1
NDJjOWIyYTYwMzQ5N2VmMzY2ZGI0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdXNpbmcgV2ViQ29yZTo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHREZXNjcmlwdGlvbjsKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFBhZ2VSdW50aW1lQWdlbnRTdGF0ZSB7Ci1zdGF0aWMg
Y29uc3QgY2hhciByZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb25bXSA9ICJyZXBvcnRFeGVj
dXRpb25Db250ZXh0Q3JlYXRpb24iOworc3RhdGljIGNvbnN0IGNoYXIgcnVudGltZUVuYWJsZWRb
XSA9ICJydW50aW1lRW5hYmxlZCI7CiB9OwogCiBQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGlt
ZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3Rv
clN0YXRlKiBzdGF0ZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIFBhZ2UqIHBhZ2UsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JB
Z2VudCogaW5zcGVjdG9yQWdlbnQpCkBAIC03Niw0NyArNzYsNDQgQEAgdm9pZCBQYWdlUnVudGlt
ZUFnZW50OjpjbGVhckZyb250ZW5kKCkKIHsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNl
dFBhZ2VSdW50aW1lQWdlbnQoMCk7CiAgICAgbV9mcm9udGVuZCA9IDA7Ci0gICAgbV9zdGF0ZS0+
c2V0Qm9vbGVhbihQYWdlUnVudGltZUFnZW50U3RhdGU6OnJlcG9ydEV4ZWN1dGlvbkNvbnRleHRD
cmVhdGlvbiwgZmFsc2UpOworICAgIFN0cmluZyBlcnJvclN0cmluZzsKKyAgICBkaXNhYmxlKCZl
cnJvclN0cmluZyk7CiB9CiAKIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6cmVzdG9yZSgpCiB7Ci0g
ICAgaWYgKCFtX3N0YXRlLT5nZXRCb29sZWFuKFBhZ2VSdW50aW1lQWdlbnRTdGF0ZTo6cmVwb3J0
RXhlY3V0aW9uQ29udGV4dENyZWF0aW9uKSkKKyAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihQ
YWdlUnVudGltZUFnZW50U3RhdGU6OnJ1bnRpbWVFbmFibGVkKSkgeworICAgICAgICBTdHJpbmcg
ZXJyb3I7CisgICAgICAgIGVuYWJsZSgmZXJyb3IpOworICAgIH0KK30KKwordm9pZCBQYWdlUnVu
dGltZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQoreworICAgIGlmICht
X2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKKworICAgIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
ZW5hYmxlKGVycm9yU3RyaW5nKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VSdW50aW1l
QWdlbnRTdGF0ZTo6cnVudGltZUVuYWJsZWQsIHRydWUpOwogICAgIC8vIE9ubHkgcmVwb3J0IGV4
aXN0aW5nIGNvbnRleHRzIGlmIHRoZSBwYWdlIGRpZCBjb21taXQgbG9hZCwgb3RoZXJ3aXNlIHdl
IG1heQogICAgIC8vIHVuaW50ZW50aW9uYWxseSBpbml0aWFsaXplIGNvbnRleHRzIGluIHRoZSBm
cmFtZXMgd2hpY2ggbWF5IHRyaWdnZXIgc29tZSBsaXN0ZW5lcnMKICAgICAvLyB0aGF0IGFyZSBl
eHBlY3RlZCB0byBiZSB0cmlnZ2VyZWQgb25seSBhZnRlciB0aGUgbG9hZCBpcyBjb21taXR0ZWQs
IHNlZSBodHRwOi8vY3JidWcuY29tLzEzMTYyMwotICAgIGlmIChtX2luc3BlY3RvckFnZW50LT5k
aWRDb21taXRMb2FkRmlyZWQoKSkgewotICAgICAgICBTdHJpbmcgZXJyb3I7Ci0gICAgICAgIHNl
dFJlcG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlvbigmZXJyb3IsIHRydWUpOwotICAgIH0KKyAg
ICBpZiAobV9pbnNwZWN0b3JBZ2VudC0+ZGlkQ29tbWl0TG9hZEZpcmVkKCkpCisgICAgICAgIHJl
cG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlvbigpOwogfQogCi12b2lkIFBhZ2VSdW50aW1lQWdl
bnQ6OnNldFJlcG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlvbihFcnJvclN0cmluZyosIGJvb2wg
ZW5hYmxlKQordm9pZCBQYWdlUnVudGltZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZykKIHsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VSdW50aW1lQWdlbnRTdGF0
ZTo6cmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9uLCBlbmFibGUpOwotICAgIGlmICghZW5h
YmxlKQorICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm47Ci0gICAgVmVjdG9yPHN0
ZDo6cGFpcjxTY3JpcHRTdGF0ZSosIFNlY3VyaXR5T3JpZ2luKj4gPiBpc29sYXRlZENvbnRleHRz
OwotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAg
aWYgKCFmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRl
U2NyaXB0KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBTdHJpbmcgZnJhbWVJZCA9
IG1fcGFnZUFnZW50LT5mcmFtZUlkKGZyYW1lKTsKIAotICAgICAgICBTY3JpcHRTdGF0ZSogc2Ny
aXB0U3RhdGUgPSBtYWluV29ybGRTY3JpcHRTdGF0ZShmcmFtZSk7Ci0gICAgICAgIG5vdGlmeUNv
bnRleHRDcmVhdGVkKGZyYW1lSWQsIHNjcmlwdFN0YXRlLCAwLCB0cnVlKTsKLSAgICAgICAgZnJh
bWUtPnNjcmlwdCgpLT5jb2xsZWN0SXNvbGF0ZWRDb250ZXh0cyhpc29sYXRlZENvbnRleHRzKTsK
LSAgICAgICAgaWYgKGlzb2xhdGVkQ29udGV4dHMuaXNFbXB0eSgpKQotICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpPCBpc29sYXRlZENvbnRleHRzLnNp
emUoKTsgaSsrKQotICAgICAgICAgICAgbm90aWZ5Q29udGV4dENyZWF0ZWQoZnJhbWVJZCwgaXNv
bGF0ZWRDb250ZXh0c1tpXS5maXJzdCwgaXNvbGF0ZWRDb250ZXh0c1tpXS5zZWNvbmQsIGZhbHNl
KTsKLSAgICAgICAgaXNvbGF0ZWRDb250ZXh0cy5jbGVhcigpOwotICAgIH0KKyAgICBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OmRpc2FibGUoZXJyb3JTdHJpbmcpOworICAgIG1fc3RhdGUtPnNldEJv
b2xlYW4oUGFnZVJ1bnRpbWVBZ2VudFN0YXRlOjpydW50aW1lRW5hYmxlZCwgZmFsc2UpOwogfQog
CiB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0KEZyYW1lKiBmcmFt
ZSkKIHsKLSAgICBpZiAoIW1fc3RhdGUtPmdldEJvb2xlYW4oUGFnZVJ1bnRpbWVBZ2VudFN0YXRl
OjpyZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24pKQorICAgIGlmICghbV9lbmFibGVkKQog
ICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1fZnJvbnRlbmQpOwogICAgIFN0cmluZyBmcmFt
ZUlkID0gbV9wYWdlQWdlbnQtPmZyYW1lSWQoZnJhbWUpOwpAQCAtMTI2LDcgKzEyMyw3IEBAIHZv
aWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3QoRnJhbWUqIGZyYW1lKQog
CiB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUlzb2xhdGVkQ29udGV4dChGcmFtZSog
ZnJhbWUsIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikK
IHsKLSAgICBpZiAoIW1fc3RhdGUtPmdldEJvb2xlYW4oUGFnZVJ1bnRpbWVBZ2VudFN0YXRlOjpy
ZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24pKQorICAgIGlmICghbV9lbmFibGVkKQogICAg
ICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1fZnJvbnRlbmQpOwogICAgIFN0cmluZyBmcmFtZUlk
ID0gbV9wYWdlQWdlbnQtPmZyYW1lSWQoZnJhbWUpOwpAQCAtMTU1LDYgKzE1MiwyNSBAQCB2b2lk
IFBhZ2VSdW50aW1lQWdlbnQ6OnVubXV0ZUNvbnNvbGUoKQogICAgIENvbnNvbGU6OnVubXV0ZSgp
OwogfQogCit2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OnJlcG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVh
dGlvbigpCit7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxTY3JpcHRTdGF0ZSosIFNlY3VyaXR5T3Jp
Z2luKj4gPiBpc29sYXRlZENvbnRleHRzOworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9pbnNw
ZWN0ZWRQYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJh
dmVyc2VOZXh0KCkpIHsKKyAgICAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVT
Y3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBTdHJpbmcgZnJhbWVJZCA9IG1fcGFnZUFnZW50LT5mcmFtZUlkKGZyYW1lKTsKKwor
ICAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBtYWluV29ybGRTY3JpcHRTdGF0ZShm
cmFtZSk7CisgICAgICAgIG5vdGlmeUNvbnRleHRDcmVhdGVkKGZyYW1lSWQsIHNjcmlwdFN0YXRl
LCAwLCB0cnVlKTsKKyAgICAgICAgZnJhbWUtPnNjcmlwdCgpLT5jb2xsZWN0SXNvbGF0ZWRDb250
ZXh0cyhpc29sYXRlZENvbnRleHRzKTsKKyAgICAgICAgaWYgKGlzb2xhdGVkQ29udGV4dHMuaXNF
bXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpPCBpc29sYXRlZENvbnRleHRzLnNpemUoKTsgaSsrKQorICAgICAgICAgICAgbm90aWZ5Q29u
dGV4dENyZWF0ZWQoZnJhbWVJZCwgaXNvbGF0ZWRDb250ZXh0c1tpXS5maXJzdCwgaXNvbGF0ZWRD
b250ZXh0c1tpXS5zZWNvbmQsIGZhbHNlKTsKKyAgICAgICAgaXNvbGF0ZWRDb250ZXh0cy5jbGVh
cigpOworICAgIH0KK30KKwogdm9pZCBQYWdlUnVudGltZUFnZW50Ojpub3RpZnlDb250ZXh0Q3Jl
YXRlZChjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgU2Vj
dXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBib29sIGlzUGFnZUNvbnRleHQpCiB7CiAgICAg
QVNTRVJUKHNlY3VyaXR5T3JpZ2luIHx8IGlzUGFnZUNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKaW5kZXggOWM5MmQ4MDdhMDUyNmY0YzIyNDhj
NTVkNTUxZjBhZDRjNDMzZWE3Ny4uNTI3OGFhNzM3MzhkNGUyYTdhYTkxNGRkNzFhOWFmN2VmMjRm
MDI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCkBA
IC01NSw3ICs1NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5z
cGVjdG9yRnJvbnRlbmQqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgpOwogICAg
IHZpcnR1YWwgdm9pZCByZXN0b3JlKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJlcG9ydEV4ZWN1
dGlvbkNvbnRleHRDcmVhdGlvbihFcnJvclN0cmluZyosIGJvb2wpOworICAgIHZpcnR1YWwgdm9p
ZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0
cmluZyopOwogCiAgICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdChGcmFtZSopOwogICAgIHZv
aWQgZGlkQ3JlYXRlSXNvbGF0ZWRDb250ZXh0KEZyYW1lKiwgU2NyaXB0U3RhdGUqLCBTZWN1cml0
eU9yaWdpbiopOwpAQCAtNjYsNiArNjcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nKiwgY29uc3QgaW50KiBl
eGVjdXRpb25Db250ZXh0SWQpOwogICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29sZSgpOwogICAg
IHZpcnR1YWwgdm9pZCB1bm11dGVDb25zb2xlKCk7CisgICAgdm9pZCByZXBvcnRFeGVjdXRpb25D
b250ZXh0Q3JlYXRpb24oKTsKICAgICB2b2lkIG5vdGlmeUNvbnRleHRDcmVhdGVkKGNvbnN0IFN0
cmluZyYgZnJhbWVJZCwgU2NyaXB0U3RhdGUqLCBTZWN1cml0eU9yaWdpbiosIGJvb2wgaXNQYWdl
Q29udGV4dCk7CiAKICAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCmluZGV4IDMwYzA3NzAwMWFmOTI2
NmVkYjhlMGNhYWQ0MmM5M2Q3MzczMTI2NzIuLmQ3NGUyYWNmYjk2ZjZkNjRlZjkwOWUyYzA2YTIw
ZWZiY2Y2ZGJkNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJS
dW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50
aW1lQWdlbnQuY3BwCkBAIC00OSwxMSArNDksNiBAQCBXb3JrZXJSdW50aW1lQWdlbnQ6On5Xb3Jr
ZXJSdW50aW1lQWdlbnQoKQogewogfQogCi12b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6c2V0UmVw
b3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9uKEVycm9yU3RyaW5nKiBlcnJvciwgYm9vbCkKLXsK
LSAgICAqZXJyb3IgPSAiSXNvbGF0ZWQgY29udGV4dHMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIHdv
cmtlcnMuIjsKLX0KLQogSW5qZWN0ZWRTY3JpcHQgV29ya2VyUnVudGltZUFnZW50OjppbmplY3Rl
ZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNv
bnRleHRJZCkKIHsKICAgICBpZiAoZXhlY3V0aW9uQ29udGV4dElkKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKaW5kZXggNjMxMTA5M2JmNjNkMTYz
NmEzZmEzNjhjNjZkMGRlMzZlYmRkODJlNi4uOWYxOTk3Yjc0MGYzMjhmZjRjMGM3NGFjZGEyMjE4
NjUzMTNhZjBmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1
bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1l
QWdlbnQuaApAQCAtNDcsNyArNDcsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgV29ya2VyUnVudGltZUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlLCBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIsIGNvbnRleHQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+V29ya2Vy
UnVudGltZUFnZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJlcG9ydEV4ZWN1dGlvbkNvbnRl
eHRDcmVhdGlvbihFcnJvclN0cmluZyosIGJvb2wpOwogCiBwcml2YXRlOgogICAgIFdvcmtlclJ1
bnRpbWVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIqLCBXb3JrZXJDb250ZXh0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1J1bnRpbWVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUnVudGltZU1vZGVsLmpzCmluZGV4IGY1NjMzNTYyMmYyODQ5
ZjhkZDQxZWE3NmVjOTRhZTQyMTljMTI1MTkuLmIzOWQ4MDU5ZDAwZTkyNGY3ZjJiOTI3MDIyZmZh
NmNjMGNmNGQ1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUnVudGltZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUnVudGltZU1vZGVsLmpzCkBAIC05NSw3ICs5NSw3IEBAIFdlYkluc3BlY3Rvci5SdW50aW1l
TW9kZWwucHJvdG90eXBlID0gewogICAgIF9kaWRMb2FkQ2FjaGVkUmVzb3VyY2VzOiBmdW5jdGlv
bigpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyUnVudGltZURpc3Bh
dGNoZXIobmV3IFdlYkluc3BlY3Rvci5SdW50aW1lRGlzcGF0Y2hlcih0aGlzKSk7Ci0gICAgICAg
IFJ1bnRpbWVBZ2VudC5zZXRSZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24odHJ1ZSk7Cisg
ICAgICAgIFJ1bnRpbWVBZ2VudC5lbmFibGUoKTsKICAgICB9LAogCiAgICAgX2V4ZWN1dGlvbkNv
bnRleHRDcmVhdGVkOiBmdW5jdGlvbihjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CmluZGV4IGM0NjUxZDc0NDRjZjQ0YWVhZDc5YzBkMmQwYmY4MWZlZWE3NWEyNzcuLjZlOTZlOTdi
OTY0YjUxYjM4ODNiMTZkMmU1MzIyNmVjOThkMzQ1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKQEAgLTgzNCw3ICs4MzQsNyBAQCB2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lcwogCiAgICAg
Ly8gQ2FwdHVyZSBzdGFjayB0cmFjZSBvbmx5IHdoZW4gaW5zcGVjdG9yIGZyb250LWVuZCBpcyBs
b2FkZWQgYXMgaXQgbWF5IGJlIHRpbWUgY29uc3VtaW5nLgogICAgIFJlZlB0cjxTY3JpcHRDYWxs
U3RhY2s+IHN0YWNrVHJhY2U7Ci0gICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFz
RnJvbnRlbmRzKCkpCisgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUFn
ZW50RW5hYmxlZChzb3VyY2VEb2N1bWVudCkpCiAgICAgICAgIHN0YWNrVHJhY2UgPSBjcmVhdGVT
Y3JpcHRDYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJl
LCB0cnVlKTsKIAogICAgIC8vIFNjaGVkdWxlIHRoZSBtZXNzYWdlLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165617</attachid>
            <date>2012-09-25 08:29:13 -0700</date>
            <delta_ts>2012-09-27 04:18:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96730-20120925192831.patch</filename>
            <type>text/plain</type>
            <size>46628</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ3NmI4NzUwM2Q0Mzhk
NDllNDhlMDYxMjM2NGUzYmQzNzYzMWRmZC4uODg2Y2FmZjM2YjAzODY4MTI1MzUwNDc2ZGEwMzI4
NTk3MGE3NDdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0wOS0yNSAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBkbyBub3QgdXNlIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkg
Y2hlY2sgd2hlbiBjb2xsZWN0aW5nIHN0YWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY3MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAtIEludHJvZHVjZWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojpjb25zb2xlfHRpbWVsaW5lfHJ1bnRpbWV8Y2FudmFzQWdlbnRFbmFibGVkCisgICAgICAgIC0g
VXNpbmcgaXQgYWxsIG92ZXIgdGhlIHBsYWNlIGluc3RlYWQgb2YgdGhlIGhhc0Zyb250ZW5kICh0
aGUgbGF0dGVyIGlzIG5vdyBvbmx5IHVzZWQgb25jZSB0byBndWFyZCBob3QgcGF0aCkKKyAgICAg
ICAgLSBJbnRyb2R1Y2VkIGV4cGxpY2l0ICJlbmFibGVkIiBzdGF0ZSBvZiB0aGUgY29uc29sZSBh
bmQgcnVudGltZSBhZ2VudHMKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0Vs
ZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6
Z2V0Q29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU01haW5UaHJlYWRFeGVjU3RhdGU6Omluc3RydW1lbnRG
dW5jdGlvbkNhbGwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRl
Q2FsbFdpdGgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
OgorICAgICAgICAoR2VuZXJhdGVDYWxsV2l0aCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0QXJn
dW1lbnRzQW5kQ2FsbFN0YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0ckdldHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxT
dGFja0F0dHJpYnV0ZUF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tDYWxsYmFjayk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmNhbGxGdW5jdGlvbldpdGhJbnN0cnVtZW50YXRpb24pOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhET01XaW5kb3dTaGVsbDo6c2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXI6OmNhbGxMaXN0ZW5l
ckZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93U2V0VGltZW91dEltcGwpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRDYWxsYmFjayk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXRUaW1lb3V0T3JJbnRlcnZhbCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb25z
b2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29uc29sZUFnZW50OjpjbGVhck1lc3NhZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6Y2xlYXJGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OmVuYWJsZWQpOgorICAgICAgICAoSW5zcGVjdG9yQ29uc29sZUFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYW52
YXNBZ2VudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpjb25zb2xlQWdlbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6cnVudGltZUFnZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnRpbWVsaW5lQWdlbnRFbmFibGVkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpjYW52YXNBZ2VudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQWdlbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cnVudGltZUFnZW50RW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnRpbWVsaW5lQWdlbnRFbmFibGVk
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFnZW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUnVudGltZUFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKEluc3BlY3RvclJ1bnRp
bWVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwOgorICAg
ICAgICAoUGFnZVJ1bnRpbWVBZ2VudFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50
aW1lQWdlbnQ6OmNsZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVB
Z2VudDo6cmVzdG9yZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VSdW50aW1lQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFn
ZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmRpZENs
ZWFyV2luZG93T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmRp
ZENyZWF0ZUlzb2xhdGVkQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFn
ZW50OjpyZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rv
ci9QYWdlUnVudGltZUFnZW50Lmg6CisgICAgICAgIChQYWdlUnVudGltZUFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9S
dW50aW1lTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUnVudGltZU1vZGVsLnByb3Rv
dHlwZS5fZGlkTG9hZENhY2hlZFJlc291cmNlcyk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisKIDIwMTIt
MDktMjUgIE90dG8gRGVyZWsgQ2hldW5nICA8b3RjaGV1bmdAcmltLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBDb29raWUgaW5mbyBpbiBOZXR3b3JrIFJlc291cmNlcyBDb29raWVzIHRh
YiBzaG93cyAiSW52YWxpZCBEYXRlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA3MmJmMzg2YTA2NGYz
NjQ2NWM0NWEyMDUxMDA5MThiY2QxMWRjMDVmLi5lNTljNmIzZTZmOTg4ZGViZjUyMzY2NDdlYzVj
OTRhNzVmYzc3YTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcApAQCAtNzgsNyArNzgsNyBAQCBKU1ZhbHVl
IEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoRXhlY1N0YXRlKiBleGVjKQogICAgIGlm
ICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIEpTVmFsdWUganNWYWx1
ZSA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGNvbnRleHQpKTsKLSAg
ICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSkgeworICAgIGlm
IChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNhbnZhc0FnZW50RW5hYmxlZChjYW52YXMtPmRv
Y3VtZW50KCkpKSB7CiAgICAgICAgIFNjcmlwdE9iamVjdCBjb250ZXh0T2JqZWN0KGV4ZWMsIGpz
VmFsdWUuZ2V0T2JqZWN0KCkpOwogICAgICAgICBTY3JpcHRPYmplY3Qgd3JhcHBlZDsKICAgICAg
ICAgaWYgKGNvbnRleHQtPmlzMmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKaW5kZXggMTA5Y2U4YjkyNzg0MDg2ZmI0ZjllNWVh
MzZmMzIwYzljZGE0NjNlMy4uMjk3Yzk1M2Q4OTM0MGI4Njc5MDUzZDViZGIzOTA5MWVlODcyZGJl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhl
Y1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhl
Y1N0YXRlLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGlubGluZSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgaW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlLCBjb25z
dCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSkKICAgICB7Ci0gICAgICAgIGlmICghSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSkKKyAgICAgICAgaWYgKCFJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnRpbWVsaW5lQWdlbnRFbmFibGVkKGNvbnRleHQpKQogICAgICAgICAg
ICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwogICAgICAgICBTdHJp
bmcgcmVzb3VyY2VOYW1lOwogICAgICAgICBpbnQgbGluZU51bWJlciA9IDE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCA3NjgyMDUxMGQx
MjI2YzZkMjNkMTIxODY5MTJkZTQ2ZGJiOWE1NWQ5Li4yNmFhOWZiYmUyNzIzY2UzZWQ2ZTViNWEz
Y2IxZDU2MzMzYzMwYjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVk
dWxlZEFjdGlvbi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgUGFzc093blB0cjxTY2hlZHVsZWRBY3Rp
b24+IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgRE9NV3JhcHBlclcK
ICAgICBKU1ZhbHVlIHYgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKICAgICBpZiAoZ2V0Q2FsbERhdGEodiwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkgewot
ICAgICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2Fs
bFN0YWNrRm9ySW5zcGVjdG9yKGV4ZWMpKTsKKyAgICAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFj
az4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYykpOwogICAg
ICAgICBpZiAocG9saWN5ICYmICFwb2xpY3ktPmFsbG93RXZhbChjYWxsU3RhY2sucmVsZWFzZSgp
KSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBTdHJpbmcgc3RyaW5nID0g
di50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCmluZGV4IDRmYWVlZWQ4OTUy
YWY5NzVmZTExOGY4NjJhMzQ4ZmFlZmYwZThjOTcuLjE5M2Y2NGZkNThkYmNiMTEwZTIzM2JiNTYy
NTVkZGQ3NjEyMjZkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCkBAIC0xMDQsMTIgKzEwNCwxMiBAQCBQYXNzUmVm
UHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBzaXplX3QgbQogICAgIHJldHVybiBTY3JpcHRDYWxsU3RhY2s6OmNyZWF0ZShmcmFt
ZXMpOwogfQogCi1QYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0
YWNrRm9ySW5zcGVjdG9yKEpTQzo6RXhlY1N0YXRlKiBleGVjKQorUGFzc1JlZlB0cjxTY3JpcHRD
YWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgc2l6ZV90IG1heFN0YWNrU2l6ZSA9IDE7CiAgICAgaWYgKEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpIHsKICAgICAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKLSAgICAgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRG
b3JTY3JpcHRDb250ZXh0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKQorICAgICAgICBpZiAoSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQWdlbnRFbmFibGVkKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpKQogICAgICAgICAgICAgbWF4U3RhY2tTaXplID0gU2NyaXB0Q2FsbFN0YWNrOjpt
YXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlOwogICAgIH0KICAgICByZXR1cm4gY3JlYXRlU2NyaXB0
Q2FsbFN0YWNrKGV4ZWMsIG1heFN0YWNrU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgKaW5kZXggNjg5ZDE2NTM5YWI0OGEx
NGRhYjc0NDcwMWJjMzMyYmZlYTU5YTk5ZS4uNmU5NGIwM2UxZWEyOGM5OGY1NmZiMWI2MmYxYjVl
ZDhjMWRkOTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENhbGxTdGFja0ZhY3RvcnkuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBTY3JpcHRDYWxsU3Rh
Y2s7CiAKIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2so
c2l6ZV90IG1heFN0YWNrU2l6ZSwgYm9vbCBlbXB0eVN0YWNrSXNBbGxvd2VkKTsKIFBhc3NSZWZQ
dHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNDOjpFeGVjU3RhdGUq
LCBzaXplX3QgbWF4U3RhY2tTaXplKTsKLVBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVh
dGVTY3JpcHRDYWxsU3RhY2tGb3JJbnNwZWN0b3IoSlNDOjpFeGVjU3RhdGUqKTsKK1Bhc3NSZWZQ
dHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKEpTQzo6
RXhlY1N0YXRlKik7CiBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gY3JlYXRlU2NyaXB0QXJn
dW1lbnRzKEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGUzNzY2ZDNiYTc2NDRmYzIyMDFmMDQ2MWY4
Mjc4NGI1Njc1OWIxNmUuLjY1OTE0YjU2ODc3ZjY1Y2ExZDkwY2Y2OTU1MjZjMWNmNjY1ZDkxMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCkBAIC0yNTg4LDcgKzI1ODgsNyBAQCBzdWIgR2VuZXJhdGVDYWxsV2l0aAogICAgICAg
ICBwdXNoKEBjYWxsV2l0aEFyZ3MsICJzY3JpcHRBcmd1bWVudHMiKTsKICAgICB9CiAgICAgaWYg
KCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRjYWxsV2l0aCwgIkNh
bGxTdGFjayIpKSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSZWZQdHI8U2Ny
aXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9ySW5zcGVjdG9y
KGV4ZWMpKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPFNj
cmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUo
ZXhlYykpO1xuIik7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IlNjcmlwdENhbGxTdGFjay5oIn0g
PSAxOwogICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgifSA9
IDE7CiAgICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywgImNhbGxTdGFjayIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCAw
NjgxMDU2MDA2MzIxY2JhMjE3MDAyNDUzOGFiZDAxNzVmZDJhMGUyLi44NmQzZWI2OGU5YjI3MDA0
OTQ3MTZhN2I1YjUzMjAxZjExMmY2ODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMTYwOCw3ICsxNjA4LDcgQEAgc3Vi
IEdlbmVyYXRlQ2FsbFdpdGgKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNjcmlwdEFyZ3Vt
ZW50cy5oIik7CiAgICAgfQogICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1
dGVDb250YWlucygkY2FsbFdpdGgsICJDYWxsU3RhY2siKSkgewotICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICRpbmRlbnQgLiAiUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNy
ZWF0ZVNjcmlwdENhbGxTdGFja0Zvckluc3BlY3RvcigpKTtcbiIpOworICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICRpbmRlbnQgLiAiUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNr
KGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoKSk7XG4iKTsKICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAkaW5kZW50IC4gImlmICghY2FsbFN0YWNrKVxuIik7CiAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICIgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7XG4i
KTsKICAgICAgICAgcHVzaChAY2FsbFdpdGhBcmdzLCAiY2FsbFN0YWNrIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmlu
ZGV4IGY0OGE5YzgzMzcwZjUzNGNmNTA4YWEzY2ZlY2FlMjU5NzY2N2VjNjcuLjkxODcxZDRiNzMx
ZTQ1NDdlNTgwOWY0Y2RiZDVhMzAyM2I5ZGQ5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC03NjksNyArNzY5
LDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShFeGUKIEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlw
dEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
c2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKLSAgICBSZWZQdHI8U2NyaXB0
Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9ySW5zcGVjdG9yKGV4
ZWMpKTsKKyAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0
Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjKSk7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19j
YXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC0+
d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShjYWxsU3RhY2spKSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEyOTQsNyArMTI5NCw3IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKICAgICBUZXN0T2JqKiBpbXBsID0g
c3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgUmVmUHRyPFNj
cmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0Zvckluc3BlY3Rv
cihleGVjKSk7CisgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNj
cmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYykpOwogICAgIGltcGwtPnNldFdpdGhTY3JpcHRB
cmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoY2FsbFN0YWNrLCB0b1Rlc3RPYmoodmFsdWUp
KTsKIH0KIApAQCAtMTg1Niw3ICsxODU2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWwKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5m
byk7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlz
LT5pbXBsKCkpOwogICAgIFJlZlB0cjxTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhj
cmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgMCkpOwotICAgIFJlZlB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JJbnNwZWN0b3IoZXhlYykpOwor
ICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3Rh
Y2tGb3JDb25zb2xlKGV4ZWMpKTsKICAgICBpbXBsLT53aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2Fs
bFN0YWNrKHNjcmlwdEFyZ3VtZW50cywgY2FsbFN0YWNrKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCA1MDI0MjhhNzEwMGM1Zjcx
NjYzY2Y1YzY5MTUxNjlkOTcyMjE1NTM1Li41YzE2ZjhhN2MzODk5ZTQzZjBhZWYzYWFkNGRjMTUx
ZmJiNjYxNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtNzEwLDcgKzcxMCw3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0
dHJHZXR0ZXIoCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0QXJndW1l
bnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIFJlZlB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JJbnNwZWN0b3IoKSk7CisgICAg
UmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0Zv
ckNvbnNvbGUoKSk7CiAgICAgaWYgKCFjYWxsU3RhY2spCiAgICAgICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwogICAgIHJldHVybiB0b1Y4KGltcC0+d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxT
dGFja0F0dHJpYnV0ZShjYWxsU3RhY2spLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUo
KSk7CkBAIC03MjEsNyArNzIxLDcgQEAgc3RhdGljIHZvaWQgd2l0aFNjcmlwdEFyZ3VtZW50c0Fu
ZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHIKICAgICBJTkNf
U1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1
dGUuX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CiAgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUp
ID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVl
KSkgOiAwOwotICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3Jp
cHRDYWxsU3RhY2tGb3JJbnNwZWN0b3IoKSk7CisgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4g
Y2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoKSk7CiAgICAgaWYgKCFj
YWxsU3RhY2spCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAgIGltcC0+c2V0V2l0
aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShjYWxsU3RhY2ssIFdURjo6Z2V0
UHRyKHYpKTsKQEAgLTEzNTEsNyArMTM1MSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0NhbGxiYWNrKGNvbnN0IHY4OjpBCiAg
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNr
Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKICAgICBSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoY3JlYXRlU2Ny
aXB0QXJndW1lbnRzKGFyZ3MsIDApKTsKLSAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxs
U3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9ySW5zcGVjdG9yKCkpOworICAgIFJlZlB0cjxT
Y3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xl
KCkpOwogICAgIGlmICghY2FsbFN0YWNrKQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsK
ICAgICBpbXAtPndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2soc2NyaXB0QXJndW1lbnRz
LCBjYWxsU3RhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmNwcAppbmRleCA1ZjMyYmEyMGUxNWZjNTcxMGI4OTA2ZTMzMWNh
MDdmMDBiOGFhMTdlLi5mNTZlZDMzZjdiY2RhNTg5NzIwNzIwODE0MTMwNDcxNGMxOGZlNzQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tG
YWN0b3J5LmNwcApAQCAtMTA1LDEyICsxMDUsMTIgQEAgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhzaXplX3QgbWF4U3RhY2tTaXplLCBib29sIGVtcHQK
ICAgICByZXR1cm4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKHN0YWNrVHJhY2UsIG1heFN0YWNrU2l6
ZSwgZW1wdHlTdGFja0lzQWxsb3dlZCk7CiB9CiAKLVBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
PiBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JJbnNwZWN0b3IoKQorUGFzc1JlZlB0cjxTY3JpcHRD
YWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoKQogewogICAgIHNpemVf
dCBtYXhTdGFja1NpemUgPSAxOwogICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhh
c0Zyb250ZW5kcygpKSB7CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgIGlm
IChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kRm9yU2NyaXB0Q29udGV4dChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KSkKKyAgICAgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6Y29uc29sZUFnZW50RW5hYmxlZChzY3JpcHRFeGVjdXRpb25Db250ZXh0KSkKICAgICAg
ICAgICAgIG1heFN0YWNrU2l6ZSA9IFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRv
Q2FwdHVyZTsKICAgICB9CiAgICAgcmV0dXJuIGNyZWF0ZVNjcmlwdENhbGxTdGFjayhtYXhTdGFj
a1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5oCmluZGV4IDEzOGZjMzdjMzQ3NzY1MGI4ZWRjZTJmZjVmZWI2Mjk0MDBlZTA3
NTIuLmU1NThlMWI4OGE3ZjU0OGRiMWJmZDM1Mzk0NmNlNWIwZmNiMTM1MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgKQEAg
LTQ4LDcgKzQ4LDcgQEAgY29uc3Qgdjg6OlN0YWNrVHJhY2U6OlN0YWNrVHJhY2VPcHRpb25zIHN0
YWNrVHJhY2VPcHRpb25zID0gc3RhdGljX2Nhc3Q8djg6OlN0YWMKIAogUGFzc1JlZlB0cjxTY3Jp
cHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFjayh2ODo6SGFuZGxlPHY4OjpTdGFja1Ry
YWNlPiwgc2l6ZV90IG1heFN0YWNrU2l6ZSk7CiBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4g
Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKHNpemVfdCBtYXhTdGFja1NpemUsIGJvb2wgZW1wdHlTdGFj
a0lzQWxsb3dlZCA9IGZhbHNlKTsKLVBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVT
Y3JpcHRDYWxsU3RhY2tGb3JJbnNwZWN0b3IoKTsKK1Bhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
PiBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKCk7CiBQYXNzUmVmUHRyPFNjcmlwdEFy
Z3VtZW50cz4gY3JlYXRlU2NyaXB0QXJndW1lbnRzKGNvbnN0IHY4OjpBcmd1bWVudHMmIHY4YXJn
dW1lbnRzLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5j
cHAKaW5kZXggNDgwMGFkZTkxNGUyMDIxOGNlOWJmMzg3YWIxZWQ3YWY1Mjk5NWZlOS4uMmZjYWNh
NjJjOGFkNDJhNmYxYjQxMmE5MjZkMDI4ZGJmN2NiOWQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCB2
ODo6TG9jYWw8djg6OlZhbHVlPiBTY3JpcHRDb250cm9sbGVyOjpjYWxsRnVuY3Rpb25XaXRoSW5z
dHJ1bWVudGF0aW9uKFNjcmlwdEV4ZQogICAgICAgICByZXR1cm4gaGFuZGxlTWF4UmVjdXJzaW9u
RGVwdGhFeGNlZWRlZCgpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNv
b2tpZTsKLSAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSAm
JiBjb250ZXh0KSB7CisgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dGltZWxpbmVB
Z2VudEVuYWJsZWQoY29udGV4dCkpIHsKICAgICAgICAgU3RyaW5nIHJlc291cmNlTmFtZTsKICAg
ICAgICAgaW50IGxpbmVOdW1iZXI7CiAgICAgICAgIHJlc291cmNlSW5mbyhmdW5jdGlvbiwgcmVz
b3VyY2VOYW1lLCBsaW5lTnVtYmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggODFlYTIxYTNiOGVkNTRmM2E3YWU2Mjc1MDY3Y2Yy
MmFkMmM2OGI0OC4uMTkzNmFlOGQwYTRiODNkYTEwNGJjZDFlNWM5NDUyY2EzYzczOTQ4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKQEAg
LTYxMSw3ICs2MTEsNyBAQCB2b2lkIFY4RE9NV2luZG93U2hlbGw6OnNldElzb2xhdGVkV29ybGRT
ZWN1cml0eU9yaWdpbihQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPgogewogICAgIEFTU0VSVCgh
bV93b3JsZC0+aXNNYWluV29ybGQoKSk7CiAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIGhl
cmU/Ci0gICAgaWYgKCFtX2lzb2xhdGVkV29ybGRTaGVsbFNlY3VyaXR5T3JpZ2luICYmICFjb250
ZXh0KCkuSXNFbXB0eSgpICYmIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRz
KCkpIHsKKyAgICBpZiAoIW1faXNvbGF0ZWRXb3JsZFNoZWxsU2VjdXJpdHlPcmlnaW4gJiYgIWNv
bnRleHQoKS5Jc0VtcHR5KCkgJiYgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpydW50aW1lQWdl
bnRFbmFibGVkKG1fZnJhbWUpKSB7CiAgICAgICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29w
ZTsKICAgICAgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gU2NyaXB0U3RhdGU6OmZvckNv
bnRleHQodjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KGNvbnRleHQoKSkpOwogICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZUlzb2xhdGVkQ29udGV4dChtX2ZyYW1l
LCBzY3JpcHRTdGF0ZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNw
cAppbmRleCA2MjE0MWQ2NzY0MzNkM2IxN2I4ODQwYmIwMGIzMzVmZjNkY2VhNDU2Li5kOWJiOTU1
NDU0NDQ3ZDhmYjcwNTg5NTU5YTNhMDU5MDE3MWNjYzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNw
cApAQCAtOTUsNyArOTUsNyBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRleHRF
dmVudExpc3RlbmVyOjpjYWxsTGlzdGVuZXJGdW5jdGlvbihTY3JpcHRFeAogICAgICAgICByZXR1
cm4gdjg6OkxvY2FsPHY4OjpWYWx1ZT4oKTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSBjb29raWU7Ci0gICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJv
bnRlbmRzKCkpIHsKKyAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp0aW1lbGluZUFn
ZW50RW5hYmxlZChjb250ZXh0KSkgewogICAgICAgICBTdHJpbmcgcmVzb3VyY2VOYW1lKCJ1bmRl
ZmluZWQiKTsKICAgICAgICAgaW50IGxpbmVOdW1iZXIgPSAxOwogICAgICAgICB2ODo6U2NyaXB0
T3JpZ2luIG9yaWdpbiA9IGhhbmRsZXJGdW5jdGlvbi0+R2V0U2NyaXB0T3JpZ2luKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3Vz
dG9tLmNwcAppbmRleCAwYjQ2OGQ0YmVmN2UyZTNiY2Q0ZWIzNDlkYTg4MmNhMDliODY2ZDVmLi4x
YTkxNzA1ODEyODdjMGQxYjFjNDAzMTljMGViZjczN2U0Y2FlOTIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAK
QEAgLTEyOCw3ICsxMjgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2luZG93U2V0VGltZW91
dEltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogCiAgICAgICAgIGlk
ID0gRE9NVGltZXI6Omluc3RhbGwoc2NyaXB0Q29udGV4dCwgYWN0aW9uLnJlbGVhc2UoKSwgdGlt
ZW91dCwgc2luZ2xlU2hvdCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUmVmUHRyPFNjcmlwdENh
bGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0Zvckluc3BlY3RvcigpKTsK
KyAgICAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENh
bGxTdGFja0ZvckNvbnNvbGUoKSk7CiAgICAgICAgIGlmIChpbXAtPmRvY3VtZW50KCkgJiYgIWlt
cC0+ZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93RXZhbChjYWxsU3Rh
Y2sucmVsZWFzZSgpKSkKICAgICAgICAgICAgIHJldHVybiB2OEludGVnZXIoMCwgYXJncy5HZXRJ
c29sYXRlKCkpOwogICAgICAgICBBU1NFUlQoaW1wLT5mcmFtZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVt
ZW50Q3VzdG9tLmNwcAppbmRleCBhNmZiMjJhNDQxYjk0ZjA4ZjVjYmE1NTVlOTk4ZTdlMDYyYmI1
MzQyLi4xNGFkNGFiYWNiMTA4NGQ5YjAyN2JkYWJiMDFmZTI5MWUyMzFhMmI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENh
bnZhc0VsZW1lbnRDdXN0b20uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50CiAgICAgICAgIHJldHVybiB2ODo6TnVsbChhcmdzLkdldElzb2xhdGUoKSk7CiAgICAg
ZWxzZSBpZiAocmVzdWx0LT5pczJkKCkpIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHY4UmVzdWx0ID0gdG9WOChzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqPihy
ZXN1bHQpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgICAgIGlmIChJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpKSB7CisgICAgICAgIGlmIChJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNhbnZhc0FnZW50RW5hYmxlZChpbXAtPmRvY3VtZW50
KCkpKSB7CiAgICAgICAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBTY3JpcHRTdGF0
ZTo6Zm9yQ29udGV4dCh2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKTsKICAgICAgICAgICAgIFNj
cmlwdE9iamVjdCBjb250ZXh0KHNjcmlwdFN0YXRlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KHY4UmVzdWx0KSk7CiAgICAgICAgICAgICBTY3JpcHRPYmplY3Qgd3JhcHBlZCA9IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d3JhcENhbnZhczJEUmVuZGVyaW5nQ29udGV4dEZvckluc3Ry
dW1lbnRhdGlvbihpbXAtPmRvY3VtZW50KCksIGNvbnRleHQpOwpAQCAtMTA1LDcgKzEwNSw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0Q2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50CiAgICAgICAgIHBlcklzb2xhdGVEYXRhLT5zZXRTaG91
bGRDb2xsZWN0R2FyYmFnZVNvb24oKTsKIAogICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
djhSZXN1bHQgPSB0b1Y4KHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KHJlc3Vs
dCksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICAgICAgaWYgKEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpIHsKKyAgICAgICAgaWYgKEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6Y2FudmFzQWdlbnRFbmFibGVkKGltcC0+ZG9jdW1lbnQoKSkp
IHsKICAgICAgICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpm
b3JDb250ZXh0KHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCkpOwogICAgICAgICAgICAgU2NyaXB0
T2JqZWN0IGdsQ29udGV4dChzY3JpcHRTdGF0ZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dCh2OFJlc3VsdCkpOwogICAgICAgICAgICAgU2NyaXB0T2JqZWN0IHdyYXBwZWQgPSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50
YXRpb24oaW1wLT5kb2N1bWVudCgpLCBnbENvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApp
bmRleCA4OWVjZGM5ODY3OWU4MzViNmMyZmY3NmM1YzUzMGUwNjJhZTYzYjk4Li5jYTkzNTMzNzk3
ZDRjYzU4YjkxNTRjNmRhNTdlOTJkM2ZmOTJmNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApA
QCAtNjcsNyArNjcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2V0VGltZW91dE9ySW50ZXJ2
YWwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogICAgIHY4OjpIYW5kbGU8
djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IHByb3h5LT5jb250ZXh0KCk7CiAgICAgaWYgKGZ1bmN0
aW9uLT5Jc1N0cmluZygpKSB7CiAgICAgICAgIGlmIChDb250ZW50U2VjdXJpdHlQb2xpY3kqIHBv
bGljeSA9IHdvcmtlckNvbnRleHQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKSB7Ci0gICAgICAg
ICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2sgPSBjcmVhdGVTY3JpcHRDYWxs
U3RhY2tGb3JJbnNwZWN0b3IoKTsKKyAgICAgICAgICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+
IGNhbGxTdGFjayA9IGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoKTsKICAgICAgICAg
ICAgIGlmICghcG9saWN5LT5hbGxvd0V2YWwoY2FsbFN0YWNrLnJlbGVhc2UoKSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHY4SW50ZWdlcigwLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCAyMWQ5MjdjMjEz
ODdkNjJlYzFkNmM0MjQ0N2NhZWQ1ZTIxMmM2OGMyLi5iOThhNTA5ZWRlMzkzMDFjYTM1OTg2M2I1
ODcyNDZlNDNjOWUxNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
CkBAIC01ODksMTQgKzU4OSwxNSBAQAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJU
ZWxscyBpbnNwZWN0ZWQgaW5zdGFuY2Uod29ya2VyIG9yIHBhZ2UpIHRoYXQgaXQgY2FuIHJ1biBp
biBjYXNlIGl0IHdhcyBzdGFydGVkIHBhdXNlZC4iCiAgICAgICAgICAgICB9LAogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICJuYW1lIjogInNldFJlcG9ydEV4ZWN1dGlvbkNvbnRleHRD
cmVhdGlvbiIsCi0gICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiZW5hYmxlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRp
b24iOiAiUmVwb3J0aW5nIGVuYWJsZWQgc3RhdGUuIiB9Ci0gICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICAibmFtZSI6ICJlbmFibGUiLAorICAgICAgICAgICAgICAgICJoaWRkZW4i
OiB0cnVlLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJFbmFibGVzIHJlcG9ydGlu
ZyBvZiBleGVjdXRpb24gY29udGV4dHMgY3JlYXRpb24gYnkgbWVhbnMgb2YgPGNvZGU+ZXhlY3V0
aW9uQ29udGV4dENyZWF0ZWQ8L2NvZGU+IGV2ZW50LiBXaGVuIHRoZSByZXBvcnRpbmcgZ2V0cyBl
bmFibGVkIHRoZSBldmVudCB3aWxsIGJlIHNlbnQgaW1tZWRpYXRlbHkgZm9yIGVhY2ggZXhpc3Rp
bmcgZXhlY3V0aW9uIGNvbnRleHQuIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAibmFtZSI6ICJkaXNhYmxlIiwKICAgICAgICAgICAgICAgICAiaGlkZGVu
IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRW5hYmxlcyByZXBvcnRp
bmcgYWJvdXQgY3JlYXRpb24gb2YgZXhlY3V0aW9uIGNvbnRleHRzIGJ5IG1lYW5zIG9mIDxjb2Rl
PmV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkPC9jb2RlPiBldmVudC4gV2hlbiB0aGUgcmVwb3J0aW5n
IGdldHMgZW5hYmxlZCB0aGUgZXZlbnQgd2lsbCBiZSBzZW50IGltbWVkaWF0ZWx5IGZvciBlYWNo
IGV4aXN0aW5nIGV4ZWN1dGlvbiBjb250ZXh0LiIKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiRGlzYWJsZXMgcmVwb3J0aW5nIG9mIGV4ZWN1dGlvbiBjb250ZXh0cyBjcmVhdGlvbi4i
CiAgICAgICAgICAgICB9Ci0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6IFsKICAgICAg
ICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNv
bGVBZ2VudC5jcHAKaW5kZXggYWNlYjJkYTRhZjZmODUzNTFmODhkOThjODNmNjk1ODA1NTgxNjJm
Yi4uZjU0NGIxNTg5Zjk2ZWQyZmI1Y2NjYTY2ZDNiNTljZWEyZTIzNTI3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKQEAgLTQy
LDYgKzQyLDcgQEAKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3Jp
cHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlICJT
Y3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAi
U2NyaXB0UHJvZmlsZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTYwLDEy
ICs2MSwxNSBAQCBzdGF0aWMgY29uc3QgY2hhciBtb25pdG9yaW5nWEhSW10gPSAibW9uaXRvcmlu
Z1hIUiI7CiBzdGF0aWMgY29uc3QgY2hhciBjb25zb2xlTWVzc2FnZXNFbmFibGVkW10gPSAiY29u
c29sZU1lc3NhZ2VzRW5hYmxlZCI7CiB9CiAKK2ludCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnNf
ZW5hYmxlZEFnZW50Q291bnQgPSAwOworCiBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3Rv
ckNvbnNvbGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJ
bnNwZWN0b3JTdGF0ZSogc3RhdGUsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKQogICAgIDogSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckNvbnNvbGVBZ2Vu
dD4oIkNvbnNvbGUiLCBpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSkKICAgICAsIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fZnJvbnRlbmQo
MCkKICAgICAsIG1fcHJldmlvdXNNZXNzYWdlKDApCiAgICAgLCBtX2V4cGlyZWRDb25zb2xlTWVz
c2FnZUNvdW50KDApCisgICAgLCBtX2VuYWJsZWQoZmFsc2UpCiB7CiAgICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JDb25zb2xlQWdlbnQodGhpcyk7CiB9CkBAIC04MCw2ICs4
NCwxMyBAQCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6On5JbnNwZWN0b3JDb25zb2xlQWdlbnQoKQog
CiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKIHsKKyAg
ICBpZiAobV9lbmFibGVkKQorICAgICAgICByZXR1cm47CisgICAgbV9lbmFibGVkID0gdHJ1ZTsK
KyAgICBpZiAoIXNfZW5hYmxlZEFnZW50Q291bnQpCisgICAgICAgIFNjcmlwdENvbnRyb2xsZXI6
OnNldENhcHR1cmVDYWxsU3RhY2tGb3JVbmNhdWdodEV4Y2VwdGlvbnModHJ1ZSk7CisgICAgKytz
X2VuYWJsZWRBZ2VudENvdW50OworCiAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihDb25zb2xlQWdl
bnRTdGF0ZTo6Y29uc29sZU1lc3NhZ2VzRW5hYmxlZCwgdHJ1ZSk7CiAKICAgICBpZiAobV9leHBp
cmVkQ29uc29sZU1lc3NhZ2VDb3VudCkgewpAQCAtOTQsNiArMTA1LDExIEBAIHZvaWQgSW5zcGVj
dG9yQ29uc29sZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQogCiB2b2lkIEluc3BlY3RvckNv
bnNvbGVBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiB7CisgICAgaWYgKCFtX2VuYWJsZWQp
CisgICAgICAgIHJldHVybjsKKyAgICBtX2VuYWJsZWQgPSBmYWxzZTsKKyAgICBpZiAoISgtLXNf
ZW5hYmxlZEFnZW50Q291bnQpKQorICAgICAgICBTY3JpcHRDb250cm9sbGVyOjpzZXRDYXB0dXJl
Q2FsbFN0YWNrRm9yVW5jYXVnaHRFeGNlcHRpb25zKGZhbHNlKTsKICAgICBtX3N0YXRlLT5zZXRC
b29sZWFuKENvbnNvbGVBZ2VudFN0YXRlOjpjb25zb2xlTWVzc2FnZXNFbmFibGVkLCBmYWxzZSk7
CiB9CiAKQEAgLTEwMyw3ICsxMTksNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y2xl
YXJNZXNzYWdlcyhFcnJvclN0cmluZyopCiAgICAgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3Vu
dCA9IDA7CiAgICAgbV9wcmV2aW91c01lc3NhZ2UgPSAwOwogICAgIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLT5yZWxlYXNlT2JqZWN0R3JvdXAoImNvbnNvbGUiKTsKLSAgICBpZiAobV9mcm9udGVu
ZCAmJiBtX3N0YXRlLT5nZXRCb29sZWFuKENvbnNvbGVBZ2VudFN0YXRlOjpjb25zb2xlTWVzc2Fn
ZXNFbmFibGVkKSkKKyAgICBpZiAobV9mcm9udGVuZCAmJiBtX2VuYWJsZWQpCiAgICAgICAgIG1f
ZnJvbnRlbmQtPm1lc3NhZ2VzQ2xlYXJlZCgpOwogfQogCkBAIC0xMzIsNyArMTQ4LDggQEAgdm9p
ZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBm
cm9udGVuZCkKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpjbGVhckZyb250ZW5kKCkKIHsK
ICAgICBtX2Zyb250ZW5kID0gMDsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKENvbnNvbGVBZ2Vu
dFN0YXRlOjpjb25zb2xlTWVzc2FnZXNFbmFibGVkLCBmYWxzZSk7CisgICAgU3RyaW5nIGVycm9y
U3RyaW5nOworICAgIGRpc2FibGUoJmVycm9yU3RyaW5nKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzUmVmUHRyPFNjcmlw
dENhbGxTdGFjaz4gY2FsbFN0YWNrKQpAQCAtMjc5LDEyICsyOTYsMTIgQEAgdm9pZCBJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdlKFBhc3NPd25QdHI8Q29uc29sZU1lc3Nh
Z2U+IGNvbnNvbGUKIAogICAgIGlmIChtX3ByZXZpb3VzTWVzc2FnZSAmJiAhaXNHcm91cE1lc3Nh
Z2UobV9wcmV2aW91c01lc3NhZ2UtPnR5cGUoKSkgJiYgbV9wcmV2aW91c01lc3NhZ2UtPmlzRXF1
YWwoY29uc29sZU1lc3NhZ2UuZ2V0KCkpKSB7CiAgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT5p
bmNyZW1lbnRDb3VudCgpOwotICAgICAgICBpZiAobV9mcm9udGVuZCAmJiBtX3N0YXRlLT5nZXRC
b29sZWFuKENvbnNvbGVBZ2VudFN0YXRlOjpjb25zb2xlTWVzc2FnZXNFbmFibGVkKSkKKyAgICAg
ICAgaWYgKG1fZnJvbnRlbmQgJiYgbV9lbmFibGVkKQogICAgICAgICAgICAgbV9wcmV2aW91c01l
c3NhZ2UtPnVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKG1fZnJvbnRlbmQpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlID0gY29uc29sZU1lc3NhZ2UuZ2V0KCk7CiAg
ICAgICAgIG1fY29uc29sZU1lc3NhZ2VzLmFwcGVuZChjb25zb2xlTWVzc2FnZSk7Ci0gICAgICAg
IGlmIChtX2Zyb250ZW5kICYmIG1fc3RhdGUtPmdldEJvb2xlYW4oQ29uc29sZUFnZW50U3RhdGU6
OmNvbnNvbGVNZXNzYWdlc0VuYWJsZWQpKQorICAgICAgICBpZiAobV9mcm9udGVuZCAmJiBtX2Vu
YWJsZWQpCiAgICAgICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZS0+YWRkVG9Gcm9udGVuZChtX2Zy
b250ZW5kLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlciwgdHJ1ZSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKaW5kZXggNTJi
ZTExODE4MjUwMmZjYzIwMDY1ZDY0ODljZTY2YjYyZDM2NDBhYi4uN2Y0MzM5MzEzYzM4MWUxNzM3
NzUxODg0MmU2YjQyODIyMWY2MDRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNh
YmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyTWVzc2FnZXMoRXJyb3JT
dHJpbmcqKTsKKyAgICBib29sIGVuYWJsZWQoKSB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAgICB2
b2lkIHJlc2V0KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJv
bnRlbmQqKTsKQEAgLTEwMCw2ICsxMDEsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgaW50IG1fZXhwaXJl
ZENvbnNvbGVNZXNzYWdlQ291bnQ7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBtX2Nv
dW50czsKICAgICBIYXNoTWFwPFN0cmluZywgZG91YmxlPiBtX3RpbWVzOworICAgIGJvb2wgbV9l
bmFibGVkOworcHJpdmF0ZToKKyAgICBzdGF0aWMgaW50IHNfZW5hYmxlZEFnZW50Q291bnQ7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggOWJkNDMzMTFmOTJiNmU5MDc2YmQ0MjAx
ZjVhMWZkODUwZGFlYmRiMS4uN2Y4NmYwNDdlYzA2NTEzM2ZiZmYwNzNiNWM5ZDU5NGI1OGY2MjIw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcApAQCAtMjIzLDggKzIyMyw2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVj
dEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFuCiAgICAgZm9y
IChBZ2VudHM6Oml0ZXJhdG9yIGl0ID0gbV9hZ2VudHMuYmVnaW4oKTsgaXQgIT0gbV9hZ2VudHMu
ZW5kKCk7ICsraXQpCiAgICAgICAgICgqaXQpLT5zZXRGcm9udGVuZChmcm9udGVuZCk7CiAKLSAg
ICBpZiAoIUluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpCi0gICAgICAg
IFNjcmlwdENvbnRyb2xsZXI6OnNldENhcHR1cmVDYWxsU3RhY2tGb3JVbmNhdWdodEV4Y2VwdGlv
bnModHJ1ZSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZENyZWF0ZWQo
KTsKIAogICAgIEFTU0VSVChtX2luc3BlY3RvckNsaWVudCk7CkBAIC0yNTIsOCArMjUwLDYgQEAg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoKQogICAgIG1faW5z
cGVjdG9yRnJvbnRlbmQuY2xlYXIoKTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZnJvbnRlbmREZWxldGVkKCk7Ci0gICAgaWYgKCFJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhh
c0Zyb250ZW5kcygpKQotICAgICAgICBTY3JpcHRDb250cm9sbGVyOjpzZXRDYXB0dXJlQ2FsbFN0
YWNrRm9yVW5jYXVnaHRFeGNlcHRpb25zKGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpzaG93KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggZWIwNjA3MWU0NGY5ZTExMzliMmZmOTYzZjEw
MjNjNzc4MmIwOWM3OC4uNGNiNWU1NjhkNGY1NWI3OGZhNjEyYmZmOGUzZjhjNWFkNTZmNzdlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDYW52
YXNBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnNvbGVBZ2VudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmgiCkBAIC0xMTM0LDIzICsxMTM1LDM0IEBAIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpjb2xsZWN0aW5nSFRNTFBhcnNlRXJyb3JzKEluc3RydW1lbnRpbmdBZ2VudHMqIGluCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFz
RnJvbnRlbmRGb3JTY3JpcHRDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2FudmFzQWdl
bnRFbmFibGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
CiB7Ci0gICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgIGlmICghc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCB8fCAhaGFzRnJvbnRlbmRzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCktPmluc3BlY3RvckNhbnZhc0FnZW50KCk7Cit9CiAKLSNpZiBFTkFCTEUoV09SS0VS
UykKLSAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpIHsK
LSAgICAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHN0YXRpY19jYXN0PFdvcmtl
ckNvbnRleHQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICAgICAgV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlciogd29ya2VySW5zcGVjdG9yQ29udHJvbGxlciA9IHdvcmtlckNvbnRleHQt
Pndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICAgICAgcmV0dXJuIHdvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXIgJiYgd29ya2VySW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQo
KTsKLSAgICB9Ci0jZW5kaWYKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xl
QWdlbnRFbmFibGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCit7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFoYXNGcm9udGVuZHMo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudCogY29u
c29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCktPmluc3BlY3RvckNvbnNvbGVBZ2VudCgpOworICAgIHJldHVybiBjb25zb2xlQWdl
bnQgJiYgY29uc29sZUFnZW50LT5lbmFibGVkKCk7Cit9CiAKLSAgICBBU1NFUlQoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIFBhZ2Uq
IHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwotICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS0+aGFzRnJvbnRlbmQoKTsKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpydW50aW1lQWdlbnRFbmFibGVkKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoIWZy
YW1lIHx8ICFoYXNGcm9udGVuZHMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudCogcnVudGltZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZy
YW1lKGZyYW1lKS0+aW5zcGVjdG9yUnVudGltZUFnZW50KCk7CisgICAgcmV0dXJuIHJ1bnRpbWVB
Z2VudCAmJiBydW50aW1lQWdlbnQtPmVuYWJsZWQoKTsKK30KKworYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnRpbWVsaW5lQWdlbnRFbmFibGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250
ZXh0IHx8ICFoYXNGcm9udGVuZHMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KS0+
aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6cGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cywgYm9vbCBpc0RPTUV2ZW50LCBjb25zdCBTdHJpbmcmIGV2ZW50TmFt
ZSwgYm9vbCBzeW5jaHJvbm91cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCA0MDBjNDQzYjg0YTkwZGFlMGJkNWYwODg4
YWNlMjZhODNjZGY3OGE3Li44ZDU3ODUwNGVkMDYyMTZmMjQ2OTEyNzY3OTY3MDAxMjBkNDhmMDUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oCkBAIC0yNjMsMTEgKzI2MywxNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
ZnJvbnRlbmRDcmVhdGVkKCkgeyBzX2Zyb250ZW5kQ291bnRlciArPSAxOyB9CiAgICAgc3RhdGlj
IHZvaWQgZnJvbnRlbmREZWxldGVkKCkgeyBzX2Zyb250ZW5kQ291bnRlciAtPSAxOyB9CiAgICAg
c3RhdGljIGJvb2wgaGFzRnJvbnRlbmRzKCkgeyByZXR1cm4gc19mcm9udGVuZENvdW50ZXI7IH0K
LSAgICBzdGF0aWMgYm9vbCBoYXNGcm9udGVuZEZvclNjcmlwdENvbnRleHQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopOworICAgIHN0YXRpYyBib29sIGNhbnZhc0FnZW50RW5hYmxlZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIGJvb2wgY29uc29sZUFnZW50RW5hYmxlZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIGJvb2wgcnVudGltZUFnZW50RW5h
YmxlZChGcmFtZSopOworICAgIHN0YXRpYyBib29sIHRpbWVsaW5lQWdlbnRFbmFibGVkKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBzdGF0aWMgYm9vbCBjb2xsZWN0aW5nSFRNTFBhcnNl
RXJyb3JzKFBhZ2UqKTsKICNlbHNlCiAgICAgc3RhdGljIGJvb2wgaGFzRnJvbnRlbmRzKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBoYXNGcm9udGVuZEZvclNjcmlwdENvbnRl
eHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGlj
IGJvb2wgY2FudmFzQWdlbnRFbmFibGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHN0YXRpYyBib29sIGNvbnNvbGVBZ2VudEVuYWJsZWQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wgcnVudGlt
ZUFnZW50RW5hYmxlZChGcmFtZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wg
dGltZWxpbmVBZ2VudEVuYWJsZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgc3RhdGljIGJvb2wgY29sbGVjdGluZ0hUTUxQYXJzZUVycm9ycyhQYWdlKikg
eyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IDdlNGZkNGI2MjM2ZTNiZTQ5MDFi
NzNmMzE4ZDBkZjcwODAxNzdkNDQuLmEzZGZkZGVjOTBhNTlmNTE1NmVmMmRkZDQxMzVjODVmODk0
ODdjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwCkBAIC01OCw2ICs1OCw3IEBAIHN0YXRpYyBib29sIGFzQm9vbChjb25zdCBi
b29sKiBjb25zdCBiKQogCiBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Okluc3BlY3RvclJ1bnRpbWVB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JT
dGF0ZSogc3RhdGUsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KQogICAgIDogSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvclJ1bnRpbWVBZ2VudD4oIlJ1bnRp
bWUiLCBpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSkKKyAgICAsIG1fZW5hYmxlZChmYWxzZSkK
ICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICNp
ZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICAsIG1fc2NyaXB0RGVidWdTZXJ2ZXIo
MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1l
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
aAppbmRleCBmOGUzNDVlMmI3YzE1N2Y2NmVkMDFlNTM0MThhNjY5YTZiODc1ZTk1Li42NmRiYWZk
NjVjMmI4ZmIxNDg2MzBjZTA1Y2E3MzI3ZDlkYjUzMjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC01Nyw3ICs1NywxMCBAQCBj
bGFzcyBJbnNwZWN0b3JSdW50aW1lQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PElu
c3BlY3RvclJ1bnRpbWVBZ2VudD4sCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yUnVu
dGltZUFnZW50KCk7CiAKKyAgICBib29sIGVuYWJsZWQoKSB7IHJldHVybiBtX2VuYWJsZWQ7IH0K
ICAgICAvLyBQYXJ0IG9mIHRoZSBwcm90b2NvbC4KKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVy
cm9yU3RyaW5nKikgeyBtX2VuYWJsZWQgPSB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIGRpc2Fi
bGUoRXJyb3JTdHJpbmcqKSB7IG1fZW5hYmxlZCA9IGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lk
IGV2YWx1YXRlKEVycm9yU3RyaW5nKiwKICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYg
ZXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAs
CkBAIC05NSw2ICs5OCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29u
c29sZSgpID0gMDsKIAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKCkgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7IH0KKyAgICBib29sIG1f
ZW5hYmxlZDsKIAogcHJpdmF0ZToKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1l
QWdlbnQuY3BwCmluZGV4IDI1NDk1N2E3ZjFmZTU0ODg5OWE1YTNiMjFkZjE1ZmRiYzVhYTc5NDIu
Ljc0YzNiN2ZmOWRiNjFiOWI1NDJjOWIyYTYwMzQ5N2VmMzY2ZGI0ZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAg
dXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHREZXNj
cmlwdGlvbjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFBhZ2VSdW50aW1lQWdl
bnRTdGF0ZSB7Ci1zdGF0aWMgY29uc3QgY2hhciByZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRp
b25bXSA9ICJyZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24iOworc3RhdGljIGNvbnN0IGNo
YXIgcnVudGltZUVuYWJsZWRbXSA9ICJydW50aW1lRW5hYmxlZCI7CiB9OwogCiBQYWdlUnVudGlt
ZUFnZW50OjpQYWdlUnVudGltZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBp
bmplY3RlZFNjcmlwdE1hbmFnZXIsIFBhZ2UqIHBhZ2UsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFn
ZUFnZW50LCBJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQpCkBAIC03Niw0NyArNzYsNDQg
QEAgdm9pZCBQYWdlUnVudGltZUFnZW50OjpjbGVhckZyb250ZW5kKCkKIHsKICAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMtPnNldFBhZ2VSdW50aW1lQWdlbnQoMCk7CiAgICAgbV9mcm9udGVuZCA9
IDA7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQYWdlUnVudGltZUFnZW50U3RhdGU6OnJlcG9y
dEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlvbiwgZmFsc2UpOworICAgIFN0cmluZyBlcnJvclN0cmlu
ZzsKKyAgICBkaXNhYmxlKCZlcnJvclN0cmluZyk7CiB9CiAKIHZvaWQgUGFnZVJ1bnRpbWVBZ2Vu
dDo6cmVzdG9yZSgpCiB7Ci0gICAgaWYgKCFtX3N0YXRlLT5nZXRCb29sZWFuKFBhZ2VSdW50aW1l
QWdlbnRTdGF0ZTo6cmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9uKSkKKyAgICBpZiAobV9z
dGF0ZS0+Z2V0Qm9vbGVhbihQYWdlUnVudGltZUFnZW50U3RhdGU6OnJ1bnRpbWVFbmFibGVkKSkg
eworICAgICAgICBTdHJpbmcgZXJyb3I7CisgICAgICAgIGVuYWJsZSgmZXJyb3IpOworICAgIH0K
K30KKwordm9pZCBQYWdlUnVudGltZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nKQoreworICAgIGlmIChtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKKworICAgIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudDo6ZW5hYmxlKGVycm9yU3RyaW5nKTsKKyAgICBtX3N0YXRlLT5zZXRC
b29sZWFuKFBhZ2VSdW50aW1lQWdlbnRTdGF0ZTo6cnVudGltZUVuYWJsZWQsIHRydWUpOwogICAg
IC8vIE9ubHkgcmVwb3J0IGV4aXN0aW5nIGNvbnRleHRzIGlmIHRoZSBwYWdlIGRpZCBjb21taXQg
bG9hZCwgb3RoZXJ3aXNlIHdlIG1heQogICAgIC8vIHVuaW50ZW50aW9uYWxseSBpbml0aWFsaXpl
IGNvbnRleHRzIGluIHRoZSBmcmFtZXMgd2hpY2ggbWF5IHRyaWdnZXIgc29tZSBsaXN0ZW5lcnMK
ICAgICAvLyB0aGF0IGFyZSBleHBlY3RlZCB0byBiZSB0cmlnZ2VyZWQgb25seSBhZnRlciB0aGUg
bG9hZCBpcyBjb21taXR0ZWQsIHNlZSBodHRwOi8vY3JidWcuY29tLzEzMTYyMwotICAgIGlmICht
X2luc3BlY3RvckFnZW50LT5kaWRDb21taXRMb2FkRmlyZWQoKSkgewotICAgICAgICBTdHJpbmcg
ZXJyb3I7Ci0gICAgICAgIHNldFJlcG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlvbigmZXJyb3Is
IHRydWUpOwotICAgIH0KKyAgICBpZiAobV9pbnNwZWN0b3JBZ2VudC0+ZGlkQ29tbWl0TG9hZEZp
cmVkKCkpCisgICAgICAgIHJlcG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlvbigpOwogfQogCi12
b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OnNldFJlcG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlvbihF
cnJvclN0cmluZyosIGJvb2wgZW5hYmxlKQordm9pZCBQYWdlUnVudGltZUFnZW50OjpkaXNhYmxl
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKIHsKLSAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBh
Z2VSdW50aW1lQWdlbnRTdGF0ZTo6cmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9uLCBlbmFi
bGUpOwotICAgIGlmICghZW5hYmxlKQorICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1
cm47Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxTY3JpcHRTdGF0ZSosIFNlY3VyaXR5T3JpZ2luKj4g
PiBpc29sYXRlZENvbnRleHRzOwotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9pbnNwZWN0ZWRQ
YWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VO
ZXh0KCkpIHsKLSAgICAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRz
KE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBTdHJpbmcgZnJhbWVJZCA9IG1fcGFnZUFnZW50LT5mcmFtZUlkKGZyYW1lKTsKIAotICAgICAg
ICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBtYWluV29ybGRTY3JpcHRTdGF0ZShmcmFtZSk7
Ci0gICAgICAgIG5vdGlmeUNvbnRleHRDcmVhdGVkKGZyYW1lSWQsIHNjcmlwdFN0YXRlLCAwLCB0
cnVlKTsKLSAgICAgICAgZnJhbWUtPnNjcmlwdCgpLT5jb2xsZWN0SXNvbGF0ZWRDb250ZXh0cyhp
c29sYXRlZENvbnRleHRzKTsKLSAgICAgICAgaWYgKGlzb2xhdGVkQ29udGV4dHMuaXNFbXB0eSgp
KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpPCBp
c29sYXRlZENvbnRleHRzLnNpemUoKTsgaSsrKQotICAgICAgICAgICAgbm90aWZ5Q29udGV4dENy
ZWF0ZWQoZnJhbWVJZCwgaXNvbGF0ZWRDb250ZXh0c1tpXS5maXJzdCwgaXNvbGF0ZWRDb250ZXh0
c1tpXS5zZWNvbmQsIGZhbHNlKTsKLSAgICAgICAgaXNvbGF0ZWRDb250ZXh0cy5jbGVhcigpOwot
ICAgIH0KKyAgICBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmRpc2FibGUoZXJyb3JTdHJpbmcpOwor
ICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oUGFnZVJ1bnRpbWVBZ2VudFN0YXRlOjpydW50aW1lRW5h
YmxlZCwgZmFsc2UpOwogfQogCiB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENsZWFyV2luZG93
T2JqZWN0KEZyYW1lKiBmcmFtZSkKIHsKLSAgICBpZiAoIW1fc3RhdGUtPmdldEJvb2xlYW4oUGFn
ZVJ1bnRpbWVBZ2VudFN0YXRlOjpyZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24pKQorICAg
IGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1fZnJvbnRlbmQp
OwogICAgIFN0cmluZyBmcmFtZUlkID0gbV9wYWdlQWdlbnQtPmZyYW1lSWQoZnJhbWUpOwpAQCAt
MTI2LDcgKzEyMyw3IEBAIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dPYmpl
Y3QoRnJhbWUqIGZyYW1lKQogCiB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUlzb2xh
dGVkQ29udGV4dChGcmFtZSogZnJhbWUsIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbikKIHsKLSAgICBpZiAoIW1fc3RhdGUtPmdldEJvb2xlYW4oUGFnZVJ1
bnRpbWVBZ2VudFN0YXRlOjpyZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24pKQorICAgIGlm
ICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1fZnJvbnRlbmQpOwog
ICAgIFN0cmluZyBmcmFtZUlkID0gbV9wYWdlQWdlbnQtPmZyYW1lSWQoZnJhbWUpOwpAQCAtMTU1
LDYgKzE1MiwyNSBAQCB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OnVubXV0ZUNvbnNvbGUoKQogICAg
IENvbnNvbGU6OnVubXV0ZSgpOwogfQogCit2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OnJlcG9ydEV4
ZWN1dGlvbkNvbnRleHRDcmVhdGlvbigpCit7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxTY3JpcHRT
dGF0ZSosIFNlY3VyaXR5T3JpZ2luKj4gPiBpc29sYXRlZENvbnRleHRzOworICAgIGZvciAoRnJh
bWUqIGZyYW1lID0gbV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgaWYgKCFmcmFtZS0+c2Ny
aXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBTdHJpbmcgZnJhbWVJZCA9IG1fcGFnZUFnZW50LT5m
cmFtZUlkKGZyYW1lKTsKKworICAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBtYWlu
V29ybGRTY3JpcHRTdGF0ZShmcmFtZSk7CisgICAgICAgIG5vdGlmeUNvbnRleHRDcmVhdGVkKGZy
YW1lSWQsIHNjcmlwdFN0YXRlLCAwLCB0cnVlKTsKKyAgICAgICAgZnJhbWUtPnNjcmlwdCgpLT5j
b2xsZWN0SXNvbGF0ZWRDb250ZXh0cyhpc29sYXRlZENvbnRleHRzKTsKKyAgICAgICAgaWYgKGlz
b2xhdGVkQ29udGV4dHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpPCBpc29sYXRlZENvbnRleHRzLnNpemUoKTsgaSsrKQorICAg
ICAgICAgICAgbm90aWZ5Q29udGV4dENyZWF0ZWQoZnJhbWVJZCwgaXNvbGF0ZWRDb250ZXh0c1tp
XS5maXJzdCwgaXNvbGF0ZWRDb250ZXh0c1tpXS5zZWNvbmQsIGZhbHNlKTsKKyAgICAgICAgaXNv
bGF0ZWRDb250ZXh0cy5jbGVhcigpOworICAgIH0KK30KKwogdm9pZCBQYWdlUnVudGltZUFnZW50
Ojpub3RpZnlDb250ZXh0Q3JlYXRlZChjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFNjcmlwdFN0YXRl
KiBzY3JpcHRTdGF0ZSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBib29sIGlzUGFn
ZUNvbnRleHQpCiB7CiAgICAgQVNTRVJUKHNlY3VyaXR5T3JpZ2luIHx8IGlzUGFnZUNvbnRleHQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKaW5kZXggOWM5
MmQ4MDdhMDUyNmY0YzIyNDhjNTVkNTUxZjBhZDRjNDMzZWE3Ny4uNTI3OGFhNzM3MzhkNGUyYTdh
YTkxNGRkNzFhOWFmN2VmMjRmMDI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZVJ1bnRpbWVBZ2VudC5oCkBAIC01NSw3ICs1NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJGcm9udGVuZCgpOwogICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlKCk7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFJlcG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlvbihFcnJvclN0cmluZyosIGJvb2wp
OworICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogCiAgICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVj
dChGcmFtZSopOwogICAgIHZvaWQgZGlkQ3JlYXRlSXNvbGF0ZWRDb250ZXh0KEZyYW1lKiwgU2Ny
aXB0U3RhdGUqLCBTZWN1cml0eU9yaWdpbiopOwpAQCAtNjYsNiArNjcsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3Ry
aW5nKiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpOwogICAgIHZpcnR1YWwgdm9pZCBt
dXRlQ29uc29sZSgpOwogICAgIHZpcnR1YWwgdm9pZCB1bm11dGVDb25zb2xlKCk7CisgICAgdm9p
ZCByZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24oKTsKICAgICB2b2lkIG5vdGlmeUNvbnRl
eHRDcmVhdGVkKGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgU2NyaXB0U3RhdGUqLCBTZWN1cml0eU9y
aWdpbiosIGJvb2wgaXNQYWdlQ29udGV4dCk7CiAKICAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCmlu
ZGV4IDMwYzA3NzAwMWFmOTI2NmVkYjhlMGNhYWQ0MmM5M2Q3MzczMTI2NzIuLmQ3NGUyYWNmYjk2
ZjZkNjRlZjkwOWUyYzA2YTIwZWZiY2Y2ZGJkNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCkBAIC00OSwxMSArNDksNiBAQCBXb3JrZXJS
dW50aW1lQWdlbnQ6On5Xb3JrZXJSdW50aW1lQWdlbnQoKQogewogfQogCi12b2lkIFdvcmtlclJ1
bnRpbWVBZ2VudDo6c2V0UmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9uKEVycm9yU3RyaW5n
KiBlcnJvciwgYm9vbCkKLXsKLSAgICAqZXJyb3IgPSAiSXNvbGF0ZWQgY29udGV4dHMgYXJlIG5v
dCBzdXBwb3J0ZWQgZm9yIHdvcmtlcnMuIjsKLX0KLQogSW5qZWN0ZWRTY3JpcHQgV29ya2VyUnVu
dGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25z
dCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkKIHsKICAgICBpZiAoZXhlY3V0aW9uQ29udGV4dElk
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKaW5k
ZXggNjMxMTA5M2JmNjNkMTYzNmEzZmEzNjhjNjZkMGRlMzZlYmRkODJlNi4uOWYxOTk3Yjc0MGYz
MjhmZjRjMGM3NGFjZGEyMjE4NjUzMTNhZjBmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaApAQCAtNDcsNyArNDcsNiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgV29ya2VyUnVudGltZUFnZW50KGluc3RydW1lbnRpbmdB
Z2VudHMsIHN0YXRlLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIGNvbnRleHQpKTsKICAgICB9CiAg
ICAgdmlydHVhbCB+V29ya2VyUnVudGltZUFnZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJl
cG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlvbihFcnJvclN0cmluZyosIGJvb2wpOwogCiBwcml2
YXRlOgogICAgIFdvcmtlclJ1bnRpbWVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVj
dG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBXb3JrZXJDb250ZXh0Kik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1J1bnRpbWVNb2RlbC5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUnVudGltZU1vZGVsLmpzCmlu
ZGV4IGY1NjMzNTYyMmYyODQ5ZjhkZDQxZWE3NmVjOTRhZTQyMTljMTI1MTkuLmIzOWQ4MDU5ZDAw
ZTkyNGY3ZjJiOTI3MDIyZmZhNmNjMGNmNGQ1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUnVudGltZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUnVudGltZU1vZGVsLmpzCkBAIC05NSw3ICs5NSw3IEBAIFdl
Ykluc3BlY3Rvci5SdW50aW1lTW9kZWwucHJvdG90eXBlID0gewogICAgIF9kaWRMb2FkQ2FjaGVk
UmVzb3VyY2VzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJl
Z2lzdGVyUnVudGltZURpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rvci5SdW50aW1lRGlzcGF0Y2hl
cih0aGlzKSk7Ci0gICAgICAgIFJ1bnRpbWVBZ2VudC5zZXRSZXBvcnRFeGVjdXRpb25Db250ZXh0
Q3JlYXRpb24odHJ1ZSk7CisgICAgICAgIFJ1bnRpbWVBZ2VudC5lbmFibGUoKTsKICAgICB9LAog
CiAgICAgX2V4ZWN1dGlvbkNvbnRleHRDcmVhdGVkOiBmdW5jdGlvbihjb250ZXh0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGM0NjUxZDc0NDRjZjQ0YWVhZDc5YzBkMmQwYmY4MWZl
ZWE3NWEyNzcuLjZlOTZlOTdiOTY0YjUxYjM4ODNiMTZkMmU1MzIyNmVjOThkMzQ1ZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTgzNCw3ICs4MzQsNyBAQCB2b2lkIERPTVdpbmRv
dzo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2Us
IGNvbnN0IE1lcwogCiAgICAgLy8gQ2FwdHVyZSBzdGFjayB0cmFjZSBvbmx5IHdoZW4gaW5zcGVj
dG9yIGZyb250LWVuZCBpcyBsb2FkZWQgYXMgaXQgbWF5IGJlIHRpbWUgY29uc3VtaW5nLgogICAg
IFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IHN0YWNrVHJhY2U7Ci0gICAgaWYgKEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpCisgICAgaWYgKEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6Y29uc29sZUFnZW50RW5hYmxlZChzb3VyY2VEb2N1bWVudCkpCiAgICAgICAgIHN0
YWNrVHJhY2UgPSBjcmVhdGVTY3JpcHRDYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxs
U3RhY2tTaXplVG9DYXB0dXJlLCB0cnVlKTsKIAogICAgIC8vIFNjaGVkdWxlIHRoZSBtZXNzYWdl
Lgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>