<?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>28291</bug_id>
          
          <creation_ts>2009-08-13 20:58:33 -0700</creation_ts>
          <short_desc>webkit-patch (or a pre-commit hook) needs to prevent bad ChangeLog changes</short_desc>
          <delta_ts>2010-12-24 10:22:30 -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>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>38870</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>140143</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-13 20:58:33 -0700</bug_when>
    <thetext>bugzilla-tool (or a pre-commit hook) needs to prevent bad ChangeLog changes

Need to validate that if a ChangeLog is changed that it contains at a diff segment which starts at -1 (top of the file).

We could additionally validate the form of the ChangeLog (that it has a nice email address, name, etc.)

But mostly we need to prevent ever letting bugzilla-tool check in a bad ChangeLog entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140144</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-13 20:59:18 -0700</bug_when>
    <thetext>This is separate from fixing bugzilla-tool to run resolve-ChangeLogs, as I think we should make sure that even if resolve-ChangeLogs ever fails us that we don&apos;t commit a bad ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142426</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-24 15:10:58 -0700</bug_when>
    <thetext>I looked into adding a pre-commit hook.  I think the big annoyance will be in handling diffs to ChangeLogs where the added entry has the same couple lines with the previous entry.  I don&apos;t know of any way to get svn to spit out diffs which are greedy towards the end of the file instead of the beginning of the file, so we can&apos;t always check for diffs which start at -1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157301</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-23 14:26:35 -0700</bug_when>
    <thetext>This should largely be fixed by bug 30683.  (Or rather, bug 30683 eliminates our primary source of bad ChangeLogs)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182513</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-19 16:42:45 -0800</bug_when>
    <thetext>I feel like we have at least one dupe of this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326291</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-23 14:47:38 -0800</bug_when>
    <thetext>*** Bug 51561 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326318</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-23 15:22:15 -0800</bug_when>
    <thetext>This has too-long been a problem.  Writing up a patch now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326378</commentid>
    <comment_count>7</comment_count>
      <attachid>77387</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-23 17:15:33 -0800</bug_when>
    <thetext>Created attachment 77387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326389</commentid>
    <comment_count>8</comment_count>
      <attachid>77387</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-23 17:25:16 -0800</bug_when>
    <thetext>Comment on attachment 77387
Patch

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

Did you want to add this step to any of the sequences?

&gt; Tools/Scripts/webkitpy/tool/steps/checkchangelogs.py:37
&gt; +# This is closely related to the ValidateReviewer step and the CommitterValidator class
&gt; +# we may eventually want to unify more of this code in one place.
&gt; +class CheckChangeLogs(AbstractStep):

Maybe call it ValidateChangeLogs then?

&gt; Tools/Scripts/webkitpy/tool/steps/checkchangelogs.py:41
&gt; +            Options.git_commit,

Isn&apos;t this option added to all steps by AbstractStep?

&gt; Tools/Scripts/webkitpy/tool/steps/checkchangelogs.py:55
&gt; +        # FIXME: Do we need to make the file path absolute?
&gt; +        self._tool.scm().diff_for_file(diff_file.filename)

scm takes paths relative to the root of the repo.  Did you try this from a non-repo root CWD?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326390</commentid>
    <comment_count>9</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-12-23 17:29:40 -0800</bug_when>
    <thetext>Misc comments:

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

&gt; Tools/Scripts/webkitpy/common/checkout/diff_parser.py:139
&gt; +    # If this class keeps &quot;Parser&quot; in its name, this should be made public.

I don&apos;t understand why &quot;parser&quot; = &quot;public&quot;.

&gt; Tools/Scripts/webkitpy/tool/steps/checkchangelogs.py:35
&gt; +# This is closely related to the ValidateReviewer step and the CommitterValidator class

Add . at end.

&gt; Tools/Scripts/webkitpy/tool/steps/checkchangelogs.py:36
&gt; +# we may eventually want to unify more of this code in one place.

s/we/We/

&gt; Tools/Scripts/webkitpy/tool/steps/checkchangelogs.py:37
&gt; +class CheckChangeLogs(AbstractStep):

Classes are typically named using nouns but this is a verb and sounds like a method.

ChangeLogsChecker or Verifier?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326392</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-23 17:34:29 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77387&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/steps/checkchangelogs.py:37
&gt; &gt; +class CheckChangeLogs(AbstractStep):
&gt; 
&gt; Classes are typically named using nouns but this is a verb and sounds like a method.
&gt; 
&gt; ChangeLogsChecker or Verifier?

Subclasses of AbstractStep are usually verbs in webkitpy.  For example, here&apos;s a list of steps:

1) Update the working copy.
2) Apply a patch.
3) Verify the ChangeLogs.

You could argue that we shouldn&apos;t be using classes for steps, but inheritance was too seductive for us.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326395</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-23 17:48:41 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Misc comments:
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77387&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/checkout/diff_parser.py:139
&gt; &gt; +    # If this class keeps &quot;Parser&quot; in its name, this should be made public.
&gt; 
&gt; I don&apos;t understand why &quot;parser&quot; = &quot;public&quot;.

I&quot;m noting that if it&apos;s a &quot;Parser&quot; it should be a long-lived object which can parse many files, instead of encapsulating a single diff as it does now.

Just going to remove the comment.

&gt; &gt; Tools/Scripts/webkitpy/tool/steps/checkchangelogs.py:35
&gt; &gt; +# This is closely related to the ValidateReviewer step and the CommitterValidator class
&gt; 
&gt; Add . at end.

Done.

&gt; &gt; Tools/Scripts/webkitpy/tool/steps/checkchangelogs.py:36
&gt; &gt; +# we may eventually want to unify more of this code in one place.
&gt; 
&gt; s/we/We/

Done.

&gt; &gt; Tools/Scripts/webkitpy/tool/steps/checkchangelogs.py:37
&gt; &gt; +class CheckChangeLogs(AbstractStep):
&gt; 
&gt; Classes are typically named using nouns but this is a verb and sounds like a method.
&gt; 
&gt; ChangeLogsChecker or Verifier?

Huh?  Steps are commonly verbs.  RunTests, Build, CreateBug. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326397</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-23 17:49:33 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #9)
&gt; &gt; Classes are typically named using nouns but this is a verb and sounds like a method.
&gt; &gt; 
&gt; &gt; ChangeLogsChecker or Verifier?
&gt; 
&gt; Huh?  Steps are commonly verbs.  RunTests, Build, CreateBug. :)

Sorry for my tone, I thought I was replying to Adam (who lets me get away with a lot more cheek). :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326398</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-23 17:50:51 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 77387 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77387&amp;action=review
&gt; 
&gt; Did you want to add this step to any of the sequences?

Details, details.  Will do. :)

&gt; &gt; Tools/Scripts/webkitpy/tool/steps/checkchangelogs.py:37
&gt; &gt; +# This is closely related to the ValidateReviewer step and the CommitterValidator class
&gt; &gt; +# we may eventually want to unify more of this code in one place.
&gt; &gt; +class CheckChangeLogs(AbstractStep):
&gt; 
&gt; Maybe call it ValidateChangeLogs then?

Sure.  We have a CheckStyle step.  It&apos;s unclear which we should standardize on, but Validate sounds fine.

&gt; &gt; Tools/Scripts/webkitpy/tool/steps/checkchangelogs.py:41
&gt; &gt; +            Options.git_commit,
&gt; 
&gt; Isn&apos;t this option added to all steps by AbstractStep?

Woh, crazy.  Who knew.

&gt; &gt; Tools/Scripts/webkitpy/tool/steps/checkchangelogs.py:55
&gt; &gt; +        # FIXME: Do we need to make the file path absolute?
&gt; &gt; +        self._tool.scm().diff_for_file(diff_file.filename)
&gt; 
&gt; scm takes paths relative to the root of the repo.  Did you try this from a non-repo root CWD?

No, I have not.  Then again, I&apos;ve not actually used it in a command yet. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326399</commentid>
    <comment_count>14</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-12-23 17:54:55 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #9)
&gt; &gt; &gt; Classes are typically named using nouns but this is a verb and sounds like a method.
&gt; &gt; &gt; 
&gt; &gt; &gt; ChangeLogsChecker or Verifier?
&gt; &gt; 
&gt; &gt; Huh?  Steps are commonly verbs.  RunTests, Build, CreateBug. :)
&gt; 
&gt; Sorry for my tone, I thought I was replying to Adam (who lets me get away with a lot more cheek). :)

I&apos;m greatly offended and you will suffer my wrath!

ok not really. I thought it funny that you would think that I would know this :). I wasn&apos;t familiar with the pattern here. Adam explained it though.

The other stuff was super minor nits or curiosity. (I had started to review it and then saw Adam did the r+ so I just put i my comments anyway.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326409</commentid>
    <comment_count>15</comment_count>
      <attachid>77393</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-23 18:14:08 -0800</bug_when>
    <thetext>Created attachment 77393
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326412</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-23 18:15:04 -0800</bug_when>
    <thetext>OK.  Deployed it to a bunch of places. :)  Seems to work at least for uploading to this bug!

Would love to have another round of review, plz.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326416</commentid>
    <comment_count>17</comment_count>
      <attachid>77393</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-23 18:25:58 -0800</bug_when>
    <thetext>Comment on attachment 77393
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326591</commentid>
    <comment_count>18</comment_count>
      <attachid>77393</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-24 05:10:15 -0800</bug_when>
    <thetext>Comment on attachment 77393
Patch

Rejecting attachment 77393 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-3&apos;, &apos;build-and-test&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--test&apos;, &apos;--non-interactive&apos;]&quot; exit_code: 2
Last 500 characters of output:
2.6/unittest.py&quot;, line 849, in createTests
    self.module)
  File &quot;/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/unittest.py&quot;, line 613, in loadTestsFromNames
    suites = [self.loadTestsFromName(name, module) for name in names]
  File &quot;/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/unittest.py&quot;, line 584, in loadTestsFromName
    parent, obj = obj, getattr(obj, part)
AttributeError: &apos;module&apos; object has no attribute &apos;validatechangelogs_unittest&apos;

Full output: http://queues.webkit.org/results/7213163</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326628</commentid>
    <comment_count>19</comment_count>
      <attachid>77417</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-24 08:53:42 -0800</bug_when>
    <thetext>Created attachment 77417
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326640</commentid>
    <comment_count>20</comment_count>
      <attachid>77417</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-24 09:13:37 -0800</bug_when>
    <thetext>Comment on attachment 77417
Patch for landing

Rejecting attachment 77417 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-3&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--ignore-builders&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 77417]&quot; exit_code: 1
Last 500 characters of output:
417&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=28291&amp;ctype=xml
Processing 1 patch from 1 bug.
Cleaning working directory
Updating working directory
Processing patch 77417 from bug 28291.
NOBODY (OOPS!) found in /mnt/git/webkit-commit-queue/Tools/ChangeLog does not appear to be a valid reviewer according to committers.py.
ERROR: /mnt/git/webkit-commit-queue/Tools/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/7341048</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326644</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-24 09:24:55 -0800</bug_when>
    <thetext>Wow, well, that&apos;s subtle.  That&apos;s a bug in another step (not invalidating the cached diff).  Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326646</commentid>
    <comment_count>22</comment_count>
      <attachid>77418</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-24 09:30:10 -0800</bug_when>
    <thetext>Created attachment 77418
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326657</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-24 10:19:06 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 77418:

fast/workers/storage/use-same-database-in-page-and-workers.html bug 50995 (author: dumi@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326661</commentid>
    <comment_count>24</comment_count>
      <attachid>77418</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-24 10:22:20 -0800</bug_when>
    <thetext>Comment on attachment 77418
Patch for landing

Clearing flags on attachment: 77418

Committed r74639: &lt;http://trac.webkit.org/changeset/74639&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326662</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-24 10:22:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77387</attachid>
            <date>2010-12-23 17:15:33 -0800</date>
            <delta_ts>2010-12-23 18:14:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-28291-20101223191531.patch</filename>
            <type>text/plain</type>
            <size>15754</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ODYx
ZGMwZjE1MWZmN2QxZTE0ZDZlYmYwZWI0Y2Q4MjVlYmRiNjY5Li4wYzkyNDU3NGYxMzczNjNjNjRh
ZWRlYjVkZDVjMTg5NzM3NzJmYWJiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMTItMjMgIEVyaWMgU2VpZGVs
ICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIHdlYmtpdC1wYXRjaCAob3IgYSBwcmUtY29tbWl0IGhvb2spIG5lZWRzIHRv
IHByZXZlbnQgYmFkIENoYW5nZUxvZyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI5MQorCisgICAgICAgIFRoaXMgaXMgYSBzdGFydC4g
IEF0IGxlYXN0IG5vdyB3ZWJraXQtcGF0Y2ggd2lsbCBwcm9tcHQgd2hlbiB5b3VyIENoYW5nZUxv
ZyBsb29rcyBxdWVzdGlvbmFibGUuCisgICAgICAgIFdlIGNvdWxkIGRvIG1vcmUgYWR2YW5jZWQg
dGhpbmdzLCBsaWtlIHBhcnNpbmcgdGhlIENoYW5nZUxvZyAod2l0aCBjaGFuZ2Vsb2cucHkpIGFu
ZCBjb21wYXJpbmcgdGhhdAorICAgICAgICB0byBzdHJpbmdzIHdpdGggZmluZCBpbiB0aGUgZGlm
Zi4KKyAgICAgICAgU2luY2Ugbm9uLWludGVyYWN0aXZlIGFsd2F5cyByZXR1cm5zIHRoZSBkZWZh
dWx0LCB0aGlzIHNob3VsZCBjYXVzZSBwYXRjaGVzIHdpdGggYmFkIGNoYW5nZWxvZ3MgdG8gZmFp
bCBvbiB0aGUgY29tbWl0LXF1ZXVlLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvYXBpLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L2RpZmZfcGFyc2VyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9hYnN0cmFjdHN0ZXAucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL2NoZWNrY2hhbmdlbG9ncy5weTogQ29waWVkIGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3N0ZXBzL3ZhbGlkYXRlcmV2aWV3ZXIucHkuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL2NoZWNrY2hhbmdlbG9nc191bml0dGVzdC5weTogQ29waWVkIGZyb20g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NsZWFud29ya2luZ2RpcmVjdG9yeS5w
eS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3JraW5nZGly
ZWN0b3J5LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0
ZXJldmlld2VyLnB5OgorCiAyMDEwLTEyLTIzICBMdWNhcyBGb3JzY2hsZXIgIDxsZm9yc2NobGVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5weQppbmRleCA2MzU3OTgyODc0
MjRiNjM0MWVhNzAyY2ZmMmMwZDUyZTM4MzY0OWRlLi4yOWU0M2QzZDVjN2UzMzFhZDc1ZGRkMDg4
YmUwMDVkNjIxZjNiMTEyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9hcGkucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvYXBpLnB5CkBAIC0zOSwxNCArMzksMTQgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBydW5fY29tbWFuZCwgU2NyaXB0RXJyb3IK
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGxv
ZwogCiAKLSMgVGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSBXZWJLaXQtc3BlY2lmaWMgcGFydHMg
b2YgdGhlIGNoZWNrb3V0IChsaWtlCi0jIENoYW5nZUxvZ3MpLgorIyBUaGlzIGNsYXNzIHJlcHJl
c2VudHMgdGhlIFdlYktpdC1zcGVjaWZpYyBwYXJ0cyBvZiB0aGUgY2hlY2tvdXQgKGxpa2UgQ2hh
bmdlTG9ncykuCiAjIEZJWE1FOiBNb3ZlIGEgYnVuY2ggb2YgQ2hhbmdlTG9nLXNwZWNpZmljIHBy
b2Nlc3NpbmcgZnJvbSBTQ00gdG8gdGhpcyBvYmplY3QuCisjIE5PVEU6IEFsbCBwYXRocyByZXR1
cm5lZCBmcm9tIHRoaXMgY2xhc3Mgc2hvdWxkIGJlIGFic29sdXRlLgogY2xhc3MgQ2hlY2tvdXQo
b2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgc2NtKToKICAgICAgICAgc2VsZi5fc2Nt
ID0gc2NtCiAKLSAgICBkZWYgX2lzX3BhdGhfdG9fY2hhbmdlbG9nKHNlbGYsIHBhdGgpOgorICAg
IGRlZiBpc19wYXRoX3RvX2NoYW5nZWxvZyhzZWxmLCBwYXRoKToKICAgICAgICAgcmV0dXJuIG9z
LnBhdGguYmFzZW5hbWUocGF0aCkgPT0gIkNoYW5nZUxvZyIKIAogICAgIGRlZiBfbGF0ZXN0X2Vu
dHJ5X2Zvcl9jaGFuZ2Vsb2dfYXRfcmV2aXNpb24oc2VsZiwgY2hhbmdlbG9nX3BhdGgsIHJldmlz
aW9uKToKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgQ2hlY2tvdXQob2JqZWN0KToKIAogICAgIGRl
ZiBjaGFuZ2Vsb2dfZW50cmllc19mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgogICAgICAg
ICBjaGFuZ2VkX2ZpbGVzID0gc2VsZi5fc2NtLmNoYW5nZWRfZmlsZXNfZm9yX3JldmlzaW9uKHJl
dmlzaW9uKQotICAgICAgICByZXR1cm4gW3NlbGYuX2xhdGVzdF9lbnRyeV9mb3JfY2hhbmdlbG9n
X2F0X3JldmlzaW9uKHBhdGgsIHJldmlzaW9uKSBmb3IgcGF0aCBpbiBjaGFuZ2VkX2ZpbGVzIGlm
IHNlbGYuX2lzX3BhdGhfdG9fY2hhbmdlbG9nKHBhdGgpXQorICAgICAgICByZXR1cm4gW3NlbGYu
X2xhdGVzdF9lbnRyeV9mb3JfY2hhbmdlbG9nX2F0X3JldmlzaW9uKHBhdGgsIHJldmlzaW9uKSBm
b3IgcGF0aCBpbiBjaGFuZ2VkX2ZpbGVzIGlmIHNlbGYuaXNfcGF0aF90b19jaGFuZ2Vsb2cocGF0
aCldCiAKICAgICBAbWVtb2l6ZWQKICAgICBkZWYgY29tbWl0X2luZm9fZm9yX3JldmlzaW9uKHNl
bGYsIHJldmlzaW9uKToKQEAgLTk2LDEwICs5NiwxMCBAQCBjbGFzcyBDaGVja291dChvYmplY3Qp
OgogICAgICAgICByZXR1cm4gW3BhdGggZm9yIHBhdGggaW4gYWJzb2x1dGVfcGF0aHMgaWYgcHJl
ZGljYXRlKHBhdGgpXQogCiAgICAgZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZiwgZ2l0X2Nv
bW1pdCwgY2hhbmdlZF9maWxlcz1Ob25lKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX21vZGlmaWVk
X2ZpbGVzX21hdGNoaW5nX3ByZWRpY2F0ZShnaXRfY29tbWl0LCBzZWxmLl9pc19wYXRoX3RvX2No
YW5nZWxvZywgY2hhbmdlZF9maWxlcz1jaGFuZ2VkX2ZpbGVzKQorICAgICAgICByZXR1cm4gc2Vs
Zi5fbW9kaWZpZWRfZmlsZXNfbWF0Y2hpbmdfcHJlZGljYXRlKGdpdF9jb21taXQsIHNlbGYuaXNf
cGF0aF90b19jaGFuZ2Vsb2csIGNoYW5nZWRfZmlsZXM9Y2hhbmdlZF9maWxlcykKIAogICAgIGRl
ZiBtb2RpZmllZF9ub25fY2hhbmdlbG9ncyhzZWxmLCBnaXRfY29tbWl0LCBjaGFuZ2VkX2ZpbGVz
PU5vbmUpOgotICAgICAgICByZXR1cm4gc2VsZi5fbW9kaWZpZWRfZmlsZXNfbWF0Y2hpbmdfcHJl
ZGljYXRlKGdpdF9jb21taXQsIGxhbWJkYSBwYXRoOiBub3Qgc2VsZi5faXNfcGF0aF90b19jaGFu
Z2Vsb2cocGF0aCksIGNoYW5nZWRfZmlsZXM9Y2hhbmdlZF9maWxlcykKKyAgICAgICAgcmV0dXJu
IHNlbGYuX21vZGlmaWVkX2ZpbGVzX21hdGNoaW5nX3ByZWRpY2F0ZShnaXRfY29tbWl0LCBsYW1i
ZGEgcGF0aDogbm90IHNlbGYuaXNfcGF0aF90b19jaGFuZ2Vsb2cocGF0aCksIGNoYW5nZWRfZmls
ZXM9Y2hhbmdlZF9maWxlcykKIAogICAgIGRlZiBjb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21t
aXQoc2VsZiwgZ2l0X2NvbW1pdCwgY2hhbmdlZF9maWxlcz1Ob25lKToKICAgICAgICAgY2hhbmdl
bG9nX3BhdGhzID0gc2VsZi5tb2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21taXQsIGNoYW5nZWRf
ZmlsZXMpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9kaWZmX3BhcnNlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0
L2RpZmZfcGFyc2VyLnB5CmluZGV4IGE2ZWE3NTYwMjZkYzBkMDZlZDJkMTE2ZjYwNjI3MTRiZDg3
MTA1MzkuLmYyZTc4ZDcyNWVjM2MwODMyZGU1Njc4YjllMWRhY2IwODcwNWM3MzUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFyc2VyLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFyc2Vy
LnB5CkBAIC0xMTgsNiArMTE4LDggQEAgY2xhc3MgRGlmZkZpbGUob2JqZWN0KToKICAgICAgICAg
c2VsZi5saW5lcy5hcHBlbmQoKGRlbGV0ZWRfbGluZV9udW1iZXIsIG5ld19saW5lX251bWJlciwg
bGluZSkpCiAKIAorIyBJZiB0aGlzIGlzIGdvaW5nIHRvIGJlIGNhbGxlZCBEaWZmUGFyc2VyLCBp
dCBzaG91bGQgYmUgYSByZS11c2VhYmxlIHBhcnNlci4KKyMgT3RoZXJ3aXNlIHdlIHNob3VsZCBy
ZW5hbWUgaXQgdG8gUGFyc2VkRGlmZiBvciBqdXN0IERpZmYuCiBjbGFzcyBEaWZmUGFyc2VyKG9i
amVjdCk6CiAgICAgIiIiQSBwYXJzZXIgZm9yIGEgcGF0Y2ggZmlsZS4KIApAQCAtMTI1LDE2ICsx
MjcsMTkgQEAgY2xhc3MgRGlmZlBhcnNlcihvYmplY3QpOgogICAgIGEgRGlmZkZpbGUgb2JqZWN0
LgogICAgICIiIgogCi0gICAgIyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpcyB3YXkgdG9vIGxvbmcg
YW5kIG5lZWRzIHRvIGJlIGJyb2tlbiB1cC4KICAgICBkZWYgX19pbml0X18oc2VsZiwgZGlmZl9p
bnB1dCk6CiAgICAgICAgICIiIlBhcnNlcyBhIGRpZmYuCiAKICAgICAgICAgQXJnczoKICAgICAg
ICAgICBkaWZmX2lucHV0OiBBbiBpdGVyYWJsZSBvYmplY3QuCiAgICAgICAgICIiIgotICAgICAg
ICBzdGF0ZSA9IF9JTklUSUFMX1NUQVRFCisgICAgICAgIHNlbGYuZmlsZXMgPSBzZWxmLl9wYXJz
ZV9pbnRvX2RpZmZfZmlsZXMoZGlmZl9pbnB1dCkKIAotICAgICAgICBzZWxmLmZpbGVzID0ge30K
KyAgICAjIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIHdheSB0b28gbG9uZyBhbmQgbmVlZHMgdG8g
YmUgYnJva2VuIHVwLgorICAgICMgSWYgdGhpcyBjbGFzcyBrZWVwcyAiUGFyc2VyIiBpbiBpdHMg
bmFtZSwgdGhpcyBzaG91bGQgYmUgbWFkZSBwdWJsaWMuCisgICAgZGVmIF9wYXJzZV9pbnRvX2Rp
ZmZfZmlsZXMoc2VsZiwgZGlmZl9pbnB1dCk6CisgICAgICAgIGZpbGVzID0ge30KKyAgICAgICAg
c3RhdGUgPSBfSU5JVElBTF9TVEFURQogICAgICAgICBjdXJyZW50X2ZpbGUgPSBOb25lCiAgICAg
ICAgIG9sZF9kaWZmX2xpbmUgPSBOb25lCiAgICAgICAgIG5ld19kaWZmX2xpbmUgPSBOb25lCkBA
IC0xNDgsNyArMTUzLDcgQEAgY2xhc3MgRGlmZlBhcnNlcihvYmplY3QpOgogICAgICAgICAgICAg
aWYgZmlsZV9kZWNsYXJhdGlvbjoKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVfZGVj
bGFyYXRpb24uZ3JvdXAoJ0ZpbGVQYXRoJykKICAgICAgICAgICAgICAgICBjdXJyZW50X2ZpbGUg
PSBEaWZmRmlsZShmaWxlbmFtZSkKLSAgICAgICAgICAgICAgICBzZWxmLmZpbGVzW2ZpbGVuYW1l
XSA9IGN1cnJlbnRfZmlsZQorICAgICAgICAgICAgICAgIGZpbGVzW2ZpbGVuYW1lXSA9IGN1cnJl
bnRfZmlsZQogICAgICAgICAgICAgICAgIHN0YXRlID0gX0RFQ0xBUkVEX0ZJTEVfUEFUSAogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCiAKQEAgLTE3OSwzICsxODQsNCBAQCBjbGFzcyBEaWZmUGFy
c2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAg
X2xvZy5lcnJvcignVW5leHBlY3RlZCBkaWZmIGZvcm1hdCB3aGVuIHBhcnNpbmcgYSAnCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NodW5rOiAlcicgJSBsaW5lKQorICAgICAgICBy
ZXR1cm4gZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9hYnN0cmFjdHN0ZXAucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJz
dHJhY3RzdGVwLnB5CmluZGV4IDU1MjVlYTA4YjU2ODFkODFkODVjMGZiNTQzNDIyM2JkMDJmMDE2
MzAuLjFjOTNkNWI5ZjdkMGUzYmQzMzFjNTEwYTBmMjRjZTdmZDljYWM1YjkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weQpAQCAtNTIs
NiArNTIsNyBAQCBjbGFzcyBBYnN0cmFjdFN0ZXAob2JqZWN0KToKICAgICAgICAgImJ1Z190aXRs
ZSI6IGxhbWJkYSBzZWxmLCBzdGF0ZTogc2VsZi5fdG9vbC5idWdzLmZldGNoX2J1ZyhzdGF0ZVsi
YnVnX2lkIl0pLnRpdGxlKCksCiAgICAgICAgICJjaGFuZ2VkX2ZpbGVzIjogbGFtYmRhIHNlbGYs
IHN0YXRlOiBzZWxmLl90b29sLnNjbSgpLmNoYW5nZWRfZmlsZXMoc2VsZi5fb3B0aW9ucy5naXRf
Y29tbWl0KSwKICAgICAgICAgImRpZmYiOiBsYW1iZGEgc2VsZiwgc3RhdGU6IHNlbGYuX3Rvb2wu
c2NtKCkuY3JlYXRlX3BhdGNoKHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCwgY2hhbmdlZF9maWxl
cz1zZWxmLl9jaGFuZ2VkX2ZpbGVzKHN0YXRlKSksCisgICAgICAgICMgQWJzb2x1dGUgcGF0aCB0
byBDaGFuZ2VMb2cgZmlsZXMuCiAgICAgICAgICJjaGFuZ2Vsb2dzIjogbGFtYmRhIHNlbGYsIHN0
YXRlOiBzZWxmLl90b29sLmNoZWNrb3V0KCkubW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmLl9vcHRp
b25zLmdpdF9jb21taXQsIGNoYW5nZWRfZmlsZXM9c2VsZi5fY2hhbmdlZF9maWxlcyhzdGF0ZSkp
LAogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L2NoZWNrY2hhbmdlbG9ncy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9j
aGVja2NoYW5nZWxvZ3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZlZWYwMTVkMDk4ODZhMTc1MDg5MjE2OTc3
MDhlNDkwYmUzZjBiZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9jaGVja2NoYW5nZWxvZ3MucHkKQEAgLTAsMCArMSw2NCBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
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
QU1BR0UuCisKK2Zyb20gd2Via2l0cHkudG9vbC5zdGVwcy5hYnN0cmFjdHN0ZXAgaW1wb3J0IEFi
c3RyYWN0U3RlcAorZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLm9wdGlvbnMgaW1wb3J0IE9wdGlv
bnMKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmRpZmZfcGFyc2VyIGltcG9ydCBEaWZm
UGFyc2VyCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGlt
cG9ydCBlcnJvciwgbG9nCisKKworIyBUaGlzIGlzIGNsb3NlbHkgcmVsYXRlZCB0byB0aGUgVmFs
aWRhdGVSZXZpZXdlciBzdGVwIGFuZCB0aGUgQ29tbWl0dGVyVmFsaWRhdG9yIGNsYXNzCisjIHdl
IG1heSBldmVudHVhbGx5IHdhbnQgdG8gdW5pZnkgbW9yZSBvZiB0aGlzIGNvZGUgaW4gb25lIHBs
YWNlLgorY2xhc3MgQ2hlY2tDaGFuZ2VMb2dzKEFic3RyYWN0U3RlcCk6CisgICAgQGNsYXNzbWV0
aG9kCisgICAgZGVmIG9wdGlvbnMoY2xzKToKKyAgICAgICAgcmV0dXJuIEFic3RyYWN0U3RlcC5v
cHRpb25zKCkgKyBbCisgICAgICAgICAgICBPcHRpb25zLmdpdF9jb21taXQsCisgICAgICAgIF0K
KworICAgIGRlZiBfY2hlY2tfY2hhbmdlbG9nX2RpZmYoc2VsZiwgZGlmZl9maWxlKToKKyAgICAg
ICAgaWYgbm90IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5pc19wYXRoX3RvX2NoYW5nZWxvZyhkaWZm
X2ZpbGUuZmlsZW5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgIyBFYWNo
IGxpbmUgaXMgYSB0dXBsZSwgdGhlIGZpcnN0IHZhbHVlIGlzIHRoZSBkZWxldGVkIGxpbmUgbnVt
YmVyCisgICAgICAgICMgRGF0ZSwgcmV2aWV3ZXIsIGJ1ZyB0aXRsZSwgYnVnIHVybCwgYW5kIGVt
cHR5IGxpbmVzIGNvdWxkIGFsbCBiZQorICAgICAgICAjIGlkZW50aWNhbCBpbiB0aGUgbW9zdCBy
ZWNlbnQgZW50cmllcy4gIElmIHRoZSBkaWZmIHN0YXJ0cyBhbnkKKyAgICAgICAgIyBsYXRlciB0
aGFuIHRoYXQsIGFzc3VtZSB0aGF0IHRoZSBlbnRyeSBpcyB3cm9uZy4KKyAgICAgICAgaWYgZGlm
Zl9maWxlLmxpbmVzWzBdWzBdIDwgODoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAg
IGxvZygiVGhlIGRpZmYgdG8gJXMgbG9va3Mgd3JvbmcuICBBcmUgeW91IHN1cmUgeW91ciBDaGFu
Z2VMb2cgZW50cnkgaXMgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZT8iICUgKGRpZmZfZmlsZS5maWxl
bmFtZSkpCisgICAgICAgICMgRklYTUU6IERvIHdlIG5lZWQgdG8gbWFrZSB0aGUgZmlsZSBwYXRo
IGFic29sdXRlPworICAgICAgICBzZWxmLl90b29sLnNjbSgpLmRpZmZfZm9yX2ZpbGUoZGlmZl9m
aWxlLmZpbGVuYW1lKQorICAgICAgICBpZiBzZWxmLl90b29sLnVzZXIuY29uZmlybSgiT0sgdG8g
Y29udGludWU/IiwgZGVmYXVsdD0nbicpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAg
ICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKKyAgICAgICAgcGFy
c2VkX2RpZmYgPSBEaWZmUGFyc2VyKHNlbGYuY2FjaGVkX2xvb2t1cChzdGF0ZSwgImRpZmYiKSkK
KyAgICAgICAgZm9yIGRpZmZfZmlsZSBpbiBwYXJzZWRfZGlmZi5maWxlczoKKyAgICAgICAgICAg
IGlmIG5vdCBzZWxmLl9jaGVja19jaGFuZ2Vsb2dfZGlmZihkaWZmX2ZpbGUpOgorICAgICAgICAg
ICAgICAgIGVycm9yKCJDaGFuZ2VMb2cgZW50cnkgaW4gJXMgaXMgbm90IGF0IHRoZSB0b3Agb2Yg
dGhlIGZpbGUuIiAlIGRpZmZfZmlsZS5maWxlbmFtZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja2NoYW5nZWxvZ3NfdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tjaGFuZ2Vsb2dzX3VuaXR0ZXN0LnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE3ZWQ2Y2FmNmFmNjc2YzY2MTVlNWQwZTRmMjdmNzIwNjhlYjhjNjYKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tj
aGFuZ2Vsb2dzX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNTUgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNh
cHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2Nr
IGltcG9ydCBNb2NrCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRp
b25zLCBNb2NrVG9vbAorZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmNoZWNrY2hhbmdlbG9ncyBp
bXBvcnQgQ2hlY2tDaGFuZ2VMb2dzCisKKworY2xhc3MgQ2hlY2tDaGFuZ2VMb2dzVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgX2Fzc2VydF9zdGFydF9saW5lX3Byb2R1Y2VzX291
dHB1dChzZWxmLCBzdGFydF9saW5lLCBzaG91bGRfcHJvbXB0X3VzZXI9RmFsc2UpOgorICAgICAg
ICB0b29sID0gTW9ja1Rvb2woKQorICAgICAgICB0b29sLl9jaGVja291dC5pc19wYXRoX3RvX2No
YW5nZWxvZyA9IGxhbWJkYSBwYXRoOiBUcnVlCisgICAgICAgIHN0ZXAgPSBDaGVja0NoYW5nZUxv
Z3ModG9vbCwgTW9ja09wdGlvbnMoZ2l0X2NvbW1pdD1Ob25lKSkKKyAgICAgICAgZGlmZl9maWxl
ID0gTW9jaygpCisgICAgICAgIGRpZmZfZmlsZS5maWxlbmFtZSA9ICJtb2NrL0NoYW5nZUxvZyIK
KyAgICAgICAgZGlmZl9maWxlLmxpbmVzID0gWyhzdGFydF9saW5lLCBzdGFydF9saW5lLCAiZm9v
IildCisgICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9IGV4cGVjdGVkX3N0ZGVyciA9ICIiCisgICAg
ICAgIGlmIHNob3VsZF9wcm9tcHRfdXNlcjoKKyAgICAgICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9
ICJPSyB0byBjb250aW51ZT9cbiIKKyAgICAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJUaGUg
ZGlmZiB0byBtb2NrL0NoYW5nZUxvZyBsb29rcyB3cm9uZy4gIEFyZSB5b3Ugc3VyZSB5b3VyIENo
YW5nZUxvZyBlbnRyeSBpcyBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlP1xuIgorICAgICAgICBPdXRw
dXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgc3RlcC5fY2hlY2tfY2hhbmdlbG9nX2Rp
ZmYsIFtkaWZmX2ZpbGVdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3Rl
ZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQorCisgICAgZGVmIHRlc3RfY2hlY2tfY2hhbmdlbG9n
X2RpZmYoc2VsZik6CisgICAgICAgIHNlbGYuX2Fzc2VydF9zdGFydF9saW5lX3Byb2R1Y2VzX291
dHB1dCgxLCBzaG91bGRfcHJvbXB0X3VzZXI9RmFsc2UpCisgICAgICAgIHNlbGYuX2Fzc2VydF9z
dGFydF9saW5lX3Byb2R1Y2VzX291dHB1dCg3LCBzaG91bGRfcHJvbXB0X3VzZXI9RmFsc2UpCisg
ICAgICAgIHNlbGYuX2Fzc2VydF9zdGFydF9saW5lX3Byb2R1Y2VzX291dHB1dCg4LCBzaG91bGRf
cHJvbXB0X3VzZXI9VHJ1ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9jbGVhbndvcmtpbmdkaXJlY3RvcnkucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvY2xlYW53b3JraW5nZGlyZWN0b3J5LnB5CmluZGV4IDljMTYyNDJlYWE0ZGY3
YWM3Nzc5ODllMDY1ODkzNzFiNmYzYzAxMzQuLmExNjVkZDIxZjk4ZDA4OTE0NmFhYmFhOTNiMDA2
OGZkZGRhZWRmNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9jbGVhbndvcmtpbmdkaXJlY3RvcnkucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL2NsZWFud29ya2luZ2RpcmVjdG9yeS5weQpAQCAtNDcsNyArNDcsOSBAQCBjbGFz
cyBDbGVhbldvcmtpbmdEaXJlY3RvcnkoQWJzdHJhY3RTdGVwKToKICAgICBkZWYgcnVuKHNlbGYs
IHN0YXRlKToKICAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuY2xlYW46CiAgICAgICAgICAg
ICByZXR1cm4KLSAgICAgICAgIyBGSVhNRTogVGhpcyBjaGRpciBzaG91bGQgbm90IGJlIG5lY2Vz
c2FyeS4KKyAgICAgICAgIyBGSVhNRTogVGhpcyBjaGRpciBzaG91bGQgbm90IGJlIG5lY2Vzc2Fy
eSBhbmQgY2FuIGJlIHJlbW92ZWQgYXMKKyAgICAgICAgIyBzb29uIGFzIGVuc3VyZV9ub19sb2Nh
bF9jb21taXRzIGFuZCBlbnN1cmVfY2xlYW5fd29ya2luZ19kaXJlY3RvcnkKKyAgICAgICAgIyBh
cmUga25vd24gdG8gc2V0IHRoZSBDV0QgdG8gY2hlY2tvdXRfcm9vdCB3aGVuIGNhbGxpbmcgcnVu
X2NvbW1hbmQuCiAgICAgICAgIG9zLmNoZGlyKHNlbGYuX3Rvb2wuc2NtKCkuY2hlY2tvdXRfcm9v
dCkKICAgICAgICAgaWYgbm90IHNlbGYuX2FsbG93X2xvY2FsX2NvbW1pdHM6CiAgICAgICAgICAg
ICBzZWxmLl90b29sLnNjbSgpLmVuc3VyZV9ub19sb2NhbF9jb21taXRzKHNlbGYuX29wdGlvbnMu
Zm9yY2VfY2xlYW4pCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvdmFsaWRhdGVyZXZpZXdlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy92YWxpZGF0ZXJldmlld2VyLnB5CmluZGV4IGJkZjcyOWU0YmZlMmQwNDQzYjU3OTE4OGQ1OTY5
MmNjMDY2NjQxZDcuLjc4YjQ5YjE5NTIwNzdlNzE0MTMwMzljODc4NTAwNmM1MDgzZTI0OTYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmll
d2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJl
dmlld2VyLnB5CkBAIC01OCw5ICs1OCw2IEBAIGNsYXNzIFZhbGlkYXRlUmV2aWV3ZXIoQWJzdHJh
Y3RTdGVwKToKICAgICAgICAgIyB0aGlzIGNoZWNrIGlzIHRvbyBkcmFjb25pYW4gKGFuZCB0b28g
cG9vcmx5IHRlc3RlZCkgdG8gZm9pc3QgdXBvbiB1c2Vycy4KICAgICAgICAgaWYgbm90IHNlbGYu
X29wdGlvbnMubm9uX2ludGVyYWN0aXZlOgogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICMg
RklYTUU6IFdlIHNob3VsZCBmaWd1cmUgb3V0IGhvdyB0byBoYW5kbGUgdGhlIGN1cnJlbnQgd29y
a2luZwotICAgICAgICAjICAgICAgICBkaXJlY3RvcnkgaXNzdWUgbW9yZSBnbG9iYWxseS4KLSAg
ICAgICAgb3MuY2hkaXIoc2VsZi5fdG9vbC5zY20oKS5jaGVja291dF9yb290KQogICAgICAgICBm
b3IgY2hhbmdlbG9nX3BhdGggaW4gc2VsZi5jYWNoZWRfbG9va3VwKHN0YXRlLCAiY2hhbmdlbG9n
cyIpOgogICAgICAgICAgICAgY2hhbmdlbG9nX2VudHJ5ID0gQ2hhbmdlTG9nKGNoYW5nZWxvZ19w
YXRoKS5sYXRlc3RfZW50cnkoKQogICAgICAgICAgICAgaWYgc2VsZi5faGFzX3ZhbGlkX3Jldmll
d2VyKGNoYW5nZWxvZ19lbnRyeSk6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77393</attachid>
            <date>2010-12-23 18:14:08 -0800</date>
            <delta_ts>2010-12-24 08:53:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-28291-20101223201405.patch</filename>
            <type>text/plain</type>
            <size>19641</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ODYx
ZGMwZjE1MWZmN2QxZTE0ZDZlYmYwZWI0Y2Q4MjVlYmRiNjY5Li40NGMzMjM3OTI3OTZlZmYyYzZh
NmM1NDBkNzkyOGViZGM0YWQwMDA4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMTItMjMgIEVyaWMgU2VpZGVs
ICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIHdlYmtpdC1wYXRjaCAob3IgYSBwcmUtY29tbWl0IGhvb2spIG5lZWRzIHRv
IHByZXZlbnQgYmFkIENoYW5nZUxvZyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI5MQorCisgICAgICAgIFRoaXMgaXMgYSBzdGFydC4g
IEF0IGxlYXN0IG5vdyB3ZWJraXQtcGF0Y2ggd2lsbCBwcm9tcHQgd2hlbiB5b3VyIENoYW5nZUxv
ZyBsb29rcyBxdWVzdGlvbmFibGUuCisgICAgICAgIFdlIGNvdWxkIGRvIG1vcmUgYWR2YW5jZWQg
dGhpbmdzLCBsaWtlIHBhcnNpbmcgdGhlIENoYW5nZUxvZyAod2l0aCBjaGFuZ2Vsb2cucHkpIGFu
ZCBjb21wYXJpbmcgdGhhdAorICAgICAgICB0byBzdHJpbmdzIHdpdGggZmluZCBpbiB0aGUgZGlm
Zi4KKyAgICAgICAgU2luY2Ugbm9uLWludGVyYWN0aXZlIGFsd2F5cyByZXR1cm5zIHRoZSBkZWZh
dWx0LCB0aGlzIHNob3VsZCBjYXVzZSBwYXRjaGVzIHdpdGggYmFkIGNoYW5nZWxvZ3MgdG8gZmFp
bCBvbiB0aGUgY29tbWl0LXF1ZXVlLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvYXBpLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L2RpZmZfcGFyc2VyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9hYnN0cmFjdHN0ZXAucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL2NsZWFud29ya2luZ2RpcmVjdG9yeS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvdmFsaWRhdGVjaGFuZ2Vsb2dzLnB5OiBDb3BpZWQgZnJvbSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weS4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVjaGFuZ2Vsb2dzX3VuaXR0ZXN0LnB5
OiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3Jr
aW5nZGlyZWN0b3J5LnB5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92
YWxpZGF0ZXJldmlld2VyLnB5OgorCiAyMDEwLTEyLTIzICBMdWNhcyBGb3JzY2hsZXIgIDxsZm9y
c2NobGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5weQppbmRleCA2MzU3
OTgyODc0MjRiNjM0MWVhNzAyY2ZmMmMwZDUyZTM4MzY0OWRlLi4yOWU0M2QzZDVjN2UzMzFhZDc1
ZGRkMDg4YmUwMDVkNjIxZjNiMTEyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9hcGkucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvYXBpLnB5CkBAIC0zOSwxNCArMzksMTQgQEAgZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBydW5fY29tbWFuZCwgU2NyaXB0
RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1w
b3J0IGxvZwogCiAKLSMgVGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSBXZWJLaXQtc3BlY2lmaWMg
cGFydHMgb2YgdGhlIGNoZWNrb3V0IChsaWtlCi0jIENoYW5nZUxvZ3MpLgorIyBUaGlzIGNsYXNz
IHJlcHJlc2VudHMgdGhlIFdlYktpdC1zcGVjaWZpYyBwYXJ0cyBvZiB0aGUgY2hlY2tvdXQgKGxp
a2UgQ2hhbmdlTG9ncykuCiAjIEZJWE1FOiBNb3ZlIGEgYnVuY2ggb2YgQ2hhbmdlTG9nLXNwZWNp
ZmljIHByb2Nlc3NpbmcgZnJvbSBTQ00gdG8gdGhpcyBvYmplY3QuCisjIE5PVEU6IEFsbCBwYXRo
cyByZXR1cm5lZCBmcm9tIHRoaXMgY2xhc3Mgc2hvdWxkIGJlIGFic29sdXRlLgogY2xhc3MgQ2hl
Y2tvdXQob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgc2NtKToKICAgICAgICAgc2Vs
Zi5fc2NtID0gc2NtCiAKLSAgICBkZWYgX2lzX3BhdGhfdG9fY2hhbmdlbG9nKHNlbGYsIHBhdGgp
OgorICAgIGRlZiBpc19wYXRoX3RvX2NoYW5nZWxvZyhzZWxmLCBwYXRoKToKICAgICAgICAgcmV0
dXJuIG9zLnBhdGguYmFzZW5hbWUocGF0aCkgPT0gIkNoYW5nZUxvZyIKIAogICAgIGRlZiBfbGF0
ZXN0X2VudHJ5X2Zvcl9jaGFuZ2Vsb2dfYXRfcmV2aXNpb24oc2VsZiwgY2hhbmdlbG9nX3BhdGgs
IHJldmlzaW9uKToKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgQ2hlY2tvdXQob2JqZWN0KToKIAog
ICAgIGRlZiBjaGFuZ2Vsb2dfZW50cmllc19mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgog
ICAgICAgICBjaGFuZ2VkX2ZpbGVzID0gc2VsZi5fc2NtLmNoYW5nZWRfZmlsZXNfZm9yX3Jldmlz
aW9uKHJldmlzaW9uKQotICAgICAgICByZXR1cm4gW3NlbGYuX2xhdGVzdF9lbnRyeV9mb3JfY2hh
bmdlbG9nX2F0X3JldmlzaW9uKHBhdGgsIHJldmlzaW9uKSBmb3IgcGF0aCBpbiBjaGFuZ2VkX2Zp
bGVzIGlmIHNlbGYuX2lzX3BhdGhfdG9fY2hhbmdlbG9nKHBhdGgpXQorICAgICAgICByZXR1cm4g
W3NlbGYuX2xhdGVzdF9lbnRyeV9mb3JfY2hhbmdlbG9nX2F0X3JldmlzaW9uKHBhdGgsIHJldmlz
aW9uKSBmb3IgcGF0aCBpbiBjaGFuZ2VkX2ZpbGVzIGlmIHNlbGYuaXNfcGF0aF90b19jaGFuZ2Vs
b2cocGF0aCldCiAKICAgICBAbWVtb2l6ZWQKICAgICBkZWYgY29tbWl0X2luZm9fZm9yX3Jldmlz
aW9uKHNlbGYsIHJldmlzaW9uKToKQEAgLTk2LDEwICs5NiwxMCBAQCBjbGFzcyBDaGVja291dChv
YmplY3QpOgogICAgICAgICByZXR1cm4gW3BhdGggZm9yIHBhdGggaW4gYWJzb2x1dGVfcGF0aHMg
aWYgcHJlZGljYXRlKHBhdGgpXQogCiAgICAgZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZiwg
Z2l0X2NvbW1pdCwgY2hhbmdlZF9maWxlcz1Ob25lKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX21v
ZGlmaWVkX2ZpbGVzX21hdGNoaW5nX3ByZWRpY2F0ZShnaXRfY29tbWl0LCBzZWxmLl9pc19wYXRo
X3RvX2NoYW5nZWxvZywgY2hhbmdlZF9maWxlcz1jaGFuZ2VkX2ZpbGVzKQorICAgICAgICByZXR1
cm4gc2VsZi5fbW9kaWZpZWRfZmlsZXNfbWF0Y2hpbmdfcHJlZGljYXRlKGdpdF9jb21taXQsIHNl
bGYuaXNfcGF0aF90b19jaGFuZ2Vsb2csIGNoYW5nZWRfZmlsZXM9Y2hhbmdlZF9maWxlcykKIAog
ICAgIGRlZiBtb2RpZmllZF9ub25fY2hhbmdlbG9ncyhzZWxmLCBnaXRfY29tbWl0LCBjaGFuZ2Vk
X2ZpbGVzPU5vbmUpOgotICAgICAgICByZXR1cm4gc2VsZi5fbW9kaWZpZWRfZmlsZXNfbWF0Y2hp
bmdfcHJlZGljYXRlKGdpdF9jb21taXQsIGxhbWJkYSBwYXRoOiBub3Qgc2VsZi5faXNfcGF0aF90
b19jaGFuZ2Vsb2cocGF0aCksIGNoYW5nZWRfZmlsZXM9Y2hhbmdlZF9maWxlcykKKyAgICAgICAg
cmV0dXJuIHNlbGYuX21vZGlmaWVkX2ZpbGVzX21hdGNoaW5nX3ByZWRpY2F0ZShnaXRfY29tbWl0
LCBsYW1iZGEgcGF0aDogbm90IHNlbGYuaXNfcGF0aF90b19jaGFuZ2Vsb2cocGF0aCksIGNoYW5n
ZWRfZmlsZXM9Y2hhbmdlZF9maWxlcykKIAogICAgIGRlZiBjb21taXRfbWVzc2FnZV9mb3JfdGhp
c19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCwgY2hhbmdlZF9maWxlcz1Ob25lKToKICAgICAgICAg
Y2hhbmdlbG9nX3BhdGhzID0gc2VsZi5tb2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21taXQsIGNo
YW5nZWRfZmlsZXMpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9kaWZmX3BhcnNlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L2RpZmZfcGFyc2VyLnB5CmluZGV4IGE2ZWE3NTYwMjZkYzBkMDZlZDJkMTE2ZjYwNjI3
MTRiZDg3MTA1MzkuLjVhNTU0NmNkZTcyYTNhNzk0ZjRiYjM3NjUyM2QwNmFlOTg5NzQwN2MgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFy
c2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZf
cGFyc2VyLnB5CkBAIC0xMTgsNiArMTE4LDggQEAgY2xhc3MgRGlmZkZpbGUob2JqZWN0KToKICAg
ICAgICAgc2VsZi5saW5lcy5hcHBlbmQoKGRlbGV0ZWRfbGluZV9udW1iZXIsIG5ld19saW5lX251
bWJlciwgbGluZSkpCiAKIAorIyBJZiB0aGlzIGlzIGdvaW5nIHRvIGJlIGNhbGxlZCBEaWZmUGFy
c2VyLCBpdCBzaG91bGQgYmUgYSByZS11c2VhYmxlIHBhcnNlci4KKyMgT3RoZXJ3aXNlIHdlIHNo
b3VsZCByZW5hbWUgaXQgdG8gUGFyc2VkRGlmZiBvciBqdXN0IERpZmYuCiBjbGFzcyBEaWZmUGFy
c2VyKG9iamVjdCk6CiAgICAgIiIiQSBwYXJzZXIgZm9yIGEgcGF0Y2ggZmlsZS4KIApAQCAtMTI1
LDE2ICsxMjcsMTggQEAgY2xhc3MgRGlmZlBhcnNlcihvYmplY3QpOgogICAgIGEgRGlmZkZpbGUg
b2JqZWN0LgogICAgICIiIgogCi0gICAgIyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpcyB3YXkgdG9v
IGxvbmcgYW5kIG5lZWRzIHRvIGJlIGJyb2tlbiB1cC4KICAgICBkZWYgX19pbml0X18oc2VsZiwg
ZGlmZl9pbnB1dCk6CiAgICAgICAgICIiIlBhcnNlcyBhIGRpZmYuCiAKICAgICAgICAgQXJnczoK
ICAgICAgICAgICBkaWZmX2lucHV0OiBBbiBpdGVyYWJsZSBvYmplY3QuCiAgICAgICAgICIiIgot
ICAgICAgICBzdGF0ZSA9IF9JTklUSUFMX1NUQVRFCisgICAgICAgIHNlbGYuZmlsZXMgPSBzZWxm
Ll9wYXJzZV9pbnRvX2RpZmZfZmlsZXMoZGlmZl9pbnB1dCkKIAotICAgICAgICBzZWxmLmZpbGVz
ID0ge30KKyAgICAjIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIHdheSB0b28gbG9uZyBhbmQgbmVl
ZHMgdG8gYmUgYnJva2VuIHVwLgorICAgIGRlZiBfcGFyc2VfaW50b19kaWZmX2ZpbGVzKHNlbGYs
IGRpZmZfaW5wdXQpOgorICAgICAgICBmaWxlcyA9IHt9CisgICAgICAgIHN0YXRlID0gX0lOSVRJ
QUxfU1RBVEUKICAgICAgICAgY3VycmVudF9maWxlID0gTm9uZQogICAgICAgICBvbGRfZGlmZl9s
aW5lID0gTm9uZQogICAgICAgICBuZXdfZGlmZl9saW5lID0gTm9uZQpAQCAtMTQ4LDcgKzE1Miw3
IEBAIGNsYXNzIERpZmZQYXJzZXIob2JqZWN0KToKICAgICAgICAgICAgIGlmIGZpbGVfZGVjbGFy
YXRpb246CiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlX2RlY2xhcmF0aW9uLmdyb3Vw
KCdGaWxlUGF0aCcpCiAgICAgICAgICAgICAgICAgY3VycmVudF9maWxlID0gRGlmZkZpbGUoZmls
ZW5hbWUpCi0gICAgICAgICAgICAgICAgc2VsZi5maWxlc1tmaWxlbmFtZV0gPSBjdXJyZW50X2Zp
bGUKKyAgICAgICAgICAgICAgICBmaWxlc1tmaWxlbmFtZV0gPSBjdXJyZW50X2ZpbGUKICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IF9ERUNMQVJFRF9GSUxFX1BBVEgKICAgICAgICAgICAgICAgICBj
b250aW51ZQogCkBAIC0xNzksMyArMTgzLDQgQEAgY2xhc3MgRGlmZlBhcnNlcihvYmplY3QpOgog
ICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1Vu
ZXhwZWN0ZWQgZGlmZiBmb3JtYXQgd2hlbiBwYXJzaW5nIGEgJwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdjaHVuazogJXInICUgbGluZSkKKyAgICAgICAgcmV0dXJuIGZpbGVzCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHkKaW5k
ZXggMDIwZjMzOTc2ZGM4YTEwMWRkOTg2YmU0MGNlODg2NzI2ZDU2ODRlYS4uNzMyNDU4NjU4ZWZk
ZTVlYWU3NmYzMTRhMzQ3YzBjNTAyMDU1MzI4NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZC5weQpAQCAtOTIsNiArOTIsNyBAQCBjbGFzcyBM
YW5kKEFic3RyYWN0U2VxdWVuY2VkQ29tbWFuZCk6CiAgICAgYXJndW1lbnRfbmFtZXMgPSAiW0JV
R0lEXSIKICAgICBzaG93X2luX21haW5faGVscCA9IFRydWUKICAgICBzdGVwcyA9IFsKKyAgICAg
ICAgc3RlcHMuVmFsaWRhdGVDaGFuZ2VMb2dzLAogICAgICAgICBzdGVwcy5FbnN1cmVCdWlsZGVy
c0FyZUdyZWVuLAogICAgICAgICBzdGVwcy5VcGRhdGVDaGFuZ2VMb2dzV2l0aFJldmlld2VyLAog
ICAgICAgICBzdGVwcy5WYWxpZGF0ZVJldmlld2VyLApAQCAtMjU3LDYgKzI1OCw3IEBAIGNsYXNz
IEFic3RyYWN0UGF0Y2hMYW5kaW5nQ29tbWFuZChBYnN0cmFjdFBhdGNoU2VxdWVuY2luZ0NvbW1h
bmQpOgogICAgICAgICBzdGVwcy5DbGVhbldvcmtpbmdEaXJlY3RvcnksCiAgICAgICAgIHN0ZXBz
LlVwZGF0ZSwKICAgICAgICAgc3RlcHMuQXBwbHlQYXRjaCwKKyAgICAgICAgc3RlcHMuVmFsaWRh
dGVDaGFuZ2VMb2dzLAogICAgICAgICBzdGVwcy5WYWxpZGF0ZVJldmlld2VyLAogICAgICAgICBz
dGVwcy5CdWlsZCwKICAgICAgICAgc3RlcHMuUnVuVGVzdHMsCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weQppbmRleCBlMTJjOGUyZTdlY2QzNzJhYWFh
ZDZkYWY2Mjc1MzIzZmJkMTUxODhlLi40ZTFmZDk4MTkxYTRjYTM3YWVlM2UwN2Y5MjVmZTNlZTll
NmU0NmRlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
dXBsb2FkLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxv
YWQucHkKQEAgLTE5Niw2ICsxOTYsNyBAQCBjbGFzcyBQb3N0KEFic3RyYWN0UGF0Y2hVcGxvYWRp
bmdDb21tYW5kKToKICAgICBoZWxwX3RleHQgPSAiQXR0YWNoIHRoZSBjdXJyZW50IHdvcmtpbmcg
ZGlyZWN0b3J5IGRpZmYgdG8gYSBidWcgYXMgYSBwYXRjaCBmaWxlIgogICAgIGFyZ3VtZW50X25h
bWVzID0gIltCVUdJRF0iCiAgICAgc3RlcHMgPSBbCisgICAgICAgIHN0ZXBzLlZhbGlkYXRlQ2hh
bmdlTG9ncywKICAgICAgICAgc3RlcHMuQ2hlY2tTdHlsZSwKICAgICAgICAgc3RlcHMuQ29uZmly
bURpZmYsCiAgICAgICAgIHN0ZXBzLk9ic29sZXRlUGF0Y2hlcywKQEAgLTIxNCw2ICsyMTUsNyBA
QCBjbGFzcyBMYW5kU2FmZWx5KEFic3RyYWN0UGF0Y2hVcGxvYWRpbmdDb21tYW5kKToKICAgICBj
b21taXQgYnkgdGhlIGNvbW1pdC1xdWV1ZS4iIiIKICAgICBzaG93X2luX21haW5faGVscCA9IFRy
dWUKICAgICBzdGVwcyA9IFsKKyAgICAgICAgc3RlcHMuVmFsaWRhdGVDaGFuZ2VMb2dzLAogICAg
ICAgICBzdGVwcy5VcGRhdGVDaGFuZ2VMb2dzV2l0aFJldmlld2VyLAogICAgICAgICBzdGVwcy5P
YnNvbGV0ZVBhdGNoZXMsCiAgICAgICAgIHN0ZXBzLlBvc3REaWZmRm9yQ29tbWl0LApAQCAtMjQx
LDYgKzI0Myw3IEBAIGNsYXNzIFVwbG9hZChBYnN0cmFjdFBhdGNoVXBsb2FkaW5nQ29tbWFuZCk6
CiAgICAgYXJndW1lbnRfbmFtZXMgPSAiW0JVR0lEXSIKICAgICBzaG93X2luX21haW5faGVscCA9
IFRydWUKICAgICBzdGVwcyA9IFsKKyAgICAgICAgc3RlcHMuVmFsaWRhdGVDaGFuZ2VMb2dzLAog
ICAgICAgICBzdGVwcy5DaGVja1N0eWxlLAogICAgICAgICBzdGVwcy5Qcm9tcHRGb3JCdWdPclRp
dGxlLAogICAgICAgICBzdGVwcy5DcmVhdGVCdWcsCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvX19pbml0X18ucHkKaW5kZXggNjRkOWQwNTliZGE3MWRiOWNkZDg5MjhhMTIz
ZjJjZjNiMDAxMGZkNy4uZjQyNmYxNzdkNWI2Y2NkN2RjZWRkOTc1YmMzYzVmZTc1ZGYzNGZjYSAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5weQpAQCAt
NTYsNCArNTYsNSBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMucnVudGVzdHMgaW1wb3J0IFJ1
blRlc3RzCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuc3VnZ2VzdHJldmlld2VycyBpbXBvcnQg
U3VnZ2VzdFJldmlld2VycwogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnVwZGF0ZWNoYW5nZWxv
Z3N3aXRocmV2aWV3ZXIgaW1wb3J0IFVwZGF0ZUNoYW5nZUxvZ3NXaXRoUmV2aWV3ZXIKIGZyb20g
d2Via2l0cHkudG9vbC5zdGVwcy51cGRhdGUgaW1wb3J0IFVwZGF0ZQorZnJvbSB3ZWJraXRweS50
b29sLnN0ZXBzLnZhbGlkYXRlY2hhbmdlbG9ncyBpbXBvcnQgVmFsaWRhdGVDaGFuZ2VMb2dzCiBm
cm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMudmFsaWRhdGVyZXZpZXdlciBpbXBvcnQgVmFsaWRhdGVS
ZXZpZXdlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fi
c3RyYWN0c3RlcC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFj
dHN0ZXAucHkKaW5kZXggNTUyNWVhMDhiNTY4MWQ4MWQ4NWMwZmI1NDM0MjIzYmQwMmYwMTYzMC4u
MWM5M2Q1YjlmN2QwZTNiZDMzMWM1MTBhMGYyNGNlN2ZkOWNhYzViOSAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5CkBAIC01Miw2ICs1
Miw3IEBAIGNsYXNzIEFic3RyYWN0U3RlcChvYmplY3QpOgogICAgICAgICAiYnVnX3RpdGxlIjog
bGFtYmRhIHNlbGYsIHN0YXRlOiBzZWxmLl90b29sLmJ1Z3MuZmV0Y2hfYnVnKHN0YXRlWyJidWdf
aWQiXSkudGl0bGUoKSwKICAgICAgICAgImNoYW5nZWRfZmlsZXMiOiBsYW1iZGEgc2VsZiwgc3Rh
dGU6IHNlbGYuX3Rvb2wuc2NtKCkuY2hhbmdlZF9maWxlcyhzZWxmLl9vcHRpb25zLmdpdF9jb21t
aXQpLAogICAgICAgICAiZGlmZiI6IGxhbWJkYSBzZWxmLCBzdGF0ZTogc2VsZi5fdG9vbC5zY20o
KS5jcmVhdGVfcGF0Y2goc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0LCBjaGFuZ2VkX2ZpbGVzPXNl
bGYuX2NoYW5nZWRfZmlsZXMoc3RhdGUpKSwKKyAgICAgICAgIyBBYnNvbHV0ZSBwYXRoIHRvIENo
YW5nZUxvZyBmaWxlcy4KICAgICAgICAgImNoYW5nZWxvZ3MiOiBsYW1iZGEgc2VsZiwgc3RhdGU6
IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5tb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYuX29wdGlvbnMu
Z2l0X2NvbW1pdCwgY2hhbmdlZF9maWxlcz1zZWxmLl9jaGFuZ2VkX2ZpbGVzKHN0YXRlKSksCiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xl
YW53b3JraW5nZGlyZWN0b3J5LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L2NsZWFud29ya2luZ2RpcmVjdG9yeS5weQppbmRleCA5YzE2MjQyZWFhNGRmN2FjNzc3OTg5ZTA2
NTg5MzcxYjZmM2MwMTM0Li5hMTY1ZGQyMWY5OGQwODkxNDZhYWJhYTkzYjAwNjhmZGRkYWVkZjQ4
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3Jr
aW5nZGlyZWN0b3J5LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9j
bGVhbndvcmtpbmdkaXJlY3RvcnkucHkKQEAgLTQ3LDcgKzQ3LDkgQEAgY2xhc3MgQ2xlYW5Xb3Jr
aW5nRGlyZWN0b3J5KEFic3RyYWN0U3RlcCk6CiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CiAg
ICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLmNsZWFuOgogICAgICAgICAgICAgcmV0dXJuCi0g
ICAgICAgICMgRklYTUU6IFRoaXMgY2hkaXIgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkuCisgICAg
ICAgICMgRklYTUU6IFRoaXMgY2hkaXIgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgYW5kIGNhbiBi
ZSByZW1vdmVkIGFzCisgICAgICAgICMgc29vbiBhcyBlbnN1cmVfbm9fbG9jYWxfY29tbWl0cyBh
bmQgZW5zdXJlX2NsZWFuX3dvcmtpbmdfZGlyZWN0b3J5CisgICAgICAgICMgYXJlIGtub3duIHRv
IHNldCB0aGUgQ1dEIHRvIGNoZWNrb3V0X3Jvb3Qgd2hlbiBjYWxsaW5nIHJ1bl9jb21tYW5kLgog
ICAgICAgICBvcy5jaGRpcihzZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpCiAgICAgICAg
IGlmIG5vdCBzZWxmLl9hbGxvd19sb2NhbF9jb21taXRzOgogICAgICAgICAgICAgc2VsZi5fdG9v
bC5zY20oKS5lbnN1cmVfbm9fbG9jYWxfY29tbWl0cyhzZWxmLl9vcHRpb25zLmZvcmNlX2NsZWFu
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NvbW1pdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jb21taXQucHkKaW5kZXggNWFh
NmI1MWRlOTUwMzIxNTg5NWU0MmI4ZDQwNTllYmNjYmE5YWMwYy4uODU5YWNiZjhjMjU4YjJlZGIw
NTRhMGFhNmFiYTg0OGJkOTNjMWUyMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3N0ZXBzL2NvbW1pdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvY29tbWl0LnB5CkBAIC0zNiwxMiArMzYsNiBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuc3Rl
cHMub3B0aW9ucyBpbXBvcnQgT3B0aW9ucwogCiAKIGNsYXNzIENvbW1pdChBYnN0cmFjdFN0ZXAp
OgotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBvcHRpb25zKGNscyk6Ci0gICAgICAgIHJldHVy
biBBYnN0cmFjdFN0ZXAub3B0aW9ucygpICsgWwotICAgICAgICAgICAgT3B0aW9ucy5naXRfY29t
bWl0LAotICAgICAgICBdCi0KICAgICBkZWYgX2NvbW1pdF93YXJuaW5nKHNlbGYsIGVycm9yKToK
ICAgICAgICAgd29ya2luZ19kaXJlY3RvcnlfbWVzc2FnZSA9ICIiIGlmIGVycm9yLndvcmtpbmdf
ZGlyZWN0b3J5X2lzX2NsZWFuIGVsc2UgIiBhbmQgd29ya2luZyBjb3B5IGNoYW5nZXMiCiAgICAg
ICAgIHJldHVybiAoJ1RoZXJlIGFyZSAlcyBsb2NhbCBjb21taXRzJXMuIEV2ZXJ5dGhpbmcgd2ls
bCBiZSBjb21taXR0ZWQgYXMgYSBzaW5nbGUgY29tbWl0LiAnCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVjaGFuZ2Vsb2dzLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlY2hhbmdlbG9ncy5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMTViMzQ0NDg0ZDhmNjYzNjA2MjM2MWU4MTI5ZTcwMjcyY2ZiYzFjCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlY2hhbmdl
bG9ncy5weQpAQCAtMCwwICsxLDU4IEBACisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
IyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnJvbSB3ZWJraXRw
eS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBpbXBvcnQgQWJzdHJhY3RTdGVwCitmcm9tIHdlYmtp
dHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBvcnQgT3B0aW9ucworZnJvbSB3ZWJraXRweS5jb21t
b24uY2hlY2tvdXQuZGlmZl9wYXJzZXIgaW1wb3J0IERpZmZQYXJzZXIKK2Zyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGVycm9yLCBsb2cKKworCisj
IFRoaXMgaXMgY2xvc2VseSByZWxhdGVkIHRvIHRoZSBWYWxpZGF0ZVJldmlld2VyIHN0ZXAgYW5k
IHRoZSBDb21taXR0ZXJWYWxpZGF0b3IgY2xhc3MuCisjIFdlIG1heSB3YW50IHRvIHVuaWZ5IG1v
cmUgb2YgdGhpcyBjb2RlIGluIG9uZSBwbGFjZS4KK2NsYXNzIFZhbGlkYXRlQ2hhbmdlTG9ncyhB
YnN0cmFjdFN0ZXApOgorICAgIGRlZiBfY2hlY2tfY2hhbmdlbG9nX2RpZmYoc2VsZiwgZGlmZl9m
aWxlKToKKyAgICAgICAgaWYgbm90IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5pc19wYXRoX3RvX2No
YW5nZWxvZyhkaWZmX2ZpbGUuZmlsZW5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAg
ICAgICAgIyBFYWNoIGxpbmUgaXMgYSB0dXBsZSwgdGhlIGZpcnN0IHZhbHVlIGlzIHRoZSBkZWxl
dGVkIGxpbmUgbnVtYmVyCisgICAgICAgICMgRGF0ZSwgcmV2aWV3ZXIsIGJ1ZyB0aXRsZSwgYnVn
IHVybCwgYW5kIGVtcHR5IGxpbmVzIGNvdWxkIGFsbCBiZQorICAgICAgICAjIGlkZW50aWNhbCBp
biB0aGUgbW9zdCByZWNlbnQgZW50cmllcy4gIElmIHRoZSBkaWZmIHN0YXJ0cyBhbnkKKyAgICAg
ICAgIyBsYXRlciB0aGFuIHRoYXQsIGFzc3VtZSB0aGF0IHRoZSBlbnRyeSBpcyB3cm9uZy4KKyAg
ICAgICAgaWYgZGlmZl9maWxlLmxpbmVzWzBdWzBdIDwgODoKKyAgICAgICAgICAgIHJldHVybiBU
cnVlCisgICAgICAgIGxvZygiVGhlIGRpZmYgdG8gJXMgbG9va3Mgd3JvbmcuICBBcmUgeW91IHN1
cmUgeW91ciBDaGFuZ2VMb2cgZW50cnkgaXMgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZT8iICUgKGRp
ZmZfZmlsZS5maWxlbmFtZSkpCisgICAgICAgICMgRklYTUU6IERvIHdlIG5lZWQgdG8gbWFrZSB0
aGUgZmlsZSBwYXRoIGFic29sdXRlPworICAgICAgICBzZWxmLl90b29sLnNjbSgpLmRpZmZfZm9y
X2ZpbGUoZGlmZl9maWxlLmZpbGVuYW1lKQorICAgICAgICBpZiBzZWxmLl90b29sLnVzZXIuY29u
ZmlybSgiT0sgdG8gY29udGludWU/IiwgZGVmYXVsdD0nbicpOgorICAgICAgICAgICAgcmV0dXJu
IFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToK
KyAgICAgICAgcGFyc2VkX2RpZmYgPSBEaWZmUGFyc2VyKHNlbGYuY2FjaGVkX2xvb2t1cChzdGF0
ZSwgImRpZmYiKSkKKyAgICAgICAgZm9yIGRpZmZfZmlsZSBpbiBwYXJzZWRfZGlmZi5maWxlczoK
KyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jaGVja19jaGFuZ2Vsb2dfZGlmZihkaWZmX2ZpbGUp
OgorICAgICAgICAgICAgICAgIGVycm9yKCJDaGFuZ2VMb2cgZW50cnkgaW4gJXMgaXMgbm90IGF0
IHRoZSB0b3Agb2YgdGhlIGZpbGUuIiAlIGRpZmZfZmlsZS5maWxlbmFtZSkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZWNoYW5nZWxvZ3NfdW5p
dHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVjaGFu
Z2Vsb2dzX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjMmIyN2YwNzFmNzM5MjI3N2RiZDg2ZTE4
ZmQ3Yzk2NjljZDNkYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvdmFsaWRhdGVjaGFuZ2Vsb2dzX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNTUg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKK2Zyb20gd2Vi
a2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCitmcm9tIHdlYmtpdHB5LnRvb2wubW9j
a3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVG9vbAorZnJvbSB3ZWJraXRweS50b29sLnN0
ZXBzLmNoZWNrY2hhbmdlbG9ncyBpbXBvcnQgVmFsaWRhdGVDaGFuZ2VMb2dzCisKKworY2xhc3Mg
VmFsaWRhdGVDaGFuZ2VMb2dzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgX2Fz
c2VydF9zdGFydF9saW5lX3Byb2R1Y2VzX291dHB1dChzZWxmLCBzdGFydF9saW5lLCBzaG91bGRf
cHJvbXB0X3VzZXI9RmFsc2UpOgorICAgICAgICB0b29sID0gTW9ja1Rvb2woKQorICAgICAgICB0
b29sLl9jaGVja291dC5pc19wYXRoX3RvX2NoYW5nZWxvZyA9IGxhbWJkYSBwYXRoOiBUcnVlCisg
ICAgICAgIHN0ZXAgPSBWYWxpZGF0ZUNoYW5nZUxvZ3ModG9vbCwgTW9ja09wdGlvbnMoZ2l0X2Nv
bW1pdD1Ob25lKSkKKyAgICAgICAgZGlmZl9maWxlID0gTW9jaygpCisgICAgICAgIGRpZmZfZmls
ZS5maWxlbmFtZSA9ICJtb2NrL0NoYW5nZUxvZyIKKyAgICAgICAgZGlmZl9maWxlLmxpbmVzID0g
WyhzdGFydF9saW5lLCBzdGFydF9saW5lLCAiZm9vIildCisgICAgICAgIGV4cGVjdGVkX3N0ZG91
dCA9IGV4cGVjdGVkX3N0ZGVyciA9ICIiCisgICAgICAgIGlmIHNob3VsZF9wcm9tcHRfdXNlcjoK
KyAgICAgICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJPSyB0byBjb250aW51ZT9cbiIKKyAgICAg
ICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJUaGUgZGlmZiB0byBtb2NrL0NoYW5nZUxvZyBsb29r
cyB3cm9uZy4gIEFyZSB5b3Ugc3VyZSB5b3VyIENoYW5nZUxvZyBlbnRyeSBpcyBhdCB0aGUgdG9w
IG9mIHRoZSBmaWxlP1xuIgorICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMo
c2VsZiwgc3RlcC5fY2hlY2tfY2hhbmdlbG9nX2RpZmYsIFtkaWZmX2ZpbGVdLCBleHBlY3RlZF9z
dGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQor
CisgICAgZGVmIHRlc3RfY2hlY2tfY2hhbmdlbG9nX2RpZmYoc2VsZik6CisgICAgICAgIHNlbGYu
X2Fzc2VydF9zdGFydF9saW5lX3Byb2R1Y2VzX291dHB1dCgxLCBzaG91bGRfcHJvbXB0X3VzZXI9
RmFsc2UpCisgICAgICAgIHNlbGYuX2Fzc2VydF9zdGFydF9saW5lX3Byb2R1Y2VzX291dHB1dCg3
LCBzaG91bGRfcHJvbXB0X3VzZXI9RmFsc2UpCisgICAgICAgIHNlbGYuX2Fzc2VydF9zdGFydF9s
aW5lX3Byb2R1Y2VzX291dHB1dCg4LCBzaG91bGRfcHJvbXB0X3VzZXI9VHJ1ZSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmlld2VyLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlcmV2aWV3ZXIucHkK
aW5kZXggYmRmNzI5ZTRiZmUyZDA0NDNiNTc5MTg4ZDU5NjkyY2MwNjY2NDFkNy4uYzJhMjdiOTgz
NmM2YWNlMjk0MjQyZDcxMDcxMTQyODU4ODZjMjM0NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlcmV2aWV3ZXIucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlcmV2aWV3ZXIucHkKQEAgLTM3LDEyICsz
Nyw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1w
b3J0IGVycm9yLCBsb2cKIAogIyBGSVhNRTogU29tZSBvZiB0aGlzIGxvZ2ljIHNob3VsZCBwcm9i
YWJseSBiZSB1bmlmaWVkIHdpdGggQ29tbWl0dGVyVmFsaWRhdG9yPwogY2xhc3MgVmFsaWRhdGVS
ZXZpZXdlcihBYnN0cmFjdFN0ZXApOgotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBvcHRpb25z
KGNscyk6Ci0gICAgICAgIHJldHVybiBBYnN0cmFjdFN0ZXAub3B0aW9ucygpICsgWwotICAgICAg
ICAgICAgT3B0aW9ucy5naXRfY29tbWl0LAotICAgICAgICBdCi0KICAgICAjIEZJWE1FOiBUaGlz
IHNob3VsZCBwcm9iYWJseSBtb3ZlIG9udG8gQ2hhbmdlTG9nRW50cnkKICAgICBkZWYgX2hhc192
YWxpZF9yZXZpZXdlcihzZWxmLCBjaGFuZ2Vsb2dfZW50cnkpOgogICAgICAgICBpZiBjaGFuZ2Vs
b2dfZW50cnkucmV2aWV3ZXIoKToKQEAgLTU4LDkgKzUyLDYgQEAgY2xhc3MgVmFsaWRhdGVSZXZp
ZXdlcihBYnN0cmFjdFN0ZXApOgogICAgICAgICAjIHRoaXMgY2hlY2sgaXMgdG9vIGRyYWNvbmlh
biAoYW5kIHRvbyBwb29ybHkgdGVzdGVkKSB0byBmb2lzdCB1cG9uIHVzZXJzLgogICAgICAgICBp
ZiBub3Qgc2VsZi5fb3B0aW9ucy5ub25faW50ZXJhY3RpdmU6CiAgICAgICAgICAgICByZXR1cm4K
LSAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGZpZ3VyZSBvdXQgaG93IHRvIGhhbmRsZSB0aGUg
Y3VycmVudCB3b3JraW5nCi0gICAgICAgICMgICAgICAgIGRpcmVjdG9yeSBpc3N1ZSBtb3JlIGds
b2JhbGx5LgotICAgICAgICBvcy5jaGRpcihzZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3Qp
CiAgICAgICAgIGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBzZWxmLmNhY2hlZF9sb29rdXAoc3RhdGUs
ICJjaGFuZ2Vsb2dzIik6CiAgICAgICAgICAgICBjaGFuZ2Vsb2dfZW50cnkgPSBDaGFuZ2VMb2co
Y2hhbmdlbG9nX3BhdGgpLmxhdGVzdF9lbnRyeSgpCiAgICAgICAgICAgICBpZiBzZWxmLl9oYXNf
dmFsaWRfcmV2aWV3ZXIoY2hhbmdlbG9nX2VudHJ5KToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77417</attachid>
            <date>2010-12-24 08:53:42 -0800</date>
            <delta_ts>2010-12-24 09:30:03 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-28291-20101224105339.patch</filename>
            <type>text/plain</type>
            <size>21053</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ODYx
ZGMwZjE1MWZmN2QxZTE0ZDZlYmYwZWI0Y2Q4MjVlYmRiNjY5Li40NGMzMjM3OTI3OTZlZmYyYzZh
NmM1NDBkNzkyOGViZGM0YWQwMDA4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMTItMjMgIEVyaWMgU2VpZGVs
ICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIHdlYmtpdC1wYXRjaCAob3IgYSBwcmUtY29tbWl0IGhvb2spIG5lZWRzIHRv
IHByZXZlbnQgYmFkIENoYW5nZUxvZyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI5MQorCisgICAgICAgIFRoaXMgaXMgYSBzdGFydC4g
IEF0IGxlYXN0IG5vdyB3ZWJraXQtcGF0Y2ggd2lsbCBwcm9tcHQgd2hlbiB5b3VyIENoYW5nZUxv
ZyBsb29rcyBxdWVzdGlvbmFibGUuCisgICAgICAgIFdlIGNvdWxkIGRvIG1vcmUgYWR2YW5jZWQg
dGhpbmdzLCBsaWtlIHBhcnNpbmcgdGhlIENoYW5nZUxvZyAod2l0aCBjaGFuZ2Vsb2cucHkpIGFu
ZCBjb21wYXJpbmcgdGhhdAorICAgICAgICB0byBzdHJpbmdzIHdpdGggZmluZCBpbiB0aGUgZGlm
Zi4KKyAgICAgICAgU2luY2Ugbm9uLWludGVyYWN0aXZlIGFsd2F5cyByZXR1cm5zIHRoZSBkZWZh
dWx0LCB0aGlzIHNob3VsZCBjYXVzZSBwYXRjaGVzIHdpdGggYmFkIGNoYW5nZWxvZ3MgdG8gZmFp
bCBvbiB0aGUgY29tbWl0LXF1ZXVlLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvYXBpLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L2RpZmZfcGFyc2VyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9hYnN0cmFjdHN0ZXAucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL2NsZWFud29ya2luZ2RpcmVjdG9yeS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvdmFsaWRhdGVjaGFuZ2Vsb2dzLnB5OiBDb3BpZWQgZnJvbSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weS4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVjaGFuZ2Vsb2dzX3VuaXR0ZXN0LnB5
OiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3Jr
aW5nZGlyZWN0b3J5LnB5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92
YWxpZGF0ZXJldmlld2VyLnB5OgorCiAyMDEwLTEyLTIzICBMdWNhcyBGb3JzY2hsZXIgIDxsZm9y
c2NobGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5weQppbmRleCA2MzU3
OTgyODc0MjRiNjM0MWVhNzAyY2ZmMmMwZDUyZTM4MzY0OWRlLi4yOWU0M2QzZDVjN2UzMzFhZDc1
ZGRkMDg4YmUwMDVkNjIxZjNiMTEyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9hcGkucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvYXBpLnB5CkBAIC0zOSwxNCArMzksMTQgQEAgZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBydW5fY29tbWFuZCwgU2NyaXB0
RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1w
b3J0IGxvZwogCiAKLSMgVGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSBXZWJLaXQtc3BlY2lmaWMg
cGFydHMgb2YgdGhlIGNoZWNrb3V0IChsaWtlCi0jIENoYW5nZUxvZ3MpLgorIyBUaGlzIGNsYXNz
IHJlcHJlc2VudHMgdGhlIFdlYktpdC1zcGVjaWZpYyBwYXJ0cyBvZiB0aGUgY2hlY2tvdXQgKGxp
a2UgQ2hhbmdlTG9ncykuCiAjIEZJWE1FOiBNb3ZlIGEgYnVuY2ggb2YgQ2hhbmdlTG9nLXNwZWNp
ZmljIHByb2Nlc3NpbmcgZnJvbSBTQ00gdG8gdGhpcyBvYmplY3QuCisjIE5PVEU6IEFsbCBwYXRo
cyByZXR1cm5lZCBmcm9tIHRoaXMgY2xhc3Mgc2hvdWxkIGJlIGFic29sdXRlLgogY2xhc3MgQ2hl
Y2tvdXQob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgc2NtKToKICAgICAgICAgc2Vs
Zi5fc2NtID0gc2NtCiAKLSAgICBkZWYgX2lzX3BhdGhfdG9fY2hhbmdlbG9nKHNlbGYsIHBhdGgp
OgorICAgIGRlZiBpc19wYXRoX3RvX2NoYW5nZWxvZyhzZWxmLCBwYXRoKToKICAgICAgICAgcmV0
dXJuIG9zLnBhdGguYmFzZW5hbWUocGF0aCkgPT0gIkNoYW5nZUxvZyIKIAogICAgIGRlZiBfbGF0
ZXN0X2VudHJ5X2Zvcl9jaGFuZ2Vsb2dfYXRfcmV2aXNpb24oc2VsZiwgY2hhbmdlbG9nX3BhdGgs
IHJldmlzaW9uKToKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgQ2hlY2tvdXQob2JqZWN0KToKIAog
ICAgIGRlZiBjaGFuZ2Vsb2dfZW50cmllc19mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgog
ICAgICAgICBjaGFuZ2VkX2ZpbGVzID0gc2VsZi5fc2NtLmNoYW5nZWRfZmlsZXNfZm9yX3Jldmlz
aW9uKHJldmlzaW9uKQotICAgICAgICByZXR1cm4gW3NlbGYuX2xhdGVzdF9lbnRyeV9mb3JfY2hh
bmdlbG9nX2F0X3JldmlzaW9uKHBhdGgsIHJldmlzaW9uKSBmb3IgcGF0aCBpbiBjaGFuZ2VkX2Zp
bGVzIGlmIHNlbGYuX2lzX3BhdGhfdG9fY2hhbmdlbG9nKHBhdGgpXQorICAgICAgICByZXR1cm4g
W3NlbGYuX2xhdGVzdF9lbnRyeV9mb3JfY2hhbmdlbG9nX2F0X3JldmlzaW9uKHBhdGgsIHJldmlz
aW9uKSBmb3IgcGF0aCBpbiBjaGFuZ2VkX2ZpbGVzIGlmIHNlbGYuaXNfcGF0aF90b19jaGFuZ2Vs
b2cocGF0aCldCiAKICAgICBAbWVtb2l6ZWQKICAgICBkZWYgY29tbWl0X2luZm9fZm9yX3Jldmlz
aW9uKHNlbGYsIHJldmlzaW9uKToKQEAgLTk2LDEwICs5NiwxMCBAQCBjbGFzcyBDaGVja291dChv
YmplY3QpOgogICAgICAgICByZXR1cm4gW3BhdGggZm9yIHBhdGggaW4gYWJzb2x1dGVfcGF0aHMg
aWYgcHJlZGljYXRlKHBhdGgpXQogCiAgICAgZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZiwg
Z2l0X2NvbW1pdCwgY2hhbmdlZF9maWxlcz1Ob25lKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX21v
ZGlmaWVkX2ZpbGVzX21hdGNoaW5nX3ByZWRpY2F0ZShnaXRfY29tbWl0LCBzZWxmLl9pc19wYXRo
X3RvX2NoYW5nZWxvZywgY2hhbmdlZF9maWxlcz1jaGFuZ2VkX2ZpbGVzKQorICAgICAgICByZXR1
cm4gc2VsZi5fbW9kaWZpZWRfZmlsZXNfbWF0Y2hpbmdfcHJlZGljYXRlKGdpdF9jb21taXQsIHNl
bGYuaXNfcGF0aF90b19jaGFuZ2Vsb2csIGNoYW5nZWRfZmlsZXM9Y2hhbmdlZF9maWxlcykKIAog
ICAgIGRlZiBtb2RpZmllZF9ub25fY2hhbmdlbG9ncyhzZWxmLCBnaXRfY29tbWl0LCBjaGFuZ2Vk
X2ZpbGVzPU5vbmUpOgotICAgICAgICByZXR1cm4gc2VsZi5fbW9kaWZpZWRfZmlsZXNfbWF0Y2hp
bmdfcHJlZGljYXRlKGdpdF9jb21taXQsIGxhbWJkYSBwYXRoOiBub3Qgc2VsZi5faXNfcGF0aF90
b19jaGFuZ2Vsb2cocGF0aCksIGNoYW5nZWRfZmlsZXM9Y2hhbmdlZF9maWxlcykKKyAgICAgICAg
cmV0dXJuIHNlbGYuX21vZGlmaWVkX2ZpbGVzX21hdGNoaW5nX3ByZWRpY2F0ZShnaXRfY29tbWl0
LCBsYW1iZGEgcGF0aDogbm90IHNlbGYuaXNfcGF0aF90b19jaGFuZ2Vsb2cocGF0aCksIGNoYW5n
ZWRfZmlsZXM9Y2hhbmdlZF9maWxlcykKIAogICAgIGRlZiBjb21taXRfbWVzc2FnZV9mb3JfdGhp
c19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCwgY2hhbmdlZF9maWxlcz1Ob25lKToKICAgICAgICAg
Y2hhbmdlbG9nX3BhdGhzID0gc2VsZi5tb2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21taXQsIGNo
YW5nZWRfZmlsZXMpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9kaWZmX3BhcnNlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L2RpZmZfcGFyc2VyLnB5CmluZGV4IGE2ZWE3NTYwMjZkYzBkMDZlZDJkMTE2ZjYwNjI3
MTRiZDg3MTA1MzkuLjVhNTU0NmNkZTcyYTNhNzk0ZjRiYjM3NjUyM2QwNmFlOTg5NzQwN2MgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFy
c2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZf
cGFyc2VyLnB5CkBAIC0xMTgsNiArMTE4LDggQEAgY2xhc3MgRGlmZkZpbGUob2JqZWN0KToKICAg
ICAgICAgc2VsZi5saW5lcy5hcHBlbmQoKGRlbGV0ZWRfbGluZV9udW1iZXIsIG5ld19saW5lX251
bWJlciwgbGluZSkpCiAKIAorIyBJZiB0aGlzIGlzIGdvaW5nIHRvIGJlIGNhbGxlZCBEaWZmUGFy
c2VyLCBpdCBzaG91bGQgYmUgYSByZS11c2VhYmxlIHBhcnNlci4KKyMgT3RoZXJ3aXNlIHdlIHNo
b3VsZCByZW5hbWUgaXQgdG8gUGFyc2VkRGlmZiBvciBqdXN0IERpZmYuCiBjbGFzcyBEaWZmUGFy
c2VyKG9iamVjdCk6CiAgICAgIiIiQSBwYXJzZXIgZm9yIGEgcGF0Y2ggZmlsZS4KIApAQCAtMTI1
LDE2ICsxMjcsMTggQEAgY2xhc3MgRGlmZlBhcnNlcihvYmplY3QpOgogICAgIGEgRGlmZkZpbGUg
b2JqZWN0LgogICAgICIiIgogCi0gICAgIyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpcyB3YXkgdG9v
IGxvbmcgYW5kIG5lZWRzIHRvIGJlIGJyb2tlbiB1cC4KICAgICBkZWYgX19pbml0X18oc2VsZiwg
ZGlmZl9pbnB1dCk6CiAgICAgICAgICIiIlBhcnNlcyBhIGRpZmYuCiAKICAgICAgICAgQXJnczoK
ICAgICAgICAgICBkaWZmX2lucHV0OiBBbiBpdGVyYWJsZSBvYmplY3QuCiAgICAgICAgICIiIgot
ICAgICAgICBzdGF0ZSA9IF9JTklUSUFMX1NUQVRFCisgICAgICAgIHNlbGYuZmlsZXMgPSBzZWxm
Ll9wYXJzZV9pbnRvX2RpZmZfZmlsZXMoZGlmZl9pbnB1dCkKIAotICAgICAgICBzZWxmLmZpbGVz
ID0ge30KKyAgICAjIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIHdheSB0b28gbG9uZyBhbmQgbmVl
ZHMgdG8gYmUgYnJva2VuIHVwLgorICAgIGRlZiBfcGFyc2VfaW50b19kaWZmX2ZpbGVzKHNlbGYs
IGRpZmZfaW5wdXQpOgorICAgICAgICBmaWxlcyA9IHt9CisgICAgICAgIHN0YXRlID0gX0lOSVRJ
QUxfU1RBVEUKICAgICAgICAgY3VycmVudF9maWxlID0gTm9uZQogICAgICAgICBvbGRfZGlmZl9s
aW5lID0gTm9uZQogICAgICAgICBuZXdfZGlmZl9saW5lID0gTm9uZQpAQCAtMTQ4LDcgKzE1Miw3
IEBAIGNsYXNzIERpZmZQYXJzZXIob2JqZWN0KToKICAgICAgICAgICAgIGlmIGZpbGVfZGVjbGFy
YXRpb246CiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlX2RlY2xhcmF0aW9uLmdyb3Vw
KCdGaWxlUGF0aCcpCiAgICAgICAgICAgICAgICAgY3VycmVudF9maWxlID0gRGlmZkZpbGUoZmls
ZW5hbWUpCi0gICAgICAgICAgICAgICAgc2VsZi5maWxlc1tmaWxlbmFtZV0gPSBjdXJyZW50X2Zp
bGUKKyAgICAgICAgICAgICAgICBmaWxlc1tmaWxlbmFtZV0gPSBjdXJyZW50X2ZpbGUKICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IF9ERUNMQVJFRF9GSUxFX1BBVEgKICAgICAgICAgICAgICAgICBj
b250aW51ZQogCkBAIC0xNzksMyArMTgzLDQgQEAgY2xhc3MgRGlmZlBhcnNlcihvYmplY3QpOgog
ICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1Vu
ZXhwZWN0ZWQgZGlmZiBmb3JtYXQgd2hlbiBwYXJzaW5nIGEgJwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdjaHVuazogJXInICUgbGluZSkKKyAgICAgICAgcmV0dXJuIGZpbGVzCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHkKaW5k
ZXggMDIwZjMzOTc2ZGM4YTEwMWRkOTg2YmU0MGNlODg2NzI2ZDU2ODRlYS4uNzMyNDU4NjU4ZWZk
ZTVlYWU3NmYzMTRhMzQ3YzBjNTAyMDU1MzI4NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZC5weQpAQCAtOTIsNiArOTIsNyBAQCBjbGFzcyBM
YW5kKEFic3RyYWN0U2VxdWVuY2VkQ29tbWFuZCk6CiAgICAgYXJndW1lbnRfbmFtZXMgPSAiW0JV
R0lEXSIKICAgICBzaG93X2luX21haW5faGVscCA9IFRydWUKICAgICBzdGVwcyA9IFsKKyAgICAg
ICAgc3RlcHMuVmFsaWRhdGVDaGFuZ2VMb2dzLAogICAgICAgICBzdGVwcy5FbnN1cmVCdWlsZGVy
c0FyZUdyZWVuLAogICAgICAgICBzdGVwcy5VcGRhdGVDaGFuZ2VMb2dzV2l0aFJldmlld2VyLAog
ICAgICAgICBzdGVwcy5WYWxpZGF0ZVJldmlld2VyLApAQCAtMjU3LDYgKzI1OCw3IEBAIGNsYXNz
IEFic3RyYWN0UGF0Y2hMYW5kaW5nQ29tbWFuZChBYnN0cmFjdFBhdGNoU2VxdWVuY2luZ0NvbW1h
bmQpOgogICAgICAgICBzdGVwcy5DbGVhbldvcmtpbmdEaXJlY3RvcnksCiAgICAgICAgIHN0ZXBz
LlVwZGF0ZSwKICAgICAgICAgc3RlcHMuQXBwbHlQYXRjaCwKKyAgICAgICAgc3RlcHMuVmFsaWRh
dGVDaGFuZ2VMb2dzLAogICAgICAgICBzdGVwcy5WYWxpZGF0ZVJldmlld2VyLAogICAgICAgICBz
dGVwcy5CdWlsZCwKICAgICAgICAgc3RlcHMuUnVuVGVzdHMsCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWRfdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWRfdW5pdHRlc3QucHkKaW5k
ZXggMzc0OGE4ZjQxMzlmZjg5MzNkZDJhYTE1OTU3MjJiMDg0YjllYWU3NC4uYmEyM2FiOThmNTJl
YjljNWUzMGJlODA3YjI2NDU4MDZmZDhhOGU2NyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZF91bml0dGVzdC5weQpAQCAtMTA5
LDExICsxMDksMTEgQEAgY2xhc3MgRG93bmxvYWRDb21tYW5kc1Rlc3QoQ29tbWFuZHNUZXN0KToK
ICAgICBkZWYgdGVzdF9sYW5kX2RpZmYoc2VsZik6CiAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9
ICJCdWlsZGluZyBXZWJLaXRcblJ1bm5pbmcgUHl0aG9uIHVuaXQgdGVzdHNcblJ1bm5pbmcgUGVy
bCB1bml0IHRlc3RzXG5SdW5uaW5nIEphdmFTY3JpcHRDb3JlIHRlc3RzXG5SdW5uaW5nIHJ1bi13
ZWJraXQtdGVzdHNcbkNvbW1pdHRlZCByNDk4MjQ6IDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC80OTgyND5cblVwZGF0aW5nIGJ1ZyA0MlxuIgogICAgICAgICBtb2NrX3Rvb2wgPSBN
b2NrVG9vbCgpCi0gICAgICAgIG1vY2tfdG9vbC5zY20oKS5jcmVhdGVfcGF0Y2ggPSBNb2NrKCkK
KyAgICAgICAgbW9ja190b29sLnNjbSgpLmNyZWF0ZV9wYXRjaCA9IE1vY2socmV0dXJuX3ZhbHVl
PSJQYXRjaDFcbk1vY2tQYXRjaFxuIikKICAgICAgICAgbW9ja190b29sLmNoZWNrb3V0KCkubW9k
aWZpZWRfY2hhbmdlbG9ncyA9IE1vY2socmV0dXJuX3ZhbHVlPVtdKQogICAgICAgICBzZWxmLmFz
c2VydF9leGVjdXRlX291dHB1dHMoTGFuZCgpLCBbNDJdLCBvcHRpb25zPXNlbGYuX2RlZmF1bHRf
b3B0aW9ucygpLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyLCB0b29sPW1vY2tfdG9v
bCkKICAgICAgICAgIyBNYWtlIHN1cmUgd2UncmUgbm90IGNhbGxpbmcgZXhwZW5zaXZlIGNhbGxz
IHRvbyBvZnRlbi4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrX3Rvb2wuc2NtKCkuY3Jl
YXRlX3BhdGNoLmNhbGxfY291bnQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9ja190
b29sLnNjbSgpLmNyZWF0ZV9wYXRjaC5jYWxsX2NvdW50LCAxKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG1vY2tfdG9vbC5jaGVja291dCgpLm1vZGlmaWVkX2NoYW5nZWxvZ3MuY2FsbF9jb3Vu
dCwgMSkKIAogICAgIGRlZiB0ZXN0X2xhbmRfcmVkX2J1aWxkZXJzKHNlbGYpOgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKaW5kZXggZTEyYzhlMmU3
ZWNkMzcyYWFhYWQ2ZGFmNjI3NTMyM2ZiZDE1MTg4ZS4uNGUxZmQ5ODE5MWE0Y2EzN2FlZTNlMDdm
OTI1ZmUzZWU5ZTZlNDZkZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL3VwbG9hZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvdXBsb2FkLnB5CkBAIC0xOTYsNiArMTk2LDcgQEAgY2xhc3MgUG9zdChBYnN0cmFjdFBh
dGNoVXBsb2FkaW5nQ29tbWFuZCk6CiAgICAgaGVscF90ZXh0ID0gIkF0dGFjaCB0aGUgY3VycmVu
dCB3b3JraW5nIGRpcmVjdG9yeSBkaWZmIHRvIGEgYnVnIGFzIGEgcGF0Y2ggZmlsZSIKICAgICBh
cmd1bWVudF9uYW1lcyA9ICJbQlVHSURdIgogICAgIHN0ZXBzID0gWworICAgICAgICBzdGVwcy5W
YWxpZGF0ZUNoYW5nZUxvZ3MsCiAgICAgICAgIHN0ZXBzLkNoZWNrU3R5bGUsCiAgICAgICAgIHN0
ZXBzLkNvbmZpcm1EaWZmLAogICAgICAgICBzdGVwcy5PYnNvbGV0ZVBhdGNoZXMsCkBAIC0yMTQs
NiArMjE1LDcgQEAgY2xhc3MgTGFuZFNhZmVseShBYnN0cmFjdFBhdGNoVXBsb2FkaW5nQ29tbWFu
ZCk6CiAgICAgY29tbWl0IGJ5IHRoZSBjb21taXQtcXVldWUuIiIiCiAgICAgc2hvd19pbl9tYWlu
X2hlbHAgPSBUcnVlCiAgICAgc3RlcHMgPSBbCisgICAgICAgIHN0ZXBzLlZhbGlkYXRlQ2hhbmdl
TG9ncywKICAgICAgICAgc3RlcHMuVXBkYXRlQ2hhbmdlTG9nc1dpdGhSZXZpZXdlciwKICAgICAg
ICAgc3RlcHMuT2Jzb2xldGVQYXRjaGVzLAogICAgICAgICBzdGVwcy5Qb3N0RGlmZkZvckNvbW1p
dCwKQEAgLTI0MSw2ICsyNDMsNyBAQCBjbGFzcyBVcGxvYWQoQWJzdHJhY3RQYXRjaFVwbG9hZGlu
Z0NvbW1hbmQpOgogICAgIGFyZ3VtZW50X25hbWVzID0gIltCVUdJRF0iCiAgICAgc2hvd19pbl9t
YWluX2hlbHAgPSBUcnVlCiAgICAgc3RlcHMgPSBbCisgICAgICAgIHN0ZXBzLlZhbGlkYXRlQ2hh
bmdlTG9ncywKICAgICAgICAgc3RlcHMuQ2hlY2tTdHlsZSwKICAgICAgICAgc3RlcHMuUHJvbXB0
Rm9yQnVnT3JUaXRsZSwKICAgICAgICAgc3RlcHMuQ3JlYXRlQnVnLApkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5CmluZGV4IDY0ZDlkMDU5YmRhNzFkYjlj
ZGQ4OTI4YTEyM2YyY2YzYjAwMTBmZDcuLmY0MjZmMTc3ZDViNmNjZDdkY2VkZDk3NWJjM2M1ZmU3
NWRmMzRmY2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9f
X2luaXRfXy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0
X18ucHkKQEAgLTU2LDQgKzU2LDUgQEAgZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnJ1bnRlc3Rz
IGltcG9ydCBSdW5UZXN0cwogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnN1Z2dlc3RyZXZpZXdl
cnMgaW1wb3J0IFN1Z2dlc3RSZXZpZXdlcnMKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy51cGRh
dGVjaGFuZ2Vsb2dzd2l0aHJldmlld2VyIGltcG9ydCBVcGRhdGVDaGFuZ2VMb2dzV2l0aFJldmll
d2VyCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMudXBkYXRlIGltcG9ydCBVcGRhdGUKK2Zyb20g
d2Via2l0cHkudG9vbC5zdGVwcy52YWxpZGF0ZWNoYW5nZWxvZ3MgaW1wb3J0IFZhbGlkYXRlQ2hh
bmdlTG9ncwogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnZhbGlkYXRlcmV2aWV3ZXIgaW1wb3J0
IFZhbGlkYXRlUmV2aWV3ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvYWJzdHJhY3RzdGVwLnB5CmluZGV4IDU1MjVlYTA4YjU2ODFkODFkODVjMGZiNTQzNDIyM2Jk
MDJmMDE2MzAuLjFjOTNkNWI5ZjdkMGUzYmQzMzFjNTEwYTBmMjRjZTdmZDljYWM1YjkgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weQpA
QCAtNTIsNiArNTIsNyBAQCBjbGFzcyBBYnN0cmFjdFN0ZXAob2JqZWN0KToKICAgICAgICAgImJ1
Z190aXRsZSI6IGxhbWJkYSBzZWxmLCBzdGF0ZTogc2VsZi5fdG9vbC5idWdzLmZldGNoX2J1Zyhz
dGF0ZVsiYnVnX2lkIl0pLnRpdGxlKCksCiAgICAgICAgICJjaGFuZ2VkX2ZpbGVzIjogbGFtYmRh
IHNlbGYsIHN0YXRlOiBzZWxmLl90b29sLnNjbSgpLmNoYW5nZWRfZmlsZXMoc2VsZi5fb3B0aW9u
cy5naXRfY29tbWl0KSwKICAgICAgICAgImRpZmYiOiBsYW1iZGEgc2VsZiwgc3RhdGU6IHNlbGYu
X3Rvb2wuc2NtKCkuY3JlYXRlX3BhdGNoKHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCwgY2hhbmdl
ZF9maWxlcz1zZWxmLl9jaGFuZ2VkX2ZpbGVzKHN0YXRlKSksCisgICAgICAgICMgQWJzb2x1dGUg
cGF0aCB0byBDaGFuZ2VMb2cgZmlsZXMuCiAgICAgICAgICJjaGFuZ2Vsb2dzIjogbGFtYmRhIHNl
bGYsIHN0YXRlOiBzZWxmLl90b29sLmNoZWNrb3V0KCkubW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxm
Ll9vcHRpb25zLmdpdF9jb21taXQsIGNoYW5nZWRfZmlsZXM9c2VsZi5fY2hhbmdlZF9maWxlcyhz
dGF0ZSkpLAogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL2NsZWFud29ya2luZ2RpcmVjdG9yeS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9jbGVhbndvcmtpbmdkaXJlY3RvcnkucHkKaW5kZXggOWMxNjI0MmVhYTRkZjdh
Yzc3Nzk4OWUwNjU4OTM3MWI2ZjNjMDEzNC4uYTE2NWRkMjFmOThkMDg5MTQ2YWFiYWE5M2IwMDY4
ZmRkZGFlZGY0OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L2NsZWFud29ya2luZ2RpcmVjdG9yeS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvY2xlYW53b3JraW5nZGlyZWN0b3J5LnB5CkBAIC00Nyw3ICs0Nyw5IEBAIGNsYXNz
IENsZWFuV29ya2luZ0RpcmVjdG9yeShBYnN0cmFjdFN0ZXApOgogICAgIGRlZiBydW4oc2VsZiwg
c3RhdGUpOgogICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5jbGVhbjoKICAgICAgICAgICAg
IHJldHVybgotICAgICAgICAjIEZJWE1FOiBUaGlzIGNoZGlyIHNob3VsZCBub3QgYmUgbmVjZXNz
YXJ5LgorICAgICAgICAjIEZJWE1FOiBUaGlzIGNoZGlyIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5
IGFuZCBjYW4gYmUgcmVtb3ZlZCBhcworICAgICAgICAjIHNvb24gYXMgZW5zdXJlX25vX2xvY2Fs
X2NvbW1pdHMgYW5kIGVuc3VyZV9jbGVhbl93b3JraW5nX2RpcmVjdG9yeQorICAgICAgICAjIGFy
ZSBrbm93biB0byBzZXQgdGhlIENXRCB0byBjaGVja291dF9yb290IHdoZW4gY2FsbGluZyBydW5f
Y29tbWFuZC4KICAgICAgICAgb3MuY2hkaXIoc2VsZi5fdG9vbC5zY20oKS5jaGVja291dF9yb290
KQogICAgICAgICBpZiBub3Qgc2VsZi5fYWxsb3dfbG9jYWxfY29tbWl0czoKICAgICAgICAgICAg
IHNlbGYuX3Rvb2wuc2NtKCkuZW5zdXJlX25vX2xvY2FsX2NvbW1pdHMoc2VsZi5fb3B0aW9ucy5m
b3JjZV9jbGVhbikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9jb21taXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5
CmluZGV4IDVhYTZiNTFkZTk1MDMyMTU4OTVlNDJiOGQ0MDU5ZWJjY2JhOWFjMGMuLjg1OWFjYmY4
YzI1OGIyZWRiMDU0YTBhYTZhYmE4NDhiZDkzYzFlMjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jb21taXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL2NvbW1pdC5weQpAQCAtMzYsMTIgKzM2LDYgQEAgZnJvbSB3ZWJraXRw
eS50b29sLnN0ZXBzLm9wdGlvbnMgaW1wb3J0IE9wdGlvbnMKIAogCiBjbGFzcyBDb21taXQoQWJz
dHJhY3RTdGVwKToKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgb3B0aW9ucyhjbHMpOgotICAg
ICAgICByZXR1cm4gQWJzdHJhY3RTdGVwLm9wdGlvbnMoKSArIFsKLSAgICAgICAgICAgIE9wdGlv
bnMuZ2l0X2NvbW1pdCwKLSAgICAgICAgXQotCiAgICAgZGVmIF9jb21taXRfd2FybmluZyhzZWxm
LCBlcnJvcik6CiAgICAgICAgIHdvcmtpbmdfZGlyZWN0b3J5X21lc3NhZ2UgPSAiIiBpZiBlcnJv
ci53b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbiBlbHNlICIgYW5kIHdvcmtpbmcgY29weSBjaGFu
Z2VzIgogICAgICAgICByZXR1cm4gKCdUaGVyZSBhcmUgJXMgbG9jYWwgY29tbWl0cyVzLiBFdmVy
eXRoaW5nIHdpbGwgYmUgY29tbWl0dGVkIGFzIGEgc2luZ2xlIGNvbW1pdC4gJwpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlY2hhbmdlbG9ncy5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZWNoYW5nZWxvZ3Mu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTgxMmY5NGExOTNiYmUxN2JiN2JiYmJlMzEyN2Y1YjIxOWYxM2JhNAot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxp
ZGF0ZWNoYW5nZWxvZ3MucHkKQEAgLTAsMCArMSw1OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAg
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
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zy
b20gd2Via2l0cHkudG9vbC5zdGVwcy5hYnN0cmFjdHN0ZXAgaW1wb3J0IEFic3RyYWN0U3RlcAor
ZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLm9wdGlvbnMgaW1wb3J0IE9wdGlvbnMKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLmNoZWNrb3V0LmRpZmZfcGFyc2VyIGltcG9ydCBEaWZmUGFyc2VyCitmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGltcG9ydCBlcnJvciwg
bG9nCisKKworIyBUaGlzIGlzIGNsb3NlbHkgcmVsYXRlZCB0byB0aGUgVmFsaWRhdGVSZXZpZXdl
ciBzdGVwIGFuZCB0aGUgQ29tbWl0dGVyVmFsaWRhdG9yIGNsYXNzLgorIyBXZSBtYXkgd2FudCB0
byB1bmlmeSBtb3JlIG9mIHRoaXMgY29kZSBpbiBvbmUgcGxhY2UuCitjbGFzcyBWYWxpZGF0ZUNo
YW5nZUxvZ3MoQWJzdHJhY3RTdGVwKToKKyAgICBkZWYgX2NoZWNrX2NoYW5nZWxvZ19kaWZmKHNl
bGYsIGRpZmZfZmlsZSk6CisgICAgICAgIGlmIG5vdCBzZWxmLl90b29sLmNoZWNrb3V0KCkuaXNf
cGF0aF90b19jaGFuZ2Vsb2coZGlmZl9maWxlLmZpbGVuYW1lKToKKyAgICAgICAgICAgIHJldHVy
biBUcnVlCisgICAgICAgICMgRWFjaCBsaW5lIGlzIGEgdHVwbGUsIHRoZSBmaXJzdCB2YWx1ZSBp
cyB0aGUgZGVsZXRlZCBsaW5lIG51bWJlcgorICAgICAgICAjIERhdGUsIHJldmlld2VyLCBidWcg
dGl0bGUsIGJ1ZyB1cmwsIGFuZCBlbXB0eSBsaW5lcyBjb3VsZCBhbGwgYmUKKyAgICAgICAgIyBp
ZGVudGljYWwgaW4gdGhlIG1vc3QgcmVjZW50IGVudHJpZXMuICBJZiB0aGUgZGlmZiBzdGFydHMg
YW55CisgICAgICAgICMgbGF0ZXIgdGhhbiB0aGF0LCBhc3N1bWUgdGhhdCB0aGUgZW50cnkgaXMg
d3JvbmcuCisgICAgICAgIGlmIGRpZmZfZmlsZS5saW5lc1swXVswXSA8IDg6CisgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQorICAgICAgICBsb2coIlRoZSBkaWZmIHRvICVzIGxvb2tzIHdyb25nLiAg
QXJlIHlvdSBzdXJlIHlvdXIgQ2hhbmdlTG9nIGVudHJ5IGlzIGF0IHRoZSB0b3Agb2YgdGhlIGZp
bGU/IiAlIChkaWZmX2ZpbGUuZmlsZW5hbWUpKQorICAgICAgICAjIEZJWE1FOiBEbyB3ZSBuZWVk
IHRvIG1ha2UgdGhlIGZpbGUgcGF0aCBhYnNvbHV0ZT8KKyAgICAgICAgc2VsZi5fdG9vbC5zY20o
KS5kaWZmX2Zvcl9maWxlKGRpZmZfZmlsZS5maWxlbmFtZSkKKyAgICAgICAgaWYgc2VsZi5fdG9v
bC51c2VyLmNvbmZpcm0oIk9LIHRvIGNvbnRpbnVlPyIsIGRlZmF1bHQ9J24nKToKKyAgICAgICAg
ICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIHJ1bihzZWxm
LCBzdGF0ZSk6CisgICAgICAgIHBhcnNlZF9kaWZmID0gRGlmZlBhcnNlcihzZWxmLmNhY2hlZF9s
b29rdXAoc3RhdGUsICJkaWZmIikuc3BsaXRsaW5lcygpKQorICAgICAgICBmb3IgZmlsZW5hbWUs
IGRpZmZfZmlsZSBpbiBwYXJzZWRfZGlmZi5maWxlcy5pdGVtcygpOgorICAgICAgICAgICAgaWYg
bm90IHNlbGYuX2NoZWNrX2NoYW5nZWxvZ19kaWZmKGRpZmZfZmlsZSk6CisgICAgICAgICAgICAg
ICAgZXJyb3IoIkNoYW5nZUxvZyBlbnRyeSBpbiAlcyBpcyBub3QgYXQgdGhlIHRvcCBvZiB0aGUg
ZmlsZS4iICUgZGlmZl9maWxlLmZpbGVuYW1lKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlY2hhbmdlbG9nc191bml0dGVzdC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZWNoYW5nZWxvZ3NfdW5pdHRlc3Qu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjZkYjc5MzcxMjRmNTNlMDYzMzY3OGZiYTU5MGVhNWI4OTEzMTRmZgot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxp
ZGF0ZWNoYW5nZWxvZ3NfdW5pdHRlc3QucHkKQEAgLTAsMCArMSw1NSBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0
cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQorZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5
Lm1vY2sgaW1wb3J0IE1vY2sKK2Zyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9j
a09wdGlvbnMsIE1vY2tUb29sCitmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMudmFsaWRhdGVjaGFu
Z2Vsb2dzIGltcG9ydCBWYWxpZGF0ZUNoYW5nZUxvZ3MKKworCitjbGFzcyBWYWxpZGF0ZUNoYW5n
ZUxvZ3NUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBfYXNzZXJ0X3N0YXJ0X2xp
bmVfcHJvZHVjZXNfb3V0cHV0KHNlbGYsIHN0YXJ0X2xpbmUsIHNob3VsZF9wcm9tcHRfdXNlcj1G
YWxzZSk6CisgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCisgICAgICAgIHRvb2wuX2NoZWNrb3V0
LmlzX3BhdGhfdG9fY2hhbmdlbG9nID0gbGFtYmRhIHBhdGg6IFRydWUKKyAgICAgICAgc3RlcCA9
IFZhbGlkYXRlQ2hhbmdlTG9ncyh0b29sLCBNb2NrT3B0aW9ucyhnaXRfY29tbWl0PU5vbmUpKQor
ICAgICAgICBkaWZmX2ZpbGUgPSBNb2NrKCkKKyAgICAgICAgZGlmZl9maWxlLmZpbGVuYW1lID0g
Im1vY2svQ2hhbmdlTG9nIgorICAgICAgICBkaWZmX2ZpbGUubGluZXMgPSBbKHN0YXJ0X2xpbmUs
IHN0YXJ0X2xpbmUsICJmb28iKV0KKyAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gZXhwZWN0ZWRf
c3RkZXJyID0gIiIKKyAgICAgICAgaWYgc2hvdWxkX3Byb21wdF91c2VyOgorICAgICAgICAgICAg
ZXhwZWN0ZWRfc3Rkb3V0ID0gIk9LIHRvIGNvbnRpbnVlP1xuIgorICAgICAgICAgICAgZXhwZWN0
ZWRfc3RkZXJyID0gIlRoZSBkaWZmIHRvIG1vY2svQ2hhbmdlTG9nIGxvb2tzIHdyb25nLiAgQXJl
IHlvdSBzdXJlIHlvdXIgQ2hhbmdlTG9nIGVudHJ5IGlzIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGU/
XG4iCisgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBzdGVwLl9j
aGVja19jaGFuZ2Vsb2dfZGlmZiwgW2RpZmZfZmlsZV0sIGV4cGVjdGVkX3N0ZG91dD1leHBlY3Rl
ZF9zdGRvdXQsIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCisKKyAgICBkZWYgdGVz
dF9jaGVja19jaGFuZ2Vsb2dfZGlmZihzZWxmKToKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3N0YXJ0
X2xpbmVfcHJvZHVjZXNfb3V0cHV0KDEsIHNob3VsZF9wcm9tcHRfdXNlcj1GYWxzZSkKKyAgICAg
ICAgc2VsZi5fYXNzZXJ0X3N0YXJ0X2xpbmVfcHJvZHVjZXNfb3V0cHV0KDcsIHNob3VsZF9wcm9t
cHRfdXNlcj1GYWxzZSkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3N0YXJ0X2xpbmVfcHJvZHVjZXNf
b3V0cHV0KDgsIHNob3VsZF9wcm9tcHRfdXNlcj1UcnVlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlcmV2aWV3ZXIucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weQppbmRleCBiZGY3Mjll
NGJmZTJkMDQ0M2I1NzkxODhkNTk2OTJjYzA2NjY0MWQ3Li5jMmEyN2I5ODM2YzZhY2UyOTQyNDJk
NzEwNzExNDI4NTg4NmMyMzQ0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weQpAQCAtMzcsMTIgKzM3LDYgQEAgZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgZXJyb3IsIGxv
ZwogCiAjIEZJWE1FOiBTb21lIG9mIHRoaXMgbG9naWMgc2hvdWxkIHByb2JhYmx5IGJlIHVuaWZp
ZWQgd2l0aCBDb21taXR0ZXJWYWxpZGF0b3I/CiBjbGFzcyBWYWxpZGF0ZVJldmlld2VyKEFic3Ry
YWN0U3RlcCk6Ci0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIG9wdGlvbnMoY2xzKToKLSAgICAg
ICAgcmV0dXJuIEFic3RyYWN0U3RlcC5vcHRpb25zKCkgKyBbCi0gICAgICAgICAgICBPcHRpb25z
LmdpdF9jb21taXQsCi0gICAgICAgIF0KLQogICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHByb2Jh
Ymx5IG1vdmUgb250byBDaGFuZ2VMb2dFbnRyeQogICAgIGRlZiBfaGFzX3ZhbGlkX3Jldmlld2Vy
KHNlbGYsIGNoYW5nZWxvZ19lbnRyeSk6CiAgICAgICAgIGlmIGNoYW5nZWxvZ19lbnRyeS5yZXZp
ZXdlcigpOgpAQCAtNTgsOSArNTIsNiBAQCBjbGFzcyBWYWxpZGF0ZVJldmlld2VyKEFic3RyYWN0
U3RlcCk6CiAgICAgICAgICMgdGhpcyBjaGVjayBpcyB0b28gZHJhY29uaWFuIChhbmQgdG9vIHBv
b3JseSB0ZXN0ZWQpIHRvIGZvaXN0IHVwb24gdXNlcnMuCiAgICAgICAgIGlmIG5vdCBzZWxmLl9v
cHRpb25zLm5vbl9pbnRlcmFjdGl2ZToKICAgICAgICAgICAgIHJldHVybgotICAgICAgICAjIEZJ
WE1FOiBXZSBzaG91bGQgZmlndXJlIG91dCBob3cgdG8gaGFuZGxlIHRoZSBjdXJyZW50IHdvcmtp
bmcKLSAgICAgICAgIyAgICAgICAgZGlyZWN0b3J5IGlzc3VlIG1vcmUgZ2xvYmFsbHkuCi0gICAg
ICAgIG9zLmNoZGlyKHNlbGYuX3Rvb2wuc2NtKCkuY2hlY2tvdXRfcm9vdCkKICAgICAgICAgZm9y
IGNoYW5nZWxvZ19wYXRoIGluIHNlbGYuY2FjaGVkX2xvb2t1cChzdGF0ZSwgImNoYW5nZWxvZ3Mi
KToKICAgICAgICAgICAgIGNoYW5nZWxvZ19lbnRyeSA9IENoYW5nZUxvZyhjaGFuZ2Vsb2dfcGF0
aCkubGF0ZXN0X2VudHJ5KCkKICAgICAgICAgICAgIGlmIHNlbGYuX2hhc192YWxpZF9yZXZpZXdl
cihjaGFuZ2Vsb2dfZW50cnkpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77418</attachid>
            <date>2010-12-24 09:30:10 -0800</date>
            <delta_ts>2010-12-24 10:22:19 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-28291-20101224113008.patch</filename>
            <type>text/plain</type>
            <size>22116</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ODYx
ZGMwZjE1MWZmN2QxZTE0ZDZlYmYwZWI0Y2Q4MjVlYmRiNjY5Li4yZDQ3ZDA4MWI0YzI2YWY0OTg2
ZjMxNDJmMDBlYzcyYmZhODIwMGJjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMTItMjMgIEVyaWMgU2VpZGVs
ICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisK
KyAgICAgICAgd2Via2l0LXBhdGNoIChvciBhIHByZS1jb21taXQgaG9vaykgbmVlZHMgdG8gcHJl
dmVudCBiYWQgQ2hhbmdlTG9nIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI4MjkxCisKKyAgICAgICAgVGhpcyBpcyBhIHN0YXJ0LiAgQXQg
bGVhc3Qgbm93IHdlYmtpdC1wYXRjaCB3aWxsIHByb21wdCB3aGVuIHlvdXIgQ2hhbmdlTG9nIGxv
b2tzIHF1ZXN0aW9uYWJsZS4KKyAgICAgICAgV2UgY291bGQgZG8gbW9yZSBhZHZhbmNlZCB0aGlu
Z3MsIGxpa2UgcGFyc2luZyB0aGUgQ2hhbmdlTG9nICh3aXRoIGNoYW5nZWxvZy5weSkgYW5kIGNv
bXBhcmluZyB0aGF0CisgICAgICAgIHRvIHN0cmluZ3Mgd2l0aCBmaW5kIGluIHRoZSBkaWZmLgor
ICAgICAgICBTaW5jZSBub24taW50ZXJhY3RpdmUgYWx3YXlzIHJldHVybnMgdGhlIGRlZmF1bHQs
IHRoaXMgc2hvdWxkIGNhdXNlIHBhdGNoZXMgd2l0aCBiYWQgY2hhbmdlbG9ncyB0byBmYWlsIG9u
IHRoZSBjb21taXQtcXVldWUuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9hcGkucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvZGlmZl9wYXJzZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L2Fic3RyYWN0c3RlcC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
Y2xlYW53b3JraW5nZGlyZWN0b3J5LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy92YWxpZGF0ZWNoYW5nZWxvZ3MucHk6IENvcGllZCBmcm9tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmlld2VyLnB5LgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZWNoYW5nZWxvZ3NfdW5pdHRlc3QucHk6IENv
cGllZCBmcm9tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jbGVhbndvcmtpbmdk
aXJlY3RvcnkucHkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlk
YXRlcmV2aWV3ZXIucHk6CisKIDIwMTAtMTItMjMgIEx1Y2FzIEZvcnNjaGxlciAgPGxmb3JzY2hs
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpLnB5CmluZGV4IDYzNTc5ODI4
NzQyNGI2MzQxZWE3MDJjZmYyYzBkNTJlMzgzNjQ5ZGUuLjI5ZTQzZDNkNWM3ZTMzMWFkNzVkZGQw
ODhiZTAwNWQ2MjFmM2IxMTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NoZWNrb3V0L2FwaS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9hcGkucHkKQEAgLTM5LDE0ICszOSwxNCBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIHJ1bl9jb21tYW5kLCBTY3JpcHRFcnJv
cgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQg
bG9nCiAKIAotIyBUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIFdlYktpdC1zcGVjaWZpYyBwYXJ0
cyBvZiB0aGUgY2hlY2tvdXQgKGxpa2UKLSMgQ2hhbmdlTG9ncykuCisjIFRoaXMgY2xhc3MgcmVw
cmVzZW50cyB0aGUgV2ViS2l0LXNwZWNpZmljIHBhcnRzIG9mIHRoZSBjaGVja291dCAobGlrZSBD
aGFuZ2VMb2dzKS4KICMgRklYTUU6IE1vdmUgYSBidW5jaCBvZiBDaGFuZ2VMb2ctc3BlY2lmaWMg
cHJvY2Vzc2luZyBmcm9tIFNDTSB0byB0aGlzIG9iamVjdC4KKyMgTk9URTogQWxsIHBhdGhzIHJl
dHVybmVkIGZyb20gdGhpcyBjbGFzcyBzaG91bGQgYmUgYWJzb2x1dGUuCiBjbGFzcyBDaGVja291
dChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzY20pOgogICAgICAgICBzZWxmLl9z
Y20gPSBzY20KIAotICAgIGRlZiBfaXNfcGF0aF90b19jaGFuZ2Vsb2coc2VsZiwgcGF0aCk6Cisg
ICAgZGVmIGlzX3BhdGhfdG9fY2hhbmdlbG9nKHNlbGYsIHBhdGgpOgogICAgICAgICByZXR1cm4g
b3MucGF0aC5iYXNlbmFtZShwYXRoKSA9PSAiQ2hhbmdlTG9nIgogCiAgICAgZGVmIF9sYXRlc3Rf
ZW50cnlfZm9yX2NoYW5nZWxvZ19hdF9yZXZpc2lvbihzZWxmLCBjaGFuZ2Vsb2dfcGF0aCwgcmV2
aXNpb24pOgpAQCAtNTksNyArNTksNyBAQCBjbGFzcyBDaGVja291dChvYmplY3QpOgogCiAgICAg
ZGVmIGNoYW5nZWxvZ19lbnRyaWVzX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6CiAgICAg
ICAgIGNoYW5nZWRfZmlsZXMgPSBzZWxmLl9zY20uY2hhbmdlZF9maWxlc19mb3JfcmV2aXNpb24o
cmV2aXNpb24pCi0gICAgICAgIHJldHVybiBbc2VsZi5fbGF0ZXN0X2VudHJ5X2Zvcl9jaGFuZ2Vs
b2dfYXRfcmV2aXNpb24ocGF0aCwgcmV2aXNpb24pIGZvciBwYXRoIGluIGNoYW5nZWRfZmlsZXMg
aWYgc2VsZi5faXNfcGF0aF90b19jaGFuZ2Vsb2cocGF0aCldCisgICAgICAgIHJldHVybiBbc2Vs
Zi5fbGF0ZXN0X2VudHJ5X2Zvcl9jaGFuZ2Vsb2dfYXRfcmV2aXNpb24ocGF0aCwgcmV2aXNpb24p
IGZvciBwYXRoIGluIGNoYW5nZWRfZmlsZXMgaWYgc2VsZi5pc19wYXRoX3RvX2NoYW5nZWxvZyhw
YXRoKV0KIAogICAgIEBtZW1vaXplZAogICAgIGRlZiBjb21taXRfaW5mb19mb3JfcmV2aXNpb24o
c2VsZiwgcmV2aXNpb24pOgpAQCAtOTYsMTAgKzk2LDEwIEBAIGNsYXNzIENoZWNrb3V0KG9iamVj
dCk6CiAgICAgICAgIHJldHVybiBbcGF0aCBmb3IgcGF0aCBpbiBhYnNvbHV0ZV9wYXRocyBpZiBw
cmVkaWNhdGUocGF0aCldCiAKICAgICBkZWYgbW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmLCBnaXRf
Y29tbWl0LCBjaGFuZ2VkX2ZpbGVzPU5vbmUpOgotICAgICAgICByZXR1cm4gc2VsZi5fbW9kaWZp
ZWRfZmlsZXNfbWF0Y2hpbmdfcHJlZGljYXRlKGdpdF9jb21taXQsIHNlbGYuX2lzX3BhdGhfdG9f
Y2hhbmdlbG9nLCBjaGFuZ2VkX2ZpbGVzPWNoYW5nZWRfZmlsZXMpCisgICAgICAgIHJldHVybiBz
ZWxmLl9tb2RpZmllZF9maWxlc19tYXRjaGluZ19wcmVkaWNhdGUoZ2l0X2NvbW1pdCwgc2VsZi5p
c19wYXRoX3RvX2NoYW5nZWxvZywgY2hhbmdlZF9maWxlcz1jaGFuZ2VkX2ZpbGVzKQogCiAgICAg
ZGVmIG1vZGlmaWVkX25vbl9jaGFuZ2Vsb2dzKHNlbGYsIGdpdF9jb21taXQsIGNoYW5nZWRfZmls
ZXM9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9tb2RpZmllZF9maWxlc19tYXRjaGluZ19w
cmVkaWNhdGUoZ2l0X2NvbW1pdCwgbGFtYmRhIHBhdGg6IG5vdCBzZWxmLl9pc19wYXRoX3RvX2No
YW5nZWxvZyhwYXRoKSwgY2hhbmdlZF9maWxlcz1jaGFuZ2VkX2ZpbGVzKQorICAgICAgICByZXR1
cm4gc2VsZi5fbW9kaWZpZWRfZmlsZXNfbWF0Y2hpbmdfcHJlZGljYXRlKGdpdF9jb21taXQsIGxh
bWJkYSBwYXRoOiBub3Qgc2VsZi5pc19wYXRoX3RvX2NoYW5nZWxvZyhwYXRoKSwgY2hhbmdlZF9m
aWxlcz1jaGFuZ2VkX2ZpbGVzKQogCiAgICAgZGVmIGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2Nv
bW1pdChzZWxmLCBnaXRfY29tbWl0LCBjaGFuZ2VkX2ZpbGVzPU5vbmUpOgogICAgICAgICBjaGFu
Z2Vsb2dfcGF0aHMgPSBzZWxmLm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdCwgY2hhbmdl
ZF9maWxlcykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L2RpZmZfcGFyc2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvZGlmZl9wYXJzZXIucHkKaW5kZXggYTZlYTc1NjAyNmRjMGQwNmVkMmQxMTZmNjA2MjcxNGJk
ODcxMDUzOS4uNWE1NTQ2Y2RlNzJhM2E3OTRmNGJiMzc2NTIzZDA2YWU5ODk3NDA3YyAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvZGlmZl9wYXJzZXIu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvZGlmZl9wYXJz
ZXIucHkKQEAgLTExOCw2ICsxMTgsOCBAQCBjbGFzcyBEaWZmRmlsZShvYmplY3QpOgogICAgICAg
ICBzZWxmLmxpbmVzLmFwcGVuZCgoZGVsZXRlZF9saW5lX251bWJlciwgbmV3X2xpbmVfbnVtYmVy
LCBsaW5lKSkKIAogCisjIElmIHRoaXMgaXMgZ29pbmcgdG8gYmUgY2FsbGVkIERpZmZQYXJzZXIs
IGl0IHNob3VsZCBiZSBhIHJlLXVzZWFibGUgcGFyc2VyLgorIyBPdGhlcndpc2Ugd2Ugc2hvdWxk
IHJlbmFtZSBpdCB0byBQYXJzZWREaWZmIG9yIGp1c3QgRGlmZi4KIGNsYXNzIERpZmZQYXJzZXIo
b2JqZWN0KToKICAgICAiIiJBIHBhcnNlciBmb3IgYSBwYXRjaCBmaWxlLgogCkBAIC0xMjUsMTYg
KzEyNywxOCBAQCBjbGFzcyBEaWZmUGFyc2VyKG9iamVjdCk6CiAgICAgYSBEaWZmRmlsZSBvYmpl
Y3QuCiAgICAgIiIiCiAKLSAgICAjIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIHdheSB0b28gbG9u
ZyBhbmQgbmVlZHMgdG8gYmUgYnJva2VuIHVwLgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkaWZm
X2lucHV0KToKICAgICAgICAgIiIiUGFyc2VzIGEgZGlmZi4KIAogICAgICAgICBBcmdzOgogICAg
ICAgICAgIGRpZmZfaW5wdXQ6IEFuIGl0ZXJhYmxlIG9iamVjdC4KICAgICAgICAgIiIiCi0gICAg
ICAgIHN0YXRlID0gX0lOSVRJQUxfU1RBVEUKKyAgICAgICAgc2VsZi5maWxlcyA9IHNlbGYuX3Bh
cnNlX2ludG9fZGlmZl9maWxlcyhkaWZmX2lucHV0KQogCi0gICAgICAgIHNlbGYuZmlsZXMgPSB7
fQorICAgICMgRklYTUU6IFRoaXMgZnVuY3Rpb24gaXMgd2F5IHRvbyBsb25nIGFuZCBuZWVkcyB0
byBiZSBicm9rZW4gdXAuCisgICAgZGVmIF9wYXJzZV9pbnRvX2RpZmZfZmlsZXMoc2VsZiwgZGlm
Zl9pbnB1dCk6CisgICAgICAgIGZpbGVzID0ge30KKyAgICAgICAgc3RhdGUgPSBfSU5JVElBTF9T
VEFURQogICAgICAgICBjdXJyZW50X2ZpbGUgPSBOb25lCiAgICAgICAgIG9sZF9kaWZmX2xpbmUg
PSBOb25lCiAgICAgICAgIG5ld19kaWZmX2xpbmUgPSBOb25lCkBAIC0xNDgsNyArMTUyLDcgQEAg
Y2xhc3MgRGlmZlBhcnNlcihvYmplY3QpOgogICAgICAgICAgICAgaWYgZmlsZV9kZWNsYXJhdGlv
bjoKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVfZGVjbGFyYXRpb24uZ3JvdXAoJ0Zp
bGVQYXRoJykKICAgICAgICAgICAgICAgICBjdXJyZW50X2ZpbGUgPSBEaWZmRmlsZShmaWxlbmFt
ZSkKLSAgICAgICAgICAgICAgICBzZWxmLmZpbGVzW2ZpbGVuYW1lXSA9IGN1cnJlbnRfZmlsZQor
ICAgICAgICAgICAgICAgIGZpbGVzW2ZpbGVuYW1lXSA9IGN1cnJlbnRfZmlsZQogICAgICAgICAg
ICAgICAgIHN0YXRlID0gX0RFQ0xBUkVEX0ZJTEVfUEFUSAogICAgICAgICAgICAgICAgIGNvbnRp
bnVlCiAKQEAgLTE3OSwzICsxODMsNCBAQCBjbGFzcyBEaWZmUGFyc2VyKG9iamVjdCk6CiAgICAg
ICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignVW5leHBl
Y3RlZCBkaWZmIGZvcm1hdCB3aGVuIHBhcnNpbmcgYSAnCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2NodW5rOiAlcicgJSBsaW5lKQorICAgICAgICByZXR1cm4gZmlsZXMKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZC5weQppbmRleCAw
MjBmMzM5NzZkYzhhMTAxZGQ5ODZiZTQwY2U4ODY3MjZkNTY4NGVhLi4xYjQ3OGJmZmFiYTY0OWVj
ZmQwYmE3MTdkNzkyNDczMmJhMTkzZjg1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5CkBAIC05NSw2ICs5NSw3IEBAIGNsYXNzIExhbmQo
QWJzdHJhY3RTZXF1ZW5jZWRDb21tYW5kKToKICAgICAgICAgc3RlcHMuRW5zdXJlQnVpbGRlcnNB
cmVHcmVlbiwKICAgICAgICAgc3RlcHMuVXBkYXRlQ2hhbmdlTG9nc1dpdGhSZXZpZXdlciwKICAg
ICAgICAgc3RlcHMuVmFsaWRhdGVSZXZpZXdlciwKKyAgICAgICAgc3RlcHMuVmFsaWRhdGVDaGFu
Z2VMb2dzLCAjIFdlIGRvIHRoaXMgYWZ0ZXIgVXBkYXRlQ2hhbmdlTG9nc1dpdGhSZXZpZXdlciB0
byBhdm9pZCBub3QgaGF2aW5nIHRvIGNhY2hlIHRoZSBkaWZmIHR3aWNlLgogICAgICAgICBzdGVw
cy5CdWlsZCwKICAgICAgICAgc3RlcHMuUnVuVGVzdHMsCiAgICAgICAgIHN0ZXBzLkNvbW1pdCwK
QEAgLTI1Nyw2ICsyNTgsNyBAQCBjbGFzcyBBYnN0cmFjdFBhdGNoTGFuZGluZ0NvbW1hbmQoQWJz
dHJhY3RQYXRjaFNlcXVlbmNpbmdDb21tYW5kKToKICAgICAgICAgc3RlcHMuQ2xlYW5Xb3JraW5n
RGlyZWN0b3J5LAogICAgICAgICBzdGVwcy5VcGRhdGUsCiAgICAgICAgIHN0ZXBzLkFwcGx5UGF0
Y2gsCisgICAgICAgIHN0ZXBzLlZhbGlkYXRlQ2hhbmdlTG9ncywKICAgICAgICAgc3RlcHMuVmFs
aWRhdGVSZXZpZXdlciwKICAgICAgICAgc3RlcHMuQnVpbGQsCiAgICAgICAgIHN0ZXBzLlJ1blRl
c3RzLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rv
d25sb2FkX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L2Rvd25sb2FkX3VuaXR0ZXN0LnB5CmluZGV4IDM3NDhhOGY0MTM5ZmY4OTMzZGQyYWExNTk1NzIy
YjA4NGI5ZWFlNzQuLmJhMjNhYjk4ZjUyZWI5YzVlMzBiZTgwN2IyNjQ1ODA2ZmQ4YThlNjcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZF91
bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93
bmxvYWRfdW5pdHRlc3QucHkKQEAgLTEwOSwxMSArMTA5LDExIEBAIGNsYXNzIERvd25sb2FkQ29t
bWFuZHNUZXN0KENvbW1hbmRzVGVzdCk6CiAgICAgZGVmIHRlc3RfbGFuZF9kaWZmKHNlbGYpOgog
ICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiQnVpbGRpbmcgV2ViS2l0XG5SdW5uaW5nIFB5dGhv
biB1bml0IHRlc3RzXG5SdW5uaW5nIFBlcmwgdW5pdCB0ZXN0c1xuUnVubmluZyBKYXZhU2NyaXB0
Q29yZSB0ZXN0c1xuUnVubmluZyBydW4td2Via2l0LXRlc3RzXG5Db21taXR0ZWQgcjQ5ODI0OiA8
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNDk4MjQ+XG5VcGRhdGluZyBidWcgNDJc
biIKICAgICAgICAgbW9ja190b29sID0gTW9ja1Rvb2woKQotICAgICAgICBtb2NrX3Rvb2wuc2Nt
KCkuY3JlYXRlX3BhdGNoID0gTW9jaygpCisgICAgICAgIG1vY2tfdG9vbC5zY20oKS5jcmVhdGVf
cGF0Y2ggPSBNb2NrKHJldHVybl92YWx1ZT0iUGF0Y2gxXG5Nb2NrUGF0Y2hcbiIpCiAgICAgICAg
IG1vY2tfdG9vbC5jaGVja291dCgpLm1vZGlmaWVkX2NoYW5nZWxvZ3MgPSBNb2NrKHJldHVybl92
YWx1ZT1bXSkKICAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKExhbmQoKSwgWzQy
XSwgb3B0aW9ucz1zZWxmLl9kZWZhdWx0X29wdGlvbnMoKSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVj
dGVkX3N0ZGVyciwgdG9vbD1tb2NrX3Rvb2wpCiAgICAgICAgICMgTWFrZSBzdXJlIHdlJ3JlIG5v
dCBjYWxsaW5nIGV4cGVuc2l2ZSBjYWxscyB0b28gb2Z0ZW4uCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobW9ja190b29sLnNjbSgpLmNyZWF0ZV9wYXRjaC5jYWxsX2NvdW50LCAwKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKG1vY2tfdG9vbC5zY20oKS5jcmVhdGVfcGF0Y2guY2FsbF9jb3Vu
dCwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrX3Rvb2wuY2hlY2tvdXQoKS5tb2Rp
ZmllZF9jaGFuZ2Vsb2dzLmNhbGxfY291bnQsIDEpCiAKICAgICBkZWYgdGVzdF9sYW5kX3JlZF9i
dWlsZGVycyhzZWxmKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy91cGxvYWQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
dXBsb2FkLnB5CmluZGV4IGUxMmM4ZTJlN2VjZDM3MmFhYWFkNmRhZjYyNzUzMjNmYmQxNTE4OGUu
LjY2MTdiNGZlODllMDI2NzU1NWY1ODE2MDUwZDNkYWEzODExNGFkNDQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weQpAQCAtMTk2LDYgKzE5Niw3
IEBAIGNsYXNzIFBvc3QoQWJzdHJhY3RQYXRjaFVwbG9hZGluZ0NvbW1hbmQpOgogICAgIGhlbHBf
dGV4dCA9ICJBdHRhY2ggdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgZGlmZiB0byBhIGJ1
ZyBhcyBhIHBhdGNoIGZpbGUiCiAgICAgYXJndW1lbnRfbmFtZXMgPSAiW0JVR0lEXSIKICAgICBz
dGVwcyA9IFsKKyAgICAgICAgc3RlcHMuVmFsaWRhdGVDaGFuZ2VMb2dzLAogICAgICAgICBzdGVw
cy5DaGVja1N0eWxlLAogICAgICAgICBzdGVwcy5Db25maXJtRGlmZiwKICAgICAgICAgc3RlcHMu
T2Jzb2xldGVQYXRjaGVzLApAQCAtMjE1LDYgKzIxNiw3IEBAIGNsYXNzIExhbmRTYWZlbHkoQWJz
dHJhY3RQYXRjaFVwbG9hZGluZ0NvbW1hbmQpOgogICAgIHNob3dfaW5fbWFpbl9oZWxwID0gVHJ1
ZQogICAgIHN0ZXBzID0gWwogICAgICAgICBzdGVwcy5VcGRhdGVDaGFuZ2VMb2dzV2l0aFJldmll
d2VyLAorICAgICAgICBzdGVwcy5WYWxpZGF0ZUNoYW5nZUxvZ3MsCiAgICAgICAgIHN0ZXBzLk9i
c29sZXRlUGF0Y2hlcywKICAgICAgICAgc3RlcHMuUG9zdERpZmZGb3JDb21taXQsCiAgICAgXQpA
QCAtMjQxLDYgKzI0Myw3IEBAIGNsYXNzIFVwbG9hZChBYnN0cmFjdFBhdGNoVXBsb2FkaW5nQ29t
bWFuZCk6CiAgICAgYXJndW1lbnRfbmFtZXMgPSAiW0JVR0lEXSIKICAgICBzaG93X2luX21haW5f
aGVscCA9IFRydWUKICAgICBzdGVwcyA9IFsKKyAgICAgICAgc3RlcHMuVmFsaWRhdGVDaGFuZ2VM
b2dzLAogICAgICAgICBzdGVwcy5DaGVja1N0eWxlLAogICAgICAgICBzdGVwcy5Qcm9tcHRGb3JC
dWdPclRpdGxlLAogICAgICAgICBzdGVwcy5DcmVhdGVCdWcsCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkKaW5kZXggNjRkOWQwNTliZGE3MWRiOWNkZDg5
MjhhMTIzZjJjZjNiMDAxMGZkNy4uZjQyNmYxNzdkNWI2Y2NkN2RjZWRkOTc1YmMzYzVmZTc1ZGYz
NGZjYSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5p
dF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5w
eQpAQCAtNTYsNCArNTYsNSBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMucnVudGVzdHMgaW1w
b3J0IFJ1blRlc3RzCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuc3VnZ2VzdHJldmlld2VycyBp
bXBvcnQgU3VnZ2VzdFJldmlld2VycwogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnVwZGF0ZWNo
YW5nZWxvZ3N3aXRocmV2aWV3ZXIgaW1wb3J0IFVwZGF0ZUNoYW5nZUxvZ3NXaXRoUmV2aWV3ZXIK
IGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy51cGRhdGUgaW1wb3J0IFVwZGF0ZQorZnJvbSB3ZWJr
aXRweS50b29sLnN0ZXBzLnZhbGlkYXRlY2hhbmdlbG9ncyBpbXBvcnQgVmFsaWRhdGVDaGFuZ2VM
b2dzCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMudmFsaWRhdGVyZXZpZXdlciBpbXBvcnQgVmFs
aWRhdGVSZXZpZXdlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL2Fic3RyYWN0c3RlcC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9h
YnN0cmFjdHN0ZXAucHkKaW5kZXggNTUyNWVhMDhiNTY4MWQ4MWQ4NWMwZmI1NDM0MjIzYmQwMmYw
MTYzMC4uMWM5M2Q1YjlmN2QwZTNiZDMzMWM1MTBhMGYyNGNlN2ZkOWNhYzViOSAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5CkBAIC01
Miw2ICs1Miw3IEBAIGNsYXNzIEFic3RyYWN0U3RlcChvYmplY3QpOgogICAgICAgICAiYnVnX3Rp
dGxlIjogbGFtYmRhIHNlbGYsIHN0YXRlOiBzZWxmLl90b29sLmJ1Z3MuZmV0Y2hfYnVnKHN0YXRl
WyJidWdfaWQiXSkudGl0bGUoKSwKICAgICAgICAgImNoYW5nZWRfZmlsZXMiOiBsYW1iZGEgc2Vs
Ziwgc3RhdGU6IHNlbGYuX3Rvb2wuc2NtKCkuY2hhbmdlZF9maWxlcyhzZWxmLl9vcHRpb25zLmdp
dF9jb21taXQpLAogICAgICAgICAiZGlmZiI6IGxhbWJkYSBzZWxmLCBzdGF0ZTogc2VsZi5fdG9v
bC5zY20oKS5jcmVhdGVfcGF0Y2goc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0LCBjaGFuZ2VkX2Zp
bGVzPXNlbGYuX2NoYW5nZWRfZmlsZXMoc3RhdGUpKSwKKyAgICAgICAgIyBBYnNvbHV0ZSBwYXRo
IHRvIENoYW5nZUxvZyBmaWxlcy4KICAgICAgICAgImNoYW5nZWxvZ3MiOiBsYW1iZGEgc2VsZiwg
c3RhdGU6IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5tb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYuX29w
dGlvbnMuZ2l0X2NvbW1pdCwgY2hhbmdlZF9maWxlcz1zZWxmLl9jaGFuZ2VkX2ZpbGVzKHN0YXRl
KSksCiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvY2xlYW53b3JraW5nZGlyZWN0b3J5LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL2NsZWFud29ya2luZ2RpcmVjdG9yeS5weQppbmRleCA5YzE2MjQyZWFhNGRmN2FjNzc3
OTg5ZTA2NTg5MzcxYjZmM2MwMTM0Li5hMTY1ZGQyMWY5OGQwODkxNDZhYWJhYTkzYjAwNjhmZGRk
YWVkZjQ4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xl
YW53b3JraW5nZGlyZWN0b3J5LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9jbGVhbndvcmtpbmdkaXJlY3RvcnkucHkKQEAgLTQ3LDcgKzQ3LDkgQEAgY2xhc3MgQ2xl
YW5Xb3JraW5nRGlyZWN0b3J5KEFic3RyYWN0U3RlcCk6CiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0
ZSk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLmNsZWFuOgogICAgICAgICAgICAgcmV0
dXJuCi0gICAgICAgICMgRklYTUU6IFRoaXMgY2hkaXIgc2hvdWxkIG5vdCBiZSBuZWNlc3Nhcnku
CisgICAgICAgICMgRklYTUU6IFRoaXMgY2hkaXIgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgYW5k
IGNhbiBiZSByZW1vdmVkIGFzCisgICAgICAgICMgc29vbiBhcyBlbnN1cmVfbm9fbG9jYWxfY29t
bWl0cyBhbmQgZW5zdXJlX2NsZWFuX3dvcmtpbmdfZGlyZWN0b3J5CisgICAgICAgICMgYXJlIGtu
b3duIHRvIHNldCB0aGUgQ1dEIHRvIGNoZWNrb3V0X3Jvb3Qgd2hlbiBjYWxsaW5nIHJ1bl9jb21t
YW5kLgogICAgICAgICBvcy5jaGRpcihzZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpCiAg
ICAgICAgIGlmIG5vdCBzZWxmLl9hbGxvd19sb2NhbF9jb21taXRzOgogICAgICAgICAgICAgc2Vs
Zi5fdG9vbC5zY20oKS5lbnN1cmVfbm9fbG9jYWxfY29tbWl0cyhzZWxmLl9vcHRpb25zLmZvcmNl
X2NsZWFuKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Nv
bW1pdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jb21taXQucHkKaW5k
ZXggNWFhNmI1MWRlOTUwMzIxNTg5NWU0MmI4ZDQwNTllYmNjYmE5YWMwYy4uODU5YWNiZjhjMjU4
YjJlZGIwNTRhMGFhNmFiYTg0OGJkOTNjMWUyMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL2NvbW1pdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvY29tbWl0LnB5CkBAIC0zNiwxMiArMzYsNiBAQCBmcm9tIHdlYmtpdHB5LnRv
b2wuc3RlcHMub3B0aW9ucyBpbXBvcnQgT3B0aW9ucwogCiAKIGNsYXNzIENvbW1pdChBYnN0cmFj
dFN0ZXApOgotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBvcHRpb25zKGNscyk6Ci0gICAgICAg
IHJldHVybiBBYnN0cmFjdFN0ZXAub3B0aW9ucygpICsgWwotICAgICAgICAgICAgT3B0aW9ucy5n
aXRfY29tbWl0LAotICAgICAgICBdCi0KICAgICBkZWYgX2NvbW1pdF93YXJuaW5nKHNlbGYsIGVy
cm9yKToKICAgICAgICAgd29ya2luZ19kaXJlY3RvcnlfbWVzc2FnZSA9ICIiIGlmIGVycm9yLndv
cmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuIGVsc2UgIiBhbmQgd29ya2luZyBjb3B5IGNoYW5nZXMi
CiAgICAgICAgIHJldHVybiAoJ1RoZXJlIGFyZSAlcyBsb2NhbCBjb21taXRzJXMuIEV2ZXJ5dGhp
bmcgd2lsbCBiZSBjb21taXR0ZWQgYXMgYSBzaW5nbGUgY29tbWl0LiAnCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRlY2hhbmdlbG9nc3dpdGhyZXZp
ZXdlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vs
b2dzd2l0aHJldmlld2VyLnB5CmluZGV4IGU0NmI3OTAwY2VkOTI4NWU3MWQ2Nzg0OWY2NWUyZWY4
NDRlNjY4N2IuLjJiZjQxYjM1MTVjNTQzNTVkNzg0OWI5ZDM4NjUwN2FiNjNhM2I5YTYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dz
d2l0aHJldmlld2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91
cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld2VyLnB5CkBAIC02Nyw2ICs2Nyw5IEBAIGNsYXNzIFVw
ZGF0ZUNoYW5nZUxvZ3NXaXRoUmV2aWV3ZXIoQWJzdHJhY3RTdGVwKToKICAgICAgICAgICAgIGxv
ZygiRmFpbGVkIHRvIGd1ZXNzIHJldmlld2VyIGZyb20gYnVnICVzIGFuZCAtLXJldmlld2VyPSBu
b3QgcHJvdmlkZWQuICBOb3QgdXBkYXRpbmcgQ2hhbmdlTG9ncyB3aXRoIHJldmlld2VyLiIgJSBi
dWdfaWQpCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBvcy5jaGRpcihzZWxmLl90b29s
LnNjbSgpLmNoZWNrb3V0X3Jvb3QpCisgICAgICAgICMgY2FjaGVkX2xvb2t1cCgiY2hhbmdlbG9n
cyIpIGlzIGFsd2F5cyBhYnNvbHV0ZSBwYXRocy4KICAgICAgICAgZm9yIGNoYW5nZWxvZ19wYXRo
IGluIHNlbGYuY2FjaGVkX2xvb2t1cChzdGF0ZSwgImNoYW5nZWxvZ3MiKToKICAgICAgICAgICAg
IENoYW5nZUxvZyhjaGFuZ2Vsb2dfcGF0aCkuc2V0X3Jldmlld2VyKHJldmlld2VyKQorCisgICAg
ICAgICMgVGVsbCB0aGUgd29ybGQgdGhhdCB3ZSBqdXN0IGNoYW5nZWQgc29tZXRoaW5nIG9uIGRp
c2sgc28gdGhhdCB0aGUgY2FjaGVkIGRpZmYgaXMgaW52YWxpZGF0ZWQuCisgICAgICAgIHNlbGYu
ZGlkX21vZGlmeV9jaGVja291dChzdGF0ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZWNoYW5nZWxvZ3MucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVjaGFuZ2Vsb2dzLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4MTJm
OTRhMTkzYmJlMTdiYjdiYmJiZTMxMjdmNWIyMTlmMTNiYTQKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVjaGFuZ2Vsb2dzLnB5CkBA
IC0wLDAgKzEsNTggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMK
KyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
IyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIHdlYmtpdHB5LnRvb2wuc3Rl
cHMuYWJzdHJhY3RzdGVwIGltcG9ydCBBYnN0cmFjdFN0ZXAKK2Zyb20gd2Via2l0cHkudG9vbC5z
dGVwcy5vcHRpb25zIGltcG9ydCBPcHRpb25zCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291
dC5kaWZmX3BhcnNlciBpbXBvcnQgRGlmZlBhcnNlcgorZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgZXJyb3IsIGxvZworCisKKyMgVGhpcyBpcyBj
bG9zZWx5IHJlbGF0ZWQgdG8gdGhlIFZhbGlkYXRlUmV2aWV3ZXIgc3RlcCBhbmQgdGhlIENvbW1p
dHRlclZhbGlkYXRvciBjbGFzcy4KKyMgV2UgbWF5IHdhbnQgdG8gdW5pZnkgbW9yZSBvZiB0aGlz
IGNvZGUgaW4gb25lIHBsYWNlLgorY2xhc3MgVmFsaWRhdGVDaGFuZ2VMb2dzKEFic3RyYWN0U3Rl
cCk6CisgICAgZGVmIF9jaGVja19jaGFuZ2Vsb2dfZGlmZihzZWxmLCBkaWZmX2ZpbGUpOgorICAg
ICAgICBpZiBub3Qgc2VsZi5fdG9vbC5jaGVja291dCgpLmlzX3BhdGhfdG9fY2hhbmdlbG9nKGRp
ZmZfZmlsZS5maWxlbmFtZSk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAjIEVh
Y2ggbGluZSBpcyBhIHR1cGxlLCB0aGUgZmlyc3QgdmFsdWUgaXMgdGhlIGRlbGV0ZWQgbGluZSBu
dW1iZXIKKyAgICAgICAgIyBEYXRlLCByZXZpZXdlciwgYnVnIHRpdGxlLCBidWcgdXJsLCBhbmQg
ZW1wdHkgbGluZXMgY291bGQgYWxsIGJlCisgICAgICAgICMgaWRlbnRpY2FsIGluIHRoZSBtb3N0
IHJlY2VudCBlbnRyaWVzLiAgSWYgdGhlIGRpZmYgc3RhcnRzIGFueQorICAgICAgICAjIGxhdGVy
IHRoYW4gdGhhdCwgYXNzdW1lIHRoYXQgdGhlIGVudHJ5IGlzIHdyb25nLgorICAgICAgICBpZiBk
aWZmX2ZpbGUubGluZXNbMF1bMF0gPCA4OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAg
ICAgbG9nKCJUaGUgZGlmZiB0byAlcyBsb29rcyB3cm9uZy4gIEFyZSB5b3Ugc3VyZSB5b3VyIENo
YW5nZUxvZyBlbnRyeSBpcyBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlPyIgJSAoZGlmZl9maWxlLmZp
bGVuYW1lKSkKKyAgICAgICAgIyBGSVhNRTogRG8gd2UgbmVlZCB0byBtYWtlIHRoZSBmaWxlIHBh
dGggYWJzb2x1dGU/CisgICAgICAgIHNlbGYuX3Rvb2wuc2NtKCkuZGlmZl9mb3JfZmlsZShkaWZm
X2ZpbGUuZmlsZW5hbWUpCisgICAgICAgIGlmIHNlbGYuX3Rvb2wudXNlci5jb25maXJtKCJPSyB0
byBjb250aW51ZT8iLCBkZWZhdWx0PSduJyk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAg
ICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgorICAgICAgICBw
YXJzZWRfZGlmZiA9IERpZmZQYXJzZXIoc2VsZi5jYWNoZWRfbG9va3VwKHN0YXRlLCAiZGlmZiIp
LnNwbGl0bGluZXMoKSkKKyAgICAgICAgZm9yIGZpbGVuYW1lLCBkaWZmX2ZpbGUgaW4gcGFyc2Vk
X2RpZmYuZmlsZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jaGVja19jaGFu
Z2Vsb2dfZGlmZihkaWZmX2ZpbGUpOgorICAgICAgICAgICAgICAgIGVycm9yKCJDaGFuZ2VMb2cg
ZW50cnkgaW4gJXMgaXMgbm90IGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUuIiAlIGRpZmZfZmlsZS5m
aWxlbmFtZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92
YWxpZGF0ZWNoYW5nZWxvZ3NfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvdmFsaWRhdGVjaGFuZ2Vsb2dzX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2ZGI3
OTM3MTI0ZjUzZTA2MzM2NzhmYmE1OTBlYTViODkxMzE0ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVjaGFuZ2Vsb2dzX3VuaXR0
ZXN0LnB5CkBAIC0wLDAgKzEsNTUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisj
IG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRl
c3QKKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91
dHB1dENhcHR1cmUKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCitm
cm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVG9vbAor
ZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnZhbGlkYXRlY2hhbmdlbG9ncyBpbXBvcnQgVmFsaWRh
dGVDaGFuZ2VMb2dzCisKKworY2xhc3MgVmFsaWRhdGVDaGFuZ2VMb2dzVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CisKKyAgICBkZWYgX2Fzc2VydF9zdGFydF9saW5lX3Byb2R1Y2VzX291dHB1dChz
ZWxmLCBzdGFydF9saW5lLCBzaG91bGRfcHJvbXB0X3VzZXI9RmFsc2UpOgorICAgICAgICB0b29s
ID0gTW9ja1Rvb2woKQorICAgICAgICB0b29sLl9jaGVja291dC5pc19wYXRoX3RvX2NoYW5nZWxv
ZyA9IGxhbWJkYSBwYXRoOiBUcnVlCisgICAgICAgIHN0ZXAgPSBWYWxpZGF0ZUNoYW5nZUxvZ3Mo
dG9vbCwgTW9ja09wdGlvbnMoZ2l0X2NvbW1pdD1Ob25lKSkKKyAgICAgICAgZGlmZl9maWxlID0g
TW9jaygpCisgICAgICAgIGRpZmZfZmlsZS5maWxlbmFtZSA9ICJtb2NrL0NoYW5nZUxvZyIKKyAg
ICAgICAgZGlmZl9maWxlLmxpbmVzID0gWyhzdGFydF9saW5lLCBzdGFydF9saW5lLCAiZm9vIild
CisgICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9IGV4cGVjdGVkX3N0ZGVyciA9ICIiCisgICAgICAg
IGlmIHNob3VsZF9wcm9tcHRfdXNlcjoKKyAgICAgICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJP
SyB0byBjb250aW51ZT9cbiIKKyAgICAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJUaGUgZGlm
ZiB0byBtb2NrL0NoYW5nZUxvZyBsb29rcyB3cm9uZy4gIEFyZSB5b3Ugc3VyZSB5b3VyIENoYW5n
ZUxvZyBlbnRyeSBpcyBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlP1xuIgorICAgICAgICBPdXRwdXRD
YXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgc3RlcC5fY2hlY2tfY2hhbmdlbG9nX2RpZmYs
IFtkaWZmX2ZpbGVdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3RlZF9z
dGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQorCisgICAgZGVmIHRlc3RfY2hlY2tfY2hhbmdlbG9nX2Rp
ZmYoc2VsZik6CisgICAgICAgIHNlbGYuX2Fzc2VydF9zdGFydF9saW5lX3Byb2R1Y2VzX291dHB1
dCgxLCBzaG91bGRfcHJvbXB0X3VzZXI9RmFsc2UpCisgICAgICAgIHNlbGYuX2Fzc2VydF9zdGFy
dF9saW5lX3Byb2R1Y2VzX291dHB1dCg3LCBzaG91bGRfcHJvbXB0X3VzZXI9RmFsc2UpCisgICAg
ICAgIHNlbGYuX2Fzc2VydF9zdGFydF9saW5lX3Byb2R1Y2VzX291dHB1dCg4LCBzaG91bGRfcHJv
bXB0X3VzZXI9VHJ1ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy92YWxpZGF0ZXJldmlld2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL3ZhbGlkYXRlcmV2aWV3ZXIucHkKaW5kZXggYmRmNzI5ZTRiZmUyZDA0NDNiNTc5MTg4ZDU5
NjkyY2MwNjY2NDFkNy4uYzJhMjdiOTgzNmM2YWNlMjk0MjQyZDcxMDcxMTQyODU4ODZjMjM0NCAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlcmV2
aWV3ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRl
cmV2aWV3ZXIucHkKQEAgLTM3LDEyICszNyw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGVycm9yLCBsb2cKIAogIyBGSVhNRTogU29tZSBv
ZiB0aGlzIGxvZ2ljIHNob3VsZCBwcm9iYWJseSBiZSB1bmlmaWVkIHdpdGggQ29tbWl0dGVyVmFs
aWRhdG9yPwogY2xhc3MgVmFsaWRhdGVSZXZpZXdlcihBYnN0cmFjdFN0ZXApOgotICAgIEBjbGFz
c21ldGhvZAotICAgIGRlZiBvcHRpb25zKGNscyk6Ci0gICAgICAgIHJldHVybiBBYnN0cmFjdFN0
ZXAub3B0aW9ucygpICsgWwotICAgICAgICAgICAgT3B0aW9ucy5naXRfY29tbWl0LAotICAgICAg
ICBdCi0KICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBtb3ZlIG9udG8gQ2hhbmdl
TG9nRW50cnkKICAgICBkZWYgX2hhc192YWxpZF9yZXZpZXdlcihzZWxmLCBjaGFuZ2Vsb2dfZW50
cnkpOgogICAgICAgICBpZiBjaGFuZ2Vsb2dfZW50cnkucmV2aWV3ZXIoKToKQEAgLTU4LDkgKzUy
LDYgQEAgY2xhc3MgVmFsaWRhdGVSZXZpZXdlcihBYnN0cmFjdFN0ZXApOgogICAgICAgICAjIHRo
aXMgY2hlY2sgaXMgdG9vIGRyYWNvbmlhbiAoYW5kIHRvbyBwb29ybHkgdGVzdGVkKSB0byBmb2lz
dCB1cG9uIHVzZXJzLgogICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5ub25faW50ZXJhY3Rp
dmU6CiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGZpZ3Vy
ZSBvdXQgaG93IHRvIGhhbmRsZSB0aGUgY3VycmVudCB3b3JraW5nCi0gICAgICAgICMgICAgICAg
IGRpcmVjdG9yeSBpc3N1ZSBtb3JlIGdsb2JhbGx5LgotICAgICAgICBvcy5jaGRpcihzZWxmLl90
b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpCiAgICAgICAgIGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBz
ZWxmLmNhY2hlZF9sb29rdXAoc3RhdGUsICJjaGFuZ2Vsb2dzIik6CiAgICAgICAgICAgICBjaGFu
Z2Vsb2dfZW50cnkgPSBDaGFuZ2VMb2coY2hhbmdlbG9nX3BhdGgpLmxhdGVzdF9lbnRyeSgpCiAg
ICAgICAgICAgICBpZiBzZWxmLl9oYXNfdmFsaWRfcmV2aWV3ZXIoY2hhbmdlbG9nX2VudHJ5KToK
</data>

          </attachment>
      

    </bug>

</bugzilla>