<?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>54517</bug_id>
          
          <creation_ts>2011-02-15 17:52:00 -0800</creation_ts>
          <short_desc>Ensure loading has stopped in HistoryController::goToItem</short_desc>
          <delta_ts>2011-02-19 00:29:49 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Charles Reis">creis</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fishd</cc>
    
    <cc>mihaip</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>351782</commentid>
    <comment_count>0</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-02-15 17:52:00 -0800</bug_when>
    <thetext>Chromium has encountered multiple crashes because it can call HistoryController::goToItem directly from WebFrameImpl::loadHistoryItem without stopping the current loaders first.  This leads to differing behavior between the back button and history.back() (which calls stopAllLoaders in Page::goToItem first), as well as between Chromium and Safari.

We should call FrameLoader::stopAllLoaders first, possibly by calling Page::goToItem instead of HistoryController::goToItem.  We can ensure all WebKit ports use this behavior by asserting that the FrameLoader is not loading when we get to HistoryController::goToItem.

Examples of bugs we&apos;ve seen that would have been prevented by this:
https://bugs.webkit.org/show_bug.cgi?id=54219 - Navigation during an onload handler triggered by a back navigation.
https://bugs.webkit.org/show_bug.cgi?id=48812 - Back twice without committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351791</commentid>
    <comment_count>1</comment_count>
      <attachid>82565</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-02-15 18:02:37 -0800</bug_when>
    <thetext>Created attachment 82565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351868</commentid>
    <comment_count>2</comment_count>
      <attachid>82565</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-02-15 21:22:04 -0800</bug_when>
    <thetext>Comment on attachment 82565
Patch

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

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:896
&gt; +    m_frame-&gt;page()-&gt;goToItem(historyItem.get(),

Are you sure that back/forward navigations are supposed to stop all loaders first?

What if the back/forward navigation is just a reference fragment navigation?  What
do other browsers do in that case?

Please see http://trac.webkit.org/changeset/55626.  This would appear to be
undoing that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351869</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-02-15 21:23:47 -0800</bug_when>
    <thetext>Oh, nevermind... I see that Page::goToItem special cases navigations that do not change the document!  Good :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351870</commentid>
    <comment_count>4</comment_count>
      <attachid>82565</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-02-15 21:24:28 -0800</bug_when>
    <thetext>Comment on attachment 82565
Patch

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

&gt; Source/WebCore/loader/HistoryController.cpp:225
&gt; +    ASSERT(!m_frame-&gt;loader()-&gt;isLoading());

so i think this assertion will fail when goToItem is called to just jump to a different reference fragment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352244</commentid>
    <comment_count>5</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-02-16 12:04:05 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Oh, nevermind... I see that Page::goToItem special cases navigations that do not change the document!  Good :-)

Interesting point!  Page::goToItem actually only special cases state navigations, not fragment navigations.  As a result, we do end up stopping all loaders even if you&apos;re just going forward to a fragment.  This is visible in Safari, as well as in Chromium with my patch.  Repro steps:

1. Start at a simple page like about:blank.
2. Go to a page with an onload handler plus a slow, uncacheable resource (e.g., in an img tag).
3. Go to a fragment on that page.
4. Go back twice to the first page.
5. Click forward, then forward again before the onload handler fires.

The onload handler will never fire.

I&apos;d argue that we should change Page::goToItem to avoid stopping all loaders for a fragment navigation, which would fix this in both Safari and this Chromium patch.  (Note that Page::goToItem already makes a similar exception for the database thread.)

And yes, this would require changing or removing the assert in HistoryController.

Sound reasonable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353163</commentid>
    <comment_count>6</comment_count>
      <attachid>82860</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-02-17 14:07:25 -0800</bug_when>
    <thetext>Created attachment 82860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353165</commentid>
    <comment_count>7</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-02-17 14:13:53 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=82860) [details]
&gt; Patch

Here&apos;s a draft of what I mentioned in comment 5.

The main drawback is the need to handle Chromium&apos;s chrome-back-forward://go URLs for history.back() and history.forward().  We want to avoid stopping all loaders for those, since they get translated to a normal URL and then pass through Page::goToItem again.

This patch handles that, although it hard-codes the protocol rather than getting it from BackForwardListChromium.h.  (That would take a lot of ugly plumbing to get to here, probably via PlatformBridge).  I can change that if necessary.

I also removed the assert in HistoryController, because it would need similar exceptions for same document navigations and the chrome-back-forward scheme.  Maybe we can abstract all that into a function and keep the assert, though I&apos;m not sure it&apos;s necessary now that we have a layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353283</commentid>
    <comment_count>8</comment_count>
      <attachid>82860</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-02-17 17:53:06 -0800</bug_when>
    <thetext>Comment on attachment 82860
Patch

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

&gt; Source/WebCore/page/Page.cpp:341
&gt; +#if PLATFORM(CHROMIUM)

This feels pretty icky. Since we&apos;re not under the gun to get this into M10, I&apos;d like to explore a cleaner solution.  The current check for the back-forward scheme is done by Chromium&apos;s implementation of FrameLoaderClient::shouldGoToHistoryItem. Adding a FrameLoaderClient::shouldStopLoadingForHistoryItem seems reasonable.

Additionally, having all this history logic in Page seems strange. Putting all these checks (lines 335 to 343) in a static HistoryController::shouldStopLoadingForHistoryItemTransition(currentItem, item) method may be cleaner.

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:895
&gt; +    // Use Page::goToItem to ensure stopAllLoaders is called first (except for

Can we hide HistoryController::goToItem so that all calls go through Page (make it private and make Page a friend?)

&gt; LayoutTests/http/tests/navigation/resources/forward-to-fragment-fires-onload-2.html:31
&gt; +    setTimeout(function() {

Shouldn&apos;t be necessary to do this in a timeout, history.forward() is already async.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353284</commentid>
    <comment_count>9</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-02-17 17:54:38 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; I&apos;d argue that we should change Page::goToItem to avoid stopping all loaders for a fragment navigation, which would fix this in both Safari and this Chromium patch.  (Note that Page::goToItem already makes a similar exception for the database thread.)

Do you mind testing this behavior in other browsers too? I think this change is reasonable, but I&apos;m curious if Firefox and IE made the same choice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353303</commentid>
    <comment_count>10</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-02-17 18:20:41 -0800</bug_when>
    <thetext>Great-- I&apos;ll clean it up tomorrow and upload a new patch.

(In reply to comment #9)
&gt; Do you mind testing this behavior in other browsers too? I think this change is reasonable, but I&apos;m curious if Firefox and IE made the same choice.

Just tested, and both Firefox and IE keep loading after going forward to a fragment.  Looks like we&apos;re doing the right thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353738</commentid>
    <comment_count>11</comment_count>
      <attachid>82860</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-02-18 12:14:33 -0800</bug_when>
    <thetext>Comment on attachment 82860
Patch

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

&gt;&gt; Source/WebCore/page/Page.cpp:341

&gt; 
&gt; This feels pretty icky. Since we&apos;re not under the gun to get this into M10, I&apos;d like to explore a cleaner solution.  The current check for the back-forward scheme is done by Chromium&apos;s implementation of FrameLoaderClient::shouldGoToHistoryItem. Adding a FrameLoaderClient::shouldStopLoadingForHistoryItem seems reasonable.
&gt; 
&gt; Additionally, having all this history logic in Page seems strange. Putting all these checks (lines 335 to 343) in a static HistoryController::shouldStopLoadingForHistoryItemTransition(currentItem, item) method may be cleaner.

Good ideas.  I&apos;ve switched these over and updated all the clients.

&gt;&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:895
&gt;&gt; +    // Use Page::goToItem to ensure stopAllLoaders is called first (except for
&gt; 
&gt; Can we hide HistoryController::goToItem so that all calls go through Page (make it private and make Page a friend?)

Done.

&gt;&gt; LayoutTests/http/tests/navigation/resources/forward-to-fragment-fires-onload-2.html:31
&gt;&gt; +    setTimeout(function() {
&gt; 
&gt; Shouldn&apos;t be necessary to do this in a timeout, history.forward() is already async.

Actually, the test doesn&apos;t work unless it&apos;s in a timeout.  It appears to be important to have the history.forward() happen after the page finishes parsing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353739</commentid>
    <comment_count>12</comment_count>
      <attachid>82993</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-02-18 12:15:00 -0800</bug_when>
    <thetext>Created attachment 82993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353832</commentid>
    <comment_count>13</comment_count>
      <attachid>82993</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-02-18 14:32:33 -0800</bug_when>
    <thetext>Comment on attachment 82993
Patch

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

&gt; Source/WebCore/page/Page.cpp:-347
&gt; -            databasePolicy = DatabasePolicyContinue;

I think with this change we no longer need DatabasePolicyContinue (or the whole enum), since we always stop databases when stopping loads. Perhaps add a FIXME to FrameLoader::stopAllLoaders to remove that option?

&gt; LayoutTests/http/tests/navigation/resources/forward-to-fragment-fires-onload-2.html:31
&gt; +    setTimeout(function() {

If it&apos;s important that this happen after after the page finishes parsing (any ideas why?), doing it in a DOMContentLoaded event listener seems more reliable than a setTimeout 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353855</commentid>
    <comment_count>14</comment_count>
      <attachid>83017</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-02-18 14:56:19 -0800</bug_when>
    <thetext>Created attachment 83017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353856</commentid>
    <comment_count>15</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-02-18 14:57:46 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 82993 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82993&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/Page.cpp:-347
&gt; &gt; -            databasePolicy = DatabasePolicyContinue;
&gt; 
&gt; I think with this change we no longer need DatabasePolicyContinue (or the whole enum), since we always stop databases when stopping loads. Perhaps add a FIXME to FrameLoader::stopAllLoaders to remove that option?

Looks like you&apos;re right-- added.

&gt; 
&gt; &gt; LayoutTests/http/tests/navigation/resources/forward-to-fragment-fires-onload-2.html:31
&gt; &gt; +    setTimeout(function() {
&gt; 
&gt; If it&apos;s important that this happen after after the page finishes parsing (any ideas why?), doing it in a DOMContentLoaded event listener seems more reliable than a setTimeout 0.

Yep, that works.  Not sure why it doesn&apos;t work before DOMContentLoaded, since it doesn&apos;t trigger a stopAllLoaders and the stack trace from History::goToItem looks the same either way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354097</commentid>
    <comment_count>16</comment_count>
      <attachid>83017</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-19 00:29:43 -0800</bug_when>
    <thetext>Comment on attachment 83017
Patch

Clearing flags on attachment: 83017

Committed r79107: &lt;http://trac.webkit.org/changeset/79107&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354098</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-19 00:29:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82565</attachid>
            <date>2011-02-15 18:02:37 -0800</date>
            <delta_ts>2011-02-17 14:07:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54517-20110215180235.patch</filename>
            <type>text/plain</type>
            <size>2831</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTg2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDItMTUgIENoYXJsaWUg
UmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBFbnN1cmUgbG9hZGluZyBoYXMgc3RvcHBlZCBpbiBIaXN0b3J5
Q29udHJvbGxlcjo6Z29Ub0l0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU0NTE3CisKKyAgICAgICAgQXNzZXJ0IHRoYXQgbG9hZGluZyBoYXMgc3Rv
cHBlZCBpbiBIaXN0b3J5Q29udHJvbGxlcjo6Z29Ub0l0ZW0uCisKKyAgICAgICAgQ292ZXJlZCBi
eSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5j
cHA6CisKIDIwMTEtMDItMTUgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEFuZHJlYXMgS2xpbmcuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDc4NTg2KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjIyLDYgKzIyMiw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OmludmFsaWRhdGVD
dXJyZW4KIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OmdvVG9JdGVtKEhpc3RvcnlJdGVtKiB0YXJn
ZXRJdGVtLCBGcmFtZUxvYWRUeXBlIHR5cGUpCiB7CiAgICAgQVNTRVJUKCFtX2ZyYW1lLT50cmVl
KCktPnBhcmVudCgpKTsKKyAgICBBU1NFUlQoIW1fZnJhbWUtPmxvYWRlcigpLT5pc0xvYWRpbmco
KSk7CiAgICAgCiAgICAgLy8gc2hvdWxkR29Ub0hpc3RvcnlJdGVtIGlzIGEgcHJpdmF0ZSBkZWxl
Z2F0ZSBtZXRob2QuIFRoaXMgaXMgbmVlZGVkIHRvIGZpeDoKICAgICAvLyA8cmRhcjovL3Byb2Js
ZW0vMzk1MTI4Mz4gY2FuIHZpZXcgcGFnZXMgZnJvbSB0aGUgYmFjay9mb3J3YXJkIGNhY2hlIHRo
YXQgc2hvdWxkIGJlIGRpc2FsbG93ZWQgYnkgUGFyZW50YWwgQ29udHJvbHMKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA3ODU4NikKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDIt
MTUgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbnN1cmUgbG9hZGluZyBoYXMgc3RvcHBl
ZCBpbiBIaXN0b3J5Q29udHJvbGxlcjo6Z29Ub0l0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NTE3CisKKyAgICAgICAgQ2FsbCBQYWdlOjpnb1Rv
SXRlbSBpbnN0ZWFkIG9mIEhpc3RvcnlDb250cm9sbGVyOjpnb1RvSXRlbSwgc28gdGhhdAorICAg
ICAgICBGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMgaXMgY2FsbGVkIGZpcnN0LgorCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJ
bXBsLmNwcDoKKwogMjAxMS0wMS0yNiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDc4NTg2KQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODkyLDggKzg5Miw5IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpsb2FkSGlzdG9yeUl0ZW0o
Y29uc3QKICAgICAgICAgbV9mcmFtZS0+cGFnZSgpLT5iYWNrRm9yd2FyZCgpLT5zZXRDdXJyZW50
SXRlbShjdXJyZW50SXRlbS5nZXQoKSk7CiAgICAgfQogCi0gICAgbV9mcmFtZS0+bG9hZGVyKCkt
Pmhpc3RvcnkoKS0+Z29Ub0l0ZW0oCi0gICAgICAgIGhpc3RvcnlJdGVtLmdldCgpLCBGcmFtZUxv
YWRUeXBlSW5kZXhlZEJhY2tGb3J3YXJkKTsKKyAgICAvLyBVc2UgUGFnZTo6Z29Ub0l0ZW0gdG8g
ZW5zdXJlIHN0b3BBbGxMb2FkZXJzIGlzIGNhbGxlZCBmaXJzdC4KKyAgICBtX2ZyYW1lLT5wYWdl
KCktPmdvVG9JdGVtKGhpc3RvcnlJdGVtLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9yd2FyZCk7CiB9CiAKIHZvaWQgV2ViRnJh
bWVJbXBsOjpsb2FkRGF0YShjb25zdCBXZWJEYXRhJiBkYXRhLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82860</attachid>
            <date>2011-02-17 14:07:25 -0800</date>
            <delta_ts>2011-02-18 12:14:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54517-20110217140723.patch</filename>
            <type>text/plain</type>
            <size>9198</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NjM1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDItMTcgIENoYXJsaWUg
UmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBFbnN1cmUgbG9hZGluZyBoYXMgc3RvcHBlZCBpbiBIaXN0b3J5
Q29udHJvbGxlcjo6Z29Ub0l0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU0NTE3CisKKyAgICAgICAgQXZvaWQgc3RvcHBpbmcgYWxsIGxvYWRlcnMg
aW4gZ29Ub0l0ZW0gZm9yIHNhbWUgZG9jdW1lbnQgbmF2aWdhdGlvbnMKKyAgICAgICAgb3IgcHNl
dWRvLWJhY2stZm9yd2FyZCBVUkxzLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvbmF2aWdh
dGlvbi9mb3J3YXJkLXRvLWZyYWdtZW50LWZpcmVzLW9ubG9hZC5odG1sCisKKyAgICAgICAgKiBw
YWdlL1BhZ2UuY3BwOgorCiAyMDExLTAyLTE0ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2ggYW5kIEdlb2ZmIEdh
cmVuLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiA3ODYzNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSwxOSArMzM1LDE1IEBA
IHZvaWQgUGFnZTo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0sIEYKICAgICAvLyBBYm9ydCBh
bnkgY3VycmVudCBsb2FkIHVubGVzcyB3ZSdyZSBuYXZpZ2F0aW5nIHRoZSBjdXJyZW50IGRvY3Vt
ZW50IHRvIGEgbmV3IHN0YXRlIG9iamVjdAogICAgIEhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSA9
IG1fbWFpbkZyYW1lLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpOwogICAgIGlm
ICghaXRlbS0+c3RhdGVPYmplY3QoKSB8fCAhY3VycmVudEl0ZW0gfHwgaXRlbS0+ZG9jdW1lbnRT
ZXF1ZW5jZU51bWJlcigpICE9IGN1cnJlbnRJdGVtLT5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkg
fHwgaXRlbSA9PSBjdXJyZW50SXRlbSkgewotICAgICAgICAvLyBEZWZpbmUgd2hhdCB0byBkbyB3
aXRoIGFueSBvcGVuIGRhdGFiYXNlIGNvbm5lY3Rpb25zLiBCeSBkZWZhdWx0IHdlIHN0b3AgdGhl
bSBhbmQgdGVybWluYXRlIHRoZSBkYXRhYmFzZSB0aHJlYWQuCi0gICAgICAgIERhdGFiYXNlUG9s
aWN5IGRhdGFiYXNlUG9saWN5ID0gRGF0YWJhc2VQb2xpY3lTdG9wOwotCi0jaWYgRU5BQkxFKERB
VEFCQVNFKQotICAgICAgICAvLyBJZiB3ZSdyZSBuYXZpZ2F0aW5nIHRoZSBoaXN0b3J5IHZpYSBh
IGZyYWdtZW50IG9uIHRoZSBzYW1lIGRvY3VtZW50LCB0aGVuIHdlIGRvIG5vdCB3YW50IHRvIHN0
b3AgZGF0YWJhc2VzLgotICAgICAgICBjb25zdCBLVVJMJiBjdXJyZW50VVJMID0gbV9tYWluRnJh
bWUtPmRvY3VtZW50KCktPnVybCgpOworICAgICAgICAvLyBEb24ndCBzdG9wIGxvYWRpbmcgZm9y
IHNhbWUgZG9jdW1lbnQgbmF2aWdhdGlvbnMgb3IgcHNldWRvLWJhY2stZm9yd2FyZCBVUkxzLgor
ICAgICAgICBib29sIGlzU2FtZURvY3VtZW50TmF2aWdhdGlvbiA9IGN1cnJlbnRJdGVtID8gY3Vy
cmVudEl0ZW0tPnNob3VsZERvU2FtZURvY3VtZW50TmF2aWdhdGlvblRvKGl0ZW0pIDogZmFsc2U7
CisgICAgICAgIGJvb2wgaXNCYWNrRm9yd2FyZFNjaGVtZSA9IGZhbHNlOworI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQogICAgICAgICBjb25zdCBLVVJMJiBuZXdVUkwgPSBpdGVtLT51cmwoKTsKLSAg
ICAKLSAgICAgICAgaWYgKG5ld1VSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSAmJiBlcXVhbEln
bm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGN1cnJlbnRVUkwsIG5ld1VSTCkpCi0gICAgICAgICAg
ICBkYXRhYmFzZVBvbGljeSA9IERhdGFiYXNlUG9saWN5Q29udGludWU7CisgICAgICAgIGlzQmFj
a0ZvcndhcmRTY2hlbWUgPSBuZXdVUkwucHJvdG9jb2xJcygiY2hyb21lLWJhY2stZm9yd2FyZCIp
OwogI2VuZGlmCi0KLSAgICAgICAgbV9tYWluRnJhbWUtPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVy
cyhkYXRhYmFzZVBvbGljeSk7CisgICAgICAgIGlmICghaXNTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
ICYmICFpc0JhY2tGb3J3YXJkU2NoZW1lKQorICAgICAgICAgICAgbV9tYWluRnJhbWUtPmxvYWRl
cigpLT5zdG9wQWxsTG9hZGVycyhEYXRhYmFzZVBvbGljeVN0b3ApOwogICAgIH0KICAgICAgICAg
CiAgICAgbV9tYWluRnJhbWUtPmxvYWRlcigpLT5oaXN0b3J5KCktPmdvVG9JdGVtKGl0ZW0sIHR5
cGUpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NjM1KQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNyBAQAorMjAxMS0wMi0xNyAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuc3VyZSBs
b2FkaW5nIGhhcyBzdG9wcGVkIGluIEhpc3RvcnlDb250cm9sbGVyOjpnb1RvSXRlbQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ1MTcKKworICAgICAg
ICBDYWxsIFBhZ2U6OmdvVG9JdGVtIGluc3RlYWQgb2YgSGlzdG9yeUNvbnRyb2xsZXI6OmdvVG9J
dGVtLCBzbyB0aGF0CisgICAgICAgIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyBpcyBjYWxs
ZWQgZmlyc3QuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQt
dG8tZnJhZ21lbnQtZmlyZXMtb25sb2FkLmh0bWwKKworICAgICAgICAqIHNyYy9XZWJGcmFtZUlt
cGwuY3BwOgorCiAyMDExLTAyLTE1ICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwCShyZXZpc2lvbiA3ODYzNSkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5Miw4ICs4
OTIsMTAgQEAgdm9pZCBXZWJGcmFtZUltcGw6OmxvYWRIaXN0b3J5SXRlbShjb25zdAogICAgICAg
ICBtX2ZyYW1lLT5wYWdlKCktPmJhY2tGb3J3YXJkKCktPnNldEN1cnJlbnRJdGVtKGN1cnJlbnRJ
dGVtLmdldCgpKTsKICAgICB9CiAKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5n
b1RvSXRlbSgKLSAgICAgICAgaGlzdG9yeUl0ZW0uZ2V0KCksIEZyYW1lTG9hZFR5cGVJbmRleGVk
QmFja0ZvcndhcmQpOworICAgIC8vIFVzZSBQYWdlOjpnb1RvSXRlbSB0byBlbnN1cmUgc3RvcEFs
bExvYWRlcnMgaXMgY2FsbGVkIGZpcnN0IChleGNlcHQgZm9yCisgICAgLy8gc2FtZS1kb2N1bWVu
dCBuYXZpZ2F0aW9ucyBvciBjaHJvbWUtYmFjay1mb3J3YXJkIFVSTHMpLgorICAgIG1fZnJhbWUt
PnBhZ2UoKS0+Z29Ub0l0ZW0oaGlzdG9yeUl0ZW0uZ2V0KCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGcmFtZUxvYWRUeXBlSW5kZXhlZEJhY2tGb3J3YXJkKTsKIH0KIAogdm9pZCBX
ZWJGcmFtZUltcGw6OmxvYWREYXRhKGNvbnN0IFdlYkRhdGEmIGRhdGEsCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA3ODYzNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE2IEBACisyMDExLTAyLTE3ICBDaGFybGllIFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5z
dXJlIGxvYWRpbmcgaGFzIHN0b3BwZWQgaW4gSGlzdG9yeUNvbnRyb2xsZXI6OmdvVG9JdGVtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDUxNworCisg
ICAgICAgIFRlc3RzIHRoYXQgZ29pbmcgZm9yd2FyZCB3aXRoaW4gdGhlIHNhbWUgZG9jdW1lbnQg
ZG9lcyBub3Qgc3RvcCBsb2FkaW5nLgorCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L2ZvcndhcmQtdG8tZnJhZ21lbnQtZmlyZXMtb25sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLXRvLWZyYWdtZW50LWZpcmVzLW9ubG9hZC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNv
dXJjZXMvZm9yd2FyZC10by1mcmFnbWVudC1maXJlcy1vbmxvYWQtMi5odG1sOiBBZGRlZC4KKwog
MjAxMS0wMi0xNSAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgQ2hyb21pdW0gdGVzdCBleHBlY3RhdGlvbnMgdXBkYXRlLgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtdG8tZnJhZ21lbnQtZmly
ZXMtb25sb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL25hdmlnYXRpb24vZm9yd2FyZC10by1mcmFnbWVudC1maXJlcy1vbmxvYWQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2Zv
cndhcmQtdG8tZnJhZ21lbnQtZmlyZXMtb25sb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNSBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI3OiBTdGFydGluZyB0ZXN0
LgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY6IDEuIEdvdCB0byBwYWdlIDIuICBHb2luZyB0byAj
Zm9vLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIyOiAyLiBHb3QgdG8gcGFnZSAyICNmb28uICBH
b2luZyBiYWNrIHRvIHN0YXJ0LgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE3OiAzLiBHb3QgYmFj
ayB0byBzdGFydC4gIEdvaW5nIGZvcndhcmQgdG8gcGFnZSAyLgorQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDI5OiA0LiBHb3QgYmFjayB0byBwYWdlIDIuICBJbW1lZGlhdGVseSBnb2luZyBmb3J3YXJk
LgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiA1LiBHb3QgdG8gcGFnZSAyIG9ubG9hZC4gIFN1
Y2Nlc3MuCitUZXN0cyB0aGF0IGxvYWRpbmcgaXMgbm90IHN0b3BwZWQgYnkgZ29pbmcgZm9yd2Fy
ZCB0byBhIGZyYWdtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLXRvLWZyYWdtZW50LWZpcmVzLW9u
bG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlv
bi9mb3J3YXJkLXRvLWZyYWdtZW50LWZpcmVzLW9ubG9hZC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtdG8tZnJhZ21lbnQtZmly
ZXMtb25sb2FkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIu
Li8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdHMgdGhhdCBsb2FkaW5nIGlzIG5vdCBz
dG9wcGVkIGJ5IGdvaW5nIGZvcndhcmQgdG8gYSBmcmFnbWVudC4nKTsKKworb25sb2FkID0gZnVu
Y3Rpb24oKQoreworICAgIGlmICh3aW5kb3cubG9jYWxTdG9yYWdlLnN0YWdlID09ICd0aHJlZScp
IHsKKyAgICAgICAgY29uc29sZS5sb2coJzMuIEdvdCBiYWNrIHRvIHN0YXJ0LiAgR29pbmcgZm9y
d2FyZCB0byBwYWdlIDIuJyk7CisgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3RhZ2UgPSAn
Zm91cic7CisgICAgICAgIGhpc3RvcnkuZm9yd2FyZCgpOworICAgIH0gZWxzZSBpZiAod2luZG93
LmxvY2FsU3RvcmFnZS5zdGFnZSA9PSAnc2l4JykgeworICAgICAgICBkZWxldGUgd2luZG93Lmxv
Y2FsU3RvcmFnZS5zdGFnZTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gVG8gbWFrZSBzdXJlIHRoYXQgd2UgaGl0IHRoaXMgYnJhbmNoLCBsb2cgdGhp
cyB0byB0aGUgY29uc29sZSBzbyB0aGF0CisgICAgICAgIC8vIGl0IHNob3dzIHVwIGluIGV4cGVj
dGVkIG91dHB1dCAoZGVidWcoKSB3aWxsIGJlIGJsb3duIGF3YXkgb25jZSB3ZQorICAgICAgICAv
LyBuYXZpZ2F0ZSBvdXQpLgorICAgICAgICBjb25zb2xlLmxvZygnU3RhcnRpbmcgdGVzdC4nKTsK
KyAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zdGFnZSA9ICdvbmUnOworICAgICAgICAvLyBO
YXZpZ2F0ZSBpbiBhIHRpbWVvdXQgdG8gbWFrZSBzdXJlIHdlIGNyZWF0ZSBhIGhpc3RvcnkgZW50
cnkuCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB3aW5kb3cu
bG9jYXRpb24uaHJlZiA9ICdyZXNvdXJjZXMvZm9yd2FyZC10by1mcmFnbWVudC1maXJlcy1vbmxv
YWQtMi5odG1sJzsKKyAgICAgICAgfSwgMCk7CisgICAgfQorfTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cit2YXIganNUZXN0SXNBc3luYyA9IHRydWU7Cis8L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25h
dmlnYXRpb24vcmVzb3VyY2VzL2ZvcndhcmQtdG8tZnJhZ21lbnQtZmlyZXMtb25sb2FkLTIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3Vy
Y2VzL2ZvcndhcmQtdG8tZnJhZ21lbnQtZmlyZXMtb25sb2FkLTIuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC10
by1mcmFnbWVudC1maXJlcy1vbmxvYWQtMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4
IEBACitQYWdlIDIuCis8c2NyaXB0Pgorb25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIGlmICh3
aW5kb3cubG9jYWxTdG9yYWdlLnN0YWdlID09ICdvbmUnKSB7CisgICAgICAgIGNvbnNvbGUubG9n
KCcxLiBHb3QgdG8gcGFnZSAyLiAgR29pbmcgdG8gI2Zvby4nKTsKKyAgICAgICAgd2luZG93Lmxv
Y2FsU3RvcmFnZS5zdGFnZSA9ICd0d28nOworICAgICAgICAvLyBOYXZpZ2F0ZSBpbiBhIHRpbWVv
dXQgdG8gbWFrZSBzdXJlIHdlIGNyZWF0ZSBhIGhpc3RvcnkgZW50cnkuCisgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcj
Zm9vJzsKKyAgICAgICAgfSwgMCk7CisgICAgfSBlbHNlIGlmICh3aW5kb3cubG9jYWxTdG9yYWdl
LnN0YWdlID09ICdmaXZlJykgeworICAgICAgICBjb25zb2xlLmxvZygnNS4gR290IHRvIHBhZ2Ug
MiBvbmxvYWQuICBTdWNjZXNzLicpOworICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnN0YWdl
ID0gJ3NpeCc7CisgICAgICAgIGhpc3RvcnkuZ28oLTIpOworICAgIH0KK307CisKK29uaGFzaGNo
YW5nZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAod2luZG93LmxvY2FsU3RvcmFnZS5zdGFnZSA9
PSAndHdvJykgeworICAgICAgICBjb25zb2xlLmxvZygnMi4gR290IHRvIHBhZ2UgMiAjZm9vLiAg
R29pbmcgYmFjayB0byBzdGFydC4nKTsKKyAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zdGFn
ZSA9ICd0aHJlZSc7CisgICAgICAgIGhpc3RvcnkuZ28oLTIpOworICAgIH0KK307CisKK2lmICh3
aW5kb3cubG9jYWxTdG9yYWdlLnN0YWdlID09ICdmb3VyJykgeworICAgIGNvbnNvbGUubG9nKCc0
LiBHb3QgYmFjayB0byBwYWdlIDIuICBJbW1lZGlhdGVseSBnb2luZyBmb3J3YXJkLicpOworICAg
IHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3RhZ2UgPSAnZml2ZSc7CisgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAgICAgaGlzdG9yeS5mb3J3YXJkKCk7CisgICAgfSwgMCk7Cit9CisKKzwv
c2NyaXB0PgorPCEtLSBTbG93IGltYWdlIHRvIGxldCB1cyB0byBnbyBmb3J3YXJkIHdoaWxlIHRo
ZSBwYWdlIGlzIHN0aWxsIGxvYWRpbmcuIC0tPgorPGltZyBzcmM9InNsb3ctcmVzb3VyY2UucGw/
ZGVsYXk9MTAwIj48L2lmcmFtZT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82993</attachid>
            <date>2011-02-18 12:15:00 -0800</date>
            <delta_ts>2011-02-18 14:56:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54517-20110218121459.patch</filename>
            <type>text/plain</type>
            <size>34618</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5MDE1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDItMTggIENoYXJsaWUg
UmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBFbnN1cmUgbG9hZGluZyBoYXMgc3RvcHBlZCBpbiBIaXN0b3J5
Q29udHJvbGxlcjo6Z29Ub0l0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU0NTE3CisKKyAgICAgICAgQXZvaWQgc3RvcHBpbmcgYWxsIGxvYWRlcnMg
aW4gZ29Ub0l0ZW0gZm9yIHNhbWUgZG9jdW1lbnQgbmF2aWdhdGlvbnMKKyAgICAgICAgb3IgcHNl
dWRvLWJhY2stZm9yd2FyZCBVUkxzLiAgTWFrZSBIaXN0b3J5Q29udHJvbGxlcjo6Z29Ub0l0ZW0g
cHJpdmF0ZQorICAgICAgICB0byBmb3JjZSBjYWxsZXJzIHRvIGdvIHRocm91Z2ggUGFnZTo6Z29U
b0l0ZW0uICBBbHNvIGFkZCBhIGNhbGxiYWNrIHRvCisgICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50
IHRvIGxldCBjbGllbnRzIGRlY2lkZSB3aGV0aGVyIHRvIHN0b3AgbG9hZGluZyBmaXJzdC4KKwor
ICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC10by1mcmFnbWVudC1m
aXJlcy1vbmxvYWQuaHRtbAorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9IaXN0
b3J5Q29udHJvbGxlci5jcHA6CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmg6
CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKwogMjAxMS0wMi0xOCAgQmVuIFZhbmlrICA8YmVu
dmFuaWtAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA3OTAxNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzUwLDYgKzM1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFs
SGlzdG9yeSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJl
Y3RMaW5rcygpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlz
dG9yeUl0ZW0qKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRBZGRCYWNrRm9yd2FyZEl0ZW0o
SGlzdG9yeUl0ZW0qKSBjb25zdCB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZW1v
dmVCYWNrRm9yd2FyZEl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdCB7IH07CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ2hhbmdlQmFja0ZvcndhcmRJbmRleCgpIGNvbnN0IHsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDc5MDE1
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE4Nyw2ICsxODcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpID0gMDsKIAogICAg
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkR29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29u
c3QgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5
SXRlbShIaXN0b3J5SXRlbSopIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQWRkQmFja0ZvcndhcmRJdGVtKEhpc3RvcnlJdGVtKikgY29uc3QgPSAwOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oSGlzdG9yeUl0
ZW0qKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUJh
Y2tGb3J3YXJkSW5kZXgoKSBjb25zdCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SGlzdG9yeUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDc5MDE1KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDYg
KzIxNywxOCBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbnZhbGlkYXRlQ3VycmVuCiAgICAg
ICAgIHBhZ2VDYWNoZSgpLT5yZW1vdmUoY3VycmVudEl0ZW0oKSk7CiB9CiAKK2Jvb2wgSGlzdG9y
eUNvbnRyb2xsZXI6OnNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0q
IHRhcmdldEl0ZW0pIGNvbnN0Cit7CisgICAgaWYgKCFtX2N1cnJlbnRJdGVtKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBEb24ndCBhYm9ydCB0aGUgY3VycmVudCBsb2FkIGlmIHdl
J3JlIG5hdmlnYXRpbmcgd2l0aGluIHRoZSBjdXJyZW50IGRvY3VtZW50LgorICAgIGlmIChtX2N1
cnJlbnRJdGVtLT5zaG91bGREb1NhbWVEb2N1bWVudE5hdmlnYXRpb25Ubyh0YXJnZXRJdGVtKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fZnJhbWUtPmxvYWRlcigpLT5j
bGllbnQoKS0+c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbSh0YXJnZXRJdGVtKTsKK30K
KwogLy8gTWFpbiBmdW5uZWwgZm9yIG5hdmlnYXRpbmcgdG8gYSBwcmV2aW91cyBsb2NhdGlvbiAo
YmFjay9mb3J3YXJkLCBub24tc2VhcmNoIHNuYXAtYmFjaykKIC8vIFRoaXMgaW5jbHVkZXMgcmVj
dXJzaW9uIHRvIGhhbmRsZSBsb2FkaW5nIGludG8gZnJhbWVzZXRzIHByb3Blcmx5CiB2b2lkIEhp
c3RvcnlDb250cm9sbGVyOjpnb1RvSXRlbShIaXN0b3J5SXRlbSogdGFyZ2V0SXRlbSwgRnJhbWVM
b2FkVHlwZSB0eXBlKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmgJKHJldmlzaW9uIDc5MDE1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlD
b250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDggKzYwLDYgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBpbnZhbGlkYXRlQ3VycmVudEl0ZW1DYWNoZWRQYWdlKCk7CiAKLSAgICB2b2lkIGdv
VG9JdGVtKEhpc3RvcnlJdGVtKiwgRnJhbWVMb2FkVHlwZSk7Ci0KICAgICB2b2lkIHVwZGF0ZUZv
ckJhY2tGb3J3YXJkTmF2aWdhdGlvbigpOwogICAgIHZvaWQgdXBkYXRlRm9yUmVsb2FkKCk7CiAg
ICAgdm9pZCB1cGRhdGVGb3JTdGFuZGFyZExvYWQoSGlzdG9yeVVwZGF0ZVR5cGUgdXBkYXRlVHlw
ZSA9IFVwZGF0ZUFsbCk7CkBAIC04NSw2ICs4MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBs
YWNlU3RhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNz
IFBhZ2U7CisgICAgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJ
dGVtKikgY29uc3Q7CisgICAgdm9pZCBnb1RvSXRlbShIaXN0b3J5SXRlbSosIEZyYW1lTG9hZFR5
cGUpOworCiAgICAgdm9pZCBpbml0aWFsaXplSXRlbShIaXN0b3J5SXRlbSopOwogICAgIFBhc3NS
ZWZQdHI8SGlzdG9yeUl0ZW0+IGNyZWF0ZUl0ZW0oKTsKICAgICBQYXNzUmVmUHRyPEhpc3RvcnlJ
dGVtPiBjcmVhdGVJdGVtVHJlZShGcmFtZSogdGFyZ2V0RnJhbWUsIGJvb2wgY2xpcEF0VGFyZ2V0
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gNzkwMTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsMjUgKzMzMSwxMCBAQCB2
b2lkIFBhZ2U6OmdvVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtLCBGCiAgICAgLy8gc3RvcEFsbExv
YWRlcnMgbWF5IGVuZCB1cCBydW5uaW5nIG9ubG9hZCBoYW5kbGVycywgd2hpY2ggY291bGQgY2F1
c2UgZnVydGhlciBoaXN0b3J5IHRyYXZlcnNhbHMgdGhhdCBtYXkgbGVhZCB0byB0aGUgcGFzc2Vk
IGluIEhpc3RvcnlJdGVtCiAgICAgLy8gYmVpbmcgZGVyZWYoKS1lZC4gTWFrZSBzdXJlIHdlIGNh
biBzdGlsbCB1c2UgaXQgd2l0aCBIaXN0b3J5Q29udHJvbGxlcjo6Z29Ub0l0ZW0gbGF0ZXIuCiAg
ICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBwcm90ZWN0b3IoaXRlbSk7Ci0gICAgCi0gICAgLy8gQWJv
cnQgYW55IGN1cnJlbnQgbG9hZCB1bmxlc3Mgd2UncmUgbmF2aWdhdGluZyB0aGUgY3VycmVudCBk
b2N1bWVudCB0byBhIG5ldyBzdGF0ZSBvYmplY3QKLSAgICBIaXN0b3J5SXRlbSogY3VycmVudEl0
ZW0gPSBtX21haW5GcmFtZS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+Y3VycmVudEl0ZW0oKTsKLSAg
ICBpZiAoIWl0ZW0tPnN0YXRlT2JqZWN0KCkgfHwgIWN1cnJlbnRJdGVtIHx8IGl0ZW0tPmRvY3Vt
ZW50U2VxdWVuY2VOdW1iZXIoKSAhPSBjdXJyZW50SXRlbS0+ZG9jdW1lbnRTZXF1ZW5jZU51bWJl
cigpIHx8IGl0ZW0gPT0gY3VycmVudEl0ZW0pIHsKLSAgICAgICAgLy8gRGVmaW5lIHdoYXQgdG8g
ZG8gd2l0aCBhbnkgb3BlbiBkYXRhYmFzZSBjb25uZWN0aW9ucy4gQnkgZGVmYXVsdCB3ZSBzdG9w
IHRoZW0gYW5kIHRlcm1pbmF0ZSB0aGUgZGF0YWJhc2UgdGhyZWFkLgotICAgICAgICBEYXRhYmFz
ZVBvbGljeSBkYXRhYmFzZVBvbGljeSA9IERhdGFiYXNlUG9saWN5U3RvcDsKLQotI2lmIEVOQUJM
RShEQVRBQkFTRSkKLSAgICAgICAgLy8gSWYgd2UncmUgbmF2aWdhdGluZyB0aGUgaGlzdG9yeSB2
aWEgYSBmcmFnbWVudCBvbiB0aGUgc2FtZSBkb2N1bWVudCwgdGhlbiB3ZSBkbyBub3Qgd2FudCB0
byBzdG9wIGRhdGFiYXNlcy4KLSAgICAgICAgY29uc3QgS1VSTCYgY3VycmVudFVSTCA9IG1fbWFp
bkZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKLSAgICAgICAgY29uc3QgS1VSTCYgbmV3VVJMID0g
aXRlbS0+dXJsKCk7Ci0gICAgCi0gICAgICAgIGlmIChuZXdVUkwuaGFzRnJhZ21lbnRJZGVudGlm
aWVyKCkgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjdXJyZW50VVJMLCBuZXdV
UkwpKQotICAgICAgICAgICAgZGF0YWJhc2VQb2xpY3kgPSBEYXRhYmFzZVBvbGljeUNvbnRpbnVl
OwotI2VuZGlmCiAKLSAgICAgICAgbV9tYWluRnJhbWUtPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVy
cyhkYXRhYmFzZVBvbGljeSk7Ci0gICAgfQotICAgICAgICAKKyAgICBpZiAobV9tYWluRnJhbWUt
PmxvYWRlcigpLT5oaXN0b3J5KCktPnNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oaXRl
bSkpCisgICAgICAgIG1fbWFpbkZyYW1lLT5sb2FkZXIoKS0+c3RvcEFsbExvYWRlcnMoKTsKKwog
ICAgIG1fbWFpbkZyYW1lLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5nb1RvSXRlbShpdGVtLCB0eXBl
KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gNzkwMTUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wMi0xOCAg
Q2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuc3VyZSBsb2FkaW5nIGhhcyBzdG9wcGVkIGlu
IEhpc3RvcnlDb250cm9sbGVyOjpnb1RvSXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ1MTcKKworICAgICAgICBBZGQgYSBGcmFtZUxvYWRlckNs
aWVudCBjYWxsYmFjayBmb3Igd2hldGhlciB0byBzdG9wIGxvYWRpbmcgYmVmb3JlIGdvVG9JdGVt
LgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLXRvLWZyYWdt
ZW50LWZpcmVzLW9ubG9hZC5odG1sCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKTogQWRkZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDEx
LTAyLTE4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAJKHJldmlzaW9uIDc5MDE1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg2Niw2ICs4NjYsMTEgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkR29Ub0hp
cwogICAgIHJldHVybiBzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbTsKIH0KIAorYm9vbCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShIaXN0
b3J5SXRlbSogaXRlbSkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRBZGRCYWNrRm9yd2FyZEl0ZW0oSGlzdG9yeUl0
ZW0qKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTMyLDYgKzEzMiw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUds
b2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZEdvVG9IaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKFdlYkNvcmU6Okhpc3RvcnlJ
dGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQWRkQmFja0ZvcndhcmRJ
dGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlQmFja0ZvcndhcmRJbmRleCgpIGNv
bnN0OwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5MDE1KQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMSBAQAorMjAxMS0wMi0xOCAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuc3VyZSBs
b2FkaW5nIGhhcyBzdG9wcGVkIGluIEhpc3RvcnlDb250cm9sbGVyOjpnb1RvSXRlbQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ1MTcKKworICAgICAg
ICBDYWxsIFBhZ2U6OmdvVG9JdGVtIGluc3RlYWQgb2YgSGlzdG9yeUNvbnRyb2xsZXI6OmdvVG9J
dGVtLCBzbyB0aGF0CisgICAgICAgIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyBpcyBjYWxs
ZWQgZmlyc3QuICBBbHNvIGFkZHMgYSBjYWxsYmFjayBpbgorICAgICAgICBGcmFtZUxvYWRlckNs
aWVudCBmb3IgY2hlY2tpbmcgZm9yIHBzZXVkby1iYWNrLWZvcndhcmQgVVJMcy4KKworICAgICAg
ICBUZXN0OiBodHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC10by1mcmFnbWVudC1maXJlcy1v
bmxvYWQuaHRtbAorCisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6c2hvdWxkU3RvcExvYWRpbmdG
b3JIaXN0b3J5SXRlbSk6IEFkZGVkLgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuaDoKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKwogMjAxMS0wMi0xOCAgQmVu
IFZhbmlrICA8YmVudmFuaWtAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5u
ZXRoIFJ1c3NlbGwuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRl
ckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDc5MDE1KQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTEzNSw2ICsxMTM1LDE0IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpzaG91
bGRHb1RvSGkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjpzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKiB0YXJnZXRJ
dGVtKSBjb25zdAoreworICAgIC8vIERvbid0IHN0b3AgbG9hZGluZyBmb3IgcHNldWRvLWJhY2st
Zm9yd2FyZCBVUkxzLCBzaW5jZSB0aGV5IHdpbGwgZ2V0CisgICAgLy8gdHJhbnNsYXRlZCBhbmQg
dGhlbiBwYXNzIHRocm91Z2ggYWdhaW4uCisgICAgY29uc3QgS1VSTCYgdXJsID0gdGFyZ2V0SXRl
bS0+dXJsKCk7CisgICAgcmV0dXJuICF1cmwucHJvdG9jb2xJcyhiYWNrRm9yd2FyZE5hdmlnYXRp
b25TY2hlbWUpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRB
ZGRCYWNrRm9yd2FyZEl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdAogewogfQpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHJl
dmlzaW9uIDc5MDE1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKTsKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkR29Ub0hpc3RvcnlJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7CisgICAgdmly
dHVhbCBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9y
eUl0ZW0qKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRBZGRCYWNrRm9yd2Fy
ZEl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25z
dDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VCYWNrRm9yd2FyZEluZGV4KCkg
Y29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5j
cHAJKHJldmlzaW9uIDc5MDE1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJh
bWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODk4LDggKzg5OCw4IEBAIHZvaWQgV2ViRnJh
bWVJbXBsOjpsb2FkSGlzdG9yeUl0ZW0oY29uc3QKICAgICAgICAgbV9mcmFtZS0+cGFnZSgpLT5i
YWNrRm9yd2FyZCgpLT5zZXRDdXJyZW50SXRlbShjdXJyZW50SXRlbS5nZXQoKSk7CiAgICAgfQog
Ci0gICAgbV9mcmFtZS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+Z29Ub0l0ZW0oCi0gICAgICAgIGhp
c3RvcnlJdGVtLmdldCgpLCBGcmFtZUxvYWRUeXBlSW5kZXhlZEJhY2tGb3J3YXJkKTsKKyAgICBt
X2ZyYW1lLT5wYWdlKCktPmdvVG9JdGVtKGhpc3RvcnlJdGVtLmdldCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9yd2FyZCk7CiB9CiAK
IHZvaWQgV2ViRnJhbWVJbXBsOjpsb2FkRGF0YShjb25zdCBXZWJEYXRhJiBkYXRhLApJbmRleDog
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gNzkwMTUpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wMi0xOCAgQ2hhcmxp
ZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEVuc3VyZSBsb2FkaW5nIGhhcyBzdG9wcGVkIGluIEhpc3Rv
cnlDb250cm9sbGVyOjpnb1RvSXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTQ1MTcKKworICAgICAgICBBZGQgYSBGcmFtZUxvYWRlckNsaWVudCBj
YWxsYmFjayBmb3Igd2hldGhlciB0byBzdG9wIGxvYWRpbmcgYmVmb3JlIGdvVG9JdGVtLgorCisg
ICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLXRvLWZyYWdtZW50LWZp
cmVzLW9ubG9hZC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6c2hv
dWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbSk6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6CisKIDIwMTEtMDItMTcgIFJ5dWFuIENob2kg
IDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFt
dXJhLgpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gNzkwMTUpCisrKyBTb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUxMCw2ICs1MTAsMTEgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudEVmbDo6
c2hvdWxkR29Ub0hpcwogICAgIHJldHVybiBpdGVtOwogfQogCitib29sIEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKiBpdGVt
KSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
RWZsOjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5oCShyZXZpc2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE2NCw2ICsxNjQsNyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBG
cmFtCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKTsKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKTsKICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkR29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25z
dDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBL
VVJMJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5MDE1KQorKysgU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTEtMDItMTggIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbnN1cmUgbG9hZGluZyBoYXMg
c3RvcHBlZCBpbiBIaXN0b3J5Q29udHJvbGxlcjo6Z29Ub0l0ZW0KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NTE3CisKKyAgICAgICAgQWRkIGEgRnJh
bWVMb2FkZXJDbGllbnQgY2FsbGJhY2sgZm9yIHdoZXRoZXIgdG8gc3RvcCBsb2FkaW5nIGJlZm9y
ZSBnb1RvSXRlbS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2Fy
ZC10by1mcmFnbWVudC1maXJlcy1vbmxvYWQuaHRtbAorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRl
ckNsaWVudEd0azo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbSk6IEFkZGVkLgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmg6CisKIDIwMTEtMDIt
MTggIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJl
dmlzaW9uIDc5MDE1KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDgsNiArODA4LDExIEBAIGJv
b2wgRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEdvVG9IaXN0b3IKICAgICByZXR1cm4gaXRlbSAh
PSAwOwogfQogCitib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRTdG9wTG9hZGluZ0Zvckhp
c3RvcnlJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOwor
fQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEFkZEJhY2tGb3J3YXJkSXRl
bShIaXN0b3J5SXRlbSopIGNvbnN0CiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJldmlzaW9u
IDc5MDE1KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKTsKICAg
ICAgICAgdmlydHVhbCBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5
SXRlbSopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RvcExvYWRpbmdGb3JI
aXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0OwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRBZGRCYWNrRm9yd2FyZEl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0q
KSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVtb3ZlQmFja0Zvcndh
cmRJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENoYW5nZUJhY2tGb3J3YXJkSW5kZXgoKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvaGFp
a3UvQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvaGFpa3UvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDItMTggIENoYXJs
aWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBFbnN1cmUgbG9hZGluZyBoYXMgc3RvcHBlZCBpbiBIaXN0
b3J5Q29udHJvbGxlcjo6Z29Ub0l0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU0NTE3CisKKyAgICAgICAgQWRkIGEgRnJhbWVMb2FkZXJDbGllbnQg
Y2FsbGJhY2sgZm9yIHdoZXRoZXIgdG8gc3RvcCBsb2FkaW5nIGJlZm9yZSBnb1RvSXRlbS4KKwor
ICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC10by1mcmFnbWVudC1m
aXJlcy1vbmxvYWQuaHRtbAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1
OjpzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKTogQWRkZWQuCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oOgorCiAyMDExLTAxLTI2ICBNT1JJ
VEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFJ5
b3N1a2UgTml3YS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRIYWlrdS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9oYWlr
dS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAkocmV2aXNpb24gNzkw
MTUpCisrKyBTb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODMsNiArNDgzLDExIEBAIGJvb2wgRnJh
bWVMb2FkZXJDbGllbnRIYWlrdTo6c2hvdWxkR29Ub0gKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
Ym9vbCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJ
dGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwogdm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZEFkZEJhY2tGb3J3YXJk
SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0CiB7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3UuaAkocmV2aXNpb24gNzkwMTUpCisrKyBTb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5
LDYgKzE1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUdsb2JhbEhpc3RvcnkoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhp
c3RvcnlSZWRpcmVjdExpbmtzKCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1RvSGlz
dG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBib29sIHNob3Vs
ZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQWRkQmFja0ZvcndhcmRJdGVtKEhpc3RvcnlJdGVtKikg
Y29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlbW92ZUJhY2tGb3J3YXJk
SXRlbShIaXN0b3J5SXRlbSopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDaGFuZ2VCYWNrRm9yd2FyZEluZGV4KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTAyLTE4ICBDaGFybGllIFJlaXMgIDxjcmVpc0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRW5zdXJlIGxvYWRpbmcgaGFzIHN0b3BwZWQgaW4gSGlzdG9yeUNvbnRyb2xsZXI6Omdv
VG9JdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NDUxNworCisgICAgICAgIEFkZCBhIEZyYW1lTG9hZGVyQ2xpZW50IGNhbGxiYWNrIGZvciB3aGV0
aGVyIHRvIHN0b3AgbG9hZGluZyBiZWZvcmUgZ29Ub0l0ZW0uCisKKyAgICAgICAgVGVzdDogaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtdG8tZnJhZ21lbnQtZmlyZXMtb25sb2FkLmh0bWwK
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0
ZW0pOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorCiAyMDExLTAyLTE2ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZp
c2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpOwog
CiAgICAgdmlydHVhbCBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5
SXRlbSopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3Rv
cnlJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQWRkQmFja0ZvcndhcmRJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKFdlYkNv
cmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hh
bmdlQmFja0ZvcndhcmRJbmRleCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlz
aW9uIDc5MDE1KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTkzNyw2ICs5MzcsMTEgQEAgYm9vbCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkR29Ub0hpcwogICAgIHJldHVybiBbW3ZpZXcgX3Bv
bGljeURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OnZpZXcgc2hvdWxkR29Ub0hpc3RvcnlJdGVt
OndlYkl0ZW1dOwogfQogCitib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRTdG9wTG9h
ZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKSBjb25zdAoreworICAgIHJldHVy
biB0cnVlOworfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEFkZEJh
Y2tGb3J3YXJkSXRlbShIaXN0b3J5SXRlbSopIGNvbnN0CiB7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxv
ZwkocmV2aXNpb24gNzkwMTUpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTAyLTE4ICBDaGFybGllIFJlaXMgIDxjcmVp
c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRW5zdXJlIGxvYWRpbmcgaGFzIHN0b3BwZWQgaW4gSGlzdG9yeUNvbnRyb2xsZXI6
OmdvVG9JdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NDUxNworCisgICAgICAgIEFkZCBhIEZyYW1lTG9hZGVyQ2xpZW50IGNhbGxiYWNrIGZvciB3
aGV0aGVyIHRvIHN0b3AgbG9hZGluZyBiZWZvcmUgZ29Ub0l0ZW0uCisKKyAgICAgICAgVGVzdDog
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtdG8tZnJhZ21lbnQtZmlyZXMtb25sb2FkLmh0
bWwKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkU3RvcExvYWRpbmdG
b3JIaXN0b3J5SXRlbSk6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuaDoKKwogMjAxMS0wMi0xMCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3Rp
bmlAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpJbmRl
eDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuY3BwCShyZXZpc2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgy
Nyw2ICs4MjcsMTEgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpzaG91bGRHb1RvSGlzdAog
ICAgIHJldHVybiB0cnVlOwogfQogCitib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNob3VsZFN0
b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKikgY29uc3QKK3sK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRj
aERpZEFkZEJhY2tGb3J3YXJkSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0CiB7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuaAkocmV2aXNpb24gNzkwMTUpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU0
LDYgKzE1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9y
eSgpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygp
OwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShI
aXN0b3J5SXRlbSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEFkZEJhY2tG
b3J3YXJkSXRlbShIaXN0b3J5SXRlbSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShIaXN0b3J5SXRlbSopIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUJhY2tGb3J3YXJkSW5kZXgoKSBjb25zdDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5MDE1KQorKysgU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDItMTggIENoYXJs
aWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBFbnN1cmUgbG9hZGluZyBoYXMgc3RvcHBlZCBpbiBIaXN0
b3J5Q29udHJvbGxlcjo6Z29Ub0l0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU0NTE3CisKKyAgICAgICAgQWRkIGEgRnJhbWVMb2FkZXJDbGllbnQg
Y2FsbGJhY2sgZm9yIHdoZXRoZXIgdG8gc3RvcCBsb2FkaW5nIGJlZm9yZSBnb1RvSXRlbS4KKwor
ICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC10by1mcmFnbWVudC1m
aXJlcy1vbmxvYWQuaHRtbAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFN0b3BM
b2FkaW5nRm9ySGlzdG9yeUl0ZW0pOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDExLTAyLTE2ICBEYXZpZCBIeWF0dCAgPGh5YXR0
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDog
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gNzkwMTUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYwMiw2ICs2MDIsMTEgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkR29Ub0hp
cwogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91
bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRB
ZGRCYWNrRm9yd2FyZEl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdAogewogfQpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCShyZXZpc2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCk7CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCk7CiAgICAgdmly
dHVhbCBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKFdl
YkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
QWRkQmFja0ZvcndhcmRJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKFdlYkNvcmU6Okhpc3Rv
cnlJdGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlQmFja0Zv
cndhcmRJbmRleCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5
MDE1KQorKysgU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOCBAQAorMjAxMS0wMi0xOCAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVu
c3VyZSBsb2FkaW5nIGhhcyBzdG9wcGVkIGluIEhpc3RvcnlDb250cm9sbGVyOjpnb1RvSXRlbQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ1MTcKKwor
ICAgICAgICBBZGQgYSBGcmFtZUxvYWRlckNsaWVudCBjYWxsYmFjayBmb3Igd2hldGhlciB0byBz
dG9wIGxvYWRpbmcgYmVmb3JlIGdvVG9JdGVtLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMv
bmF2aWdhdGlvbi9mb3J3YXJkLXRvLWZyYWdtZW50LWZpcmVzLW9ubG9hZC5odG1sCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0
b3J5SXRlbSk6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0UuaDoKKwogMjAxMS0wMi0xMCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlA
b3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpJbmRleDog
U291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNF
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCShyZXZpc2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJL
aXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0OCw2ICsyNDgsMTEgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudFdpbkNF
OjpzaG91bGRHb1RvSAogICAgIHJldHVybiBpdGVtOwogfQogCitib29sIEZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0U6OnNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qIGl0
ZW0pIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRXaW5DRTo6ZGlzcGF0Y2hEaWRBZGRCYWNrRm9yd2FyZEl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25z
dAogewogfQpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFdpbkNFLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgJKHJldmlzaW9uIDc5MDE1KQorKysg
U291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNF
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw2ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xv
YmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkR29Ub0hp
c3RvcnlJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBj
b25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRBZGRCYWNrRm9yd2FyZEl0ZW0oV2Vi
Q29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRS
ZW1vdmVCYWNrRm9yd2FyZEl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VCYWNrRm9yd2FyZEluZGV4KCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gNzkwMTUpCisrKyBTb3VyY2UvV2ViS2l0L3d4L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTAyLTE4ICBDaGFy
bGllIFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRW5zdXJlIGxvYWRpbmcgaGFzIHN0b3BwZWQgaW4gSGlz
dG9yeUNvbnRyb2xsZXI6OmdvVG9JdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NDUxNworCisgICAgICAgIEFkZCBhIEZyYW1lTG9hZGVyQ2xpZW50
IGNhbGxiYWNrIGZvciB3aGV0aGVyIHRvIHN0b3AgbG9hZGluZyBiZWZvcmUgZ29Ub0l0ZW0uCisK
KyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtdG8tZnJhZ21lbnQt
ZmlyZXMtb25sb2FkLmh0bWwKKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpzaG91
bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKTogQWRkZWQuCisgICAgICAgICogV2ViS2l0U3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6CisKIDIwMTEtMDItMTcgIEtldmluIE9sbGl2aWVy
ICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBCdWlsZCBmaXggYWZ0
ZXIgbW92ZSBvZiBEb2N1bWVudFdyaXRlciB0byBEb2N1bWVudExvYWRlci4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRX
eC5jcHAJKHJldmlzaW9uIDc5MDE1KQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzcsNiArNTc3LDEx
IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRXeDo6c2hvdWxkR29Ub0hpc3QKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorYm9vbCBGcmFtZUxvYWRlckNsaWVudFd4OjpzaG91bGRTdG9wTG9hZGluZ0Zv
ckhpc3RvcnlJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3QKK3sKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEFkZEJhY2tG
b3J3YXJkSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0CiB7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4
LmgJKHJldmlzaW9uIDc5MDE1KQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50V3guaAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDYgKzE2MCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3Rv
cnkoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExp
bmtzKCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9y
eUl0ZW0qKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9y
SGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQWRkQmFja0ZvcndhcmRJdGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShIaXN0b3J5SXRl
bSopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VCYWNrRm9y
d2FyZEluZGV4KCkgY29uc3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTAxNSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTAyLTE4
ICBDaGFybGllIFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5zdXJlIGxvYWRpbmcgaGFzIHN0b3BwZWQg
aW4gSGlzdG9yeUNvbnRyb2xsZXI6OmdvVG9JdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDUxNworCisgICAgICAgIFRlc3RzIHRoYXQgZ29pbmcg
Zm9yd2FyZCB3aXRoaW4gdGhlIHNhbWUgZG9jdW1lbnQgZG9lcyBub3Qgc3RvcCBsb2FkaW5nLgor
CisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtdG8tZnJhZ21lbnQtZmly
ZXMtb25sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9m
b3J3YXJkLXRvLWZyYWdtZW50LWZpcmVzLW9ubG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC10by1mcmFnbWVu
dC1maXJlcy1vbmxvYWQtMi5odG1sOiBBZGRlZC4KKwogMjAxMS0wMi0xOCAgTWFydGluIFJvYmlu
c29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgSW1wb3J0IGFub3RoZXIgc2V0
IG9mIEdUSysgYmFzZWxpbmVzIGZvciB0aGUgTW96aWxsYSB0YWJsZSB0ZXN0cy4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLXRvLWZyYWdtZW50LWZpcmVz
LW9ubG9hZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL2ZvcndhcmQtdG8tZnJhZ21lbnQtZmlyZXMtb25sb2FkLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3
YXJkLXRvLWZyYWdtZW50LWZpcmVzLW9ubG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTUgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyNzogU3RhcnRpbmcgdGVzdC4K
K0NPTlNPTEUgTUVTU0FHRTogbGluZSA2OiAxLiBHb3QgdG8gcGFnZSAyLiAgR29pbmcgdG8gI2Zv
by4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMjogMi4gR290IHRvIHBhZ2UgMiAjZm9vLiAgR29p
bmcgYmFjayB0byBzdGFydC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNzogMy4gR290IGJhY2sg
dG8gc3RhcnQuICBHb2luZyBmb3J3YXJkIHRvIHBhZ2UgMi4KK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSAyOTogNC4gR290IGJhY2sgdG8gcGFnZSAyLiAgSW1tZWRpYXRlbHkgZ29pbmcgZm9yd2FyZC4K
K0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMzogNS4gR290IHRvIHBhZ2UgMiBvbmxvYWQuICBTdWNj
ZXNzLgorVGVzdHMgdGhhdCBsb2FkaW5nIGlzIG5vdCBzdG9wcGVkIGJ5IGdvaW5nIGZvcndhcmQg
dG8gYSBmcmFnbWVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC10by1mcmFnbWVudC1maXJlcy1vbmxv
YWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24v
Zm9yd2FyZC10by1mcmFnbWVudC1maXJlcy1vbmxvYWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLXRvLWZyYWdtZW50LWZpcmVz
LW9ubG9hZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
anMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorICA8c2NyaXB0IHNyYz0iLi4v
Li4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgbG9hZGluZyBpcyBub3Qgc3Rv
cHBlZCBieSBnb2luZyBmb3J3YXJkIHRvIGEgZnJhZ21lbnQuJyk7CisKK29ubG9hZCA9IGZ1bmN0
aW9uKCkKK3sKKyAgICBpZiAod2luZG93LmxvY2FsU3RvcmFnZS5zdGFnZSA9PSAndGhyZWUnKSB7
CisgICAgICAgIGNvbnNvbGUubG9nKCczLiBHb3QgYmFjayB0byBzdGFydC4gIEdvaW5nIGZvcndh
cmQgdG8gcGFnZSAyLicpOworICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnN0YWdlID0gJ2Zv
dXInOworICAgICAgICBoaXN0b3J5LmZvcndhcmQoKTsKKyAgICB9IGVsc2UgaWYgKHdpbmRvdy5s
b2NhbFN0b3JhZ2Uuc3RhZ2UgPT0gJ3NpeCcpIHsKKyAgICAgICAgZGVsZXRlIHdpbmRvdy5sb2Nh
bFN0b3JhZ2Uuc3RhZ2U7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIC8vIFRvIG1ha2Ugc3VyZSB0aGF0IHdlIGhpdCB0aGlzIGJyYW5jaCwgbG9nIHRoaXMg
dG8gdGhlIGNvbnNvbGUgc28gdGhhdAorICAgICAgICAvLyBpdCBzaG93cyB1cCBpbiBleHBlY3Rl
ZCBvdXRwdXQgKGRlYnVnKCkgd2lsbCBiZSBibG93biBhd2F5IG9uY2Ugd2UKKyAgICAgICAgLy8g
bmF2aWdhdGUgb3V0KS4KKyAgICAgICAgY29uc29sZS5sb2coJ1N0YXJ0aW5nIHRlc3QuJyk7Cisg
ICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3RhZ2UgPSAnb25lJzsKKyAgICAgICAgLy8gTmF2
aWdhdGUgaW4gYSB0aW1lb3V0IHRvIG1ha2Ugc3VyZSB3ZSBjcmVhdGUgYSBoaXN0b3J5IGVudHJ5
LgorICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgd2luZG93Lmxv
Y2F0aW9uLmhyZWYgPSAncmVzb3VyY2VzL2ZvcndhcmQtdG8tZnJhZ21lbnQtZmlyZXMtb25sb2Fk
LTIuaHRtbCc7CisgICAgICAgIH0sIDApOworICAgIH0KK307CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwordmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3JpcHQ+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3Jlc291cmNlcy9mb3J3YXJkLXRvLWZyYWdtZW50LWZpcmVzLW9ubG9hZC0yLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNl
cy9mb3J3YXJkLXRvLWZyYWdtZW50LWZpcmVzLW9ubG9hZC0yLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZvcndhcmQtdG8t
ZnJhZ21lbnQtZmlyZXMtb25sb2FkLTIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBA
QAorUGFnZSAyLgorPHNjcmlwdD4KK29ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAod2lu
ZG93LmxvY2FsU3RvcmFnZS5zdGFnZSA9PSAnb25lJykgeworICAgICAgICBjb25zb2xlLmxvZygn
MS4gR290IHRvIHBhZ2UgMi4gIEdvaW5nIHRvICNmb28uJyk7CisgICAgICAgIHdpbmRvdy5sb2Nh
bFN0b3JhZ2Uuc3RhZ2UgPSAndHdvJzsKKyAgICAgICAgLy8gTmF2aWdhdGUgaW4gYSB0aW1lb3V0
IHRvIG1ha2Ugc3VyZSB3ZSBjcmVhdGUgYSBoaXN0b3J5IGVudHJ5LgorICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnI2Zv
byc7CisgICAgICAgIH0sIDApOworICAgIH0gZWxzZSBpZiAod2luZG93LmxvY2FsU3RvcmFnZS5z
dGFnZSA9PSAnZml2ZScpIHsKKyAgICAgICAgY29uc29sZS5sb2coJzUuIEdvdCB0byBwYWdlIDIg
b25sb2FkLiAgU3VjY2Vzcy4nKTsKKyAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zdGFnZSA9
ICdzaXgnOworICAgICAgICBoaXN0b3J5LmdvKC0yKTsKKyAgICB9Cit9OworCitvbmhhc2hjaGFu
Z2UgPSBmdW5jdGlvbigpCit7CisgICAgaWYgKHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3RhZ2UgPT0g
J3R3bycpIHsKKyAgICAgICAgY29uc29sZS5sb2coJzIuIEdvdCB0byBwYWdlIDIgI2Zvby4gIEdv
aW5nIGJhY2sgdG8gc3RhcnQuJyk7CisgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3RhZ2Ug
PSAndGhyZWUnOworICAgICAgICBoaXN0b3J5LmdvKC0yKTsKKyAgICB9Cit9OworCitpZiAod2lu
ZG93LmxvY2FsU3RvcmFnZS5zdGFnZSA9PSAnZm91cicpIHsKKyAgICBjb25zb2xlLmxvZygnNC4g
R290IGJhY2sgdG8gcGFnZSAyLiAgSW1tZWRpYXRlbHkgZ29pbmcgZm9yd2FyZC4nKTsKKyAgICB3
aW5kb3cubG9jYWxTdG9yYWdlLnN0YWdlID0gJ2ZpdmUnOworICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CisgICAgICAgIGhpc3RvcnkuZm9yd2FyZCgpOworICAgIH0sIDApOworfQorCis8L3Nj
cmlwdD4KKzwhLS0gU2xvdyBpbWFnZSB0byBsZXQgdXMgdG8gZ28gZm9yd2FyZCB3aGlsZSB0aGUg
cGFnZSBpcyBzdGlsbCBsb2FkaW5nLiAtLT4KKzxpbWcgc3JjPSJzbG93LXJlc291cmNlLnBsP2Rl
bGF5PTEwMCI+PC9pZnJhbWU+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83017</attachid>
            <date>2011-02-18 14:56:19 -0800</date>
            <delta_ts>2011-02-19 00:29:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54517-20110218145618.patch</filename>
            <type>text/plain</type>
            <size>35355</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5MDE1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDItMTggIENoYXJsaWUg
UmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBFbnN1cmUgbG9hZGluZyBoYXMgc3RvcHBlZCBpbiBIaXN0b3J5
Q29udHJvbGxlcjo6Z29Ub0l0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU0NTE3CisKKyAgICAgICAgQXZvaWQgc3RvcHBpbmcgYWxsIGxvYWRlcnMg
aW4gZ29Ub0l0ZW0gZm9yIHNhbWUgZG9jdW1lbnQgbmF2aWdhdGlvbnMKKyAgICAgICAgb3IgcHNl
dWRvLWJhY2stZm9yd2FyZCBVUkxzLiAgTWFrZSBIaXN0b3J5Q29udHJvbGxlcjo6Z29Ub0l0ZW0g
cHJpdmF0ZQorICAgICAgICB0byBmb3JjZSBjYWxsZXJzIHRvIGdvIHRocm91Z2ggUGFnZTo6Z29U
b0l0ZW0uICBBbHNvIGFkZCBhIGNhbGxiYWNrIHRvCisgICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50
IHRvIGxldCBjbGllbnRzIGRlY2lkZSB3aGV0aGVyIHRvIHN0b3AgbG9hZGluZyBmaXJzdC4KKwor
ICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC10by1mcmFnbWVudC1m
aXJlcy1vbmxvYWQuaHRtbAorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAg
ICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmg6CisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKwogMjAxMS0wMi0xOCAgQmVuIFZhbmlrICA8YmVudmFuaWtAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzUwLDYgKzM1MCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpIHsgfQogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJ
dGVtKEhpc3RvcnlJdGVtKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRBZGRCYWNrRm9yd2FyZEl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdCB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oSGlzdG9y
eUl0ZW0qKSBjb25zdCB7IH07CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlQmFj
a0ZvcndhcmRJbmRleCgpIGNvbnN0IHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmgJKHJldmlzaW9uIDc5MDE1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw2ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgLy8gQWxz
byBub3QgY29vbC4KKyAgICAvLyBGSVhNRTogV2Ugbm8gbG9uZ2VyIG5lZWQgRGF0YWJhc2VQb2xp
Y3ksIHNpbmNlIHdlIGFsd2F5cyBzdG9wIGRhdGFiYXNlcyBub3cuCiAgICAgdm9pZCBzdG9wQWxs
TG9hZGVycyhEYXRhYmFzZVBvbGljeSA9IERhdGFiYXNlUG9saWN5U3RvcCwgQ2xlYXJQcm92aXNp
b25hbEl0ZW1Qb2xpY3kgPSBTaG91bGRDbGVhclByb3Zpc2lvbmFsSXRlbSk7CiAgICAgdm9pZCBz
dG9wRm9yVXNlckNhbmNlbChib29sIGRlZmVyQ2hlY2tMb2FkQ29tcGxldGUgPSBmYWxzZSk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lv
biA3OTAxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xODcsNiArMTg3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKSA9IDA7
CiAKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0b3J5SXRl
bSopIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9y
SGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEFkZEJhY2tGb3J3YXJkSXRlbShIaXN0b3J5SXRlbSopIGNvbnN0ID0gMDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKEhp
c3RvcnlJdGVtKikgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VCYWNrRm9yd2FyZEluZGV4KCkgY29uc3QgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3OTAxNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxNyw2ICsyMTcsMTggQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6aW52YWxpZGF0ZUN1cnJl
bgogICAgICAgICBwYWdlQ2FjaGUoKS0+cmVtb3ZlKGN1cnJlbnRJdGVtKCkpOwogfQogCitib29s
IEhpc3RvcnlDb250cm9sbGVyOjpzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3Rv
cnlJdGVtKiB0YXJnZXRJdGVtKSBjb25zdAoreworICAgIGlmICghbV9jdXJyZW50SXRlbSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRG9uJ3QgYWJvcnQgdGhlIGN1cnJlbnQgbG9h
ZCBpZiB3ZSdyZSBuYXZpZ2F0aW5nIHdpdGhpbiB0aGUgY3VycmVudCBkb2N1bWVudC4KKyAgICBp
ZiAobV9jdXJyZW50SXRlbS0+c2hvdWxkRG9TYW1lRG9jdW1lbnROYXZpZ2F0aW9uVG8odGFyZ2V0
SXRlbSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2ZyYW1lLT5sb2Fk
ZXIoKS0+Y2xpZW50KCktPnNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0odGFyZ2V0SXRl
bSk7Cit9CisKIC8vIE1haW4gZnVubmVsIGZvciBuYXZpZ2F0aW5nIHRvIGEgcHJldmlvdXMgbG9j
YXRpb24gKGJhY2svZm9yd2FyZCwgbm9uLXNlYXJjaCBzbmFwLWJhY2spCiAvLyBUaGlzIGluY2x1
ZGVzIHJlY3Vyc2lvbiB0byBoYW5kbGUgbG9hZGluZyBpbnRvIGZyYW1lc2V0cyBwcm9wZXJseQog
dm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0qIHRhcmdldEl0ZW0s
IEZyYW1lTG9hZFR5cGUgdHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5
Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5
Q29udHJvbGxlci5oCShyZXZpc2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9I
aXN0b3J5Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw4ICs2MCw2IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgaW52YWxpZGF0ZUN1cnJlbnRJdGVtQ2FjaGVkUGFnZSgpOwogCi0gICAg
dm9pZCBnb1RvSXRlbShIaXN0b3J5SXRlbSosIEZyYW1lTG9hZFR5cGUpOwotCiAgICAgdm9pZCB1
cGRhdGVGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb24oKTsKICAgICB2b2lkIHVwZGF0ZUZvclJlbG9h
ZCgpOwogICAgIHZvaWQgdXBkYXRlRm9yU3RhbmRhcmRMb2FkKEhpc3RvcnlVcGRhdGVUeXBlIHVw
ZGF0ZVR5cGUgPSBVcGRhdGVBbGwpOwpAQCAtODUsNiArODMsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgcmVwbGFjZVN0YXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwpOwogCiBwcml2YXRlOgorICAgIGZyaWVu
ZCBjbGFzcyBQYWdlOworICAgIGJvb2wgc2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShI
aXN0b3J5SXRlbSopIGNvbnN0OworICAgIHZvaWQgZ29Ub0l0ZW0oSGlzdG9yeUl0ZW0qLCBGcmFt
ZUxvYWRUeXBlKTsKKwogICAgIHZvaWQgaW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0qKTsKICAg
ICBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjcmVhdGVJdGVtKCk7CiAgICAgUGFzc1JlZlB0cjxI
aXN0b3J5SXRlbT4gY3JlYXRlSXRlbVRyZWUoRnJhbWUqIHRhcmdldEZyYW1lLCBib29sIGNsaXBB
dFRhcmdldCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDc5MDE1KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMxLDI1ICszMzEs
MTAgQEAgdm9pZCBQYWdlOjpnb1RvSXRlbShIaXN0b3J5SXRlbSogaXRlbSwgRgogICAgIC8vIHN0
b3BBbGxMb2FkZXJzIG1heSBlbmQgdXAgcnVubmluZyBvbmxvYWQgaGFuZGxlcnMsIHdoaWNoIGNv
dWxkIGNhdXNlIGZ1cnRoZXIgaGlzdG9yeSB0cmF2ZXJzYWxzIHRoYXQgbWF5IGxlYWQgdG8gdGhl
IHBhc3NlZCBpbiBIaXN0b3J5SXRlbQogICAgIC8vIGJlaW5nIGRlcmVmKCktZWQuIE1ha2Ugc3Vy
ZSB3ZSBjYW4gc3RpbGwgdXNlIGl0IHdpdGggSGlzdG9yeUNvbnRyb2xsZXI6OmdvVG9JdGVtIGxh
dGVyLgogICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gcHJvdGVjdG9yKGl0ZW0pOwotICAgIAotICAg
IC8vIEFib3J0IGFueSBjdXJyZW50IGxvYWQgdW5sZXNzIHdlJ3JlIG5hdmlnYXRpbmcgdGhlIGN1
cnJlbnQgZG9jdW1lbnQgdG8gYSBuZXcgc3RhdGUgb2JqZWN0Ci0gICAgSGlzdG9yeUl0ZW0qIGN1
cnJlbnRJdGVtID0gbV9tYWluRnJhbWUtPmxvYWRlcigpLT5oaXN0b3J5KCktPmN1cnJlbnRJdGVt
KCk7Ci0gICAgaWYgKCFpdGVtLT5zdGF0ZU9iamVjdCgpIHx8ICFjdXJyZW50SXRlbSB8fCBpdGVt
LT5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgIT0gY3VycmVudEl0ZW0tPmRvY3VtZW50U2VxdWVu
Y2VOdW1iZXIoKSB8fCBpdGVtID09IGN1cnJlbnRJdGVtKSB7Ci0gICAgICAgIC8vIERlZmluZSB3
aGF0IHRvIGRvIHdpdGggYW55IG9wZW4gZGF0YWJhc2UgY29ubmVjdGlvbnMuIEJ5IGRlZmF1bHQg
d2Ugc3RvcCB0aGVtIGFuZCB0ZXJtaW5hdGUgdGhlIGRhdGFiYXNlIHRocmVhZC4KLSAgICAgICAg
RGF0YWJhc2VQb2xpY3kgZGF0YWJhc2VQb2xpY3kgPSBEYXRhYmFzZVBvbGljeVN0b3A7Ci0KLSNp
ZiBFTkFCTEUoREFUQUJBU0UpCi0gICAgICAgIC8vIElmIHdlJ3JlIG5hdmlnYXRpbmcgdGhlIGhp
c3RvcnkgdmlhIGEgZnJhZ21lbnQgb24gdGhlIHNhbWUgZG9jdW1lbnQsIHRoZW4gd2UgZG8gbm90
IHdhbnQgdG8gc3RvcCBkYXRhYmFzZXMuCi0gICAgICAgIGNvbnN0IEtVUkwmIGN1cnJlbnRVUkwg
PSBtX21haW5GcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7Ci0gICAgICAgIGNvbnN0IEtVUkwmIG5l
d1VSTCA9IGl0ZW0tPnVybCgpOwotICAgIAotICAgICAgICBpZiAobmV3VVJMLmhhc0ZyYWdtZW50
SWRlbnRpZmllcigpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY3VycmVudFVS
TCwgbmV3VVJMKSkKLSAgICAgICAgICAgIGRhdGFiYXNlUG9saWN5ID0gRGF0YWJhc2VQb2xpY3lD
b250aW51ZTsKLSNlbmRpZgogCi0gICAgICAgIG1fbWFpbkZyYW1lLT5sb2FkZXIoKS0+c3RvcEFs
bExvYWRlcnMoZGF0YWJhc2VQb2xpY3kpOwotICAgIH0KLSAgICAgICAgCisgICAgaWYgKG1fbWFp
bkZyYW1lLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5zaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJ
dGVtKGl0ZW0pKQorICAgICAgICBtX21haW5GcmFtZS0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJz
KCk7CisKICAgICBtX21haW5GcmFtZS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+Z29Ub0l0ZW0oaXRl
bSwgdHlwZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5MDE1KQorKysgU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEt
MDItMTggIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbnN1cmUgbG9hZGluZyBoYXMgc3Rv
cHBlZCBpbiBIaXN0b3J5Q29udHJvbGxlcjo6Z29Ub0l0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NTE3CisKKyAgICAgICAgQWRkIGEgRnJhbWVM
b2FkZXJDbGllbnQgY2FsbGJhY2sgZm9yIHdoZXRoZXIgdG8gc3RvcCBsb2FkaW5nIGJlZm9yZSBn
b1RvSXRlbS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC10
by1mcmFnbWVudC1maXJlcy1vbmxvYWQuaHRtbAorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbSk6IEFkZGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoK
KwogMjAxMS0wMi0xOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NjYsNiArODY2LDExIEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3Vs
ZEdvVG9IaXMKICAgICByZXR1cm4gc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW07CiB9CiAK
K2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0
ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQWRkQmFja0ZvcndhcmRJdGVtKEhp
c3RvcnlJdGVtKikgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gNzkwMTUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEzMiw2ICsxMzIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpOwogICAgIAogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShXZWJDb3JlOjpI
aXN0b3J5SXRlbSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEFkZEJhY2tG
b3J3YXJkSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSop
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUJhY2tGb3J3YXJkSW5k
ZXgoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTAx
NSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTEtMDItMTggIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
bnN1cmUgbG9hZGluZyBoYXMgc3RvcHBlZCBpbiBIaXN0b3J5Q29udHJvbGxlcjo6Z29Ub0l0ZW0K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NTE3CisK
KyAgICAgICAgQ2FsbCBQYWdlOjpnb1RvSXRlbSBpbnN0ZWFkIG9mIEhpc3RvcnlDb250cm9sbGVy
Ojpnb1RvSXRlbSwgc28gdGhhdAorICAgICAgICBGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMg
aXMgY2FsbGVkIGZpcnN0LiAgQWxzbyBhZGRzIGEgY2FsbGJhY2sgaW4KKyAgICAgICAgRnJhbWVM
b2FkZXJDbGllbnQgZm9yIGNoZWNraW5nIGZvciBwc2V1ZG8tYmFjay1mb3J3YXJkIFVSTHMuCisK
KyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtdG8tZnJhZ21lbnQt
ZmlyZXMtb25sb2FkLmh0bWwKKworICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OnNob3VsZFN0b3BM
b2FkaW5nRm9ySGlzdG9yeUl0ZW0pOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisKIDIwMTEtMDIt
MTggIEJlbiBWYW5payAgPGJlbnZhbmlrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgS2VubmV0aCBSdXNzZWxsLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA3OTAxNSkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExMzUsNiArMTEzNSwxNCBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6c2hvdWxkR29Ub0hpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIEZyYW1lTG9hZGVy
Q2xpZW50SW1wbDo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSog
dGFyZ2V0SXRlbSkgY29uc3QKK3sKKyAgICAvLyBEb24ndCBzdG9wIGxvYWRpbmcgZm9yIHBzZXVk
by1iYWNrLWZvcndhcmQgVVJMcywgc2luY2UgdGhleSB3aWxsIGdldAorICAgIC8vIHRyYW5zbGF0
ZWQgYW5kIHRoZW4gcGFzcyB0aHJvdWdoIGFnYWluLgorICAgIGNvbnN0IEtVUkwmIHVybCA9IHRh
cmdldEl0ZW0tPnVybCgpOworICAgIHJldHVybiAhdXJsLnByb3RvY29sSXMoYmFja0ZvcndhcmRO
YXZpZ2F0aW9uU2NoZW1lKTsKK30KKwogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3Bh
dGNoRGlkQWRkQmFja0ZvcndhcmRJdGVtKEhpc3RvcnlJdGVtKikgY29uc3QKIHsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5oCShyZXZpc2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCk7CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCk7CiAgICAgdmlydHVhbCBi
b29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKFdlYkNvcmU6
Okhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQWRkQmFj
a0ZvcndhcmRJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVt
KikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlQmFja0ZvcndhcmRJ
bmRleCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuY3BwCShyZXZpc2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5OCw4ICs4OTgsOCBAQCB2b2lk
IFdlYkZyYW1lSW1wbDo6bG9hZEhpc3RvcnlJdGVtKGNvbnN0CiAgICAgICAgIG1fZnJhbWUtPnBh
Z2UoKS0+YmFja0ZvcndhcmQoKS0+c2V0Q3VycmVudEl0ZW0oY3VycmVudEl0ZW0uZ2V0KCkpOwog
ICAgIH0KIAotICAgIG1fZnJhbWUtPmxvYWRlcigpLT5oaXN0b3J5KCktPmdvVG9JdGVtKAotICAg
ICAgICBoaXN0b3J5SXRlbS5nZXQoKSwgRnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9yd2FyZCk7
CisgICAgbV9mcmFtZS0+cGFnZSgpLT5nb1RvSXRlbShoaXN0b3J5SXRlbS5nZXQoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lTG9hZFR5cGVJbmRleGVkQmFja0ZvcndhcmQp
OwogfQogCiB2b2lkIFdlYkZyYW1lSW1wbDo6bG9hZERhdGEoY29uc3QgV2ViRGF0YSYgZGF0YSwK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5MDE1KQorKysgU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDItMTgg
IENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbnN1cmUgbG9hZGluZyBoYXMgc3RvcHBlZCBp
biBIaXN0b3J5Q29udHJvbGxlcjo6Z29Ub0l0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NTE3CisKKyAgICAgICAgQWRkIGEgRnJhbWVMb2FkZXJD
bGllbnQgY2FsbGJhY2sgZm9yIHdoZXRoZXIgdG8gc3RvcCBsb2FkaW5nIGJlZm9yZSBnb1RvSXRl
bS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC10by1mcmFn
bWVudC1maXJlcy1vbmxvYWQuaHRtbAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRF
Zmw6OnNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0pOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgorCiAyMDExLTAyLTE3ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBL
ZW50IFRhbXVyYS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDc5MDE1KQorKysg
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MTAsNiArNTEwLDExIEBAIGJvb2wgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OnNob3VsZEdvVG9IaXMKICAgICByZXR1cm4gaXRlbTsKIH0KIAorYm9vbCBGcmFtZUxv
YWRlckNsaWVudEVmbDo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShIaXN0b3J5SXRl
bSogaXRlbSkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBGcmFtZUxvYWRl
ckNsaWVudEVmbDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50RWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAkocmV2aXNpb24gNzkwMTUpCisrKyBTb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjQsNiArMTY0LDcgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBw
dWJsaWMgRnJhbQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCk7CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCk7CiAgICAgdmly
dHVhbCBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0b3J5SXRlbSopIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVt
KikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwg
Y29uc3QgS1VSTCYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTAxNSkKKysr
IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4
IEBACisyMDExLTAyLTE4ICBDaGFybGllIFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5zdXJlIGxvYWRp
bmcgaGFzIHN0b3BwZWQgaW4gSGlzdG9yeUNvbnRyb2xsZXI6OmdvVG9JdGVtCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDUxNworCisgICAgICAgIEFk
ZCBhIEZyYW1lTG9hZGVyQ2xpZW50IGNhbGxiYWNrIGZvciB3aGV0aGVyIHRvIHN0b3AgbG9hZGlu
ZyBiZWZvcmUgZ29Ub0l0ZW0uCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L2ZvcndhcmQtdG8tZnJhZ21lbnQtZmlyZXMtb25sb2FkLmh0bWwKKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJh
bWVMb2FkZXJDbGllbnRHdGs6OnNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0pOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorCiAy
MDExLTAyLTE4ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
Y3BwCShyZXZpc2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODA4LDYgKzgwOCwx
MSBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRHb1RvSGlzdG9yCiAgICAgcmV0dXJu
IGl0ZW0gIT0gMDsKIH0KIAorYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkU3RvcExvYWRp
bmdGb3JIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSogaXRlbSkgY29uc3QKK3sKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRBZGRCYWNrRm9y
d2FyZEl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdAogewogfQpJbmRleDogU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCShy
ZXZpc2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3Rvcnko
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtz
KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6
SGlzdG9yeUl0ZW0qKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BMb2Fk
aW5nRm9ySGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQWRkQmFja0ZvcndhcmRJdGVtKFdlYkNvcmU6Okhpc3Rv
cnlJdGVtKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlbW92ZUJh
Y2tGb3J3YXJkSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0OwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VCYWNrRm9yd2FyZEluZGV4KCkgY29uc3Q7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2hhaWt1L0NoYW5nZUxvZwkocmV2aXNpb24gNzkwMTUpCisrKyBTb3VyY2UvV2ViS2l0L2hh
aWt1L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTAyLTE4
ICBDaGFybGllIFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5zdXJlIGxvYWRpbmcgaGFzIHN0b3BwZWQg
aW4gSGlzdG9yeUNvbnRyb2xsZXI6OmdvVG9JdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDUxNworCisgICAgICAgIEFkZCBhIEZyYW1lTG9hZGVy
Q2xpZW50IGNhbGxiYWNrIGZvciB3aGV0aGVyIHRvIHN0b3AgbG9hZGluZyBiZWZvcmUgZ29Ub0l0
ZW0uCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtdG8tZnJh
Z21lbnQtZmlyZXMtb25sb2FkLmh0bWwKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50SGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRIYWlrdTo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbSk6IEFkZGVkLgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaDoKKwogMjAxMS0wMS0y
NiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBSeW9zdWtlIE5pd2EuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHAJKHJldmlz
aW9uIDc5MDE1KQorKysgU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEhhaWt1LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgzLDYgKzQ4MywxMSBAQCBi
b29sIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNob3VsZEdvVG9ICiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6c2hvdWxkU3RvcExvYWRpbmdGb3JI
aXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0Cit7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRBZGRCYWNr
Rm9yd2FyZEl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdAogewogfQpJbmRleDogU291
cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEhhaWt1LmgJKHJldmlzaW9uIDc5MDE1KQorKysgU291cmNlL1dlYktpdC9oYWlr
dS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE1OSw2ICsxNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVH
bG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
R29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEFkZEJhY2tGb3J3YXJkSXRlbShIaXN0b3J5
SXRlbSopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZW1vdmVCYWNr
Rm9yd2FyZEl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ2hhbmdlQmFja0ZvcndhcmRJbmRleCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwkocmV2aXNpb24gNzkwMTUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wMi0xOCAgQ2hhcmxpZSBSZWlzICA8
Y3JlaXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEVuc3VyZSBsb2FkaW5nIGhhcyBzdG9wcGVkIGluIEhpc3RvcnlDb250cm9s
bGVyOjpnb1RvSXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTQ1MTcKKworICAgICAgICBBZGQgYSBGcmFtZUxvYWRlckNsaWVudCBjYWxsYmFjayBm
b3Igd2hldGhlciB0byBzdG9wIGxvYWRpbmcgYmVmb3JlIGdvVG9JdGVtLgorCisgICAgICAgIFRl
c3Q6IGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLXRvLWZyYWdtZW50LWZpcmVzLW9ubG9h
ZC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRTdG9wTG9hZGluZ0Zvckhp
c3RvcnlJdGVtKTogQWRkZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKwogMjAxMS0wMi0xNiAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAkocmV2aXNpb24gNzkwMTUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNiArMTUxLDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlu
a3MoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6
SGlzdG9yeUl0ZW0qKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RvcExvYWRpbmdG
b3JIaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEFkZEJhY2tGb3J3YXJkSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSop
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlbW92ZUJhY2tGb3J3YXJkSXRl
bShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENoYW5nZUJhY2tGb3J3YXJkSW5kZXgoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
CShyZXZpc2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MzcsNiArOTM3LDExIEBA
IGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEdvVG9IaXMKICAgICByZXR1cm4gW1t2
aWV3IF9wb2xpY3lEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp2aWV3IHNob3VsZEdvVG9IaXN0
b3J5SXRlbTp3ZWJJdGVtXTsKIH0KIAorYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxk
U3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSogaXRlbSkgY29uc3QKK3sKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRBZGRCYWNrRm9yd2FyZEl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdAogewogfQpJbmRleDogU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDc5MDE1KQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wMi0xOCAgQ2hhcmxpZSBSZWlz
ICA8Y3JlaXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVuc3VyZSBsb2FkaW5nIGhhcyBzdG9wcGVkIGluIEhpc3RvcnlDb250
cm9sbGVyOjpnb1RvSXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTQ1MTcKKworICAgICAgICBBZGQgYSBGcmFtZUxvYWRlckNsaWVudCBjYWxsYmFj
ayBmb3Igd2hldGhlciB0byBzdG9wIGxvYWRpbmcgYmVmb3JlIGdvVG9JdGVtLgorCisgICAgICAg
IFRlc3Q6IGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLXRvLWZyYWdtZW50LWZpcmVzLW9u
bG9hZC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNob3VsZFN0b3BM
b2FkaW5nRm9ySGlzdG9yeUl0ZW0pOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0Lmg6CisKIDIwMTEtMDItMTAgIEx1aXogQWdvc3RpbmkgIDxsdWl6
LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jl
bi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmNwcAkocmV2aXNpb24gNzkwMTUpCisrKyBTb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04MjcsNiArODI3LDExIEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkR29U
b0hpc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0Ojpz
aG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtICopIGNv
bnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6
ZGlzcGF0Y2hEaWRBZGRCYWNrRm9yd2FyZEl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25z
dAogewogfQpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHJldmlzaW9uIDc5MDE1KQorKysgU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE1NCw2ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2Jh
bEhpc3RvcnkoKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0
TGlua3MoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkR29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJ
dGVtKikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9y
eUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRB
ZGRCYWNrRm9yd2FyZEl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VCYWNrRm9yd2FyZEluZGV4KCkgY29uc3Q7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTAyLTE4
ICBDaGFybGllIFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5zdXJlIGxvYWRpbmcgaGFzIHN0b3BwZWQg
aW4gSGlzdG9yeUNvbnRyb2xsZXI6OmdvVG9JdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDUxNworCisgICAgICAgIEFkZCBhIEZyYW1lTG9hZGVy
Q2xpZW50IGNhbGxiYWNrIGZvciB3aGV0aGVyIHRvIHN0b3AgbG9hZGluZyBiZWZvcmUgZ29Ub0l0
ZW0uCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtdG8tZnJh
Z21lbnQtZmlyZXMtb25sb2FkLmh0bWwKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91
bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKTogQWRkZWQuCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMS0wMi0xNiAgRGF2aWQgSHlhdHQg
IDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDc5MDE1KQorKysgU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MDIsNiArNjAyLDExIEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3Vs
ZEdvVG9IaXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSopIGNvbnN0Cit7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkQWRkQmFja0ZvcndhcmRJdGVtKEhpc3RvcnlJdGVtKikgY29uc3QKIHsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAkocmV2aXNpb24gNzkwMTUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2
ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgp
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpOwog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0
ZW0qKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5
SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEFkZEJhY2tGb3J3YXJkSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShXZWJDb3Jl
OjpIaXN0b3J5SXRlbSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5n
ZUJhY2tGb3J3YXJkSW5kZXgoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCShyZXZp
c2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDItMTggIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBFbnN1cmUgbG9hZGluZyBoYXMgc3RvcHBlZCBpbiBIaXN0b3J5Q29udHJvbGxlcjo6Z29U
b0l0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0
NTE3CisKKyAgICAgICAgQWRkIGEgRnJhbWVMb2FkZXJDbGllbnQgY2FsbGJhY2sgZm9yIHdoZXRo
ZXIgdG8gc3RvcCBsb2FkaW5nIGJlZm9yZSBnb1RvSXRlbS4KKworICAgICAgICBUZXN0OiBodHRw
L3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC10by1mcmFnbWVudC1maXJlcy1vbmxvYWQuaHRtbAor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OnNob3VsZFN0b3BMb2FkaW5n
Rm9ySGlzdG9yeUl0ZW0pOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFdpbkNFLmg6CisKIDIwMTEtMDItMTAgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFn
b3N0aW5pQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAkocmV2aXNpb24gNzkwMTUpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsNiArMjQ4LDExIEBAIGJvb2wgRnJhbWVMb2FkZXJDbGll
bnRXaW5DRTo6c2hvdWxkR29Ub0gKICAgICByZXR1cm4gaXRlbTsKIH0KIAorYm9vbCBGcmFtZUxv
YWRlckNsaWVudFdpbkNFOjpzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJ
dGVtKiBpdGVtKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkQWRkQmFja0ZvcndhcmRJdGVtKEhpc3RvcnlJdGVt
KikgY29uc3QKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
Y2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCShyZXZpc2lvbiA3OTAx
NSkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXaW5DRS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNiArMTM1LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCk7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCk7CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZEdvVG9IaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKFdlYkNvcmU6Okhpc3RvcnlJ
dGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQWRkQmFja0ZvcndhcmRJ
dGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlQmFja0ZvcndhcmRJbmRleCgpIGNv
bnN0OwpJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5MDE1KQorKysgU291cmNlL1dlYktp
dC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wMi0x
OCAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuc3VyZSBsb2FkaW5nIGhhcyBzdG9wcGVk
IGluIEhpc3RvcnlDb250cm9sbGVyOjpnb1RvSXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ1MTcKKworICAgICAgICBBZGQgYSBGcmFtZUxvYWRl
ckNsaWVudCBjYWxsYmFjayBmb3Igd2hldGhlciB0byBzdG9wIGxvYWRpbmcgYmVmb3JlIGdvVG9J
dGVtLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLXRvLWZy
YWdtZW50LWZpcmVzLW9ubG9hZC5odG1sCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRX
eDo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbSk6IEFkZGVkLgorICAgICAgICAqIFdl
YktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgorCiAyMDExLTAyLTE3ICBLZXZpbiBP
bGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIFt3eF0gQnVpbGQg
Zml4IGFmdGVyIG1vdmUgb2YgRG9jdW1lbnRXcml0ZXIgdG8gRG9jdW1lbnRMb2FkZXIuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50V3guY3BwCShyZXZpc2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTc3LDYg
KzU3NywxMSBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnNob3VsZEdvVG9IaXN0CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRXeDo6c2hvdWxkU3RvcExv
YWRpbmdGb3JIaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0Cit7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRB
ZGRCYWNrRm9yd2FyZEl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdAogewogfQpJbmRl
eDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRXeC5oCShyZXZpc2lvbiA3OTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MCw2ICsxNjAs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9i
YWxIaXN0b3J5KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVk
aXJlY3RMaW5rcygpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkR29Ub0hpc3RvcnlJdGVt
KEhpc3RvcnlJdGVtKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9h
ZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEFkZEJhY2tGb3J3YXJkSXRlbShIaXN0b3J5SXRlbSopIGNvbnN0Owog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oSGlz
dG9yeUl0ZW0qKSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdl
QmFja0ZvcndhcmRJbmRleCgpIGNvbnN0OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzkwMTUpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAx
MS0wMi0xOCAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuc3VyZSBsb2FkaW5nIGhhcyBz
dG9wcGVkIGluIEhpc3RvcnlDb250cm9sbGVyOjpnb1RvSXRlbQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ1MTcKKworICAgICAgICBUZXN0cyB0aGF0
IGdvaW5nIGZvcndhcmQgd2l0aGluIHRoZSBzYW1lIGRvY3VtZW50IGRvZXMgbm90IHN0b3AgbG9h
ZGluZy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLXRvLWZyYWdt
ZW50LWZpcmVzLW9ubG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmln
YXRpb24vZm9yd2FyZC10by1mcmFnbWVudC1maXJlcy1vbmxvYWQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZvcndhcmQtdG8t
ZnJhZ21lbnQtZmlyZXMtb25sb2FkLTIuaHRtbDogQWRkZWQuCisKIDIwMTEtMDItMTggIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIEltcG9ydCBhbm90
aGVyIHNldCBvZiBHVEsrIGJhc2VsaW5lcyBmb3IgdGhlIE1vemlsbGEgdGFibGUgdGVzdHMuCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC10by1mcmFnbWVu
dC1maXJlcy1vbmxvYWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLXRvLWZyYWdtZW50LWZpcmVzLW9ubG9hZC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRp
b24vZm9yd2FyZC10by1mcmFnbWVudC1maXJlcy1vbmxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE1IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjc6IFN0YXJ0aW5n
IHRlc3QuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjogMS4gR290IHRvIHBhZ2UgMi4gIEdvaW5n
IHRvICNmb28uCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjI6IDIuIEdvdCB0byBwYWdlIDIgI2Zv
by4gIEdvaW5nIGJhY2sgdG8gc3RhcnQuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTc6IDMuIEdv
dCBiYWNrIHRvIHN0YXJ0LiAgR29pbmcgZm9yd2FyZCB0byBwYWdlIDIuCitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgMzE6IDQuIEdvdCBiYWNrIHRvIHBhZ2UgMi4gIEltbWVkaWF0ZWx5IGdvaW5nIGZv
cndhcmQuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTM6IDUuIEdvdCB0byBwYWdlIDIgb25sb2Fk
LiAgU3VjY2Vzcy4KK1Rlc3RzIHRoYXQgbG9hZGluZyBpcyBub3Qgc3RvcHBlZCBieSBnb2luZyBm
b3J3YXJkIHRvIGEgZnJhZ21lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtdG8tZnJhZ21lbnQtZmly
ZXMtb25sb2FkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL2ZvcndhcmQtdG8tZnJhZ21lbnQtZmlyZXMtb25sb2FkLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC10by1mcmFnbWVu
dC1maXJlcy1vbmxvYWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKyAgPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGxvYWRpbmcgaXMg
bm90IHN0b3BwZWQgYnkgZ29pbmcgZm9yd2FyZCB0byBhIGZyYWdtZW50LicpOworCitvbmxvYWQg
PSBmdW5jdGlvbigpCit7CisgICAgaWYgKHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3RhZ2UgPT0gJ3Ro
cmVlJykgeworICAgICAgICBjb25zb2xlLmxvZygnMy4gR290IGJhY2sgdG8gc3RhcnQuICBHb2lu
ZyBmb3J3YXJkIHRvIHBhZ2UgMi4nKTsKKyAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zdGFn
ZSA9ICdmb3VyJzsKKyAgICAgICAgaGlzdG9yeS5mb3J3YXJkKCk7CisgICAgfSBlbHNlIGlmICh3
aW5kb3cubG9jYWxTdG9yYWdlLnN0YWdlID09ICdzaXgnKSB7CisgICAgICAgIGRlbGV0ZSB3aW5k
b3cubG9jYWxTdG9yYWdlLnN0YWdlOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9IGVs
c2UgeworICAgICAgICAvLyBUbyBtYWtlIHN1cmUgdGhhdCB3ZSBoaXQgdGhpcyBicmFuY2gsIGxv
ZyB0aGlzIHRvIHRoZSBjb25zb2xlIHNvIHRoYXQKKyAgICAgICAgLy8gaXQgc2hvd3MgdXAgaW4g
ZXhwZWN0ZWQgb3V0cHV0IChkZWJ1ZygpIHdpbGwgYmUgYmxvd24gYXdheSBvbmNlIHdlCisgICAg
ICAgIC8vIG5hdmlnYXRlIG91dCkuCisgICAgICAgIGNvbnNvbGUubG9nKCdTdGFydGluZyB0ZXN0
LicpOworICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnN0YWdlID0gJ29uZSc7CisgICAgICAg
IC8vIE5hdmlnYXRlIGluIGEgdGltZW91dCB0byBtYWtlIHN1cmUgd2UgY3JlYXRlIGEgaGlzdG9y
eSBlbnRyeS4KKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHdp
bmRvdy5sb2NhdGlvbi5ocmVmID0gJ3Jlc291cmNlcy9mb3J3YXJkLXRvLWZyYWdtZW50LWZpcmVz
LW9ubG9hZC0yLmh0bWwnOworICAgICAgICB9LCAwKTsKKyAgICB9Cit9OworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK3ZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC10by1mcmFnbWVudC1maXJlcy1vbmxvYWQt
Mi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9y
ZXNvdXJjZXMvZm9yd2FyZC10by1mcmFnbWVudC1maXJlcy1vbmxvYWQtMi5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mb3J3
YXJkLXRvLWZyYWdtZW50LWZpcmVzLW9ubG9hZC0yLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzkgQEAKK1BhZ2UgMi4KKzxzY3JpcHQ+CitvbmxvYWQgPSBmdW5jdGlvbigpCit7CisgICAg
aWYgKHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3RhZ2UgPT0gJ29uZScpIHsKKyAgICAgICAgY29uc29s
ZS5sb2coJzEuIEdvdCB0byBwYWdlIDIuICBHb2luZyB0byAjZm9vLicpOworICAgICAgICB3aW5k
b3cubG9jYWxTdG9yYWdlLnN0YWdlID0gJ3R3byc7CisgICAgICAgIC8vIE5hdmlnYXRlIGluIGEg
dGltZW91dCB0byBtYWtlIHN1cmUgd2UgY3JlYXRlIGEgaGlzdG9yeSBlbnRyeS4KKyAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVm
ID0gJyNmb28nOworICAgICAgICB9LCAwKTsKKyAgICB9IGVsc2UgaWYgKHdpbmRvdy5sb2NhbFN0
b3JhZ2Uuc3RhZ2UgPT0gJ2ZpdmUnKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCc1LiBHb3QgdG8g
cGFnZSAyIG9ubG9hZC4gIFN1Y2Nlc3MuJyk7CisgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uu
c3RhZ2UgPSAnc2l4JzsKKyAgICAgICAgaGlzdG9yeS5nbygtMik7CisgICAgfQorfTsKKworb25o
YXNoY2hhbmdlID0gZnVuY3Rpb24oKQoreworICAgIGlmICh3aW5kb3cubG9jYWxTdG9yYWdlLnN0
YWdlID09ICd0d28nKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCcyLiBHb3QgdG8gcGFnZSAyICNm
b28uICBHb2luZyBiYWNrIHRvIHN0YXJ0LicpOworICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdl
LnN0YWdlID0gJ3RocmVlJzsKKyAgICAgICAgaGlzdG9yeS5nbygtMik7CisgICAgfQorfTsKKwor
Ly8gR28gZm9yd2FyZCB0byBmcmFnbWVudCBhZnRlciB0aGUgcGFnZSBpcyBmaW5pc2hlZCBwYXJz
aW5nLgorZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0
aW9uKCkgeworICAgIGlmICh3aW5kb3cubG9jYWxTdG9yYWdlLnN0YWdlID09ICdmb3VyJykgewor
ICAgICAgICBjb25zb2xlLmxvZygnNC4gR290IGJhY2sgdG8gcGFnZSAyLiAgSW1tZWRpYXRlbHkg
Z29pbmcgZm9yd2FyZC4nKTsKKyAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zdGFnZSA9ICdm
aXZlJzsKKyAgICAgICAgaGlzdG9yeS5mb3J3YXJkKCk7CisgICAgfQorfSk7CisKKzwvc2NyaXB0
PgorPCEtLSBTbG93IGltYWdlIHRvIGxldCB1cyB0byBnbyBmb3J3YXJkIHdoaWxlIHRoZSBwYWdl
IGlzIHN0aWxsIGxvYWRpbmcuIC0tPgorPGltZyBzcmM9InNsb3ctcmVzb3VyY2UucGw/ZGVsYXk9
MTAwIj48L2lmcmFtZT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>