<?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>107659</bug_id>
          
          <creation_ts>2013-01-23 03:46:34 -0800</creation_ts>
          <short_desc>QueueStatusServer needs pages to display historical queue data</short_desc>
          <delta_ts>2013-01-29 10:09:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alan Cutter">alancutter</reporter>
          <assigned_to name="Alan Cutter">alancutter</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>814081</commentid>
    <comment_count>0</comment_count>
    <who name="Alan Cutter">alancutter</who>
    <bug_when>2013-01-23 03:46:34 -0800</bug_when>
    <thetext>QueueStatusServer is only recording queue data at the moment, a page handler needs to be written to present the information in a user friendly way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815089</commentid>
    <comment_count>1</comment_count>
      <attachid>184402</attachid>
    <who name="Alan Cutter">alancutter</who>
    <bug_when>2013-01-23 22:39:43 -0800</bug_when>
    <thetext>Created attachment 184402
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815101</commentid>
    <comment_count>2</comment_count>
      <attachid>184402</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-23 22:54:04 -0800</bug_when>
    <thetext>Comment on attachment 184402
Patch

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

&gt; Tools/ChangeLog:8
&gt; +        Created a /queue-charts/&lt;queue-name&gt; handler to present queue and patch data using Google Chart Tools.

I might have just called it charts/ :)

&gt; Tools/QueueStatusServer/config/charts.py:31
&gt; +# How far back to view the history, specified in seconds.
&gt; +default_view_range = 60 * 60 * 24
&gt; +patch_log_limit = 500

Eventually we might want these to be get-parameters to the chart, but OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815106</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-23 23:00:28 -0800</bug_when>
    <thetext>Attachment 184402 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/QueueStatusServer/app.yaml&apos;, u&apos;Tools/QueueStatusServer/config/charts.py&apos;, u&apos;Tools/QueueStatusServer/filters/webkit_extras.py&apos;, u&apos;Tools/QueueStatusServer/handlers/queuecharts.py&apos;, u&apos;Tools/QueueStatusServer/handlers/queuestatus.py&apos;, u&apos;Tools/QueueStatusServer/index.yaml&apos;, u&apos;Tools/QueueStatusServer/main.py&apos;, u&apos;Tools/QueueStatusServer/model/queuelog.py&apos;, u&apos;Tools/QueueStatusServer/stylesheets/charts.css&apos;, u&apos;Tools/QueueStatusServer/templates/queuecharts.html&apos;, u&apos;Tools/QueueStatusServer/templates/queuestatus.html&apos;]&quot; exit_code: 1
Tools/QueueStatusServer/model/queuelog.py:69:  [QueueLog._get_or_create_txn] Class &apos;QueueLog&apos; has no &apos;get_by_key_name&apos; member  [pylint/E1101] [5]
Tools/QueueStatusServer/handlers/queuecharts.py:34:  No name &apos;appengine&apos; in module &apos;google&apos;  [pylint/E0611] [5]
Tools/QueueStatusServer/handlers/queuecharts.py:35:  No name &apos;appengine&apos; in module &apos;google&apos;  [pylint/E0611] [5]
Tools/QueueStatusServer/handlers/queuecharts.py:50:  [QueueCharts.get] Instance of &apos;QueueCharts&apos; has no &apos;error&apos; member  [pylint/E1101] [5]
Tools/QueueStatusServer/handlers/queuecharts.py:64:  [QueueCharts.get] Instance of &apos;QueueCharts&apos; has no &apos;response&apos; member  [pylint/E1101] [5]
Tools/QueueStatusServer/handlers/queuecharts.py:130:  [QueueCharts._get_timestamp] Instance of &apos;QueueCharts&apos; has no &apos;request&apos; member  [pylint/E1101] [5]
Tools/QueueStatusServer/handlers/queuecharts.py:137:  [QueueCharts._get_view_range] Instance of &apos;QueueCharts&apos; has no &apos;request&apos; member  [pylint/E1101] [5]
Total errors found: 7 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815125</commentid>
    <comment_count>4</comment_count>
    <who name="Alan Cutter">alancutter</who>
    <bug_when>2013-01-23 23:16:49 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 184402 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=184402&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:8
&gt; &gt; +        Created a /queue-charts/&lt;queue-name&gt; handler to present queue and patch data using Google Chart Tools.
&gt; 
&gt; I might have just called it charts/ :)
&gt; 

I was leaving room to add bot-charts. (:

&gt; &gt; Tools/QueueStatusServer/config/charts.py:31
&gt; &gt; +# How far back to view the history, specified in seconds.
&gt; &gt; +default_view_range = 60 * 60 * 24
&gt; &gt; +patch_log_limit = 500
&gt; 
&gt; Eventually we might want these to be get-parameters to the chart, but OK.

view_range is a get-parameter already. It is currently a future task to make a decent UI for selecting the range and the time to view from on the page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815187</commentid>
    <comment_count>5</comment_count>
      <attachid>184402</attachid>
    <who name="Alan Cutter">alancutter</who>
    <bug_when>2013-01-24 00:40:24 -0800</bug_when>
    <thetext>Comment on attachment 184402
Patch

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

&gt; Tools/QueueStatusServer/handlers/queuecharts.py:86
&gt; +                    &quot;process_duration&quot;: patch_log.process_duration,
&gt; +                    &quot;retry_count&quot;: patch_log.retry_count,
&gt; +                    &quot;status_update_count&quot;: patch_log.status_update_count,
&gt; +                    &quot;wait_duration&quot;: patch_log.wait_duration,

These two durations should be converted to minutes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815190</commentid>
    <comment_count>6</comment_count>
      <attachid>184426</attachid>
    <who name="Alan Cutter">alancutter</who>
    <bug_when>2013-01-24 00:41:12 -0800</bug_when>
    <thetext>Created attachment 184426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815200</commentid>
    <comment_count>7</comment_count>
    <who name="Alan Cutter">alancutter</who>
    <bug_when>2013-01-24 00:53:10 -0800</bug_when>
    <thetext>A &quot;pre-release&quot; of this patch can be viewed at: http://107659.webkit-commit-queue.appspot.com/queue-charts/chromium-ews
Feel free to suggest improvements to the interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815821</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-24 14:17:28 -0800</bug_when>
    <thetext>Attachment 184426 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/QueueStatusServer/app.yaml&apos;, u&apos;Tools/QueueStatusServer/config/charts.py&apos;, u&apos;Tools/QueueStatusServer/filters/webkit_extras.py&apos;, u&apos;Tools/QueueStatusServer/handlers/queuecharts.py&apos;, u&apos;Tools/QueueStatusServer/handlers/queuestatus.py&apos;, u&apos;Tools/QueueStatusServer/index.yaml&apos;, u&apos;Tools/QueueStatusServer/main.py&apos;, u&apos;Tools/QueueStatusServer/model/queuelog.py&apos;, u&apos;Tools/QueueStatusServer/stylesheets/charts.css&apos;, u&apos;Tools/QueueStatusServer/templates/queuecharts.html&apos;, u&apos;Tools/QueueStatusServer/templates/queuestatus.html&apos;]&quot; exit_code: 1
Tools/QueueStatusServer/model/queuelog.py:69:  [QueueLog._get_or_create_txn] Class &apos;QueueLog&apos; has no &apos;get_by_key_name&apos; member  [pylint/E1101] [5]
Tools/QueueStatusServer/handlers/queuecharts.py:34:  No name &apos;appengine&apos; in module &apos;google&apos;  [pylint/E0611] [5]
Tools/QueueStatusServer/handlers/queuecharts.py:35:  No name &apos;appengine&apos; in module &apos;google&apos;  [pylint/E0611] [5]
Tools/QueueStatusServer/handlers/queuecharts.py:50:  [QueueCharts.get] Instance of &apos;QueueCharts&apos; has no &apos;error&apos; member  [pylint/E1101] [5]
Tools/QueueStatusServer/handlers/queuecharts.py:64:  [QueueCharts.get] Instance of &apos;QueueCharts&apos; has no &apos;response&apos; member  [pylint/E1101] [5]
Tools/QueueStatusServer/handlers/queuecharts.py:130:  [QueueCharts._get_timestamp] Instance of &apos;QueueCharts&apos; has no &apos;request&apos; member  [pylint/E1101] [5]
Tools/QueueStatusServer/handlers/queuecharts.py:137:  [QueueCharts._get_view_range] Instance of &apos;QueueCharts&apos; has no &apos;request&apos; member  [pylint/E1101] [5]
Total errors found: 7 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815834</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-24 14:30:36 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; A &quot;pre-release&quot; of this patch can be viewed at: http://107659.webkit-commit-queue.appspot.com/queue-charts/chromium-ews
&gt; Feel free to suggest improvements to the interface.

Feedback:
- use &quot;Hours Ago&quot; instead of a big time blob to mark the x-asis  You can add a page timestamp somewhere else if you like instead.
- have the hover/click show &quot;20 hours ago&quot; instead of &quot;-20.35&quot;
- In general, all hover/clicks should be rounded to at most 2 decimals.
- I read left-to-right.  It might make sense for &quot;now&quot; (0) to be on the left. :)  Not sure.
- Patches Waiting and Patch Retries lines don&apos;t seem to have any data.
- I&apos;m not sure we&apos;re showing the most interesting graph at the top.  But I&quot;m not sure which is most interesting.

It also might make sense to add a table of &quot;interesting stats&quot; at the top, since those may be easier to read than the graphs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818762</commentid>
    <comment_count>10</comment_count>
      <attachid>185210</attachid>
    <who name="Alan Cutter">alancutter</who>
    <bug_when>2013-01-29 02:51:43 -0800</bug_when>
    <thetext>Created attachment 185210
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818765</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-29 02:53:30 -0800</bug_when>
    <thetext>Attachment 185210 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/QueueStatusServer/app.yaml&apos;, u&apos;Tools/QueueStatusServer/config/charts.py&apos;, u&apos;Tools/QueueStatusServer/filters/webkit_extras.py&apos;, u&apos;Tools/QueueStatusServer/handlers/queuecharts.py&apos;, u&apos;Tools/QueueStatusServer/handlers/queuestatus.py&apos;, u&apos;Tools/QueueStatusServer/index.yaml&apos;, u&apos;Tools/QueueStatusServer/main.py&apos;, u&apos;Tools/QueueStatusServer/model/queuelog.py&apos;, u&apos;Tools/QueueStatusServer/stylesheets/charts.css&apos;, u&apos;Tools/QueueStatusServer/templates/queuecharts.html&apos;, u&apos;Tools/QueueStatusServer/templates/queuestatus.html&apos;]&quot; exit_code: 1
Tools/QueueStatusServer/model/queuelog.py:69:  [QueueLog._get_or_create_txn] Class &apos;QueueLog&apos; has no &apos;get_by_key_name&apos; member  [pylint/E1101] [5]
Tools/QueueStatusServer/handlers/queuecharts.py:137:  trailing whitespace  [pep8/W291] [5]
Tools/QueueStatusServer/handlers/queuecharts.py:34:  No name &apos;appengine&apos; in module &apos;google&apos;  [pylint/E0611] [5]
Tools/QueueStatusServer/handlers/queuecharts.py:35:  No name &apos;appengine&apos; in module &apos;google&apos;  [pylint/E0611] [5]
Tools/QueueStatusServer/handlers/queuecharts.py:47:  [QueueCharts.get] Instance of &apos;QueueCharts&apos; has no &apos;error&apos; member  [pylint/E1101] [5]
Tools/QueueStatusServer/handlers/queuecharts.py:69:  [QueueCharts.get] Instance of &apos;QueueCharts&apos; has no &apos;response&apos; member  [pylint/E1101] [5]
Tools/QueueStatusServer/handlers/queuecharts.py:140:  [QueueCharts._get_timestamp] Instance of &apos;QueueCharts&apos; has no &apos;request&apos; member  [pylint/E1101] [5]
Tools/QueueStatusServer/handlers/queuecharts.py:147:  [QueueCharts._get_view_range] Instance of &apos;QueueCharts&apos; has no &apos;request&apos; member  [pylint/E1101] [5]
Total errors found: 8 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818775</commentid>
    <comment_count>12</comment_count>
    <who name="Alan Cutter">alancutter</who>
    <bug_when>2013-01-29 03:03:16 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #7)
&gt; &gt; A &quot;pre-release&quot; of this patch can be viewed at: http://107659.webkit-commit-queue.appspot.com/queue-charts/chromium-ews
&gt; &gt; Feel free to suggest improvements to the interface.
&gt; 
&gt; Feedback:
&gt; - use &quot;Hours Ago&quot; instead of a big time blob to mark the x-asis  You can add a page timestamp somewhere else if you like instead.

Agreed, changed to use a simpler X axis title.

&gt; - have the hover/click show &quot;20 hours ago&quot; instead of &quot;-20.35&quot;

Tooltip now shows human friendly duration string.

&gt; - In general, all hover/clicks should be rounded to at most 2 decimals.

No more decimals in tooltips.

&gt; - I read left-to-right.  It might make sense for &quot;now&quot; (0) to be on the left. :)  Not sure.

Spoke with others about this, more people seemed to be in favor of a left-to-right timeline.

&gt; - Patches Waiting and Patch Retries lines don&apos;t seem to have any data.

The &quot;patches waiting&quot; seems to work for the commit-queue but not others.
There are some issues with the existing data logging that I&apos;d like to change in a separate bug.

&gt; It also might make sense to add a table of &quot;interesting stats&quot; at the top, since those may be easier to read than the graphs.

Thought about this but couldn&apos;t decide what additional information would be good to show that&apos;s not easily ascertained from the graphs themselves.


Other additions:
 - Ability to choose view range.
 - Automatic time unit selection.
 - More appropriate gridlines.
 - Changed some colours.
 - Added links to other queue charts.

Latest changes can still be seen at: http://107659.webkit-commit-queue.appspot.com/queue-charts/chromium-ews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819042</commentid>
    <comment_count>13</comment_count>
      <attachid>185210</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-29 10:00:12 -0800</bug_when>
    <thetext>Comment on attachment 185210
Patch

I think this is a great start and we should ship and iterate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819052</commentid>
    <comment_count>14</comment_count>
      <attachid>185210</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-29 10:09:23 -0800</bug_when>
    <thetext>Comment on attachment 185210
Patch

Clearing flags on attachment: 185210

Committed r141129: &lt;http://trac.webkit.org/changeset/141129&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819053</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-29 10:09:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184402</attachid>
            <date>2013-01-23 22:39:43 -0800</date>
            <delta_ts>2013-01-24 00:41:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107659-20130124173635.patch</filename>
            <type>text/plain</type>
            <size>24861</size>
            <attacher name="Alan Cutter">alancutter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNjUyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzE4YzA2ZWRkOWFiYWE5Njc2NTg0MTk5YWFmYjMzMjMz
ZWJkZDg3Yy4uODdhZjM3MjhkNmJhNTVjMmM3MjMyMTIwYTdkMjFiYzMyNTQxMjVjMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ5
IEBACiAyMDEzLTAxLTIzICBBbGFuIEN1dHRlciAgPGFsYW5jdXR0ZXJAY2hyb21pdW0ub3JnPgog
CisgICAgICAgIFF1ZXVlU3RhdHVzU2VydmVyIG5lZWRzIHBhZ2VzIHRvIGRpc3BsYXkgaGlzdG9y
aWNhbCBxdWV1ZSBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDc2NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDcmVhdGVkIGEgL3F1ZXVlLWNoYXJ0cy88cXVldWUtbmFtZT4gaGFuZGxlciB0byBw
cmVzZW50IHF1ZXVlIGFuZCBwYXRjaCBkYXRhIHVzaW5nIEdvb2dsZSBDaGFydCBUb29scy4KKwor
ICAgICAgICAqIFF1ZXVlU3RhdHVzU2VydmVyL2FwcC55YW1sOgorICAgICAgICAqIFF1ZXVlU3Rh
dHVzU2VydmVyL2NvbmZpZy9jaGFydHMucHk6IENvcGllZCBmcm9tIFRvb2xzL1F1ZXVlU3RhdHVz
U2VydmVyL21vZGVsL3F1ZXVlbG9nLnB5LgorICAgICAgICAqIFF1ZXVlU3RhdHVzU2VydmVyL2Zp
bHRlcnMvd2Via2l0X2V4dHJhcy5weToKKyAgICAgICAgKHdlYmtpdF9saW5raWZ5KToKKyAgICAg
ICAgKHdlYmtpdF9idWdfaWQpOgorICAgICAgICAod2Via2l0X2F0dGFjaG1lbnRfaWQpOgorICAg
ICAgICAocmVzdWx0c19saW5rKToKKyAgICAgICAgKHF1ZXVlX3N0YXR1c19saW5rKToKKyAgICAg
ICAgKHF1ZXVlX2NoYXJ0c19saW5rKToKKyAgICAgICAgKiBRdWV1ZVN0YXR1c1NlcnZlci9oYW5k
bGVycy9xdWV1ZWNoYXJ0cy5weTogQWRkZWQuCisgICAgICAgIChRdWV1ZUNoYXJ0cyk6CisgICAg
ICAgIChRdWV1ZUNoYXJ0cy5nZXQpOgorICAgICAgICAoUXVldWVDaGFydHMuX2dldF9taW5fbWVk
X21heCk6CisgICAgICAgIChRdWV1ZUNoYXJ0cy5fZ2V0X3BhdGNoX2RhdGEpOgorICAgICAgICAo
UXVldWVDaGFydHMuX2dldF9wYXRjaF9sb2dzKToKKyAgICAgICAgKFF1ZXVlQ2hhcnRzLl9nZXRf
cXVldWVfZGF0YSk6CisgICAgICAgIChRdWV1ZUNoYXJ0cy5fZ2V0X3F1ZXVlX2xvZ3MpOgorICAg
ICAgICAoUXVldWVDaGFydHMuX2dldF90aW1lc3RhbXApOgorICAgICAgICAoUXVldWVDaGFydHMu
X2dldF92aWV3X3JhbmdlKToKKyAgICAgICAgKiBRdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9x
dWV1ZXN0YXR1cy5weToKKyAgICAgICAgKFF1ZXVlU3RhdHVzLmdldCk6CisgICAgICAgICogUXVl
dWVTdGF0dXNTZXJ2ZXIvaW5kZXgueWFtbDoKKyAgICAgICAgKiBRdWV1ZVN0YXR1c1NlcnZlci9t
YWluLnB5OgorICAgICAgICAqIFF1ZXVlU3RhdHVzU2VydmVyL21vZGVsL3F1ZXVlbG9nLnB5Ogor
ICAgICAgICAoUXVldWVMb2cpOgorICAgICAgICAoUXVldWVMb2cuY3JlYXRlX2tleSk6CisgICAg
ICAgIChRdWV1ZUxvZy5nZXRfYXQpOgorICAgICAgICAoUXVldWVMb2cuZ2V0X2N1cnJlbnQpOgor
ICAgICAgICAoUXVldWVMb2cuZ2V0X29yX2NyZWF0ZSk6CisgICAgICAgIChRdWV1ZUxvZy5fZ2V0
X29yX2NyZWF0ZV90eG4pOgorICAgICAgICAqIFF1ZXVlU3RhdHVzU2VydmVyL3N0eWxlc2hlZXRz
L2NoYXJ0cy5jc3M6IEFkZGVkLgorICAgICAgICAoLmNoYXJ0KToKKyAgICAgICAgKiBRdWV1ZVN0
YXR1c1NlcnZlci90ZW1wbGF0ZXMvcXVldWVjaGFydHMuaHRtbDogQWRkZWQuCisgICAgICAgICog
UXVldWVTdGF0dXNTZXJ2ZXIvdGVtcGxhdGVzL3F1ZXVlc3RhdHVzLmh0bWw6CisKKzIwMTMtMDEt
MjMgIEFsYW4gQ3V0dGVyICA8YWxhbmN1dHRlckBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgUXVl
dWVTdGF0dXNTZXJ2ZXIgY3Jhc2hlcyBpbiBwcm9kdWN0aW9uIG9uIG5leHQtcGF0Y2gKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzc3NQogCmRpZmYg
LS1naXQgYS9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci9hcHAueWFtbCBiL1Rvb2xzL1F1ZXVlU3Rh
dHVzU2VydmVyL2FwcC55YW1sCmluZGV4IDEwMTk0NjFhOGFjOTM5YjZhNGI1NTcwNDdhNmVlZmE0
OTFiYzA5MTcuLjUzOTY1YmU1Yjc1M2I4NWFkNjNkYmQxZjVhNDg4MzM5ZWYyZjg5MTUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2FwcC55YW1sCisrKyBiL1Rvb2xzL1F1ZXVl
U3RhdHVzU2VydmVyL2FwcC55YW1sCkBAIC0xLDUgKzEsNSBAQAogYXBwbGljYXRpb246IHdlYmtp
dC1jb21taXQtcXVldWUKLXZlcnNpb246IDEwNzc3NSAjIEJ1Z3ppbGxhIGJ1ZyBJRCBvZiBsYXN0
IG1ham9yIGNoYW5nZQordmVyc2lvbjogMTA3NjU5ICMgQnVnemlsbGEgYnVnIElEIG9mIGxhc3Qg
bWFqb3IgY2hhbmdlCiBydW50aW1lOiBweXRob24KIGFwaV92ZXJzaW9uOiAxCiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2NvbmZpZy9jaGFydHMucHkgYi9Ub29scy9RdWV1
ZVN0YXR1c1NlcnZlci9jb25maWcvY2hhcnRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlZGNlNGZmYzc4NzAy
OTViOTczOTZmNjU5YmIxNmM4OWNkYTFiOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9RdWV1
ZVN0YXR1c1NlcnZlci9jb25maWcvY2hhcnRzLnB5CkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisjIEhvdyBmYXIgYmFjayB0byB2aWV3IHRoZSBoaXN0b3J5LCBzcGVjaWZpZWQg
aW4gc2Vjb25kcy4KK2RlZmF1bHRfdmlld19yYW5nZSA9IDYwICogNjAgKiAyNAorcGF0Y2hfbG9n
X2xpbWl0ID0gNTAwCmRpZmYgLS1naXQgYS9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci9maWx0ZXJz
L3dlYmtpdF9leHRyYXMucHkgYi9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci9maWx0ZXJzL3dlYmtp
dF9leHRyYXMucHkKaW5kZXggYjY0NWY3OGZmYmUyMGM4OWUxZTEwYmI0MTVlZTVhNGQyYjcyNDg1
NC4uNWIzYzliMWRlOWI0NjM1ZGFlNjFiMGNjY2RlZmEyOWI2MjMwODUxOCAxMDA2NDQKLS0tIGEv
VG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvZmlsdGVycy93ZWJraXRfZXh0cmFzLnB5CisrKyBiL1Rv
b2xzL1F1ZXVlU3RhdHVzU2VydmVyL2ZpbHRlcnMvd2Via2l0X2V4dHJhcy5weQpAQCAtMzYsNiAr
MzYsNyBAQCByZWdpc3RlciA9IHdlYmFwcC50ZW1wbGF0ZS5jcmVhdGVfdGVtcGxhdGVfcmVnaXN0
ZXIoKQogYnVnX3JlZ2V4cCA9IHJlLmNvbXBpbGUociJidWcgKD9QPGJ1Z19pZD5cZCspIikKIHBh
dGNoX3JlZ2V4cCA9IHJlLmNvbXBpbGUociJwYXRjaCAoP1A8cGF0Y2hfaWQ+XGQrKSIpCiAKKwog
QHJlZ2lzdGVyLmZpbHRlcgogQHN0cmluZ2ZpbHRlcgogZGVmIHdlYmtpdF9saW5raWZ5KHZhbHVl
KToKQEAgLTQzLDE3ICs0NCwzMiBAQCBkZWYgd2Via2l0X2xpbmtpZnkodmFsdWUpOgogICAgIHZh
bHVlID0gcGF0Y2hfcmVnZXhwLnN1YihyJzxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L2F0dGFjaG1lbnQuY2dpP2lkPVxnPHBhdGNoX2lkPiZhY3Rpb249cHJldHR5cGF0Y2giPnBhdGNo
IFxnPHBhdGNoX2lkPjwvYT4nLCB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUKIAorCiBAcmVnaXN0
ZXIuZmlsdGVyCiBAc3RyaW5nZmlsdGVyCiBkZWYgd2Via2l0X2J1Z19pZCh2YWx1ZSk6CiAgICAg
cmV0dXJuICc8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy9iLyVzIj4lczwvYT4nICUgKHZhbHVl
LCB2YWx1ZSkKIAorCiBAcmVnaXN0ZXIuZmlsdGVyCiBAc3RyaW5nZmlsdGVyCiBkZWYgd2Via2l0
X2F0dGFjaG1lbnRfaWQodmFsdWUpOgogICAgIHJldHVybiAnPGEgaHJlZj0iaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvYXR0YWNobWVudC5jZ2k/aWQ9JXMmYWN0aW9uPXByZXR0eXBhdGNoIj4lczwv
YT4nICUgKHZhbHVlLCB2YWx1ZSkKIAorCiBAcmVnaXN0ZXIuZmlsdGVyCiBAc3RyaW5nZmlsdGVy
CiBkZWYgcmVzdWx0c19saW5rKHN0YXR1c19pZCk6CiAgICAgcmV0dXJuICc8YSBocmVmPSIvcmVz
dWx0cy8lcyI+cmVzdWx0czwvYT4nICUgc3RhdHVzX2lkCisKKworQHJlZ2lzdGVyLmZpbHRlcgor
QHN0cmluZ2ZpbHRlcgorZGVmIHF1ZXVlX3N0YXR1c19saW5rKHF1ZXVlX25hbWUsIHRleHQpOgor
ICAgIHJldHVybiAnPGEgaHJlZj0iL3F1ZXVlLXN0YXR1cy8lcyI+JXM8L2E+JyAlIChxdWV1ZV9u
YW1lLCB0ZXh0KQorCisKK0ByZWdpc3Rlci5maWx0ZXIKK0BzdHJpbmdmaWx0ZXIKK2RlZiBxdWV1
ZV9jaGFydHNfbGluayhxdWV1ZV9uYW1lLCB0ZXh0KToKKyAgICByZXR1cm4gJzxhIGhyZWY9Ii9x
dWV1ZS1jaGFydHMvJXMiPiVzPC9hPicgJSAocXVldWVfbmFtZSwgdGV4dCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3F1ZXVlY2hhcnRzLnB5IGIvVG9vbHMv
UXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvcXVldWVjaGFydHMucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDMz
NGVhNDkwM2FiOGZiYjFkYmRkMTM5YzNhODBkZDBiZmFhZmQwNgotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3F1ZXVlY2hhcnRzLnB5CkBAIC0wLDAg
KzEsMTQxIEBACisjIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGNhbGVuZGFyCitmcm9tIGRhdGV0
aW1lIGltcG9ydCBkYXRldGltZQoraW1wb3J0IGl0ZXJ0b29scworZnJvbSB0aW1lIGltcG9ydCB0
aW1lCisKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcAorZnJvbSBnb29n
bGUuYXBwZW5naW5lLmV4dC53ZWJhcHAgaW1wb3J0IHRlbXBsYXRlCisKK2Zyb20gY29uZmlnIGlt
cG9ydCBsb2dnaW5nLCBjaGFydHMKK2Zyb20gbW9kZWwucGF0Y2hsb2cgaW1wb3J0IFBhdGNoTG9n
Citmcm9tIG1vZGVsLnF1ZXVlcyBpbXBvcnQgUXVldWUKK2Zyb20gbW9kZWwucXVldWVsb2cgaW1w
b3J0IFF1ZXVlTG9nCisKK29uZV9taW51dGUgPSA2MC4wCitvbmVfaG91ciA9IG9uZV9taW51dGUg
KiA2MC4wCisKKworY2xhc3MgUXVldWVDaGFydHMod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKKyAg
ICBkZWYgZ2V0KHNlbGYsIHF1ZXVlX25hbWUpOgorICAgICAgICBxdWV1ZV9uYW1lID0gcXVldWVf
bmFtZS5sb3dlcigpCisgICAgICAgIGlmIG5vdCBRdWV1ZS5xdWV1ZV93aXRoX25hbWUocXVldWVf
bmFtZSk6CisgICAgICAgICAgICBzZWxmLmVycm9yKDQwNCkKKyAgICAgICAgICAgIHJldHVybgor
CisgICAgICAgIHRpbWVzdGFtcCA9IHNlbGYuX2dldF90aW1lc3RhbXAoKQorICAgICAgICB2aWV3
X3JhbmdlID0gc2VsZi5fZ2V0X3ZpZXdfcmFuZ2UoKQorCisgICAgICAgIHRlbXBsYXRlX3ZhbHVl
cyA9IHsKKyAgICAgICAgICAgICJob3Vyc19mcm9tX3RpbWVzdGFtcF9taW4iOiAtdmlld19yYW5n
ZSAvIG9uZV9ob3VyLAorICAgICAgICAgICAgImhvdXJzX2Zyb21fdGltZXN0YW1wX21heCI6IDAs
CisgICAgICAgICAgICAicGF0Y2hfZGF0YSI6IHNlbGYuX2dldF9wYXRjaF9kYXRhKHF1ZXVlX25h
bWUsIHRpbWVzdGFtcCwgdmlld19yYW5nZSksCisgICAgICAgICAgICAicXVldWVfZGF0YSI6IHNl
bGYuX2dldF9xdWV1ZV9kYXRhKHF1ZXVlX25hbWUsIHRpbWVzdGFtcCwgdmlld19yYW5nZSksCisg
ICAgICAgICAgICAicXVldWVfbmFtZSI6IHF1ZXVlX25hbWUsCisgICAgICAgICAgICAidGltZXN0
YW1wX21zIjogdGltZXN0YW1wICogMTAwMCwKKyAgICAgICAgfQorICAgICAgICBzZWxmLnJlc3Bv
bnNlLm91dC53cml0ZSh0ZW1wbGF0ZS5yZW5kZXIoInRlbXBsYXRlcy9xdWV1ZWNoYXJ0cy5odG1s
IiwgdGVtcGxhdGVfdmFsdWVzKSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfZ2V0X21p
bl9tZWRfbWF4KGNscywgdmFsdWVzLCBkZWZhdWx0cz0oMCwgMCwgMCkpOgorICAgICAgICBpZiBu
b3QgdmFsdWVzOgorICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRzCisgICAgICAgIGxlbmd0aCA9
IGxlbih2YWx1ZXMpCisgICAgICAgIHNvcnRlZF92YWx1ZXMgPSBzb3J0ZWQodmFsdWVzKQorICAg
ICAgICByZXR1cm4gc29ydGVkX3ZhbHVlc1swXSwgc29ydGVkX3ZhbHVlc1tsZW5ndGggLyAyXSwg
c29ydGVkX3ZhbHVlc1tsZW5ndGggLSAxXQorCisgICAgZGVmIF9nZXRfcGF0Y2hfZGF0YShzZWxm
LCBxdWV1ZV9uYW1lLCB0aW1lc3RhbXAsIHZpZXdfcmFuZ2UpOgorICAgICAgICBwYXRjaF9sb2dz
ID0gc2VsZi5fZ2V0X3BhdGNoX2xvZ3MocXVldWVfbmFtZSwgdGltZXN0YW1wLCB2aWV3X3Jhbmdl
KQorICAgICAgICBwYXRjaF9kYXRhID0gW10KKyAgICAgICAgZm9yIHBhdGNoX2xvZyBpbiBwYXRj
aF9sb2dzOgorICAgICAgICAgICAgaWYgcGF0Y2hfbG9nLnByb2Nlc3NfZHVyYXRpb24gYW5kIHBh
dGNoX2xvZy53YWl0X2R1cmF0aW9uOgorICAgICAgICAgICAgICAgIHBhdGNoX2xvZ190aW1lc3Rh
bXAgPSBjYWxlbmRhci50aW1lZ20ocGF0Y2hfbG9nLmRhdGUudXRjdGltZXR1cGxlKCkpCisgICAg
ICAgICAgICAgICAgcGF0Y2hfZGF0YS5hcHBlbmQoeworICAgICAgICAgICAgICAgICAgICAiYXR0
YWNobWVudF9pZCI6IHBhdGNoX2xvZy5hdHRhY2htZW50X2lkLAorICAgICAgICAgICAgICAgICAg
ICAiaG91cnNfZnJvbV90aW1lc3RhbXAiOiBmbG9hdChwYXRjaF9sb2dfdGltZXN0YW1wIC0gdGlt
ZXN0YW1wKSAvIG9uZV9ob3VyLAorICAgICAgICAgICAgICAgICAgICAicHJvY2Vzc19kdXJhdGlv
biI6IHBhdGNoX2xvZy5wcm9jZXNzX2R1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAicmV0
cnlfY291bnQiOiBwYXRjaF9sb2cucmV0cnlfY291bnQsCisgICAgICAgICAgICAgICAgICAgICJz
dGF0dXNfdXBkYXRlX2NvdW50IjogcGF0Y2hfbG9nLnN0YXR1c191cGRhdGVfY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICJ3YWl0X2R1cmF0aW9uIjogcGF0Y2hfbG9nLndhaXRfZHVyYXRpb24s
CisgICAgICAgICAgICAgICB9KQorICAgICAgICByZXR1cm4gcGF0Y2hfZGF0YQorCisgICAgZGVm
IF9nZXRfcGF0Y2hfbG9ncyhzZWxmLCBxdWV1ZV9uYW1lLCB0aW1lc3RhbXAsIHZpZXdfcmFuZ2Up
OgorICAgICAgICBwYXRjaF9sb2dfcXVlcnkgPSBQYXRjaExvZy5hbGwoKQorICAgICAgICBwYXRj
aF9sb2dfcXVlcnkgPSBwYXRjaF9sb2dfcXVlcnkuZmlsdGVyKCJxdWV1ZV9uYW1lID0iLCBxdWV1
ZV9uYW1lKQorICAgICAgICBwYXRjaF9sb2dfcXVlcnkgPSBwYXRjaF9sb2dfcXVlcnkuZmlsdGVy
KCJkYXRlID49IiwgZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0aW1lc3RhbXAgLSB2aWV3X3Jh
bmdlKSkKKyAgICAgICAgcGF0Y2hfbG9nX3F1ZXJ5ID0gcGF0Y2hfbG9nX3F1ZXJ5LmZpbHRlcigi
ZGF0ZSA8PSIsIGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodGltZXN0YW1wKSkKKyAgICAgICAg
cGF0Y2hfbG9nX3F1ZXJ5ID0gcGF0Y2hfbG9nX3F1ZXJ5Lm9yZGVyKCJkYXRlIikKKyAgICAgICAg
cmV0dXJuIHBhdGNoX2xvZ19xdWVyeS5ydW4obGltaXQ9Y2hhcnRzLnBhdGNoX2xvZ19saW1pdCkK
KworICAgIGRlZiBfZ2V0X3F1ZXVlX2RhdGEoc2VsZiwgcXVldWVfbmFtZSwgdGltZXN0YW1wLCB2
aWV3X3JhbmdlKToKKyAgICAgICAgcXVldWVfbG9ncyA9IHNlbGYuX2dldF9xdWV1ZV9sb2dzKHF1
ZXVlX25hbWUsIHRpbWVzdGFtcCwgdmlld19yYW5nZSkKKyAgICAgICAgcXVldWVfZGF0YSA9IFtd
CisgICAgICAgIGZvciBxdWV1ZV9sb2cgaW4gcXVldWVfbG9nczoKKyAgICAgICAgICAgIHF1ZXVl
X2xvZ190aW1lc3RhbXAgPSBjYWxlbmRhci50aW1lZ20ocXVldWVfbG9nLmRhdGUudXRjdGltZXR1
cGxlKCkpCisgICAgICAgICAgICBwX21pbiwgcF9tZWQsIHBfbWF4ID0gc2VsZi5fZ2V0X21pbl9t
ZWRfbWF4KHF1ZXVlX2xvZy5wYXRjaF9wcm9jZXNzX2R1cmF0aW9ucykKKyAgICAgICAgICAgIHdf
bWluLCB3X21lZCwgd19tYXggPSBzZWxmLl9nZXRfbWluX21lZF9tYXgocXVldWVfbG9nLnBhdGNo
X3dhaXRfZHVyYXRpb25zKQorICAgICAgICAgICAgcXVldWVfZGF0YS5hcHBlbmQoeworICAgICAg
ICAgICAgICAgICJib3RzX3NlZW4iOiBsZW4ocXVldWVfbG9nLmJvdF9pZHNfc2VlbiksCisgICAg
ICAgICAgICAgICAgImhvdXJzX2Zyb21fdGltZXN0YW1wIjogZmxvYXQocXVldWVfbG9nX3RpbWVz
dGFtcCAtIHRpbWVzdGFtcCkgLyBvbmVfaG91ciwKKyAgICAgICAgICAgICAgICAicGF0Y2hfcHJv
Y2Vzc2luZ19taW5zX21heCI6IHBfbWluIC8gb25lX21pbnV0ZSwKKyAgICAgICAgICAgICAgICAi
cGF0Y2hfcHJvY2Vzc2luZ19taW5zX21lZCI6IHBfbWVkIC8gb25lX21pbnV0ZSwKKyAgICAgICAg
ICAgICAgICAicGF0Y2hfcHJvY2Vzc2luZ19taW5zX21pbiI6IHBfbWF4IC8gb25lX21pbnV0ZSwK
KyAgICAgICAgICAgICAgICAicGF0Y2hfcmV0cnlfY291bnQiOiBxdWV1ZV9sb2cucGF0Y2hfcmV0
cnlfY291bnQsCisgICAgICAgICAgICAgICAgInBhdGNoX3dhaXRpbmdfbWluc19tYXgiOiB3X21p
biAvIG9uZV9taW51dGUsCisgICAgICAgICAgICAgICAgInBhdGNoX3dhaXRpbmdfbWluc19tZWQi
OiB3X21lZCAvIG9uZV9taW51dGUsCisgICAgICAgICAgICAgICAgInBhdGNoX3dhaXRpbmdfbWlu
c19taW4iOiB3X21heCAvIG9uZV9taW51dGUsCisgICAgICAgICAgICAgICAgInBhdGNoZXNfY29t
cGxldGVkIjogbGVuKHF1ZXVlX2xvZy5wYXRjaF9wcm9jZXNzX2R1cmF0aW9ucyksCisgICAgICAg
ICAgICAgICAgInBhdGNoZXNfd2FpdGluZyI6IHF1ZXVlX2xvZy5tYXhfcGF0Y2hlc193YWl0aW5n
LAorICAgICAgICAgICAgICAgICJzdGF0dXNfdXBkYXRlX2NvdW50IjogcXVldWVfbG9nLnN0YXR1
c191cGRhdGVfY291bnQsCisgICAgICAgICAgICB9KQorICAgICAgICByZXR1cm4gcXVldWVfZGF0
YQorCisgICAgZGVmIF9nZXRfcXVldWVfbG9ncyhzZWxmLCBxdWV1ZV9uYW1lLCB0aW1lc3RhbXAs
IHZpZXdfcmFuZ2UpOgorICAgICAgICBxdWV1ZV9sb2dzID0gW10KKyAgICAgICAgY3VycmVudF90
aW1lc3RhbXAgPSB0aW1lc3RhbXAgLSB2aWV3X3JhbmdlCisgICAgICAgIHdoaWxlIGN1cnJlbnRf
dGltZXN0YW1wIDw9IHRpbWVzdGFtcDoKKyAgICAgICAgICAgIHF1ZXVlX2xvZ3MuYXBwZW5kKFF1
ZXVlTG9nLmdldF9hdChxdWV1ZV9uYW1lLCBsb2dnaW5nLnF1ZXVlX2xvZ19kdXJhdGlvbiwgY3Vy
cmVudF90aW1lc3RhbXApKQorICAgICAgICAgICAgY3VycmVudF90aW1lc3RhbXAgKz0gbG9nZ2lu
Zy5xdWV1ZV9sb2dfZHVyYXRpb24KKyAgICAgICAgcmV0dXJuIHF1ZXVlX2xvZ3MKKworICAgIGRl
ZiBfZ2V0X3RpbWVzdGFtcChzZWxmKToKKyAgICAgICAgdGltZXN0YW1wID0gc2VsZi5yZXF1ZXN0
LmdldCgidGltZXN0YW1wIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIGludCh0
aW1lc3RhbXApCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJu
IGludCh0aW1lKCkpCisKKyAgICBkZWYgX2dldF92aWV3X3JhbmdlKHNlbGYpOgorICAgICAgICB2
aWV3X3JhbmdlID0gc2VsZi5yZXF1ZXN0LmdldCgidmlld19yYW5nZSIpCisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIHJldHVybiBpbnQodmlld19yYW5nZSkKKyAgICAgICAgZXhjZXB0IFZhbHVl
RXJyb3I6CisgICAgICAgICAgICByZXR1cm4gY2hhcnRzLmRlZmF1bHRfdmlld19yYW5nZQpkaWZm
IC0tZ2l0IGEvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvcXVldWVzdGF0dXMucHkg
Yi9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9xdWV1ZXN0YXR1cy5weQppbmRleCA5
MDU0ZmNhYjFiNmQxODZkODY5ZDNiY2E1OWU2YmMyZjMzZjdiNzZiLi40ZjRlMmQyOGI1OWM3M2Fk
MmZjZThiMGZiNzI5MmU2Zjk3NGMyYTRiIDEwMDY0NAotLS0gYS9Ub29scy9RdWV1ZVN0YXR1c1Nl
cnZlci9oYW5kbGVycy9xdWV1ZXN0YXR1cy5weQorKysgYi9Ub29scy9RdWV1ZVN0YXR1c1NlcnZl
ci9oYW5kbGVycy9xdWV1ZXN0YXR1cy5weQpAQCAtMTA0LDYgKzEwNCw3IEBAIGNsYXNzIFF1ZXVl
U3RhdHVzKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6CiAKICAgICAgICAgc3RhdHVzZXMgPSBzZWxm
Ll9mZXRjaF9zdGF0dXNlcyhxdWV1ZSwgYm90X2lkKQogICAgICAgICB0ZW1wbGF0ZV92YWx1ZXMg
PSB7CisgICAgICAgICAgICAicXVldWVfbmFtZSI6IHF1ZXVlX25hbWUsCiAgICAgICAgICAgICAi
cGFnZV90aXRsZSI6IHNlbGYuX3BhZ2VfdGl0bGUocXVldWUsIGJvdF9pZCksCiAgICAgICAgICAg
ICAid29ya19pdGVtX3Jvd3MiOiBzZWxmLl9yb3dzX2Zvcl93b3JrX2l0ZW1zKHF1ZXVlKSwKICAg
ICAgICAgICAgICJzdGF0dXNfZ3JvdXBzIjogc2VsZi5fYnVpbGRfc3RhdHVzX2dyb3VwcyhzdGF0
dXNlcyksCmRpZmYgLS1naXQgYS9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci9pbmRleC55YW1sIGIv
VG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaW5kZXgueWFtbAppbmRleCAzNGViNzJlNWE1NmUzN2M0
ZWE1N2FiZTU1YTc5ZGRkYTJkMjYwNmZlLi42OTRmNzdiZDE0ZjJjNzRjYWY3MTA4MGE1NTEwZWU2
ZmZlODYyZjkzIDEwMDY0NAotLS0gYS9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci9pbmRleC55YW1s
CisrKyBiL1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2luZGV4LnlhbWwKQEAgLTEwLDYgKzEwLDEx
IEBAIGluZGV4ZXM6CiAjIGF1dG9tYXRpY2FsbHkgdXBsb2FkZWQgdG8gdGhlIGFkbWluIGNvbnNv
bGUgd2hlbiB5b3UgbmV4dCBkZXBsb3kKICMgeW91ciBhcHBsaWNhdGlvbiB1c2luZyBhcHBjZmcu
cHkuCiAKKy0ga2luZDogUGF0Y2hMb2cKKyAgcHJvcGVydGllczoKKyAgLSBuYW1lOiBxdWV1ZV9u
YW1lCisgIC0gbmFtZTogZGF0ZQorCiAtIGtpbmQ6IFF1ZXVlU3RhdHVzCiAgIHByb3BlcnRpZXM6
CiAgIC0gbmFtZTogYWN0aXZlX3BhdGNoX2lkCmRpZmYgLS1naXQgYS9Ub29scy9RdWV1ZVN0YXR1
c1NlcnZlci9tYWluLnB5IGIvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbWFpbi5weQppbmRleCBl
MTE1NWZmYTZmMDA4YjI5MDBlNzkxZjQ1MjFlZTgyMjE0NmVlZGVhLi43YmE1OWRlYTc1NzIxNTJh
OTZlM2Y2OTM3ODFmYWQyMWM5ZTFmNDg1IDEwMDY0NAotLS0gYS9Ub29scy9RdWV1ZVN0YXR1c1Nl
cnZlci9tYWluLnB5CisrKyBiL1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21haW4ucHkKQEAgLTM5
LDYgKzM5LDcgQEAgZnJvbSBoYW5kbGVycy5nYyBpbXBvcnQgR0MKIGZyb20gaGFuZGxlcnMubmV4
dHBhdGNoIGltcG9ydCBOZXh0UGF0Y2gKIGZyb20gaGFuZGxlcnMucGF0Y2ggaW1wb3J0IFBhdGNo
CiBmcm9tIGhhbmRsZXJzLnBhdGNoc3RhdHVzIGltcG9ydCBQYXRjaFN0YXR1cworZnJvbSBoYW5k
bGVycy5xdWV1ZWNoYXJ0cyBpbXBvcnQgUXVldWVDaGFydHMKIGZyb20gaGFuZGxlcnMucXVldWVz
dGF0dXMgaW1wb3J0IFF1ZXVlU3RhdHVzCiBmcm9tIGhhbmRsZXJzLnJlY2VudHN0YXR1cyBpbXBv
cnQgUXVldWVzT3ZlcnZpZXcKIGZyb20gaGFuZGxlcnMucmVsZWFzZXBhdGNoIGltcG9ydCBSZWxl
YXNlUGF0Y2gKQEAgLTYzLDYgKzY0LDcgQEAgcm91dGVzID0gWwogICAgIChyJy9yZXN1bHRzLygu
KiknLCBTaG93UmVzdWx0cyksCiAgICAgKHInL3N0YXR1cy1idWJibGUvKC4qKScsIFN0YXR1c0J1
YmJsZSksCiAgICAgKHInL3N2bi1yZXZpc2lvbi8oLiopJywgU1ZOUmV2aXNpb24pLAorICAgIChy
Jy9xdWV1ZS1jaGFydHMvKC4qKScsIFF1ZXVlQ2hhcnRzKSwKICAgICAocicvcXVldWUtc3RhdHVz
LyguKikvYm90cy8oLiopJywgUXVldWVTdGF0dXMpLAogICAgIChyJy9xdWV1ZS1zdGF0dXMvKC4q
KScsIFF1ZXVlU3RhdHVzKSwKICAgICAocicvbmV4dC1wYXRjaC8oLiopJywgTmV4dFBhdGNoKSwK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsL3F1ZXVlbG9nLnB5IGIv
VG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwvcXVldWVsb2cucHkKaW5kZXggODI5YjhhNjJh
YzY4NTc1MzY3NmUwMWQ1NTBiZjBjOTllODE5YjFmYy4uOThlM2IxZTVhZTBiODliM2U0ZTJjZGY2
Yjg5MDNjYzA0ZTZlODNhOCAxMDA2NDQKLS0tIGEvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbW9k
ZWwvcXVldWVsb2cucHkKKysrIGIvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwvcXVldWVs
b2cucHkKQEAgLTQ0LDE0ICs0NCwyOSBAQCBjbGFzcyBRdWV1ZUxvZyhkYi5Nb2RlbCk6CiAgICAg
cGF0Y2hfcmV0cnlfY291bnQgPSBkYi5JbnRlZ2VyUHJvcGVydHkoZGVmYXVsdD0wKQogICAgIHN0
YXR1c191cGRhdGVfY291bnQgPSBkYi5JbnRlZ2VyUHJvcGVydHkoZGVmYXVsdD0wKQogCisgICAg
QHN0YXRpY21ldGhvZAorICAgIGRlZiBjcmVhdGVfa2V5KHF1ZXVlX25hbWUsIGR1cmF0aW9uLCB0
aW1lc3RhbXApOgorICAgICAgICByZXR1cm4gIiVzLSVzLSVzIiAlIChxdWV1ZV9uYW1lLCBkdXJh
dGlvbiwgdGltZXN0YW1wKQorCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGdldF9jdXJyZW50
KGNscywgcXVldWVfbmFtZSwgZHVyYXRpb24pOgotICAgICAgICB0aW1lc3RhbXBfbm93ID0gdGlt
ZSgpCi0gICAgICAgIHRpbWVzdGFtcCA9IGludCh0aW1lc3RhbXBfbm93IC8gZHVyYXRpb24pICog
ZHVyYXRpb24KKyAgICBkZWYgZ2V0X2F0KGNscywgcXVldWVfbmFtZSwgZHVyYXRpb24sIHRpbWVz
dGFtcCk6CisgICAgICAgIHRpbWVzdGFtcCA9IGludCh0aW1lc3RhbXAgLyBkdXJhdGlvbikgKiBk
dXJhdGlvbgogICAgICAgICBkYXRlID0gZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0aW1lc3Rh
bXApCiAgICAgICAgIGtleSA9IGNscy5jcmVhdGVfa2V5KHF1ZXVlX25hbWUsIGR1cmF0aW9uLCB0
aW1lc3RhbXApCi0gICAgICAgIHJldHVybiBjbHMuZ2V0X29yX2luc2VydChrZXksIGRhdGU9ZGF0
ZSwgZHVyYXRpb249ZHVyYXRpb24sIHF1ZXVlX25hbWU9cXVldWVfbmFtZSkKKyAgICAgICAgcmV0
dXJuIGNscy5nZXRfb3JfY3JlYXRlKGtleSwgZGF0ZT1kYXRlLCBkdXJhdGlvbj1kdXJhdGlvbiwg
cXVldWVfbmFtZT1xdWV1ZV9uYW1lKQogCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBjcmVh
dGVfa2V5KHF1ZXVlX25hbWUsIGR1cmF0aW9uLCB0aW1lc3RhbXApOgotICAgICAgICByZXR1cm4g
IiVzLSVzLSVzIiAlIChxdWV1ZV9uYW1lLCBkdXJhdGlvbiwgdGltZXN0YW1wKQorICAgIEBjbGFz
c21ldGhvZAorICAgIGRlZiBnZXRfY3VycmVudChjbHMsIHF1ZXVlX25hbWUsIGR1cmF0aW9uKToK
KyAgICAgICAgcmV0dXJuIGNscy5nZXRfYXQocXVldWVfbmFtZSwgZHVyYXRpb24sIHRpbWUoKSkK
KworICAgICMgVGhpcyBpcyB0byBwcmV2ZW50IHBhZ2UgcmVxdWVzdHMgZnJvbSBnZW5lcmF0aW5n
IGxvdHMgb2Ygcm93cyBpbiB0aGUgZGF0YWJhc2UuCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVm
IGdldF9vcl9jcmVhdGUoY2xzLCBrZXlfbmFtZSwgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4g
ZGIucnVuX2luX3RyYW5zYWN0aW9uKGNscy5fZ2V0X29yX2NyZWF0ZV90eG4sIGtleV9uYW1lLCAq
Kmt3YXJncykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfZ2V0X29yX2NyZWF0ZV90eG4o
Y2xzLCBrZXlfbmFtZSwgKiprd2FyZ3MpOgorICAgICAgICBlbnRpdHkgPSBjbHMuZ2V0X2J5X2tl
eV9uYW1lKGtleV9uYW1lLCBwYXJlbnQ9a3dhcmdzLmdldCgncGFyZW50JykpCisgICAgICAgIGlm
IGVudGl0eSBpcyBOb25lOgorICAgICAgICAgICAgZW50aXR5ID0gY2xzKGtleV9uYW1lPWtleV9u
YW1lLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIGVudGl0eQpkaWZmIC0tZ2l0IGEvVG9vbHMv
UXVldWVTdGF0dXNTZXJ2ZXIvc3R5bGVzaGVldHMvY2hhcnRzLmNzcyBiL1Rvb2xzL1F1ZXVlU3Rh
dHVzU2VydmVyL3N0eWxlc2hlZXRzL2NoYXJ0cy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZlZWU4ZjJhNjhl
NDEzNWIyMmUwYzMyNzc2MjA5NzNiOTc4NWYwYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1F1
ZXVlU3RhdHVzU2VydmVyL3N0eWxlc2hlZXRzL2NoYXJ0cy5jc3MKQEAgLTAsMCArMSw0IEBACisu
Y2hhcnQgeworICBtYXJnaW4tYm90dG9tOiA0MHB4OworICBoZWlnaHQ6IDIwMHB4OworfQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1F1ZXVlU3RhdHVzU2Vy
dmVyL3RlbXBsYXRlcy9xdWV1ZWNoYXJ0cy5odG1sIGIvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIv
dGVtcGxhdGVzL3F1ZXVlY2hhcnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA2YmYzZjIzYzNjMTIxNzll
NTNiNjA5ZjUyYmQyMjRmYWU5ODYzMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1F1ZXVlU3Rh
dHVzU2VydmVyL3RlbXBsYXRlcy9xdWV1ZWNoYXJ0cy5odG1sCkBAIC0wLDAgKzEsMTYwIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8dGl0bGU+e3sgcXVldWVfbmFt
ZSB9fSBDaGFydHM8L3RpdGxlPgorICAgIDxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii9zdHlsZXNoZWV0cy9tYWluLmNzcyIgLz4KKyAgICA8bGluayB0eXBlPSJ0
ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvc3R5bGVzaGVldHMvY2hhcnRzLmNzcyIg
Lz4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5n
b29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+CisgICAgICBnb29nbGUubG9hZCgndmlzdWFsaXphdGlvbicsICcxLjAnLCB7J3BhY2th
Z2VzJzpbJ2NvcmVjaGFydCddfSk7CisgICAgICBnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZnVu
Y3Rpb24gKCkgeworICAgICAgICB2YXIgZGF0YSwgY2hhcnQsIG9wdGlvbnM7CisKKyAgICAgICAg
dmFyIHRpbWVzdGFtcE1zID0ge3sgdGltZXN0YW1wX21zIH19OworICAgICAgICB2YXIgdGltZVN0
cmluZyA9IG5ldyBEYXRlKHRpbWVzdGFtcE1zKS50b1N0cmluZygpOworICAgICAgICB2YXIgaEF4
aXNUaXRsZTsKKyAgICAgICAgaWYgKE1hdGguYWJzKHRpbWVzdGFtcE1zIC0gbmV3IERhdGUoKS5n
ZXRUaW1lKCkpIDwgNjAwMDApIHsKKyAgICAgICAgICBoQXhpc1RpdGxlID0gIkhvdXJzIEZyb20g
Tm93ICgiICsgdGltZVN0cmluZyArICIpIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBo
QXhpc1RpdGxlID0gIkhvdXJzIEZyb20gIiArIHRpbWVTdHJpbmc7CisgICAgICAgIH0KKworICAg
ICAgICBvcHRpb25zID0geworICAgICAgICAgIGxlZ2VuZDoge3Bvc2l0aW9uOiAidG9wIn0sCisg
ICAgICAgICAgaEF4aXM6IHsKKyAgICAgICAgICAgIHRpdGxlOiBoQXhpc1RpdGxlLAorICAgICAg
ICAgICAgdmlld1dpbmRvdzogeworICAgICAgICAgICAgICBtaW46IHt7IGhvdXJzX2Zyb21fdGlt
ZXN0YW1wX21pbiB9fSwKKyAgICAgICAgICAgICAgbWF4OiB7eyBob3Vyc19mcm9tX3RpbWVzdGFt
cF9tYXggfX0sCisgICAgICAgICAgICB9LAorICAgICAgICAgIH0sCisgICAgICAgICAgdkF4aXM6
IHt2aWV3V2luZG93OiB7bWluOiB7eyAwIH19IH0gfSwKKyAgICAgICAgICBsaW5lV2lkdGg6IDMs
CisgICAgICAgIH07CisKKyAgICAgICAgb3B0aW9ucy5jb2xvcnMgPSBbImdyZWVuIiwgInJlZCIs
ICJvcmFuZ2UiXTsKKyAgICAgICAgZGF0YSA9IGdvb2dsZS52aXN1YWxpemF0aW9uLmFycmF5VG9E
YXRhVGFibGUoWworICAgICAgICAgIFsiPHRpbWU+IiwgIlBhdGNoZXMgQ29tcGxldGVkIiwgIlBh
dGNoZXMgV2FpdGluZyIsICJCb3RzICh2aXNpYmxlIHRvIHNlcnZlcikiXSwKKyAgICAgICAgICB7
JSBmb3IgcXVldWVfZGF0dW0gaW4gcXVldWVfZGF0YSAlfQorICAgICAgICAgICAgWworICAgICAg
ICAgICAgICB7eyBxdWV1ZV9kYXR1bS5ob3Vyc19mcm9tX3RpbWVzdGFtcCB9fSwKKyAgICAgICAg
ICAgICAge3sgcXVldWVfZGF0dW0ucGF0Y2hlc19jb21wbGV0ZWQgfX0sCisgICAgICAgICAgICAg
IHt7IHF1ZXVlX2RhdHVtLnBhdGNoZXNfd2FpdGluZyB9fSwKKyAgICAgICAgICAgICAge3sgcXVl
dWVfZGF0dW0uYm90c19zZWVuIH19CisgICAgICAgICAgICBdLAorICAgICAgICAgIHslIGVuZGZv
ciAlfQorICAgICAgICBdKTsKKyAgICAgICAgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRp
b24uTGluZUNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFydDEnKSk7CisgICAgICAg
IGNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CisKKyAgICAgICAgb3B0aW9ucy5jb2xvcnMgPSBb
ImJsdWUiLCAicHVycGxlIl07CisgICAgICAgIGRhdGEgPSBnb29nbGUudmlzdWFsaXphdGlvbi5h
cnJheVRvRGF0YVRhYmxlKFsKKyAgICAgICAgICBbIjx0aW1lPiIsICJTdGF0dXMgVXBkYXRlcyIs
ICJQYXRjaCBSZXRyaWVzIl0sCisgICAgICAgICAgeyUgZm9yIHF1ZXVlX2RhdHVtIGluIHF1ZXVl
X2RhdGEgJX0KKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAge3sgcXVldWVfZGF0dW0uaG91
cnNfZnJvbV90aW1lc3RhbXAgfX0sCisgICAgICAgICAgICAgIHt7IHF1ZXVlX2RhdHVtLnN0YXR1
c191cGRhdGVfY291bnQgfX0sCisgICAgICAgICAgICAgIHt7IHF1ZXVlX2RhdHVtLnBhdGNoX3Jl
dHJ5X2NvdW50IH19CisgICAgICAgICAgICBdLAorICAgICAgICAgIHslIGVuZGZvciAlfQorICAg
ICAgICBdKTsKKyAgICAgICAgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uTGluZUNo
YXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFydDInKSk7CisgICAgICAgIGNoYXJ0LmRy
YXcoZGF0YSwgb3B0aW9ucyk7CisKKyAgICAgICAgb3B0aW9ucy5jb2xvcnMgPSBbImdyZWVuIl07
CisgICAgICAgIG9wdGlvbnMudkF4aXMudGl0bGUgPSAiTWludXRlcyI7CisgICAgICAgIGRhdGEg
PSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CisgICAgICAgIGRhdGEuYWRk
Q29sdW1uKCJudW1iZXIiLCAiPHRpbWU+Iik7CisgICAgICAgIGRhdGEuYWRkQ29sdW1uKCJudW1i
ZXIiLCAiUGF0Y2ggUHJvY2Vzc2luZyBUaW1lcyIpOworICAgICAgICBkYXRhLmFkZENvbHVtbih7
dHlwZTogIm51bWJlciIsIHJvbGU6ICJpbnRlcnZhbCJ9KTsKKyAgICAgICAgZGF0YS5hZGRDb2x1
bW4oe3R5cGU6ICJudW1iZXIiLCByb2xlOiAiaW50ZXJ2YWwifSk7CisgICAgICAgIGRhdGEuYWRk
Um93cyhbCisgICAgICAgICAgeyUgZm9yIHF1ZXVlX2RhdHVtIGluIHF1ZXVlX2RhdGEgJX0KKyAg
ICAgICAgICAgIFsKKyAgICAgICAgICAgICAge3sgcXVldWVfZGF0dW0uaG91cnNfZnJvbV90aW1l
c3RhbXAgfX0sCisgICAgICAgICAgICAgIHt7IHF1ZXVlX2RhdHVtLnBhdGNoX3Byb2Nlc3Npbmdf
bWluc19tZWQgfX0sCisgICAgICAgICAgICAgIHt7IHF1ZXVlX2RhdHVtLnBhdGNoX3Byb2Nlc3Np
bmdfbWluc19taW4gfX0sCisgICAgICAgICAgICAgIHt7IHF1ZXVlX2RhdHVtLnBhdGNoX3Byb2Nl
c3NpbmdfbWluc19tYXggfX0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgeyUgZW5kZm9yICV9
CisgICAgICAgIF0pOworICAgICAgICBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5M
aW5lQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYXJ0MycpKTsKKyAgICAgICAgY2hh
cnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKKworICAgICAgICBvcHRpb25zLmNvbG9ycyA9IFsicmVk
Il07CisgICAgICAgIGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7
CisgICAgICAgIGRhdGEuYWRkQ29sdW1uKCJudW1iZXIiLCAiPHRpbWU+Iik7CisgICAgICAgIGRh
dGEuYWRkQ29sdW1uKCJudW1iZXIiLCAiUGF0Y2ggV2FpdGluZyBUaW1lcyIpOworICAgICAgICBk
YXRhLmFkZENvbHVtbih7dHlwZTogIm51bWJlciIsIHJvbGU6ICJpbnRlcnZhbCJ9KTsKKyAgICAg
ICAgZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICJudW1iZXIiLCByb2xlOiAiaW50ZXJ2YWwifSk7Cisg
ICAgICAgIGRhdGEuYWRkUm93cyhbCisgICAgICAgICAgeyUgZm9yIHF1ZXVlX2RhdHVtIGluIHF1
ZXVlX2RhdGEgJX0KKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAge3sgcXVldWVfZGF0dW0u
aG91cnNfZnJvbV90aW1lc3RhbXAgfX0sCisgICAgICAgICAgICAgIHt7IHF1ZXVlX2RhdHVtLnBh
dGNoX3dhaXRpbmdfbWluc19tZWQgfX0sCisgICAgICAgICAgICAgIHt7IHF1ZXVlX2RhdHVtLnBh
dGNoX3dhaXRpbmdfbWluc19taW4gfX0sCisgICAgICAgICAgICAgIHt7IHF1ZXVlX2RhdHVtLnBh
dGNoX3dhaXRpbmdfbWluc19tYXggfX0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgeyUgZW5k
Zm9yICV9CisgICAgICAgIF0pOworICAgICAgICBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXph
dGlvbi5MaW5lQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYXJ0NCcpKTsKKyAgICAg
ICAgY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKKworICAgICAgICBvcHRpb25zLmNvbG9ycyA9
IFsiZ3JlZW4iLCAicmVkIl07CisgICAgICAgIGRlbGV0ZSBvcHRpb25zLmxpbmVXaWR0aDsKKyAg
ICAgICAgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKKyAgICAg
ICAgZGF0YS5hZGRDb2x1bW4oIm51bWJlciIsICI8dGltZT4iKTsKKyAgICAgICAgZGF0YS5hZGRD
b2x1bW4oIm51bWJlciIsICJQcm9jZXNzIER1cmF0aW9uIik7CisgICAgICAgIGRhdGEuYWRkQ29s
dW1uKHt0eXBlOiAic3RyaW5nIiwgcm9sZTogInRvb2x0aXAifSk7CisgICAgICAgIGRhdGEuYWRk
Q29sdW1uKCJudW1iZXIiLCAiV2FpdCBEdXJhdGlvbiIpOworICAgICAgICBkYXRhLmFkZENvbHVt
bih7dHlwZTogInN0cmluZyIsIHJvbGU6ICJ0b29sdGlwIn0pOworICAgICAgICBkYXRhLmFkZFJv
d3MoWworICAgICAgICAgIHslIGZvciBwYXRjaF9kYXR1bSBpbiBwYXRjaF9kYXRhICV9CisgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgIHt7IHBhdGNoX2RhdHVtLmhvdXJzX2Zyb21fdGltZXN0
YW1wIH19LAorICAgICAgICAgICAgICB7eyBwYXRjaF9kYXR1bS5wcm9jZXNzX2R1cmF0aW9uIH19
LAorICAgICAgICAgICAgICAiUGF0Y2gge3sgcGF0Y2hfZGF0dW0uYXR0YWNobWVudF9pZHxmb3Jj
ZV9lc2NhcGUgfX0iLAorICAgICAgICAgICAgICB7eyBwYXRjaF9kYXR1bS53YWl0X2R1cmF0aW9u
IH19LAorICAgICAgICAgICAgICAiUGF0Y2gge3sgcGF0Y2hfZGF0dW0uYXR0YWNobWVudF9pZHxm
b3JjZV9lc2NhcGUgfX0iLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICB7JSBlbmRmb3IgJX0K
KyAgICAgICAgXSk7CisgICAgICAgIGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLlNj
YXR0ZXJDaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hhcnQ1JykpOworICAgICAgICBj
aGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOworCisgICAgICAgIG9wdGlvbnMuY29sb3JzID0gWyJi
bHVlIiwgInB1cnBsZSJdOworICAgICAgICBkZWxldGUgb3B0aW9ucy52QXhpcy50aXRsZTsKKyAg
ICAgICAgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKKyAgICAg
ICAgZGF0YS5hZGRDb2x1bW4oIm51bWJlciIsICI8dGltZT4iKTsKKyAgICAgICAgZGF0YS5hZGRD
b2x1bW4oIm51bWJlciIsICJTdGF0dXMgVXBkYXRlcyIpOworICAgICAgICBkYXRhLmFkZENvbHVt
bih7dHlwZTogInN0cmluZyIsIHJvbGU6ICJ0b29sdGlwIn0pOworICAgICAgICBkYXRhLmFkZENv
bHVtbigibnVtYmVyIiwgIlJldHJpZXMiKTsKKyAgICAgICAgZGF0YS5hZGRDb2x1bW4oe3R5cGU6
ICJzdHJpbmciLCByb2xlOiAidG9vbHRpcCJ9KTsKKyAgICAgICAgZGF0YS5hZGRSb3dzKFsKKyAg
ICAgICAgICB7JSBmb3IgcGF0Y2hfZGF0dW0gaW4gcGF0Y2hfZGF0YSAlfQorICAgICAgICAgICAg
WworICAgICAgICAgICAgICB7eyBwYXRjaF9kYXR1bS5ob3Vyc19mcm9tX3RpbWVzdGFtcCB9fSwK
KyAgICAgICAgICAgICAge3sgcGF0Y2hfZGF0dW0uc3RhdHVzX3VwZGF0ZV9jb3VudCB9fSwKKyAg
ICAgICAgICAgICAgIlBhdGNoIHt7IHBhdGNoX2RhdHVtLmF0dGFjaG1lbnRfaWR8Zm9yY2VfZXNj
YXBlIH19IiwKKyAgICAgICAgICAgICAge3sgcGF0Y2hfZGF0dW0ucmV0cnlfY291bnQgfX0sCisg
ICAgICAgICAgICAgICJQYXRjaCB7eyBwYXRjaF9kYXR1bS5hdHRhY2htZW50X2lkfGZvcmNlX2Vz
Y2FwZSB9fSIsCisgICAgICAgICAgICBdLAorICAgICAgICAgIHslIGVuZGZvciAlfQorICAgICAg
ICBdKTsKKyAgICAgICAgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uU2NhdHRlckNo
YXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFydDYnKSk7CisgICAgICAgIGNoYXJ0LmRy
YXcoZGF0YSwgb3B0aW9ucyk7CisgICAgICB9KTsKKyAgICA8L3NjcmlwdD4KKyAgPC9oZWFkPgor
CisgIDxib2R5PgorICAgIDxoMT57eyBxdWV1ZV9uYW1lIH19IENoYXJ0czwvaDE+CisgICAgPGRp
dj5be3sgcXVldWVfbmFtZXxmb3JjZV9lc2NhcGV8cXVldWVfc3RhdHVzX2xpbms6InN0YXR1cyJ8
c2FmZSB9fV08L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJjaGFydCIgaWQ9ImNoYXJ0MSI+PC9kaXY+
CisgICAgPGRpdiBjbGFzcz0iY2hhcnQiIGlkPSJjaGFydDIiPjwvZGl2PgorICAgIDxkaXYgY2xh
c3M9ImNoYXJ0IiBpZD0iY2hhcnQzIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJjaGFydCIgaWQ9
ImNoYXJ0NCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iY2hhcnQiIGlkPSJjaGFydDUiPjwvZGl2
PgorICAgIDxkaXYgY2xhc3M9ImNoYXJ0IiBpZD0iY2hhcnQ2Ij48L2Rpdj4KKyAgPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvdGVtcGxhdGVzL3F1
ZXVlc3RhdHVzLmh0bWwgYi9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMvcXVldWVz
dGF0dXMuaHRtbAppbmRleCBmOGViNjFlNGVmMDdiMTUwYzkxODgyYTJjMDQxNGQ3MDQwZjhjYzAx
Li5hYWZhZmJkODM3ZDFhMTk5MzhkMDhiZDMxMzUxMzlkMGYyZWNmY2ZhIDEwMDY0NAotLS0gYS9U
b29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMvcXVldWVzdGF0dXMuaHRtbAorKysgYi9U
b29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMvcXVldWVzdGF0dXMuaHRtbApAQCAtOSw2
ICs5LDcgQEAKIAogPGgzPlN1bW1hcnk8L2gzPgogPGRpdj4KKzxkaXY+W3t7IHF1ZXVlX25hbWV8
Zm9yY2VfZXNjYXBlfHF1ZXVlX2NoYXJ0c19saW5rOiJjaGFydHMifHNhZmUgfX1dPC9kaXY+CiBM
YXN0IFBhc3M6IHslIGlmIGxhc3RfcGFzcyAlfXt7IGxhc3RfcGFzcy5kYXRlfHRpbWVzaW5jZSB9
fSBhZ297JSBlbHNlICV9bmV2ZXJ7JSBlbmRpZiAlfQogeyUgaWYgbm90IGJvdF9pZCBhbmQgbGFz
dF9wYXNzLmJvdF9pZCAlfQogYnkgPGEgaHJlZj0iL3F1ZXVlLXN0YXR1cy97e2xhc3RfcGFzcy5x
dWV1ZV9uYW1lfX0vYm90cy97e2xhc3RfcGFzcy5ib3RfaWR9fSI+e3sgbGFzdF9wYXNzLmJvdF9p
ZCB9fTwvYT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184426</attachid>
            <date>2013-01-24 00:41:12 -0800</date>
            <delta_ts>2013-01-29 02:51:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107659-20130124193804.patch</filename>
            <type>text/plain</type>
            <size>24829</size>
            <attacher name="Alan Cutter">alancutter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNjUyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzE4YzA2ZWRkOWFiYWE5Njc2NTg0MTk5YWFmYjMzMjMz
ZWJkZDg3Yy4uZjc3MTJkOGE5ZDE0MjE1Nzg0ODRlZmU3MTJkYmI3OTJhYmU3ZDgwZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3
IEBACisyMDEzLTAxLTI0ICBBbGFuIEN1dHRlciAgPGFsYW5jdXR0ZXJAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFF1ZXVlU3RhdHVzU2VydmVyIG5lZWRzIHBhZ2VzIHRvIGRpc3BsYXkgaGlzdG9y
aWNhbCBxdWV1ZSBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDc2NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDcmVhdGVkIGEgL3F1ZXVlLWNoYXJ0cy88cXVldWUtbmFtZT4gaGFuZGxlciB0byBw
cmVzZW50IHF1ZXVlIGFuZCBwYXRjaCBkYXRhIHVzaW5nIEdvb2dsZSBDaGFydCBUb29scy4KKwor
ICAgICAgICAqIFF1ZXVlU3RhdHVzU2VydmVyL2FwcC55YW1sOgorICAgICAgICAqIFF1ZXVlU3Rh
dHVzU2VydmVyL2NvbmZpZy9jaGFydHMucHk6IENvcGllZCBmcm9tIFRvb2xzL1F1ZXVlU3RhdHVz
U2VydmVyL21vZGVsL3F1ZXVlbG9nLnB5LgorICAgICAgICAqIFF1ZXVlU3RhdHVzU2VydmVyL2Zp
bHRlcnMvd2Via2l0X2V4dHJhcy5weToKKyAgICAgICAgKHdlYmtpdF9saW5raWZ5KToKKyAgICAg
ICAgKHdlYmtpdF9idWdfaWQpOgorICAgICAgICAod2Via2l0X2F0dGFjaG1lbnRfaWQpOgorICAg
ICAgICAocmVzdWx0c19saW5rKToKKyAgICAgICAgKHF1ZXVlX3N0YXR1c19saW5rKToKKyAgICAg
ICAgKHF1ZXVlX2NoYXJ0c19saW5rKToKKyAgICAgICAgKiBRdWV1ZVN0YXR1c1NlcnZlci9oYW5k
bGVycy9xdWV1ZWNoYXJ0cy5weTogQWRkZWQuCisgICAgICAgIChRdWV1ZUNoYXJ0cyk6CisgICAg
ICAgIChRdWV1ZUNoYXJ0cy5nZXQpOgorICAgICAgICAoUXVldWVDaGFydHMuX2dldF9taW5fbWVk
X21heCk6CisgICAgICAgIChRdWV1ZUNoYXJ0cy5fZ2V0X3BhdGNoX2RhdGEpOgorICAgICAgICAo
UXVldWVDaGFydHMuX2dldF9wYXRjaF9sb2dzKToKKyAgICAgICAgKFF1ZXVlQ2hhcnRzLl9nZXRf
cXVldWVfZGF0YSk6CisgICAgICAgIChRdWV1ZUNoYXJ0cy5fZ2V0X3F1ZXVlX2xvZ3MpOgorICAg
ICAgICAoUXVldWVDaGFydHMuX2dldF90aW1lc3RhbXApOgorICAgICAgICAoUXVldWVDaGFydHMu
X2dldF92aWV3X3JhbmdlKToKKyAgICAgICAgKiBRdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9x
dWV1ZXN0YXR1cy5weToKKyAgICAgICAgKFF1ZXVlU3RhdHVzLmdldCk6CisgICAgICAgICogUXVl
dWVTdGF0dXNTZXJ2ZXIvaW5kZXgueWFtbDoKKyAgICAgICAgKiBRdWV1ZVN0YXR1c1NlcnZlci9t
YWluLnB5OgorICAgICAgICAqIFF1ZXVlU3RhdHVzU2VydmVyL21vZGVsL3F1ZXVlbG9nLnB5Ogor
ICAgICAgICAoUXVldWVMb2cpOgorICAgICAgICAoUXVldWVMb2cuY3JlYXRlX2tleSk6CisgICAg
ICAgIChRdWV1ZUxvZy5nZXRfYXQpOgorICAgICAgICAoUXVldWVMb2cuZ2V0X2N1cnJlbnQpOgor
ICAgICAgICAoUXVldWVMb2cuZ2V0X29yX2NyZWF0ZSk6CisgICAgICAgIChRdWV1ZUxvZy5fZ2V0
X29yX2NyZWF0ZV90eG4pOgorICAgICAgICAqIFF1ZXVlU3RhdHVzU2VydmVyL3N0eWxlc2hlZXRz
L2NoYXJ0cy5jc3M6IEFkZGVkLgorICAgICAgICAoLmNoYXJ0KToKKyAgICAgICAgKiBRdWV1ZVN0
YXR1c1NlcnZlci90ZW1wbGF0ZXMvcXVldWVjaGFydHMuaHRtbDogQWRkZWQuCisgICAgICAgICog
UXVldWVTdGF0dXNTZXJ2ZXIvdGVtcGxhdGVzL3F1ZXVlc3RhdHVzLmh0bWw6CisKIDIwMTMtMDEt
MjMgIEFsYW4gQ3V0dGVyICA8YWxhbmN1dHRlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUXVl
dWVTdGF0dXNTZXJ2ZXIgY3Jhc2hlcyBpbiBwcm9kdWN0aW9uIG9uIG5leHQtcGF0Y2gKZGlmZiAt
LWdpdCBhL1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2FwcC55YW1sIGIvVG9vbHMvUXVldWVTdGF0
dXNTZXJ2ZXIvYXBwLnlhbWwKaW5kZXggMTAxOTQ2MWE4YWM5MzliNmE0YjU1NzA0N2E2ZWVmYTQ5
MWJjMDkxNy4uNTM5NjViZTViNzUzYjg1YWQ2M2RiZDFmNWE0ODgzMzllZjJmODkxNSAxMDA2NDQK
LS0tIGEvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvYXBwLnlhbWwKKysrIGIvVG9vbHMvUXVldWVT
dGF0dXNTZXJ2ZXIvYXBwLnlhbWwKQEAgLTEsNSArMSw1IEBACiBhcHBsaWNhdGlvbjogd2Via2l0
LWNvbW1pdC1xdWV1ZQotdmVyc2lvbjogMTA3Nzc1ICMgQnVnemlsbGEgYnVnIElEIG9mIGxhc3Qg
bWFqb3IgY2hhbmdlCit2ZXJzaW9uOiAxMDc2NTkgIyBCdWd6aWxsYSBidWcgSUQgb2YgbGFzdCBt
YWpvciBjaGFuZ2UKIHJ1bnRpbWU6IHB5dGhvbgogYXBpX3ZlcnNpb246IDEKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvY29uZmlnL2NoYXJ0cy5weSBiL1Rvb2xzL1F1ZXVl
U3RhdHVzU2VydmVyL2NvbmZpZy9jaGFydHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVkY2U0ZmZjNzg3MDI5
NWI5NzM5NmY2NTliYjE2Yzg5Y2RhMWI5MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1F1ZXVl
U3RhdHVzU2VydmVyL2NvbmZpZy9jaGFydHMucHkKQEAgLTAsMCArMSwzMSBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyMgSG93IGZhciBiYWNrIHRvIHZpZXcgdGhlIGhpc3RvcnksIHNwZWNpZmllZCBp
biBzZWNvbmRzLgorZGVmYXVsdF92aWV3X3JhbmdlID0gNjAgKiA2MCAqIDI0CitwYXRjaF9sb2df
bGltaXQgPSA1MDAKZGlmZiAtLWdpdCBhL1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2ZpbHRlcnMv
d2Via2l0X2V4dHJhcy5weSBiL1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2ZpbHRlcnMvd2Via2l0
X2V4dHJhcy5weQppbmRleCBiNjQ1Zjc4ZmZiZTIwYzg5ZTFlMTBiYjQxNWVlNWE0ZDJiNzI0ODU0
Li41YjNjOWIxZGU5YjQ2MzVkYWU2MWIwY2NjZGVmYTI5YjYyMzA4NTE4IDEwMDY0NAotLS0gYS9U
b29scy9RdWV1ZVN0YXR1c1NlcnZlci9maWx0ZXJzL3dlYmtpdF9leHRyYXMucHkKKysrIGIvVG9v
bHMvUXVldWVTdGF0dXNTZXJ2ZXIvZmlsdGVycy93ZWJraXRfZXh0cmFzLnB5CkBAIC0zNiw2ICsz
Niw3IEBAIHJlZ2lzdGVyID0gd2ViYXBwLnRlbXBsYXRlLmNyZWF0ZV90ZW1wbGF0ZV9yZWdpc3Rl
cigpCiBidWdfcmVnZXhwID0gcmUuY29tcGlsZShyImJ1ZyAoP1A8YnVnX2lkPlxkKykiKQogcGF0
Y2hfcmVnZXhwID0gcmUuY29tcGlsZShyInBhdGNoICg/UDxwYXRjaF9pZD5cZCspIikKIAorCiBA
cmVnaXN0ZXIuZmlsdGVyCiBAc3RyaW5nZmlsdGVyCiBkZWYgd2Via2l0X2xpbmtpZnkodmFsdWUp
OgpAQCAtNDMsMTcgKzQ0LDMyIEBAIGRlZiB3ZWJraXRfbGlua2lmeSh2YWx1ZSk6CiAgICAgdmFs
dWUgPSBwYXRjaF9yZWdleHAuc3ViKHInPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
YXR0YWNobWVudC5jZ2k/aWQ9XGc8cGF0Y2hfaWQ+JmFjdGlvbj1wcmV0dHlwYXRjaCI+cGF0Y2gg
XGc8cGF0Y2hfaWQ+PC9hPicsIHZhbHVlKQogICAgIHJldHVybiB2YWx1ZQogCisKIEByZWdpc3Rl
ci5maWx0ZXIKIEBzdHJpbmdmaWx0ZXIKIGRlZiB3ZWJraXRfYnVnX2lkKHZhbHVlKToKICAgICBy
ZXR1cm4gJzxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnL2IvJXMiPiVzPC9hPicgJSAodmFsdWUs
IHZhbHVlKQogCisKIEByZWdpc3Rlci5maWx0ZXIKIEBzdHJpbmdmaWx0ZXIKIGRlZiB3ZWJraXRf
YXR0YWNobWVudF9pZCh2YWx1ZSk6CiAgICAgcmV0dXJuICc8YSBocmVmPSJodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9hdHRhY2htZW50LmNnaT9pZD0lcyZhY3Rpb249cHJldHR5cGF0Y2giPiVzPC9h
PicgJSAodmFsdWUsIHZhbHVlKQogCisKIEByZWdpc3Rlci5maWx0ZXIKIEBzdHJpbmdmaWx0ZXIK
IGRlZiByZXN1bHRzX2xpbmsoc3RhdHVzX2lkKToKICAgICByZXR1cm4gJzxhIGhyZWY9Ii9yZXN1
bHRzLyVzIj5yZXN1bHRzPC9hPicgJSBzdGF0dXNfaWQKKworCitAcmVnaXN0ZXIuZmlsdGVyCitA
c3RyaW5nZmlsdGVyCitkZWYgcXVldWVfc3RhdHVzX2xpbmsocXVldWVfbmFtZSwgdGV4dCk6Cisg
ICAgcmV0dXJuICc8YSBocmVmPSIvcXVldWUtc3RhdHVzLyVzIj4lczwvYT4nICUgKHF1ZXVlX25h
bWUsIHRleHQpCisKKworQHJlZ2lzdGVyLmZpbHRlcgorQHN0cmluZ2ZpbHRlcgorZGVmIHF1ZXVl
X2NoYXJ0c19saW5rKHF1ZXVlX25hbWUsIHRleHQpOgorICAgIHJldHVybiAnPGEgaHJlZj0iL3F1
ZXVlLWNoYXJ0cy8lcyI+JXM8L2E+JyAlIChxdWV1ZV9uYW1lLCB0ZXh0KQpkaWZmIC0tZ2l0IGEv
VG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvcXVldWVjaGFydHMucHkgYi9Ub29scy9R
dWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9xdWV1ZWNoYXJ0cy5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDIw
NTgwYjJmMzRjNjgyODZkM2JkMDZjZGY2ZTU1MDA5NzgyNTMxCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvcXVldWVjaGFydHMucHkKQEAgLTAsMCAr
MSwxNDEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgY2FsZW5kYXIKK2Zyb20gZGF0ZXRp
bWUgaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgaXRlcnRvb2xzCitmcm9tIHRpbWUgaW1wb3J0IHRp
bWUKKworZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgd2ViYXBwCitmcm9tIGdvb2ds
ZS5hcHBlbmdpbmUuZXh0LndlYmFwcCBpbXBvcnQgdGVtcGxhdGUKKworZnJvbSBjb25maWcgaW1w
b3J0IGxvZ2dpbmcsIGNoYXJ0cworZnJvbSBtb2RlbC5wYXRjaGxvZyBpbXBvcnQgUGF0Y2hMb2cK
K2Zyb20gbW9kZWwucXVldWVzIGltcG9ydCBRdWV1ZQorZnJvbSBtb2RlbC5xdWV1ZWxvZyBpbXBv
cnQgUXVldWVMb2cKKworb25lX21pbnV0ZSA9IDYwLjAKK29uZV9ob3VyID0gb25lX21pbnV0ZSAq
IDYwLjAKKworCitjbGFzcyBRdWV1ZUNoYXJ0cyh3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgorICAg
IGRlZiBnZXQoc2VsZiwgcXVldWVfbmFtZSk6CisgICAgICAgIHF1ZXVlX25hbWUgPSBxdWV1ZV9u
YW1lLmxvd2VyKCkKKyAgICAgICAgaWYgbm90IFF1ZXVlLnF1ZXVlX3dpdGhfbmFtZShxdWV1ZV9u
YW1lKToKKyAgICAgICAgICAgIHNlbGYuZXJyb3IoNDA0KQorICAgICAgICAgICAgcmV0dXJuCisK
KyAgICAgICAgdGltZXN0YW1wID0gc2VsZi5fZ2V0X3RpbWVzdGFtcCgpCisgICAgICAgIHZpZXdf
cmFuZ2UgPSBzZWxmLl9nZXRfdmlld19yYW5nZSgpCisKKyAgICAgICAgdGVtcGxhdGVfdmFsdWVz
ID0geworICAgICAgICAgICAgImhvdXJzX2Zyb21fdGltZXN0YW1wX21pbiI6IC12aWV3X3Jhbmdl
IC8gb25lX2hvdXIsCisgICAgICAgICAgICAiaG91cnNfZnJvbV90aW1lc3RhbXBfbWF4IjogMCwK
KyAgICAgICAgICAgICJwYXRjaF9kYXRhIjogc2VsZi5fZ2V0X3BhdGNoX2RhdGEocXVldWVfbmFt
ZSwgdGltZXN0YW1wLCB2aWV3X3JhbmdlKSwKKyAgICAgICAgICAgICJxdWV1ZV9kYXRhIjogc2Vs
Zi5fZ2V0X3F1ZXVlX2RhdGEocXVldWVfbmFtZSwgdGltZXN0YW1wLCB2aWV3X3JhbmdlKSwKKyAg
ICAgICAgICAgICJxdWV1ZV9uYW1lIjogcXVldWVfbmFtZSwKKyAgICAgICAgICAgICJ0aW1lc3Rh
bXBfbXMiOiB0aW1lc3RhbXAgKiAxMDAwLAorICAgICAgICB9CisgICAgICAgIHNlbGYucmVzcG9u
c2Uub3V0LndyaXRlKHRlbXBsYXRlLnJlbmRlcigidGVtcGxhdGVzL3F1ZXVlY2hhcnRzLmh0bWwi
LCB0ZW1wbGF0ZV92YWx1ZXMpKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9nZXRfbWlu
X21lZF9tYXgoY2xzLCB2YWx1ZXMsIGRlZmF1bHRzPSgwLCAwLCAwKSk6CisgICAgICAgIGlmIG5v
dCB2YWx1ZXM6CisgICAgICAgICAgICByZXR1cm4gZGVmYXVsdHMKKyAgICAgICAgbGVuZ3RoID0g
bGVuKHZhbHVlcykKKyAgICAgICAgc29ydGVkX3ZhbHVlcyA9IHNvcnRlZCh2YWx1ZXMpCisgICAg
ICAgIHJldHVybiBzb3J0ZWRfdmFsdWVzWzBdLCBzb3J0ZWRfdmFsdWVzW2xlbmd0aCAvIDJdLCBz
b3J0ZWRfdmFsdWVzW2xlbmd0aCAtIDFdCisKKyAgICBkZWYgX2dldF9wYXRjaF9kYXRhKHNlbGYs
IHF1ZXVlX25hbWUsIHRpbWVzdGFtcCwgdmlld19yYW5nZSk6CisgICAgICAgIHBhdGNoX2xvZ3Mg
PSBzZWxmLl9nZXRfcGF0Y2hfbG9ncyhxdWV1ZV9uYW1lLCB0aW1lc3RhbXAsIHZpZXdfcmFuZ2Up
CisgICAgICAgIHBhdGNoX2RhdGEgPSBbXQorICAgICAgICBmb3IgcGF0Y2hfbG9nIGluIHBhdGNo
X2xvZ3M6CisgICAgICAgICAgICBpZiBwYXRjaF9sb2cucHJvY2Vzc19kdXJhdGlvbiBhbmQgcGF0
Y2hfbG9nLndhaXRfZHVyYXRpb246CisgICAgICAgICAgICAgICAgcGF0Y2hfbG9nX3RpbWVzdGFt
cCA9IGNhbGVuZGFyLnRpbWVnbShwYXRjaF9sb2cuZGF0ZS51dGN0aW1ldHVwbGUoKSkKKyAgICAg
ICAgICAgICAgICBwYXRjaF9kYXRhLmFwcGVuZCh7CisgICAgICAgICAgICAgICAgICAgICJhdHRh
Y2htZW50X2lkIjogcGF0Y2hfbG9nLmF0dGFjaG1lbnRfaWQsCisgICAgICAgICAgICAgICAgICAg
ICJob3Vyc19mcm9tX3RpbWVzdGFtcCI6IGZsb2F0KHBhdGNoX2xvZ190aW1lc3RhbXAgLSB0aW1l
c3RhbXApIC8gb25lX2hvdXIsCisgICAgICAgICAgICAgICAgICAgICJwcm9jZXNzX2R1cmF0aW9u
IjogcGF0Y2hfbG9nLnByb2Nlc3NfZHVyYXRpb24gLyBvbmVfbWludXRlLAorICAgICAgICAgICAg
ICAgICAgICAicmV0cnlfY291bnQiOiBwYXRjaF9sb2cucmV0cnlfY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICJzdGF0dXNfdXBkYXRlX2NvdW50IjogcGF0Y2hfbG9nLnN0YXR1c191cGRhdGVf
Y291bnQsCisgICAgICAgICAgICAgICAgICAgICJ3YWl0X2R1cmF0aW9uIjogcGF0Y2hfbG9nLndh
aXRfZHVyYXRpb24gLyBvbmVfbWludXRlLAorICAgICAgICAgICAgICAgfSkKKyAgICAgICAgcmV0
dXJuIHBhdGNoX2RhdGEKKworICAgIGRlZiBfZ2V0X3BhdGNoX2xvZ3Moc2VsZiwgcXVldWVfbmFt
ZSwgdGltZXN0YW1wLCB2aWV3X3JhbmdlKToKKyAgICAgICAgcGF0Y2hfbG9nX3F1ZXJ5ID0gUGF0
Y2hMb2cuYWxsKCkKKyAgICAgICAgcGF0Y2hfbG9nX3F1ZXJ5ID0gcGF0Y2hfbG9nX3F1ZXJ5LmZp
bHRlcigicXVldWVfbmFtZSA9IiwgcXVldWVfbmFtZSkKKyAgICAgICAgcGF0Y2hfbG9nX3F1ZXJ5
ID0gcGF0Y2hfbG9nX3F1ZXJ5LmZpbHRlcigiZGF0ZSA+PSIsIGRhdGV0aW1lLnV0Y2Zyb210aW1l
c3RhbXAodGltZXN0YW1wIC0gdmlld19yYW5nZSkpCisgICAgICAgIHBhdGNoX2xvZ19xdWVyeSA9
IHBhdGNoX2xvZ19xdWVyeS5maWx0ZXIoImRhdGUgPD0iLCBkYXRldGltZS51dGNmcm9tdGltZXN0
YW1wKHRpbWVzdGFtcCkpCisgICAgICAgIHBhdGNoX2xvZ19xdWVyeSA9IHBhdGNoX2xvZ19xdWVy
eS5vcmRlcigiZGF0ZSIpCisgICAgICAgIHJldHVybiBwYXRjaF9sb2dfcXVlcnkucnVuKGxpbWl0
PWNoYXJ0cy5wYXRjaF9sb2dfbGltaXQpCisKKyAgICBkZWYgX2dldF9xdWV1ZV9kYXRhKHNlbGYs
IHF1ZXVlX25hbWUsIHRpbWVzdGFtcCwgdmlld19yYW5nZSk6CisgICAgICAgIHF1ZXVlX2xvZ3Mg
PSBzZWxmLl9nZXRfcXVldWVfbG9ncyhxdWV1ZV9uYW1lLCB0aW1lc3RhbXAsIHZpZXdfcmFuZ2Up
CisgICAgICAgIHF1ZXVlX2RhdGEgPSBbXQorICAgICAgICBmb3IgcXVldWVfbG9nIGluIHF1ZXVl
X2xvZ3M6CisgICAgICAgICAgICBxdWV1ZV9sb2dfdGltZXN0YW1wID0gY2FsZW5kYXIudGltZWdt
KHF1ZXVlX2xvZy5kYXRlLnV0Y3RpbWV0dXBsZSgpKQorICAgICAgICAgICAgcF9taW4sIHBfbWVk
LCBwX21heCA9IHNlbGYuX2dldF9taW5fbWVkX21heChxdWV1ZV9sb2cucGF0Y2hfcHJvY2Vzc19k
dXJhdGlvbnMpCisgICAgICAgICAgICB3X21pbiwgd19tZWQsIHdfbWF4ID0gc2VsZi5fZ2V0X21p
bl9tZWRfbWF4KHF1ZXVlX2xvZy5wYXRjaF93YWl0X2R1cmF0aW9ucykKKyAgICAgICAgICAgIHF1
ZXVlX2RhdGEuYXBwZW5kKHsKKyAgICAgICAgICAgICAgICAiYm90c19zZWVuIjogbGVuKHF1ZXVl
X2xvZy5ib3RfaWRzX3NlZW4pLAorICAgICAgICAgICAgICAgICJob3Vyc19mcm9tX3RpbWVzdGFt
cCI6IGZsb2F0KHF1ZXVlX2xvZ190aW1lc3RhbXAgLSB0aW1lc3RhbXApIC8gb25lX2hvdXIsCisg
ICAgICAgICAgICAgICAgInBhdGNoX3Byb2Nlc3NpbmdfbWluc19tYXgiOiBwX21pbiAvIG9uZV9t
aW51dGUsCisgICAgICAgICAgICAgICAgInBhdGNoX3Byb2Nlc3NpbmdfbWluc19tZWQiOiBwX21l
ZCAvIG9uZV9taW51dGUsCisgICAgICAgICAgICAgICAgInBhdGNoX3Byb2Nlc3NpbmdfbWluc19t
aW4iOiBwX21heCAvIG9uZV9taW51dGUsCisgICAgICAgICAgICAgICAgInBhdGNoX3JldHJ5X2Nv
dW50IjogcXVldWVfbG9nLnBhdGNoX3JldHJ5X2NvdW50LAorICAgICAgICAgICAgICAgICJwYXRj
aF93YWl0aW5nX21pbnNfbWF4Ijogd19taW4gLyBvbmVfbWludXRlLAorICAgICAgICAgICAgICAg
ICJwYXRjaF93YWl0aW5nX21pbnNfbWVkIjogd19tZWQgLyBvbmVfbWludXRlLAorICAgICAgICAg
ICAgICAgICJwYXRjaF93YWl0aW5nX21pbnNfbWluIjogd19tYXggLyBvbmVfbWludXRlLAorICAg
ICAgICAgICAgICAgICJwYXRjaGVzX2NvbXBsZXRlZCI6IGxlbihxdWV1ZV9sb2cucGF0Y2hfcHJv
Y2Vzc19kdXJhdGlvbnMpLAorICAgICAgICAgICAgICAgICJwYXRjaGVzX3dhaXRpbmciOiBxdWV1
ZV9sb2cubWF4X3BhdGNoZXNfd2FpdGluZywKKyAgICAgICAgICAgICAgICAic3RhdHVzX3VwZGF0
ZV9jb3VudCI6IHF1ZXVlX2xvZy5zdGF0dXNfdXBkYXRlX2NvdW50LAorICAgICAgICAgICAgfSkK
KyAgICAgICAgcmV0dXJuIHF1ZXVlX2RhdGEKKworICAgIGRlZiBfZ2V0X3F1ZXVlX2xvZ3Moc2Vs
ZiwgcXVldWVfbmFtZSwgdGltZXN0YW1wLCB2aWV3X3JhbmdlKToKKyAgICAgICAgcXVldWVfbG9n
cyA9IFtdCisgICAgICAgIGN1cnJlbnRfdGltZXN0YW1wID0gdGltZXN0YW1wIC0gdmlld19yYW5n
ZQorICAgICAgICB3aGlsZSBjdXJyZW50X3RpbWVzdGFtcCA8PSB0aW1lc3RhbXA6CisgICAgICAg
ICAgICBxdWV1ZV9sb2dzLmFwcGVuZChRdWV1ZUxvZy5nZXRfYXQocXVldWVfbmFtZSwgbG9nZ2lu
Zy5xdWV1ZV9sb2dfZHVyYXRpb24sIGN1cnJlbnRfdGltZXN0YW1wKSkKKyAgICAgICAgICAgIGN1
cnJlbnRfdGltZXN0YW1wICs9IGxvZ2dpbmcucXVldWVfbG9nX2R1cmF0aW9uCisgICAgICAgIHJl
dHVybiBxdWV1ZV9sb2dzCisKKyAgICBkZWYgX2dldF90aW1lc3RhbXAoc2VsZik6CisgICAgICAg
IHRpbWVzdGFtcCA9IHNlbGYucmVxdWVzdC5nZXQoInRpbWVzdGFtcCIpCisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIHJldHVybiBpbnQodGltZXN0YW1wKQorICAgICAgICBleGNlcHQgVmFsdWVF
cnJvcjoKKyAgICAgICAgICAgIHJldHVybiBpbnQodGltZSgpKQorCisgICAgZGVmIF9nZXRfdmll
d19yYW5nZShzZWxmKToKKyAgICAgICAgdmlld19yYW5nZSA9IHNlbGYucmVxdWVzdC5nZXQoInZp
ZXdfcmFuZ2UiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gaW50KHZpZXdfcmFu
Z2UpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIGNoYXJ0
cy5kZWZhdWx0X3ZpZXdfcmFuZ2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVy
L2hhbmRsZXJzL3F1ZXVlc3RhdHVzLnB5IGIvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxl
cnMvcXVldWVzdGF0dXMucHkKaW5kZXggOTA1NGZjYWIxYjZkMTg2ZDg2OWQzYmNhNTllNmJjMmYz
M2Y3Yjc2Yi4uNGY0ZTJkMjhiNTljNzNhZDJmY2U4YjBmYjcyOTJlNmY5NzRjMmE0YiAxMDA2NDQK
LS0tIGEvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvcXVldWVzdGF0dXMucHkKKysr
IGIvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvcXVldWVzdGF0dXMucHkKQEAgLTEw
NCw2ICsxMDQsNyBAQCBjbGFzcyBRdWV1ZVN0YXR1cyh3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgog
CiAgICAgICAgIHN0YXR1c2VzID0gc2VsZi5fZmV0Y2hfc3RhdHVzZXMocXVldWUsIGJvdF9pZCkK
ICAgICAgICAgdGVtcGxhdGVfdmFsdWVzID0geworICAgICAgICAgICAgInF1ZXVlX25hbWUiOiBx
dWV1ZV9uYW1lLAogICAgICAgICAgICAgInBhZ2VfdGl0bGUiOiBzZWxmLl9wYWdlX3RpdGxlKHF1
ZXVlLCBib3RfaWQpLAogICAgICAgICAgICAgIndvcmtfaXRlbV9yb3dzIjogc2VsZi5fcm93c19m
b3Jfd29ya19pdGVtcyhxdWV1ZSksCiAgICAgICAgICAgICAic3RhdHVzX2dyb3VwcyI6IHNlbGYu
X2J1aWxkX3N0YXR1c19ncm91cHMoc3RhdHVzZXMpLApkaWZmIC0tZ2l0IGEvVG9vbHMvUXVldWVT
dGF0dXNTZXJ2ZXIvaW5kZXgueWFtbCBiL1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2luZGV4Lnlh
bWwKaW5kZXggMzRlYjcyZTVhNTZlMzdjNGVhNTdhYmU1NWE3OWRkZGEyZDI2MDZmZS4uNjk0Zjc3
YmQxNGYyYzc0Y2FmNzEwODBhNTUxMGVlNmZmZTg2MmY5MyAxMDA2NDQKLS0tIGEvVG9vbHMvUXVl
dWVTdGF0dXNTZXJ2ZXIvaW5kZXgueWFtbAorKysgYi9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci9p
bmRleC55YW1sCkBAIC0xMCw2ICsxMCwxMSBAQCBpbmRleGVzOgogIyBhdXRvbWF0aWNhbGx5IHVw
bG9hZGVkIHRvIHRoZSBhZG1pbiBjb25zb2xlIHdoZW4geW91IG5leHQgZGVwbG95CiAjIHlvdXIg
YXBwbGljYXRpb24gdXNpbmcgYXBwY2ZnLnB5LgogCistIGtpbmQ6IFBhdGNoTG9nCisgIHByb3Bl
cnRpZXM6CisgIC0gbmFtZTogcXVldWVfbmFtZQorICAtIG5hbWU6IGRhdGUKKwogLSBraW5kOiBR
dWV1ZVN0YXR1cwogICBwcm9wZXJ0aWVzOgogICAtIG5hbWU6IGFjdGl2ZV9wYXRjaF9pZApkaWZm
IC0tZ2l0IGEvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbWFpbi5weSBiL1Rvb2xzL1F1ZXVlU3Rh
dHVzU2VydmVyL21haW4ucHkKaW5kZXggZTExNTVmZmE2ZjAwOGIyOTAwZTc5MWY0NTIxZWU4MjIx
NDZlZWRlYS4uN2JhNTlkZWE3NTcyMTUyYTk2ZTNmNjkzNzgxZmFkMjFjOWUxZjQ4NSAxMDA2NDQK
LS0tIGEvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbWFpbi5weQorKysgYi9Ub29scy9RdWV1ZVN0
YXR1c1NlcnZlci9tYWluLnB5CkBAIC0zOSw2ICszOSw3IEBAIGZyb20gaGFuZGxlcnMuZ2MgaW1w
b3J0IEdDCiBmcm9tIGhhbmRsZXJzLm5leHRwYXRjaCBpbXBvcnQgTmV4dFBhdGNoCiBmcm9tIGhh
bmRsZXJzLnBhdGNoIGltcG9ydCBQYXRjaAogZnJvbSBoYW5kbGVycy5wYXRjaHN0YXR1cyBpbXBv
cnQgUGF0Y2hTdGF0dXMKK2Zyb20gaGFuZGxlcnMucXVldWVjaGFydHMgaW1wb3J0IFF1ZXVlQ2hh
cnRzCiBmcm9tIGhhbmRsZXJzLnF1ZXVlc3RhdHVzIGltcG9ydCBRdWV1ZVN0YXR1cwogZnJvbSBo
YW5kbGVycy5yZWNlbnRzdGF0dXMgaW1wb3J0IFF1ZXVlc092ZXJ2aWV3CiBmcm9tIGhhbmRsZXJz
LnJlbGVhc2VwYXRjaCBpbXBvcnQgUmVsZWFzZVBhdGNoCkBAIC02Myw2ICs2NCw3IEBAIHJvdXRl
cyA9IFsKICAgICAocicvcmVzdWx0cy8oLiopJywgU2hvd1Jlc3VsdHMpLAogICAgIChyJy9zdGF0
dXMtYnViYmxlLyguKiknLCBTdGF0dXNCdWJibGUpLAogICAgIChyJy9zdm4tcmV2aXNpb24vKC4q
KScsIFNWTlJldmlzaW9uKSwKKyAgICAocicvcXVldWUtY2hhcnRzLyguKiknLCBRdWV1ZUNoYXJ0
cyksCiAgICAgKHInL3F1ZXVlLXN0YXR1cy8oLiopL2JvdHMvKC4qKScsIFF1ZXVlU3RhdHVzKSwK
ICAgICAocicvcXVldWUtc3RhdHVzLyguKiknLCBRdWV1ZVN0YXR1cyksCiAgICAgKHInL25leHQt
cGF0Y2gvKC4qKScsIE5leHRQYXRjaCksCmRpZmYgLS1naXQgYS9Ub29scy9RdWV1ZVN0YXR1c1Nl
cnZlci9tb2RlbC9xdWV1ZWxvZy5weSBiL1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsL3F1
ZXVlbG9nLnB5CmluZGV4IDgyOWI4YTYyYWM2ODU3NTM2NzZlMDFkNTUwYmYwYzk5ZTgxOWIxZmMu
Ljk4ZTNiMWU1YWUwYjg5YjNlNGUyY2RmNmI4OTAzY2MwNGU2ZTgzYTggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsL3F1ZXVlbG9nLnB5CisrKyBiL1Rvb2xzL1F1ZXVl
U3RhdHVzU2VydmVyL21vZGVsL3F1ZXVlbG9nLnB5CkBAIC00NCwxNCArNDQsMjkgQEAgY2xhc3Mg
UXVldWVMb2coZGIuTW9kZWwpOgogICAgIHBhdGNoX3JldHJ5X2NvdW50ID0gZGIuSW50ZWdlclBy
b3BlcnR5KGRlZmF1bHQ9MCkKICAgICBzdGF0dXNfdXBkYXRlX2NvdW50ID0gZGIuSW50ZWdlclBy
b3BlcnR5KGRlZmF1bHQ9MCkKIAorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgY3JlYXRlX2tl
eShxdWV1ZV9uYW1lLCBkdXJhdGlvbiwgdGltZXN0YW1wKToKKyAgICAgICAgcmV0dXJuICIlcy0l
cy0lcyIgJSAocXVldWVfbmFtZSwgZHVyYXRpb24sIHRpbWVzdGFtcCkKKwogICAgIEBjbGFzc21l
dGhvZAotICAgIGRlZiBnZXRfY3VycmVudChjbHMsIHF1ZXVlX25hbWUsIGR1cmF0aW9uKToKLSAg
ICAgICAgdGltZXN0YW1wX25vdyA9IHRpbWUoKQotICAgICAgICB0aW1lc3RhbXAgPSBpbnQodGlt
ZXN0YW1wX25vdyAvIGR1cmF0aW9uKSAqIGR1cmF0aW9uCisgICAgZGVmIGdldF9hdChjbHMsIHF1
ZXVlX25hbWUsIGR1cmF0aW9uLCB0aW1lc3RhbXApOgorICAgICAgICB0aW1lc3RhbXAgPSBpbnQo
dGltZXN0YW1wIC8gZHVyYXRpb24pICogZHVyYXRpb24KICAgICAgICAgZGF0ZSA9IGRhdGV0aW1l
LnV0Y2Zyb210aW1lc3RhbXAodGltZXN0YW1wKQogICAgICAgICBrZXkgPSBjbHMuY3JlYXRlX2tl
eShxdWV1ZV9uYW1lLCBkdXJhdGlvbiwgdGltZXN0YW1wKQotICAgICAgICByZXR1cm4gY2xzLmdl
dF9vcl9pbnNlcnQoa2V5LCBkYXRlPWRhdGUsIGR1cmF0aW9uPWR1cmF0aW9uLCBxdWV1ZV9uYW1l
PXF1ZXVlX25hbWUpCisgICAgICAgIHJldHVybiBjbHMuZ2V0X29yX2NyZWF0ZShrZXksIGRhdGU9
ZGF0ZSwgZHVyYXRpb249ZHVyYXRpb24sIHF1ZXVlX25hbWU9cXVldWVfbmFtZSkKIAotICAgIEBz
dGF0aWNtZXRob2QKLSAgICBkZWYgY3JlYXRlX2tleShxdWV1ZV9uYW1lLCBkdXJhdGlvbiwgdGlt
ZXN0YW1wKToKLSAgICAgICAgcmV0dXJuICIlcy0lcy0lcyIgJSAocXVldWVfbmFtZSwgZHVyYXRp
b24sIHRpbWVzdGFtcCkKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZ2V0X2N1cnJlbnQoY2xz
LCBxdWV1ZV9uYW1lLCBkdXJhdGlvbik6CisgICAgICAgIHJldHVybiBjbHMuZ2V0X2F0KHF1ZXVl
X25hbWUsIGR1cmF0aW9uLCB0aW1lKCkpCisKKyAgICAjIFRoaXMgaXMgdG8gcHJldmVudCBwYWdl
IHJlcXVlc3RzIGZyb20gZ2VuZXJhdGluZyBsb3RzIG9mIHJvd3MgaW4gdGhlIGRhdGFiYXNlLgor
ICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBnZXRfb3JfY3JlYXRlKGNscywga2V5X25hbWUsICoq
a3dhcmdzKToKKyAgICAgICAgcmV0dXJuIGRiLnJ1bl9pbl90cmFuc2FjdGlvbihjbHMuX2dldF9v
cl9jcmVhdGVfdHhuLCBrZXlfbmFtZSwgKiprd2FyZ3MpCisKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgX2dldF9vcl9jcmVhdGVfdHhuKGNscywga2V5X25hbWUsICoqa3dhcmdzKToKKyAgICAg
ICAgZW50aXR5ID0gY2xzLmdldF9ieV9rZXlfbmFtZShrZXlfbmFtZSwgcGFyZW50PWt3YXJncy5n
ZXQoJ3BhcmVudCcpKQorICAgICAgICBpZiBlbnRpdHkgaXMgTm9uZToKKyAgICAgICAgICAgIGVu
dGl0eSA9IGNscyhrZXlfbmFtZT1rZXlfbmFtZSwgKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBl
bnRpdHkKZGlmZiAtLWdpdCBhL1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL3N0eWxlc2hlZXRzL2No
YXJ0cy5jc3MgYi9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci9zdHlsZXNoZWV0cy9jaGFydHMuY3Nz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFmZWVlOGYyYTY4ZTQxMzViMjJlMGMzMjc3NjIwOTczYjk3ODVmMGEKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci9zdHlsZXNoZWV0cy9jaGFy
dHMuY3NzCkBAIC0wLDAgKzEsNCBAQAorLmNoYXJ0IHsKKyAgbWFyZ2luLWJvdHRvbTogNDBweDsK
KyAgaGVpZ2h0OiAyMDBweDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMvcXVldWVjaGFydHMuaHRtbCBi
L1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL3RlbXBsYXRlcy9xdWV1ZWNoYXJ0cy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIwNmJmM2YyM2MzYzEyMTc5ZTUzYjYwOWY1MmJkMjI0ZmFlOTg2MzIKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMvcXVldWVjaGFydHMu
aHRtbApAQCAtMCwwICsxLDE2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+
CisgICAgPHRpdGxlPnt7IHF1ZXVlX25hbWUgfX0gQ2hhcnRzPC90aXRsZT4KKyAgICA8bGluayB0
eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvc3R5bGVzaGVldHMvbWFpbi5j
c3MiIC8+CisgICAgPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
L3N0eWxlc2hlZXRzL2NoYXJ0cy5jc3MiIC8+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgZ29vZ2xlLmxvYWQoJ3Zpc3Vh
bGl6YXRpb24nLCAnMS4wJywgeydwYWNrYWdlcyc6Wydjb3JlY2hhcnQnXX0pOworICAgICAgZ29v
Z2xlLnNldE9uTG9hZENhbGxiYWNrKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIGRhdGEsIGNo
YXJ0LCBvcHRpb25zOworCisgICAgICAgIHZhciB0aW1lc3RhbXBNcyA9IHt7IHRpbWVzdGFtcF9t
cyB9fTsKKyAgICAgICAgdmFyIHRpbWVTdHJpbmcgPSBuZXcgRGF0ZSh0aW1lc3RhbXBNcykudG9T
dHJpbmcoKTsKKyAgICAgICAgdmFyIGhBeGlzVGl0bGU7CisgICAgICAgIGlmIChNYXRoLmFicyh0
aW1lc3RhbXBNcyAtIG5ldyBEYXRlKCkuZ2V0VGltZSgpKSA8IDYwMDAwKSB7CisgICAgICAgICAg
aEF4aXNUaXRsZSA9ICJIb3VycyBGcm9tIE5vdyAoIiArIHRpbWVTdHJpbmcgKyAiKSI7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgaEF4aXNUaXRsZSA9ICJIb3VycyBGcm9tICIgKyB0aW1l
U3RyaW5nOworICAgICAgICB9CisKKyAgICAgICAgb3B0aW9ucyA9IHsKKyAgICAgICAgICBsZWdl
bmQ6IHtwb3NpdGlvbjogInRvcCJ9LAorICAgICAgICAgIGhBeGlzOiB7CisgICAgICAgICAgICB0
aXRsZTogaEF4aXNUaXRsZSwKKyAgICAgICAgICAgIHZpZXdXaW5kb3c6IHsKKyAgICAgICAgICAg
ICAgbWluOiB7eyBob3Vyc19mcm9tX3RpbWVzdGFtcF9taW4gfX0sCisgICAgICAgICAgICAgIG1h
eDoge3sgaG91cnNfZnJvbV90aW1lc3RhbXBfbWF4IH19LAorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICB9LAorICAgICAgICAgIHZBeGlzOiB7dmlld1dpbmRvdzoge21pbjoge3sgMCB9fSB9IH0s
CisgICAgICAgICAgbGluZVdpZHRoOiAzLAorICAgICAgICB9OworCisgICAgICAgIG9wdGlvbnMu
Y29sb3JzID0gWyJncmVlbiIsICJyZWQiLCAib3JhbmdlIl07CisgICAgICAgIGRhdGEgPSBnb29n
bGUudmlzdWFsaXphdGlvbi5hcnJheVRvRGF0YVRhYmxlKFsKKyAgICAgICAgICBbIjx0aW1lPiIs
ICJQYXRjaGVzIENvbXBsZXRlZCIsICJQYXRjaGVzIFdhaXRpbmciLCAiQm90cyAodmlzaWJsZSB0
byBzZXJ2ZXIpIl0sCisgICAgICAgICAgeyUgZm9yIHF1ZXVlX2RhdHVtIGluIHF1ZXVlX2RhdGEg
JX0KKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAge3sgcXVldWVfZGF0dW0uaG91cnNfZnJv
bV90aW1lc3RhbXAgfX0sCisgICAgICAgICAgICAgIHt7IHF1ZXVlX2RhdHVtLnBhdGNoZXNfY29t
cGxldGVkIH19LAorICAgICAgICAgICAgICB7eyBxdWV1ZV9kYXR1bS5wYXRjaGVzX3dhaXRpbmcg
fX0sCisgICAgICAgICAgICAgIHt7IHF1ZXVlX2RhdHVtLmJvdHNfc2VlbiB9fQorICAgICAgICAg
ICAgXSwKKyAgICAgICAgICB7JSBlbmRmb3IgJX0KKyAgICAgICAgXSk7CisgICAgICAgIGNoYXJ0
ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkxpbmVDaGFydChkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY2hhcnQxJykpOworICAgICAgICBjaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOworCisg
ICAgICAgIG9wdGlvbnMuY29sb3JzID0gWyJibHVlIiwgInB1cnBsZSJdOworICAgICAgICBkYXRh
ID0gZ29vZ2xlLnZpc3VhbGl6YXRpb24uYXJyYXlUb0RhdGFUYWJsZShbCisgICAgICAgICAgWyI8
dGltZT4iLCAiU3RhdHVzIFVwZGF0ZXMiLCAiUGF0Y2ggUmV0cmllcyJdLAorICAgICAgICAgIHsl
IGZvciBxdWV1ZV9kYXR1bSBpbiBxdWV1ZV9kYXRhICV9CisgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgIHt7IHF1ZXVlX2RhdHVtLmhvdXJzX2Zyb21fdGltZXN0YW1wIH19LAorICAgICAgICAg
ICAgICB7eyBxdWV1ZV9kYXR1bS5zdGF0dXNfdXBkYXRlX2NvdW50IH19LAorICAgICAgICAgICAg
ICB7eyBxdWV1ZV9kYXR1bS5wYXRjaF9yZXRyeV9jb3VudCB9fQorICAgICAgICAgICAgXSwKKyAg
ICAgICAgICB7JSBlbmRmb3IgJX0KKyAgICAgICAgXSk7CisgICAgICAgIGNoYXJ0ID0gbmV3IGdv
b2dsZS52aXN1YWxpemF0aW9uLkxpbmVDaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hh
cnQyJykpOworICAgICAgICBjaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOworCisgICAgICAgIG9w
dGlvbnMuY29sb3JzID0gWyJncmVlbiJdOworICAgICAgICBvcHRpb25zLnZBeGlzLnRpdGxlID0g
Ik1pbnV0ZXMiOworICAgICAgICBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFU
YWJsZSgpOworICAgICAgICBkYXRhLmFkZENvbHVtbigibnVtYmVyIiwgIjx0aW1lPiIpOworICAg
ICAgICBkYXRhLmFkZENvbHVtbigibnVtYmVyIiwgIlBhdGNoIFByb2Nlc3NpbmcgVGltZXMiKTsK
KyAgICAgICAgZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICJudW1iZXIiLCByb2xlOiAiaW50ZXJ2YWwi
fSk7CisgICAgICAgIGRhdGEuYWRkQ29sdW1uKHt0eXBlOiAibnVtYmVyIiwgcm9sZTogImludGVy
dmFsIn0pOworICAgICAgICBkYXRhLmFkZFJvd3MoWworICAgICAgICAgIHslIGZvciBxdWV1ZV9k
YXR1bSBpbiBxdWV1ZV9kYXRhICV9CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgIHt7IHF1
ZXVlX2RhdHVtLmhvdXJzX2Zyb21fdGltZXN0YW1wIH19LAorICAgICAgICAgICAgICB7eyBxdWV1
ZV9kYXR1bS5wYXRjaF9wcm9jZXNzaW5nX21pbnNfbWVkIH19LAorICAgICAgICAgICAgICB7eyBx
dWV1ZV9kYXR1bS5wYXRjaF9wcm9jZXNzaW5nX21pbnNfbWluIH19LAorICAgICAgICAgICAgICB7
eyBxdWV1ZV9kYXR1bS5wYXRjaF9wcm9jZXNzaW5nX21pbnNfbWF4IH19CisgICAgICAgICAgICBd
LAorICAgICAgICAgIHslIGVuZGZvciAlfQorICAgICAgICBdKTsKKyAgICAgICAgY2hhcnQgPSBu
ZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uTGluZUNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjaGFydDMnKSk7CisgICAgICAgIGNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CisKKyAgICAg
ICAgb3B0aW9ucy5jb2xvcnMgPSBbInJlZCJdOworICAgICAgICBkYXRhID0gbmV3IGdvb2dsZS52
aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOworICAgICAgICBkYXRhLmFkZENvbHVtbigibnVtYmVy
IiwgIjx0aW1lPiIpOworICAgICAgICBkYXRhLmFkZENvbHVtbigibnVtYmVyIiwgIlBhdGNoIFdh
aXRpbmcgVGltZXMiKTsKKyAgICAgICAgZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICJudW1iZXIiLCBy
b2xlOiAiaW50ZXJ2YWwifSk7CisgICAgICAgIGRhdGEuYWRkQ29sdW1uKHt0eXBlOiAibnVtYmVy
Iiwgcm9sZTogImludGVydmFsIn0pOworICAgICAgICBkYXRhLmFkZFJvd3MoWworICAgICAgICAg
IHslIGZvciBxdWV1ZV9kYXR1bSBpbiBxdWV1ZV9kYXRhICV9CisgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgIHt7IHF1ZXVlX2RhdHVtLmhvdXJzX2Zyb21fdGltZXN0YW1wIH19LAorICAgICAg
ICAgICAgICB7eyBxdWV1ZV9kYXR1bS5wYXRjaF93YWl0aW5nX21pbnNfbWVkIH19LAorICAgICAg
ICAgICAgICB7eyBxdWV1ZV9kYXR1bS5wYXRjaF93YWl0aW5nX21pbnNfbWluIH19LAorICAgICAg
ICAgICAgICB7eyBxdWV1ZV9kYXR1bS5wYXRjaF93YWl0aW5nX21pbnNfbWF4IH19CisgICAgICAg
ICAgICBdLAorICAgICAgICAgIHslIGVuZGZvciAlfQorICAgICAgICBdKTsKKyAgICAgICAgY2hh
cnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uTGluZUNoYXJ0KGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjaGFydDQnKSk7CisgICAgICAgIGNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CisK
KyAgICAgICAgb3B0aW9ucy5jb2xvcnMgPSBbImdyZWVuIiwgInJlZCJdOworICAgICAgICBkZWxl
dGUgb3B0aW9ucy5saW5lV2lkdGg7CisgICAgICAgIGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6
YXRpb24uRGF0YVRhYmxlKCk7CisgICAgICAgIGRhdGEuYWRkQ29sdW1uKCJudW1iZXIiLCAiPHRp
bWU+Iik7CisgICAgICAgIGRhdGEuYWRkQ29sdW1uKCJudW1iZXIiLCAiUHJvY2VzcyBEdXJhdGlv
biIpOworICAgICAgICBkYXRhLmFkZENvbHVtbih7dHlwZTogInN0cmluZyIsIHJvbGU6ICJ0b29s
dGlwIn0pOworICAgICAgICBkYXRhLmFkZENvbHVtbigibnVtYmVyIiwgIldhaXQgRHVyYXRpb24i
KTsKKyAgICAgICAgZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICJzdHJpbmciLCByb2xlOiAidG9vbHRp
cCJ9KTsKKyAgICAgICAgZGF0YS5hZGRSb3dzKFsKKyAgICAgICAgICB7JSBmb3IgcGF0Y2hfZGF0
dW0gaW4gcGF0Y2hfZGF0YSAlfQorICAgICAgICAgICAgWworICAgICAgICAgICAgICB7eyBwYXRj
aF9kYXR1bS5ob3Vyc19mcm9tX3RpbWVzdGFtcCB9fSwKKyAgICAgICAgICAgICAge3sgcGF0Y2hf
ZGF0dW0ucHJvY2Vzc19kdXJhdGlvbiB9fSwKKyAgICAgICAgICAgICAgIlBhdGNoIHt7IHBhdGNo
X2RhdHVtLmF0dGFjaG1lbnRfaWR8Zm9yY2VfZXNjYXBlIH19IiwKKyAgICAgICAgICAgICAge3sg
cGF0Y2hfZGF0dW0ud2FpdF9kdXJhdGlvbiB9fSwKKyAgICAgICAgICAgICAgIlBhdGNoIHt7IHBh
dGNoX2RhdHVtLmF0dGFjaG1lbnRfaWR8Zm9yY2VfZXNjYXBlIH19IiwKKyAgICAgICAgICAgIF0s
CisgICAgICAgICAgeyUgZW5kZm9yICV9CisgICAgICAgIF0pOworICAgICAgICBjaGFydCA9IG5l
dyBnb29nbGUudmlzdWFsaXphdGlvbi5TY2F0dGVyQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NoYXJ0NScpKTsKKyAgICAgICAgY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKKworICAg
ICAgICBvcHRpb25zLmNvbG9ycyA9IFsiYmx1ZSIsICJwdXJwbGUiXTsKKyAgICAgICAgZGVsZXRl
IG9wdGlvbnMudkF4aXMudGl0bGU7CisgICAgICAgIGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6
YXRpb24uRGF0YVRhYmxlKCk7CisgICAgICAgIGRhdGEuYWRkQ29sdW1uKCJudW1iZXIiLCAiPHRp
bWU+Iik7CisgICAgICAgIGRhdGEuYWRkQ29sdW1uKCJudW1iZXIiLCAiU3RhdHVzIFVwZGF0ZXMi
KTsKKyAgICAgICAgZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICJzdHJpbmciLCByb2xlOiAidG9vbHRp
cCJ9KTsKKyAgICAgICAgZGF0YS5hZGRDb2x1bW4oIm51bWJlciIsICJSZXRyaWVzIik7CisgICAg
ICAgIGRhdGEuYWRkQ29sdW1uKHt0eXBlOiAic3RyaW5nIiwgcm9sZTogInRvb2x0aXAifSk7Cisg
ICAgICAgIGRhdGEuYWRkUm93cyhbCisgICAgICAgICAgeyUgZm9yIHBhdGNoX2RhdHVtIGluIHBh
dGNoX2RhdGEgJX0KKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAge3sgcGF0Y2hfZGF0dW0u
aG91cnNfZnJvbV90aW1lc3RhbXAgfX0sCisgICAgICAgICAgICAgIHt7IHBhdGNoX2RhdHVtLnN0
YXR1c191cGRhdGVfY291bnQgfX0sCisgICAgICAgICAgICAgICJQYXRjaCB7eyBwYXRjaF9kYXR1
bS5hdHRhY2htZW50X2lkfGZvcmNlX2VzY2FwZSB9fSIsCisgICAgICAgICAgICAgIHt7IHBhdGNo
X2RhdHVtLnJldHJ5X2NvdW50IH19LAorICAgICAgICAgICAgICAiUGF0Y2gge3sgcGF0Y2hfZGF0
dW0uYXR0YWNobWVudF9pZHxmb3JjZV9lc2NhcGUgfX0iLAorICAgICAgICAgICAgXSwKKyAgICAg
ICAgICB7JSBlbmRmb3IgJX0KKyAgICAgICAgXSk7CisgICAgICAgIGNoYXJ0ID0gbmV3IGdvb2ds
ZS52aXN1YWxpemF0aW9uLlNjYXR0ZXJDaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hh
cnQ2JykpOworICAgICAgICBjaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOworICAgICAgfSk7Cisg
ICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKworICA8Ym9keT4KKyAgICA8aDE+e3sgcXVldWVfbmFt
ZSB9fSBDaGFydHM8L2gxPgorICAgIDxkaXY+W3t7IHF1ZXVlX25hbWV8Zm9yY2VfZXNjYXBlfHF1
ZXVlX3N0YXR1c19saW5rOiJzdGF0dXMifHNhZmUgfX1dPC9kaXY+CisgICAgPGRpdiBjbGFzcz0i
Y2hhcnQiIGlkPSJjaGFydDEiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImNoYXJ0IiBpZD0iY2hh
cnQyIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJjaGFydCIgaWQ9ImNoYXJ0MyI+PC9kaXY+Cisg
ICAgPGRpdiBjbGFzcz0iY2hhcnQiIGlkPSJjaGFydDQiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9
ImNoYXJ0IiBpZD0iY2hhcnQ1Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJjaGFydCIgaWQ9ImNo
YXJ0NiI+PC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1F1ZXVl
U3RhdHVzU2VydmVyL3RlbXBsYXRlcy9xdWV1ZXN0YXR1cy5odG1sIGIvVG9vbHMvUXVldWVTdGF0
dXNTZXJ2ZXIvdGVtcGxhdGVzL3F1ZXVlc3RhdHVzLmh0bWwKaW5kZXggZjhlYjYxZTRlZjA3YjE1
MGM5MTg4MmEyYzA0MTRkNzA0MGY4Y2MwMS4uYWFmYWZiZDgzN2QxYTE5OTM4ZDA4YmQzMTM1MTM5
ZDBmMmVjZmNmYSAxMDA2NDQKLS0tIGEvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvdGVtcGxhdGVz
L3F1ZXVlc3RhdHVzLmh0bWwKKysrIGIvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvdGVtcGxhdGVz
L3F1ZXVlc3RhdHVzLmh0bWwKQEAgLTksNiArOSw3IEBACiAKIDxoMz5TdW1tYXJ5PC9oMz4KIDxk
aXY+Cis8ZGl2Plt7eyBxdWV1ZV9uYW1lfGZvcmNlX2VzY2FwZXxxdWV1ZV9jaGFydHNfbGluazoi
Y2hhcnRzInxzYWZlIH19XTwvZGl2PgogTGFzdCBQYXNzOiB7JSBpZiBsYXN0X3Bhc3MgJX17eyBs
YXN0X3Bhc3MuZGF0ZXx0aW1lc2luY2UgfX0gYWdveyUgZWxzZSAlfW5ldmVyeyUgZW5kaWYgJX0K
IHslIGlmIG5vdCBib3RfaWQgYW5kIGxhc3RfcGFzcy5ib3RfaWQgJX0KIGJ5IDxhIGhyZWY9Ii9x
dWV1ZS1zdGF0dXMve3tsYXN0X3Bhc3MucXVldWVfbmFtZX19L2JvdHMve3tsYXN0X3Bhc3MuYm90
X2lkfX0iPnt7IGxhc3RfcGFzcy5ib3RfaWQgfX08L2E+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185210</attachid>
            <date>2013-01-29 02:51:43 -0800</date>
            <delta_ts>2013-01-29 10:09:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107659-20130129214829.patch</filename>
            <type>text/plain</type>
            <size>34917</size>
            <attacher name="Alan Cutter">alancutter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMDMyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjZkNGMwNjMzNjU0MzJjNzc1YzNkNDM2YzliY2YxOTU3
ZTY0OGE0MS4uMjA4ZWZiZWI2NzQ2NDY2YWI4YzRhM2VkMWM0NWQxM2M2YzE2OTE3MSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUw
IEBACisyMDEzLTAxLTI5ICBBbGFuIEN1dHRlciAgPGFsYW5jdXR0ZXJAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFF1ZXVlU3RhdHVzU2VydmVyIG5lZWRzIHBhZ2VzIHRvIGRpc3BsYXkgaGlzdG9y
aWNhbCBxdWV1ZSBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDc2NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDcmVhdGVkIGEgL3F1ZXVlLWNoYXJ0cy88cXVldWUtbmFtZT4gaGFuZGxlciB0byBw
cmVzZW50IHF1ZXVlIGFuZCBwYXRjaCBkYXRhIHVzaW5nIEdvb2dsZSBDaGFydCBUb29scy4KKwor
ICAgICAgICAqIFF1ZXVlU3RhdHVzU2VydmVyL2FwcC55YW1sOgorICAgICAgICAqIFF1ZXVlU3Rh
dHVzU2VydmVyL2NvbmZpZy9jaGFydHMucHk6IENvcGllZCBmcm9tIFRvb2xzL1F1ZXVlU3RhdHVz
U2VydmVyL21vZGVsL3F1ZXVlbG9nLnB5LgorICAgICAgICAoZ2V0X3RpbWVfdW5pdCk6CisgICAg
ICAgICogUXVldWVTdGF0dXNTZXJ2ZXIvZmlsdGVycy93ZWJraXRfZXh0cmFzLnB5OgorICAgICAg
ICAod2Via2l0X2xpbmtpZnkpOgorICAgICAgICAod2Via2l0X2J1Z19pZCk6CisgICAgICAgICh3
ZWJraXRfYXR0YWNobWVudF9pZCk6CisgICAgICAgIChyZXN1bHRzX2xpbmspOgorICAgICAgICAo
cXVldWVfc3RhdHVzX2xpbmspOgorICAgICAgICAocXVldWVfY2hhcnRzX2xpbmspOgorICAgICAg
ICAqIFF1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3F1ZXVlY2hhcnRzLnB5OiBBZGRlZC4KKyAg
ICAgICAgKFF1ZXVlQ2hhcnRzKToKKyAgICAgICAgKFF1ZXVlQ2hhcnRzLmdldCk6CisgICAgICAg
IChRdWV1ZUNoYXJ0cy5fZ2V0X21pbl9tZWRfbWF4KToKKyAgICAgICAgKFF1ZXVlQ2hhcnRzLl9n
ZXRfcGF0Y2hfZGF0YSk6CisgICAgICAgIChRdWV1ZUNoYXJ0cy5fZ2V0X3BhdGNoX2xvZ3MpOgor
ICAgICAgICAoUXVldWVDaGFydHMuX2dldF9xdWV1ZV9kYXRhKToKKyAgICAgICAgKFF1ZXVlQ2hh
cnRzLl9nZXRfcXVldWVfbG9ncyk6CisgICAgICAgIChRdWV1ZUNoYXJ0cy5fZ2V0X3RpbWVfdW5p
dCk6CisgICAgICAgIChRdWV1ZUNoYXJ0cy5fZ2V0X3RpbWVzdGFtcCk6CisgICAgICAgIChRdWV1
ZUNoYXJ0cy5fZ2V0X3ZpZXdfcmFuZ2UpOgorICAgICAgICAqIFF1ZXVlU3RhdHVzU2VydmVyL2hh
bmRsZXJzL3F1ZXVlc3RhdHVzLnB5OgorICAgICAgICAoUXVldWVTdGF0dXMuZ2V0KToKKyAgICAg
ICAgKiBRdWV1ZVN0YXR1c1NlcnZlci9pbmRleC55YW1sOgorICAgICAgICAqIFF1ZXVlU3RhdHVz
U2VydmVyL21haW4ucHk6CisgICAgICAgICogUXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwvcXVldWVs
b2cucHk6CisgICAgICAgIChRdWV1ZUxvZyk6CisgICAgICAgIChRdWV1ZUxvZy5jcmVhdGVfa2V5
KToKKyAgICAgICAgKFF1ZXVlTG9nLmdldF9hdCk6CisgICAgICAgIChRdWV1ZUxvZy5nZXRfY3Vy
cmVudCk6CisgICAgICAgIChRdWV1ZUxvZy5nZXRfb3JfY3JlYXRlKToKKyAgICAgICAgKFF1ZXVl
TG9nLl9nZXRfb3JfY3JlYXRlX3R4bik6CisgICAgICAgICogUXVldWVTdGF0dXNTZXJ2ZXIvc3R5
bGVzaGVldHMvY2hhcnRzLmNzczogQWRkZWQuCisgICAgICAgICguY2hhcnQpOgorICAgICAgICAo
LmNob2ljZXMpOgorICAgICAgICAqIFF1ZXVlU3RhdHVzU2VydmVyL3RlbXBsYXRlcy9xdWV1ZWNo
YXJ0cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBRdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMv
cXVldWVzdGF0dXMuaHRtbDoKKwogMjAxMy0wMS0yOCAgVGltb3RoeSBMb2ggIDx0aW1sb2hAY2hy
b21pdW0uY29tPgogCiAgICAgICAgIFJlZmFjdG9yIENoYW5nZUxvZyBhbmQgUHJlcGFyZUNoYW5n
ZUxvZyB0byB1c2UgRmlsZVN5c3RlbSBvYmplY3RzCmRpZmYgLS1naXQgYS9Ub29scy9RdWV1ZVN0
YXR1c1NlcnZlci9hcHAueWFtbCBiL1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2FwcC55YW1sCmlu
ZGV4IDEwMTk0NjFhOGFjOTM5YjZhNGI1NTcwNDdhNmVlZmE0OTFiYzA5MTcuLjUzOTY1YmU1Yjc1
M2I4NWFkNjNkYmQxZjVhNDg4MzM5ZWYyZjg5MTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1F1ZXVlU3Rh
dHVzU2VydmVyL2FwcC55YW1sCisrKyBiL1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2FwcC55YW1s
CkBAIC0xLDUgKzEsNSBAQAogYXBwbGljYXRpb246IHdlYmtpdC1jb21taXQtcXVldWUKLXZlcnNp
b246IDEwNzc3NSAjIEJ1Z3ppbGxhIGJ1ZyBJRCBvZiBsYXN0IG1ham9yIGNoYW5nZQordmVyc2lv
bjogMTA3NjU5ICMgQnVnemlsbGEgYnVnIElEIG9mIGxhc3QgbWFqb3IgY2hhbmdlCiBydW50aW1l
OiBweXRob24KIGFwaV92ZXJzaW9uOiAxCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1F1ZXVlU3RhdHVz
U2VydmVyL2NvbmZpZy9jaGFydHMucHkgYi9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci9jb25maWcv
Y2hhcnRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlMzhhODUyZTU5ZDFhMWMyOGIxZjE2MGUyYmI2ODVjMjE0
MTM3MzAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci9jb25maWcv
Y2hhcnRzLnB5CkBAIC0wLDAgKzEsNjEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitwYXRjaF9sb2df
bGltaXQgPSA1MDAKKworIyBBbGwgdW5pdHMgYXJlIHJlcHJlc2VudGVkIG51bWVyaWNhbGx5IGFz
IHNlY29uZHMuCitvbmVfbWludXRlID0gNjAuMAorb25lX2hvdXIgPSBvbmVfbWludXRlICogNjAu
MAorb25lX2RheSA9IG9uZV9ob3VyICogMjQuMAorb25lX21vbnRoID0gb25lX2RheSAqIDMwLjAK
KworIyBIb3cgZmFyIGJhY2sgdG8gdmlldyB0aGUgaGlzdG9yeSwgc3BlY2lmaWVkIGluIHNlY29u
ZHMuCit2aWV3X3JhbmdlX2Nob2ljZXMgPSBbCisgICAgeyJuYW1lIjogIjEgZGF5IiwgInZpZXdf
cmFuZ2UiOiBvbmVfZGF5fSwKKyAgICB7Im5hbWUiOiAiMSB3ZWVrIiwgInZpZXdfcmFuZ2UiOiBv
bmVfZGF5ICogN30sCisgICAgeyJuYW1lIjogIjEgbW9udGgiLCAidmlld19yYW5nZSI6IG9uZV9t
b250aH0sCitdCisKK2RlZmF1bHRfdmlld19yYW5nZSA9IG9uZV9kYXkKKworX3RpbWVfdW5pdHMg
PSBbCisgICAgIyh0aHJlc2hvbGQsIHRpbWUgdW5pdCwgbmFtZSkKKyAgICAoMCwgb25lX2hvdXIs
ICJob3VycyIpLAorICAgICg0ICogb25lX2RheSwgb25lX2RheSwgImRheXMiKSwKKyAgICAoMyAq
IG9uZV9tb250aCwgb25lX21vbnRoLCAibW9udGhzIiksCitdCisKKworZGVmIGdldF90aW1lX3Vu
aXQodmlld19yYW5nZSk6CisgICAgY3VycmVudF90aHJlc2hvbGQsIGN1cnJlbnRfdGltZV91bml0
LCBjdXJyZW50X25hbWUgPSBfdGltZV91bml0c1swXQorICAgIGZvciB0aHJlc2hvbGQsIHRpbWVf
dW5pdCwgbmFtZSBpbiBfdGltZV91bml0c1sxOl06CisgICAgICAgIGlmIHZpZXdfcmFuZ2UgPj0g
dGhyZXNob2xkOgorICAgICAgICAgICAgY3VycmVudF90aW1lX3VuaXQsIGN1cnJlbnRfbmFtZSA9
IHRpbWVfdW5pdCwgbmFtZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnJlYWsKKyAgICBy
ZXR1cm4gY3VycmVudF90aW1lX3VuaXQsIGN1cnJlbnRfbmFtZQpkaWZmIC0tZ2l0IGEvVG9vbHMv
UXVldWVTdGF0dXNTZXJ2ZXIvZmlsdGVycy93ZWJraXRfZXh0cmFzLnB5IGIvVG9vbHMvUXVldWVT
dGF0dXNTZXJ2ZXIvZmlsdGVycy93ZWJraXRfZXh0cmFzLnB5CmluZGV4IGI2NDVmNzhmZmJlMjBj
ODllMWUxMGJiNDE1ZWU1YTRkMmI3MjQ4NTQuLjViM2M5YjFkZTliNDYzNWRhZTYxYjBjY2NkZWZh
MjliNjIzMDg1MTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2ZpbHRlcnMv
d2Via2l0X2V4dHJhcy5weQorKysgYi9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci9maWx0ZXJzL3dl
YmtpdF9leHRyYXMucHkKQEAgLTM2LDYgKzM2LDcgQEAgcmVnaXN0ZXIgPSB3ZWJhcHAudGVtcGxh
dGUuY3JlYXRlX3RlbXBsYXRlX3JlZ2lzdGVyKCkKIGJ1Z19yZWdleHAgPSByZS5jb21waWxlKHIi
YnVnICg/UDxidWdfaWQ+XGQrKSIpCiBwYXRjaF9yZWdleHAgPSByZS5jb21waWxlKHIicGF0Y2gg
KD9QPHBhdGNoX2lkPlxkKykiKQogCisKIEByZWdpc3Rlci5maWx0ZXIKIEBzdHJpbmdmaWx0ZXIK
IGRlZiB3ZWJraXRfbGlua2lmeSh2YWx1ZSk6CkBAIC00MywxNyArNDQsMzIgQEAgZGVmIHdlYmtp
dF9saW5raWZ5KHZhbHVlKToKICAgICB2YWx1ZSA9IHBhdGNoX3JlZ2V4cC5zdWIocic8YSBocmVm
PSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9hdHRhY2htZW50LmNnaT9pZD1cZzxwYXRjaF9pZD4m
YWN0aW9uPXByZXR0eXBhdGNoIj5wYXRjaCBcZzxwYXRjaF9pZD48L2E+JywgdmFsdWUpCiAgICAg
cmV0dXJuIHZhbHVlCiAKKwogQHJlZ2lzdGVyLmZpbHRlcgogQHN0cmluZ2ZpbHRlcgogZGVmIHdl
YmtpdF9idWdfaWQodmFsdWUpOgogICAgIHJldHVybiAnPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5v
cmcvYi8lcyI+JXM8L2E+JyAlICh2YWx1ZSwgdmFsdWUpCiAKKwogQHJlZ2lzdGVyLmZpbHRlcgog
QHN0cmluZ2ZpbHRlcgogZGVmIHdlYmtpdF9hdHRhY2htZW50X2lkKHZhbHVlKToKICAgICByZXR1
cm4gJzxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL2F0dGFjaG1lbnQuY2dpP2lkPSVz
JmFjdGlvbj1wcmV0dHlwYXRjaCI+JXM8L2E+JyAlICh2YWx1ZSwgdmFsdWUpCiAKKwogQHJlZ2lz
dGVyLmZpbHRlcgogQHN0cmluZ2ZpbHRlcgogZGVmIHJlc3VsdHNfbGluayhzdGF0dXNfaWQpOgog
ICAgIHJldHVybiAnPGEgaHJlZj0iL3Jlc3VsdHMvJXMiPnJlc3VsdHM8L2E+JyAlIHN0YXR1c19p
ZAorCisKK0ByZWdpc3Rlci5maWx0ZXIKK0BzdHJpbmdmaWx0ZXIKK2RlZiBxdWV1ZV9zdGF0dXNf
bGluayhxdWV1ZV9uYW1lLCB0ZXh0KToKKyAgICByZXR1cm4gJzxhIGhyZWY9Ii9xdWV1ZS1zdGF0
dXMvJXMiPiVzPC9hPicgJSAocXVldWVfbmFtZSwgdGV4dCkKKworCitAcmVnaXN0ZXIuZmlsdGVy
CitAc3RyaW5nZmlsdGVyCitkZWYgcXVldWVfY2hhcnRzX2xpbmsocXVldWVfbmFtZSwgdGV4dCk6
CisgICAgcmV0dXJuICc8YSBocmVmPSIvcXVldWUtY2hhcnRzLyVzIj4lczwvYT4nICUgKHF1ZXVl
X25hbWUsIHRleHQpCmRpZmYgLS1naXQgYS9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVy
cy9xdWV1ZWNoYXJ0cy5weSBiL1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3F1ZXVl
Y2hhcnRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2MTEwMjc4MTBjMWZjYWI0ZTllYWI0NTZmYmQ0YTVmZTA3
M2M1ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVy
cy9xdWV1ZWNoYXJ0cy5weQpAQCAtMCwwICsxLDE1MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2lt
cG9ydCBjYWxlbmRhcgorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBpdGVy
dG9vbHMKK2Zyb20gdGltZSBpbXBvcnQgdGltZQorCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0
IGltcG9ydCB3ZWJhcHAKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQud2ViYXBwIGltcG9ydCB0
ZW1wbGF0ZQorCitmcm9tIGNvbmZpZyBpbXBvcnQgbG9nZ2luZywgY2hhcnRzCitmcm9tIG1vZGVs
LnBhdGNobG9nIGltcG9ydCBQYXRjaExvZworZnJvbSBtb2RlbC5xdWV1ZXMgaW1wb3J0IFF1ZXVl
Citmcm9tIG1vZGVsLnF1ZXVlbG9nIGltcG9ydCBRdWV1ZUxvZworCisKK2NsYXNzIFF1ZXVlQ2hh
cnRzKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6CisgICAgZGVmIGdldChzZWxmLCBxdWV1ZV9uYW1l
KToKKyAgICAgICAgcXVldWVfbmFtZSA9IHF1ZXVlX25hbWUubG93ZXIoKQorICAgICAgICBpZiBu
b3QgUXVldWUucXVldWVfd2l0aF9uYW1lKHF1ZXVlX25hbWUpOgorICAgICAgICAgICAgc2VsZi5l
cnJvcig0MDQpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICB0aW1lc3RhbXAgPSBzZWxm
Ll9nZXRfdGltZXN0YW1wKCkKKyAgICAgICAgdmlld19yYW5nZSA9IHNlbGYuX2dldF92aWV3X3Jh
bmdlKCkKKyAgICAgICAgdGltZV91bml0LCB0aW1lX3VuaXRfbmFtZSA9IGNoYXJ0cy5nZXRfdGlt
ZV91bml0KHZpZXdfcmFuZ2UpCisKKyAgICAgICAgYWxsX3F1ZXVlX25hbWVzID0gbWFwKFF1ZXVl
Lm5hbWUsIFF1ZXVlLmFsbCgpKQorCisgICAgICAgIHRlbXBsYXRlX3ZhbHVlcyA9IHsKKyAgICAg
ICAgICAgICJhbGxfcXVldWVfbmFtZXMiOiBhbGxfcXVldWVfbmFtZXMsCisgICAgICAgICAgICAi
cGF0Y2hfZGF0YSI6IHNlbGYuX2dldF9wYXRjaF9kYXRhKHF1ZXVlX25hbWUsIHRpbWVzdGFtcCwg
dmlld19yYW5nZSksCisgICAgICAgICAgICAicXVldWVfZGF0YSI6IHNlbGYuX2dldF9xdWV1ZV9k
YXRhKHF1ZXVlX25hbWUsIHRpbWVzdGFtcCwgdmlld19yYW5nZSksCisgICAgICAgICAgICAicXVl
dWVfbmFtZSI6IHF1ZXVlX25hbWUsCisgICAgICAgICAgICAic2Vjb25kc19hZ29fbWluIjogMCwK
KyAgICAgICAgICAgICJzZWNvbmRzX2Fnb19tYXgiOiB2aWV3X3JhbmdlLAorICAgICAgICAgICAg
InRpbWVfdW5pdF9uYW1lIjogdGltZV91bml0X25hbWUsCisgICAgICAgICAgICAidGltZV91bml0
IjogdGltZV91bml0LAorICAgICAgICAgICAgInRpbWVzdGFtcCI6IHRpbWVzdGFtcCwKKyAgICAg
ICAgICAgICJ2aWV3X3JhbmdlIjogdmlld19yYW5nZSwKKyAgICAgICAgICAgICJ2aWV3X3Jhbmdl
X2Nob2ljZXMiOiBjaGFydHMudmlld19yYW5nZV9jaG9pY2VzLAorICAgICAgICB9CisgICAgICAg
IHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKHRlbXBsYXRlLnJlbmRlcigidGVtcGxhdGVzL3F1ZXVl
Y2hhcnRzLmh0bWwiLCB0ZW1wbGF0ZV92YWx1ZXMpKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAg
ZGVmIF9nZXRfbWluX21lZF9tYXgoY2xzLCB2YWx1ZXMsIGRlZmF1bHRzPSgwLCAwLCAwKSk6Cisg
ICAgICAgIGlmIG5vdCB2YWx1ZXM6CisgICAgICAgICAgICByZXR1cm4gZGVmYXVsdHMKKyAgICAg
ICAgbGVuZ3RoID0gbGVuKHZhbHVlcykKKyAgICAgICAgc29ydGVkX3ZhbHVlcyA9IHNvcnRlZCh2
YWx1ZXMpCisgICAgICAgIHJldHVybiBzb3J0ZWRfdmFsdWVzWzBdLCBzb3J0ZWRfdmFsdWVzW2xl
bmd0aCAvIDJdLCBzb3J0ZWRfdmFsdWVzW2xlbmd0aCAtIDFdCisKKyAgICBkZWYgX2dldF9wYXRj
aF9kYXRhKHNlbGYsIHF1ZXVlX25hbWUsIHRpbWVzdGFtcCwgdmlld19yYW5nZSk6CisgICAgICAg
IHBhdGNoX2xvZ3MgPSBzZWxmLl9nZXRfcGF0Y2hfbG9ncyhxdWV1ZV9uYW1lLCB0aW1lc3RhbXAs
IHZpZXdfcmFuZ2UpCisgICAgICAgIHBhdGNoX2RhdGEgPSBbXQorICAgICAgICBmb3IgcGF0Y2hf
bG9nIGluIHBhdGNoX2xvZ3M6CisgICAgICAgICAgICBpZiBwYXRjaF9sb2cucHJvY2Vzc19kdXJh
dGlvbiBhbmQgcGF0Y2hfbG9nLndhaXRfZHVyYXRpb246CisgICAgICAgICAgICAgICAgcGF0Y2hf
bG9nX3RpbWVzdGFtcCA9IGNhbGVuZGFyLnRpbWVnbShwYXRjaF9sb2cuZGF0ZS51dGN0aW1ldHVw
bGUoKSkKKyAgICAgICAgICAgICAgICBwYXRjaF9kYXRhLmFwcGVuZCh7CisgICAgICAgICAgICAg
ICAgICAgICJhdHRhY2htZW50X2lkIjogcGF0Y2hfbG9nLmF0dGFjaG1lbnRfaWQsCisgICAgICAg
ICAgICAgICAgICAgICJzZWNvbmRzX2FnbyI6IHRpbWVzdGFtcCAtIHBhdGNoX2xvZ190aW1lc3Rh
bXAsCisgICAgICAgICAgICAgICAgICAgICJwcm9jZXNzX2R1cmF0aW9uIjogcGF0Y2hfbG9nLnBy
b2Nlc3NfZHVyYXRpb24gLyBjaGFydHMub25lX21pbnV0ZSwKKyAgICAgICAgICAgICAgICAgICAg
InJldHJ5X2NvdW50IjogcGF0Y2hfbG9nLnJldHJ5X2NvdW50LAorICAgICAgICAgICAgICAgICAg
ICAic3RhdHVzX3VwZGF0ZV9jb3VudCI6IHBhdGNoX2xvZy5zdGF0dXNfdXBkYXRlX2NvdW50LAor
ICAgICAgICAgICAgICAgICAgICAid2FpdF9kdXJhdGlvbiI6IHBhdGNoX2xvZy53YWl0X2R1cmF0
aW9uIC8gY2hhcnRzLm9uZV9taW51dGUsCisgICAgICAgICAgICAgICB9KQorICAgICAgICByZXR1
cm4gcGF0Y2hfZGF0YQorCisgICAgZGVmIF9nZXRfcGF0Y2hfbG9ncyhzZWxmLCBxdWV1ZV9uYW1l
LCB0aW1lc3RhbXAsIHZpZXdfcmFuZ2UpOgorICAgICAgICBwYXRjaF9sb2dfcXVlcnkgPSBQYXRj
aExvZy5hbGwoKQorICAgICAgICBwYXRjaF9sb2dfcXVlcnkgPSBwYXRjaF9sb2dfcXVlcnkuZmls
dGVyKCJxdWV1ZV9uYW1lID0iLCBxdWV1ZV9uYW1lKQorICAgICAgICBwYXRjaF9sb2dfcXVlcnkg
PSBwYXRjaF9sb2dfcXVlcnkuZmlsdGVyKCJkYXRlID49IiwgZGF0ZXRpbWUudXRjZnJvbXRpbWVz
dGFtcCh0aW1lc3RhbXAgLSB2aWV3X3JhbmdlKSkKKyAgICAgICAgcGF0Y2hfbG9nX3F1ZXJ5ID0g
cGF0Y2hfbG9nX3F1ZXJ5LmZpbHRlcigiZGF0ZSA8PSIsIGRhdGV0aW1lLnV0Y2Zyb210aW1lc3Rh
bXAodGltZXN0YW1wKSkKKyAgICAgICAgcGF0Y2hfbG9nX3F1ZXJ5ID0gcGF0Y2hfbG9nX3F1ZXJ5
Lm9yZGVyKCJkYXRlIikKKyAgICAgICAgcmV0dXJuIHBhdGNoX2xvZ19xdWVyeS5ydW4obGltaXQ9
Y2hhcnRzLnBhdGNoX2xvZ19saW1pdCkKKworICAgIGRlZiBfZ2V0X3F1ZXVlX2RhdGEoc2VsZiwg
cXVldWVfbmFtZSwgdGltZXN0YW1wLCB2aWV3X3JhbmdlKToKKyAgICAgICAgcXVldWVfbG9ncyA9
IHNlbGYuX2dldF9xdWV1ZV9sb2dzKHF1ZXVlX25hbWUsIHRpbWVzdGFtcCwgdmlld19yYW5nZSkK
KyAgICAgICAgcXVldWVfZGF0YSA9IFtdCisgICAgICAgIGZvciBxdWV1ZV9sb2cgaW4gcXVldWVf
bG9nczoKKyAgICAgICAgICAgIHF1ZXVlX2xvZ190aW1lc3RhbXAgPSBjYWxlbmRhci50aW1lZ20o
cXVldWVfbG9nLmRhdGUudXRjdGltZXR1cGxlKCkpCisgICAgICAgICAgICBwX21pbiwgcF9tZWQs
IHBfbWF4ID0gc2VsZi5fZ2V0X21pbl9tZWRfbWF4KHF1ZXVlX2xvZy5wYXRjaF9wcm9jZXNzX2R1
cmF0aW9ucykKKyAgICAgICAgICAgIHdfbWluLCB3X21lZCwgd19tYXggPSBzZWxmLl9nZXRfbWlu
X21lZF9tYXgocXVldWVfbG9nLnBhdGNoX3dhaXRfZHVyYXRpb25zKQorICAgICAgICAgICAgcXVl
dWVfZGF0YS5hcHBlbmQoeworICAgICAgICAgICAgICAgICJib3RzX3NlZW4iOiBsZW4ocXVldWVf
bG9nLmJvdF9pZHNfc2VlbiksCisgICAgICAgICAgICAgICAgInNlY29uZHNfYWdvIjogdGltZXN0
YW1wIC0gcXVldWVfbG9nX3RpbWVzdGFtcCwKKyAgICAgICAgICAgICAgICAicGF0Y2hfcHJvY2Vz
c2luZ19taW4iOiBwX21pbiwKKyAgICAgICAgICAgICAgICAicGF0Y2hfcHJvY2Vzc2luZ19tZWQi
OiBwX21lZCwKKyAgICAgICAgICAgICAgICAicGF0Y2hfcHJvY2Vzc2luZ19tYXgiOiBwX21heCwK
KyAgICAgICAgICAgICAgICAicGF0Y2hfcmV0cnlfY291bnQiOiBxdWV1ZV9sb2cucGF0Y2hfcmV0
cnlfY291bnQsCisgICAgICAgICAgICAgICAgInBhdGNoX3dhaXRpbmdfbWluIjogd19taW4sCisg
ICAgICAgICAgICAgICAgInBhdGNoX3dhaXRpbmdfbWVkIjogd19tZWQsCisgICAgICAgICAgICAg
ICAgInBhdGNoX3dhaXRpbmdfbWF4Ijogd19tYXgsCisgICAgICAgICAgICAgICAgInBhdGNoZXNf
Y29tcGxldGVkIjogbGVuKHF1ZXVlX2xvZy5wYXRjaF9wcm9jZXNzX2R1cmF0aW9ucyksCisgICAg
ICAgICAgICAgICAgInBhdGNoZXNfd2FpdGluZyI6IHF1ZXVlX2xvZy5tYXhfcGF0Y2hlc193YWl0
aW5nLAorICAgICAgICAgICAgICAgICJzdGF0dXNfdXBkYXRlX2NvdW50IjogcXVldWVfbG9nLnN0
YXR1c191cGRhdGVfY291bnQsCisgICAgICAgICAgICB9KQorICAgICAgICByZXR1cm4gcXVldWVf
ZGF0YQorCisgICAgZGVmIF9nZXRfcXVldWVfbG9ncyhzZWxmLCBxdWV1ZV9uYW1lLCB0aW1lc3Rh
bXAsIHZpZXdfcmFuZ2UpOgorICAgICAgICBxdWV1ZV9sb2dzID0gW10KKyAgICAgICAgY3VycmVu
dF90aW1lc3RhbXAgPSB0aW1lc3RhbXAgLSB2aWV3X3JhbmdlCisgICAgICAgIHdoaWxlIGN1cnJl
bnRfdGltZXN0YW1wIDw9IHRpbWVzdGFtcDoKKyAgICAgICAgICAgIHF1ZXVlX2xvZ3MuYXBwZW5k
KFF1ZXVlTG9nLmdldF9hdChxdWV1ZV9uYW1lLCBsb2dnaW5nLnF1ZXVlX2xvZ19kdXJhdGlvbiwg
Y3VycmVudF90aW1lc3RhbXApKQorICAgICAgICAgICAgY3VycmVudF90aW1lc3RhbXAgKz0gbG9n
Z2luZy5xdWV1ZV9sb2dfZHVyYXRpb24KKyAgICAgICAgcmV0dXJuIHF1ZXVlX2xvZ3MKKworICAg
IEBjbGFzc21ldGhvZAorICAgIGRlZiBfZ2V0X3RpbWVfdW5pdChjbHMsIHZpZXdfcmFuZ2UpOgor
ICAgICAgICBpZiB2aWV3X3JhbmdlID4gY2hhcnRzLm9uZV9kYXkgKiAyOgorICAgICAgICAgICAg
cmV0dXJuIAorCisgICAgZGVmIF9nZXRfdGltZXN0YW1wKHNlbGYpOgorICAgICAgICB0aW1lc3Rh
bXAgPSBzZWxmLnJlcXVlc3QuZ2V0KCJ0aW1lc3RhbXAiKQorICAgICAgICB0cnk6CisgICAgICAg
ICAgICByZXR1cm4gaW50KHRpbWVzdGFtcCkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Cisg
ICAgICAgICAgICByZXR1cm4gaW50KHRpbWUoKSkKKworICAgIGRlZiBfZ2V0X3ZpZXdfcmFuZ2Uo
c2VsZik6CisgICAgICAgIHZpZXdfcmFuZ2UgPSBzZWxmLnJlcXVlc3QuZ2V0KCJ2aWV3X3Jhbmdl
IikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIGludCh2aWV3X3JhbmdlKQorICAg
ICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBjaGFydHMuZGVmYXVs
dF92aWV3X3JhbmdlCmRpZmYgLS1naXQgYS9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVy
cy9xdWV1ZXN0YXR1cy5weSBiL1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3F1ZXVl
c3RhdHVzLnB5CmluZGV4IDkwNTRmY2FiMWI2ZDE4NmQ4NjlkM2JjYTU5ZTZiYzJmMzNmN2I3NmIu
LjRmNGUyZDI4YjU5YzczYWQyZmNlOGIwZmI3MjkyZTZmOTc0YzJhNGIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3F1ZXVlc3RhdHVzLnB5CisrKyBiL1Rvb2xz
L1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3F1ZXVlc3RhdHVzLnB5CkBAIC0xMDQsNiArMTA0
LDcgQEAgY2xhc3MgUXVldWVTdGF0dXMod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKIAogICAgICAg
ICBzdGF0dXNlcyA9IHNlbGYuX2ZldGNoX3N0YXR1c2VzKHF1ZXVlLCBib3RfaWQpCiAgICAgICAg
IHRlbXBsYXRlX3ZhbHVlcyA9IHsKKyAgICAgICAgICAgICJxdWV1ZV9uYW1lIjogcXVldWVfbmFt
ZSwKICAgICAgICAgICAgICJwYWdlX3RpdGxlIjogc2VsZi5fcGFnZV90aXRsZShxdWV1ZSwgYm90
X2lkKSwKICAgICAgICAgICAgICJ3b3JrX2l0ZW1fcm93cyI6IHNlbGYuX3Jvd3NfZm9yX3dvcmtf
aXRlbXMocXVldWUpLAogICAgICAgICAgICAgInN0YXR1c19ncm91cHMiOiBzZWxmLl9idWlsZF9z
dGF0dXNfZ3JvdXBzKHN0YXR1c2VzKSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1F1ZXVlU3RhdHVzU2Vy
dmVyL2luZGV4LnlhbWwgYi9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci9pbmRleC55YW1sCmluZGV4
IDM0ZWI3MmU1YTU2ZTM3YzRlYTU3YWJlNTVhNzlkZGRhMmQyNjA2ZmUuLjY5NGY3N2JkMTRmMmM3
NGNhZjcxMDgwYTU1MTBlZTZmZmU4NjJmOTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1F1ZXVlU3RhdHVz
U2VydmVyL2luZGV4LnlhbWwKKysrIGIvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaW5kZXgueWFt
bApAQCAtMTAsNiArMTAsMTEgQEAgaW5kZXhlczoKICMgYXV0b21hdGljYWxseSB1cGxvYWRlZCB0
byB0aGUgYWRtaW4gY29uc29sZSB3aGVuIHlvdSBuZXh0IGRlcGxveQogIyB5b3VyIGFwcGxpY2F0
aW9uIHVzaW5nIGFwcGNmZy5weS4KIAorLSBraW5kOiBQYXRjaExvZworICBwcm9wZXJ0aWVzOgor
ICAtIG5hbWU6IHF1ZXVlX25hbWUKKyAgLSBuYW1lOiBkYXRlCisKIC0ga2luZDogUXVldWVTdGF0
dXMKICAgcHJvcGVydGllczoKICAgLSBuYW1lOiBhY3RpdmVfcGF0Y2hfaWQKZGlmZiAtLWdpdCBh
L1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21haW4ucHkgYi9Ub29scy9RdWV1ZVN0YXR1c1NlcnZl
ci9tYWluLnB5CmluZGV4IGUxMTU1ZmZhNmYwMDhiMjkwMGU3OTFmNDUyMWVlODIyMTQ2ZWVkZWEu
LjdiYTU5ZGVhNzU3MjE1MmE5NmUzZjY5Mzc4MWZhZDIxYzllMWY0ODUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1F1ZXVlU3RhdHVzU2VydmVyL21haW4ucHkKKysrIGIvVG9vbHMvUXVldWVTdGF0dXNTZXJ2
ZXIvbWFpbi5weQpAQCAtMzksNiArMzksNyBAQCBmcm9tIGhhbmRsZXJzLmdjIGltcG9ydCBHQwog
ZnJvbSBoYW5kbGVycy5uZXh0cGF0Y2ggaW1wb3J0IE5leHRQYXRjaAogZnJvbSBoYW5kbGVycy5w
YXRjaCBpbXBvcnQgUGF0Y2gKIGZyb20gaGFuZGxlcnMucGF0Y2hzdGF0dXMgaW1wb3J0IFBhdGNo
U3RhdHVzCitmcm9tIGhhbmRsZXJzLnF1ZXVlY2hhcnRzIGltcG9ydCBRdWV1ZUNoYXJ0cwogZnJv
bSBoYW5kbGVycy5xdWV1ZXN0YXR1cyBpbXBvcnQgUXVldWVTdGF0dXMKIGZyb20gaGFuZGxlcnMu
cmVjZW50c3RhdHVzIGltcG9ydCBRdWV1ZXNPdmVydmlldwogZnJvbSBoYW5kbGVycy5yZWxlYXNl
cGF0Y2ggaW1wb3J0IFJlbGVhc2VQYXRjaApAQCAtNjMsNiArNjQsNyBAQCByb3V0ZXMgPSBbCiAg
ICAgKHInL3Jlc3VsdHMvKC4qKScsIFNob3dSZXN1bHRzKSwKICAgICAocicvc3RhdHVzLWJ1YmJs
ZS8oLiopJywgU3RhdHVzQnViYmxlKSwKICAgICAocicvc3ZuLXJldmlzaW9uLyguKiknLCBTVk5S
ZXZpc2lvbiksCisgICAgKHInL3F1ZXVlLWNoYXJ0cy8oLiopJywgUXVldWVDaGFydHMpLAogICAg
IChyJy9xdWV1ZS1zdGF0dXMvKC4qKS9ib3RzLyguKiknLCBRdWV1ZVN0YXR1cyksCiAgICAgKHIn
L3F1ZXVlLXN0YXR1cy8oLiopJywgUXVldWVTdGF0dXMpLAogICAgIChyJy9uZXh0LXBhdGNoLygu
KiknLCBOZXh0UGF0Y2gpLApkaWZmIC0tZ2l0IGEvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbW9k
ZWwvcXVldWVsb2cucHkgYi9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci9tb2RlbC9xdWV1ZWxvZy5w
eQppbmRleCA4MjliOGE2MmFjNjg1NzUzNjc2ZTAxZDU1MGJmMGM5OWU4MTliMWZjLi45OGUzYjFl
NWFlMGI4OWIzZTRlMmNkZjZiODkwM2NjMDRlNmU4M2E4IDEwMDY0NAotLS0gYS9Ub29scy9RdWV1
ZVN0YXR1c1NlcnZlci9tb2RlbC9xdWV1ZWxvZy5weQorKysgYi9Ub29scy9RdWV1ZVN0YXR1c1Nl
cnZlci9tb2RlbC9xdWV1ZWxvZy5weQpAQCAtNDQsMTQgKzQ0LDI5IEBAIGNsYXNzIFF1ZXVlTG9n
KGRiLk1vZGVsKToKICAgICBwYXRjaF9yZXRyeV9jb3VudCA9IGRiLkludGVnZXJQcm9wZXJ0eShk
ZWZhdWx0PTApCiAgICAgc3RhdHVzX3VwZGF0ZV9jb3VudCA9IGRiLkludGVnZXJQcm9wZXJ0eShk
ZWZhdWx0PTApCiAKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGNyZWF0ZV9rZXkocXVldWVf
bmFtZSwgZHVyYXRpb24sIHRpbWVzdGFtcCk6CisgICAgICAgIHJldHVybiAiJXMtJXMtJXMiICUg
KHF1ZXVlX25hbWUsIGR1cmF0aW9uLCB0aW1lc3RhbXApCisKICAgICBAY2xhc3NtZXRob2QKLSAg
ICBkZWYgZ2V0X2N1cnJlbnQoY2xzLCBxdWV1ZV9uYW1lLCBkdXJhdGlvbik6Ci0gICAgICAgIHRp
bWVzdGFtcF9ub3cgPSB0aW1lKCkKLSAgICAgICAgdGltZXN0YW1wID0gaW50KHRpbWVzdGFtcF9u
b3cgLyBkdXJhdGlvbikgKiBkdXJhdGlvbgorICAgIGRlZiBnZXRfYXQoY2xzLCBxdWV1ZV9uYW1l
LCBkdXJhdGlvbiwgdGltZXN0YW1wKToKKyAgICAgICAgdGltZXN0YW1wID0gaW50KHRpbWVzdGFt
cCAvIGR1cmF0aW9uKSAqIGR1cmF0aW9uCiAgICAgICAgIGRhdGUgPSBkYXRldGltZS51dGNmcm9t
dGltZXN0YW1wKHRpbWVzdGFtcCkKICAgICAgICAga2V5ID0gY2xzLmNyZWF0ZV9rZXkocXVldWVf
bmFtZSwgZHVyYXRpb24sIHRpbWVzdGFtcCkKLSAgICAgICAgcmV0dXJuIGNscy5nZXRfb3JfaW5z
ZXJ0KGtleSwgZGF0ZT1kYXRlLCBkdXJhdGlvbj1kdXJhdGlvbiwgcXVldWVfbmFtZT1xdWV1ZV9u
YW1lKQorICAgICAgICByZXR1cm4gY2xzLmdldF9vcl9jcmVhdGUoa2V5LCBkYXRlPWRhdGUsIGR1
cmF0aW9uPWR1cmF0aW9uLCBxdWV1ZV9uYW1lPXF1ZXVlX25hbWUpCiAKLSAgICBAc3RhdGljbWV0
aG9kCi0gICAgZGVmIGNyZWF0ZV9rZXkocXVldWVfbmFtZSwgZHVyYXRpb24sIHRpbWVzdGFtcCk6
Ci0gICAgICAgIHJldHVybiAiJXMtJXMtJXMiICUgKHF1ZXVlX25hbWUsIGR1cmF0aW9uLCB0aW1l
c3RhbXApCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGdldF9jdXJyZW50KGNscywgcXVldWVf
bmFtZSwgZHVyYXRpb24pOgorICAgICAgICByZXR1cm4gY2xzLmdldF9hdChxdWV1ZV9uYW1lLCBk
dXJhdGlvbiwgdGltZSgpKQorCisgICAgIyBUaGlzIGlzIHRvIHByZXZlbnQgcGFnZSByZXF1ZXN0
cyBmcm9tIGdlbmVyYXRpbmcgbG90cyBvZiByb3dzIGluIHRoZSBkYXRhYmFzZS4KKyAgICBAY2xh
c3NtZXRob2QKKyAgICBkZWYgZ2V0X29yX2NyZWF0ZShjbHMsIGtleV9uYW1lLCAqKmt3YXJncyk6
CisgICAgICAgIHJldHVybiBkYi5ydW5faW5fdHJhbnNhY3Rpb24oY2xzLl9nZXRfb3JfY3JlYXRl
X3R4biwga2V5X25hbWUsICoqa3dhcmdzKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9n
ZXRfb3JfY3JlYXRlX3R4bihjbHMsIGtleV9uYW1lLCAqKmt3YXJncyk6CisgICAgICAgIGVudGl0
eSA9IGNscy5nZXRfYnlfa2V5X25hbWUoa2V5X25hbWUsIHBhcmVudD1rd2FyZ3MuZ2V0KCdwYXJl
bnQnKSkKKyAgICAgICAgaWYgZW50aXR5IGlzIE5vbmU6CisgICAgICAgICAgICBlbnRpdHkgPSBj
bHMoa2V5X25hbWU9a2V5X25hbWUsICoqa3dhcmdzKQorICAgICAgICByZXR1cm4gZW50aXR5CmRp
ZmYgLS1naXQgYS9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci9zdHlsZXNoZWV0cy9jaGFydHMuY3Nz
IGIvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvc3R5bGVzaGVldHMvY2hhcnRzLmNzcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iODQxYjJjZDBlNjQzZTcxN2Y4Yjk2MmE5ZDI3OTk5MjhmMDM4OWRjCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvc3R5bGVzaGVldHMvY2hhcnRzLmNzcwpA
QCAtMCwwICsxLDggQEAKKy5jaGFydCB7CisgICAgbWFyZ2luLWJvdHRvbTogNDBweDsKKyAgICBo
ZWlnaHQ6IDIwMHB4OworfQorCisuY2hvaWNlcyB7CisgICAgZm9udC1zaXplOiAwLjc1ZW07Cit9
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvUXVldWVTdGF0
dXNTZXJ2ZXIvdGVtcGxhdGVzL3F1ZXVlY2hhcnRzLmh0bWwgYi9Ub29scy9RdWV1ZVN0YXR1c1Nl
cnZlci90ZW1wbGF0ZXMvcXVldWVjaGFydHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTNkZWJkYmMzNmIy
NmM2YzllNTE3NDA0YmNkZDZiYWJlOGU3Y2RlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvUXVl
dWVTdGF0dXNTZXJ2ZXIvdGVtcGxhdGVzL3F1ZXVlY2hhcnRzLmh0bWwKQEAgLTAsMCArMSwyODQg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT57
eyBxdWV1ZV9uYW1lIH19IENoYXJ0czwvdGl0bGU+CisgICAgICAgIDxsaW5rIHR5cGU9InRleHQv
Y3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9zdHlsZXNoZWV0cy9tYWluLmNzcyIgLz4KKyAg
ICAgICAgPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL3N0eWxl
c2hlZXRzL2NoYXJ0cy5jc3MiIC8+CisgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgICAgICBnb29nbGUubG9h
ZCgndmlzdWFsaXphdGlvbicsICcxLjAnLCB7J3BhY2thZ2VzJzpbJ2NvcmVjaGFydCddfSk7Cisg
ICAgICAgICAgICBnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZnVuY3Rpb24gKCkgeworCisgICAg
ICAgICAgICAgICAgZnVuY3Rpb24gc2Vjb25kc1RvU3RyaW5nKHNlY29uZHMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIG9uZVNlY29uZCA9IDE7CisgICAgICAgICAgICAgICAgICAgIHZhciBv
bmVNaW51dGUgPSA2MDsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG9uZUhvdXIgPSBvbmVNaW51
dGUgKiA2MDsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG9uZURheSA9IG9uZUhvdXIgKiAyNDsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIG9uZVllYXIgPSBvbmVEYXkgKiAzNjUuMjU7CisgICAg
ICAgICAgICAgICAgICAgIHZhciB1bml0QXJyYXkgPSBbCisgICAgICAgICAgICAgICAgICAgICAg
ICBbb25lWWVhciwgInllYXIiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtvbmVEYXksICJk
YXkiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtvbmVIb3VyLCAiaG91ciJdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgW29uZU1pbnV0ZSwgIm1pbnV0ZSJdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgW29uZVNlY29uZCwgInNlY29uZCJdLAorICAgICAgICAgICAgICAgICAgICBdOwor
ICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gIiI7CisgICAgICAgICAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdW5pdEFycmF5Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgdW5pdCA9IHVuaXRBcnJheVtpXVswXTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChzZWNvbmRzID49IHVuaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAocmVzdWx0ICE9PSAiIikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgKz0gIiAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IHVuaXRBcnJheVtpXVsxXTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgbnVtYmVyID0gTWF0aC5mbG9vcihzZWNvbmRzL3VuaXQp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBudW1iZXIgKyAiICIgKyBu
YW1lICsgKG51bWJlciA+IDEgPyAicyIgOiAiIik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2Vjb25kcyAlPSB1bml0OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT09ICIiKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIjAgc2Vjb25kcyI7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICB2YXIgZGF0YSwgY2hhcnQsIG9wdGlvbnM7CisKKyAg
ICAgICAgICAgICAgICB2YXIgdGltZVN0cmluZyA9IG5ldyBEYXRlKHt7IHRpbWVzdGFtcCB9fSAq
IDEwMDApLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgdmFyIHRpbWVzdGFtcERpdiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aW1lc3RhbXAiKTsKKyAgICAgICAgICAgICAgICB0aW1l
c3RhbXBEaXYuaW5uZXJIVE1MID0gIlZpZXdpbmcgZnJvbSAiICsgdGltZVN0cmluZzsKKworICAg
ICAgICAgICAgICAgIG9wdGlvbnMgPSB7CisgICAgICAgICAgICAgICAgICAgIGxlZ2VuZDoge3Bv
c2l0aW9uOiAidG9wIn0sCisgICAgICAgICAgICAgICAgICAgIGhBeGlzOiB7CisgICAgICAgICAg
ICAgICAgICAgICAgICB0aXRsZTogInt7IHRpbWVfdW5pdF9uYW1lfGNhcGZpcnN0IH19IEFnbyIs
CisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246IC0xLAorICAgICAgICAgICAgICAg
ICAgICAgICAgdmlld1dpbmRvdzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbjog
e3sgc2Vjb25kc19hZ29fbWluIH19IC8ge3sgdGltZV91bml0IH19LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1heDoge3sgc2Vjb25kc19hZ29fbWF4IH19IC8ge3sgdGltZV91bml0IH19
LAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdy
aWRsaW5lczogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50OiA5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgICAgdkF4aXM6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdXaW5kb3c6IHtt
aW46IDAgfSwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgbGlu
ZVdpZHRoOiAzLAorICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICAvLyBDSEFS
VCAxCisgICAgICAgICAgICAgICAgb3B0aW9ucy5jb2xvcnMgPSBbImdyZWVuIiwgInJlZCIsICJv
cmFuZ2UiXTsKKyAgICAgICAgICAgICAgICBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9u
LkRhdGFUYWJsZSgpOworICAgICAgICAgICAgICAgIGRhdGEuYWRkQ29sdW1uKCJudW1iZXIiLCAi
PHRpbWU+Iik7CisgICAgICAgICAgICAgICAgZGF0YS5hZGRDb2x1bW4oIm51bWJlciIsICJQYXRj
aGVzIENvbXBsZXRlZCIpOworICAgICAgICAgICAgICAgIGRhdGEuYWRkQ29sdW1uKHt0eXBlOiAi
c3RyaW5nIiwgcm9sZTogInRvb2x0aXAifSk7CisgICAgICAgICAgICAgICAgZGF0YS5hZGRDb2x1
bW4oIm51bWJlciIsICJQYXRjaGVzIFdhaXRpbmciKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFk
ZENvbHVtbih7dHlwZTogInN0cmluZyIsIHJvbGU6ICJ0b29sdGlwIn0pOworICAgICAgICAgICAg
ICAgIGRhdGEuYWRkQ29sdW1uKCJudW1iZXIiLCAiQm90cyAodmlzaWJsZSB0byBzZXJ2ZXIpIik7
CisgICAgICAgICAgICAgICAgZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICJzdHJpbmciLCByb2xlOiAi
dG9vbHRpcCJ9KTsKKyAgICAgICAgICAgICAgICBkYXRhLmFkZFJvd3MoWworICAgICAgICAgICAg
ICAgICAgICB7JSBmb3IgcXVldWVfZGF0dW0gaW4gcXVldWVfZGF0YSAlfQorICAgICAgICAgICAg
ICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHF1ZXVlX2RhdHVt
LnNlY29uZHNfYWdvIH19IC8ge3sgdGltZV91bml0IH19LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHt7IHF1ZXVlX2RhdHVtLnBhdGNoZXNfY29tcGxldGVkIH19LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJQYXRjaGVzIENvbXBsZXRlZDogIiArIHt7IHF1ZXVlX2RhdHVtLnBh
dGNoZXNfY29tcGxldGVkIH19ICsgIlxuIiArIHNlY29uZHNUb1N0cmluZyh7eyBxdWV1ZV9kYXR1
bS5zZWNvbmRzX2FnbyB9fSkgKyAiIGFnbyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
e3sgcXVldWVfZGF0dW0ucGF0Y2hlc193YWl0aW5nIH19LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJQYXRjaGVzIFdhaXRpbmc6ICIgKyB7eyBxdWV1ZV9kYXR1bS5wYXRjaGVzX3dhaXRp
bmcgfX0gKyAiXG4iICsgc2Vjb25kc1RvU3RyaW5nKHt7IHF1ZXVlX2RhdHVtLnNlY29uZHNfYWdv
IH19KSArICIgYWdvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBxdWV1ZV9kYXR1
bS5ib3RzX3NlZW4gfX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJvdHMgKHZpc2li
bGUgdG8gc2VydmVyKTogIiArIHt7IHF1ZXVlX2RhdHVtLmJvdHNfc2VlbiB9fSArICJcbiIgKyBz
ZWNvbmRzVG9TdHJpbmcoe3sgcXVldWVfZGF0dW0uc2Vjb25kc19hZ28gfX0pICsgIiBhZ28iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgeyUgZW5kZm9y
ICV9CisgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgICAgY2hhcnQgPSBuZXcgZ29v
Z2xlLnZpc3VhbGl6YXRpb24uTGluZUNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFy
dDEnKSk7CisgICAgICAgICAgICAgICAgY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKKworICAg
ICAgICAgICAgICAgIC8vIENIQVJUIDIKKyAgICAgICAgICAgICAgICBvcHRpb25zLmNvbG9ycyA9
IFsiYmx1ZSIsICJwdXJwbGUiXTsKKyAgICAgICAgICAgICAgICBkYXRhID0gbmV3IGdvb2dsZS52
aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOworICAgICAgICAgICAgICAgIGRhdGEuYWRkQ29sdW1u
KCJudW1iZXIiLCAiPHRpbWU+Iik7CisgICAgICAgICAgICAgICAgZGF0YS5hZGRDb2x1bW4oIm51
bWJlciIsICJTdGF0dXMgVXBkYXRlcyIpOworICAgICAgICAgICAgICAgIGRhdGEuYWRkQ29sdW1u
KHt0eXBlOiAic3RyaW5nIiwgcm9sZTogInRvb2x0aXAifSk7CisgICAgICAgICAgICAgICAgZGF0
YS5hZGRDb2x1bW4oIm51bWJlciIsICJQYXRjaCBSZXRyaWVzIik7CisgICAgICAgICAgICAgICAg
ZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICJzdHJpbmciLCByb2xlOiAidG9vbHRpcCJ9KTsKKyAgICAg
ICAgICAgICAgICBkYXRhLmFkZFJvd3MoWworICAgICAgICAgICAgICAgICAgICB7JSBmb3IgcXVl
dWVfZGF0dW0gaW4gcXVldWVfZGF0YSAlfQorICAgICAgICAgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHF1ZXVlX2RhdHVtLnNlY29uZHNfYWdvIH19IC8g
e3sgdGltZV91bml0IH19LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHF1ZXVlX2Rh
dHVtLnN0YXR1c191cGRhdGVfY291bnQgfX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlN0YXR1cyBVcGRhdGVzOiAiICsge3sgcXVldWVfZGF0dW0uc3RhdHVzX3VwZGF0ZV9jb3VudCB9
fSArICJcbiIgKyBzZWNvbmRzVG9TdHJpbmcoe3sgcXVldWVfZGF0dW0uc2Vjb25kc19hZ28gfX0p
ICsgIiBhZ28iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHF1ZXVlX2RhdHVtLnBh
dGNoX3JldHJ5X2NvdW50IH19LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYXRjaCBS
ZXRyaWVzOiAiICsge3sgcXVldWVfZGF0dW0ucGF0Y2hfcmV0cnlfY291bnQgfX0gKyAiXG4iICsg
c2Vjb25kc1RvU3RyaW5nKHt7IHF1ZXVlX2RhdHVtLnNlY29uZHNfYWdvIH19KSArICIgYWdvIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgIHslIGVuZGZv
ciAlfQorICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgIGNoYXJ0ID0gbmV3IGdv
b2dsZS52aXN1YWxpemF0aW9uLkxpbmVDaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hh
cnQyJykpOworICAgICAgICAgICAgICAgIGNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CisKKyAg
ICAgICAgICAgICAgICAvLyBDSEFSVCAzCisgICAgICAgICAgICAgICAgb3B0aW9ucy5jb2xvcnMg
PSBbImJyb3duIl07CisgICAgICAgICAgICAgICAgb3B0aW9ucy52QXhpcy50aXRsZSA9ICJNaW51
dGVzIjsKKyAgICAgICAgICAgICAgICBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRh
dGFUYWJsZSgpOworICAgICAgICAgICAgICAgIGRhdGEuYWRkQ29sdW1uKCJudW1iZXIiLCAiPHRp
bWU+Iik7CisgICAgICAgICAgICAgICAgZGF0YS5hZGRDb2x1bW4oIm51bWJlciIsICJQYXRjaCBQ
cm9jZXNzaW5nIFRpbWVzIik7CisgICAgICAgICAgICAgICAgZGF0YS5hZGRDb2x1bW4oe3R5cGU6
ICJzdHJpbmciLCByb2xlOiAidG9vbHRpcCJ9KTsKKyAgICAgICAgICAgICAgICBkYXRhLmFkZENv
bHVtbih7dHlwZTogIm51bWJlciIsIHJvbGU6ICJpbnRlcnZhbCJ9KTsKKyAgICAgICAgICAgICAg
ICBkYXRhLmFkZENvbHVtbih7dHlwZTogIm51bWJlciIsIHJvbGU6ICJpbnRlcnZhbCJ9KTsKKyAg
ICAgICAgICAgICAgICBkYXRhLmFkZFJvd3MoWworICAgICAgICAgICAgICAgICAgICB7JSBmb3Ig
cXVldWVfZGF0dW0gaW4gcXVldWVfZGF0YSAlfQorICAgICAgICAgICAgICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHF1ZXVlX2RhdHVtLnNlY29uZHNfYWdvIH19
IC8ge3sgdGltZV91bml0IH19LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHF1ZXVl
X2RhdHVtLnBhdGNoX3Byb2Nlc3NpbmdfbWVkIH19IC8gNjAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlBhdGNoIFByb2Nlc3NpbmcgVGltZXNcbk1heDogIiArIHNlY29uZHNUb1N0cmlu
Zyh7eyBxdWV1ZV9kYXR1bS5wYXRjaF9wcm9jZXNzaW5nX21heCB9fSkgKyAiXG5NZWRpYW46ICIg
KyBzZWNvbmRzVG9TdHJpbmcoe3sgcXVldWVfZGF0dW0ucGF0Y2hfcHJvY2Vzc2luZ19tZWQgfX0p
ICsgIlxuTWluOiAiICsgc2Vjb25kc1RvU3RyaW5nKHt7IHF1ZXVlX2RhdHVtLnBhdGNoX3Byb2Nl
c3NpbmdfbWluIH19KSArICJcbiIgKyBzZWNvbmRzVG9TdHJpbmcoe3sgcXVldWVfZGF0dW0uc2Vj
b25kc19hZ28gfX0pICsgIiBhZ28iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHF1
ZXVlX2RhdHVtLnBhdGNoX3Byb2Nlc3NpbmdfbWluIH19IC8gNjAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAge3sgcXVldWVfZGF0dW0ucGF0Y2hfcHJvY2Vzc2luZ19tYXggfX0gLyA2MCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgIHslIGVuZGZv
ciAlfQorICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgIGNoYXJ0ID0gbmV3IGdv
b2dsZS52aXN1YWxpemF0aW9uLkxpbmVDaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hh
cnQzJykpOworICAgICAgICAgICAgICAgIGNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CisKKyAg
ICAgICAgICAgICAgICAvLyBDSEFSVCA0CisgICAgICAgICAgICAgICAgb3B0aW9ucy5jb2xvcnMg
PSBbInJlZCJdOworICAgICAgICAgICAgICAgIGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRp
b24uRGF0YVRhYmxlKCk7CisgICAgICAgICAgICAgICAgZGF0YS5hZGRDb2x1bW4oIm51bWJlciIs
ICI8dGltZT4iKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFkZENvbHVtbigibnVtYmVyIiwgIlBh
dGNoIFdhaXRpbmcgVGltZXMiKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFkZENvbHVtbih7dHlw
ZTogInN0cmluZyIsIHJvbGU6ICJ0b29sdGlwIn0pOworICAgICAgICAgICAgICAgIGRhdGEuYWRk
Q29sdW1uKHt0eXBlOiAibnVtYmVyIiwgcm9sZTogImludGVydmFsIn0pOworICAgICAgICAgICAg
ICAgIGRhdGEuYWRkQ29sdW1uKHt0eXBlOiAibnVtYmVyIiwgcm9sZTogImludGVydmFsIn0pOwor
ICAgICAgICAgICAgICAgIGRhdGEuYWRkUm93cyhbCisgICAgICAgICAgICAgICAgICAgIHslIGZv
ciBxdWV1ZV9kYXR1bSBpbiBxdWV1ZV9kYXRhICV9CisgICAgICAgICAgICAgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcXVldWVfZGF0dW0uc2Vjb25kc19hZ28g
fX0gLyB7eyB0aW1lX3VuaXQgfX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcXVl
dWVfZGF0dW0ucGF0Y2hfd2FpdGluZ19tZWQgfX0gLyA2MCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiUGF0Y2ggV2FpdGluZyBUaW1lc1xuTWF4OiAiICsgc2Vjb25kc1RvU3RyaW5nKHt7
IHF1ZXVlX2RhdHVtLnBhdGNoX3dhaXRpbmdfbWF4IH19KSArICJcbk1lZGlhbjogIiArIHNlY29u
ZHNUb1N0cmluZyh7eyBxdWV1ZV9kYXR1bS5wYXRjaF93YWl0aW5nX21lZCB9fSkgKyAiXG5NaW46
ICIgKyBzZWNvbmRzVG9TdHJpbmcoe3sgcXVldWVfZGF0dW0ucGF0Y2hfd2FpdGluZ19taW4gfX0p
ICsgIlxuIiArIHNlY29uZHNUb1N0cmluZyh7eyBxdWV1ZV9kYXR1bS5zZWNvbmRzX2FnbyB9fSkg
KyAiIGFnbyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcXVldWVfZGF0dW0ucGF0
Y2hfd2FpdGluZ19taW4gfX0gLyA2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBx
dWV1ZV9kYXR1bS5wYXRjaF93YWl0aW5nX21heCB9fSAvIDYwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgeyUgZW5kZm9yICV9CisgICAgICAgICAgICAg
ICAgXSk7CisgICAgICAgICAgICAgICAgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24u
TGluZUNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFydDQnKSk7CisgICAgICAgICAg
ICAgICAgY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKKworICAgICAgICAgICAgICAgIGZ1bmN0
aW9uIHBvc3RQYXRjaExpbmsgKHNlbGVjdGlvbikgeworICAgICAgICAgICAgICAgICAgICBpZiAo
c2VsZWN0aW9uLmxlbmd0aCA+IDAgJiYgc2VsZWN0aW9uWzBdLnJvdyAhPT0gdW5kZWZpbmVkKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXR0YWNobWVudElkQXJyYXkgPSBbeyUgZm9y
IHBhdGNoX2RhdHVtIGluIHBhdGNoX2RhdGEgJX17eyBwYXRjaF9kYXR1bS5hdHRhY2htZW50X2lk
IH19LCB7JSBlbmRmb3IgJX1dOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF0dGFjaG1l
bnRJZCA9IGF0dGFjaG1lbnRJZEFycmF5W3NlbGVjdGlvblswXS5yb3ddOworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIGFUYWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VsZWN0ZWRQ
YXRjaCIpOworICAgICAgICAgICAgICAgICAgICAgICAgYVRhZy5pbm5lckhUTUwgPSBhVGFnLmhy
ZWYgPSAiLy8iICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyAiL3BhdGNoLyIgKyBhdHRhY2htZW50
SWQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAvLyBDSEFSVCA1CisgICAgICAgICAgICAgICAgb3B0aW9ucy5jb2xvcnMgPSBbImJy
b3duIiwgInJlZCJdOworICAgICAgICAgICAgICAgIG9wdGlvbnMuaEF4aXMudGl0bGUgPSAie3sg
dGltZV91bml0X25hbWV8Y2FwZmlyc3QgfX0gQWdvIjsKKyAgICAgICAgICAgICAgICBvcHRpb25z
LmhBeGlzLnZpZXdXaW5kb3cubWluID0ge3sgc2Vjb25kc19hZ29fbWluIH19IC8ge3sgdGltZV91
bml0IH19OworICAgICAgICAgICAgICAgIG9wdGlvbnMuaEF4aXMudmlld1dpbmRvdy5tYXggPSB7
eyBzZWNvbmRzX2Fnb19tYXggfX0gLyB7eyB0aW1lX3VuaXQgfX07CisgICAgICAgICAgICAgICAg
ZGVsZXRlIG9wdGlvbnMubGluZVdpZHRoOworICAgICAgICAgICAgICAgIGRhdGEgPSBuZXcgZ29v
Z2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CisgICAgICAgICAgICAgICAgZGF0YS5hZGRD
b2x1bW4oIm51bWJlciIsICI8dGltZT4iKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFkZENvbHVt
bigibnVtYmVyIiwgIlByb2Nlc3MgRHVyYXRpb24iKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFk
ZENvbHVtbih7dHlwZTogInN0cmluZyIsIHJvbGU6ICJ0b29sdGlwIn0pOworICAgICAgICAgICAg
ICAgIGRhdGEuYWRkQ29sdW1uKCJudW1iZXIiLCAiV2FpdCBEdXJhdGlvbiIpOworICAgICAgICAg
ICAgICAgIGRhdGEuYWRkQ29sdW1uKHt0eXBlOiAic3RyaW5nIiwgcm9sZTogInRvb2x0aXAifSk7
CisgICAgICAgICAgICAgICAgZGF0YS5hZGRSb3dzKFsKKyAgICAgICAgICAgICAgICAgICAgeyUg
Zm9yIHBhdGNoX2RhdHVtIGluIHBhdGNoX2RhdGEgJX0KKyAgICAgICAgICAgICAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwYXRjaF9kYXR1bS5zZWNvbmRzX2Fn
byB9fSAvIHt7IHRpbWVfdW5pdCB9fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBw
YXRjaF9kYXR1bS5wcm9jZXNzX2R1cmF0aW9uIH19LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJQYXRjaCB7eyBwYXRjaF9kYXR1bS5hdHRhY2htZW50X2lkIH19XG4iICsgc2Vjb25kc1Rv
U3RyaW5nKHt7IHBhdGNoX2RhdHVtLnNlY29uZHNfYWdvIH19KSArICIgYWdvIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7eyBwYXRjaF9kYXR1bS53YWl0X2R1cmF0aW9uIH19LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJQYXRjaCB7eyBwYXRjaF9kYXR1bS5hdHRhY2htZW50
X2lkIH19XG4iICsgc2Vjb25kc1RvU3RyaW5nKHt7IHBhdGNoX2RhdHVtLnNlY29uZHNfYWdvIH19
KSArICIgYWdvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ICAgIHslIGVuZGZvciAlfQorICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgIGNo
YXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLlNjYXR0ZXJDaGFydChkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY2hhcnQ1JykpOworICAgICAgICAgICAgICAgIHZhciBjaGFydDUgPSBjaGFy
dDsKKyAgICAgICAgICAgICAgICBnb29nbGUudmlzdWFsaXphdGlvbi5ldmVudHMuYWRkTGlzdGVu
ZXIoY2hhcnQsICJzZWxlY3QiLCBmdW5jdGlvbiAoKSB7cG9zdFBhdGNoTGluayhjaGFydDUuZ2V0
U2VsZWN0aW9uKCkpO30pOworICAgICAgICAgICAgICAgIGNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9u
cyk7CisKKyAgICAgICAgICAgICAgICAvLyBDSEFSVCA2CisgICAgICAgICAgICAgICAgb3B0aW9u
cy5jb2xvcnMgPSBbImJsdWUiLCAicHVycGxlIl07CisgICAgICAgICAgICAgICAgZGVsZXRlIG9w
dGlvbnMudkF4aXMudGl0bGU7CisgICAgICAgICAgICAgICAgZGF0YSA9IG5ldyBnb29nbGUudmlz
dWFsaXphdGlvbi5EYXRhVGFibGUoKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFkZENvbHVtbigi
bnVtYmVyIiwgIjx0aW1lPiIpOworICAgICAgICAgICAgICAgIGRhdGEuYWRkQ29sdW1uKCJudW1i
ZXIiLCAiU3RhdHVzIFVwZGF0ZXMiKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFkZENvbHVtbih7
dHlwZTogInN0cmluZyIsIHJvbGU6ICJ0b29sdGlwIn0pOworICAgICAgICAgICAgICAgIGRhdGEu
YWRkQ29sdW1uKCJudW1iZXIiLCAiUmV0cmllcyIpOworICAgICAgICAgICAgICAgIGRhdGEuYWRk
Q29sdW1uKHt0eXBlOiAic3RyaW5nIiwgcm9sZTogInRvb2x0aXAifSk7CisgICAgICAgICAgICAg
ICAgZGF0YS5hZGRSb3dzKFsKKyAgICAgICAgICAgICAgICAgICAgeyUgZm9yIHBhdGNoX2RhdHVt
IGluIHBhdGNoX2RhdGEgJX0KKyAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7eyBwYXRjaF9kYXR1bS5zZWNvbmRzX2FnbyB9fSAvIHt7IHRpbWVf
dW5pdCB9fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwYXRjaF9kYXR1bS5zdGF0
dXNfdXBkYXRlX2NvdW50IH19LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYXRjaCB7
eyBwYXRjaF9kYXR1bS5hdHRhY2htZW50X2lkIH19XG4iICsgc2Vjb25kc1RvU3RyaW5nKHt7IHBh
dGNoX2RhdHVtLnNlY29uZHNfYWdvIH19KSArICIgYWdvIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7eyBwYXRjaF9kYXR1bS5yZXRyeV9jb3VudCB9fSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiUGF0Y2gge3sgcGF0Y2hfZGF0dW0uYXR0YWNobWVudF9pZCB9fVxuIiArIHNl
Y29uZHNUb1N0cmluZyh7eyBwYXRjaF9kYXR1bS5zZWNvbmRzX2FnbyB9fSkgKyAiIGFnbyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICB7JSBlbmRmb3Ig
JX0KKyAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAgICBjaGFydCA9IG5ldyBnb29n
bGUudmlzdWFsaXphdGlvbi5TY2F0dGVyQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2No
YXJ0NicpKTsKKyAgICAgICAgICAgICAgICB2YXIgY2hhcnQ2ID0gY2hhcnQ7CisgICAgICAgICAg
ICAgICAgZ29vZ2xlLnZpc3VhbGl6YXRpb24uZXZlbnRzLmFkZExpc3RlbmVyKGNoYXJ0LCAic2Vs
ZWN0IiwgZnVuY3Rpb24gKCkge3Bvc3RQYXRjaExpbmsoY2hhcnQ2LmdldFNlbGVjdGlvbigpKTt9
KTsKKyAgICAgICAgICAgICAgICBjaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOworICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHNldFVSTFBhcmFtZXRlciAocGFyYW1ldGVy
TmFtZSwgbmV3VmFsdWUpIHsKKyAgICAgICAgICAgICAgICB2YXIgc3BsaXQ7CisgICAgICAgICAg
ICAgICAgc3BsaXQgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5zcGxpdCgiPyIpOworICAgICAgICAg
ICAgICAgIHZhciB1cmwsIHBhcmFtZXRlckFycmF5OworICAgICAgICAgICAgICAgIHVybCA9IHNw
bGl0WzBdOworICAgICAgICAgICAgICAgIGlmIChzcGxpdC5sZW5ndGggPiAxKSB7CisgICAgICAg
ICAgICAgICAgICAgIHBhcmFtZXRlckFycmF5ID0gc3BsaXRbMV0uc3BsaXQoIiYiKTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJBcnJheSA9
IFtdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2YXIgc2V0UGFyYW1ldGVy
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbWV0ZXJB
cnJheS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB2YXIgY3VycmVudFBhcmFt
ZXRlck5hbWUgPSBkZWNvZGVVUklDb21wb25lbnQocGFyYW1ldGVyQXJyYXlbaV0uc3BsaXQoIj0i
KVswXSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UGFyYW1ldGVyTmFtZSA9PT0g
cGFyYW1ldGVyTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyQXJyYXlb
aV0gPSBlbmNvZGVVUklDb21wb25lbnQocGFyYW1ldGVyTmFtZSkgKyAiPSIgKyBlbmNvZGVVUklD
b21wb25lbnQobmV3VmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFyYW1ldGVy
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghc2V0UGFyYW1l
dGVyKSB7CisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlckFycmF5LnB1c2goZW5jb2RlVVJJ
Q29tcG9uZW50KHBhcmFtZXRlck5hbWUpICsgIj0iICsgZW5jb2RlVVJJQ29tcG9uZW50KG5ld1Zh
bHVlKSk7CisgICAgICAgICAgICAgICAgfWNvbnNvbGUubG9nKHBhcmFtZXRlckFycmF5KTsKKyAg
ICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybCArICI/IiArIHBhcmFtZXRl
ckFycmF5LmpvaW4oIiYiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorCisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgY2xhc3M9ImNob2ljZXMiPgorICAg
ICAgICAgICAgeyUgZm9yIHNpbmdsZV9xdWV1ZV9uYW1lIGluIGFsbF9xdWV1ZV9uYW1lcyAlfQor
ICAgICAgICAgICAgICAgIHslIGlmIHNpbmdsZV9xdWV1ZV9uYW1lID09IHF1ZXVlX25hbWUgJX0K
KyAgICAgICAgICAgICAgICAgICAge3sgcXVldWVfbmFtZSB9fQorICAgICAgICAgICAgICAgIHsl
IGVsc2UgJX0KKyAgICAgICAgICAgICAgICAgICAge3sgc2luZ2xlX3F1ZXVlX25hbWV8Zm9yY2Vf
ZXNjYXBlfHF1ZXVlX2NoYXJ0c19saW5rOnNpbmdsZV9xdWV1ZV9uYW1lfHNhZmUgfX0KKyAgICAg
ICAgICAgICAgICB7JSBlbmRpZiAlfQorICAgICAgICAgICAgICAgIHslIGlmIG5vdCBmb3Jsb29w
Lmxhc3QgJX0gfCB7JSBlbmRpZiAlfQorICAgICAgICAgICAgeyUgZW5kZm9yICV9CisgICAgICAg
IDwvZGl2PgorICAgICAgICA8aDE+e3sgcXVldWVfbmFtZSB9fSBDaGFydHM8L2gxPgorICAgICAg
ICA8ZGl2Plt7eyBxdWV1ZV9uYW1lfGZvcmNlX2VzY2FwZXxxdWV1ZV9zdGF0dXNfbGluazoic3Rh
dHVzInxzYWZlIH19XTwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJ0aW1lc3RhbXAiPjwvZGl2Pgor
ICAgICAgICA8ZGl2IGNsYXNzPSJjaG9pY2VzIj5WaWV3aW5nIHJhbmdlOgorICAgICAgICAgICAg
eyUgZm9yIHZpZXdfcmFuZ2VfY2hvaWNlIGluIHZpZXdfcmFuZ2VfY2hvaWNlcyAlfQorICAgICAg
ICAgICAgICAgIHslIGlmIHZpZXdfcmFuZ2VfY2hvaWNlLnZpZXdfcmFuZ2UgPT0gdmlld19yYW5n
ZSAlfQorICAgICAgICAgICAgICAgICAgICB7eyB2aWV3X3JhbmdlX2Nob2ljZS5uYW1lIH19Cisg
ICAgICAgICAgICAgICAgeyUgZWxzZSAlfQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJq
YXZhc2NyaXB0OnNldFVSTFBhcmFtZXRlcigndmlld19yYW5nZScsIHt7IHZpZXdfcmFuZ2VfY2hv
aWNlLnZpZXdfcmFuZ2UgfX0pIj57eyB2aWV3X3JhbmdlX2Nob2ljZS5uYW1lIH19PC9hPgorICAg
ICAgICAgICAgICAgIHslIGVuZGlmICV9CisgICAgICAgICAgICAgICAgeyUgaWYgbm90IGZvcmxv
b3AubGFzdCAlfSB8IHslIGVuZGlmICV9CisgICAgICAgICAgICB7JSBlbmRmb3IgJX0KKyAgICAg
ICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImNoYXJ0IiBpZD0iY2hhcnQxIj48L2Rpdj4K
KyAgICAgICAgPGRpdiBjbGFzcz0iY2hhcnQiIGlkPSJjaGFydDIiPjwvZGl2PgorICAgICAgICA8
ZGl2IGNsYXNzPSJjaGFydCIgaWQ9ImNoYXJ0MyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9
ImNoYXJ0IiBpZD0iY2hhcnQ0Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY2hhcnQiIGlk
PSJjaGFydDUiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJjaGFydCIgaWQ9ImNoYXJ0NiI+
PC9kaXY+CisgICAgICAgIFNlbGVjdGVkIHBhdGNoOiA8YSBpZD0ic2VsZWN0ZWRQYXRjaCI+KE5v
bmUpPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvUXVldWVT
dGF0dXNTZXJ2ZXIvdGVtcGxhdGVzL3F1ZXVlc3RhdHVzLmh0bWwgYi9Ub29scy9RdWV1ZVN0YXR1
c1NlcnZlci90ZW1wbGF0ZXMvcXVldWVzdGF0dXMuaHRtbAppbmRleCBmOGViNjFlNGVmMDdiMTUw
YzkxODgyYTJjMDQxNGQ3MDQwZjhjYzAxLi5hYWZhZmJkODM3ZDFhMTk5MzhkMDhiZDMxMzUxMzlk
MGYyZWNmY2ZhIDEwMDY0NAotLS0gYS9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMv
cXVldWVzdGF0dXMuaHRtbAorKysgYi9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMv
cXVldWVzdGF0dXMuaHRtbApAQCAtOSw2ICs5LDcgQEAKIAogPGgzPlN1bW1hcnk8L2gzPgogPGRp
dj4KKzxkaXY+W3t7IHF1ZXVlX25hbWV8Zm9yY2VfZXNjYXBlfHF1ZXVlX2NoYXJ0c19saW5rOiJj
aGFydHMifHNhZmUgfX1dPC9kaXY+CiBMYXN0IFBhc3M6IHslIGlmIGxhc3RfcGFzcyAlfXt7IGxh
c3RfcGFzcy5kYXRlfHRpbWVzaW5jZSB9fSBhZ297JSBlbHNlICV9bmV2ZXJ7JSBlbmRpZiAlfQog
eyUgaWYgbm90IGJvdF9pZCBhbmQgbGFzdF9wYXNzLmJvdF9pZCAlfQogYnkgPGEgaHJlZj0iL3F1
ZXVlLXN0YXR1cy97e2xhc3RfcGFzcy5xdWV1ZV9uYW1lfX0vYm90cy97e2xhc3RfcGFzcy5ib3Rf
aWR9fSI+e3sgbGFzdF9wYXNzLmJvdF9pZCB9fTwvYT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>