<?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>97020</bug_id>
          
          <creation_ts>2012-09-18 07:56:23 -0700</creation_ts>
          <short_desc>HTMLMediaElement isn&apos;t garbage collected between document reloads</short_desc>
          <delta_ts>2012-09-24 23:28:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Scherkus">scherkus</reporter>
          <assigned_to name="Ami Fischman">fischman</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fischman</cc>
    
    <cc>haraken</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joi</cc>
    
    <cc>junov</cc>
    
    <cc>senorblanco</cc>
    
    <cc>tzik</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>722784</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Scherkus">scherkus</who>
    <bug_when>2012-09-18 07:56:23 -0700</bug_when>
    <thetext>Copied from http://code.google.com/p/chromium/issues/detail?id=148451

Regression introduced in http://trac.webkit.org/changeset/100307

&lt;snip&gt;
Summary: It looks like this is not a bug of GC; this is a bug of Audio.

(1) In http://www.playescapegoat.com/, two HTMLAudioElements are created, say X and Y.
(2) Reload the page.
(3) The major GC tries to reclaim X and Y, and calls hasPendingActivity() for X and Y (c.f. http://code.google.com/codesearch#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/bindings/v8/V8GCController.cpp&amp;exact_package=chromium&amp;q=v8gccontroller.cpp&amp;type=cs&amp;l=138).
(4) X-&gt;hasPendingActivity() returns false but Y-&gt;hasPendingActivity() returns true. So the GC cannot reclaim Y.
(5) Consequently, all Nodes in the DOM tree which Y belongs to are kept alive. The DOM tree contains canvas elements which hold a lot of memory behind it. I think this is the memory leak we are observing.

Thus, the problem is that Y-&gt;hasPendingActivity() returns true even after the page reload. I investigated why Y-&gt;hasPendingActivity() returns true, and observed the following behavior:

[In normal cases like WebKit/LayoutTests/media/audio-garbage-collection.html]

(1) HTMLMediaElement::potentiallyPlaying() returns true while Y is playing.
(2) When the page is reloaded, HTMLMediaElement::potentiallyPlaying() becomes false. Thus, HTMLMediaElement::m_playing becomes false (i.e. http://code.google.com/codesearch#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/html/HTMLMediaElement.cpp&amp;exact_package=chromium&amp;q=htmlmediaelement.cpp&amp;type=cs&amp;l=3579).
(3) Because HTMLMediaElement::m_playing is false, Y-&gt;hasPendingActivity() returns false.

[In http://www.playescapegoat.com/]

(1) HTMLMediaElement::potentiallyPlaying() returns true while Y is playing.
(2) When the page is reloaded, HTMLMediaElement::potentiallyPlaying() does not become false for some reason. Thus, HTMLMediaElement::m_playing does not become false.
(3) Because HTMLMediaElement::m_playing is true, Y-&gt;hasPendingActivity() returns true.

I think that we need to fix HTMLMediaElement so that HTMLMediaElement::m_playing becomes false when the page is reloaded. (It doesn&apos;t make sense that HTMLMediaElement::m_playing keeps being true even after the page reload.)
&lt;/snip&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724809</commentid>
    <comment_count>1</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-09-20 13:30:31 -0700</bug_when>
    <thetext>This isn&apos;t V8-specific.  I see a memory leak of ~200MB per reload in Safari 6.0.8536.25 on playescapegoat.com (letting the game load to the initial showing a &quot;Play Game&quot; option, no user interaction, let the background music start playing, reload).

Instrumenting HTMLMediaElement&apos;s ctor &amp; dtor I see the dtor never being called.
Sadly I don&apos;t have a simpler repro than that full-blown game.

Eric/Jer: any idea what&apos;s going wrong here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724866</commentid>
    <comment_count>2</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-09-20 14:28:03 -0700</bug_when>
    <thetext>Huh; a trivially simple (so simple I suspect I&apos;m missing something) repro:

&lt;html&gt;
&lt;head&gt;
&lt;script&gt;
function go() {
  var a = new Audio();
  a.autoplay = &quot;1&quot;;
  a.src=&quot;http://trac.webkit.org/export/129167/trunk/LayoutTests/media/content/test.wav&quot;;
}
&lt;/script&gt;
&lt;/head&gt;
&lt;body onload=&quot;go()&quot;&gt;
&lt;/body&gt;
&lt;/html&gt;

Reloading the page callers m_player-&gt;stop() (chromium&apos;s ~WebMediaPlayerImpl() ends up being called) but not ~HTMLMediaElement.
A DOM-based attempt (using &lt;audio&gt;) fails to repro the problem; the key seems to be generating the HTMLAudioElement using JS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724929</commentid>
    <comment_count>3</comment_count>
      <attachid>164999</attachid>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-09-20 15:41:19 -0700</bug_when>
    <thetext>Created attachment 164999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724937</commentid>
    <comment_count>4</comment_count>
      <attachid>164999</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-09-20 15:46:17 -0700</bug_when>
    <thetext>Comment on attachment 164999
Patch

Leaving for an audio reviewer, but.... awesome.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724940</commentid>
    <comment_count>5</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-09-20 15:52:56 -0700</bug_when>
    <thetext>The attached patch &quot;solves&quot; the problem (leak is gone from both my toy repro and http://www.playescapegoat.com/) though it might be a bit of a hammer; I don&apos;t know how the page-reload case is supposed to work.

It would also be nice to have a test for this, but I was stymied along two fronts:
1) I don&apos;t know how to trigger a page reload in DRT in a way that&apos;d still count as &quot;the same test&quot;
2) I don&apos;t know how to observe the leak from JS/lTC, so can&apos;t verify its absence.

Advice welcome along all fronts :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724956</commentid>
    <comment_count>6</comment_count>
    <who name="Justin Novosad">junov</who>
    <bug_when>2012-09-20 16:11:55 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; The attached patch &quot;solves&quot; the problem (leak is gone from both my toy repro and http://www.playescapegoat.com/) though it might be a bit of a hammer; I don&apos;t know how the page-reload case is supposed to work.
&gt; 
&gt; It would also be nice to have a test for this, but I was stymied along two fronts:
&gt; 1) I don&apos;t know how to trigger a page reload in DRT in a way that&apos;d still count as &quot;the same test&quot;
&gt; 2) I don&apos;t know how to observe the leak from JS/lTC, so can&apos;t verify its absence.
&gt; 
&gt; Advice welcome along all fronts :)

It would be easier to test in chrome using the automation controllers (i.e. TabProxy)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725005</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-20 17:27:05 -0700</bug_when>
    <thetext>&gt; 1) I don&apos;t know how to trigger a page reload in DRT in a way that&apos;d still count as &quot;the same test&quot;

You can create a popup window using window.open and then call window.reload() in the popup.  Search around for other tests that call window.open to see how to turn off the popup blocker.

Adam</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725008</commentid>
    <comment_count>8</comment_count>
      <attachid>164999</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-20 17:28:12 -0700</bug_when>
    <thetext>Comment on attachment 164999
Patch

Perhaps setPausedInternal should set m_playing to false instead?  I&apos;m not familiar with the details of which functions ought to be responsible for what.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725009</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-20 17:28:47 -0700</bug_when>
    <thetext>(Doing something like this in stop() is quite likely to be the right solution.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725111</commentid>
    <comment_count>10</comment_count>
      <attachid>164999</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-09-20 20:26:12 -0700</bug_when>
    <thetext>Comment on attachment 164999
Patch

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

This does seem like the right way to fix this, but we should have a test.

&gt; Source/WebCore/ChangeLog:11
&gt; +        No new tests (OOPS!).

OOPS indeed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725129</commentid>
    <comment_count>11</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-09-20 21:07:47 -0700</bug_when>
    <thetext>Suggestions from Adam &amp; Justin can address the first problem but I don&apos;t see how to observe the leak from JS.  

Anyone got any ideas about how to do that?

(note that the fact that m_player-&gt;stop() *does* get called means that testing by side-effects caused by the media player, such as network traffic or audio output, is not an option)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725690</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-09-21 12:09:35 -0700</bug_when>
    <thetext>I don&apos;t think we have access to enough information from JS to create a layout test. Why don&apos;t you create a manual test that someone can use along with another app that allows them to watch memory levels?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725717</commentid>
    <comment_count>13</comment_count>
      <attachid>164999</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-09-21 12:41:12 -0700</bug_when>
    <thetext>Comment on attachment 164999
Patch

r+ but I would prefer to see this land with a manual test rather than adding one later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726023</commentid>
    <comment_count>14</comment_count>
      <attachid>165238</attachid>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-09-21 18:28:42 -0700</bug_when>
    <thetext>Created attachment 165238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726024</commentid>
    <comment_count>15</comment_count>
      <attachid>165238</attachid>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-09-21 18:29:26 -0700</bug_when>
    <thetext>Comment on attachment 165238
Patch

Oh, yeah, manual tests.  I always forget about those.  Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726041</commentid>
    <comment_count>16</comment_count>
      <attachid>165238</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 21:44:08 -0700</bug_when>
    <thetext>Comment on attachment 165238
Patch

Clearing flags on attachment: 165238

Committed r129296: &lt;http://trac.webkit.org/changeset/129296&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726042</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 21:44:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727290</commentid>
    <comment_count>18</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-09-24 22:29:49 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727291</commentid>
    <comment_count>19</comment_count>
      <attachid>165521</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-09-24 22:29:52 -0700</bug_when>
    <thetext>Created attachment 165521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727306</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-24 23:01:38 -0700</bug_when>
    <thetext>Looks like your patch got uploaded to the wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727325</commentid>
    <comment_count>21</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-09-24 23:28:20 -0700</bug_when>
    <thetext>Ah, sorry(In reply to comment #20)
&gt; Looks like your patch got uploaded to the wrong bug.

Ah, sorry. Yes, I missed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164999</attachid>
            <date>2012-09-20 15:41:19 -0700</date>
            <delta_ts>2012-09-21 18:28:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97020-20120920154044.patch</filename>
            <type>text/plain</type>
            <size>1469</size>
            <attacher name="Ami Fischman">fischman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc2OTY2OTQzMWQ4YWI1
MTQ4YjU1MmI5NDQwNmEyOWFkZmQ3OWJiZS4uZDJhYWMzZDQ1MDA0N2Q4ZDc5YjEzMjkzMjZkNDVi
MTcxYmRkNGU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA5LTIwICBBbWkg
RmlzY2htYW4gIDxmaXNjaG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSFRNTE1lZGlhRWxl
bWVudCBpc24ndCBnYXJiYWdlIGNvbGxlY3RlZCBiZXR3ZWVuIGRvY3VtZW50IHJlbG9hZHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MDIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSlMtY3JlYXRlZCAo
YXMgb3Bwb3NlZCB0byBET00tY3JlYXRlZCkgQXVkaW8gbm9kZXMgbmV2ZXIgZ290IGNvbGxlY3Rl
ZCwgYmVjYXVzZSB0aGV5CisgICAgICAgIGFwcGVhciB0byBhbHdheXMgaGFzUGVuZGluZ0FjdGl2
aXR5KCksIGJlY2F1c2UgbV9wbGF5aW5nIGlzIG5ldmVyIHNldCB0byBmYWxzZS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzdG9wKTogc2V0IG1f
cGxheWluZyA9IGZhbHNlOyBleHBsaWNpdGx5LgorCiAyMDEyLTA5LTE5ICBEYW4gQmVybnN0ZWlu
ICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ29yZSBwYXJ0IG9mIGFkZGluZyBhIHNl
dHRpbmcgYW5kIEFQSSBmb3IgZGlzYWJsaW5nIHNjcmVlbiBmb250IHN1YnN0aXR1dGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNWY1Njc0NTE3NTQyZjYz
OGY1ODcwZDNhYTYzMjVjYjNjYTgyNDJjNC4uNjZiOGM0NjU1MmZkYWZhMmEyZWJjYzA3YjExZDU5
OWRhYjA4MzI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBA
IC0zNjc1LDYgKzM2NzUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN0b3AoKQogICAgIHVz
ZXJDYW5jZWxsZWRMb2FkKCk7CiAgICAgCiAgICAgLy8gU3RvcCB0aGUgcGxheWJhY2sgd2l0aG91
dCBnZW5lcmF0aW5nIGV2ZW50cworICAgIG1fcGxheWluZyA9IGZhbHNlOwogICAgIHNldFBhdXNl
ZEludGVybmFsKHRydWUpOwogICAgIAogICAgIGlmIChyZW5kZXJlcigpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165238</attachid>
            <date>2012-09-21 18:28:42 -0700</date>
            <delta_ts>2012-09-24 22:29:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97020-20120921182805.patch</filename>
            <type>text/plain</type>
            <size>2976</size>
            <attacher name="Ami Fischman">fischman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc2OTY2OTQzMWQ4YWI1
MTQ4YjU1MmI5NDQwNmEyOWFkZmQ3OWJiZS4uZmY0ODc2NmY3ZDQxODYxYjllZGEwZDlhMGE2NzM3
NWIwMDYyMjc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA5LTIwICBBbWkg
RmlzY2htYW4gIDxmaXNjaG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSFRNTE1lZGlhRWxl
bWVudCBpc24ndCBnYXJiYWdlIGNvbGxlY3RlZCBiZXR3ZWVuIGRvY3VtZW50IHJlbG9hZHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MDIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEpTLWNyZWF0ZWQgKGFz
IG9wcG9zZWQgdG8gRE9NLWNyZWF0ZWQpIEF1ZGlvIG5vZGVzIG5ldmVyIGdvdCBjb2xsZWN0ZWQs
IGJlY2F1c2UgdGhleQorICAgICAgICBhcHBlYXIgdG8gYWx3YXlzIGhhc1BlbmRpbmdBY3Rpdml0
eSgpLCBiZWNhdXNlIG1fcGxheWluZyBpcyBuZXZlciBzZXQgdG8gZmFsc2UuCisKKyAgICAgICAg
TWFudWFsIHRlc3QgYWRkZWQ6IE1hbnVhbFRlc3RzL2F1ZGlvLWZyZWVkLWR1cmluZy1yZWxvYWQu
aHRtbAorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnN0b3ApOiBzZXQgbV9wbGF5aW5nID0gZmFsc2U7IGV4
cGxpY2l0bHkuCisKIDIwMTItMDktMTkgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWJDb3JlIHBhcnQgb2YgYWRkaW5nIGEgc2V0dGluZyBhbmQgQVBJIGZvciBk
aXNhYmxpbmcgc2NyZWVuIGZvbnQgc3Vic3RpdHV0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAppbmRleCA1ZjU2NzQ1MTc1NDJmNjM4ZjU4NzBkM2FhNjMyNWNiM2Nh
ODI0MmM0Li42NmI4YzQ2NTUyZmRhZmEyYTJlYmNjMDdiMTFkNTk5ZGFiMDgzMjZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTM2NzUsNiArMzY3NSw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3RvcCgpCiAgICAgdXNlckNhbmNlbGxlZExvYWQoKTsK
ICAgICAKICAgICAvLyBTdG9wIHRoZSBwbGF5YmFjayB3aXRob3V0IGdlbmVyYXRpbmcgZXZlbnRz
CisgICAgbV9wbGF5aW5nID0gZmFsc2U7CiAgICAgc2V0UGF1c2VkSW50ZXJuYWwodHJ1ZSk7CiAg
ICAgCiAgICAgaWYgKHJlbmRlcmVyKCkpCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VM
b2cKaW5kZXggNWMzY2FkZDBhZTM0ODMzMDE1MGVhNzM4NzUwNmM5N2Q3ZWQ3YTI5Yy4uY2VmMWM0
YWQxN2JmNmEzYTIxYTA5ZTdjOGMyNDg3YzVkY2IwMDZmYSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9n
CisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5LTIwICBBbWkgRmlzY2ht
YW4gIDxmaXNjaG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSFRNTE1lZGlhRWxlbWVudCBp
c24ndCBnYXJiYWdlIGNvbGxlY3RlZCBiZXR3ZWVuIGRvY3VtZW50IHJlbG9hZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MDIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIE1hbnVhbCB0ZXN0IGFkZGVkOiBN
YW51YWxUZXN0cy9hdWRpby1mcmVlZC1kdXJpbmctcmVsb2FkLmh0bWwKKworICAgICAgICAqIE1h
bnVhbFRlc3RzL2F1ZGlvLWZyZWVkLWR1cmluZy1yZWxvYWQuaHRtbDoKKwogMjAxMi0wOS0xOCAg
U2FpbGVzaCBBZ3Jhd2FsICA8c2FpbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hyb21pdW06
IFNjcm9sbGJhciB3aXRoIHRpY2ttYXJrcyBkb2Vzbid0IHJlc3BvbmQgdG8gY2xpY2tzCmRpZmYg
LS1naXQgYS9NYW51YWxUZXN0cy9hdWRpby1mcmVlZC1kdXJpbmctcmVsb2FkLmh0bWwgYi9NYW51
YWxUZXN0cy9hdWRpby1mcmVlZC1kdXJpbmctcmVsb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDY2MWQ5
MTVhNGNkMjUxYTU3NDYxMmEwMDZiNmU2YWE0ODU1YTNmNQotLS0gL2Rldi9udWxsCisrKyBiL01h
bnVhbFRlc3RzL2F1ZGlvLWZyZWVkLWR1cmluZy1yZWxvYWQuaHRtbApAQCAtMCwwICsxLDE3IEBA
Cis8aHRtbD4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBnbygpIHsKKyAgICAgICAg
ICB2YXIgYSA9IG5ldyBBdWRpbygpOworICAgICAgICAgIGEuYXV0b3BsYXkgPSAiMSI7CisgICAg
ICAgICAgYS5zcmMgPSAiLi4vTGF5b3V0VGVzdHMvbWVkaWEvY29udGVudC90ZXN0LndhdiI7Cisg
ICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKworICAgIDxib2R5IG9ubG9hZD0iZ28oKSI+CisgICAg
ICAgIDxwPgorICAgICAgICAgICAgTG9hZCB0aGlzIHBhZ2UgYW5kIG9wZW4gQWN0aXZpdHkgTW9u
aXRvciwgaHRvcCwgY2hyb21lJ3MgdGFzayBtYW5hZ2VyLCBvciBhbm90aGVyIHJlc291cmNlIG1v
bml0b3IuCisgICAgICAgICAgICBSZWxvYWQgdGhlIHBhZ2UgYSBudW1iZXIgb2YgdGltZXMgYW5k
IHZlcmlmeSB0aGF0IHRoZSBtZW1vcnkgdXNhZ2UKKyAgICAgICAgICAgIGRvZXNuJ3Qga2VlcCBj
bGltYmluZyBpbmRlZmluaXRlbHkgcGVyIHJlbG9hZC4KKyAgICAgICAgPC9wPgorICAgIDwvYm9k
eT4KKzwvaHRtbD8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165521</attachid>
            <date>2012-09-24 22:29:52 -0700</date>
            <delta_ts>2012-09-24 23:29:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97020-20120925142912.patch</filename>
            <type>text/plain</type>
            <size>66243</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI4Njk1ODAzMGQ3MDYz
N2QwMTA5MmU1OTNjM2NmNTEyYTdjYjI0Yy4uM2UzODA3ZjI4ODZhOTlmMzQyYTFhZDNmNzFmZTFk
YmFmOTdkMjA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMTM0MzYsNiArMTM0MzYsNTYgQEAKICAgICAgICAg
KiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5pZGw6CiAgICAgICAgICog
TW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmlkbDoKIAorMjAxMi0w
OS0xMCAgVGFpanUgVHN1aWtpICA8dHppa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUmVtb3ZlIGRpcmVjdG9yeSB0cmVlIGZyb20gRmlsZVN5c3RlbVZpZXcgYW5kIGFk
ZCBpdGVtLWJhc2VkIG5hdmlnYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk0OTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXBsYWNlIGRpcmVjdG9yeSB0cmVlIG5hdmlnYXRp
b24gdG8gbGlzdCB2aWV3IG5hdmlnYXRpb24uIFRoaXMgYWxsb3cgdXNlciB0bworICAgICAgICBq
dW1wIGludG8gYSBkaXJlY3RvcnkgYnkgZG91YmxlLWNsaWNraW5nIG9uIGRpcmVjdG9yeS4KKyAg
ICAgICAgQWxzbywgdGhpcyBwYXRjaCBhZGRzIHN0YXR1cyBiYXIgYnV0dG9uIHRvIG5hdmlnYXRl
IHRvIHBhcmVudCBkaXJlY3RvcnkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZmlsZXN5c3RlbS91aS9kaXJlY3RvcnktY29udGVudC12aWV3Lmh0bWwKKworICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvRGlyZWN0b3J5Q29udGVudFZpZXcuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGlyZWN0b3J5Q29udGVudFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRpcmVjdG9yeUNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgZW50cnkpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRpcmVjdG9yeUNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgc2VsZWN0ZWRFbnRy
eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGlyZWN0b3J5Q29udGVudFZpZXcucHJvdG90eXBl
Ll9kaXJlY3RvcnlDb250ZW50UmVjZWl2ZWQubWV0YWRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGlyZWN0b3J5Q29udGVudFZpZXcucHJvdG90eXBlLl9kaXJlY3RvcnlDb250
ZW50UmVjZWl2ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRpcmVjdG9yeUNvbnRlbnRWaWV3
LnByb3RvdHlwZS5fc29ydCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGlyZWN0b3J5Q29udGVu
dFZpZXcucHJvdG90eXBlLl9uYXZpZ2F0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGlyZWN0
b3J5Q29udGVudFZpZXcucHJvdG90eXBlLnJlZnJlc2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRpcmVjdG9yeUNvbnRlbnRWaWV3Lk5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRpcmVj
dG9yeUNvbnRlbnRWaWV3Lk5vZGUucHJvdG90eXBlLmdldCBlbnRyeSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGlyZWN0b3J5Q29udGVudFZpZXcuTm9kZS5wcm90b3R5cGUudXBkYXRlTWV0YWRh
dGEpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRmlsZUNvbnRlbnRWaWV3LmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRmlsZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgZW50cnkpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkZpbGVDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHNlbGVjdGVkRW50cnkpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVDb250ZW50Vmlldy5wcm90b3R5cGUuX21ldGFkYXRh
UmVjZWl2ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVDb250ZW50Vmlldy5wcm90b3R5
cGUucmVmcmVzaCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9k
ZWwuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlLmdldCBzdGF0dXNCYXJJdGVtcyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlLnNob3dWaWV3KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5wcm90b3R5cGUuX3JlZnJlc2gpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LnByb3RvdHlwZS5fY29uZmlybURl
bGV0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlLl9p
bmRleE9mRW50cnlJbkNydW1icyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZp
ZXcucHJvdG90eXBlLm5hdmlnYXRlRG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbVZpZXcucHJvdG90eXBlLm5hdmlnYXRlVXBGcm9tKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtVmlldy5wcm90b3R5cGUuX25hdmlnYXRlVG8pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1WaWV3LnByb3RvdHlwZS5fbmF2aWdhdGVVcCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvc3RhdHVzYmFyQnV0dG9uR2x5cGhzLnBuZzoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9zdGF0dXNiYXJCdXR0b25HbHlwaHMy
eC5wbmc6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOgorICAg
ICAgICAoLmxvbmctY2xpY2stZ2x5cGgpOgorICAgICAgICAoLnN0YXR1cy1iYXItaXRlbSA+IC5n
bHlwaCk6CisgICAgICAgICgubmF2aWdhdGUtdXAtc3RhdHVzLWJhci1pdGVtIC5nbHlwaCk6CisK
IDIwMTItMDktMDkgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQWRkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcigpIGFuZCB1c2UgaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGlyZWN0b3J5Q29udGVu
dFZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RpcmVjdG9yeUNv
bnRlbnRWaWV3LmpzCmluZGV4IDIxY2VkMjUxNTM2NGY0MjQ3YzhlNDBmZGYyNjRmMDhlNDcwMmYy
ZjguLjI3NGJlMGI2ZmVkZTRjOTUzZWZhMmY5Y2UyMmIzNzNhYzA1NmY1ZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGlyZWN0b3J5Q29udGVudFZpZXcu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EaXJlY3RvcnlDb250
ZW50Vmlldy5qcwpAQCAtMzEsOCArMzEsMTAgQEAKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBA
ZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkRhdGFHcmlkfQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbVZpZXd9IGZpbGVTeXN0ZW1WaWV3CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5G
aWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5RW50cnl9IGVudHJ5CiAgKi8KLVdlYkluc3BlY3Rvci5E
aXJlY3RvcnlDb250ZW50VmlldyA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5EaXJlY3RvcnlD
b250ZW50VmlldyA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW1WaWV3LCBlbnRyeSkKIHsKICAgICBjb25z
dCBpbmRleGVzID0gV2ViSW5zcGVjdG9yLkRpcmVjdG9yeUNvbnRlbnRWaWV3LmNvbHVtbkluZGV4
ZXM7CiAgICAgdmFyIGNvbHVtbnMgPSB7fTsKQEAgLTYwLDYgKzYyLDEzIEBAIFdlYkluc3BlY3Rv
ci5EaXJlY3RvcnlDb250ZW50VmlldyA9IGZ1bmN0aW9uKCkKIAogICAgIFdlYkluc3BlY3Rvci5E
YXRhR3JpZC5jYWxsKHRoaXMsIGNvbHVtbnMpOwogICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigi
c29ydGluZyBjaGFuZ2VkIiwgdGhpcy5fc29ydCwgdGhpcyk7CisKKyAgICB0aGlzLl9maWxlU3lz
dGVtVmlldyA9IGZpbGVTeXN0ZW1WaWV3OworCisgICAgdGhpcy5fZW50cnkgPSBlbnRyeTsKKyAg
ICB0aGlzLnJlZnJlc2goKTsKKworICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJk
YmxjbGljayIsIHRoaXMuX25hdmlnYXRlLmJpbmQodGhpcykpOwogfQogCiBXZWJJbnNwZWN0b3Iu
RGlyZWN0b3J5Q29udGVudFZpZXcuY29sdW1uSW5kZXhlcyA9IHsKQEAgLTcyLDIwICs4MSw5MCBA
QCBXZWJJbnNwZWN0b3IuRGlyZWN0b3J5Q29udGVudFZpZXcuY29sdW1uSW5kZXhlcyA9IHsKIAog
V2ViSW5zcGVjdG9yLkRpcmVjdG9yeUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAvKioK
LSAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVj
dG9yeT59IGVudHJpZXMKKyAgICAgKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bC5FbnRyeX0KICAgICAgKi8KLSAgICBzaG93RW50cmllczogZnVuY3Rpb24oZW50cmllcykKKyAg
ICBnZXQgZW50cnkoKQogICAgIHsKLSAgICAgICAgY29uc3QgaW5kZXhlcyA9IFdlYkluc3BlY3Rv
ci5EaXJlY3RvcnlDb250ZW50Vmlldy5jb2x1bW5JbmRleGVzOwotICAgICAgICB0aGlzLnJvb3RO
b2RlKCkucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VudHJ5OworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bC5FbnRyeX0KKyAgICAgKi8KKyAgICBnZXQgc2VsZWN0ZWRFbnRyeSgpCisgICAgeworICAgICAg
ICAvLyBGSVhNRTogU3VwcG9ydCBtdWx0aXNlbGVjdGlvbgorICAgICAgICByZXR1cm4gdGhpcy5z
ZWxlY3RlZE5vZGUuX2VudHJ5OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gZXJyb3JDb2RlCisgICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1Nb2RlbC5FbnRyeT49fSBlbnRyaWVzCisgICAgICovCisgICAgX2RpcmVjdG9yeUNvbnRl
bnRSZWNlaXZlZDogZnVuY3Rpb24oZXJyb3JDb2RlLCBlbnRyaWVzKQorICAgIHsKKyAgICAgICAg
aWYgKGVycm9yQ29kZSA9PT0gRmlsZUVycm9yLk5PVF9GT1VORF9FUlIpIHsKKyAgICAgICAgICAg
IHRoaXMuX2ZpbGVTeXN0ZW1WaWV3Lm5hdmlnYXRlVXBGcm9tKHRoaXMuX2VudHJ5KTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChlcnJvckNvZGUgIT09IDAg
fHwgIWVudHJpZXMpIHsKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byByZWFk
IGRpcmVjdG9yeTogIiArIGVycm9yQ29kZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICB2YXIgbmV3RW50cmllcyA9IHt9OwogICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLnJvb3ROb2RlKCku
YXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5EaXJlY3RvcnlDb250ZW50Vmlldy5Ob2RlKGVu
dHJpZXNbaV0pKTsKKyAgICAgICAgICAgIG5ld0VudHJpZXNbZW50cmllc1tpXS51cmxdID0gZW50
cmllc1tpXTsKKworICAgICAgICB2YXIgZXhpc3RpbmdOb2RlcyA9IHRoaXMucm9vdE5vZGUoKS5j
aGlsZHJlbi5zbGljZSgpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4aXN0aW5nTm9k
ZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBjaGlsZCA9IGV4aXN0aW5nTm9kZXNb
aV07CisgICAgICAgICAgICBpZiAobmV3RW50cmllc1tjaGlsZC5lbnRyeS51cmxdKQorICAgICAg
ICAgICAgICAgIGRlbGV0ZSBuZXdFbnRyaWVzW2NoaWxkLmVudHJ5LnVybF07CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGhpcy5yb290Tm9kZSgpLnJlbW92ZUNoaWxkKGNoaWxk
KTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBjb3VudCA9IDA7CisgICAgICAgIGZvciAodmFy
IHVybCBpbiBuZXdFbnRyaWVzKSB7CisgICAgICAgICAgICB2YXIgY2hpbGQgPSBuZXcgV2ViSW5z
cGVjdG9yLkRpcmVjdG9yeUNvbnRlbnRWaWV3Lk5vZGUobmV3RW50cmllc1t1cmxdKTsKKyAgICAg
ICAgICAgIHRoaXMucm9vdE5vZGUoKS5hcHBlbmRDaGlsZChjaGlsZCk7CisKKyAgICAgICAgICAg
ICsrY291bnQ7CisgICAgICAgICAgICBjaGlsZC5lbnRyeS5yZXF1ZXN0TWV0YWRhdGEobWV0YWRh
dGFSZWNlaXZlZC5iaW5kKHRoaXMsIGNoaWxkKSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBtZXRhZGF0YVJlY2VpdmVkKGNoaWxkLCBlcnJvckNvZGUsIG1ldGFkYXRhKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoZXJyb3JDb2RlID09PSAwICYmIG1ldGFkYXRhKQorICAgICAg
ICAgICAgICAgIGNoaWxkLnVwZGF0ZU1ldGFkYXRhKG1ldGFkYXRhKTsKKyAgICAgICAgICAgIGlm
ICgtLWNvdW50ID09PSAwKQorICAgICAgICAgICAgICAgIHRoaXMuX3NvcnQoKTsKKyAgICAgICAg
fQogICAgIH0sCiAKICAgICBfc29ydDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIGNv
bHVtbiA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLnNvcnRDb2x1bW5JZGVudGlmaWVyOwot
ICAgICAgICB0aGlzLnNvcnROb2RlcyhXZWJJbnNwZWN0b3IuRGlyZWN0b3J5Q29udGVudFZpZXcu
Tm9kZS5jb21wYXJhdG9yKGNvbHVtbiwgdGhpcy5zb3J0T3JkZXIgPT09ICJkZXNjZW5kaW5nIiks
IGZhbHNlKTsKKyAgICAgICAgdmFyIGNvbHVtbiA9IHRoaXMuc29ydENvbHVtbklkZW50aWZpZXI7
CisgICAgICAgIGlmIChjb2x1bW4pCisgICAgICAgICAgICB0aGlzLnNvcnROb2RlcyhXZWJJbnNw
ZWN0b3IuRGlyZWN0b3J5Q29udGVudFZpZXcuTm9kZS5jb21wYXJhdG9yKGNvbHVtbiwgdGhpcy5z
b3J0T3JkZXIgPT09ICJkZXNjZW5kaW5nIiksIGZhbHNlKTsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICBfbmF2aWdhdGU6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmRhdGFHcmlkTm9kZUZy
b21Qb2ludChldmVudC5wYWdlWCwgZXZlbnQucGFnZVkpOworICAgICAgICBpZiAoIW5vZGUpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3Lm5hdmlnYXRl
RG93bih0aGlzLl9lbnRyeSwgbm9kZS5lbnRyeSk7CisgICAgfSwKKworICAgIHJlZnJlc2g6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2VudHJ5LnJlcXVlc3REaXJlY3RvcnlDb250
ZW50KHRoaXMuX2RpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZC5iaW5kKHRoaXMpKTsKICAgICB9CiB9
CiAKQEAgLTEwOSw4ICsxODgsNiBAQCBXZWJJbnNwZWN0b3IuRGlyZWN0b3J5Q29udGVudFZpZXcu
Tm9kZSA9IGZ1bmN0aW9uKGVudHJ5KQogICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUuY2Fs
bCh0aGlzLCBkYXRhKTsKICAgICB0aGlzLl9lbnRyeSA9IGVudHJ5OwogICAgIHRoaXMuX21ldGFk
YXRhID0gbnVsbDsKLQotICAgIHRoaXMuX2VudHJ5LnJlcXVlc3RNZXRhZGF0YSh0aGlzLl9tZXRh
ZGF0YVJlY2VpdmVkLmJpbmQodGhpcykpOwogfQogCiAvKioKQEAgLTE3NiwxNSArMjUzLDE5IEBA
IFdlYkluc3BlY3Rvci5EaXJlY3RvcnlDb250ZW50Vmlldy5Ob2RlLmNvbXBhcmF0b3IgPSBmdW5j
dGlvbihjb2x1bW4sIHJldmVyc2UpCiAKIFdlYkluc3BlY3Rvci5EaXJlY3RvcnlDb250ZW50Vmll
dy5Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJy
b3JDb2RlCisgICAgICogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnl9
CisgICAgICovCisgICAgZ2V0IGVudHJ5KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9l
bnRyeTsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtGaWxlU3lzdGVtQWdlbnQu
TWV0YWRhdGF9IG1ldGFkYXRhCiAgICAgICovCi0gICAgX21ldGFkYXRhUmVjZWl2ZWQ6IGZ1bmN0
aW9uKGVycm9yQ29kZSwgbWV0YWRhdGEpCisgICAgdXBkYXRlTWV0YWRhdGE6IGZ1bmN0aW9uKG1l
dGFkYXRhKQogICAgIHsKICAgICAgICAgY29uc3QgaW5kZXhlcyA9IFdlYkluc3BlY3Rvci5EaXJl
Y3RvcnlDb250ZW50Vmlldy5jb2x1bW5JbmRleGVzOwotICAgICAgICBpZiAoZXJyb3JDb2RlICE9
PSAwKQotICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAgIHRoaXMuX21ldGFkYXRhID0gbWV0
YWRhdGE7CiAgICAgICAgIHZhciBkYXRhID0gdGhpcy5kYXRhOwogICAgICAgICBpZiAodGhpcy5f
ZW50cnkuaXNEaXJlY3RvcnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0ZpbGVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRmlsZUNvbnRlbnRWaWV3LmpzCmluZGV4IGMwNzQxMjhlZTFlOTgyZTAyMDgzMjM3
OGRmZTYyN2VmNWU3NDNhNTcuLjQzNTIwNTRlODZhN2M4ZTAyOTYzNDg3ZGI1YjkwODI5NDkwMWQ2
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZUNv
bnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmls
ZUNvbnRlbnRWaWV3LmpzCkBAIC0zMSwxOCArMzEsMzQgQEAKIC8qKgogICogQGNvbnN0cnVjdG9y
CiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtVmlld30gZmlsZVN5c3RlbVZpZXcKICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1Nb2RlbC5GaWxlfSBmaWxlCiAgKi8KLVdlYkluc3BlY3Rvci5GaWxlQ29udGVu
dFZpZXcgPSBmdW5jdGlvbihmaWxlKQorV2ViSW5zcGVjdG9yLkZpbGVDb250ZW50VmlldyA9IGZ1
bmN0aW9uKGZpbGVTeXN0ZW1WaWV3LCBmaWxlKQogewogICAgIFdlYkluc3BlY3Rvci5WaWV3LmNh
bGwodGhpcyk7CiAKKyAgICB0aGlzLl9maWxlU3lzdGVtVmlldyA9IGZpbGVTeXN0ZW1WaWV3Owor
CiAgICAgdGhpcy5faW5uZXJWaWV3ID0gbnVsbDsKICAgICB0aGlzLl9maWxlID0gZmlsZTsKICAg
ICB0aGlzLl9jb250ZW50ID0gbnVsbDsKIH0KIAogV2ViSW5zcGVjdG9yLkZpbGVDb250ZW50Vmll
dy5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTW9kZWwuRW50cnl9CisgICAgICovCisgICAgZ2V0IGVudHJ5KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9maWxlOworICAgIH0sCisKKyAgICBnZXQgc2VsZWN0ZWRFbnRyeSgp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZmlsZTsKKyAgICB9LAorCiAgICAgd2FzU2hv
d246IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5faW5uZXJWaWV3KSB7CkBA
IC02Miw5ICs3OCwxNyBAQCBXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgKi8KICAgICBfbWV0YWRhdGFSZWNlaXZlZDogZnVuY3Rpb24oZXJyb3JDb2RlLCBt
ZXRhZGF0YSkKICAgICB7CisgICAgICAgIGlmIChlcnJvckNvZGUgPT09IEZpbGVFcnJvci5OT1Rf
Rk9VTkRfRVJSKSB7CisgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtVmlldy5uYXZpZ2F0ZVVw
RnJvbSh0aGlzLl9maWxlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAg
ICAgIGlmIChlcnJvckNvZGUgfHwgIW1ldGFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwogCisg
ICAgICAgIGlmICghdGhpcy5fZmlsZS5pc1RleHRGaWxlKQorICAgICAgICAgICAgcmV0dXJuOwor
CiAgICAgICAgIGlmICh0aGlzLl9jb250ZW50KSB7CiAgICAgICAgICAgICBpZiAoIXRoaXMuX2Nv
bnRlbnQudXBkYXRlTWV0YWRhdGEobWV0YWRhdGEpKQogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTgzLDggKzEwNyw3IEBAIFdlYkluc3BlY3Rvci5GaWxlQ29udGVudFZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICBpZiAoIXRoaXMuX2lubmVyVmlldykKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBpZiAodGhpcy5fZmlsZS5pc1RleHRGaWxlKQotICAgICAgICAgICAgdGhpcy5f
ZmlsZS5yZXF1ZXN0TWV0YWRhdGEodGhpcy5fbWV0YWRhdGFSZWNlaXZlZC5iaW5kKHRoaXMpKTsK
KyAgICAgICAgdGhpcy5fZmlsZS5yZXF1ZXN0TWV0YWRhdGEodGhpcy5fbWV0YWRhdGFSZWNlaXZl
ZC5iaW5kKHRoaXMpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMKaW5kZXggODE0MzljZTgwYzg4ZDFk
NDhhZjQ3MWJkM2FkODAyOGNkOWY1ZjNjZi4uMGYxMjQ0ZThlZmNjYmVjOTVlZmNmZGVjMzM0NzI2
NDhlZTUzOTIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9GaWxlU3lzdGVtTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMKQEAgLTM1OSw2ICszNTksOCBAQCBXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBkZWxldGVFbnRyeTog
ZnVuY3Rpb24oZW50cnksIGNhbGxiYWNrKQogICAgIHsKKyAgICAgICAgY2FsbGJhY2sgPSBjYWxs
YmFjayB8fCBmdW5jdGlvbigpIHt9OworCiAgICAgICAgIHZhciBmaWxlU3lzdGVtTW9kZWwgPSB0
aGlzOwogICAgICAgICBpZiAoZW50cnkgPT09IGVudHJ5LmZpbGVTeXN0ZW0ucm9vdCkKICAgICAg
ICAgICAgIHRoaXMuX2RlbGV0ZUVudHJ5KGVudHJ5LnVybCwgaG9va0ZpbGVTeXN0ZW1EZWxldGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVT
eXN0ZW1WaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lz
dGVtVmlldy5qcwppbmRleCA2MGI5ZjQyNTliMGIzZGI0ZTczODg3Y2NlYmUyYTEwNzA3MjkwYmU0
Li4wMjUzMTczOTZlNmY2NjY1Y2RkM2ZlZjg0Nzk5NjEzZTczN2Y0ZTEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMKQEAg
LTMwLDI0ICszMCwxNSBAQAogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dl
Ykluc3BlY3Rvci5TcGxpdFZpZXd9CisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9CiAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0gZmlsZVN5
c3RlbQogICovCiBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcgPSBmdW5jdGlvbihmaWxlU3lz
dGVtKQogewotICAgIFdlYkluc3BlY3Rvci5TcGxpdFZpZXcuY2FsbCh0aGlzLCBXZWJJbnNwZWN0
b3IuU3BsaXRWaWV3LlNpZGViYXJQb3NpdGlvbi5MZWZ0LCAiRmlsZVN5c3RlbVZpZXdTaWRlYmFy
V2lkdGgiKTsKKyAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOwogICAgIHRoaXMuZWxl
bWVudC5hZGRTdHlsZUNsYXNzKCJmaWxlLXN5c3RlbS12aWV3Iik7CiAgICAgdGhpcy5lbGVtZW50
LmFkZFN0eWxlQ2xhc3MoInN0b3JhZ2UtdmlldyIpOwogCi0gICAgdmFyIGRpcmVjdG9yeVRyZWVF
bGVtZW50ID0gdGhpcy5lbGVtZW50LmNyZWF0ZUNoaWxkKCJvbCIsICJmaWxlc3lzdGVtLWRpcmVj
dG9yeS10cmVlIik7Ci0gICAgdGhpcy5fZGlyZWN0b3J5VHJlZSA9IG5ldyBUcmVlT3V0bGluZShk
aXJlY3RvcnlUcmVlRWxlbWVudCk7Ci0gICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hcHBlbmRDaGls
ZChkaXJlY3RvcnlUcmVlRWxlbWVudCk7Ci0gICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJvdXRsaW5lLWRpc2Nsb3N1cmUiKTsKLSAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFk
ZFN0eWxlQ2xhc3MoInNpZGViYXIiKTsKLQotICAgIHZhciByb290SXRlbSA9IG5ldyBXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnlUcmVlRWxlbWVudCh0aGlzLCBmaWxlU3lzdGVtLnJv
b3QpOwotICAgIHJvb3RJdGVtLmV4cGFuZGVkID0gdHJ1ZTsKLSAgICB0aGlzLl9kaXJlY3RvcnlU
cmVlLmFwcGVuZENoaWxkKHJvb3RJdGVtKTsKICAgICB0aGlzLl92aXNpYmxlVmlldyA9IG51bGw7
CiAKICAgICB0aGlzLl9yZWZyZXNoQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJC
dXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNoIiksICJyZWZyZXNoLXN0b3JhZ2Ut
c3RhdHVzLWJhci1pdGVtIik7CkBAIC01Nyw2ICs0OCwxMCBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbVZpZXcgPSBmdW5jdGlvbihmaWxlU3lzdGVtKQogICAgIHRoaXMuX2RlbGV0ZUJ1dHRvbiA9
IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
RGVsZXRlIiksICJkZWxldGUtc3RvcmFnZS1zdGF0dXMtYmFyLWl0ZW0iKTsKICAgICB0aGlzLl9k
ZWxldGVCdXR0b24udmlzaWJsZSA9IHRydWU7CiAgICAgdGhpcy5fZGVsZXRlQnV0dG9uLmFkZEV2
ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fY29uZmlybURlbGV0ZSwgdGhpcyk7CisKKyAgICB0
aGlzLl92aXNpYmxlVmlldyA9IG51bGw7CisgICAgdGhpcy5fY3J1bWJzID0gW2ZpbGVTeXN0ZW0u
cm9vdF07CisgICAgdGhpcy5fbmF2aWdhdGVUbyhmaWxlU3lzdGVtLnJvb3QpOwogfQogCiBXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlID0gewpAQCAtODYsMTQ4ICs4MSw3OSBA
QCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAo
dGhpcy5fdmlzaWJsZVZpZXcpCiAgICAgICAgICAgICB0aGlzLl92aXNpYmxlVmlldy5kZXRhY2go
KTsKICAgICAgICAgdGhpcy5fdmlzaWJsZVZpZXcgPSB2aWV3OwotICAgICAgICB2aWV3LnNob3co
dGhpcy5tYWluRWxlbWVudCk7CisgICAgICAgIHZpZXcuc2hvdyh0aGlzLmVsZW1lbnQpOwogICAg
IH0sCiAKICAgICBfcmVmcmVzaDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fZGly
ZWN0b3J5VHJlZS5jaGlsZHJlblswXS5yZWZyZXNoKCk7CisgICAgICAgIGlmICh0aGlzLl92aXNp
YmxlVmlldykKKyAgICAgICAgICAgIHRoaXMuX3Zpc2libGVWaWV3LnJlZnJlc2goKTsKICAgICB9
LAogCiAgICAgX2NvbmZpcm1EZWxldGU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmIChj
b25maXJtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRl
bGV0ZSB0aGUgc2VsZWN0ZWQgZW50cnk/IikpKQotICAgICAgICAgICAgdGhpcy5fZGVsZXRlKCk7
Ci0gICAgfSwKLQotICAgIF9kZWxldGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
X2RpcmVjdG9yeVRyZWUuc2VsZWN0ZWRUcmVlRWxlbWVudC5kZWxldGVFbnRyeSgpOwotICAgIH0K
LX0KLQotV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZTsKLQotLyoqCi0gKiBAY29uc3RydWN0b3IK
LSAqIEBleHRlbmRzIHtUcmVlRWxlbWVudH0KLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1WaWV3fSBmaWxlU3lzdGVtVmlldwotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbU1vZGVsLkVudHJ5fSBlbnRyeQotICovCi1XZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcu
RW50cnlUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW1WaWV3LCBlbnRyeSkKLXsKLSAg
ICBUcmVlRWxlbWVudC5jYWxsKHRoaXMsIGVudHJ5Lm5hbWUsIG51bGwsIGVudHJ5LmlzRGlyZWN0
b3J5KTsKLQotICAgIHRoaXMuX2VudHJ5ID0gZW50cnk7Ci0gICAgdGhpcy5fZmlsZVN5c3RlbVZp
ZXcgPSBmaWxlU3lzdGVtVmlldzsKLX0KLQotV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVu
dHJ5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICB2YXIgc2VsZWN0aW9uID0gdGhpcy5saXN0SXRlbUVsZW1lbnQuY3JlYXRl
Q2hpbGQoImRpdiIsICJzZWxlY3Rpb24iKTsKLSAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQu
aW5zZXJ0QmVmb3JlKHNlbGVjdGlvbiwgdGhpcy5saXN0SXRlbUVsZW1lbnQuZmlyc3RDaGlsZCk7
Ci0gICAgfSwKLQotICAgIG9uc2VsZWN0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAo
IXRoaXMuX3ZpZXcpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLl9lbnRyeS5pc0RpcmVjdG9yeSkK
LSAgICAgICAgICAgICAgICB0aGlzLl92aWV3ID0gbmV3IFdlYkluc3BlY3Rvci5EaXJlY3RvcnlD
b250ZW50VmlldygpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdmFyIGZp
bGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZX0gKi8gdGhp
cy5fZW50cnk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdmlldyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RmlsZUNvbnRlbnRWaWV3KGZpbGUpOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAoIXRoaXMu
X3Zpc2libGVWaWV3IHx8ICF0aGlzLl92aXNpYmxlVmlldy5zZWxlY3RlZEVudHJ5KQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB2YXIgZW50cnkgPSB0aGlzLl92aXNpYmxlVmlldy5zZWxl
Y3RlZEVudHJ5OworICAgICAgICBpZiAoY29uZmlybShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFy
ZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgJyVzJz8iLCBlbnRyeS5uYW1lKSkpIHsKKyAg
ICAgICAgICAgIGVudHJ5LmRlbGV0ZUVudHJ5KHRoaXMuX3Zpc2libGVWaWV3LnJlZnJlc2guYmlu
ZCh0aGlzLl92aXNpYmxlVmlldykpOwogICAgICAgICB9Ci0gICAgICAgIHRoaXMuX2ZpbGVTeXN0
ZW1WaWV3LnNob3dWaWV3KHRoaXMuX3ZpZXcpOwotICAgICAgICB0aGlzLnJlZnJlc2goKTsKICAg
ICB9LAogCi0gICAgb25wb3B1bGF0ZTogZnVuY3Rpb24oKQorICAgIC8qKgorICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeX0gZW50cnkKKyAgICAgKiBAcmV0
dXJucyB7bnVtYmVyfQorICAgICAqLworICAgIF9pbmRleE9mRW50cnlJbkNydW1iczogZnVuY3Rp
b24oZW50cnkpCiAgICAgewotICAgICAgICB0aGlzLnJlZnJlc2goKTsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0aGlzLl9jcnVtYnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlm
ICh0aGlzLl9jcnVtYnNbaV0udXJsID09PSBlbnRyeS51cmwpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0sCiAKICAgICAvKioK
LSAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3JDb2RlCi0gICAgICogQHBhcmFtIHtBcnJheS48
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeT49fSBlbnRyaWVzCisgICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5fSBwYXJlbnRFbnRyeQorICAg
ICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeX0gZW50cnkKICAg
ICAgKi8KLSAgICBfZGlyZWN0b3J5Q29udGVudFJlY2VpdmVkOiBmdW5jdGlvbihlcnJvckNvZGUs
IGVudHJpZXMpCisgICAgbmF2aWdhdGVEb3duOiBmdW5jdGlvbihwYXJlbnRFbnRyeSwgZW50cnkp
CiAgICAgewotICAgICAgICBpZiAoZXJyb3JDb2RlID09PSBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VS
UikgewotICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50ICE9PSB0aGlzLnRyZWVPdXRsaW5lKQot
ICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZnJlc2goKTsKLSAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgdmFyIGVudHJ5SW5kZXggPSB0aGlzLl9pbmRleE9mRW50cnlJbkNydW1icyhl
bnRyeSk7CisgICAgICAgIGlmIChlbnRyeUluZGV4IDwgMCkgeworICAgICAgICAgICAgdmFyIHBh
cmVudEluZGV4ID0gdGhpcy5faW5kZXhPZkVudHJ5SW5DcnVtYnMocGFyZW50RW50cnkpOworICAg
ICAgICAgICAgdGhpcy5fY3J1bWJzID0gdGhpcy5fY3J1bWJzLnNsaWNlKDAsIHBhcmVudEluZGV4
ICsgMSk7CisgICAgICAgICAgICB0aGlzLl9jcnVtYnMucHVzaChlbnRyeSk7CiAgICAgICAgIH0K
LQotICAgICAgICBpZiAoZXJyb3JDb2RlICE9PSAwIHx8ICFlbnRyaWVzKSB7Ci0gICAgICAgICAg
ICBjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gcmVhZCBkaXJlY3Rvcnk6ICIgKyBlcnJvckNvZGUp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZW50cmllcy5zb3J0
KFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkuY29tcGFyZSk7Ci0gICAgICAgIGlm
ICh0aGlzLl92aWV3KQotICAgICAgICAgICAgdGhpcy5fdmlldy5zaG93RW50cmllcyhlbnRyaWVz
KTsKLQotICAgICAgICB2YXIgb2xkQ2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuLnNsaWNlKDApOwot
Ci0gICAgICAgIHZhciBuZXdFbnRyeUluZGV4ID0gMDsKLSAgICAgICAgdmFyIG9sZENoaWxkSW5k
ZXggPSAwOwotICAgICAgICB2YXIgY3VycmVudFRyZWVJdGVtID0gMDsKLSAgICAgICAgd2hpbGUg
KG5ld0VudHJ5SW5kZXggPCBlbnRyaWVzLmxlbmd0aCAmJiBvbGRDaGlsZEluZGV4IDwgb2xkQ2hp
bGRyZW4ubGVuZ3RoKSB7Ci0gICAgICAgICAgICB2YXIgbmV3RW50cnkgPSBlbnRyaWVzW25ld0Vu
dHJ5SW5kZXhdOwotICAgICAgICAgICAgdmFyIG9sZENoaWxkID0gb2xkQ2hpbGRyZW5bb2xkQ2hp
bGRJbmRleF07Ci0gICAgICAgICAgICB2YXIgb3JkZXIgPSBuZXdFbnRyeS5uYW1lLmxvY2FsZUNv
bXBhcmUob2xkQ2hpbGQuX2VudHJ5Lm5hbWUpOwotCi0gICAgICAgICAgICBpZiAob3JkZXIgPT09
IDApIHsKLSAgICAgICAgICAgICAgICBpZiAob2xkQ2hpbGQuX2VudHJ5LmlzRGlyZWN0b3J5KQot
ICAgICAgICAgICAgICAgICAgICBvbGRDaGlsZC5zaG91bGRSZWZyZXNoQ2hpbGRyZW4gPSB0cnVl
OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgb2xkQ2hpbGQucmVm
cmVzaCgpOwotCi0gICAgICAgICAgICAgICAgKytuZXdFbnRyeUluZGV4OwotICAgICAgICAgICAg
ICAgICsrb2xkQ2hpbGRJbmRleDsKLSAgICAgICAgICAgICAgICArK2N1cnJlbnRUcmVlSXRlbTsK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlm
IChvcmRlciA8IDApIHsKLSAgICAgICAgICAgICAgICB0aGlzLmluc2VydENoaWxkKG5ldyBXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnlUcmVlRWxlbWVudCh0aGlzLl9maWxlU3lzdGVt
VmlldywgbmV3RW50cnkpLCBjdXJyZW50VHJlZUl0ZW0pOwotICAgICAgICAgICAgICAgICsrbmV3
RW50cnlJbmRleDsKLSAgICAgICAgICAgICAgICArK2N1cnJlbnRUcmVlSXRlbTsKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGhpcy5yZW1v
dmVDaGlsZEF0SW5kZXgoY3VycmVudFRyZWVJdGVtKTsKLSAgICAgICAgICAgICsrb2xkQ2hpbGRJ
bmRleDsKLSAgICAgICAgfQotICAgICAgICBmb3IgKDsgbmV3RW50cnlJbmRleCA8IGVudHJpZXMu
bGVuZ3RoOyArK25ld0VudHJ5SW5kZXgpCi0gICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5l
dyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnlUcmVlRWxlbWVudCh0aGlzLl9maWxl
U3lzdGVtVmlldywgZW50cmllc1tuZXdFbnRyeUluZGV4XSkpOwotCi0gICAgICAgIGZvciAoOyBv
bGRDaGlsZEluZGV4IDwgb2xkQ2hpbGRyZW4ubGVuZ3RoOyArK29sZENoaWxkSW5kZXgpCi0gICAg
ICAgICAgICB0aGlzLnJlbW92ZUNoaWxkKG9sZENoaWxkcmVuW29sZENoaWxkSW5kZXhdKTsKKyAg
ICAgICAgdGhpcy5fbmF2aWdhdGVUbyhlbnRyeSk7CiAgICAgfSwKIAotICAgIHJlZnJlc2g6IGZ1
bmN0aW9uKCkKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwuRW50cnl9IGVudHJ5CisgICAgICovCisgICAgbmF2aWdhdGVVcEZyb206IGZ1bmN0aW9u
KGVudHJ5KQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9lbnRyeS5pc0RpcmVjdG9yeSkgewot
ICAgICAgICAgICAgaWYgKHRoaXMuX3ZpZXcgJiYgdGhpcy5fdmlldyA9PT0gdGhpcy5fZmlsZVN5
c3RlbVZpZXcudmlzaWJsZVZpZXcpIHsKLSAgICAgICAgICAgICAgICB2YXIgZmlsZUNvbnRlbnRW
aWV3ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnRWaWV3fSAqLyB0aGlzLl92
aWV3OwotICAgICAgICAgICAgICAgIGZpbGVDb250ZW50Vmlldy5yZWZyZXNoKCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdGhpcy5fZW50cnkucmVxdWVzdERp
cmVjdG9yeUNvbnRlbnQodGhpcy5fZGlyZWN0b3J5Q29udGVudFJlY2VpdmVkLmJpbmQodGhpcykp
OworICAgICAgICB2YXIgZW50cnlJbmRleCA9IHRoaXMuX2luZGV4T2ZFbnRyeUluQ3J1bWJzKGVu
dHJ5KTsKKyAgICAgICAgaWYgKGVudHJ5SW5kZXggPiAwKQorICAgICAgICAgICAgdGhpcy5fbmF2
aWdhdGVUbyh0aGlzLl9jcnVtYnNbZW50cnlJbmRleCAtIDFdKTsKICAgICB9LAogCi0gICAgZGVs
ZXRlRW50cnk6IGZ1bmN0aW9uKCkKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwuRW50cnl9IGVudHJ5CisgICAgICovCisgICAgX25hdmlnYXRlVG86
IGZ1bmN0aW9uKGVudHJ5KQogICAgIHsKLSAgICAgICAgdGhpcy5fZW50cnkuZGVsZXRlRW50cnko
dGhpcy5fZGVsZXRpb25Db21wbGV0ZWQuYmluZCh0aGlzKSk7CisgICAgICAgIGlmIChlbnRyeS5p
c0RpcmVjdG9yeSkKKyAgICAgICAgICAgIHRoaXMuc2hvd1ZpZXcobmV3IFdlYkluc3BlY3Rvci5E
aXJlY3RvcnlDb250ZW50Vmlldyh0aGlzLCBlbnRyeSkpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICB0aGlzLnNob3dWaWV3KG5ldyBXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnRWaWV3KHRoaXMs
IGVudHJ5KSk7CiAgICAgfSwKIAotICAgIF9kZWxldGlvbkNvbXBsZXRlZDogZnVuY3Rpb24oKQor
ICAgIF9uYXZpZ2F0ZVVwOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fZW50
cnkgIT0gdGhpcy5fZW50cnkuZmlsZVN5c3RlbS5yb290KQotICAgICAgICAgICAgdGhpcy5wYXJl
bnQucmVmcmVzaCgpOworICAgICAgICBpZiAodGhpcy5fdmlzaWJsZVZpZXcpCisgICAgICAgICAg
ICB0aGlzLm5hdmlnYXRlVXBGcm9tKHRoaXMuX3Zpc2libGVWaWV3LmVudHJ5KTsKICAgICB9CiB9
CiAKLVdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeVRyZWVFbGVtZW50LnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBUcmVlRWxlbWVudC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbVZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2Vz
L3N0YXR1c2JhckJ1dHRvbkdseXBocy5wbmcgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0ltYWdlcy9zdGF0dXNiYXJCdXR0b25HbHlwaHMucG5nCmluZGV4IDI4ZWI3ZjZiYzg4
M2M1MGExMjcxNTU2NTlmZThmNTE1N2FlODViN2MuLjFlNzM5ZmJmMTYxZWUwNzRkYzk2Y2VkOWY3
OTNmMGU5MGM5ZGJmYmMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNDA2NQp6Y21aYCtY
KmlTKDdvSGkwTEg0REVuI2xJcmhHYjFoQip7YHptTjFBKHdpJHt2YyphKENNTTlLSFVhOVFNM31i
bzkKekFsbmRTWHtMLU5RKDE7NCV9bG5oX3QqRCtLZlhXYm9MfjJLJlVNYXAtfWlafEtYdjVKWmVj
ViswME0hOCp1UFktCnpRX0tfd2chdVNINEZ+UlV7VUgkWDNfSSlOPVdsI21ldSFffT87NilANWc4
Rjc0cGx4cnVYciYxcG01eyk2bVIhdAp6NFh3KWA0anZTYWY9Wj1ALWokUUczPkElMngwZGlLaHdE
QUl5bDhOVC0kNlN4RkdhPW1BaT8hfSgyPmYwcDhhSlMKejhBPSteTyFeSSE1b1hoV3ItIVV4IXVm
PSFfUigzR3MmPVlCdXV5V1cwWGUteiVpKURlU1JvWFh7fk9kNSh7ZGw5Cno3R1M7NSttbFJOMHpM
dGdlPFRIfndKSGREQ2gjU01nMyQhfDFsSlEkUnJYcC1mQGtnPlQqbU5xM044aGR4e1RkTAp6TE8z
KyQtdE1hP3k/IWNVbD9sb1hUKEptJj5jQyUmUih5UkhgYk9+ZlM1cUhoMT5xJldIV0h4eFd2Mz9M
V1pwSFQKenBwTj82PWNZKEV6TDJLY28oXzM4LSVVTk5OMXhgVzVRZmlFSlExZHUhMH5od0dROyRT
V29SV3Y1P2whS2djX0xtCno8Zjc9V3QmJnQrQ3FHSHZfKGtfeColSEBZaVBebWN4KEIqMCEjMytL
TitSV0BwND5vaXxLeyo4UCZrczJFKythfgp6N018YFNyJUpHflI1e2xROTA+ODcoQVlNSmE9aGpV
VUN+b3FNV054ZjcoNGp0SWhNSCpnZE5jPEVfazRNdUhkODsKeiF2WUB2QGQ7eitKKypsTSUpWFVo
diZKdmR4QihNVShYVjN+WmIkRVFEa1JxYjVOX0RrTykhXzRqTlVoWFJ2KzN7CnpmNUw9Ums2dlRq
VX4kVGxtJlI7MWdaKGZvdUF4ZlBWekd6T216PCgtVHw7akc3c0hiPj1gRytHaCQ0aTBEKUB2ZQp6
Q0R1VERtZ3BfZUlTYSZkPTFRR2QkdTVQIW54U2xAajQ+PGpGNTlOfDFJSzJAXk1uc2RvaG09e282
M2YpOT5XOFkKenRDNVZNMW9FYTB5U2p2MU1aNlEmRl8/JS00OV4lQFVUKXNEVEApKndVRlY8LWdI
YWhqT0IxSG12OUJzekNKIzlDCnpKRiZJc0srSl9jazJIcXhRTXMkOTdfd2xfZ0gldUxYeiF7dCNQ
JiEkKHVJRmBVb0FJb2dnaE16JF91QVBKfkR7OQp6Sl55Mi1kO0ZrRVYxOT9gMj0+JlVEUE5yNmIh
c3JTeXpneld4KntmMDsrVWxrSHo0Q2EqRUNsVFdINkxpV0hSQWgKej5SaVR7a1UjaGhUME04LTdy
PX4+ZVZtVllncWE0XkUhek1DYGNtTF9odlA0ZSpCMk9iRWR1QEdJe3t2V1pjMnE+CnomWU8reypX
O01HQzdBSFE4M29aMk13WkVlRVAyOEJxVSNvPSY3MSU8NGhiV3Z1TnM2YktsdlA8bGBrPTZCViN9
PAp6NUlfX2tMWkZYST8pcjxzeHs3blV7cEUqJGFFNFczTzd6TE0jU018VDUoN2VkJVQmZT1KI3Az
eWVBUE1pbkYpTUsKenhDa1k/LXdAVCFffkdtVS1EVHEzZihjbilQNmBFV2A4SjBTe3JhQnMjZi0w
UUtVWk0mQng2N3xGYFQqO1hje31FCnoxKTh9LUY5cHUhbU5wTzlnaGl9R0Y5QkFiZ28hVTU4JFRn
aG1PSnFvOXk9VWtFUHEoK1orXjZ0UTVSbDFFTjwzQwp6SElhNWA5fUZeYU8oRyF9KUB5TlBDR0E/
NjU4JWJmQ3tgZChXYEJ+X24tZXE7RDBFMjdiWUZCN3ZCI0RQb3FLQ3sKeiN9fjxHaDZudSNObCgq
QEtZaS0lKzBlTFA3eyVeaXBgVGlSZDxBLWBhRHpwM3lSek5fWkJ4VkU2a2s/O2B7LUFeCnpuVVQz
e3FIaHVXUiVMKiRffXUtcmNeaG9mWnMyUXg/Z1JMVyktSWRlP3I2a252aXBgaVA4dXp2Mz1uTVUj
bHh6Qwp6aklQKUNldnxNJl9JKDdFI0prYnd4cnpFMVhPOGl6N1NWZTNxZXAjUUR0OzgmRDJDa3cq
QnZQNk8xTmxmUWxUWT4KelIheGspdHtBVSpPdzsodGk1N3tRRldXN09CSj4zKGt6OUdZZWtZRnRq
QXQpVEtmfnwpWjVzR0g/X2lmUVZWUFJ3CnpTI01nNCNRTW11ZDNyZzI3UjFYcTAjdTFzNDhJWjBo
fVBPeGMxSEEjTUpqJmorZz9UdC1JJjJYVHxZV24jaHtpYwp6aCNpKDxKPnROJjV5UzwoXzNVdXkz
U3wzWWZZMU1zKXFpUjBwRElkOCV2RVlvVH1xJXFhMWdofC03fThzN2soJE0Kejc+em0jVkBkYFh0
ZWg9Y0tLKigwVG89ejBRMFJgYTx7P1dzTU9udFNsNnIyYll9MEc4OEZPc3gjYCNOdlQxZTtDCnpe
Vm5mWnhAQmZ8X0p1UFFDJFpKTlFCQlY1cFRTYmh0Z0N9PlAmalkwK1QhfW5HNmE7cXBRfWJzO3g7
SXlgZ0RxdQp6aFpge3VJZjRFNUx0VD5GSjZ9SztVNEtOYVpxQSROR14/TigwXjVjJUdqeU1FPDM0
fGA1ZF5+ZV81PDQzc2BmeDsKemlybmpCdG1rN2A+PmlTN15ybUA8PVBUajBoeCFUd190PHhqNV9a
JkU/aSVfJUI/e19CJEhzMntKbU8kR2NJMjRVCnpMQSVAYHlXSUR8TyZeeUBtPk9WWkVCK31XITdV
eytsTlpPPlE9K3pUU09+cXEzX1VKQihOeTJaSjFjTGB1czIyJAp6VU1BPXRxVHBid3lOeG04YjNu
X2p1PWBFQCh4bS1rUjtgcWVTN3loeGl3UDYoJSQ7RUAmMXhJZThqMW5LSiN6JDAKeiMtP2BvYm9r
QXNPLWhsNUZLSkI0XnU2KD9ZNDU5ISs/dnJkSEdTWTclVGByVyVQQT0teGtTSG1CcylrQkNfZ3Zs
CnpUeT4kcV8ycXtsPDZkUnxeX3l7OCYyWC1vWUo0WlM+fDNZcEMhaWQ2YE1mJGMydkFKeTB4T011
UWk/UVI+MF8lNAp6dD8pYGJeVjtPVW44Y3gwMCRIR1d5RWNzVlRnTHxMUVhDZjFjP24lfXlLdXpw
M05CPW9lOz1kYUV9TiRvXytgaCkKejF5OX03clhwdmcmbigrMHhOSSkpRXFjNWtCMHs0LXdtaC1N
SHNARWk2bWVEVCZJUEZ3dlFFd3dfVng5M2Y0RikqCnomNDlBTWVle3xYMElLMSNDNW15U09fYDxq
ISY5VmI3dz96Nm1mWFNfNXN5QGM/ektBRyRYUX5hTSN3SXNHbmgjcgp6SlVFZz9wOEYtfUV+aWVO
VFV4KGcwP3tFSj1FXk45am1Aez1gTWtPfmdaKGNWJXx9O3hVSlZHUk8jMXE8RiQjO2sKel5maFBB
Rn1QNVNjbmNldk94aWpZS2hiMG8/ekxqSFhlR3FwYXNscVE0c0xuU2dCdDw1NCFPejdie2habXhW
RS03CnpfR2hQNnElfC18Mig3dD5TS3l1fklZZ0JWPThleDdCS210JHd5RTkmSSpCJVYxTi11ZWFV
QiE3IVNpQkhvOHZJbgp6JTg/YTQoZUs3aVRANC14XnVuSG8xRz8wOGhZbkEld3FibVpUSD9nWHVq
I3hFdVRIYipyUXE+VHQocDxyNyNjdH0KenE9bH5mRipHSU4qZ0p5KVNBIW04ZCZEbnZpKklCcit0
cVcqNDBwWU1yK0wkWXtLbW1lZylHMn58THFCP2ZLe1gtCnpeaUY0dStGKGFwbXZXK30xT0xfKnZW
TGV9dDV5bCFoV0U3SjV1JjRHUmEwTHM/RXgpTCUyXkVseipsRzBEalVrdwp6WWUkJlZNYHQzaCla
Xk5qMnxHV05JaF5HIUs7QTVQd1RqfXRAN18/TEFeWSZkSTNwYHdBXmQhVVB8bF5VYH0zZDQKejdi
WUtpbVM8R2laQWdPbFQ0aGQ2VmRHPytyXy1hNF5LPXVpUzdKO1hWJnVNQ2JNZStBKE09VD5gTyVz
dG9sKSFnCno7RiEkSEVVK1RkQHAlflQ8P3hmMWs2UDQ/cDs+Y2JxVV4jfGRKa0xOeV5MZTlDPiMz
UExFelJyRnVpbT1EOV8pWAp6e1BvZVYwajF6cmE/XjlebiY2SHJsYlJRNlU/aDZhTDM3e0lYJVU2
Y3tKUSteKXB2dm0rSHk2diZkcW4rQztuRCsKeiFvPEQrI3EreWtqKXB+aWkqO2d7JnoxOXs5WDhZ
NXFJciFNQzI2a2pFQkpiMStFVTZ9YmYmSDdCKVV9O3txTzZRCnpvWj5yTHk7KCsme0RLfjdDJmxG
TDEpJVFxREs1UEwqMUtjVVBATXd+byRRPWA8TF5FRUBfXiFTT3xMXyZCP3RjbQp6LVB2TzklcXU7
VWRwUj1DYyRBSz4wOVdYSlZjKUckNFBmel4hMmBOND1kYVM9Py08YnZtb2YtNmQldl9Nc21gYVEK
enNuSEZ3bmdLUlJ3bFZZcUJ6LWJ6d2xlNGREPDhreXYwMncxYkViK2p6IXN4Wj09eS08N3tpOENN
P3hfU3p3e1p4CnpUQipgSW1feXhVU3RHRittJUtVZ25aT3JGP1glKXZXNiktSHh2bE9XZl53Q2cx
JTNBe3sqeVptMn1eV2JZYXg4KQp6R0lYMmJPPzE9YmE2bDs3SW9BVyhnNURfQTI0bjdGVjkpWm9P
JH1CanZZfi1odzJNYG1fblNna2BqVDM/Sks+UV8KenhBJGpyPzFfTHF4fFRnfD56RzdxYF5sTzVm
Slgrfmw2SmQ/cXBNUWI0djZAYC1WNl9Fd2BZKi00X0JMTG4pJl49CnpqeVQ4e0Y7d2hFWXd5NTw5
e2lua3kxZjNpb09PO1FkaGNMSU9MY2J8c29pSW9LWW1hSUwrS3hVdGtvSHFBRmlgbgp6dGVSQCQo
eVFIYnRrSzNkPnp5Yz4rUTJtfGE9bm9qejNEPjJmeHlIflg3NFA3P3l8PnpzR21AJkghUDNLT04z
YVkKeik4JERmb0tLJWdPQHhnaTZ8VG1jVzF7YnVmN31sJTgyRzcwMDJ9QGdoYFcpPGxjQz0kcnkq
bzdSamlUPS14SWM9CnpeSUc4VkdWR0F0e1JPMG4pKGE2Y3prQyo1d0t1RXxTR2d4b1BvKElrb05A
Uzx7byF4aUM9Rm1gIUZDcDE7JDMoUQp6UCNSczlhczcocVRrQk9yI3hjbzctP0w3TW5JcUY+U2J4
eUUtTWgzZjgodnM5Y3pEeUZ1aW1yfnpeeFNuTThEQmoKekdtKU5kZVJZOVAzISl7T0ZeQ1BXcj4w
bj1AYzVPe2I/U1paT21TVm5UbGtYRHJ0OWw8LTg4cSloeGRXVys3YUZrCnp5UXZhWlVYPGhHTHht
fDQpcntvX0FfZ2lNZjIwIWx4OHdofWgjdFluZEU3eCF6Xyo1JVYtbk9wPTFTNnRlcEEoJgp6R1Bf
QC0laTE7IyF6USZBREtxUCE7UDFgbENYbVFpRiU9Y3tiQz02UHw4cT1qX3FCZlJOSX5nJCQyKGpr
JGVYMU4KemlYYmgrRzM1YngxT0BBUlUyT0Z6c0VJaVJmNGl5cGB4T1A/LUNud251aDxLcVZwXjBl
S1VjKF58NnlZNlEmZTtECnojNXIkfitUdF4hTDkkLUtgUWlSS3ZXIXp2S2F+XzdCeHllP0c+NCVV
ZjMlZ1dwZW91fENgUWo4WmJTdHMjYyRRXwp6X0I5SjtXemFyMHJ5ZSs3Z3R0UGl3d00wRyM7YzF3
XkYkNF9tbUdjQWM8TkFabylFZlglU2s4V01ybCZCPkJYUFUKenpfIVEzJklYKCFtRyRZR2k3ZkxX
ZWd8Q2RxfUBFTGFhXkdodlhIWDhCPEVgYmVKVnJTaW1RUiRoPE9ib0okPHxwCno/ei1UU1UqJGRV
UmFYUmteY1VEdDVzV0Y8ZSFZeGp3PDJRQllDdkJ0UztNPWdeUD1QUD1HYzRiZjc+dnY8diNmfgp6
ellueWtzcWorYWJQKiN1aDVxN3FtRn42ME81PSZaT21vRzByOF5IMCNBPTAycDFNYllnPHlvX2Uw
a1NoZ3g8cS0KemFeUkNXa2lWaCl0OGU3OEhVYiUlIz1+UmV4dXtGQTU9N0oqalA5KjZ0cVUhMnZH
bXVTQlpFbndPRjN0cUFWfT5JCnpuQzFefXZMc2s4JCFlSDVgUFhIbG4tYGs2dyZrVDd1aCNUK2co
fG8kJVk8em9xNz5uRHN2czk2MG1WSkBoaUAwcgp6O2JMfDRmSTxAP3cqWmRHbG9FXjhTUyMqQW5A
bXJJSnZWU1RvbnN+PHBscWRBS3pgO20mK3tmX2pTeWAkNGkjeykKeilzen0+algwVX48NTYrTlN5
X1Z4VCt3YCszLWdEYzlNYHd2V1V2UTctU0BuMjV5NSp+IUt2QT1OJG83RUlfYjQ+Cno/UEdqPE5s
ezxGQ0NsRzElO2BDeE5VdFApeEdCUVFobVc8YTQqJmUzUXJaOTNHSWVJeGpEWDV3T31BNWsyU1JV
LQp6UWdkJTBHRmpzMz96S0ZLQGMlaGo3YEI+TnB1UlUqTE8qTER0ckx8WlZZUkQ/WXNhND1xM15N
Jm9NQEgwUzM2JG4KenhGUkp9JkxadXhna1F4SXBJJC1gVkBLTkZEKW1qSng9XngmbCUtPHdvcXky
em9lXyU0Z2crKHtEcjFFWmRNc2dlCmozaTFjKy0pOGV4dGBCdG5VRVgmfSgmXkFZdVJPJWcjP2lY
azNaM3tMLUwmR3kKCmRlbHRhIDM5MTkKemNtYWkxY1FoTX0qRz9pclYjWmR8OGxfZyN5aXxwMVpI
aWh8d0hrc31tc1BRZUxgcVJITn5fVC1aRlE7THM4SzY1CnpWIXBJbSM3eXVpWUQ4I1goSE9zZXw5
dDJDekpJPVI/bTVyN2Y4RlB2ZChaUlNKQVNmOUZHbSkzUDduZUIwOChwcAp6YTVjKGc3KHFhdXxG
b3YjdXooYH5Bb3w8WigoR2MpI007eD9ZREZ0VncrVkg7Uz93fShUWFE+ODwmanQpcDlONk8KejN+
OHVTWTNkOVZmeGR6SG40KnVuUjAyVHhhXzMwYW1KVjl5bDVAYn5Jcj0kKlVASzYjUlFOR2RSPzJx
Rkk0NjV3CnpxKU0rfmBzd3U4bldsbm0tbz9uWnpvP1VYX3lwY3Ffd0ZHbmZ8Wk5aZUBGUGFYU1Nj
RUVSdHF2cW5rVWlTa2E5bAp6YnFEb1RrcHc9KjVyJmlwJW9zV2FKfDlCOGI7aGF2dUJuc2dhM1gz
JDhqSUxieXFERTFYc2w1ekFtdikjKj5mNX0KejZDK3lYZXU/cWA3bTcpXzYqbyhjM05GQHVpM3xZ
O0BzKjJ9S2g0YGIoMGk3ZnZwIThERVJvNll6N2s3bTU+VkhMCnpyaElBb1NXKlloWEJvbXIkbWR9
fD1SdUFTUUJiYVAqN1UzPUkyRGl6RmFUQD12LT8mPUh1dUR7WiZ3TFRpTEc4KAp6OzNDNWxGaGo4
JXJMYn1qdz13eztQSFJwKFNWZHxHbkMpNTJqTUNyJjkofXRaaTBwT1ZlZXMhKDQxXlU4Tjd9PWkK
elpnUUwrOytrPVMxZUFSO3QoQk5nXkQ+bUNaQl82SmdAaUtAT3RePGVfdDVySDhrMndLbyRDZk9j
TUI1VmFGPHRzCnpqPE9ZUlRiZnVPTFdocGx0ezs/figkTXghYDt7dkFeQXJ1VFNEbHAkLVdXRG9V
PTVTSWhHYWd+NmpfR2R5dktkPgp6ZHZMMSVtU3c5angzcl5TPUdeVEwrZ1hJWFlJdjczX09BYCNN
c2c+QzZHanFUMlNvSFhTfEkzY0BfI3hGa1ZuZmcKejlEVlkjTGNnUWchU3xfRilmM3lFZSU9O2gq
UTZGNXtQRXFmUVpaZ0wjbFU4PCkla30wVnR0Iz0mZHxFI3JMN2MrCnpBaF97b2krWTNMejNveE4r
MEd5QVYkRCQ+c3BWcCMoPjMmez5qQHA0MX1XOEJXKnQ+fVd5Q1Y8Zyg2UD5YZl4qdgp6SUR5cGco
MH1vdmd5bnxYUEt5KVZ4VU9xMUl4RGl4S0IrfUY0TSNaezw9d3NNN2tuY0pSQVd+a2VOcipeRERs
eWwKej1FMC1XJX1oUTJnQkh4eyN+ayk1aiRUTG15JW9ZZ21AN0N+LVRETD81dlM8OD5hK3lQaVU+
bjJfOG1PK2NPJXxaCnppTWZ8UnNKcyhuUFp8SDRpJD9eeGs8QDVjWWFvNTFnbzZpMkAoSC1Hdz88
LVdfczNTJUtVSGZ6KEQ0QUNYRnlndwp6bVkhc3lIYSptfWN+Kj1aWSEydX54ODc5fmBObVVnbH5E
UFpSIS1rQjd3fTZHMEc2d2Zrbys1SVRIQ2M0OWgzWnYKem4jbkhRJEVuU1JOU1dATTw4TFdLPHlA
eWVqWHtVYi13SHVeOXxTfGohPVlXMnJuRzRoIXZBQH1iYjtYMkkjTGhLCnoyZyN6aiNmdTlnaHg9
bj94bXB7Nzg/bWVxXyRSITcrcDxgNjJFV2BmRSNteXUlYlB8ISZHYDA0ckBuKVJJelV3Pgp6Snts
dldXNkRkVWRMMytRUlo5alkjRjsjaykkNTRZMyZoV3pSdzRCcDl8OGZ+TjhtfGlpcnZoY2Z3NHlR
ck8xcn0KelghcWNRMElHM2RMS3opVVZ3LX5gKz9YISloWW1gYmcmUlZMKjhfOyVBN1heNy1LNzRh
SGtJfG5fP3E/NlooYlRsCnp7M3R6cTx2NmojfDZ1UGJibVhpJWFVU3N8ZGVWX3B1RXVUKG4wR345
Zjg+Yz5AYGd+d3NzRUBVTndeOXc9RVIqWgp6b34rO1BJY2hFbS1oNVQqQlBMPmNLeD1DZE1RdFR1
XnpyTWBjeGhYS0JQJVlHaVNoJTR0QT9RKiFtO2gwPU1qejgKel9MUUpabS04S2FGWnFeP1hpLXUk
NGN7bm1vZ01udjJeczhCbEFkY0NeSnFVVCVFMjMlPzQhYUtRKWRiVFBlQnMxCnpWIXM7e2FvTjIh
blVXdmhSOHxFJUdsMzJ9Zjs/NlZwQnQ5KERTKlZqaU1NSVdGU0psP1gxfmRzI35Hb2hfJmN4cQp6
Q3ZCTlp5SHJZZChGfXFBRVM9MWtTWjxyfEpxJWslWk8kc0dSPEZrKlNsJCU8P0J8Z1FhMT9AQG9z
YSktaDVBMiYKel4oVEdzRmZJNWI2ZTB6ejgwUU5fX25YfCt6ZjNqMTBlUkgpWGYydE9ycHYkZWMw
a3UqWDZpeWEqTDFaciMmWEFpCnomS29jJG1rMXNxNldVYEM2WkwlQEtNRyF9bDMlQDYwfFRSNl5P
dkBYaD5EVzJkfUQ7Rj83c0JTYFRmcl8rNDs8Twp6X1UkJXVSbnNqQztmPVd8ZkopSV9fP0ZWWGxH
eG5YWVI1WD9uJjt4THJMN0NwJm05TSRxVTI2dktEPkI4SkNYO1gKeiFgbDtCK2o3M2kkUyRfUVg1
eShaP15TTGtaRGpNJSg/dV9FQ19SWGYxbHohfmBXUEdtUjdlZXM4JERRVWZGSERaCnolfHtxJnln
I2JecUZ4PFUrdGtHQ0s/JEdrS3V5VWozNmw4RCMyP3RkOHBjcXJSV2EpbW5Sekx1PWptdkEwKSF6
cwp6cEtqO2BsR30rQDdeZykjKnJBIVgwLSNncjkzWXc+T305fHcwWmxzNUBrPzN5NXFEbT90JCRq
amQ+PlhESEhPeXsKelk2az9PYUI+SVJzN2RveWpye0tAN0gpVlJJM013RTgqUTFFUytvYFYrKytJ
R1B+UDdndHt4PkpEUUFWVjJMfWd4Cno8YGhPSkMhMjdncD1eZlR0TX1Jfj81M0ZlaDE3VGBgcyZF
WVZpb2Z1OWAtTEZuS0c8cyVpWGlJUmxrflYwVDhnbQp6bD9VMzZaJmdUWndDOGZaRGZoTEBPSGhA
UiVrZTZOU09ffSU+fCh0d2hVU0x3Q1ktQn1qPFNPbmBqJE1JKGtXU3AKenlhailKTylhWjItO3s1
Njc8YVohXlV7OVgoakBNP3RRO1lePlB4K0JqVDEpIUlQbXNAZmYjdUdKYFIpNCFmTHUmCnpzQihs
eiZ2SzN1QUtHMFZud2dvWT5HSjBvLSQrfURkc1RYajc+WlI/Ul83M0YkendmPipRZU5zdkpwYkZ7
O0AhQQp6a0NxQlU2dGctPTtyeyZ5dyRkVDspbiRgdWVgfHtPZ1IqQnZLWWI2XiZeI2p9TnJQVTF3
Q1B+M05ETXhpVXBpREkKenFnX1FEVSNFU35AUHs4fUhMaz55KTBuUDA+fTx+QTg8ZU9BY2YlZzFI
bXNkVnkhSChwWVExV3BjTnZPfWpeNGdzCnokNCY4Kl5TRnU8Q0p+aGNWZ0pMQnUpZTtvYGUmWU42
Yj55QmlxK0BET0xOdWZATjIySDMzQDA2dStfWUlUa2NxTQp6MktKSjB1SndXcG5YVFY+czMwVnJk
NkttaEgtQzhWOEpUbV5gMFlKX2I9Rl9+cVZ0N01IPlNhP0Q9VE82MSUxfEAKellYYEVVVFZodWs3
UUBxem1ra2R9KS1aV2QzZFdLUlY8bXZQKyl0Kk8hWDF2aUxrJEczRzd9Q3FgYFBNeEh8YTs1CnpS
Y040bCF7TzJeP3RXOEZDWmRKPlEmfFBqeCZ2T14pTjIydnFZQiNBXjdHN3JAYFVpVHMzZH5rUjg7
JVo5U2ZPUAp6SDduSFYySkV2dWNtSGdCJER3d0s5X09BNUxweCNLUGxxYmc+QSVpR19XaHZqdjR1
VUtlRWtOSyNDKFZxd1pQV3IKemJxVSszPWcxd1JLakd2b3sxJGA2aTJuK0VnM0VaeGN3OCRGR2A4
M00/WXRhXyRRK05ge0c1elMxPDAyQ3RPcmMjCnpWOU1WciMzXnA1e3l6MXhTUk0yN0BYKipNNDZs
JjF5e1BDdUokSkpoZ0x+eXNEMFopX01KUH52SyREV1dTZSQzZwp6UiRpN3EtaExrUEB0PitxQmpo
WmpMMkNNSXB1QjJrczhAempefmRpNDZOSHY8ZUohSG83MiFHOVBKJjh4PlA3bFoKem5HU3hARHVj
RGt1dlV1M3NCZ21FPSQ5amh0VWtIUCM+eGtWRlEycSRoMTNyM1lRbyFlTWxyfWJFJnF5cDl+cGp5
CnpKVWNucm1DZWp7YSh8fShQT3crRVhXUSp3QEljSkdhXzt2cHh8OT4/YVBjbGc9RnMjcWRmJlYy
O3x4PyEwc2spOQp6eX1aYk1vTTJKcG5fYSpxeyl+VUYpWWRyVHZjbmMzVmE/MUh7Wj9DQ3UoKilX
JDN8YXpiVCQmO1JHVGlYTWhVJU4KejJPYzdNYztQVTJOMWQ5UmJDMEMhJiY0Xl9lPkFTTEd4T0hz
U0lSaH1GfClrTHVgVz5Fek04IXpRV0R6WVRpQWg7CnojSWZWZi1fYl99Ky1+YSU+WFFyeE1edmNv
dnQjYz9Mang1ejNFenxGaHhgS0hgUyFTb0VkQEx+RWw3SXJHMiRsPAp6UFdIUip7cDFmOCViQTlV
Ny0kQTJ0I31lY2AmTHdMRUZfOHFmcCRnb0FsSm9jbFI2K3JXZk11SWs8T31vPV54PzMKenNHSE80
ZDZnZEQtYXBrKnB7Tn57LUNsaVYpY3IobE8reE9VPUpCR2hFSyUqZjs3Y0U3Y29YbXRrITZ3ZGQw
fiRRCnozNzttemptenx0SllpVigodSpJPG9IWWhTSTt0aDBLSF58JHNJdkg3S016ZVE4MUFaQmdz
Zj0ocnklaGFGR2I9dwp6QDBUMWFAPV90WlUkNWYqWm10JjduV2QrYT1JS2g7cC07Y0leWldIaHEt
cGQkX2pgdDBPbiY2PHAjZTBqYSYpSmEKejBwNjBMcWlifVpnJGBffjU0PT5PXiV1cVMpcHhjTXl2
Mys4VkhQI3VgbVg3KHJaKm5kenItTkZScyVxNj41TU1VCno0SEAle1VyKzQtVXkraCVWciRaOGAw
PStmZTB3ZXBGSD5HfFkoJUwpSyspJEdQSFdDR2ZfMEcjMGxJLXdfI3NldAp6TUtqKD9qdjZDX3R7
clpaUCpDfEB7d3I0aExiPTczPX19VE5wZ1g9aSkkPEg9KmJKQjU5dGt9MiQ0TGxwT2t9V34KekZ9
KWlaLWQ3QCpfUGZTSV9jNTcxSEZ1cmZgSyQzQnJ4IVdmRmxNXmU9MGlzcTdxdlhwcDA2Tnx3PTlN
RD9GV0dgCnohKjxkMGFkSSZfcD5YTUVIWnExeiR8LXRhY2lFYlAydENNaWpufU0tTHFjaX1HWEpr
fTYwU2c9M3ZFaWp4QHhLTAp6ek1QZVE+S2dhbzNRR00tYy1PTDUqWlVJMjcyeD57cTF5fXV4flo0
eEJWcyZAe3lWPj5gNU1MOC01TCteVVVyZlgKejwhIW9OaERzYStreCNWcG12YUdlJEYrfTdTa098
MSR8USo9ME54QHdGITNGVytKYTxgU1Y2d3c5PVl2KWJLI05fCnp5Rio9VE4xUitXRiNTUTkmfEFl
JVFGcTA3Uy1JT1VKUT42Q0dZU0AzMWUqZncpNFNoZih9WX0kNDNMV3B3T15pYwp6eSp9V1dURnwq
TTtUMEMwYFkoaTE1bG1menxJPkpebWMtdHhQVEluRkQmMSgmRiRmUEs0NkZROWJVSTQ+XnsrfGUK
ej1YcmVII0UoTFQ9fXVZSGVqan5WdH1TfFIhST5Qcm97MVBjc1FzbmxQR1MmbDA/OSY/eDgyJTFn
KU12UWN8Mj9XCnpqVGREOEZue1o5LS0tYkBaU1R6ZEZIdGZ5dWshVFVQVlc3N3JeVHAqZnNuKFNE
KClaO2s5NjRHbVNnTys8YXlRVwp6KTMyP0wjbUchWSlxUjdRU0d+RVVSXktzUyEpJVp1eS0xdGlx
TktOK01vb1U1YzxeJWYyeEspPXs/dnRWZjhna1EKekZ0dkpqXyMlan4yM3FVfTF6N191MVZBeHk1
OXhTZCphYGE5Jm1SPG9ZO283Qnl8RHo8eTtvSSpYclgmdTc/TDJ7CnpGdjhudiNYP3leQD9LY2Fu
T2xjfGlpQDFIM2MoTDlNYGU1djNPZHpWdFRgOSR7QlY2O2thYT4lY0VqWTs1RSZRMwp6VSE2OGJ4
YGYyWl48YzJGe2d7YkBKSCsxYjt1ZzJme2xuMGV1WX4le2lhOGZScShrMG9vNUs2WUM2dFQlRzNg
PloKenQpaFhkS2QlPGBeO240JW1kJVpVUWBCS3IrRCl5dDBqakRPY1BJSyhgb2p5SCVhKWIpPTV+
IWdpJD1EI08lPGdnCnohKW5vU19BNTsjeCpAMWplPXFyKkBXPC0qZXUqIzZvVit6NVVVX2l9Kl4o
a1RMTXJ2OzNqRSY4Yj8hZkJ6Y0RMMwp6M28mI1ViP1M4THVZSUF4PWVRZipYbCZ5bV4kTn4kMXoh
QiRCTStpLUFkdWw0M2Y9S3N1S2U+ajE4bDd2RWkyOGoKR3IyaGMoeHBIZCYKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9zdGF0dXNiYXJCdXR0
b25HbHlwaHMyeC5wbmcgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdl
cy9zdGF0dXNiYXJCdXR0b25HbHlwaHMyeC5wbmcKaW5kZXggNGU4YTVkZmQxZTc5YzQ3NzI3Zjgw
MjA1NzU3ODcyYzExNGE3NmVmMC4uODNiM2ZhYjA5ZTlkNTNmZjg1NDRlM2FiMWExYmYwNWQ5Zjc4
YjIxMiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDgyNTYKemNtYjdwY1RgaE4qWThP
fT99Q1ZRdXooOyk/Xk9eSHNWWk8pa1M0dWAtamZLeiF5fHxTTnxSPSVfZylmM0s8U0ZvCno1PWJC
bER2JCZiNStFY3Vlc2BeSnReM0QpKkx2NCFiN3N6LXtYMlcre0xiRWN2SztJemRBWT42MDA3eyV4
Xm4zewp6MER1dzlHTWE7cGNgbzRrPzhtJS1xT016LTBTJUs5S2JiZGQtcXgwdjBMSV5+dmoyNUh2
eFlPYGljMXMjYTB+ckMKekt0UmRVbGd2dT9YZShPX2J9VDFePCR7cDBrKmZzJk5UYVBUVTM4M0or
KihUTGxKckhjWjxCMDRvSzFxfVQ+KzxDCnpUcitqS2JtXn0zIWBSP31saFQoV0x+bilrNmtqZktQ
NmAzUmooQHVSe3VwYkJAVSprKnFvMm50MXVRVDVVWW9yUAp6eF9JMmQ2ZTtpby1+eWQ3QzJwQjRR
XnhDRUoxNHZTQythKFk5VlYwfmE7IVVrdD8jc1JEI0ltZ3F+TzMtZDF3Q3IKemQpdDZib1hDflcx
O3dtTnBmejl2djVxfjxlRWUkKmkhTjZlJj9Sem0hblBBcSFRSyZmbGk5X35QKW9kPDg4MHFDCnpk
YDFKa2plZ2lgbXNpanUwK3diOzE9b1JSaFhiOUd4Nil1eilqQG5nOHIxS3Y4OXk2dHRaR0EyWFdw
dFlPMXJYeQp6QFMoKUpxcGwhWVReY3VmWUV9S1psTU4obkxXMDBBN3twQDJCNXw9eG5JYE9NT0xU
KkJFNSVTMHUzMU5wcjFafHoKeiF4amA1UFV4UUtEdz9KZGUjUV5yeE0tPmFvd2lHUzUza2BaKGNG
ZU43NShNTlhGWHJzPVNFKn5pKyRDNU8/ZGtQCnp7eU0lTW9oYFQxQ2xHJXc/dDtZa2hUdEhmJjJn
eCtINF5pcVZKJTdYZzZsbkxsUUJnMkc1ckt2PWR+RXZ2VHFDKgp6O3lMO1RJdXEkTlJYWFpjKUVF
WTxHX21kNEokITl0X2ZJWE1ye0krPkc5P0xgaXQyaXh1T31QRm07N24pJkdjJH4KekB9fD5XMG8/
X1dxfjR1JmdVM3MyPjNwe1JQaj5kWThYUDQ3ISkxJV5JVXYwODF+QmU/TUJIanU0czFtUm1yOHRq
Cno0Tmg3TUdGPTBPdmtsbjdMUlo+aFdsa0pKblAzbjBGaEVMSGF9Tz5DPCNsNiFZVmsoNCNOIWI7
NHBLIUplQ3dfUgp6enY4eCtRRjBHJDl5UCt5PjNnQmMzcUtxUXRUQz95TVR8Y3xPUXRBb05XI2po
Nkk4YW85PD12eEA2bF9AeTJnKzwKekk2QlF6RzAqVEdrUTBleil9SSRfanB2P1lwc19tdFZ6UXI+
az9IWVBoVUZEUns1THE1M2pWMmA2T2ZMJm9LU3VyCnoqKVQoJWdBVWxxbEJ3OGN2WiN1SkB9UCVM
JD47K0o4YEBKZSFlNHI5cEA/ezw5YGhgNytJe0JyR298UCYhZ2g7Rwp6JFhiMFIrOH15R19xZj9y
PVFkcTNyaz9XXztOfjIwPmN5PHU5b1peTDl+QmgxMHp8KXdsfi02TyVyWS07NjlAQUwKendybWIp
PkI5WWxYe3lWKHZDJFZSO2s2M083YSpRZzktXjJqSFB8TlpGK002eGhvJGtTUHhzdXpfKTt8R3kt
Skg2CnpIfm1UJDFwbmk+dCtldktmNkNBcTQ5PCNVOUN4fHZSRnd+MWQ3Ry1kJFg8JmlBaiVORGdm
PyFrNTRtNCRwTEZ4Ygp6LXwke1BsNjZsPGhkcnRPUzJXI0VVfCZ1eEh1Nzg/Yj5qQCt5Zy1eOHF+
SihHXlplXlBtRHUlSGk0R0RBRkhCS3YKemJkYHgoQk5VJktCQ1B4Sj5qP2QtN2woSFd2OVpRPlUw
YTg0Z3xjS2BSJHR1OVp6RzJpXyVVVlUtV3xFPmlCanFICnp6fVZaIytIQXYkOEVFfVgpSVFweHlU
eWRGNH54QmRLPXVjb0NRSTlCaHBUS1Q9R1h0JmRTRzk+e01Qa2x0bSk/RAp6YHg0WkJwOSN4V2Uq
TVJHR1M2PXFycXJiJGUpSClMSEhedHEqXjQjOT97WElPZElqVE9TLXRaeFhrUmNfSHVIUyQKenw3
Uzw+MWVtYDhNI1hTLS1PQ0MhXiN+X2dwUTZQRzA9M0U5XjhtKlA1N35mR151LVFLUTxkPS1WN3NK
elArNCZiCnozJTIkPlMjKnNEbk5ZYWE1azk0RGhRMUBLaWokJFk8Vm8+MmBtSXQhN2s8aj5aITgj
OHM2ciFKY2I5bEtaI0AhIwp6dTlHXzxQM3FmSTltSkk+QU9IeFZ0Xmc8IXl4PzxJQDYjOyV4VDU4
Nlg/OEd+QUR7QVU8ZXZtbylPcGklO29AemcKelY3fkcqUH5VWUFyKn1ScGxJaWw9KFo4PVdkZl8k
QTRCbEUyUCYrMjY0fTUtP3pZREszPCl7bSRtSllvfk1tQzxSCnpVdEdHYWJWe0BNaVZeSzJGeTlv
MyEwbiNEcD99aXVWPDtgU1dTcjgkQ0FHUGNiUCNXflhRaj11ZyFBR0VJMDVlVAp6UyQqQy1gVkJS
NnlFSGMkR2MrWVU5dSpsQFViWUEmLVJjcWRYfCQxVGRhJU8oUFJPeyRtbDRRd0ZRIVMwZD1xVmEK
eisoZFlZSVRraSpLJjwrZ28zQ2RVMy1+Z3xMYHxOS3dUVmU/I18lR3lTa1FMbl95PWM9SXFmI19K
MEloKT1ZR2wzCnp1N3M3Wlh3TXg8a1NXMygkUVVqLVZCKG85UjVUSWZ1dlNHS2xvUzg7V1BMIUky
aExeKyE2JE1jKHMrQ3E/a344Zgp6T0okMn4taXhVKiVJcDB7cj8tRUhnZmAmUl41Pm81b0g4QkhN
MkZzQDx5MzNgU2tjb0Q8UylIJEtsdGUxZzZCNzwKenJmNyRQY3d8WD5JeFY0OUFSZX5YdjtGJW49
flhGYj07QGQwTiU0cXsraHh+KkBzZHdOPlptKWs5cEVjZ29ANDQtCnpjfkl4fjJsZFlWQ28jT3Aj
ITJPeXVZNllHQCRmZCRUT0N0SkBLMSNQZnYxT3pQej0qMVcqWXgkMjxiV1YlVmheQAp6Xjs9YjVJ
NV82dXFAbHNNWkl5engzODBqO1lnR31mWWdWVDBXYlVmPUVtaEx3VVB7OUIyOyNNSXBGNGJZRlUm
eWMKenpnZ181Sj8pSU50VT5oQ25QSyglRiFte2NfX0Q5O3dpcTl6e0FJNzVPeiE2dGBHK0glcD5N
OCNzX1A4ekctcjdrCnpYN1ZubzAoVWlAI2stN1cjM3publ5+eTJxUHo+bTI8Pjc8dUZ1b2ZncWR6
WVlCKWZnPilxcDFoPzVae3I5MHg5Kgp6PnIhVTt4R1ZsTEtqd3lIPH5DYXNBSlh8Q1FTM2dRNlc5
NlJeJT0tJllnPHFFMzM8YiVTTllfZHZqVSFnQ1NkbUYKenF0cUFFWTFofSRrP1diclp0blQ2b2JU
RmxqdWlqR3I3QHVCejNIXi1fTyVFZFAtYHlfYT0mXnJfYiVvXik/Z3ghCnp4NkJWfnIwc2JAeD9K
Z3EwNXRTSVhGbjJDenBudjIoUDI0Q0hjQlFQODZ0ZlN1JUg1aWtDdCFVLU5+IzJPK3okcAp6WnQj
MDhQV29iWEZja3Y1ODFOMUVhZWRqMkxxYXgzez1ISnNIIXdOV15ZO0RrPitLeHk0TWhIcjJIVmkk
TDY2IWcKeilUa18zSW8oZVgya15hI3BBSHN3PiE+PXkzezxuRDYpX3l0QXBrezVKO3UxYXBiVk0p
KH5KI1gpejlDRmxyIWNFCno2WldGajRpKWQ4STk0diZ0RWZaTEQ0QDYkV3VWcTNtRjlgUGlffD52
dXckdXtIazxRfFVeRFVsWER4TWRaS05iQwp6b35TNTlwYGlabnkwRGdVcWJ3R0QqcjNPZjg5dGFo
NzROd0pETGtMR1lJc2BKbUNfe3ohR0JwUyVFfjJlanptTVkKem1NJHZZPy1YYFNrSmlYfU5ROGFf
Qm8+fXxRYSZBUXlJNEx1S0VjKXlgbiZpeGZBVC1tSyhlS29MQnxuQ25oYjh7CnpQSH1KYE5qcXt1
MntiVEV4YVgte0g1KHIwP1RhZlVSKipqX3VAR0lXcVExND1valMtQ1ZAQyhKPkZfPTRNMnR6Rgp6
KF9zelVebD1HNFEhbDUmT00yUDRoZDc7bk8pZjdeUXojaGhZQ0FSVFRoTChabnZTLTY2KWFANS14
Pj1VU1hqe2AKenZxYjAlamE7PCh4cjJIe1dLV3BQTTJpUERpZTZNU2J8bntBKyRJMkIxOUx1ck1C
VGs/PkN0LTMmJSYkPDNpfnc4CnpadShBVjNodnJWWlp0N3stT2JMS1R1YlA/aWNgV3t5VSF3Vy11
d0ZCNDFnPTA7dH0xa2VXI3BiPkhXZFF4QCRLewp6KG58QFE3Ty1UZStBYzdeckhzQUkoTl9nRjBz
cjNuU1NFNUJVQ1Y+YCRZdl8rS30hODxQVkxvZUkyfCpfdkdvcDkKeiZGZHp6PyhZMEcmMENLZ2gq
IXRRWjNFcjkxMEMzP1M5IzhEcUlCXllyeCRhfXdpRClfRHhHMUpUMkU/bHloYmNvCno0UkFKTFNe
aks2P1J8TV9NSjNvM0tWS0IqRUopLXE1QE12bGxFWXAzTVYtRnhyTjMyREljcz5uM2tKcVlkbCtQ
Nwp6Kl5mVlRFQ1lWenROIXY9VGozUGxPNkBAVENDZ3Zxe3FWNVlHX09xeFQjMGw0UHA7ajZAY1JD
QD5BP1NreU5wJHkKekNiPmBSJWMtT3NLZXxCPlA7a2NUPlJnKSpSZVk1N1o4OSkhZT4hY3NzVT93
QjcyeyloLTlqbEtAe3UmRmJgMGdwCnpXQTQtJExmZ2ZzZXI7LTZZb1NVOHAlMkJPbXNNQyZTPV9p
byk/c0l5Pns/fFVlSzgmSjtZc3xRKXEpdlpjUmo5QQp6I1YyaGglc2pPQF9LcUhlaWJDKXFjdGNP
KUNMdUM2VVJtbCFvfWUxZlEkVDY3ZTwwPypafHNMN2g5NWMkPUJ8KGsKemlnMCooZHNEVmI+PmV0
NCFsTT9pZ1N7KjtLRmlgZnUmX01HNn53eG5BQ1dVJGBBVTZwZTgpcENvUTFmdHFLaV4jCnpJUV4x
TFM/Yno0a0ckIT5kXm1GQUoxeUY4MEwzRGUtQj9pcDwjNk0yeVk0Vj45dlFqX098OEtDaGlnPHVo
akttQAp6SFdfKTFST3g2UWNZIVRHTWkoT00xLWFvZmduZlBQQkl8Jj9XLUZRK2w/IzZje35FMzZz
bXo/OD49QWxvRTYqdmEKelFPfiZ4b2lZdm4mVGJeckFuQDJLaVIqJklgazl1azc9REJfS3hmKGY5
QDl1ZHVHKF5qR2lyPF9Ic2EqfXhSaDAzCnpfV1RMbVlBakVlcEpqYEgjbGFQX256WUcqIW1BdXVm
YS1mK29pM1lOdCk7PStXdnMhI0lzUHpRWDRlJj55Mzx4WQp6IzJHMWFXRCgpTXV6bXEoKiYoZ3Ng
TDZwJkFuT1NJSWVKSGs4e1VkY0tvNnRNQFY/dVlEP1FvYEYmbkc8MUN+NUAKenhlMUFETCVZdH1F
SlFZJVVaK01YPz5MaWtqZSU1fFJgO3o4d0JqcytAMDBeZz1KeFVCdkg7TjxILWVFMWI8N1R6Cnpn
WmY/Q2tOUzVTYCpQdD5Bc3ZtSDJxRTNWTC1GVkVFOGBtI2Z6MzF6fEZ6eiUkaGhrdmI5LXB0UHpo
WSZ3ZmZrfgp6XnxldW9PY2goUWRJanQzdzxreD07T2BUJkdfN35JUStSalE/fTdlX2cxVFoqIU1Q
YUA8VSRGMGJlXk0ycVoyWiMKeitVJVlVWUQpSV9DK1MzcHRBWHFeRm5ebW1NcHc1e1cwXmUqbHM4
RkQ/JmxVSk9TX2RVJS0mRk1MPmNXSTFld2AtCnpFaTIqNiRDSmF+cCFORXxAcUtBaWw8aDdYO1g5
PSVHQHJ+ZEo5Zkg0RTNOO20lNyYme1FoI3dlcmFneURkODhlRAp6UkFQSE5Kci1AUEFzWjEhR3Rq
OEgmYUtQaD1ITmd6N2kydU00bjY5cE11X34/cDMzdytiQElickJXaGZhcXUjSXkKeikxNX5hNSRZ
Wno2KDIlSyFSbis1bWh6OCVveHlLXk9PTikhdWR6UEorIytiSHh9SHdGTVNFK2dXMHkyTUhAbnRR
Cno+aHkrbFQmZm9ub25aVmp2Y0pNRVVfZFElK0FteXxqNE8mYT0qMC1jSX5yMCVoSWdtMztFalVx
aD5fI1I1Mzskdwp6TTFONUxWdWlyR2hfWlZxU0gjZC0tRjNgKWl0bG5gQWo+QEpvM0JSK1gzZSpv
NTxiLXo3ZVZZRkxpPVI1M3RfNmsKemtIek5oalB8eHp7Um99Y253JStPbClNaileSUxteCYkYjZA
bkwwaytMTU1sUXAtLUkzYzVDNlJuIXBMQTcmMHBFCnopSjEpZSthYF5Ce35IWUlSVVYoeGtYe1Iz
PCpaMHlFUkcqKWh+bSEwQUUmK25ITU4xPmwkTXd9OFBKU0FYTDkzRAp6YjNVZXxLc1hTTEprIyNE
NTF+N2t5RDUkMWVRfGUpe3FUPXthan5xRWdnTGM9d2VVSVpDa3l3YzU4SW91OC1mPyQKeiMobH5+
JnRtSE03Wnk9RDk5bzRxTndnTHwzQjNrODYyRXIkN0NLRGpUVGErZ0RUdCE2dCE9cWlOTn07OGpr
P1IhCnolWSkyNyl6dXpFWjE/SW50SFhQOU1kJSh3OSo0ZjJIXk8+JSR8d3kxZjxUPGlwOH4wemJ+
JFVzaHp0SXhQQ0pyawp6Y1prWSVELVlyJktmKmtIdVRGemdRZDFpZ2A/QG4wVVoyUlc7JEw/bjt4
P15Ve0RtTjMkdzY/e3kxcngyJX5kMngKelR5QFd7QmwpbklucGR0Z3t1eC16eXBObF4+TmNSNHVJ
K2pWV0QxdEZ3SkdqfEJPI29mdShjNjVxaHA4YCV4UFhyCno2Uit3IytPU1R2UTVwLTRHeWJxdGx0
Nk1Yb0A/RGduY1JBYHY7Vi1SY3lFJmxDYlAjdEBCLXQwPGNPSiR0WnkxdAp6ZXteMjk0UiNvKD9H
d3RON3IkK1g3I0J9fWRHX2Y8ZyFZWWlAdmZPMSN3RVhuZTBrMWpnSlotYmA7Sk5WZCF+PnwKeio9
ZSVRQ3M7fXNTQFAhVUAwalprRmglamYxPVBqUjdmV29oWXleWUVaPHVZUGw3I1JJPlNDfnszNklf
TFN0Yio4CnpwWDhmNVlzbGRsVztULUNBc0hZYUk7VEMoJTVZM1UoejkwKjt7MSN9NmF4Vlh6cylf
OF9idlkyRkJ7UlVPJV5uUgp6OTFNRVU9MkxgS1NxUm5zV2JlJXNLcXpVJT9QJnRzbT58dyR1VSFA
WilMcjdKXk9rPztsSFU5QEJTPyVjVzVgdUUKeiRCbnh2JSF5I3tmS0ROV2I/TlooZ0BNenxQcVNi
PEY3ZD1yKUZ9aHYkX2l8R011QkxRcHRHX2FzU3d7YzJJJVV2CnpWc0IpWHR5Xjx3Yj9yQVJDSDxU
KG1leEh3ZkllelZ1b31lJUZ5PkFrZHszfG1uVnBeYjMzQGw8UjZhOFFRMSErdgp6VSgtXn4/YyNs
UCVuN093QGhDfCYkIXw/eXNsN3NCa1AybChGUG5MTzF2QklQcDA0X2xJWllhPD8qK2ZlZkk1WTEK
ej54SU0paFc2V2ptJikrO0l9RlFSTX12bj0jRUFafFdwaCFKekU5RWJiUE1aOFgmY1pQWHphb3dI
WV47KCZ+RCE4CnozcG0kI3slOEh4QD9CXmBmZGA1OEVEeGVvVX4hJC1gIzU2dzReTElLI2RBcnxw
QWZ0VGBhRlRBZmZPJkFBMj0oewp6bEtBdFkmUX5VN0tzVHYoTCphRitwb3A4cHh0dSFTelY/aWpN
JVhndF5TTU5Ld0BncUlaRz1IezxOZCVQV1NKMTMKekxOamRicT08IzA7RHJmV3JMYzw0TjQxKXxP
bE9taFFeekZUVmpuQWU7ekYhdDhwXmB7WlRHVmdwaTd8JjAhezc1CnpzUjZIITBsMTF7I156bEx0
fXVifCpvZkY/ZS1nOyZnKiRPMFF+KVhPUmo2SCgheFc1OHBCX3YmJUZIWEFhNzdkUAp6P2BGaiVo
K1ExbXpWd2ZlRDJ+USVXPzIjdjthMXxacDJmT1R4RkR7OUluP3l9cnx7JEVJTXZKWmNFIUJqZk0l
KikKej1RbUBEJUFjbW0jJjVHUnllbUomcnEwNnZpOWdFdEo3OWM1YzYqQkF1VE9fdDwyQChUUWYw
OyF2RVlXOFJ6d21MCnpMKSRZdmAkUnVGSHxQVyVOU3o7cS1RSDg3Kl5OZT9wRDtqVFombUhVdCN9
fEowOFQjbyRHbWI+SnpQbk1FQUJ4Zgp6TzZ4e1BaeyFCMXZ+NChqR2d7X3tkbjY3JUMhZ0c0JnB0
M29vaXRpWGx4WiFXRHJ+RlUqRzhCfjteWEwjazlVSFUKeit+cHIpTH45UzBpbkVMbyEra2JtS1Ni
azR2TkJCfG89R2REJDZ2O0pGO3N+U2EoYj50cVZEN3YtTGJOfWNgdH5TCnpKUDkzKFFKazw7PnIk
VEdvNDd4TlkkSmtfcjZYalNqJDFoTD1DS1VxbTlPZz56SzIpV2J9MVVvV3VBaV9aU2VFYAp6Tzgt
aStRdU47RyFsRzgmbDlIN2Y9RyVJb2xhMj1zWjEoZChHfTFJUGtSS152PDNJIyV6djVZIU5KTW84
RzlqOzcKems7SDFWYFJWV3NLfEgybmV2blZFYDRXMj9YdTFTLU48UXUreUB2WHhfaiFgO1dVZ0lQ
cFkkZG5BPVQoPjApNk5ICnpOJTI0WFI+UWNwMzFlPlJWZlQwS2lMSEVQQXE1aUdGb2xENz1jKnBk
dGdwPEVYRTRDeUV1UVVlc3hXNlpCcCNaSwp6YT4tcGIqVnU+YFN+NX1YLWheRDdRdjx+NGF3VD4h
eyUkYGx4RHlXfHtLdHdle0QheWhRZmApe2JZaHVae1JkYj8Kej5pdnpsNHRHMyU2aU5CeFJfPXNn
RXBQOXVvR0dkWj54Z1pRWX0yR1ljJWttJj8hZXFudipBdzBgUzFDckVtTj4kCnpffWZFJnpoeFgo
ZUFnKnYwc3Z9PXdYUC1LWjIjVDQqcjFuUWIpalhATVR6S2JSSn5ZfUloOWJHS0gzYy1nZGdxKAp6
aS1Hb1JYKHlxTjZzQ0BCQjxBPTM4OSRzOC1ralR7N25NTzVHRk5qZVRNLTdGe2R5SXJ7dl5eQiRz
KGA7YjQ1WTAKeiZpRz81Zi13dTQqT34/flZKUDheMCFTQjZZfXdmbGxSaUUzMmljZF8rK0VsQyV7
RS1fO19+Rz08elBIaG14cEZ+CnpAMTRnSSNQanReVjtEJWw0M29ueSZrMStwTWEmPmY7PGlOQDM1
cUhhbDhnVXI0O0tBTk5fLWV5ayNGI1J6TnFMcQp6OFlldjdzPjleWkpLQDI7Tm1wPkA/TWBQfF82
fDttc1JlMiMxWXowQUVkb2p4LT5AM35PQypKQCFEJmEzc3M7MXMKemQqUHxIcSNMbl5vc1hZTV8y
K155ajxvbW4hMm1YJjc8TT9UNDFvS3hLTj0pRXNzWm4pViQtcCZKPGQ3fjJyYmdpCno7Pk9oQS1w
P3dJM2BCOCVzc2lUIT9RVjlpUX1mdDYqc2RTblYzaHU8SFJCazZrZTI5fWRDXnkmSyQwPGJffSRf
Ywp6Mz0kNm82fX1IUFFgckpwYStGPHRHUEo5O05WaVNjQH5EO0VDZnFnS15obkZebkFBY0BTTUYl
VFZ8V2w3UUFXTnEKejZHRXd6KV5DeXJrTW4wPmV0LV5pKWNRMmZaJitsKkdsRWp9RD5NeiMjXyFO
e0FIbztCbXA5Mz5va010UG1ZZVA5Cnp6ISZwaHZhMFpiTXNIZGRkZ0FIbWQleHAyZyM7SnpjNyVx
Z3hTLSMkcz0/dEV2YH07JGhMV08yUV9rNTQ8fmRUJgp6JnpxJFNAQlRRdFZ7MTN4KCtRI2h5Rntg
VjVLPj5kYT9JeyhVQUJkNmdqVXMmYylGS0YkPlpIOVNiM2JyYzVGaDsKejNPfk5jTWxhUnlXMXAp
ITRBQFArKHZhXmJPUD01aUllZF9BME4pUHtjTTheV2JYWWRJSn1LK0B1T2NkZ3YoczxnCnoqOTxU
QyZiQHs3PjJAZXkteituP2V8NWo8ajFabWEhMUNYQ3d9QGc2TDd8JChiNFBMRF4/U2l6VzVFMlBt
JTlXWgp6XkRLMUkzKlZjfk9RWEBvbFB1Zk1aNnM7ellfWlY+eiRAV2l1ZUFMbz4pRmwyO3VUaSh5
N3Fnb0Z6bXojM3xAVmYKeldlYWBEPU4pcDwkPSRpK2ZfIzxzPUo5bngtKzR+MClpRlZaNEZAQHYk
O291fHo0VlR4UWxTamt7JkJDVFc5JUh9CnpyO0x+JElCTnRLeGRnZzRMNVNxbVNQNzRIOFQ3Yzh5
WF5HaHRHa0VkM19xZ0FXcUhXPk8xcE1LNSYxKDZaQ1YpcQp6XjtzUmB0UGJmX0kkeVgjRT1jIXVZ
Q0A9dXw2bn1OdkVkc0ExckNeWWktfF8lOUQjVSRHdnUyR0V3VHxPUiR7bG4KelcrT1FrWVcmSk1C
UmZ5RlRTSUpJaHZ5MjFfZkhJY0trPEgtPWZ6czFIMDVFWVB2WCspb2tlfG9gKnV3QTF5RURTCnp4
P2dkSyo/Ujh3Vm5Ldj53UE5oND1uUkZIXkFZKjRBQzwmd2MpaUY7IVYxNlNONnZUKWd3USYtTnQ+
RGx5fkY7Jgp6eXskN254O2dLcUw4cChmXlFrPGlianV1a0R8aXRqcUlBYldBJiZ7OFUmY1pFLSV+
bT58R0F9JGJBTT1LZnhkRl8KeiYzUGBrMSpxdjklWSE+K29gSTRWMU54RSZMPXZzPzlDeGxGZjJP
fEA1RW8xJlAwSH5RKUheKihnbTR3Mj5sS2ZmCnp0YzV8UkNXPU98U0x3VnRWfDlIZyYyd09fQG0k
alBVPWFKVjZ0K2EpRCh9VXY1WmlzUXJ9a3p9UHdEXjByVD1+NQp6KkReQ0l6UnJIUktjZnAzTUJV
JS11OHdAdyZDVHJSbXY1UV5sQCtWdmR1WEJFUV9kKHlVRDB9TU5JJGNHUkh6eVoKem9WQ2dlQGBK
PTcqfW5PcHRJPEEwdTMmJm1MYlk8TXRMZTtsPjhsfH1YJE1jYEhOTHo/YFI2P1JBe3p7X2B9RD9O
Cnp7SSVXfDwkWmBoamRuKz9wKFhlXm5KT2ZLVVMzbiohdXA+KjlNQ1QjRzJ0THU8d3UtaXQxVGlR
WEBHek84Uncmawp6Kj9TM2pGS1hXV3FWJDByPyhNT2N8STBgUHR2RysjR19IJWckT0N0TSZ3I1Yo
c3kzJnppYmpaJDRlJHttaTg1Q0cKel5WOUI/PlZlTUJLUSkjLUkzOHJmMmI3UDY1TG5URnEtSiRe
LTExeS1RRF80fUJkTH58RWleYG0wbEdkWGhWR2V6Cnojd00wK3tFM3FLNlhPXnRPJWV3KSNMbHo2
bDg/Qn1eUSVWQDs7QTU2akcwdTQ/azw8Ym12K1pVeC09dUFoMC0+Nwp6eyR8c30wSD5GUGxxa0gz
SV9BJDVvOVhVNVNKKUI3Znw+WGFrclM4JU8+UlVPV3ZiRGdOZ3JXTFBBd1ckUHlYb1IKejxNSHhS
IypiOz50dntLJGojfW5NWT10KzZOZT9Ifjg8bj5QNlA8aUlLb1omZnAhR1graEp6PUc/fV5EZDUm
QzQtCnpNcVB+JkxLOyNDTj1sJCFzcmczfFhebko2Sm0oRFVHMSNUUkIkPzVnUXFfJjZVUzdFM2o3
bXk0REVESjBGNm9LRwp6U1VjbSlqNmRTaGN4MiYyS2huYk91Kl84SF9gcksoSCgkRz1vaU98e0N7
YD5ubWdqJjVeKkRUdipffm9GWDA0a0QKelReR2FLYytQM2hIcEBtaGh3V3p+Z2dNSlooc34rMzBj
YXZPcUVySnp5Rn5qd3QzO0VPUFZAR21tLWY8enAhWDEoCnpWNEFkTjV+TEN8JkNHZSpvQ0JtLXVy
cnM3OCg1YURWN2JkTChONWpfanFEdlpufC1RR1lYeXF+dk9LdVJhS0IjMAp6bXM1YW9hV1Uha2E3
Sm8xR2NtPVElMV5ycUAlIypHQkZeYlNKWDY1PFNvOURwQ1JVR1pqNCFrdS00bSRGcTBHWEoKeiMq
bH1SSklSb3VWdGolWkBhRytMMUs/PTc1ciEjY01RPDchSUJteE54TzBvT0ZFYkslcGJhRkpYKXJa
e3s2TnpGCnp0NlIlWCt3Mzc3Sn5RVyQ7VUlnRjB4IXZgKHs2a0h7eXk8R3lHJnEtVUpAUyllJHha
eDBxM3B3MFJMT092PlNidQp6JlUkejtBUEhCJlg4TCN+LVVKY3grRk1nKChHSD49KVF0N1VjaXJ7
Zm5IeCtJV1lCZShOX1lgJD1xRUVpWGlIPioKekZuPD5fd19PUXA1KDduV3puZHhsVGB+NXhaU0wp
SnVmKURSazR0WXJBJDk5KXAwIS1iM358N0U5MHE3VHJ0PkBuCnpKcH4pQzUqO1MpVDA5fDB6bHoo
c1JsZCoyPG4lJCZnRUsrQz9tVCVTVjJ0MiEmUWo1fDN0MXRxbTk0ciRxfDhzRwp6P0dzQiFOe1I9
JClhWW42TiUrN2xWN0pARXtOeXEtLTlxUGoobHxQQF44P1lMXkJEOVQoPzQwP0lId2dlYShGRUwK
ej9mI1RwX1JQVlghfEhXSFJOSj84X3srTG5GO2tPc1Q4NVZLZU1fOV5CX2R4ISpfI1JlaVlpY2pv
TUxXO2lqZFNxCnpZPH1pRjk+biRMV0FBKmpqbG96VkB1QjBSamdsMzZIWitMI3RUdTgyNE1UXmJy
OCNwNnR7aTxgJnFuNGNOZEJhJQp6Rk5qOXpTKCZScCVUWiFhP1Q1JEokbyR5bGZyPEtgbUUtbyNt
M0BWKDFDT0dHUlUtRGw3cENaQ0hCJWB5OWBAaDYKenIycCZ9OUJkUEpvNjVVQVFfQGtOM1loPGZg
RDBZa2Q9dlU2PEokNV8jWWc3K3MqM35hSFdIWjJVTnRMP0tqfnQzCnpSUGQ/UWl9aHQ5cHJqR2d1
NDcmJjV0Y3t+UEAkans9KFhtQl8hekBVJWVrNG9DJVkkX2BWa3VtPC1NcmFZbG8tewp6LUpTdn5C
cSppdSNZT3QoIWU3eVNnKXc8OERebXBYSmRsR3JQJjUyTCNXVTRAT2MoQVBsYyFzbUQ8STc1VVgy
Uz8KejFHdClaPUJwQS1eZStTY19oa0VqTVEtSWokaldDNTJqTipmSFNPZlA0RjBtTTVTPDZmWX1W
cHxYUDdke1RgYUBJCnp5cGw9JHluX3w4NHRaeSlHZ2hWcXt6NGZmYCpady07emlZOWAzcHNyQ0pP
I2Ijd1koQGFid1kyeCR4ayZfWlReKgp6alE5K2VtRHgyTHYpP29TMU5fZTR3XygyT2Vfc2g8ViM/
enxGYV8yQlRILSgzcHhUfG0qJiN4R2oxND1fIUNjLTQKTnRTc3k8SEpFd2N7WGhHRjN+JkdkCgps
aXRlcmFsIDYzNDAKemNtZUhMWElCJTwpfTE4dXJVPXF8TjJGPSFCfmhYZmt0JHN6JFYyWlUpY3tG
UTBWel5NS3pkaEBDTCVSVDZwXkFKCnp5KkhgU3E8MDlmX3RVLWlIQHRVJG1AX2tMKT4mKXpubUsh
QktRcStWV35BZXkwe30zaGJ4XzZ0Sz1GVjNAaWVmJQp6WkgzalB7SigrSV9sQVk8OVdPYFVmY3Jp
VTtGYFVjb3IzX3s8R3ohRnZCUTEpcGE8O14+SHhyaTtjYiV9ZTs1QWAKenw2fTApRWQlZjZifFV8
N3s+O317e3w8bWFWSEF7OSlISmtvXmJDd2w9Z3U9PFV9MyQ7Iz9IYVgjbSZSWiQxZmwjCnpCckdC
LUNOM2QpTiRScStqSTVtZW04KTxDTUl+aHdSVylARE8kNzRWYnVIQTVvN3lfKVRlYFJQXmJISitq
UElEMwp6bndlV3pUSFVxMlhNP2Y1Wn0qU0FnUUp0UGk+c1R2aG9faEsxRH1WIWUqT1cwTDY1TShB
KXo9dEE/KSMhcntOS2kKeiYhVkRaVnhQeXdDblVafGRZUFAoYFlKNndCUXE7SUNwUnlAcHM/dW1v
OHBxVXJEZiQ2bUc3JEZTQVZGZnQqZFduCnpCITJ3Vk1FZC10YERARiEqMCVQSj8+ez1iZXM9ZnRf
Vm9gODRoQGZ0aipVLURQRUclc25WcCtvU3AyPVR5dDJDWAp6WE1KT0hZa095Ulp+eCUlPT1rSzZ5
aDFhZzAwNjUyOGc8UGlhQzl2YjgrXnlLcnElcEhWenU2QXdhY0IrPnYhI2cKejErMWJZSkc5RkJI
VkpuMSlecWE5YT84YGRDMVFsRlN5fW48OXA4OzB5Y0lKcW0+bX1LJXNHZ3pyaEgqU1NEO2JLCnop
cCZzIyk/N1I+Ti11cHUzNn12XkxCbDRGR3hgY1hTfmxURUdZc31MazJnQypPVyR8ZHBmMG1UeDdm
WTJfPmEoQQp6SUNuQmA/QDRLOW91dWFJYXVKd2xqeT5qbmU5PiohZFFSJi1tc29uO0hQd3RSO2Al
SUNNZVZ9dWFvMXttM3FSRWQKenpHZGZAcE5IbWVIcUpWcFZOXm5TRTRXaWluR3tJTmlBKiMoS35q
fW9KK1J1aXBoRkplV2tZPmUpN3x0ZXhNc24lCnpFJF9Ic3RLe2dQeU5GY1p3NStoez1EdH5Adngz
RmJXdlVIQ2NLOz5+RntzNys/VWtmO1lQb056dzxuVFFsUWIlWAp6KylyKmstQzJKPC1DNEJvUm5M
cDxII2pmT1NLVUhmQTlzNzFII0VlPFdNV3NRUndMUipSNk48dnh5fTFaNTMoXjgKeiZNSmo5I09j
MShEM2FMMD07WU5kOEZSaj5zKjFNME0kSz5mVEdSaEE2Q2prT3c1QiNDYDJwfE07IWtGSXtlc2Jf
CnpwaTxeVytLZHNzQkFAJTRpaEJyTFU+WTM5OVV8UEh0JG4xcEVhMShHQUJ6MXxRQ2d9MVdkdzNL
P2U3SUBUTWwkYgp6dVp1U04kcSVlYiM9UTJUSlpeMGJSb1QlXk0rNXgzUEpYTnhDN3lrTE9MX21w
az5QMF5CQWBKOGh4YU4tTG07VU0KekZDZ2tKPVd6fVdEanRsc3A5M1FFKTxxVjI2M0FgKzxiPlcy
WXVtM2JvZjNORnRBJiMhVEYlOEBEfU09MnVCYXVICnpFKChXK0cyO0J1QjI5elQzSXlSMDVJcDJz
WDBXOVE5Qnl1ITQtZWspey11dV49KF5xJCM+VjZKPkxfKHBiKSVmaAp6WnxrdWdtYFFxcys4QV8k
UE1JXjshQU0tMlVvZzF5enp+WnxuNk5vOWxtQG14azxVaXNPandrIUBNdjNGdmNyYTUKenBFMlZe
OFlrVXk/fUBLOC1PRSFVR0U0NlkpZjxufmZgZEtXJWd1KWI/Y2tPYEl6OHImMHVFQm95SDllXjNN
aygwCnpiQ3NIbnZGRTstWk1RQn54NDVPeFV5b3ZXUElmSD5fXzJTQkxZI3Q8LW5WQl9QTHsqMFch
dmQ9NHM8PVFBO19TRgp6Ums0RExLO0JnM01LUT50XlRvIUs4MXNzc0hIN2ReJVBLcGtQdHYmO3M8
e2J4S2hZJTkpZEo7RWhhVSVoMis5PkkKelpAWm5ZWT43SilBMyZEOGx3KWR5eUZEeFpJenQpZ1A3
JEtYVjZaSlQ8ZG03SDc8WC1RVH1pSm9zSU9eRWZmR35ACnopZiVtflk5MVpCUUc/TClBSi04e0JX
Rit4NTVZdFFSNHR1QShUNk5GcXY2eXVBc1FrcEdGRkcjYkVrd2FiWXlgfgp6OVhAbXV3WGZ0QVFJ
UlphJGQ3Qmsyc0JxcFUjWjF1Ql9tRkk4RXlTYCR9NXMzbiV6TVBiSFp3Vi01fSZeZXdwSjgKejx6
NU1tQSZvaT1aPU9TZVY8PDtOSiMlSVBLU2M4SzdUISlXQ3NIaVcjQy16P3M3OGNZP2FIbVBjTUFw
eHtCOTMrCnpRcHphWWxtdk9kU0c2SzZOMFhDQSVDYntQV293QWJqQVZrNnRfZjk5JHt2I2liYVIt
PHpjcj94RVFsVyM8eUJReAp6ZylWU3g1Nk9VMUZuRVU+YSojQDU5aU5MN0BzMXk2SnZsJUYtKjc8
R0JDMGxyezJDTXBHS0dHeGUqTVNQPkBRZ1YKekEmPDdPVDBgODhhYiZ0VEYoYSUqREN2QlpmT3Ba
Zm1fNHpuZztoTnx2ZGl0MDcyLURXOz5gbzB3Uz9aJHZLN0l+CnpBZilBQSRmfVRNbnJKMTVuckpP
NGRDYmVLLUNHSCEtQHZkYzR0fGx1e1kjQyZKYjM5SEJTVmpMP0VVbjN0ellUIQp6YEd0dW1ocnRh
ckpuLU5eRlckIXFXITBCK3R9aVBDRjVCPXxqS35rQ2I8OEFwRXg+eUo0Rl9eST1vaUgmWTB0PHsK
ekd4MHVlTHlVZ05zZFhqSCVpNHpiJGtWU0ZrMExNUD4/cHFTbFJTR0VkblFDVzw8emRHQXNra3p4
KUZ9eSZRYEdMCnptODc8aFojTUdsdTNwbDJqST5GUj84SXklSGloSmw4QGRuSmd+M0ArKSNVTU89
VW56QjlCVkJiREdnNzVkeW9yYwp6YkhBZnk0bykoZkZgdi1UJHZOfXNgTyprd3RXLThWJXFaQ3lm
PWBxWG5zbFA7R1JrcVl5UHduY3AodkVFbHs1SnoKenJEMSs9UV9MaDVReHZebWlAKkJpREk7K0dY
M3JBelo0Znh1YnAhQV5ZVndwNDQzQ1VJUkQ3RHZFKXNQJW1KZX15CnpeMDRnckhvcioqYjcpLSNl
RGllIzI/TzIwNndAT3dVMFMmKlBaQHRqNXctRiRtVUJrc3FAaHFQZDl7JUA+U2BGeQp6VjdoKVZR
JDkwKkhOd09fRnNGSl48Kl8zZjFWIXxaNCsqN18pRnZibyN3N3d1PiVtNWhDZ0BadFVgQlFfNn45
V2kKejV9T2QyWEJ6bjt4WjZ+KWYtc3daS0FeMWxPKUMzYFUmMWElZTEmTmduX0J7SFUyT2x6QHVJ
JUNQLXxJP1FOUHsqCnpNcDYjfVM8QVAkQXYlX3I4JH5DI3NgaSo9NHdZUDtAJHAqQXFuaCM8dGhu
fjRxJEh2Mmh7ZmNtK348eW5BNjc3Mgp6JChLJilod1VTRUx5UCUwRmM8Q3UjKVFSbVo/WW9Sey1K
fmc+bXh+Kmdse1F7TTtoO1pqK04jT2NBfiVVUmlOaE0KelBlPG5Fbj83RVg2PW0lQ05jLSNAZXJf
YWghN0V4QGkpfSp1ck1WS15CKmtEXnBaQVcyU28hYytjViQ0ISpSU2ZzCnpMWmRlWWxKfk5gdn0j
V2soPThabS02OGg+QzBZTTFWRS1QS3FMU08pWXlLcn1CUj4rakVhZyoxZGZRIyFrRkVKUAp6Yzg8
MiY0WmEje2tzUXpLXl5zaEVVQHM7WFlLQXFBWUZfZUgmM3Y5RChyQyZiPUVPRz1lRG5JMWYpJiU4
P1UoKHEKejMqSzhGRVl7a2VvMHZaZUE2eDZ2MmBFJWVUci1RX2QjM0RnKXFDeXttN3p0QUIlamNj
ZiN8TFdEKFJ9OCU9R00xCnpiOWlRNyFyXjtTbUVQVjclYVAyN0swY35XUFc2MyNKWlF4PWljZUde
cHh3e1BtKTBTXmtCQDZ9Uz51PUpsPCkpTQp6ciFgJl4lcV9TTGBqRGJXO2tYaE5NazNDRzRWTWpn
ZzBaYlolbjxUJGQldkdMJk9afV9JV144QCNrSzNGajZLfWsKekY+b2NlMjkmMXREN0RWfHRHck5Q
SWwjViZ5WF41MGkxWWxKcUxPeXltZUBae1lzKl9fWVp8eCFWcChvKUNxNFBUCnpZSCRSaGd7bzA5
SVVaYEImbUFOfTRsO3ZkYnVxKCNjMEY7dyUrbSZ+S1koQ0BMO0E/TT4yNnQoMTZfMXlUZj1sXwp6
Y01wJVFPaDxjJWokVihCP1Jxdk9jcVFeOG8mfHJONWRKYU0xNiMzViNgdk5sODlTQ05GQDx3X3ht
N0ZYSilSezsKenNEKF9UfDYhdGx4cyV4cnRSQiUke3AwWWstclFCJCFqMmdxR01rUmoyd0A8bD1l
YkROJT1JKDs/N1hpe0YmTnZxCnpZaE5IWFIhIzlrX2wkfTM/IUR3cXV0I1leITl8Jn5yaCRCcFRt
JCsmNTdaVHpuYWhBOSVMTTU2N1pTUWZoU2M0dgp6YDY2MTxUPkx5KXIqPz9YbVk3eklDMHl6YHR4
I3h4XigjbnVFM24yVEQydUA8KEtNNj5FPWBGfk5XM1RoUH4tWiEKejU/Vk03YXRzUzlSVExBWkcp
I0xBLSojU2YtPCV+bXB3TnMrUyluez97Qzs2O1EhX3JtNlo4ODB5MHhzZyNVbG9hCnpeWnI/eCtR
Yzwhe3xLcC09Z0hKMiYpWWtGUjkzZ05yY3ExNlk8XklWbj5xNX0odXYyajBhfkB3azM5JDUoTnFq
dwp6RmhlQmpDNWM5O0xsY1RnU2JlanBWI3BoNUYhWXd8en1qYVQ0Vl5aX2N0YXtfbmVnb3tmOVJq
cm1nNFNCQGRRfTsKenhNfHNiJkZ4b2dfKDUlKDhKbm1gKHxTQldaK3BQdXtGU1Vsa0UwZ20tcEMw
WSNwWGN7Km45ZSZVXj9QPzF9YDdGCnpvQyl6dFcmTmZqYW1VMTJTZjheTk9xcng0YEV9NjA8XnB7
aD5uSnhvJlVkcSpSK1M9TERNKWFCbUQyRG81e14teQp6dG5kVmtWdW9WfWA8Q3t7V2lOR3picT9E
JlZJSH0xOHZOdFBLQGV+dWIwVHVLelJFTzwtfmFOOHhAfkFGZmN4RkwKejwrdU5ndVA3SnVUdXFf
KWcpKk0oKjB4MjlGQ3c2bmJhfTNwXkNQdXJgPDJmPWFnQnNsSlMlKi1CZithNkEwSWZACnpVMHQw
ITI2WnlRP0dEa0ooX1BGMU5FdjFpc0hkM0tCfGN9KDAkJGApV3lsMG17Zi1sYU0hMWojPGM3USVO
dEB8LQp6cTwkbjY9eENFSFJycGR4UypVMzIya15iJmNZJTY+OHtgbHVUPEBKdEBRKCFWPiNrPT5e
KilSMmxAYn1NOUhoI0wKempBVmlvPyYjKXh5TFAmOGBKUWplU0hZRlolOFRqdVdiXzQ/SEhOO2Qp
Xmk4aSY+Kyk9SEwjfD5WOTIqcUtWYk1yCnpVZyFTMXImUHl+cWBNTWojJHg+bSUlRnN9em5UYCE9
aGo8JCM9JGxjKyp8PFJEWTUxKDVqNmE8aEZYTl9AJTUjVQp6b1lOTW1AZT96SV50Zj15WndoXiNl
KWF0WCp9SCQjNzlxbk03VkhHa29VOGZVbGZNQnVieE5ncXEoaks/OzszQUQKeiF4PT9SaGdNT0dA
ISh9R1Y4Wi17bDBAODFFJWlGWGRmSVBhTThpX3FSJm4pUFFgOUM0Xn50Y2VGMDdSIUs1cENCCno+
YzJlanphO2N9K1QoJShoN00la0VJcUwxaG1uayMhR3l9K3tFRG58YngkR2c5N3JAYkI9RVIpeEw8
PmQxJkc1KQp6JSZ9bXYxYldpIUgtYnFOVihabUklZnNZNldUKkViYnlyLUo8bDx7IV5xSzZaNmZ0
YmxDbTJGfnVFOWZzeHYxK1cKejNOVk5Rc3I3N05AO05WbEhxd1J5a0J5YFhvUyEtNmc0I3dScShS
bXZlJm9jQmhFPzJEI0x5OG9rOy1zfF4pfnclCnoxPDsjeXhuUVdUMGRSYWhARXEmdlJkZCt4PWVG
bUkxRiRRZikzJUJ7QVJFPlBFaCYmLXZiVTJ3RmlAbl8xcWFGSwp6a3BtZ0FFZlpaJCFgP01VbWFj
NUVtd156SWtUPFI1bFdUJFAteyZGWUNHT1gySSkpR2RxckN4KEo3UGJYO2hFYWEKemdpTXJne1Mh
JUprNFR3dkQjYlJfaUs/NiUtVyZWYHI8TmMxdTkmV0QpY1QzUnd3amFqK1YlQUtUa00oVSlIeT0y
CnptLSpXQHlXcyUmNnJxdW9RQTtJaz9Ib2VoeWRCdG5nUCUkVG49fXE1T1NaVGclRUp9Pm9OWlol
UDlyUn1faz1oLQp6ZXBebUU8VUpzezNONz1jXzFgcypgJiRSfWA2S2R3XjJtTzl0VnReeDJYRDRg
Kzl7YH57YitDSmNQOFNrbn0wKkkKem18YnxXbCRnMEZ6Q2tGQHJGUyFRN3hwSUxNM35NWjkodjtQ
PSF1ZGRhbkFVMiN+KE0jWk57eTBjfFRvSV94TzVYCnpxKClRe3RwRnlOandVKXVSNSE8OHROTEha
ekNwUGBAYVYjUXdQfFRXPzdCb0FBI15EKXIyenNETHNWVTZqSyFxXgp6O3c5cVRsfE40JjJPRWA7
bFlEOERDRHRAKDVBY3liNVNfWl55I3NYKWhYSFpEb0d4KWU3MlcqWig8KjM+eFM7SFgKelNvKktw
KCZfXklVWiU0NmIwcjZUaUpCWUl0cVpuS2AxSnI9Xz58PXI7ZSp2P3FmQlB8I34jVDVgPEc/NCVC
Jj5xCnp1VTk7S2lyeX5aaFA+XkwtIXs+R0p4VVZuVyljdi1mTlVILUh9eXduLWBhJHxnKTxrJlpx
U2hiUWQ5cyFgZXlHaQp6K3hTXyhNaSYwe2N6YHgxNFdSKnloZUE0O2l7S0R2dlNyOUBjOGtYS3pG
T155VzZnVCloTjR+NHhANl9DOTVXK2oKelh0eSRWOHc8eF9ebWpISiV+eGZBT0pSbipedSlWQVVG
QDZUTXN2a2Ytb04zbzB9M1I7LUFLTk97Xj9xb0haZmslCnp5Qzg+d1p1KHd9PXhAN2tvN1RWUDEr
QjQmakxaPG5sVGx0IVQpcVhmMSFhczt0e29AIWlBMk5SSjJoKnxgYTQzcgp6IztAN3U5UDYhazBu
OVIzV2NIS2U0dnE0KWtLe2hlWTAyX1BpUGdpT2NXMEtNR0taNT5yK1Zsa14yMD0jIXpqVE0Kej5A
P1Q+NmVZNG5GWWJgd0NUVF8/THVHaWl7SUtzJSNNN0FXUEElS1N0SWFRelJEWHo4ez5nJlUje0c1
eWEqdDt5Cnoxb1hQPSYqYlB4YXtxa3NPJSRvRGRFekxFVWhGUEk9eCVHWDVhT1VgMylGZG9PJT9l
QHRrOChhKDJ0OVAxRztFMgp6ZXRoOzVPbyFubFpUczRCVCg+VXpgX1pEKmBWJCZQSm5SJmhTPE8l
aCVve2c/NEt9fmVVSX1PeUVjSVI3SFRYXlIKemskQiFAcXk2RGApdEk2ai1LRTFaYUIhQSZRPFpq
SF4zI2lETVZ2dU1fdiFxfChlbU9+RXEmX0FzUDlXWT9XRj88CnpNTVpMKjxETFdNeWA8V2lDa0lt
TUFnQWFhRzJMemE5OHk+Rnc0Ynckdjc7djk5P0NafWFSKDc4QHZ4K1R2cFgjegp6X1g7KnVoRUpq
M1pJPmhHKHM4K2ZCNShKSmprbXRkJmBEVFcqaHpVMVZMJEJZIVRTJmhETF8mbEA5OVY3JDtpbm4K
emlIO3NhSCE/XkA0cko+NFRuUzRSNmc+MDtgeGtWWnBiOyNFO3g/VzZTJllLJlo0SVozcVFQMCp4
YD9wKnVtNVMhCnpVPUFjaWJIXjkqVW1HflkyY3R4I18hIWNwfDJoQCFjMVFuZFJzOCM8X2FGWCtv
b0l+amplTkllO0AzWnxyPik9JAp6eytvWXolQEI5MnZZPipFcEolcFFZdDhDZiE1SWdWTnsjQEBT
ZFFZeUZLO0VeY3VEZ30rSExJN3Nsazk8KiN8K2AKejgrfWZOZj9Fa0ZOXmtHSCRCXjVCO0RnPyEy
Kk8lY2EhUjhhQnRyRGhyK3Y/S2BQZiMjKXc5aEBMKCpOcmAkO3BzCnpAYmpQfDc4KG56QGw4Qn56
fWIqaz9ZfT4zNyFgYiZgZnt4RFdNPlZ9IylKZ0RAalQ8Z0Z3RlYoX1p3Z08yRkVUVwp6NVo1WSpQ
R30wUylXdyRJZjE1dHsyX342eFkyYENSaiotTHE3VWYzWmIpYSg8VHNBYlleM3UoIUZQVH00bVlS
WCkKekI9ZH4yO31mWHU3PjRQbVA0OFI+JlE+JUIqJGtWdGZPUCRaUy1qYnY2RFdrTiozWFEreUkp
Z14ycWM2ZmpPfTlaCnpfSUhgIWBrbzh4WGhofXMlfjk+RGZTKDM1S3g8MGJRVWokVipreCUwVDVW
e3V3JW9HTSsyVXdMPkZ7JS0zX01NRAp6ZXxoLWBTQn42SjF5OWEha0wyKChmYXpGfUx0c05wam9F
MEAyYEo5cG5FYEs3UGclaFZ6TkVaPjk9VXA/MlgoKkIKejBOc2YzMFR6QmclPm4tT1lOSnQ7MkN5
OzZMcVglQyFXYGs3LW1+SmM7c3FJUWRBdURFTG84RG9aZ2FFcjtGVlMmCnpJWkx5VGF5SSF3KnJ3
fmlue31mWUVAVXN2Y0l7KlBDY0hVdmFlei16QE5vZGRJZkdqe1JyUSNCa0R6IzJsKio3Qgp6dWch
OyF0PkNRYGg3OXwwZzNgNSU0VzUkTkNmWj5POWZsaytWRE9gKHxBVCtiUmxLLVhSVD1vOTQqSCl6
bWthZDYKeiVAbmZRZmUrdyFoP3gweStwQm9jeVFjVEVrI1hzKTQoNjwqYz84XnBLTnhQZWpwIT4x
YGhjMithRG5MPFROJSZDCnpXUHtydm9nQTg2UXpaX15kLVI/PzBOcGdeREJ5KygrRkJZP2Epbyta
ekI2KUFmK0Y5WWtrMEBJRVRXJiZnSzFqYwp6dzlhQ3JgdWoyR1AjfVhYbWNwQkFsIXVoe0hhJEU0
Nm11PnJLfilpZGF+UHNWZ1RMQ24yUUZtI3dUQEYob0UkQyQKejNzSj5HVnk1RlQxendHNz1FTSR9
QjdlaFNQRnVpOVFyPk9fUldsdkB1KGx7RTlEeyZWYEg0S2Z2fktJfjxpQnIpCmMpVU8+YyluWEdy
b15TTmR8RlczVEh9cH5FKktOYzg1MDFjTURGNlRmCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IGQ1YjEzMDk3YmVkYjVmNDUyYWE5
YzVhNDJlNGU3YWEwNWE5NjgxMDUuLjk2YWZiYjE0MzI4ZmY4OTVmOThlM2I4M2U0MmQ5ODgzYTMw
YjhmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5jc3MKQEAgLTYxMSw3ICs2MTEsNyBAQCBib2R5LmRyYXdlci12aXNpYmxlICNmbG9hdGlu
Zy1zdGF0dXMtYmFyLWNvbnRhaW5lciB7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAw
LCAwLCAwLjc1KTsKICAgICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChJbWFnZXMvc3RhdHVzYmFy
QnV0dG9uR2x5cGhzLnBuZyk7CiAgICAgLXdlYmtpdC1tYXNrLXBvc2l0aW9uOiAtMjg4cHggLTQ4
cHg7Ci0gICAgLXdlYmtpdC1tYXNrLXNpemU6IDMyMHB4IDcycHg7CisgICAgLXdlYmtpdC1tYXNr
LXNpemU6IDMyMHB4IDk2cHg7CiAgICAgei1pbmRleDogMTsKIH0KIApAQCAtNjk1LDcgKzY5NSw3
IEBAIHNlbGVjdC5zdGF0dXMtYmFyLWl0ZW0sIHNlbGVjdC5zdGF0dXMtYmFyLWl0ZW06aG92ZXIg
ewogCiAuc3RhdHVzLWJhci1pdGVtID4gLmdseXBoIHsKICAgICAtd2Via2l0LW1hc2staW1hZ2U6
IHVybChJbWFnZXMvc3RhdHVzYmFyQnV0dG9uR2x5cGhzLnBuZyk7Ci0gICAgLXdlYmtpdC1tYXNr
LXNpemU6IDMyMHB4IDcycHg7CisgICAgLXdlYmtpdC1tYXNrLXNpemU6IDMyMHB4IDk2cHg7CiB9
CiAKIEBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpIHsKQEAgLTIy
ODUsNiArMjI4NSwxMCBAQCBib2R5LmluYWN0aXZlIGxpLnNlbGVjdGVkIC5idWJibGUuc2VhcmNo
LW1hdGNoZXMgewogICAgIC13ZWJraXQtbWFzay1wb3NpdGlvbjogMCAwOwogfQogCisubmF2aWdh
dGUtdXAtc3RhdHVzLWJhci1pdGVtIC5nbHlwaCB7CisgICAgLXdlYmtpdC1tYXNrLXBvc2l0aW9u
OiAwIC03MnB4OworfQorCiBvbC5icmVha3BvaW50LWxpc3QgewogICAgIC13ZWJraXQtcGFkZGlu
Zy1zdGFydDogMDsKICAgICBsaXN0LXN0eWxlOiBub25lOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk3NmRlMGU5ZjUzYmJk
YTExMjk0ODA1NDk1YzMyYzMwMjU5OWY3OWEuLjUxZDgzMjFlNDU3N2YxMmY1ZmQyZjZhYzdlYjYy
ZWJhYjIzNDYzYjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTgzNzksNiArODM3OSwzNCBAQAogCiAgICAgICAgICogcGxh
dGZvcm0vcXQvU2tpcHBlZDoKIAorMjAxMi0wOS0xMCAgVGFpanUgVHN1aWtpICA8dHppa0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUmVtb3ZlIGRpcmVjdG9yeSB0cmVl
IGZyb20gRmlsZVN5c3RlbVZpZXcgYW5kIGFkZCBpdGVtLWJhc2VkIG5hdmlnYXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0OTA4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXBs
YWNlIGRpcmVjdG9yeSB0cmVlIG5hdmlnYXRpb24gdG8gbGlzdCB2aWV3IG5hdmlnYXRpb24uIFRo
aXMgYWxsb3cgdXNlciB0bworICAgICAgICBqdW1wIGludG8gYSBkaXJlY3RvcnkgYnkgZG91Ymxl
LWNsaWNraW5nIG9uIGRpcmVjdG9yeS4KKyAgICAgICAgQWxzbywgdGhpcyBwYXRjaCBhZGRzIHN0
YXR1cyBiYXIgYnV0dG9uIHRvIG5hdmlnYXRlIHRvIHBhcmVudCBkaXJlY3RvcnkuCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RpcmVjdG9yeS10cmVlLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL2RpcmVjdG9yeS10cmVlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanM6CisgICAgICAgIChpbml0aWFs
aXplX0ZpbGVTeXN0ZW1UZXN0LndyYXBGaWxlU3lzdGVtQ29tbWFuZC5jb21tYW5kV3JhcHBlcik6
CisgICAgICAgIChpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0LndyYXBGaWxlU3lzdGVtQ29tbWFu
ZC5jb21wbGV0aW9uV3JhcHBlcik6CisgICAgICAgIChpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0
LndyYXBGaWxlU3lzdGVtQ29tbWFuZCk6CisgICAgICAgIChpbml0aWFsaXplX0ZpbGVTeXN0ZW1U
ZXN0Lkluc3BlY3RvclRlc3QuY2FsbE9uUmVxdWVzdENvbXBsZXRlZCk6CisgICAgICAgIChpbml0
aWFsaXplX0ZpbGVTeXN0ZW1UZXN0Lkluc3BlY3RvclRlc3QuTW9ja0VudHJ5KToKKyAgICAgICAg
KGluaXRpYWxpemVfRmlsZVN5c3RlbVRlc3QuSW5zcGVjdG9yVGVzdC5wcmVwYXJlRm9yRmlsZVN5
c3RlbVVJVGVzdCk6CisgICAgICAgIChpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0Lkluc3BlY3Rv
clRlc3QuZGVsZXRlRmlsZVN5c3RlbXMpOgorICAgICAgICAoaW5pdGlhbGl6ZV9GaWxlU3lzdGVt
VGVzdC5JbnNwZWN0b3JUZXN0LnBvcHVsYXRlRmlsZVN5c3RlbSk6CisgICAgICAgIChpbml0aWFs
aXplX0ZpbGVTeXN0ZW1UZXN0KToKKyAgICAgICAgKHBvcHVsYXRlRmlsZVN5c3RlbS5wcm9jZXNz
RW50cnkpOgorICAgICAgICAocG9wdWxhdGVGaWxlU3lzdGVtLnByb2Nlc3NFbnRyeS50cnVuY2F0
ZSk6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS91aS9kaXJlY3Rv
cnktY29udGVudC12aWV3LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS91aS9kaXJlY3RvcnktY29udGVudC12aWV3Lmh0bWw6IEFk
ZGVkLgorCiAyMDEyLTA5LTA5ICBLeXVuZ1RhZSBLaW0gIDxrdGYua2ltQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIFtFRkxdIFdyb25nIHJlbmRlcmluZyByZXN1bHRzIGZvciBzcXVhcmUtYnV0dG9u
LWFwcGVhcmFuY2UuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZmlsZXN5c3RlbS9kaXJlY3RvcnktdHJlZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RpcmVjdG9yeS10cmVlLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI3ZjEzZWM0NDVkMmM0NWM5ZTJj
ZjJlNzZhZTkxOWVjNjViNjJmYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2Rp
cmVjdG9yeS10cmVlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAK
LVRlc3RzIGRpcmVjdG9yeSB0cmVlIG9uIEZpbGVTeXN0ZW1WaWV3LgotCi1bZGlyZWN0b3J5IHRy
ZWUgbm9kZV0KLWV4cGFuZGVkOiB0cnVlCi1lbnRyeTogKG51bGwpCi0jY2hpbGRyZW46IDEKLSAg
W2RpcmVjdG9yeSB0cmVlIG5vZGVdCi0gIGV4cGFuZGVkOiB0cnVlCi0gIGVudHJ5OiBmaWxlc3lz
dGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvCi0gICNjaGlsZHJlbjogMQotICAg
IFtkaXJlY3RvcnkgdHJlZSBub2RlXQotICAgIGV4cGFuZGVkOiBmYWxzZQotICAgIGVudHJ5OiBm
aWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZQotICAgICNjaGls
ZHJlbjogMAotCi1bZGlyZWN0b3J5IHRyZWUgbm9kZV0KLWV4cGFuZGVkOiB0cnVlCi1lbnRyeTog
KG51bGwpCi0jY2hpbGRyZW46IDEKLSAgW2RpcmVjdG9yeSB0cmVlIG5vZGVdCi0gIGV4cGFuZGVk
OiB0cnVlCi0gIGVudHJ5OiBmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3Jh
cnkvCi0gICNjaGlsZHJlbjogMQotICAgIFtkaXJlY3RvcnkgdHJlZSBub2RlXQotICAgIGV4cGFu
ZGVkOiB0cnVlCi0gICAgZW50cnk6IGZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3Rl
bXBvcmFyeS9ob2dlCi0gICAgI2NoaWxkcmVuOiAxCi0gICAgICBbZGlyZWN0b3J5IHRyZWUgbm9k
ZV0KLSAgICAgIGV4cGFuZGVkOiBmYWxzZQotICAgICAgZW50cnk6IGZpbGVzeXN0ZW06aHR0cDov
LzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlL2Z1Z2EKLSAgICAgICNjaGlsZHJlbjogMAot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVt
L2RpcmVjdG9yeS10cmVlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL2RpcmVjdG9yeS10cmVlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDA0OWM0YzNjMThmZTQzNzQ2ZjdmMmExY2FhN2E2MzQwNzBhZmUxZjkuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kaXJlY3RvcnktdHJlZS5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRh
IGNoYXJzZXQ9IlVURi04Ij4KLTxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iZmlsZXN5c3RlbS10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgcnVuVGVz
dCk7Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgcmVzb3VyY2VzUGFuZWwgPSBXZWJJbnNw
ZWN0b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMiKTsKLSAgICB2YXIgZmlsZVN5c3RlbUxpc3RUcmVl
RWxlbWVudCA9IHJlc291cmNlc1BhbmVsLmZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQ7Ci0gICAg
aWYgKCFmaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50KSB7Ci0gICAgICAgIGZpbGVTeXN0ZW1MaXN0
VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQo
cmVzb3VyY2VzUGFuZWwpOwotICAgICAgICByZXNvdXJjZXNQYW5lbC5maWxlU3lzdGVtTGlzdFRy
ZWVFbGVtZW50ID0gZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudDsKLSAgICAgICAgcmVzb3VyY2Vz
UGFuZWwuc2lkZWJhclRyZWUuYXBwZW5kQ2hpbGQoZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudCk7
Ci0gICAgfQotCi0gICAgdmFyIGZpbGVTeXN0ZW1JdGVtID0gbnVsbDsKLSAgICB2YXIgZmlsZVN5
c3RlbVZpZXcgPSBudWxsOwotICAgIHZhciBkaXJlY3RvcnlUcmVlID0gbnVsbDsKLQotICAgIHZh
ciByZXF1ZXN0c0xlZnQgPSAwOwotICAgIHZhciB0ZXN0U3RlcCA9IFsKLSAgICAgICAgZnVuY3Rp
b24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURpcmVjdG9y
eSgiL2hvZ2UiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5j
dGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0
b3J5KCIvaG9nZS9mdWdhIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAg
ICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0
ZUZpbGUoIi9ob2dlL2Z1Z2EvcGl5byIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAot
Ci0gICAgICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnByb3Rv
dHlwZSwgIl9maWxlU3lzdGVtQWRkZWQiLCB0ZXN0U3RlcC5zaGlmdCgpLCBmYWxzZSk7Ci0gICAg
ICAgICAgICBmaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50Ll9yZWZyZXNoRmlsZVN5c3RlbSgpOwot
ICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoZXZlbnQuZGF0YS5uYW1lICE9PSAiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4x
OjgwMDAvdGVtcG9yYXJ5IikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAg
IGZpbGVTeXN0ZW1JdGVtID0gZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5fZmlsZVN5c3RlbVRy
ZWVFbGVtZW50QnlOYW1lKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3Jh
cnkiKTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLCAiX2RpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZCIs
IHRlc3RTdGVwLnNoaWZ0KCksIGZhbHNlKTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1JdGVtLnNl
bGVjdCgpOwotICAgICAgICAgICAgZmlsZVN5c3RlbVZpZXcgPSBmaWxlU3lzdGVtSXRlbS5fZmls
ZVN5c3RlbVZpZXc7Ci0gICAgICAgICAgICBkaXJlY3RvcnlUcmVlID0gZmlsZVN5c3RlbVZpZXcu
X2RpcmVjdG9yeVRyZWU7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICBkdW1wRGlyZWN0b3J5VHJlZShkaXJlY3RvcnlUcmVlKTsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKLQotICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVz
dFNlbnQoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICsrcmVxdWVzdHNMZWZ0Owot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUsICJfZGlyZWN0b3J5Q29udGVudFJl
Y2VpdmVkIiwgdGVzdFN0ZXAuc2hpZnQoKSwgdHJ1ZSk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUsICJy
ZXF1ZXN0RGlyZWN0b3J5Q29udGVudCIsIHJlcXVlc3RTZW50LCB0cnVlKTsKLQotICAgICAgICAg
ICAgZGlyZWN0b3J5VHJlZS5jaGlsZHJlblswXS5leHBhbmRSZWN1cnNpdmVseSgpOwotICAgICAg
ICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKC0tcmVxdWVzdHNM
ZWZ0KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGR1bXBEaXJlY3RvcnlU
cmVlKGRpcmVjdG9yeVRyZWUpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmls
ZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlv
bigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7
Ci0gICAgICAgIH0KLSAgICBdOwotCi0gICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0o
dGVzdFN0ZXAuc2hpZnQoKSk7Ci0KLSAgICBmdW5jdGlvbiBkdW1wRGlyZWN0b3J5VHJlZSh0cmVl
Tm9kZSwgaW5kZW50KQotICAgIHsKLSAgICAgICAgaW5kZW50ID0gaW5kZW50IHx8ICIiOwotICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChpbmRlbnQgKyAiW2RpcmVjdG9yeSB0cmVlIG5v
ZGVdIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGluZGVudCArICJleHBhbmRl
ZDogIiArIHRyZWVOb2RlLmV4cGFuZGVkKTsKLSAgICAgICAgaWYgKHRyZWVOb2RlLl9lbnRyeSkK
LSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGluZGVudCArICJlbnRyeTogIiAr
IHRyZWVOb2RlLl9lbnRyeS51cmwpCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KGluZGVudCArICJlbnRyeTogKG51bGwpIikKLSAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoaW5kZW50ICsgIiNjaGlsZHJlbjogIiArIHRyZWVOb2RlLmNoaWxk
cmVuLmxlbmd0aCk7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmVlTm9kZS5jaGls
ZHJlbi5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGR1bXBEaXJlY3RvcnlUcmVlKHRyZWVOb2Rl
LmNoaWxkcmVuW2ldLCBpbmRlbnQgKyAiICAiKTsKLSAgICB9Ci19Ci08L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPHA+VGVzdHMgZGlyZWN0b3J5IHRyZWUgb24gRmlsZVN5c3RlbVZpZXcuPC9w
PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcwppbmRleCA0NTc5
OTJiOGMwN2ZhMzA1M2QyZjA2N2ZmOTc1YmJjNGZjZjZmNjA2Li45ZTY1ZDY5ZThhOGNiZWMzMDdm
YmMwMDc2ZmRlNGUzNTMyODFiOGYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcworKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcwpAQCAt
MywxMCArMyw1MCBAQCB2YXIgaW5pdGlhbGl6ZV9GaWxlU3lzdGVtVGVzdCA9IGZ1bmN0aW9uKCkK
ICAgICB2YXIgbmV4dENhbGxiYWNrSWQgPSAwOwogICAgIHZhciBjYWxsYmFja3MgPSB7fTsKIAor
ICAgIHdyYXBGaWxlU3lzdGVtQ29tbWFuZCgiX3JlcXVlc3RGaWxlU3lzdGVtUm9vdCIpOworICAg
IHdyYXBGaWxlU3lzdGVtQ29tbWFuZCgiX3JlcXVlc3REaXJlY3RvcnlDb250ZW50Iik7CisgICAg
d3JhcEZpbGVTeXN0ZW1Db21tYW5kKCJyZXF1ZXN0TWV0YWRhdGEiKTsKKyAgICB3cmFwRmlsZVN5
c3RlbUNvbW1hbmQoIl9yZXF1ZXN0RmlsZUNvbnRlbnQiKTsKKyAgICB3cmFwRmlsZVN5c3RlbUNv
bW1hbmQoIl9kZWxldGVFbnRyeSIpOworCisgICAgdmFyIGlkbGVDYWxsYmFja3MgPSBbXTsKKyAg
ICB2YXIgcmVxdWVzdENvdW50ID0gMDsKKyAgICBmdW5jdGlvbiB3cmFwRmlsZVN5c3RlbUNvbW1h
bmQoY29tbWFuZE5hbWUpCisgICAgeworICAgICAgICB2YXIgb3JpZ2luYWwgPSBJbnNwZWN0b3JU
ZXN0Lm92ZXJyaWRlKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLCBjb21t
YW5kTmFtZSwgY29tbWFuZFdyYXBwZXIsIHRydWUpOworICAgICAgICB2YXIgb3JpZ2luYWxDYWxs
YmFjayA9IG51bGw7CisKKyAgICAgICAgZnVuY3Rpb24gY29tbWFuZFdyYXBwZXIoKQorICAgICAg
ICB7CisgICAgICAgICAgICArK3JlcXVlc3RDb3VudDsKKyAgICAgICAgICAgIHZhciBhcmdzID0g
QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKKyAgICAgICAgICAgIG9yaWdp
bmFsQ2FsbGJhY2sgPSBhcmdzLnBvcCgpOworICAgICAgICAgICAgYXJncy5wdXNoKGNvbXBsZXRp
b25XcmFwcGVyKTsKKyAgICAgICAgICAgIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY29tcGxldGlvbldyYXBwZXIoKQorICAgICAgICB7
CisgICAgICAgICAgICBvcmlnaW5hbENhbGxiYWNrLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Cisg
ICAgICAgICAgICBpZiAoLS1yZXF1ZXN0Q291bnQgIT09IDApCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICB2YXIgY2FsbGJhY2tzID0gaWRsZUNhbGxiYWNrczsKKyAgICAg
ICAgICAgIGlkbGVDYWxsYmFja3MgPSBbXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY2FsbGJhY2tzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrc1tpXSgp
OworICAgICAgICB9CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5jYWxsT25SZXF1ZXN0Q29t
cGxldGVkID0gZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICBpZGxlQ2FsbGJhY2tz
LnB1c2goY2FsbGJhY2spOworICAgIH07CisKICAgICBJbnNwZWN0b3JUZXN0Lk1vY2tFbnRyeSA9
IGZ1bmN0aW9uKHVybCkKICAgICB7CiAgICAgICAgIHRoaXMudXJsID0gdXJsOwotICAgIH0KKyAg
ICB9OwogCiAgICAgSW5zcGVjdG9yVGVzdC5yZWdpc3RlckNhbGxiYWNrID0gZnVuY3Rpb24oY2Fs
bGJhY2spCiAgICAgewpAQCAtOTgsNiArMTM4LDM3IEBAIHZhciBpbml0aWFsaXplX0ZpbGVTeXN0
ZW1UZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiY2hh
cnNldDogIiArIGNoYXJzZXQpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7
CiAgICAgfTsKKworICAgIEluc3BlY3RvclRlc3QucHJlcGFyZUZvckZpbGVTeXN0ZW1VSVRlc3Qg
PSBmdW5jdGlvbihjYWxsYmFjaykKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5leHBlcmlt
ZW50c1NldHRpbmdzLmZpbGVTeXN0ZW1JbnNwZWN0aW9uLmVuYWJsZUZvclRlc3QoKTsKKworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNhbGxPblJlcXVlc3RDb21wbGV0ZWQoSW5zcGVjdG9yVGVzdC5k
ZWxldGVGaWxlU3lzdGVtcy5iaW5kKG51bGwsIGNhbGxiYWNrKSk7CisgICAgICAgIFdlYkluc3Bl
Y3Rvci5zaG93UGFuZWwoInJlc291cmNlcyIpOworCisgICAgICAgIHZhciByZXNvdXJjZXMgPSBX
ZWJJbnNwZWN0b3IucGFuZWxzWyJyZXNvdXJjZXMiXTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZXMu
ZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudCkKKyAgICAgICAgICAgIHJlc291cmNlcy5maWxlU3lz
dGVtTGlzdFRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVF
bGVtZW50KHJlc291cmNlcyk7CisKKyAgICAgICAgcmVzb3VyY2VzLmZpbGVTeXN0ZW1MaXN0VHJl
ZUVsZW1lbnQuX3JlZnJlc2hGaWxlU3lzdGVtKCk7CisgICAgfTsKKworICAgIEluc3BlY3RvclRl
c3QuZGVsZXRlRmlsZVN5c3RlbXMgPSBmdW5jdGlvbihjYWxsYmFjaykKKyAgICB7CisgICAgICAg
IHZhciBmaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50ID0gV2ViSW5zcGVjdG9yLnBhbmVsc1sicmVz
b3VyY2VzIl0uZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudDsKKyAgICAgICAgaWYgKCFmaWxlU3lz
dGVtTGlzdFRyZWVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCkgeworICAgICAgICAgICAgY2FsbGJh
Y2soKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEluc3BlY3Rv
clRlc3QuY2FsbE9uUmVxdWVzdENvbXBsZXRlZChjYWxsYmFjayk7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7ICsr
aSkKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQuY2hpbGRyZW5baV0uX2Zp
bGVTeXN0ZW0ucm9vdC5kZWxldGVFbnRyeSgpOworICAgIH07CisKKyAgICBJbnNwZWN0b3JUZXN0
LnBvcHVsYXRlRmlsZVN5c3RlbSA9IGZ1bmN0aW9uKGZpbGVzLCBjYWxsYmFjaykgeworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJwb3B1bGF0ZUZpbGVTeXN0ZW0oSlNPTi5w
YXJzZSh1bmVzY2FwZShcIiIgKyBlc2NhcGUoSlNPTi5zdHJpbmdpZnkoZmlsZXMpKSArICJcIikp
LCAiICsgSW5zcGVjdG9yVGVzdC5yZWdpc3RlckNhbGxiYWNrKGNhbGxiYWNrKSArICIpIik7Cisg
ICAgfTsKIH0KIAogZnVuY3Rpb24gZGlzcGF0Y2hDYWxsYmFjaygpCkBAIC0xOTUsMyArMjY2LDQz
IEBAIGZ1bmN0aW9uIGNsZWFyRmlsZVN5c3RlbShjYWxsYmFjaykKICAgICAgICAgY2FsbGJhY2so
KTsKICAgICB9CiB9CisKK2Z1bmN0aW9uIHBvcHVsYXRlRmlsZVN5c3RlbShlbnRyeV9kZXNjcmlw
dGlvbiwgY2FsbGJhY2spCit7CisgICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZ
LCAxLCBwcm9jZXNzRW50cnkpOworCisgICAgdmFyIGNvdW50ID0gMDsKKyAgICBmdW5jdGlvbiBw
cm9jZXNzRW50cnkoZmlsZVN5c3RlbSkKKyAgICB7CisgICAgICAgIGlmICghZW50cnlfZGVzY3Jp
cHRpb24ubGVuZ3RoKSB7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHBhdGggPSBlbnRyeV9kZXNjcmlwdGlvblsw
XS5wYXRoOworICAgICAgICBpZiAocGF0aC5jaGFyQXQocGF0aC5sZW5ndGggLSAxKSA9PT0gJy8n
KQorICAgICAgICAgICAgZmlsZVN5c3RlbS5yb290LmdldERpcmVjdG9yeShwYXRoLCB7Y3JlYXRl
OiB0cnVlLCBleGNsdXNpdmU6IGZhbHNlfSwgZG9OZXh0LCBjcmVhdGVQYXJlbnQpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZShwYXRoLCB7Y3JlYXRl
OiB0cnVlLCBleGNsdXNpdmU6IGZhbHNlfSwgZG9OZXh0LCBjcmVhdGVQYXJlbnQpOworCisgICAg
ICAgIGZ1bmN0aW9uIGRvTmV4dChlbnRyeSkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGRl
c2MgPSBlbnRyeV9kZXNjcmlwdGlvbi5zaGlmdCgpOworICAgICAgICAgICAgaWYgKGVudHJ5Lmlz
RGlyZWN0b3J5ICYmIGRlc2Muc2l6ZSkKKyAgICAgICAgICAgICAgICBlbnRyeS5jcmVhdGVXcml0
ZXIodHJ1bmNhdGUuYmluZChudWxsLCBkZXNjLnNpemUpKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBwcm9jZXNzRW50cnkoZmlsZVN5c3RlbSk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiB0cnVuY2F0ZShzaXplLCB3cml0ZXIpIHsKKyAgICAgICAgICAgIHdyaXRl
ci5vbndyaXRlID0gcHJvY2Vzc0VudHJ5LmJpbmQobnVsbCwgZmlsZVN5c3RlbSk7CisgICAgICAg
ICAgICB3cml0ZXIudHJ1bmNhdGUoc2l6ZSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjcmVhdGVQYXJlbnQoKQorICAgICAgICB7CisgICAgICAgICAgICBlbnRyeV9kZXNjcmlwdGlv
bi51bnNoaWZ0KHtwYXRoOiBwYXRoLnJlcGxhY2UoL1wvKlteL10rXC8qJC8sIi8iKX0pOworICAg
ICAgICAgICAgcHJvY2Vzc0VudHJ5KGZpbGVTeXN0ZW0pOworICAgICAgICB9CisgICAgfQorfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS91
aS9kaXJlY3RvcnktY29udGVudC12aWV3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vdWkvZGlyZWN0b3J5LWNvbnRlbnQtdmlldy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGZjZGVmZDI1ZjAxZTIxNTY4YmFlZmEyZGU4ZDMxMjJmMzQ5
Nzk5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2ZpbGVzeXN0ZW0vdWkvZGlyZWN0b3J5LWNvbnRlbnQtdmlldy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwyMiBAQAorVGVzdHMgRGlyZWN0b3J5Q29udGVudFZpZXcgVUkuCisKK1Nob3dpbmcgY29u
dGVudHMgb2Y6IGZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS8KKyAg
ImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlIgorICAiZmls
ZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2ZvbyIKKyAgImZpbGVzeXN0
ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9iYXoiCisgICJmaWxlc3lzdGVtOmh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvYmFyIgorCitTaG93aW5nIGNvbnRlbnRzIG9m
OiBmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZQorICAiZmls
ZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UvcGl5byIKKyAgImZp
bGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlL2hvZ2VyYSIKKyAg
ImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlL2Z1Z2EiCisK
K1Nob3dpbmcgY29udGVudHMgb2Y6IGZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3Rl
bXBvcmFyeS9ob2dlL2hvZ2VyYQorICAiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAv
dGVtcG9yYXJ5L2hvZ2UvaG9nZXJhL2hvZ2VyYWdhIgorCitTaG93aW5nIGNvbnRlbnRzIG9mOiBm
aWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZQorICAiZmlsZXN5
c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UvcGl5byIKKyAgImZpbGVz
eXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlL2hvZ2VyYSIKKyAgImZp
bGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlL2Z1Z2EiCisKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS91
aS9kaXJlY3RvcnktY29udGVudC12aWV3Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9maWxlc3lzdGVtL3VpL2RpcmVjdG9yeS1jb250ZW50LXZpZXcuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xZTlmMzUwMjcwN2M5OTEyYjQyOWYzZTI5NjBkNGJiNDEzNDk4NDk2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS91aS9k
aXJlY3RvcnktY29udGVudC12aWV3Lmh0bWwKQEAgLTAsMCArMSw5MSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9maWxl
c3lzdGVtLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2RvY3VtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBydW5UZXN0KTsKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHZhciB0ZXN0U3RlcCA9IFsKKyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LnBvcHVsYXRlRmlsZVN5c3RlbShbCisgICAgICAgICAgICAgICAgeyBwYXRo
OiAiL2hvZ2UvaG9nZXJhL2hvZ2VyYWdhL2Fob2dlL2hvZ2VyYWdvbiIsIHNpemU6IDEwMCB9LAor
ICAgICAgICAgICAgICAgIHsgcGF0aDogIi9ob2dlL2Z1Z2EiLCBzaXplOiAxMDAgfSwKKyAgICAg
ICAgICAgICAgICB7IHBhdGg6ICIvaG9nZS9waXlvIiwgc2l6ZTogMTAwIH0sCisgICAgICAgICAg
ICAgICAgeyBwYXRoOiAiL2Zvby8ifSwKKyAgICAgICAgICAgICAgICB7IHBhdGg6ICIvYmFyIiwg
c2l6ZTogMTAwIH0sCisgICAgICAgICAgICAgICAgeyBwYXRoOiAiL2Jhei8ifQorICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAorCisgICAg
ICAgIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jYWxs
T25SZXF1ZXN0Q29tcGxldGVkKHRlc3RTdGVwLnNoaWZ0KCkpOworCisgICAgICAgICAgICB2YXIg
bmFtZSA9ICJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkiOworICAg
ICAgICAgICAgdmFyIGZpbGVTeXN0ZW1Ob2RlID0gV2ViSW5zcGVjdG9yLnBhbmVsc1sicmVzb3Vy
Y2VzIl0uZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5fZmlsZVN5c3RlbVRyZWVFbGVtZW50QnlO
YW1lKG5hbWUpOworICAgICAgICAgICAgZmlsZVN5c3RlbU5vZGUuc2VsZWN0KCk7CisgICAgICAg
IH0sCisKKyAgICAgICAgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgZmls
ZVN5c3RlbVZpZXcgPSBXZWJJbnNwZWN0b3IucGFuZWxzWyJyZXNvdXJjZXMiXS52aXNpYmxlVmll
dzsKKyAgICAgICAgICAgIHZhciBkaXJlY3RvcnlDb250ZW50VmlldyA9IGZpbGVTeXN0ZW1WaWV3
Ll92aXNpYmxlVmlldzsKKyAgICAgICAgICAgIGR1bXBEaXJlY3RvcnlDb250ZW50VmlldygpOwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jYWxsT25SZXF1ZXN0Q29tcGxldGVkKHRlc3RTdGVw
LnNoaWZ0KCkpOworICAgICAgICAgICAgZmlsZVN5c3RlbVZpZXcubmF2aWdhdGVEb3duKGRpcmVj
dG9yeUNvbnRlbnRWaWV3LmVudHJ5LCBkaXJlY3RvcnlDb250ZW50Vmlldy5yb290Tm9kZSgpLmNo
aWxkcmVuWzBdLl9lbnRyeSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgZmlsZVN5c3RlbVZpZXcgPSBXZWJJbnNwZWN0b3IucGFu
ZWxzWyJyZXNvdXJjZXMiXS52aXNpYmxlVmlldzsKKyAgICAgICAgICAgIHZhciBkaXJlY3RvcnlD
b250ZW50VmlldyA9IGZpbGVTeXN0ZW1WaWV3Ll92aXNpYmxlVmlldzsKKyAgICAgICAgICAgIGR1
bXBEaXJlY3RvcnlDb250ZW50VmlldygpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jYWxs
T25SZXF1ZXN0Q29tcGxldGVkKHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICAgICAgZmlsZVN5
c3RlbVZpZXcubmF2aWdhdGVEb3duKGRpcmVjdG9yeUNvbnRlbnRWaWV3LmVudHJ5LCBkaXJlY3Rv
cnlDb250ZW50Vmlldy5yb290Tm9kZSgpLmNoaWxkcmVuWzFdLl9lbnRyeSk7CisgICAgICAgIH0s
CisKKyAgICAgICAgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgZmlsZVN5
c3RlbVZpZXcgPSBXZWJJbnNwZWN0b3IucGFuZWxzWyJyZXNvdXJjZXMiXS52aXNpYmxlVmlldzsK
KyAgICAgICAgICAgIGR1bXBEaXJlY3RvcnlDb250ZW50VmlldygpOworCisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNhbGxPblJlcXVlc3RDb21wbGV0ZWQodGVzdFN0ZXAuc2hpZnQoKSk7Cisg
ICAgICAgICAgICBmaWxlU3lzdGVtVmlldy5fbmF2aWdhdGVVcCgpOworICAgICAgICB9LAorCisg
ICAgICAgIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgZHVtcERpcmVjdG9yeUNv
bnRlbnRWaWV3KCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmRlbGV0ZUZpbGVTeXN0ZW1z
KHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAg
ICAgfQorICAgIF07CisKKyAgICBmdW5jdGlvbiBkdW1wRGlyZWN0b3J5Q29udGVudFZpZXcoKQor
ICAgIHsKKyAgICAgICAgdmFyIGZpbGVTeXN0ZW1WaWV3ID0gV2ViSW5zcGVjdG9yLnBhbmVsc1si
cmVzb3VyY2VzIl0udmlzaWJsZVZpZXc7CisgICAgICAgIHZhciBkaXJlY3RvcnlDb250ZW50Vmll
dyA9IGZpbGVTeXN0ZW1WaWV3Ll92aXNpYmxlVmlldzsKKworICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiU2hvd2luZyBjb250ZW50cyBvZjogIiArIGRpcmVjdG9yeUNvbnRlbnRWaWV3
LmVudHJ5LnVybCk7CisgICAgICAgIHZhciBjaGlsZHJlbiA9IGRpcmVjdG9yeUNvbnRlbnRWaWV3
LnJvb3ROb2RlKCkuY2hpbGRyZW47CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRy
ZW4ubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICBc
IiIgKyBjaGlsZHJlbltpXS5fZW50cnkudXJsICsgIlwiIik7CisgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCIiKTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LnByZXBhcmVGb3JG
aWxlU3lzdGVtVUlUZXN0KHRlc3RTdGVwLnNoaWZ0KCkpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRlc3RzIERpcmVjdG9yeUNvbnRlbnRWaWV3IFVJLjwvcD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>