<?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>40044</bug_id>
          
          <creation_ts>2010-06-01 23:53:17 -0700</creation_ts>
          <short_desc>resolve urls in text/html clipboard data</short_desc>
          <delta_ts>2010-06-15 01:35: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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://ponderer.org/tests/urls.html</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="Tony Chang">tony</reporter>
          <assigned_to name="Tony Chang">tony</assigned_to>
          <cc>jianli</cc>
    
    <cc>jparent</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>233103</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-01 23:53:17 -0700</bug_when>
    <thetext>resolve urls in text/html clipboard data</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233104</commentid>
    <comment_count>1</comment_count>
      <attachid>57626</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-01 23:55:59 -0700</bug_when>
    <thetext>Created attachment 57626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233112</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-02 00:05:38 -0700</bug_when>
    <thetext>For example, try copying text from wikipedia with links and pasting into http://www.mozilla.org/editor/midasdemo/ .  The pasted content should have absolute URLs that point to wikipedia, even though wikipedia uses relative URLs.

This works already on windows ports because of the CF_HTML clipboard format which includes the base URL.  This works on Safari as well because (I think) the WebArchive format also keeps the base URL.  This is currently broken on Linux variants and Chromium Mac, which doesn&apos;t use WebArchive.

The fix is to expand the URLs during the copy operation.  I didn&apos;t expand file:/// urls because there might be privacy issues with expanding them.  This doesn&apos;t match the current Mac impl because it will expand URLs from a file:/// source.  I can revert that part since it&apos;s kind of orthogonal.

The other tricky bit about the Mac impl is that it only resolves URLs if the page you&apos;re pasting into is a different URL from where you copied from.  I don&apos;t think we can do that with text/html data because it doesn&apos;t keep track of the base URL.  This makes testing a bit tricky (see the http test case).

The chromium bug report of this is http://crbug.com/28960</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236160</commentid>
    <comment_count>3</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-09 22:25:57 -0700</bug_when>
    <thetext>Ojan or Jianli, could one of you review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236629</commentid>
    <comment_count>4</comment_count>
      <attachid>57626</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-10 18:25:11 -0700</bug_when>
    <thetext>Comment on attachment 57626
Patch

LayoutTests/editing/pasteboard/copy-resolves-urls.html:16
 +      s.setBaseAndExtent(test, 0, test, 4);
Nit: a somewhat more readable way to do this:
s.selectAllChildren(test);

LayoutTests/http/tests/misc/copy-resolves-urls.html:16
 +      s.setBaseAndExtent(test, 0, test, 4);
ditto.

LayoutTests/ChangeLog:11
 +          * editing/pasteboard/paste-noscript.html:  Updated to no longer throw a JS exception so the results are the same
nice!

Here are the behaviors I saw with a quick test in different browsers:
1. IE: always keeps relative URLs relative
2. Safari 5.0 Mac / Chrome Windows / FF Windows: Depends on where you copy from. If you copy from within a contentEditable, relative URLs stay relative, otherwise they are resolved.
3. FF Mac: Always resolve URLs.

I wouldn&apos;t mind someone double-checking to make sure I didn&apos;t get that wrong.

&gt; The other tricky bit about the Mac impl is that it only resolves URLs if the page you&apos;re pasting into is a different URL from where you copied from.  I don&apos;t think we can do that with text/html data because it doesn&apos;t keep track of the base URL.  This makes testing a bit tricky (see the http test case).

Are you sure about this? I didn&apos;t see this in Safari 5.0 Mac. As in, copy-paste from one contentEditable to another contentEditable kept things relative even if they were on different pages.

Anyways, behavior (2) seems optimal. I think we should do that. Basically, s/AbsoluteURLs/AbsoluteNonEditableURLs/. Otherwise, the code changes look good to me.

Also, FWIW, I like the idea of never resolving file URLs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236702</commentid>
    <comment_count>5</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-10 23:05:44 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Here are the behaviors I saw with a quick test in different browsers:
&gt; 1. IE: always keeps relative URLs relative

Hmm, I always get absolute URLs.  See test URL added to the bug.  If I copy out of the first content editable field, I get an absolute URL no matter where I paste it (same contenteditable, second contenteditable, contenteditable in iframe).  I wonder if it matters that I&apos;m testing over remote desktop?

&gt; 2. Safari 5.0 Mac / Chrome Windows / FF Windows: Depends on where you copy from. If you copy from within a contentEditable, relative URLs stay relative, otherwise they are resolved.

When I run the same test on safari 4 mac, I get relative URLs in the first 2 contenteditables, but I get absolute URLs in the iframe.  It doesn&apos;t seem to matter if I copy from within a contenteditable or not.  Also, the existing test editing/pasteboard/paste-noscript.html doesn&apos;t copy from a contenteditable, and it gets a relative URL.

In Chrome Win, I get the same behavior as safari 4 mac (absolute in the iframe).

In Firefox win (3.6), I get relative URLs in the test case, but if I copy from wikipedia, I get full URLs.  If I load http://ponderer.org/tests/urls.html and http://www.aypwip.org/tests/urls.html (which happen to be the same file on different domains), and copy from one to the other, I get full URLs.  I guess Firefox is matching on domain or something.  This was also over remote desktop.

&gt; 3. FF Mac: Always resolve URLs.

I get the same behavior here as FF Win.  It seems to be domain based.

We must be doing something different because we&apos;re getting very different results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237178</commentid>
    <comment_count>6</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2010-06-11 17:26:52 -0700</bug_when>
    <thetext>One reason you may have been getting different results is that it can depend on how you get/set the hrefs.  For example, in IE, if you set a href using innerHTML, it is always made absolute, even if you set using relative.

I just tests this in all major browsers on Windows and Mac.  Here are my results:
Tested on:
Win FF 3.6.3
Win Chrome 6.0.427.0
Win Safari 5
Win IE 8
Mac Chrome 6.0.427.0
Mac Safari 4.0.5
Mac FF 3.6.3

Within a contentEditable region:
Everyone: relative (but FF will add ../ to the start if the href starts with a /)

Within a designMode iframe OR contentEditable iframe to contentEditable iframe (same domain or diff domain):
absolute: FF
relative: chrome, safari
relative, with about: added to the start: IE

Non-editable to contentEditable iframe (same domain or not):
absolute: FF, chrome win, Safari
relative: IE, chrome mac

non-editable to contentEditable div in the same window:
everyone: relative (but FF will add ../ to the start if the href starts with a /)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237205</commentid>
    <comment_count>7</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-11 18:43:30 -0700</bug_when>
    <thetext>(In reply to comment #6)
Thanks for getting all that data Julie! data++

I think it&apos;s very clear that we want copying from a non-editable page (e.g. wikipedia) to resolve relative URLs when pasted (e.g. into gmail). Given that, there&apos;s a few options. Discussion on IRC landed on resolving URLs only for clipboard formats that don&apos;t have a concept of a base. Tony, does that seem reasonable to you?

[6:26pm] othermaciej: that is some weird behavior
[6:26pm] ojan: yeah, my intuition is that we should always resolve urls on copy
[6:26pm] ojan: it makes links work by default.
[6:26pm] ojan: if a site specifically needs relative URLs, then they can catch the paste event and make the URLs relative again.
[6:27pm] othermaciej: ojan: I think keeping them relative and carrying a base is better, then the program doing the pasting can decide what is best
[6:27pm] othermaciej: ojan: of course, when the paste recipient is also WebKit, the buck stops with us
[6:28pm] ojan: othermaciej: do OS clipboards have a concept of a base?
[6:29pm] ojan: othermaciej: i guess...it&apos;s not clear to me how we would implement having a base unless that&apos;s already a standard part of OS clipboards
[6:31pm] othermaciej: ojan: we could keep things relative for clipboard formats that support carrying a base, and resolve to absolute otherwise, I suppose
[6:32pm] othermaciej: ojan: that&apos;s really based on the format I think, not the OS
[6:32pm] othermaciej: ojan: though in principle, any clipboard that can carry HTML can also carry a base, via a &lt;base&gt; element
[6:32pm] othermaciej: ojan: but I&apos;m not sure if paste recipients would DTRT in that case
[6:35pm] ojan: othermaciej: keeping things relative only for clipboard formats the support carrying a base makes sense to me. i didn&apos;t realize that any clipboard formats did. i can&apos;t imagine &lt;base&gt; would work for HTML as the paste would then affect all links on the page if the paste handler didn&apos;t handle it correclty.
[6:36pm] othermaciej: ojan: according to the bug comments, it seems like at least WebArchive and some Windows format do</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237631</commentid>
    <comment_count>8</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-13 17:19:43 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; I think it&apos;s very clear that we want copying from a non-editable page (e.g. wikipedia) to resolve relative URLs when pasted (e.g. into gmail). Given that, there&apos;s a few options. Discussion on IRC landed on resolving URLs only for clipboard formats that don&apos;t have a concept of a base. Tony, does that seem reasonable to you?

This sounds like exactly what the current patch is doing :)  It only changes &apos;text/html&apos;, which is a format that doesn&apos;t carry the base.  It doesn&apos;t change CF_HTML or WebArchive, both of which carry a base URL.

To restate: we should always resolve URLs for &apos;text/html&apos;, no matter what the copy source is, right?  That&apos;s what this patch does.  Note that this does make testing hard because simply doing a copy/paste doesn&apos;t tell you which format is being used.  I will reupload the patch with the selectAllChildren fix.

I&apos;m still getting slightly different data than what you an Julie are seeing (when I copy from wikipedia and paste into a content editable in IE, I get full URLs), but I guess it doesn&apos;t matter for this patch (I assume it has to do with RDP and the clipboard helper thingy).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237648</commentid>
    <comment_count>9</comment_count>
      <attachid>58611</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-13 18:14:42 -0700</bug_when>
    <thetext>Created attachment 58611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238296</commentid>
    <comment_count>10</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-15 01:35:20 -0700</bug_when>
    <thetext>Committed r61178: &lt;http://trac.webkit.org/changeset/61178&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57626</attachid>
            <date>2010-06-01 23:55:59 -0700</date>
            <delta_ts>2010-06-13 18:14:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40044-20100602155557.patch</filename>
            <type>text/plain</type>
            <size>31095</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YzMwODUwOTY5OWUwNDBhZDA3NTg5NGMwOTg0MjQzZjc4MGE1YzhlLi5jZDNhMDhk
ODc1MDg3NmRlNDkwM2VhNzVhMmE4NzUyNzg0ODhhN2ExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMDYtMDEgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICByZXNvbHZlIHVybHMgaW4gdGV4
dC9odG1sIGNsaXBib2FyZCBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MDA0NAorCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHkt
cmVzb2x2ZXMtdXJscy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFz
dGVib2FyZC9jb3B5LXJlc29sdmVzLXVybHMuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLW5vc2NyaXB0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbm9zY3JpcHQuaHRtbDogIFVwZGF0ZWQgdG8gbm8gbG9uZ2Vy
IHRocm93IGEgSlMgZXhjZXB0aW9uIHNvIHRoZSByZXN1bHRzIGFyZSB0aGUgc2FtZQorICAgICAg
ICAgICAgICB3aXRoIFY4IGFuZCBKU0MKKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvY29weS1y
ZXNvbHZlcy11cmxzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9t
aXNjL2NvcHktcmVzb2x2ZXMtdXJscy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS1tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLW5vc2NyaXB0LWV4cGVjdGVkLnR4
dDogTm8gbG9uZ2VyIG5lZWRlZCBzaW5jZSByZXN1bHRzIHNob3VsZCBtYXRjaCBKU0MKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLW5vc2Ny
aXB0LWV4cGVjdGVkLnR4dDogTm8gbG9uZ2VyIG5lZWRlZCBzaW5jZSByZXN1bHRzIHNob3VsZCBt
YXRjaCBKU0MKKwogMjAxMC0wNi0wMSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtRdF0gVXBkYXRlIGV4cGVjdGVkIHJlc3VsdHMgYWZ0ZXIgcjYwNTAz
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcmVzb2x2
ZXMtdXJscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29w
eS1yZXNvbHZlcy11cmxzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjIwY2M5MWIxNTVhOGFk
YjEwNDMwYjBiYmMwZDhlOGM0OGU4OWViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcmVzb2x2ZXMtdXJscy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw1IEBACitUaGlzIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0IGNvcHlpbmcvcGFzdGluZyBI
VE1MIHJlc3VsdHMgaW4gVVJMcyBiZWluZyBmdWxsIHBhdGhzIHNvIHBhc3RpbmcgYmV0d2VlbiB3
ZWJzaXRlcyB3b3Jrcy4gVG8gdGVzdCBtYW51YWxseSwgY29weSB0aGUgc2VsZWN0aW9uIGFuZCBw
YXN0ZSBpdCBpbnRvIHRoZSBibHVlIGJveC4gSWYgdGhpcyBpcyBhIGZpbGU6Ly8vIHVybCwgdGhl
IGxpbmtzIHNob3VsZCBiZSByZWxhdGl2ZS4gSWYgdGhpcyBpcyBhbiBodHRwOi8vIHVybCwgdGhl
IGxpbmtzIHNob3VsZCBiZSBhYnNvbHV0ZS4KKworbGluaworbGluaworPGEgaHJlZj0iLi4vcmVs
YXRpdmUvcGF0aC9mb28uaHRtbCI+bGluazwvYT48aW1nIHNyYz0icmVzb3VyY2VzL2FiZS5wbmci
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcmVzb2x2
ZXMtdXJscy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcmVzb2x2
ZXMtdXJscy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmZTJkYmNkNWZiMGJjYzViMWI3ZGRhZGRmOTgzMDZm
ZGViMDA0OGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvY29weS1yZXNvbHZlcy11cmxzLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPHA+VGhpcyB0ZXN0
cyB0byBtYWtlIHN1cmUgdGhhdCBjb3B5aW5nL3Bhc3RpbmcgSFRNTCByZXN1bHRzIGluIFVSTHMg
YmVpbmcgZnVsbCBwYXRocyBzbworcGFzdGluZyBiZXR3ZWVuIHdlYnNpdGVzIHdvcmtzLiAgVG8g
dGVzdCBtYW51YWxseSwgY29weSB0aGUgc2VsZWN0aW9uIGFuZCBwYXN0ZSBpdCBpbnRvCit0aGUg
Ymx1ZSBib3guICBJZiB0aGlzIGlzIGEgZmlsZTovLy8gdXJsLCB0aGUgbGlua3Mgc2hvdWxkIGJl
IHJlbGF0aXZlLiAgSWYgdGhpcyBpcyBhbgoraHR0cDovLyB1cmwsIHRoZSBsaW5rcyBzaG91bGQg
YmUgYWJzb2x1dGUuPC9wPgorPGRpdiBpZD0idGVzdCI+Cis8YSBocmVmPSIuLi9yZWxhdGl2ZS9w
YXRoL2Zvby5odG1sIj5saW5rPC9hPjxpbWcgc3JjPSJyZXNvdXJjZXMvYWJlLnBuZyI+Cis8L2Rp
dj4KKzxkaXYgaWQ9InBhc3RlaGVyZSIgY29udGVudGVkaXRhYmxlPSJ0cnVlIiBzdHlsZT0iYm9y
ZGVyOiAxcHggc29saWQgYmx1ZSIgb25wYXN0ZT0icGFzdGUoKSI+Cis8L2Rpdj4KKzxkaXYgaWQ9
InJlc3VsdHMiPjwvZGl2PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBz
ID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgIHZhciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlc3QiKTsKKyAgICBzLnNldEJhc2VBbmRFeHRlbnQodGVzdCwgMCwgdGVzdCwg
NCk7CisKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKKyAgICBkb2N1bWVudC5leGVjQ29tbWFu
ZCgiQ29weSIpOworICAgIHZhciBwYXN0ZUhlcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cGFzdGVoZXJlIik7CisgICAgcy5zZXRQb3NpdGlvbihwYXN0ZUhlcmUsIDApOworICAgIGRvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJQYXN0ZSIpOworfQorCitmdW5jdGlvbiBwYXN0ZSgpCit7CisgICAg
c2V0VGltZW91dChhZnRlclBhc3RlLCAwKTsKK30KKworZnVuY3Rpb24gYWZ0ZXJQYXN0ZSgpCit7
CisgICAgdmFyIHBhc3RlSGVyZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXN0ZWhlcmUi
KTsKKyAgICB2YXIgcmVzdWx0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHRzIik7
CisgICAgcmVzdWx0cy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwYXN0ZUhl
cmUuaW5uZXJIVE1MKSk7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCit0ZXN0KCk7Cis8
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0
ZS1ub3NjcmlwdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
cGFzdGUtbm9zY3JpcHQtZXhwZWN0ZWQudHh0CmluZGV4IGVhNDg4YzAxYmU4ZTAxNTk2ZDk4MTNj
OWRiYzI5OGZiMzU1ZGZlMjUuLjMwNDJiZjk3ZmUyOGViNWZlYmZkNTA2NDg0M2IxOTM4YWI5YTU0
ZTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ub3Nj
cmlwdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLW5vc2NyaXB0LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FH
RTogbGluZSAxOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogc2F5SGVsbG8K
IFRoaXMgdGVzdCBjb3BpZXMgYWxsIHRoZSBlbGVtZW50cyBjb250YWluaW5nIGV2ZW50IGhhbmRs
ZXJzIGFuZCBqYXZhc2NyaXB0IHVybHMsIHBhc3RlcyB0aGVtIGluIGFuIGVkaXRhYmxlIGFyZWEg
YW5kIHZlcmlmaWVzIHRoYXQgbm8gc2NyaXB0LCBoYW5kbGVycyBvciBqYXZhc2NyaXB0IHVybHMg
YXJlIGNvcGllZC4KIEhlbGxvIAogQ05OIEhlbGxvIApAQCAtMTAsMTEgKzksMTEgQEAgVGhpcyBp
cyBhIGZvcm0KIAogPGJ1dHRvbiBpZD0iYnV0dG9uMSIgb25jbGljaz0ic2F5SGVsbG8oKSIgb25k
YmxjbGljaz0ic2F5SGVsbG8oKSIgc3R5bGU9IndpZHRoOiAxMDBweDsiPkhlbGxvPC9idXR0b24+
CiA8YnV0dG9uIGlkPSJidXR0b24xIiBzdHlsZT0id2lkdGg6IDEwMHB4OyAiPkhlbGxvPC9idXR0
b24+Ci08YSBpZD0iYW5jaG9yMSIgaHJlZj0iaHR0cDovL3d3dy5jbm4uY29tIj5DTk48L2E+Ci08
YSBpZD0iYW5jaG9yMSIgaHJlZj0iaHR0cDovL3d3dy5jbm4uY29tIj5DTk48L2E+Cis8YSBpZD0i
YW5jaG9yMSIgaHJlZj0iaHR0cDovL3d3dy5jbm4uY29tLyI+Q05OPC9hPgorPGEgaWQ9ImFuY2hv
cjEiIGhyZWY9Imh0dHA6Ly93d3cuY25uLmNvbS8iPkNOTjwvYT4KIDxhIGlkPSJhbmNob3IyIiBo
cmVmPSJqYXZhc2NyaXB0OnNheUhlbGxvKCkiPkhlbGxvPC9hPgogPGEgaWQ9ImFuY2hvcjIiIGhy
ZWY9IiI+SGVsbG88L2E+Ci08aWZyYW1lIGlkPSJpZnJhbWUxIiBzcmM9ImphdmFzY3JpcHQ6c2F5
SGVsbG8oKSIgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZC1j
b2xvcjojY2VlOyI+PC9pZnJhbWU+Cis8aWZyYW1lIGlkPSJpZnJhbWUxIiBzcmM9ImphdmFzY3Jp
cHQ6dmFyIHggPSAxOyIgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsgYmFja2dy
b3VuZC1jb2xvcjojY2VlOyI+PC9pZnJhbWU+CiA8aWZyYW1lIGlkPSJpZnJhbWUxIiBzcmM9IiIg
c3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdi
KDIwNCwgMjM4LCAyMzgpOyAiPjwvaWZyYW1lPgogPGZvcm0gaWQ9ImZvcm0xIiBhY3Rpb249Imph
dmFzY3JpcHQ6c2F5SGVsbG8oKSIgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxNTBweDsg
YmFja2dyb3VuZC1jb2xvcjojY2VlOyI+VGhpcyBpcyBhIGZvcm08YnI+PGltZyBzcmM9Ii4uL3Jl
c291cmNlcy9hYmUucG5nIj48L2Zvcm0+CiA8Zm9ybSBpZD0iZm9ybTEiIGFjdGlvbj0iIiBzdHls
ZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDE1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjA0
LCAyMzgsIDIzOCk7ICI+VGhpcyBpcyBhIGZvcm08YnI+PGltZyBzcmM9Ii4uL3Jlc291cmNlcy9h
YmUucG5nIj48L2Zvcm0+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvcGFzdGUtbm9zY3JpcHQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9w
YXN0ZS1ub3NjcmlwdC5odG1sCmluZGV4IDcwODJjOTZhMGY0M2U1MzdlYWRmYWE2MzFiMGJkZjdh
OTkwMGEwYmEuLjcwNjU2MGQ2NzMzZTAwODU3MmQ5NmY2ZWYxZTM5ZmRiZDM0ZTkzMzcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ub3NjcmlwdC5odG1s
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ub3NjcmlwdC5odG1s
CkBAIC0xMyw5ICsxMyw5IEBAIGluIGFuIGVkaXRhYmxlIGFyZWEgYW5kIHZlcmlmaWVzIHRoYXQg
bm8gc2NyaXB0LCBoYW5kbGVycyBvciBqYXZhc2NyaXB0IHVybHMgYXJlCiA8ZGl2IGlkPSJ0ZXN0
IiA+CiA8YnV0dG9uIGlkPSJidXR0b24xIiBvbmNsaWNrPSJzYXlIZWxsbygpIiBvbmRibGNsaWNr
PSJzYXlIZWxsbygpIiBzdHlsZT0id2lkdGg6IDEwMHB4OyI+SGVsbG88L2J1dHRvbj4KIDxicj4K
LTxhIGlkPSJhbmNob3IxIiBocmVmPSJodHRwOi8vd3d3LmNubi5jb20iPkNOTjwvYT4KKzxhIGlk
PSJhbmNob3IxIiBocmVmPSJodHRwOi8vd3d3LmNubi5jb20vIj5DTk48L2E+CiA8YSBpZD0iYW5j
aG9yMiIgaHJlZj0iamF2YXNjcmlwdDpzYXlIZWxsbygpIj5IZWxsbzwvYT4KLTxpZnJhbWUgaWQ9
ImlmcmFtZTEiIHNyYz0iamF2YXNjcmlwdDpzYXlIZWxsbygpIiBzdHlsZT0id2lkdGg6IDIwMHB4
OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNjZWU7Ij48L2lmcmFtZT4KKzxpZnJh
bWUgaWQ9ImlmcmFtZTEiIHNyYz0iamF2YXNjcmlwdDp2YXIgeCA9IDE7IiBzdHlsZT0id2lkdGg6
IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNjZWU7Ij48L2lmcmFtZT4K
IDxmb3JtIGlkPSJmb3JtMSIgYWN0aW9uPSJqYXZhc2NyaXB0OnNheUhlbGxvKCkiIHN0eWxlPSJ3
aWR0aDogMjAwcHg7IGhlaWdodDogMTUwcHg7IGJhY2tncm91bmQtY29sb3I6I2NlZTsiPlRoaXMg
aXMgYSBmb3JtPGJyPjxpbWcgc3JjPSIuLi9yZXNvdXJjZXMvYWJlLnBuZyI+PC9pbWc+PC9mb3Jt
PgogPC9kaXY+CiA8ZGl2IGlkPSJwYXN0ZWhlcmUiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY29weS1yZXNvbHZlcy11cmxz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jb3B5LXJlc29sdmVz
LXVybHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmODk3ZjJjODFhMDc1NGU2YTZhOTRhMjI4
NTMyMWVmOTY0MDEyNTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21pc2MvY29weS1yZXNvbHZlcy11cmxzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Ro
aXMgdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgY29weWluZy9wYXN0aW5nIEhUTUwgcmVzdWx0cyBp
biBVUkxzIGJlaW5nIGZ1bGwgcGF0aHMgc28gcGFzdGluZyBiZXR3ZWVuIHdlYnNpdGVzIHdvcmtz
LiBUbyB0ZXN0IG1hbnVhbGx5LCBjb3B5IHRoZSBzZWxlY3Rpb24gYW5kIHBhc3RlIGl0IGludG8g
dGhlIGJsdWUgYm94LiBJZiB0aGlzIGlzIGEgZmlsZTovLy8gdXJsLCB0aGUgbGlua3Mgc2hvdWxk
IGJlIHJlbGF0aXZlLiBJZiB0aGlzIGlzIGFuIGh0dHA6Ly8gdXJsLCB0aGUgbGlua3Mgc2hvdWxk
IGJlIGFic29sdXRlLgorCitsaW5rCitsaW5rCis8YSBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvcmVsYXRpdmUvcGF0aC9mb28uaHRtbCI+bGluazwvYT48aW1nIHNyYz0iaHR0cDovLzEyNy4w
LjAuMTo4MDAwL21pc2MvcmVzb3VyY2VzL2NvbXBhc3MuanBnIj4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jb3B5LXJlc29sdmVzLXVybHMuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvbWlzYy9jb3B5LXJlc29sdmVzLXVybHMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
YmI0YTIwYzkyY2JiMTgxNDFjOTc5NjY1ZGUxNDYyNzcyMzRjNTc2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NvcHktcmVzb2x2ZXMtdXJscy5odG1sCkBA
IC0wLDAgKzEsNTQgQEAKKzxwPlRoaXMgdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgY29weWluZy9w
YXN0aW5nIEhUTUwgcmVzdWx0cyBpbiBVUkxzIGJlaW5nIGZ1bGwgcGF0aHMgc28KK3Bhc3Rpbmcg
YmV0d2VlbiB3ZWJzaXRlcyB3b3Jrcy4gIFRvIHRlc3QgbWFudWFsbHksIGNvcHkgdGhlIHNlbGVj
dGlvbiBhbmQgcGFzdGUgaXQgaW50bwordGhlIGJsdWUgYm94LiAgSWYgdGhpcyBpcyBhIGZpbGU6
Ly8vIHVybCwgdGhlIGxpbmtzIHNob3VsZCBiZSByZWxhdGl2ZS4gIElmIHRoaXMgaXMgYW4KK2h0
dHA6Ly8gdXJsLCB0aGUgbGlua3Mgc2hvdWxkIGJlIGFic29sdXRlLjwvcD4KKzxkaXYgaWQ9InRl
c3QiPgorPGEgaHJlZj0iLi4vcmVsYXRpdmUvcGF0aC9mb28uaHRtbCI+bGluazwvYT48aW1nIHNy
Yz0icmVzb3VyY2VzL2NvbXBhc3MuanBnIj4KKzwvZGl2PgorPGRpdiBpZD0icGFzdGVoZXJlIiBj
b250ZW50ZWRpdGFibGU9InRydWUiIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibHVlIiBvbnBh
c3RlPSJwYXN0ZSgpIj4KKzwvZGl2PgorPGRpdiBpZD0icmVzdWx0cyI+PC9kaXY+Cis8c2NyaXB0
PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIHMgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7
CisgICAgdmFyIHRlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworICAgIHMu
c2V0QmFzZUFuZEV4dGVudCh0ZXN0LCAwLCB0ZXN0LCA0KTsKKworICAgIGlmICghd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJDb3B5Iik7CisgICAgLy8gSXQgbG9v
a3MgbGlrZSBvbiBhIG1hYywgVVJMcyBhcmUgcmVzb2x2ZWQgb25seSBpZiB0aGUgcGFnZSB3ZSdy
ZSBwYXN0aW5nCisgICAgLy8gaW50byBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgcGFnZSB3ZSBjb3Bp
ZWQgZnJvbS4KKyAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gImh0dHA6Ly9sb2NhbGhvc3Q6
ODA4MC9taXNjL2NvcHktcmVzb2x2ZXMtdXJscy5odG1sP3Bhc3RlIjsKK30KKworZnVuY3Rpb24g
ZG9QYXN0ZSgpCit7CisgICAgdmFyIHBhc3RlSGVyZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJwYXN0ZWhlcmUiKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24ocGFz
dGVIZXJlLCAwKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiUGFzdGUiKTsKK30KKworZnVu
Y3Rpb24gcGFzdGUoKQoreworICAgIHNldFRpbWVvdXQoYWZ0ZXJQYXN0ZSwgMCk7Cit9CisKK2Z1
bmN0aW9uIGFmdGVyUGFzdGUoKQoreworICAgIHZhciBwYXN0ZUhlcmUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicGFzdGVoZXJlIik7CisgICAgdmFyIHJlc3VsdHMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0cyIpOworICAgIHJlc3VsdHMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUocGFzdGVIZXJlLmlubmVySFRNTCkpOworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK30KKworaWYgKGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaCA9PSAiP3Bhc3RlIikKKyAg
ICBkb1Bhc3RlKCk7CitlbHNlCisgICAgdGVzdCgpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3Rl
LW5vc2NyaXB0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1h
Yy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbm9zY3JpcHQtZXhwZWN0ZWQudHh0CmluZGV4IGE2
MDk5Yjg0MzkyYzE1MjM4YzdkYTU5NWQwODBhYzZmZWE4ZjgwMzIuLmU2OWRlMjliYjJkMWQ2NDM0
YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtLW1hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbm9zY3JpcHQtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvcGFzdGUtbm9zY3JpcHQtZXhwZWN0ZWQudHh0CkBAIC0xLDIwICswLDAgQEAKLUNPTlNP
TEUgTUVTU0FHRTogbGluZSAxOiBVbmNhdWdodCBSZWZlcmVuY2VFcnJvcjogc2F5SGVsbG8gaXMg
bm90IGRlZmluZWQKLVRoaXMgdGVzdCBjb3BpZXMgYWxsIHRoZSBlbGVtZW50cyBjb250YWluaW5n
IGV2ZW50IGhhbmRsZXJzIGFuZCBqYXZhc2NyaXB0IHVybHMsIHBhc3RlcyB0aGVtIGluIGFuIGVk
aXRhYmxlIGFyZWEgYW5kIHZlcmlmaWVzIHRoYXQgbm8gc2NyaXB0LCBoYW5kbGVycyBvciBqYXZh
c2NyaXB0IHVybHMgYXJlIGNvcGllZC4KLUhlbGxvIAotQ05OIEhlbGxvIAotVGhpcyBpcyBhIGZv
cm0KLQotSGVsbG/CoAotQ05OwqBIZWxsb8KgCi1UaGlzIGlzIGEgZm9ybQotCi08YnV0dG9uIGlk
PSJidXR0b24xIiBvbmNsaWNrPSJzYXlIZWxsbygpIiBvbmRibGNsaWNrPSJzYXlIZWxsbygpIiBz
dHlsZT0id2lkdGg6IDEwMHB4OyI+SGVsbG88L2J1dHRvbj4KLTxidXR0b24gaWQ9ImJ1dHRvbjEi
IHN0eWxlPSJ3aWR0aDogMTAwcHg7ICI+SGVsbG88L2J1dHRvbj4KLTxhIGlkPSJhbmNob3IxIiBo
cmVmPSJodHRwOi8vd3d3LmNubi5jb20iPkNOTjwvYT4KLTxhIGlkPSJhbmNob3IxIiBocmVmPSJo
dHRwOi8vd3d3LmNubi5jb20iPkNOTjwvYT4KLTxhIGlkPSJhbmNob3IyIiBocmVmPSJqYXZhc2Ny
aXB0OnNheUhlbGxvKCkiPkhlbGxvPC9hPgotPGEgaWQ9ImFuY2hvcjIiIGhyZWY9IiI+SGVsbG88
L2E+Ci08aWZyYW1lIGlkPSJpZnJhbWUxIiBzcmM9ImphdmFzY3JpcHQ6c2F5SGVsbG8oKSIgc3R5
bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjojY2VlOyI+
PC9pZnJhbWU+Ci08aWZyYW1lIGlkPSJpZnJhbWUxIiBzcmM9IiIgc3R5bGU9IndpZHRoOiAyMDBw
eDsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIwNCwgMjM4LCAyMzgpOyAi
PjwvaWZyYW1lPgotPGZvcm0gaWQ9ImZvcm0xIiBhY3Rpb249ImphdmFzY3JpcHQ6c2F5SGVsbG8o
KSIgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxNTBweDsgYmFja2dyb3VuZC1jb2xvcjoj
Y2VlOyI+VGhpcyBpcyBhIGZvcm08YnI+PGltZyBzcmM9Ii4uL3Jlc291cmNlcy9hYmUucG5nIj48
L2Zvcm0+Ci08Zm9ybSBpZD0iZm9ybTEiIGFjdGlvbj0iIiBzdHlsZT0id2lkdGg6IDIwMHB4OyBo
ZWlnaHQ6IDE1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjA0LCAyMzgsIDIzOCk7ICI+VGhp
cyBpcyBhIGZvcm08YnI+PGltZyBzcmM9Ii4uL3Jlc291cmNlcy9hYmUucG5nIj48L2Zvcm0+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0
ZWJvYXJkL3Bhc3RlLW5vc2NyaXB0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbm9zY3JpcHQtZXhwZWN0ZWQu
dHh0CmluZGV4IGE2MDk5Yjg0MzkyYzE1MjM4YzdkYTU5NWQwODBhYzZmZWE4ZjgwMzIuLmU2OWRl
MjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbm9zY3Jp
cHQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9l
ZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbm9zY3JpcHQtZXhwZWN0ZWQudHh0CkBAIC0xLDIwICsw
LDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbmNhdWdodCBSZWZlcmVuY2VFcnJvcjog
c2F5SGVsbG8gaXMgbm90IGRlZmluZWQKLVRoaXMgdGVzdCBjb3BpZXMgYWxsIHRoZSBlbGVtZW50
cyBjb250YWluaW5nIGV2ZW50IGhhbmRsZXJzIGFuZCBqYXZhc2NyaXB0IHVybHMsIHBhc3RlcyB0
aGVtIGluIGFuIGVkaXRhYmxlIGFyZWEgYW5kIHZlcmlmaWVzIHRoYXQgbm8gc2NyaXB0LCBoYW5k
bGVycyBvciBqYXZhc2NyaXB0IHVybHMgYXJlIGNvcGllZC4KLUhlbGxvIAotQ05OIEhlbGxvIAot
VGhpcyBpcyBhIGZvcm0KLQotSGVsbG/CoAotQ05OwqBIZWxsb8KgCi1UaGlzIGlzIGEgZm9ybQot
Ci08YnV0dG9uIGlkPSJidXR0b24xIiBvbmNsaWNrPSJzYXlIZWxsbygpIiBvbmRibGNsaWNrPSJz
YXlIZWxsbygpIiBzdHlsZT0id2lkdGg6IDEwMHB4OyI+SGVsbG88L2J1dHRvbj4KLTxidXR0b24g
aWQ9ImJ1dHRvbjEiIHN0eWxlPSJ3aWR0aDogMTAwcHg7ICI+SGVsbG88L2J1dHRvbj4KLTxhIGlk
PSJhbmNob3IxIiBocmVmPSJodHRwOi8vd3d3LmNubi5jb20iPkNOTjwvYT4KLTxhIGlkPSJhbmNo
b3IxIiBocmVmPSJodHRwOi8vd3d3LmNubi5jb20iPkNOTjwvYT4KLTxhIGlkPSJhbmNob3IyIiBo
cmVmPSJqYXZhc2NyaXB0OnNheUhlbGxvKCkiPkhlbGxvPC9hPgotPGEgaWQ9ImFuY2hvcjIiIGhy
ZWY9IiI+SGVsbG88L2E+Ci08aWZyYW1lIGlkPSJpZnJhbWUxIiBzcmM9ImphdmFzY3JpcHQ6c2F5
SGVsbG8oKSIgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZC1j
b2xvcjojY2VlOyI+PC9pZnJhbWU+Ci08aWZyYW1lIGlkPSJpZnJhbWUxIiBzcmM9IiIgc3R5bGU9
IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIwNCwg
MjM4LCAyMzgpOyAiPjwvaWZyYW1lPgotPGZvcm0gaWQ9ImZvcm0xIiBhY3Rpb249ImphdmFzY3Jp
cHQ6c2F5SGVsbG8oKSIgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAxNTBweDsgYmFja2dy
b3VuZC1jb2xvcjojY2VlOyI+VGhpcyBpcyBhIGZvcm08YnI+PGltZyBzcmM9Ii4uL3Jlc291cmNl
cy9hYmUucG5nIj48L2Zvcm0+Ci08Zm9ybSBpZD0iZm9ybTEiIGFjdGlvbj0iIiBzdHlsZT0id2lk
dGg6IDIwMHB4OyBoZWlnaHQ6IDE1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjA0LCAyMzgs
IDIzOCk7ICI+VGhpcyBpcyBhIGZvcm08YnI+PGltZyBzcmM9Ii4uL3Jlc291cmNlcy9hYmUucG5n
Ij48L2Zvcm0+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDkzNTAyZjgyMGViYThlOTk4YWFlMzcyNTJjMjdkMzQ2OGQ2NjFlZDIuLjI4NTc3
NTNkNDVhMTE4NTZjYjdmOWI2YjQyMzY4MjQyMmZhZGVlNjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTAt
MDYtMDEgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICByZXNvbHZlIHVybHMgaW4gdGV4dC9odG1s
IGNsaXBib2FyZCBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MDA0NAorCisgICAgICAgIEFsbG93IHRleHQvaHRtbCBkYXRhIGNvcGllZCBmcm9t
IGEgcGFnZSB0byBjb250YWluIGZ1bGwgVVJMcyB3aGVuCisgICAgICAgIGRyYWdnaW5nIG9yIGNv
cHkvcGFzdGluZy4KKworICAgICAgICBUZXN0czogZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcmVz
b2x2ZXMtdXJscy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL21pc2MvY29weS1yZXNv
bHZlcy11cmxzLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAgICAgICog
ZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kU3RhcnRNYXJrdXAp
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0U3RhcnRNYXJrdXApOgorICAgICAgICAoV2ViQ29yZTo6
TWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZE1hcmt1cCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVNYXJrdXApOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmg6CisgICAgICAgIChXZWJDb3Jl
OjopOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENocm9taXVtOjp3cml0ZVJhbmdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9DbGlwYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjp3
cml0ZVJhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjptYXJrdXApOgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OndyaXRlU2VsZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9oYWlrdS9QYXN0ZWJvYXJkSGFp
a3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNsaXBib2FyZFF0Ojp3cml0ZVJhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9QYXN0ZWJv
YXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24p
OgorCiAyMDEwLTA1LTI0ICBKYW1lcyBIYXdraW5zICA8amhhd2tpbnNAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS5iYXNlLmV4cCBiL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAppbmRleCAyOTcwNGZi
NDU0OTgzNjA1ZjI3M2NjMWE2ZDU3NTM5NTUwNGE1NjFmLi4wY2VjMDBiNWFiNjU4OGEwZTE3NTMz
MDU2ZGYwNTkzMDA1MDVmMjJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAK
KysrIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCkBAIC0yNjcsOCArMjY3LDggQEAgX19aTjdX
ZWJDb3JlMTJUZXh0SXRlcmF0b3JDMUVQS05TXzVSYW5nZUVOU18yMFRleHRJdGVyYXRvckJlaGF2
aW9yRQogX19aTjdXZWJDb3JlMTJXb3JrZXJUaHJlYWQxN3dvcmtlclRocmVhZENvdW50RXYKIF9f
Wk43V2ViQ29yZTEyYXBwbHlDb21tYW5kRU4zV1RGMTBQYXNzUmVmUHRySU5TXzExRWRpdENvbW1h
bmRFRUUKIF9fWk43V2ViQ29yZTEyY2FjaGVTdG9yYWdlRXYKLV9fWk43V2ViQ29yZTEyY3JlYXRl
TWFya3VwRVBLTlNfNE5vZGVFTlNfMTNFQ2hpbGRyZW5Pbmx5RVBOM1dURjZWZWN0b3JJUFMwX0xt
MEVFRQotX19aTjdXZWJDb3JlMTJjcmVhdGVNYXJrdXBFUEtOU181UmFuZ2VFUE4zV1RGNlZlY3Rv
cklQTlNfNE5vZGVFTG0wRUVFTlNfMjNFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZUViCitfX1pON1dl
YkNvcmUxMmNyZWF0ZU1hcmt1cEVQS05TXzROb2RlRU5TXzEzRUNoaWxkcmVuT25seUVQTjNXVEY2
VmVjdG9ySVBTMF9MbTBFRUVOU18xM0VBYnNvbHV0ZVVSTHNFCitfX1pON1dlYkNvcmUxMmNyZWF0
ZU1hcmt1cEVQS05TXzVSYW5nZUVQTjNXVEY2VmVjdG9ySVBOU180Tm9kZUVMbTBFRUVOU18yM0VB
bm5vdGF0ZUZvckludGVyY2hhbmdlRWJOU18xM0VBYnNvbHV0ZVVSTHNFCiBfX1pON1dlYkNvcmUx
MmdjQ29udHJvbGxlckV2CiBfX1pON1dlYkNvcmUxMmljb25EYXRhYmFzZUV2CiBfX1pON1dlYkNv
cmUxM0FYT2JqZWN0Q2FjaGUxMWdldE9yQ3JlYXRlRVBOU18xMlJlbmRlck9iamVjdEUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKaW5kZXggNDZmMGU5NDQxMWU0MzUyODFiYTFiODY0NmU0YjE3ODZhZjI1NTQwNi4uNWRm
MmEyMTBkOWNiZmQwMTc2MjhmZmZlNjQzYjg0NjhlOGI5ZjYzOCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAg
LTM5NCw3ICszOTQsNyBAQCBzdGF0aWMgdm9pZCByZW1vdmVFeHRlcmlvclN0eWxlcyhDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpCiAKIGVudW0gUmFuZ2VGdWxseVNlbGVjdHNOb2Rl
IHsgRG9lc0Z1bGx5U2VsZWN0Tm9kZSwgRG9lc05vdEZ1bGx5U2VsZWN0Tm9kZSB9OwogCi1zdGF0
aWMgdm9pZCBhcHBlbmRTdGFydE1hcmt1cChWZWN0b3I8VUNoYXI+JiByZXN1bHQsIGNvbnN0IE5v
ZGUqIG5vZGUsIGNvbnN0IFJhbmdlKiByYW5nZSwgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgYW5u
b3RhdGUsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcyA9IGZhbHNlLCBIYXNoTWFwPEF0b21p
Y1N0cmluZ0ltcGwqLCBBdG9taWNTdHJpbmdJbXBsKj4qIG5hbWVzcGFjZXMgPSAwLCBSYW5nZUZ1
bGx5U2VsZWN0c05vZGUgcmFuZ2VGdWxseVNlbGVjdHNOb2RlID0gRG9lc0Z1bGx5U2VsZWN0Tm9k
ZSkKK3N0YXRpYyB2b2lkIGFwcGVuZFN0YXJ0TWFya3VwKFZlY3RvcjxVQ2hhcj4mIHJlc3VsdCwg
Y29uc3QgTm9kZSogbm9kZSwgY29uc3QgUmFuZ2UqIHJhbmdlLCBFQW5ub3RhdGVGb3JJbnRlcmNo
YW5nZSBhbm5vdGF0ZSwgRUFic29sdXRlVVJMcyBhYnNvbHV0ZVVSTHMsIGJvb2wgY29udmVydEJs
b2Nrc1RvSW5saW5lcywgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQXRvbWljU3RyaW5nSW1w
bCo+KiBuYW1lc3BhY2VzLCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgcmFuZ2VGdWxseVNlbGVjdHNO
b2RlID0gRG9lc0Z1bGx5U2VsZWN0Tm9kZSkKIHsKICAgICBpZiAobmFtZXNwYWNlcykKICAgICAg
ICAgbmFtZXNwYWNlcy0+Y2hlY2tDb25zaXN0ZW5jeSgpOwpAQCAtNDcwLDkgKzQ3MCwxNCBAQCBz
dGF0aWMgdm9pZCBhcHBlbmRTdGFydE1hcmt1cChWZWN0b3I8VUNoYXI+JiByZXN1bHQsIGNvbnN0
IE5vZGUqIG5vZGUsIGNvbnN0IFJhbgogCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
PScpOwogCi0gICAgICAgICAgICAgICAgaWYgKGVsLT5pc1VSTEF0dHJpYnV0ZShhdHRyKSkKLSAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kUXVvdGVkVVJMQXR0cmlidXRlVmFsdWUocmVzdWx0LCBh
dHRyLT52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZiAoZWwtPmlzVVJMQXR0cmlidXRlKGF0dHIpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdl
IGRvbid0IHdhbnQgdG8gY29tcGxldGUgZmlsZTovLy8gVVJMcyBiZWNhdXNlIGl0IG1heSBjb250
YWluIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgICAgICAvLyBhYm91dCB0
aGUgdXNlcidzIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGFic29sdXRlVVJMcyA9
PSBBYnNvbHV0ZVVSTHMgJiYgIW5vZGUtPmRvY3VtZW50KCktPnVybCgpLmlzTG9jYWxGaWxlKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRRdW90ZWRVUkxBdHRyaWJ1dGVWYWx1ZShy
ZXN1bHQsIG5vZGUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGF0dHItPnZhbHVlKCkpLnN0cmlu
ZygpKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kUXVvdGVkVVJMQXR0cmlidXRlVmFsdWUocmVzdWx0LCBhdHRyLT52YWx1ZSgpLnN0cmlu
ZygpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCdcIicpOwogICAgICAgICAgICAgICAgICAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1
ZShyZXN1bHQsIGF0dHItPnZhbHVlKCksIGRvY3VtZW50SXNIVE1MKTsKICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnXCInKTsKQEAgLTU1MiwxMCArNTU3LDEwIEBAIHN0YXRpYyB2
b2lkIGFwcGVuZFN0YXJ0TWFya3VwKFZlY3RvcjxVQ2hhcj4mIHJlc3VsdCwgY29uc3QgTm9kZSog
bm9kZSwgY29uc3QgUmFuCiAgICAgfQogfQogCi1zdGF0aWMgU3RyaW5nIGdldFN0YXJ0TWFya3Vw
KGNvbnN0IE5vZGUqIG5vZGUsIGNvbnN0IFJhbmdlKiByYW5nZSwgRUFubm90YXRlRm9ySW50ZXJj
aGFuZ2UgYW5ub3RhdGUsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcyA9IGZhbHNlLCBIYXNo
TWFwPEF0b21pY1N0cmluZ0ltcGwqLCBBdG9taWNTdHJpbmdJbXBsKj4qIG5hbWVzcGFjZXMgPSAw
LCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgcmFuZ2VGdWxseVNlbGVjdHNOb2RlID0gRG9lc0Z1bGx5
U2VsZWN0Tm9kZSkKK3N0YXRpYyBTdHJpbmcgZ2V0U3RhcnRNYXJrdXAoY29uc3QgTm9kZSogbm9k
ZSwgY29uc3QgUmFuZ2UqIHJhbmdlLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBhbm5vdGF0ZSwg
RUFic29sdXRlVVJMcyBhYnNvbHV0ZVVSTHMsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcyA9
IGZhbHNlLCBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBBdG9taWNTdHJpbmdJbXBsKj4qIG5h
bWVzcGFjZXMgPSAwLCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgcmFuZ2VGdWxseVNlbGVjdHNOb2Rl
ID0gRG9lc0Z1bGx5U2VsZWN0Tm9kZSkKIHsKICAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKLSAg
ICBhcHBlbmRTdGFydE1hcmt1cChyZXN1bHQsIG5vZGUsIHJhbmdlLCBhbm5vdGF0ZSwgY29udmVy
dEJsb2Nrc1RvSW5saW5lcywgbmFtZXNwYWNlcywgcmFuZ2VGdWxseVNlbGVjdHNOb2RlKTsKKyAg
ICBhcHBlbmRTdGFydE1hcmt1cChyZXN1bHQsIG5vZGUsIHJhbmdlLCBhbm5vdGF0ZSwgYWJzb2x1
dGVVUkxzLCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzLCBuYW1lc3BhY2VzLCByYW5nZUZ1bGx5U2Vs
ZWN0c05vZGUpOwogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7CiB9CiAKQEAgLTYx
MCw3ICs2MTUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgYXBwZW5kTWFy
a3VwKE5vZGUqIHN0YXJ0Tm9kZSwgRUNoaWxkcmVuT25seSwgY29uc3QgSGFzaE1hcDxBdG9taWNT
dHJpbmdJbXBsKiwgQXRvbWljU3RyaW5nSW1wbCo+KiBuYW1lc3BhY2VzID0gMCk7CisgICAgdm9p
ZCBhcHBlbmRNYXJrdXAoTm9kZSogc3RhcnROb2RlLCBFQ2hpbGRyZW5Pbmx5LCBFQWJzb2x1dGVV
UkxzLCBjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBBdG9taWNTdHJpbmdJbXBsKj4q
IG5hbWVzcGFjZXMgPSAwKTsKIAogICAgIFN0cmluZyB0YWtlUmVzdWx0KCkgeyByZXR1cm4gU3Ry
aW5nOjphZG9wdChtX3Jlc3VsdCk7IH0KIApAQCAtNjIxLDcgKzYyNiw3IEBAIHByaXZhdGU6CiB9
OwogCiAvLyBGSVhNRTogV291bGQgYmUgbmljZSB0byBkbyB0aGlzIGluIGEgbm9uLXJlY3Vyc2l2
ZSB3YXkuCi12b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRNYXJrdXAoTm9kZSogc3RhcnRO
b2RlLCBFQ2hpbGRyZW5Pbmx5IGNoaWxkcmVuT25seSwgY29uc3QgSGFzaE1hcDxBdG9taWNTdHJp
bmdJbXBsKiwgQXRvbWljU3RyaW5nSW1wbCo+KiBuYW1lc3BhY2VzKQordm9pZCBNYXJrdXBBY2N1
bXVsYXRvcjo6YXBwZW5kTWFya3VwKE5vZGUqIHN0YXJ0Tm9kZSwgRUNoaWxkcmVuT25seSBjaGls
ZHJlbk9ubHksIEVBYnNvbHV0ZVVSTHMgYWJzb2x1dGVVUkxzLCBjb25zdCBIYXNoTWFwPEF0b21p
Y1N0cmluZ0ltcGwqLCBBdG9taWNTdHJpbmdJbXBsKj4qIG5hbWVzcGFjZXMpCiB7CiAgICAgaWYg
KHN0YXJ0Tm9kZSA9PSBtX25vZGVUb1NraXApCiAgICAgICAgIHJldHVybjsKQEAgLTYzNCwxMyAr
NjM5LDEzIEBAIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZE1hcmt1cChOb2RlKiBzdGFy
dE5vZGUsIEVDaGlsZHJlbk9ubHkgY2hpbGRyZW5Pbmx5CiAgICAgaWYgKCFjaGlsZHJlbk9ubHkp
IHsKICAgICAgICAgaWYgKG1fbm9kZXMpCiAgICAgICAgICAgICBtX25vZGVzLT5hcHBlbmQoc3Rh
cnROb2RlKTsKLSAgICAgICAgYXBwZW5kU3RhcnRNYXJrdXAobV9yZXN1bHQsIHN0YXJ0Tm9kZSwg
MCwgRG9Ob3RBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBmYWxzZSwgJm5hbWVzcGFjZUhhc2gpOwor
ICAgICAgICBhcHBlbmRTdGFydE1hcmt1cChtX3Jlc3VsdCwgc3RhcnROb2RlLCAwLCBEb05vdEFu
bm90YXRlRm9ySW50ZXJjaGFuZ2UsIGFic29sdXRlVVJMcywgZmFsc2UsICZuYW1lc3BhY2VIYXNo
KTsKICAgICB9CiAKICAgICAvLyBjaGlsZHJlbgogICAgIGlmICghKHN0YXJ0Tm9kZS0+ZG9jdW1l
bnQoKS0+aXNIVE1MRG9jdW1lbnQoKSAmJiBkb2VzSFRNTEZvcmJpZEVuZFRhZyhzdGFydE5vZGUp
KSkgewogICAgICAgICBmb3IgKE5vZGUqIGN1cnJlbnQgPSBzdGFydE5vZGUtPmZpcnN0Q2hpbGQo
KTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgICAg
ICBhcHBlbmRNYXJrdXAoY3VycmVudCwgSW5jbHVkZU5vZGUsICZuYW1lc3BhY2VIYXNoKTsKKyAg
ICAgICAgICAgIGFwcGVuZE1hcmt1cChjdXJyZW50LCBJbmNsdWRlTm9kZSwgYWJzb2x1dGVVUkxz
LCAmbmFtZXNwYWNlSGFzaCk7CiAgICAgfQogCiAgICAgLy8gZW5kIHRhZwpAQCAtNzkxLDcgKzc5
Niw3IEBAIHN0YXRpYyB2b2lkIGFkZFN0eWxlTWFya3VwKFZlY3RvcjxTdHJpbmc+JiBwcmVNYXJr
dXBzLCBWZWN0b3I8U3RyaW5nPiYgcG9zdE1hcmt1CiAKIC8vIEZJWE1FOiBTaG91bGRuJ3Qgd2Ug
b21pdCBzdHlsZSBpbmZvIHdoZW4gYW5ub3RhdGUgPT0gRG9Ob3RBbm5vdGF0ZUZvckludGVyY2hh
bmdlPyAKIC8vIEZJWE1FOiBBdCBsZWFzdCwgYW5ub3RhdGlvbiBhbmQgc3R5bGUgaW5mbyBzaG91
bGQgcHJvYmFibHkgbm90IGJlIGluY2x1ZGVkIGluIHJhbmdlLm1hcmt1cFN0cmluZygpCi1TdHJp
bmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgVmVjdG9yPE5vZGUqPiogbm9kZXMs
IEVBbm5vdGF0ZUZvckludGVyY2hhbmdlIGFubm90YXRlLCBib29sIGNvbnZlcnRCbG9ja3NUb0lu
bGluZXMpCitTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgVmVjdG9yPE5v
ZGUqPiogbm9kZXMsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlIGFubm90YXRlLCBib29sIGNvbnZl
cnRCbG9ja3NUb0lubGluZXMsIEVBYnNvbHV0ZVVSTHMgYWJzb2x1dGVVUkxzKQogewogICAgIERF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBpbnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcs
ICgiPGJyIGNsYXNzPVwiIiBBcHBsZUludGVyY2hhbmdlTmV3bGluZSAiXCI+IikpOwogCkBAIC04
ODAsNyArODg1LDcgQEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIFZl
Y3RvcjxOb2RlKj4qIG5vZGVzLCBFQW5ub3RhdGVGb3JJbnRlcmMKICAgICAgICAgCiAgICAgICAg
IC8vIEFkZCB0aGUgbm9kZSB0byB0aGUgbWFya3VwLgogICAgICAgICBpZiAoYWRkTWFya3VwRm9y
Tm9kZSkgewotICAgICAgICAgICAgbWFya3Vwcy5hcHBlbmQoZ2V0U3RhcnRNYXJrdXAobiwgdXBk
YXRlZFJhbmdlLmdldCgpLCBhbm5vdGF0ZSkpOworICAgICAgICAgICAgbWFya3Vwcy5hcHBlbmQo
Z2V0U3RhcnRNYXJrdXAobiwgdXBkYXRlZFJhbmdlLmdldCgpLCBhbm5vdGF0ZSwgYWJzb2x1dGVV
UkxzKSk7CiAgICAgICAgICAgICBpZiAobm9kZXMpCiAgICAgICAgICAgICAgICAgbm9kZXMtPmFw
cGVuZChuKTsKICAgICAgICAgfQpAQCAtOTE3LDcgKzkyMiw3IEBAIFN0cmluZyBjcmVhdGVNYXJr
dXAoY29uc3QgUmFuZ2UqIHJhbmdlLCBWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFubm90YXRlRm9y
SW50ZXJjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBvciBiKSBhbmNlc3RvcnMgdGhhdCB3ZSBuZXZlciBlbmNvdW50ZXJl
ZCBkdXJpbmcgYSBwcmUtb3JkZXIgdHJhdmVyc2FsIHN0YXJ0aW5nIGF0IHN0YXJ0Tm9kZToKICAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdGFydE5vZGUtPmlzRGVzY2VuZGFudE9mKHBh
cmVudCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHJlTWFya3Vwcy5hcHBlbmQoZ2V0U3Rh
cnRNYXJrdXAocGFyZW50LCB1cGRhdGVkUmFuZ2UuZ2V0KCksIGFubm90YXRlKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwcmVNYXJrdXBzLmFwcGVuZChnZXRTdGFydE1hcmt1cChwYXJlbnQs
IHVwZGF0ZWRSYW5nZS5nZXQoKSwgYW5ub3RhdGUsIGFic29sdXRlVVJMcykpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgbWFya3Vwcy5hcHBlbmQoZ2V0RW5kTWFya3VwKHBhcmVudCkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVzKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGVzLT5hcHBlbmQocGFyZW50KTsKQEAgLTEwMDMsNyArMTAwOCw3IEBAIFN0cmluZyBj
cmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCBWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFu
bm90YXRlRm9ySW50ZXJjCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8v
IFNpbmNlIHRoaXMgbm9kZSBhbmQgYWxsIHRoZSBvdGhlciBhbmNlc3RvcnMgYXJlIG5vdCBpbiB0
aGUgc2VsZWN0aW9uIHdlIHdhbnQgdG8gc2V0IFJhbmdlRnVsbHlTZWxlY3RzTm9kZSB0byBEb2Vz
Tm90RnVsbHlTZWxlY3ROb2RlCiAgICAgICAgICAgICAgICAgLy8gc28gdGhhdCBzdHlsZXMgdGhh
dCBhZmZlY3QgdGhlIGV4dGVyaW9yIG9mIHRoZSBub2RlIGFyZSBub3QgaW5jbHVkZWQuCi0gICAg
ICAgICAgICAgICAgcHJlTWFya3Vwcy5hcHBlbmQoZ2V0U3RhcnRNYXJrdXAoYW5jZXN0b3IsIHVw
ZGF0ZWRSYW5nZS5nZXQoKSwgYW5ub3RhdGUsIGNvbnZlcnRCbG9ja3NUb0lubGluZXMsIDAsIERv
ZXNOb3RGdWxseVNlbGVjdE5vZGUpKTsKKyAgICAgICAgICAgICAgICBwcmVNYXJrdXBzLmFwcGVu
ZChnZXRTdGFydE1hcmt1cChhbmNlc3RvciwgdXBkYXRlZFJhbmdlLmdldCgpLCBhbm5vdGF0ZSwg
YWJzb2x1dGVVUkxzLCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzLCAwLCBEb2VzTm90RnVsbHlTZWxl
Y3ROb2RlKSk7CiAgICAgICAgICAgICAgICAgbWFya3Vwcy5hcHBlbmQoZ2V0RW5kTWFya3VwKGFu
Y2VzdG9yKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobm9kZXMpCkBAIC0xMDY5
LDcgKzEwNzQsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50
RnJvbU1hcmt1cChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0CiAgICAgcmV0dXJuIGZyYWdtZW50
LnJlbGVhc2UoKTsKIH0KIAotU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBOb2RlKiBub2RlLCBF
Q2hpbGRyZW5Pbmx5IGNoaWxkcmVuT25seSwgVmVjdG9yPE5vZGUqPiogbm9kZXMpCitTdHJpbmcg
Y3JlYXRlTWFya3VwKGNvbnN0IE5vZGUqIG5vZGUsIEVDaGlsZHJlbk9ubHkgY2hpbGRyZW5Pbmx5
LCBWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFic29sdXRlVVJMcyBhYnNvbHV0ZVVSTHMpCiB7CiAg
ICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gIiI7CkBAIC0xMDgyLDcgKzEwODcsNyBAQCBT
dHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IE5vZGUqIG5vZGUsIEVDaGlsZHJlbk9ubHkgY2hpbGRy
ZW5Pbmx5LCBWZWN0b3I8Tm9kZSo+KgogICAgIH0KIAogICAgIE1hcmt1cEFjY3VtdWxhdG9yIGFj
Y3VtdWxhdG9yKGRlbGV0ZUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQsIG5vZGVzKTsKLSAgICBhY2N1
bXVsYXRvci5hcHBlbmRNYXJrdXAoY29uc3RfY2FzdDxOb2RlKj4obm9kZSksIGNoaWxkcmVuT25s
eSk7CisgICAgYWNjdW11bGF0b3IuYXBwZW5kTWFya3VwKGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUp
LCBjaGlsZHJlbk9ubHksIGFic29sdXRlVVJMcyk7CiAgICAgcmV0dXJuIGFjY3VtdWxhdG9yLnRh
a2VSZXN1bHQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCmluZGV4IGRkMzQxNTk2OGJlNDgwZDk2ZDUwNGM2NDM3
OGIzZmNjNzhmY2U2ZTQuLmY2NGZiNjFlYzJmMzIxODc0MzU3NDNkODUwYjljNDY0Njc4Y2NmODcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAorKysgYi9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIFN0cmluZzsKIAogICAgIGVudW0gRUNoaWxkcmVuT25seSB7IEluY2x1ZGVOb2RlLCBDaGls
ZHJlbk9ubHkgfTsKKyAgICBlbnVtIEVBYnNvbHV0ZVVSTHMgeyBEb05vdFJlc29sdmVVUkxzLCBB
YnNvbHV0ZVVSTHMgfTsKIAogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RnJhZ21lbnRGcm9tVGV4dChSYW5nZSogY29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKICAg
ICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChE
b2N1bWVudCosIGNvbnN0IFN0cmluZyYgbWFya3VwLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEZy
YWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CkBA
IC00OSw4ICs1MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBib29sIGlzUGxhaW5UZXh0
TWFya3VwKE5vZGUgKm5vZGUpOwogCiAgICAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5n
ZSosCi0gICAgICAgIFZlY3RvcjxOb2RlKj4qID0gMCwgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ug
PSBEb05vdEFubm90YXRlRm9ySW50ZXJjaGFuZ2UsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5l
cyA9IGZhbHNlKTsKLSAgICBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IE5vZGUqLCBFQ2hpbGRy
ZW5Pbmx5ID0gSW5jbHVkZU5vZGUsIFZlY3RvcjxOb2RlKj4qID0gMCk7CisgICAgICAgIFZlY3Rv
cjxOb2RlKj4qID0gMCwgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgPSBEb05vdEFubm90YXRlRm9y
SW50ZXJjaGFuZ2UsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcyA9IGZhbHNlLCBFQWJzb2x1
dGVVUkxzID0gRG9Ob3RSZXNvbHZlVVJMcyk7CisgICAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25z
dCBOb2RlKiwgRUNoaWxkcmVuT25seSA9IEluY2x1ZGVOb2RlLCBWZWN0b3I8Tm9kZSo+KiA9IDAs
IEVBYnNvbHV0ZVVSTHMgPSBEb05vdFJlc29sdmVVUkxzKTsKICAgICAKICAgICBTdHJpbmcgY3Jl
YXRlRnVsbE1hcmt1cChjb25zdCBOb2RlKik7CiAgICAgU3RyaW5nIGNyZWF0ZUZ1bGxNYXJrdXAo
Y29uc3QgUmFuZ2UqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xp
cGJvYXJkQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRD
aHJvbWl1bS5jcHAKaW5kZXggNzUwZmYzMDVjMThiMTllZGQ2OWI3ZWYxYmNiOWVkNDA1YjU2NWIw
ZS4uMjlmOTYyMGRiNmJiNzY1MzIyNTVmZTAyYzYzNWRiNjE1YjI3ZTUyNyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTUxMiw4ICs1
MTIsNyBAQCB2b2lkIENsaXBib2FyZENocm9taXVtOjp3cml0ZVJhbmdlKFJhbmdlKiBzZWxlY3Rl
ZFJhbmdlLCBGcmFtZSogZnJhbWUpCiAgICAgaWYgKCFtX2RhdGFPYmplY3QpCiAgICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2RhdGFPYmplY3QtPnRleHRIdG1sID0gY3JlYXRlTWFya3VwKHNlbGVj
dGVkUmFuZ2UsIDAsCi0gICAgICAgIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UpOworICAgIG1fZGF0
YU9iamVjdC0+dGV4dEh0bWwgPSBjcmVhdGVNYXJrdXAoc2VsZWN0ZWRSYW5nZSwgMCwgQW5ub3Rh
dGVGb3JJbnRlcmNoYW5nZSwgZmFsc2UsIEFic29sdXRlVVJMcyk7CiAgICAgbV9kYXRhT2JqZWN0
LT5odG1sQmFzZVVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKIAogICAgIFN0cmluZyBz
dHIgPSBmcmFtZS0+c2VsZWN0ZWRUZXh0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKaW5kZXggNjkwNDA1MDkxMjFlN2IyMTE0ZjM2Zjg2
MjdjMTZhYjBhODcxMTJjNS4uNDg2YzhlMjViZjg0MGJmYzJiZTcxMDkxNTU4ZWY3ZmYwY2ZkOTA1
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21p
dW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVt
LmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldFNlbGVjdGlvbk1vZGUo
Ym9vbCBzZWxlY3Rpb25Nb2RlKQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJh
bmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJh
bWUpCiB7Ci0gICAgU3RyaW5nIGh0bWwgPSBjcmVhdGVNYXJrdXAoc2VsZWN0ZWRSYW5nZSwgMCwg
QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSk7CisgICAgU3RyaW5nIGh0bWwgPSBjcmVhdGVNYXJrdXAo
c2VsZWN0ZWRSYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSwgZmFsc2UsIEFic29sdXRl
VVJMcyk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgS1VSTCB1cmwgPSBzZWxlY3Rl
ZFJhbmdlLT5zdGFydENvbnRhaW5lcihlYyktPmRvY3VtZW50KCktPnVybCgpOwogICAgIFN0cmlu
ZyBwbGFpblRleHQgPSBmcmFtZS0+c2VsZWN0ZWRUZXh0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xp
cGJvYXJkR3RrLmNwcAppbmRleCBhZDFjNjY1ZTE4ZWM5NTRiYzBkYTQxN2JiYWEwZTYxMzVkMmMw
ZWQwLi5jMjc0MzA5ZTkyNzBlODMyN2U3ZmY4OTFiNGI4OTZkYTMxMjFkMzQ5IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIENsaXBi
b2FyZEd0azo6d3JpdGVSYW5nZShSYW5nZSogcmFuZ2UsIEZyYW1lKiBmcmFtZSkKICAgICBBU1NF
UlQocmFuZ2UpOwogCiAgICAgbV9kYXRhT2JqZWN0LT5zZXRUZXh0KGZyYW1lLT5zZWxlY3RlZFRl
eHQoKSk7Ci0gICAgbV9kYXRhT2JqZWN0LT5zZXRNYXJrdXAoY3JlYXRlTWFya3VwKHJhbmdlLCAw
LCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKSk7CisgICAgbV9kYXRhT2JqZWN0LT5zZXRNYXJrdXAo
Y3JlYXRlTWFya3VwKHJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBmYWxzZSwgQWJz
b2x1dGVVUkxzKSk7CiAKICAgICBpZiAobV9jbGlwYm9hcmQpCiAgICAgICAgIG1faGVscGVyLT53
cml0ZUNsaXBib2FyZENvbnRlbnRzKG1fY2xpcGJvYXJkKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0
YU9iamVjdEd0ay5jcHAKaW5kZXggNTdkOTIwY2U5ZGJjM2FmOGRmNjIwOTBhNzE0MGQzODQzNjM0
M2ViMy4uODg2ZDNjMWY2YzJhN2E3YTZlMGVjMGVmNzE5MjE3YzViODIxYmMzYSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgU3RyaW5nIERh
dGFPYmplY3RHdGs6OnRleHQoKQogU3RyaW5nIERhdGFPYmplY3RHdGs6Om1hcmt1cCgpCiB7CiAg
ICAgaWYgKG1fcmFuZ2UpCi0gICAgICAgIHJldHVybiBjcmVhdGVNYXJrdXAobV9yYW5nZS5nZXQo
KSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSk7CisgICAgICAgIHJldHVybiBjcmVhdGVNYXJr
dXAobV9yYW5nZS5nZXQoKSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSwgZmFsc2UsIEFic29s
dXRlVVJMcyk7CiAgICAgcmV0dXJuIG1fbWFya3VwOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bh
c3RlYm9hcmRHdGsuY3BwCmluZGV4IDU5OWY3ZGEwMWU3MDI3OWQxZDEyNDE4MWVmOTRiNTljZTQy
NDQxZDYuLmQxMzliZDlhMzljY2QwMzNjMGNmNDdjMjFjMTRkNmVlMjUzZjQyN2YgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21h
cnRDb3B5T3JEZWxldGUsCiAgICAgR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBtX2hlbHBlci0+
Z2V0Q2xpcGJvYXJkKGZyYW1lKTsKICAgICBEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gRGF0
YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCk7CiAgICAgZGF0YU9iamVjdC0+c2V0
VGV4dChmcmFtZS0+c2VsZWN0ZWRUZXh0KCkpOwotICAgIGRhdGFPYmplY3QtPnNldE1hcmt1cChj
cmVhdGVNYXJrdXAoc2VsZWN0ZWRSYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSkpOwor
ICAgIGRhdGFPYmplY3QtPnNldE1hcmt1cChjcmVhdGVNYXJrdXAoc2VsZWN0ZWRSYW5nZSwgMCwg
QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSwgZmFsc2UsIEFic29sdXRlVVJMcykpOwogICAgIG1faGVs
cGVyLT53cml0ZUNsaXBib2FyZENvbnRlbnRzKGNsaXBib2FyZCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvUGFzdGVib2FyZEhhaWt1LmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vaGFpa3UvUGFzdGVib2FyZEhhaWt1LmNwcAppbmRleCBkZWZlYzNmYTc2NzA5NTUyNGI3
MzM4Y2FmMzMyNWViNDE1NDg2OWNkLi5kN2E3ZTA4OTRlNmQyMGI3OTZhZTBkMGQ1ZGM5YWM1MTY4
OWRkODI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L1Bhc3RlYm9hcmRIYWlr
dS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9QYXN0ZWJvYXJkSGFpa3UuY3BwCkBA
IC0xMDIsNyArMTAyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSog
c2VsZWN0ZWRSYW5nZSwgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZSwKIAogICAgIGRhdGEtPkFk
ZERhdGEoInRleHQvcGxhaW4iLCBCX01JTUVfVFlQRSwgc3RyaW5nLlN0cmluZygpLCBzdHJpbmcu
TGVuZ3RoKCkpOwogCi0gICAgQlN0cmluZyBtYXJrdXBTdHJpbmcoY3JlYXRlTWFya3VwKHNlbGVj
dGVkUmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UpKTsKKyAgICBCU3RyaW5nIG1hcmt1
cFN0cmluZyhjcmVhdGVNYXJrdXAoc2VsZWN0ZWRSYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNo
YW5nZSwgZmFsc2UsIEFic29sdXRlVVJMcykpOwogICAgIGRhdGEtPkFkZERhdGEoInRleHQvaHRt
bCIsIEJfTUlNRV9UWVBFLCBtYXJrdXBTdHJpbmcuU3RyaW5nKCksIG1hcmt1cFN0cmluZy5MZW5n
dGgoKSk7CiAKICAgICBiZV9jbGlwYm9hcmQtPkNvbW1pdCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBi
b2FyZFF0LmNwcAppbmRleCBjMjNlNDJlYWFjOTBhNjIwMmNkYmRhNjViZGUwNjFkZDE2OTYyMjI2
Li44MjhmODk3MWZjY2UzMzA2NmJiM2M2YTM5MmRlMWU0YTIxNDVkZGMwIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0NsaXBib2FyZFF0LmNwcApAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgQ2xpcGJvYXJkUXQ6
OndyaXRlUmFuZ2UoUmFuZ2UqIHJhbmdlLCBGcmFtZSogZnJhbWUpCiAgICAgUVN0cmluZyB0ZXh0
ID0gZnJhbWUtPnNlbGVjdGVkVGV4dCgpOwogICAgIHRleHQucmVwbGFjZShRQ2hhcigweGEwKSwg
UUxhdGluMUNoYXIoJyAnKSk7CiAgICAgbV93cml0YWJsZURhdGEtPnNldFRleHQodGV4dCk7Ci0g
ICAgbV93cml0YWJsZURhdGEtPnNldEh0bWwoY3JlYXRlTWFya3VwKHJhbmdlLCAwLCBBbm5vdGF0
ZUZvckludGVyY2hhbmdlKSk7CisgICAgbV93cml0YWJsZURhdGEtPnNldEh0bWwoY3JlYXRlTWFy
a3VwKHJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBmYWxzZSwgQWJzb2x1dGVVUkxz
KSk7CiAjaWZuZGVmIFFUX05PX0NMSVBCT0FSRAogICAgIGlmICghaXNGb3JEcmFnZ2luZygpKQog
ICAgICAgICBRQXBwbGljYXRpb246OmNsaXBib2FyZCgpLT5zZXRNaW1lRGF0YShtX3dyaXRhYmxl
RGF0YSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKaW5kZXggNDg0ZmE2MGU4YjMx
NGJlOWMwYzY4YmIxOGRjOWRmYmU0NzY1YzNiMC4uZmU3NDAyNTcyNmU3YTI5OTliNjY0OWE2NDE3
ZTIzOTZjMTg5ZTNmOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJk
UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcApAQCAtNjYs
NyArNjYsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3Rl
ZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLAogICAgIG1kLT5zZXRUZXh0KHRleHQp
OwogCiAgICAgUVN0cmluZyBodG1sID0gUUxhdGluMVN0cmluZygiPGh0bWw+PGhlYWQ+PG1ldGEg
aHR0cC1lcXVpdj1cIkNvbnRlbnQtVHlwZVwiIGNvbnRlbnQ9XCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLThcIiAvPjwvaGVhZD48Ym9keT4iKTsKLSAgICBodG1sICs9IGNyZWF0ZU1hcmt1cChzZWxl
Y3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKTsKKyAgICBodG1sICs9IGNyZWF0
ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBmYWxzZSwg
QWJzb2x1dGVVUkxzKTsKICAgICBodG1sICs9IFFMYXRpbjFTdHJpbmcoIjwvYm9keT48L2h0bWw+
Iik7CiAgICAgbWQtPnNldEh0bWwoaHRtbCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58611</attachid>
            <date>2010-06-13 18:14:42 -0700</date>
            <delta_ts>2010-06-14 17:56:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40044-20100613181441.patch</filename>
            <type>text/plain</type>
            <size>31034</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNGFjMTUzZTY3OTY4MDQxODBiZGU2ZmIwN2Q2ZjBiMmE4MzA1ZGI2Li42ZmYyZDA4
YzY0NWIyMTk1MWFjODFjMzljOTcxZDUyZDQ5ZDAyODE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMDYtMTMgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICByZXNvbHZlIHVybHMgaW4gdGV4
dC9odG1sIGNsaXBib2FyZCBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MDA0NAorCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHkt
cmVzb2x2ZXMtdXJscy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFz
dGVib2FyZC9jb3B5LXJlc29sdmVzLXVybHMuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLW5vc2NyaXB0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbm9zY3JpcHQuaHRtbDogIFVwZGF0ZWQgdG8gbm8gbG9uZ2Vy
IHRocm93IGEgSlMgZXhjZXB0aW9uIHNvIHRoZSByZXN1bHRzIGFyZSB0aGUgc2FtZQorICAgICAg
ICAgICAgICB3aXRoIFY4IGFuZCBKU0MKKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvY29weS1y
ZXNvbHZlcy11cmxzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9t
aXNjL2NvcHktcmVzb2x2ZXMtdXJscy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS1tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLW5vc2NyaXB0LWV4cGVjdGVkLnR4
dDogTm8gbG9uZ2VyIG5lZWRlZCBzaW5jZSByZXN1bHRzIHNob3VsZCBtYXRjaCBKU0MKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLW5vc2Ny
aXB0LWV4cGVjdGVkLnR4dDogTm8gbG9uZ2VyIG5lZWRlZCBzaW5jZSByZXN1bHRzIHNob3VsZCBt
YXRjaCBKU0MKKwogMjAxMC0wNi0xMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgVXBkYXRlZCBXaW5kb3dzLXBsYXRmb3JtIHJlc3VsdHMgZm9yIHRoZSBmaXggZm9y
IGJ1ZyA0MDM5NC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9j
b3B5LXJlc29sdmVzLXVybHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2NvcHktcmVzb2x2ZXMtdXJscy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODYyMGNj
OTFiMTU1YThhZGIxMDQzMGIwYmJjMGQ4ZThjNDhlODllYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXJlc29sdmVzLXVybHMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCBjb3B5aW5n
L3Bhc3RpbmcgSFRNTCByZXN1bHRzIGluIFVSTHMgYmVpbmcgZnVsbCBwYXRocyBzbyBwYXN0aW5n
IGJldHdlZW4gd2Vic2l0ZXMgd29ya3MuIFRvIHRlc3QgbWFudWFsbHksIGNvcHkgdGhlIHNlbGVj
dGlvbiBhbmQgcGFzdGUgaXQgaW50byB0aGUgYmx1ZSBib3guIElmIHRoaXMgaXMgYSBmaWxlOi8v
LyB1cmwsIHRoZSBsaW5rcyBzaG91bGQgYmUgcmVsYXRpdmUuIElmIHRoaXMgaXMgYW4gaHR0cDov
LyB1cmwsIHRoZSBsaW5rcyBzaG91bGQgYmUgYWJzb2x1dGUuCisKK2xpbmsKK2xpbmsKKzxhIGhy
ZWY9Ii4uL3JlbGF0aXZlL3BhdGgvZm9vLmh0bWwiPmxpbms8L2E+PGltZyBzcmM9InJlc291cmNl
cy9hYmUucG5nIj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9j
b3B5LXJlc29sdmVzLXVybHMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9j
b3B5LXJlc29sdmVzLXVybHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzRhNzgzMjQwNmMyMjAyZmQxOTBk
MWNmYzIwNzNmNjM1Y2Y2NTliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2NvcHktcmVzb2x2ZXMtdXJscy5odG1sCkBAIC0wLDAgKzEsNDQgQEAKKzxw
PlRoaXMgdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgY29weWluZy9wYXN0aW5nIEhUTUwgcmVzdWx0
cyBpbiBVUkxzIGJlaW5nIGZ1bGwgcGF0aHMgc28KK3Bhc3RpbmcgYmV0d2VlbiB3ZWJzaXRlcyB3
b3Jrcy4gIFRvIHRlc3QgbWFudWFsbHksIGNvcHkgdGhlIHNlbGVjdGlvbiBhbmQgcGFzdGUgaXQg
aW50bwordGhlIGJsdWUgYm94LiAgSWYgdGhpcyBpcyBhIGZpbGU6Ly8vIHVybCwgdGhlIGxpbmtz
IHNob3VsZCBiZSByZWxhdGl2ZS4gIElmIHRoaXMgaXMgYW4KK2h0dHA6Ly8gdXJsLCB0aGUgbGlu
a3Mgc2hvdWxkIGJlIGFic29sdXRlLjwvcD4KKzxkaXYgaWQ9InRlc3QiPgorPGEgaHJlZj0iLi4v
cmVsYXRpdmUvcGF0aC9mb28uaHRtbCI+bGluazwvYT48aW1nIHNyYz0icmVzb3VyY2VzL2FiZS5w
bmciPgorPC9kaXY+Cis8ZGl2IGlkPSJwYXN0ZWhlcmUiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIg
c3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsdWUiIG9ucGFzdGU9InBhc3RlKCkiPgorPC9kaXY+
Cis8ZGl2IGlkPSJyZXN1bHRzIj48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICB2YXIgcyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICB2YXIgdGVzdCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisgICAgcy5zZWxlY3RBbGxDaGlsZHJlbih0ZXN0
KTsKKworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICByZXR1
cm47CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5k
KCJDb3B5Iik7CisgICAgdmFyIHBhc3RlSGVyZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJw
YXN0ZWhlcmUiKTsKKyAgICBzLnNldFBvc2l0aW9uKHBhc3RlSGVyZSwgMCk7CisgICAgZG9jdW1l
bnQuZXhlY0NvbW1hbmQoIlBhc3RlIik7Cit9CisKK2Z1bmN0aW9uIHBhc3RlKCkKK3sKKyAgICBz
ZXRUaW1lb3V0KGFmdGVyUGFzdGUsIDApOworfQorCitmdW5jdGlvbiBhZnRlclBhc3RlKCkKK3sK
KyAgICB2YXIgcGFzdGVIZXJlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhc3RlaGVyZSIp
OworICAgIHZhciByZXN1bHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMiKTsK
KyAgICByZXN1bHRzLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHBhc3RlSGVy
ZS5pbm5lckhUTUwpKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK3Rlc3QoKTsKKzwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3Rl
LW5vc2NyaXB0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9w
YXN0ZS1ub3NjcmlwdC1leHBlY3RlZC50eHQKaW5kZXggZWE0ODhjMDFiZThlMDE1OTZkOTgxM2M5
ZGJjMjk4ZmIzNTVkZmUyNS4uMzA0MmJmOTdmZTI4ZWI1ZmViZmQ1MDY0ODQzYjE5MzhhYjlhNTRl
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLW5vc2Ny
aXB0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtbm9zY3JpcHQtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDE6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBzYXlIZWxsbwog
VGhpcyB0ZXN0IGNvcGllcyBhbGwgdGhlIGVsZW1lbnRzIGNvbnRhaW5pbmcgZXZlbnQgaGFuZGxl
cnMgYW5kIGphdmFzY3JpcHQgdXJscywgcGFzdGVzIHRoZW0gaW4gYW4gZWRpdGFibGUgYXJlYSBh
bmQgdmVyaWZpZXMgdGhhdCBubyBzY3JpcHQsIGhhbmRsZXJzIG9yIGphdmFzY3JpcHQgdXJscyBh
cmUgY29waWVkLgogSGVsbG8gCiBDTk4gSGVsbG8gCkBAIC0xMCwxMSArOSwxMSBAQCBUaGlzIGlz
IGEgZm9ybQogCiA8YnV0dG9uIGlkPSJidXR0b24xIiBvbmNsaWNrPSJzYXlIZWxsbygpIiBvbmRi
bGNsaWNrPSJzYXlIZWxsbygpIiBzdHlsZT0id2lkdGg6IDEwMHB4OyI+SGVsbG88L2J1dHRvbj4K
IDxidXR0b24gaWQ9ImJ1dHRvbjEiIHN0eWxlPSJ3aWR0aDogMTAwcHg7ICI+SGVsbG88L2J1dHRv
bj4KLTxhIGlkPSJhbmNob3IxIiBocmVmPSJodHRwOi8vd3d3LmNubi5jb20iPkNOTjwvYT4KLTxh
IGlkPSJhbmNob3IxIiBocmVmPSJodHRwOi8vd3d3LmNubi5jb20iPkNOTjwvYT4KKzxhIGlkPSJh
bmNob3IxIiBocmVmPSJodHRwOi8vd3d3LmNubi5jb20vIj5DTk48L2E+Cis8YSBpZD0iYW5jaG9y
MSIgaHJlZj0iaHR0cDovL3d3dy5jbm4uY29tLyI+Q05OPC9hPgogPGEgaWQ9ImFuY2hvcjIiIGhy
ZWY9ImphdmFzY3JpcHQ6c2F5SGVsbG8oKSI+SGVsbG88L2E+CiA8YSBpZD0iYW5jaG9yMiIgaHJl
Zj0iIj5IZWxsbzwvYT4KLTxpZnJhbWUgaWQ9ImlmcmFtZTEiIHNyYz0iamF2YXNjcmlwdDpzYXlI
ZWxsbygpIiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kLWNv
bG9yOiNjZWU7Ij48L2lmcmFtZT4KKzxpZnJhbWUgaWQ9ImlmcmFtZTEiIHNyYz0iamF2YXNjcmlw
dDp2YXIgeCA9IDE7IiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOiNjZWU7Ij48L2lmcmFtZT4KIDxpZnJhbWUgaWQ9ImlmcmFtZTEiIHNyYz0iIiBz
dHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io
MjA0LCAyMzgsIDIzOCk7ICI+PC9pZnJhbWU+CiA8Zm9ybSBpZD0iZm9ybTEiIGFjdGlvbj0iamF2
YXNjcmlwdDpzYXlIZWxsbygpIiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDE1MHB4OyBi
YWNrZ3JvdW5kLWNvbG9yOiNjZWU7Ij5UaGlzIGlzIGEgZm9ybTxicj48aW1nIHNyYz0iLi4vcmVz
b3VyY2VzL2FiZS5wbmciPjwvZm9ybT4KIDxmb3JtIGlkPSJmb3JtMSIgYWN0aW9uPSIiIHN0eWxl
PSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMTUwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMDQs
IDIzOCwgMjM4KTsgIj5UaGlzIGlzIGEgZm9ybTxicj48aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2Fi
ZS5wbmciPjwvZm9ybT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9wYXN0ZS1ub3NjcmlwdC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLW5vc2NyaXB0Lmh0bWwKaW5kZXggNzA4MmM5NmEwZjQzZTUzN2VhZGZhYTYzMWIwYmRmN2E5
OTAwYTBiYS4uNzA2NTYwZDY3MzNlMDA4NTcyZDk2ZjZlZjFlMzlmZGJkMzRlOTMzNyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLW5vc2NyaXB0Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLW5vc2NyaXB0Lmh0bWwK
QEAgLTEzLDkgKzEzLDkgQEAgaW4gYW4gZWRpdGFibGUgYXJlYSBhbmQgdmVyaWZpZXMgdGhhdCBu
byBzY3JpcHQsIGhhbmRsZXJzIG9yIGphdmFzY3JpcHQgdXJscyBhcmUKIDxkaXYgaWQ9InRlc3Qi
ID4KIDxidXR0b24gaWQ9ImJ1dHRvbjEiIG9uY2xpY2s9InNheUhlbGxvKCkiIG9uZGJsY2xpY2s9
InNheUhlbGxvKCkiIHN0eWxlPSJ3aWR0aDogMTAwcHg7Ij5IZWxsbzwvYnV0dG9uPgogPGJyPgot
PGEgaWQ9ImFuY2hvcjEiIGhyZWY9Imh0dHA6Ly93d3cuY25uLmNvbSI+Q05OPC9hPgorPGEgaWQ9
ImFuY2hvcjEiIGhyZWY9Imh0dHA6Ly93d3cuY25uLmNvbS8iPkNOTjwvYT4KIDxhIGlkPSJhbmNo
b3IyIiBocmVmPSJqYXZhc2NyaXB0OnNheUhlbGxvKCkiPkhlbGxvPC9hPgotPGlmcmFtZSBpZD0i
aWZyYW1lMSIgc3JjPSJqYXZhc2NyaXB0OnNheUhlbGxvKCkiIHN0eWxlPSJ3aWR0aDogMjAwcHg7
IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6I2NlZTsiPjwvaWZyYW1lPgorPGlmcmFt
ZSBpZD0iaWZyYW1lMSIgc3JjPSJqYXZhc2NyaXB0OnZhciB4ID0gMTsiIHN0eWxlPSJ3aWR0aDog
MjAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6I2NlZTsiPjwvaWZyYW1lPgog
PGZvcm0gaWQ9ImZvcm0xIiBhY3Rpb249ImphdmFzY3JpcHQ6c2F5SGVsbG8oKSIgc3R5bGU9Indp
ZHRoOiAyMDBweDsgaGVpZ2h0OiAxNTBweDsgYmFja2dyb3VuZC1jb2xvcjojY2VlOyI+VGhpcyBp
cyBhIGZvcm08YnI+PGltZyBzcmM9Ii4uL3Jlc291cmNlcy9hYmUucG5nIj48L2ltZz48L2Zvcm0+
CiA8L2Rpdj4KIDxkaXYgaWQ9InBhc3RlaGVyZSIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jb3B5LXJlc29sdmVzLXVybHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NvcHktcmVzb2x2ZXMt
dXJscy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY4OTdmMmM4MWEwNzU0ZTZhNmE5NGEyMjg1
MzIxZWY5NjQwMTI1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWlzYy9jb3B5LXJlc29sdmVzLXVybHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhp
cyB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCBjb3B5aW5nL3Bhc3RpbmcgSFRNTCByZXN1bHRzIGlu
IFVSTHMgYmVpbmcgZnVsbCBwYXRocyBzbyBwYXN0aW5nIGJldHdlZW4gd2Vic2l0ZXMgd29ya3Mu
IFRvIHRlc3QgbWFudWFsbHksIGNvcHkgdGhlIHNlbGVjdGlvbiBhbmQgcGFzdGUgaXQgaW50byB0
aGUgYmx1ZSBib3guIElmIHRoaXMgaXMgYSBmaWxlOi8vLyB1cmwsIHRoZSBsaW5rcyBzaG91bGQg
YmUgcmVsYXRpdmUuIElmIHRoaXMgaXMgYW4gaHR0cDovLyB1cmwsIHRoZSBsaW5rcyBzaG91bGQg
YmUgYWJzb2x1dGUuCisKK2xpbmsKK2xpbmsKKzxhIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9yZWxhdGl2ZS9wYXRoL2Zvby5odG1sIj5saW5rPC9hPjxpbWcgc3JjPSJodHRwOi8vMTI3LjAu
MC4xOjgwMDAvbWlzYy9yZXNvdXJjZXMvY29tcGFzcy5qcGciPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NvcHktcmVzb2x2ZXMtdXJscy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9taXNjL2NvcHktcmVzb2x2ZXMtdXJscy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3
YWY2MzQzMTFmYjQ1MmIyMWQwMmIwOWY1ZGY3ZGM3ZjNhMzA2ZGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY29weS1yZXNvbHZlcy11cmxzLmh0bWwKQEAg
LTAsMCArMSw1NCBAQAorPHA+VGhpcyB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCBjb3B5aW5nL3Bh
c3RpbmcgSFRNTCByZXN1bHRzIGluIFVSTHMgYmVpbmcgZnVsbCBwYXRocyBzbworcGFzdGluZyBi
ZXR3ZWVuIHdlYnNpdGVzIHdvcmtzLiAgVG8gdGVzdCBtYW51YWxseSwgY29weSB0aGUgc2VsZWN0
aW9uIGFuZCBwYXN0ZSBpdCBpbnRvCit0aGUgYmx1ZSBib3guICBJZiB0aGlzIGlzIGEgZmlsZTov
Ly8gdXJsLCB0aGUgbGlua3Mgc2hvdWxkIGJlIHJlbGF0aXZlLiAgSWYgdGhpcyBpcyBhbgoraHR0
cDovLyB1cmwsIHRoZSBsaW5rcyBzaG91bGQgYmUgYWJzb2x1dGUuPC9wPgorPGRpdiBpZD0idGVz
dCI+Cis8YSBocmVmPSIuLi9yZWxhdGl2ZS9wYXRoL2Zvby5odG1sIj5saW5rPC9hPjxpbWcgc3Jj
PSJyZXNvdXJjZXMvY29tcGFzcy5qcGciPgorPC9kaXY+Cis8ZGl2IGlkPSJwYXN0ZWhlcmUiIGNv
bnRlbnRlZGl0YWJsZT0idHJ1ZSIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsdWUiIG9ucGFz
dGU9InBhc3RlKCkiPgorPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHRzIj48L2Rpdj4KKzxzY3JpcHQ+
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgcyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsK
KyAgICB2YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisgICAgcy5z
ZWxlY3RBbGxDaGlsZHJlbih0ZXN0KTsKKworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICByZXR1cm47CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworICAg
IGRvY3VtZW50LmV4ZWNDb21tYW5kKCJDb3B5Iik7CisgICAgLy8gSXQgbG9va3MgbGlrZSBvbiBh
IG1hYywgVVJMcyBhcmUgcmVzb2x2ZWQgb25seSBpZiB0aGUgcGFnZSB3ZSdyZSBwYXN0aW5nCisg
ICAgLy8gaW50byBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgcGFnZSB3ZSBjb3BpZWQgZnJvbS4KKyAg
ICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9taXNjL2Nv
cHktcmVzb2x2ZXMtdXJscy5odG1sP3Bhc3RlIjsKK30KKworZnVuY3Rpb24gZG9QYXN0ZSgpCit7
CisgICAgdmFyIHBhc3RlSGVyZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXN0ZWhlcmUi
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24ocGFzdGVIZXJlLCAwKTsK
KyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiUGFzdGUiKTsKK30KKworZnVuY3Rpb24gcGFzdGUo
KQoreworICAgIHNldFRpbWVvdXQoYWZ0ZXJQYXN0ZSwgMCk7Cit9CisKK2Z1bmN0aW9uIGFmdGVy
UGFzdGUoKQoreworICAgIHZhciBwYXN0ZUhlcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cGFzdGVoZXJlIik7CisgICAgdmFyIHJlc3VsdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzdWx0cyIpOworICAgIHJlc3VsdHMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUocGFzdGVIZXJlLmlubmVySFRNTCkpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwor
aWYgKGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaCA9PSAiP3Bhc3RlIikKKyAgICBkb1Bhc3RlKCk7
CitlbHNlCisgICAgdGVzdCgpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS1tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLW5vc2NyaXB0LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9lZGl0aW5nL3Bh
c3RlYm9hcmQvcGFzdGUtbm9zY3JpcHQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhNjA5OWI4NDM5MmMxNTIzOGM3ZGE1OTVkMDgwYWM2ZmVhOGY4MDMyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtLW1hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbm9zY3JpcHQtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDE6IFVuY2F1Z2h0IFJlZmVyZW5jZUVycm9yOiBzYXlIZWxsbyBpcyBub3QgZGVmaW5l
ZAotVGhpcyB0ZXN0IGNvcGllcyBhbGwgdGhlIGVsZW1lbnRzIGNvbnRhaW5pbmcgZXZlbnQgaGFu
ZGxlcnMgYW5kIGphdmFzY3JpcHQgdXJscywgcGFzdGVzIHRoZW0gaW4gYW4gZWRpdGFibGUgYXJl
YSBhbmQgdmVyaWZpZXMgdGhhdCBubyBzY3JpcHQsIGhhbmRsZXJzIG9yIGphdmFzY3JpcHQgdXJs
cyBhcmUgY29waWVkLgotSGVsbG8gCi1DTk4gSGVsbG8gCi1UaGlzIGlzIGEgZm9ybQotCi1IZWxs
b8KgCi1DTk7CoEhlbGxvwqAKLVRoaXMgaXMgYSBmb3JtCi0KLTxidXR0b24gaWQ9ImJ1dHRvbjEi
IG9uY2xpY2s9InNheUhlbGxvKCkiIG9uZGJsY2xpY2s9InNheUhlbGxvKCkiIHN0eWxlPSJ3aWR0
aDogMTAwcHg7Ij5IZWxsbzwvYnV0dG9uPgotPGJ1dHRvbiBpZD0iYnV0dG9uMSIgc3R5bGU9Indp
ZHRoOiAxMDBweDsgIj5IZWxsbzwvYnV0dG9uPgotPGEgaWQ9ImFuY2hvcjEiIGhyZWY9Imh0dHA6
Ly93d3cuY25uLmNvbSI+Q05OPC9hPgotPGEgaWQ9ImFuY2hvcjEiIGhyZWY9Imh0dHA6Ly93d3cu
Y25uLmNvbSI+Q05OPC9hPgotPGEgaWQ9ImFuY2hvcjIiIGhyZWY9ImphdmFzY3JpcHQ6c2F5SGVs
bG8oKSI+SGVsbG88L2E+Ci08YSBpZD0iYW5jaG9yMiIgaHJlZj0iIj5IZWxsbzwvYT4KLTxpZnJh
bWUgaWQ9ImlmcmFtZTEiIHNyYz0iamF2YXNjcmlwdDpzYXlIZWxsbygpIiBzdHlsZT0id2lkdGg6
IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNjZWU7Ij48L2lmcmFtZT4K
LTxpZnJhbWUgaWQ9ImlmcmFtZTEiIHNyYz0iIiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6
IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjA0LCAyMzgsIDIzOCk7ICI+PC9pZnJhbWU+
Ci08Zm9ybSBpZD0iZm9ybTEiIGFjdGlvbj0iamF2YXNjcmlwdDpzYXlIZWxsbygpIiBzdHlsZT0i
d2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDE1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNjZWU7Ij5UaGlz
IGlzIGEgZm9ybTxicj48aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2FiZS5wbmciPjwvZm9ybT4KLTxm
b3JtIGlkPSJmb3JtMSIgYWN0aW9uPSIiIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMTUw
cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMDQsIDIzOCwgMjM4KTsgIj5UaGlzIGlzIGEgZm9y
bTxicj48aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2FiZS5wbmciPjwvZm9ybT4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtbm9zY3JpcHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0t
d2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ub3NjcmlwdC1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2MDk5Yjg0MzkyYzE1MjM4YzdkYTU5NWQwODBhYzZm
ZWE4ZjgwMzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0
ZS1ub3NjcmlwdC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1D
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5jYXVnaHQgUmVmZXJlbmNlRXJyb3I6IHNheUhlbGxv
IGlzIG5vdCBkZWZpbmVkCi1UaGlzIHRlc3QgY29waWVzIGFsbCB0aGUgZWxlbWVudHMgY29udGFp
bmluZyBldmVudCBoYW5kbGVycyBhbmQgamF2YXNjcmlwdCB1cmxzLCBwYXN0ZXMgdGhlbSBpbiBh
biBlZGl0YWJsZSBhcmVhIGFuZCB2ZXJpZmllcyB0aGF0IG5vIHNjcmlwdCwgaGFuZGxlcnMgb3Ig
amF2YXNjcmlwdCB1cmxzIGFyZSBjb3BpZWQuCi1IZWxsbyAKLUNOTiBIZWxsbyAKLVRoaXMgaXMg
YSBmb3JtCi0KLUhlbGxvwqAKLUNOTsKgSGVsbG/CoAotVGhpcyBpcyBhIGZvcm0KLQotPGJ1dHRv
biBpZD0iYnV0dG9uMSIgb25jbGljaz0ic2F5SGVsbG8oKSIgb25kYmxjbGljaz0ic2F5SGVsbG8o
KSIgc3R5bGU9IndpZHRoOiAxMDBweDsiPkhlbGxvPC9idXR0b24+Ci08YnV0dG9uIGlkPSJidXR0
b24xIiBzdHlsZT0id2lkdGg6IDEwMHB4OyAiPkhlbGxvPC9idXR0b24+Ci08YSBpZD0iYW5jaG9y
MSIgaHJlZj0iaHR0cDovL3d3dy5jbm4uY29tIj5DTk48L2E+Ci08YSBpZD0iYW5jaG9yMSIgaHJl
Zj0iaHR0cDovL3d3dy5jbm4uY29tIj5DTk48L2E+Ci08YSBpZD0iYW5jaG9yMiIgaHJlZj0iamF2
YXNjcmlwdDpzYXlIZWxsbygpIj5IZWxsbzwvYT4KLTxhIGlkPSJhbmNob3IyIiBocmVmPSIiPkhl
bGxvPC9hPgotPGlmcmFtZSBpZD0iaWZyYW1lMSIgc3JjPSJqYXZhc2NyaXB0OnNheUhlbGxvKCki
IHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6I2Nl
ZTsiPjwvaWZyYW1lPgotPGlmcmFtZSBpZD0iaWZyYW1lMSIgc3JjPSIiIHN0eWxlPSJ3aWR0aDog
MjAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMDQsIDIzOCwgMjM4
KTsgIj48L2lmcmFtZT4KLTxmb3JtIGlkPSJmb3JtMSIgYWN0aW9uPSJqYXZhc2NyaXB0OnNheUhl
bGxvKCkiIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMTUwcHg7IGJhY2tncm91bmQtY29s
b3I6I2NlZTsiPlRoaXMgaXMgYSBmb3JtPGJyPjxpbWcgc3JjPSIuLi9yZXNvdXJjZXMvYWJlLnBu
ZyI+PC9mb3JtPgotPGZvcm0gaWQ9ImZvcm0xIiBhY3Rpb249IiIgc3R5bGU9IndpZHRoOiAyMDBw
eDsgaGVpZ2h0OiAxNTBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIwNCwgMjM4LCAyMzgpOyAi
PlRoaXMgaXMgYSBmb3JtPGJyPjxpbWcgc3JjPSIuLi9yZXNvdXJjZXMvYWJlLnBuZyI+PC9mb3Jt
PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAwZTBkZjA2MWIxNTRlNTE3NGZjMThiOWJmNTMyNmJlMjI4YzQ1ZGI1Li4zMTcyNjE0OTM0Mjhj
MjAzMWYzZDNlMmE5MzIxOWEzMzUwZTk2OTlmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDEwLTA2LTEzICBU
b255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgcmVzb2x2ZSB1cmxzIGluIHRleHQvaHRtbCBjbGlwYm9h
cmQgZGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDAwNDQKKworICAgICAgICBBbGxvdyB0ZXh0L2h0bWwgZGF0YSBjb3BpZWQgZnJvbSBhIHBhZ2Ug
dG8gY29udGFpbiBmdWxsIFVSTHMgd2hlbgorICAgICAgICBkcmFnZ2luZyBvciBjb3B5L3Bhc3Rp
bmcuCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXJlc29sdmVzLXVy
bHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9taXNjL2NvcHktcmVzb2x2ZXMtdXJs
cy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmJhc2UuZXhwOgorICAgICAgICAqIGVkaXRpbmcv
bWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFN0YXJ0TWFya3VwKToKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFN0YXJ0TWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFj
Y3VtdWxhdG9yOjphcHBlbmRNYXJrdXApOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3Vw
KToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6d3JpdGVSYW5nZSk6CisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ2xp
cGJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6d3JpdGVSYW5n
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YU9iamVjdEd0azo6bWFya3VwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
UGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNl
bGVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vaGFpa3UvUGFzdGVib2FyZEhhaWt1LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRRdDo6d3JpdGVSYW5nZSk6CisgICAgICAgICogcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKToKKworMjAx
MC0wNi0xMyAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIEJ1aWxk
IGZpeCwgbm90IHJldmlld2VkLgogCiAgICAgICAgIGZpeCBjaHJvbWl1bSBjb21waWxlIGFmdGVy
IHI2MTA5NCAoaWQgYXR0cmlidXRlIHJlZmFjdG9yKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLmJhc2UuZXhwIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCmluZGV4IDI5NzA0ZmI0NTQ5
ODM2MDVmMjczY2MxYTZkNTc1Mzk1NTA0YTU2MWYuLjBjZWMwMGI1YWI2NTg4YTBlMTc1MzMwNTZk
ZjA1OTMwMDUwNWYyMmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAorKysg
Yi9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKQEAgLTI2Nyw4ICsyNjcsOCBAQCBfX1pON1dlYkNv
cmUxMlRleHRJdGVyYXRvckMxRVBLTlNfNVJhbmdlRU5TXzIwVGV4dEl0ZXJhdG9yQmVoYXZpb3JF
CiBfX1pON1dlYkNvcmUxMldvcmtlclRocmVhZDE3d29ya2VyVGhyZWFkQ291bnRFdgogX19aTjdX
ZWJDb3JlMTJhcHBseUNvbW1hbmRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTFFZGl0Q29tbWFuZEVF
RQogX19aTjdXZWJDb3JlMTJjYWNoZVN0b3JhZ2VFdgotX19aTjdXZWJDb3JlMTJjcmVhdGVNYXJr
dXBFUEtOU180Tm9kZUVOU18xM0VDaGlsZHJlbk9ubHlFUE4zV1RGNlZlY3RvcklQUzBfTG0wRUVF
Ci1fX1pON1dlYkNvcmUxMmNyZWF0ZU1hcmt1cEVQS05TXzVSYW5nZUVQTjNXVEY2VmVjdG9ySVBO
U180Tm9kZUVMbTBFRUVOU18yM0VBbm5vdGF0ZUZvckludGVyY2hhbmdlRWIKK19fWk43V2ViQ29y
ZTEyY3JlYXRlTWFya3VwRVBLTlNfNE5vZGVFTlNfMTNFQ2hpbGRyZW5Pbmx5RVBOM1dURjZWZWN0
b3JJUFMwX0xtMEVFRU5TXzEzRUFic29sdXRlVVJMc0UKK19fWk43V2ViQ29yZTEyY3JlYXRlTWFy
a3VwRVBLTlNfNVJhbmdlRVBOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRU5TXzIzRUFubm90
YXRlRm9ySW50ZXJjaGFuZ2VFYk5TXzEzRUFic29sdXRlVVJMc0UKIF9fWk43V2ViQ29yZTEyZ2ND
b250cm9sbGVyRXYKIF9fWk43V2ViQ29yZTEyaWNvbkRhdGFiYXNlRXYKIF9fWk43V2ViQ29yZTEz
QVhPYmplY3RDYWNoZTExZ2V0T3JDcmVhdGVFUE5TXzEyUmVuZGVyT2JqZWN0RQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cAppbmRleCAxN2Y1NjgwMGQ4YTljNDUzNDM0Y2RhYjE1Nzg3NzYxZjA2OGZlMmFjLi5kY2I1M2Q2
ZTA0YmZlNzBhMjExOWE4MmI1YTY4ZjAxNzNkZGI5NTIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMzky
LDcgKzM5Miw3IEBAIHN0YXRpYyB2b2lkIHJlbW92ZUV4dGVyaW9yU3R5bGVzKENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uKiBzdHlsZSkKIAogZW51bSBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgeyBE
b2VzRnVsbHlTZWxlY3ROb2RlLCBEb2VzTm90RnVsbHlTZWxlY3ROb2RlIH07CiAKLXN0YXRpYyB2
b2lkIGFwcGVuZFN0YXJ0TWFya3VwKFZlY3RvcjxVQ2hhcj4mIHJlc3VsdCwgY29uc3QgTm9kZSog
bm9kZSwgY29uc3QgUmFuZ2UqIHJhbmdlLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBhbm5vdGF0
ZSwgYm9vbCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzID0gZmFsc2UsIEhhc2hNYXA8QXRvbWljU3Ry
aW5nSW1wbCosIEF0b21pY1N0cmluZ0ltcGwqPiogbmFtZXNwYWNlcyA9IDAsIFJhbmdlRnVsbHlT
ZWxlY3RzTm9kZSByYW5nZUZ1bGx5U2VsZWN0c05vZGUgPSBEb2VzRnVsbHlTZWxlY3ROb2RlKQor
c3RhdGljIHZvaWQgYXBwZW5kU3RhcnRNYXJrdXAoVmVjdG9yPFVDaGFyPiYgcmVzdWx0LCBjb25z
dCBOb2RlKiBub2RlLCBjb25zdCBSYW5nZSogcmFuZ2UsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdl
IGFubm90YXRlLCBFQWJzb2x1dGVVUkxzIGFic29sdXRlVVJMcywgYm9vbCBjb252ZXJ0QmxvY2tz
VG9JbmxpbmVzLCBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBBdG9taWNTdHJpbmdJbXBsKj4q
IG5hbWVzcGFjZXMsIFJhbmdlRnVsbHlTZWxlY3RzTm9kZSByYW5nZUZ1bGx5U2VsZWN0c05vZGUg
PSBEb2VzRnVsbHlTZWxlY3ROb2RlKQogewogICAgIGlmIChuYW1lc3BhY2VzKQogICAgICAgICBu
YW1lc3BhY2VzLT5jaGVja0NvbnNpc3RlbmN5KCk7CkBAIC00NjgsOSArNDY4LDE0IEBAIHN0YXRp
YyB2b2lkIGFwcGVuZFN0YXJ0TWFya3VwKFZlY3RvcjxVQ2hhcj4mIHJlc3VsdCwgY29uc3QgTm9k
ZSogbm9kZSwgY29uc3QgUmFuCiAKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCc9Jyk7
CiAKLSAgICAgICAgICAgICAgICBpZiAoZWwtPmlzVVJMQXR0cmlidXRlKGF0dHIpKQotICAgICAg
ICAgICAgICAgICAgICBhcHBlbmRRdW90ZWRVUkxBdHRyaWJ1dGVWYWx1ZShyZXN1bHQsIGF0dHIt
PnZhbHVlKCkpOwotICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChl
bC0+aXNVUkxBdHRyaWJ1dGUoYXR0cikpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9u
J3Qgd2FudCB0byBjb21wbGV0ZSBmaWxlOi8vLyBVUkxzIGJlY2F1c2UgaXQgbWF5IGNvbnRhaW4g
c2Vuc2l0aXZlIGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgICAgIC8vIGFib3V0IHRoZSB1
c2VyJ3Mgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBpZiAoYWJzb2x1dGVVUkxzID09IEFi
c29sdXRlVVJMcyAmJiAhbm9kZS0+ZG9jdW1lbnQoKS0+dXJsKCkuaXNMb2NhbEZpbGUoKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFF1b3RlZFVSTEF0dHJpYnV0ZVZhbHVlKHJlc3Vs
dCwgbm9kZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoYXR0ci0+dmFsdWUoKSkuc3RyaW5nKCkp
OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBhcHBl
bmRRdW90ZWRVUkxBdHRyaWJ1dGVWYWx1ZShyZXN1bHQsIGF0dHItPnZhbHVlKCkuc3RyaW5nKCkp
OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJ1wiJyk7CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKHJl
c3VsdCwgYXR0ci0+dmFsdWUoKSwgZG9jdW1lbnRJc0hUTUwpOwogICAgICAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCdcIicpOwpAQCAtNTUwLDEwICs1NTUsMTAgQEAgc3RhdGljIHZvaWQg
YXBwZW5kU3RhcnRNYXJrdXAoVmVjdG9yPFVDaGFyPiYgcmVzdWx0LCBjb25zdCBOb2RlKiBub2Rl
LCBjb25zdCBSYW4KICAgICB9CiB9CiAKLXN0YXRpYyBTdHJpbmcgZ2V0U3RhcnRNYXJrdXAoY29u
c3QgTm9kZSogbm9kZSwgY29uc3QgUmFuZ2UqIHJhbmdlLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5n
ZSBhbm5vdGF0ZSwgYm9vbCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzID0gZmFsc2UsIEhhc2hNYXA8
QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmluZ0ltcGwqPiogbmFtZXNwYWNlcyA9IDAsIFJh
bmdlRnVsbHlTZWxlY3RzTm9kZSByYW5nZUZ1bGx5U2VsZWN0c05vZGUgPSBEb2VzRnVsbHlTZWxl
Y3ROb2RlKQorc3RhdGljIFN0cmluZyBnZXRTdGFydE1hcmt1cChjb25zdCBOb2RlKiBub2RlLCBj
b25zdCBSYW5nZSogcmFuZ2UsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlIGFubm90YXRlLCBFQWJz
b2x1dGVVUkxzIGFic29sdXRlVVJMcywgYm9vbCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzID0gZmFs
c2UsIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmluZ0ltcGwqPiogbmFtZXNw
YWNlcyA9IDAsIFJhbmdlRnVsbHlTZWxlY3RzTm9kZSByYW5nZUZ1bGx5U2VsZWN0c05vZGUgPSBE
b2VzRnVsbHlTZWxlY3ROb2RlKQogewogICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OwotICAgIGFw
cGVuZFN0YXJ0TWFya3VwKHJlc3VsdCwgbm9kZSwgcmFuZ2UsIGFubm90YXRlLCBjb252ZXJ0Qmxv
Y2tzVG9JbmxpbmVzLCBuYW1lc3BhY2VzLCByYW5nZUZ1bGx5U2VsZWN0c05vZGUpOworICAgIGFw
cGVuZFN0YXJ0TWFya3VwKHJlc3VsdCwgbm9kZSwgcmFuZ2UsIGFubm90YXRlLCBhYnNvbHV0ZVVS
THMsIGNvbnZlcnRCbG9ja3NUb0lubGluZXMsIG5hbWVzcGFjZXMsIHJhbmdlRnVsbHlTZWxlY3Rz
Tm9kZSk7CiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0KTsKIH0KIApAQCAtNjA4LDcg
KzYxMyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmRNYXJrdXAo
Tm9kZSogc3RhcnROb2RlLCBFQ2hpbGRyZW5Pbmx5LCBjb25zdCBIYXNoTWFwPEF0b21pY1N0cmlu
Z0ltcGwqLCBBdG9taWNTdHJpbmdJbXBsKj4qIG5hbWVzcGFjZXMgPSAwKTsKKyAgICB2b2lkIGFw
cGVuZE1hcmt1cChOb2RlKiBzdGFydE5vZGUsIEVDaGlsZHJlbk9ubHksIEVBYnNvbHV0ZVVSTHMs
IGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmluZ0ltcGwqPiogbmFt
ZXNwYWNlcyA9IDApOwogCiAgICAgU3RyaW5nIHRha2VSZXN1bHQoKSB7IHJldHVybiBTdHJpbmc6
OmFkb3B0KG1fcmVzdWx0KTsgfQogCkBAIC02MTksNyArNjI0LDcgQEAgcHJpdmF0ZToKIH07CiAK
IC8vIEZJWE1FOiBXb3VsZCBiZSBuaWNlIHRvIGRvIHRoaXMgaW4gYSBub24tcmVjdXJzaXZlIHdh
eS4KLXZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZE1hcmt1cChOb2RlKiBzdGFydE5vZGUs
IEVDaGlsZHJlbk9ubHkgY2hpbGRyZW5Pbmx5LCBjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZ0lt
cGwqLCBBdG9taWNTdHJpbmdJbXBsKj4qIG5hbWVzcGFjZXMpCit2b2lkIE1hcmt1cEFjY3VtdWxh
dG9yOjphcHBlbmRNYXJrdXAoTm9kZSogc3RhcnROb2RlLCBFQ2hpbGRyZW5Pbmx5IGNoaWxkcmVu
T25seSwgRUFic29sdXRlVVJMcyBhYnNvbHV0ZVVSTHMsIGNvbnN0IEhhc2hNYXA8QXRvbWljU3Ry
aW5nSW1wbCosIEF0b21pY1N0cmluZ0ltcGwqPiogbmFtZXNwYWNlcykKIHsKICAgICBpZiAoc3Rh
cnROb2RlID09IG1fbm9kZVRvU2tpcCkKICAgICAgICAgcmV0dXJuOwpAQCAtNjMyLDEzICs2Mzcs
MTMgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kTWFya3VwKE5vZGUqIHN0YXJ0Tm9k
ZSwgRUNoaWxkcmVuT25seSBjaGlsZHJlbk9ubHkKICAgICBpZiAoIWNoaWxkcmVuT25seSkgewog
ICAgICAgICBpZiAobV9ub2RlcykKICAgICAgICAgICAgIG1fbm9kZXMtPmFwcGVuZChzdGFydE5v
ZGUpOwotICAgICAgICBhcHBlbmRTdGFydE1hcmt1cChtX3Jlc3VsdCwgc3RhcnROb2RlLCAwLCBE
b05vdEFubm90YXRlRm9ySW50ZXJjaGFuZ2UsIGZhbHNlLCAmbmFtZXNwYWNlSGFzaCk7CisgICAg
ICAgIGFwcGVuZFN0YXJ0TWFya3VwKG1fcmVzdWx0LCBzdGFydE5vZGUsIDAsIERvTm90QW5ub3Rh
dGVGb3JJbnRlcmNoYW5nZSwgYWJzb2x1dGVVUkxzLCBmYWxzZSwgJm5hbWVzcGFjZUhhc2gpOwog
ICAgIH0KIAogICAgIC8vIGNoaWxkcmVuCiAgICAgaWYgKCEoc3RhcnROb2RlLT5kb2N1bWVudCgp
LT5pc0hUTUxEb2N1bWVudCgpICYmIGRvZXNIVE1MRm9yYmlkRW5kVGFnKHN0YXJ0Tm9kZSkpKSB7
CiAgICAgICAgIGZvciAoTm9kZSogY3VycmVudCA9IHN0YXJ0Tm9kZS0+Zmlyc3RDaGlsZCgpOyBj
dXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgICAgIGFw
cGVuZE1hcmt1cChjdXJyZW50LCBJbmNsdWRlTm9kZSwgJm5hbWVzcGFjZUhhc2gpOworICAgICAg
ICAgICAgYXBwZW5kTWFya3VwKGN1cnJlbnQsIEluY2x1ZGVOb2RlLCBhYnNvbHV0ZVVSTHMsICZu
YW1lc3BhY2VIYXNoKTsKICAgICB9CiAKICAgICAvLyBlbmQgdGFnCkBAIC03ODksNyArNzk0LDcg
QEAgc3RhdGljIHZvaWQgYWRkU3R5bGVNYXJrdXAoVmVjdG9yPFN0cmluZz4mIHByZU1hcmt1cHMs
IFZlY3RvcjxTdHJpbmc+JiBwb3N0TWFya3UKIAogLy8gRklYTUU6IFNob3VsZG4ndCB3ZSBvbWl0
IHN0eWxlIGluZm8gd2hlbiBhbm5vdGF0ZSA9PSBEb05vdEFubm90YXRlRm9ySW50ZXJjaGFuZ2U/
IAogLy8gRklYTUU6IEF0IGxlYXN0LCBhbm5vdGF0aW9uIGFuZCBzdHlsZSBpbmZvIHNob3VsZCBw
cm9iYWJseSBub3QgYmUgaW5jbHVkZWQgaW4gcmFuZ2UubWFya3VwU3RyaW5nKCkKLVN0cmluZyBj
cmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCBWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFu
bm90YXRlRm9ySW50ZXJjaGFuZ2UgYW5ub3RhdGUsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5l
cykKK1N0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCBWZWN0b3I8Tm9kZSo+
KiBub2RlcywgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgYW5ub3RhdGUsIGJvb2wgY29udmVydEJs
b2Nrc1RvSW5saW5lcywgRUFic29sdXRlVVJMcyBhYnNvbHV0ZVVSTHMpCiB7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGludGVyY2hhbmdlTmV3bGluZVN0cmluZywgKCI8
YnIgY2xhc3M9XCIiIEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lICJcIj4iKSk7CiAKQEAgLTg3OCw3
ICs4ODMsNyBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgVmVjdG9y
PE5vZGUqPiogbm9kZXMsIEVBbm5vdGF0ZUZvckludGVyYwogICAgICAgICAKICAgICAgICAgLy8g
QWRkIHRoZSBub2RlIHRvIHRoZSBtYXJrdXAuCiAgICAgICAgIGlmIChhZGRNYXJrdXBGb3JOb2Rl
KSB7Ci0gICAgICAgICAgICBtYXJrdXBzLmFwcGVuZChnZXRTdGFydE1hcmt1cChuLCB1cGRhdGVk
UmFuZ2UuZ2V0KCksIGFubm90YXRlKSk7CisgICAgICAgICAgICBtYXJrdXBzLmFwcGVuZChnZXRT
dGFydE1hcmt1cChuLCB1cGRhdGVkUmFuZ2UuZ2V0KCksIGFubm90YXRlLCBhYnNvbHV0ZVVSTHMp
KTsKICAgICAgICAgICAgIGlmIChub2RlcykKICAgICAgICAgICAgICAgICBub2Rlcy0+YXBwZW5k
KG4pOwogICAgICAgICB9CkBAIC05MTUsNyArOTIwLDcgQEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChj
b25zdCBSYW5nZSogcmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBFQW5ub3RhdGVGb3JJbnRl
cmMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIG9yIGIpIGFuY2VzdG9ycyB0aGF0IHdlIG5ldmVyIGVuY291bnRlcmVkIGR1
cmluZyBhIHByZS1vcmRlciB0cmF2ZXJzYWwgc3RhcnRpbmcgYXQgc3RhcnROb2RlOgogICAgICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0YXJ0Tm9kZS0+aXNEZXNjZW5kYW50T2YocGFyZW50
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmVNYXJrdXBzLmFwcGVuZChnZXRTdGFydE1h
cmt1cChwYXJlbnQsIHVwZGF0ZWRSYW5nZS5nZXQoKSwgYW5ub3RhdGUpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHByZU1hcmt1cHMuYXBwZW5kKGdldFN0YXJ0TWFya3VwKHBhcmVudCwgdXBk
YXRlZFJhbmdlLmdldCgpLCBhbm5vdGF0ZSwgYWJzb2x1dGVVUkxzKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXJrdXBzLmFwcGVuZChnZXRFbmRNYXJrdXAocGFyZW50KSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobm9kZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZXMtPmFwcGVuZChwYXJlbnQpOwpAQCAtMTAwMSw3ICsxMDA2LDcgQEAgU3RyaW5nIGNyZWF0
ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBFQW5ub3Rh
dGVGb3JJbnRlcmMKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gU2lu
Y2UgdGhpcyBub2RlIGFuZCBhbGwgdGhlIG90aGVyIGFuY2VzdG9ycyBhcmUgbm90IGluIHRoZSBz
ZWxlY3Rpb24gd2Ugd2FudCB0byBzZXQgUmFuZ2VGdWxseVNlbGVjdHNOb2RlIHRvIERvZXNOb3RG
dWxseVNlbGVjdE5vZGUKICAgICAgICAgICAgICAgICAvLyBzbyB0aGF0IHN0eWxlcyB0aGF0IGFm
ZmVjdCB0aGUgZXh0ZXJpb3Igb2YgdGhlIG5vZGUgYXJlIG5vdCBpbmNsdWRlZC4KLSAgICAgICAg
ICAgICAgICBwcmVNYXJrdXBzLmFwcGVuZChnZXRTdGFydE1hcmt1cChhbmNlc3RvciwgdXBkYXRl
ZFJhbmdlLmdldCgpLCBhbm5vdGF0ZSwgY29udmVydEJsb2Nrc1RvSW5saW5lcywgMCwgRG9lc05v
dEZ1bGx5U2VsZWN0Tm9kZSkpOworICAgICAgICAgICAgICAgIHByZU1hcmt1cHMuYXBwZW5kKGdl
dFN0YXJ0TWFya3VwKGFuY2VzdG9yLCB1cGRhdGVkUmFuZ2UuZ2V0KCksIGFubm90YXRlLCBhYnNv
bHV0ZVVSTHMsIGNvbnZlcnRCbG9ja3NUb0lubGluZXMsIDAsIERvZXNOb3RGdWxseVNlbGVjdE5v
ZGUpKTsKICAgICAgICAgICAgICAgICBtYXJrdXBzLmFwcGVuZChnZXRFbmRNYXJrdXAoYW5jZXN0
b3IpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChub2RlcykKQEAgLTEwNjcsNyAr
MTA3Miw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9t
TWFya3VwKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QKICAgICByZXR1cm4gZnJhZ21lbnQucmVs
ZWFzZSgpOwogfQogCi1TdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IE5vZGUqIG5vZGUsIEVDaGls
ZHJlbk9ubHkgY2hpbGRyZW5Pbmx5LCBWZWN0b3I8Tm9kZSo+KiBub2RlcykKK1N0cmluZyBjcmVh
dGVNYXJrdXAoY29uc3QgTm9kZSogbm9kZSwgRUNoaWxkcmVuT25seSBjaGlsZHJlbk9ubHksIFZl
Y3RvcjxOb2RlKj4qIG5vZGVzLCBFQWJzb2x1dGVVUkxzIGFic29sdXRlVVJMcykKIHsKICAgICBp
ZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiAiIjsKQEAgLTEwODAsNyArMTA4NSw3IEBAIFN0cmlu
ZyBjcmVhdGVNYXJrdXAoY29uc3QgTm9kZSogbm9kZSwgRUNoaWxkcmVuT25seSBjaGlsZHJlbk9u
bHksIFZlY3RvcjxOb2RlKj4qCiAgICAgfQogCiAgICAgTWFya3VwQWNjdW11bGF0b3IgYWNjdW11
bGF0b3IoZGVsZXRlQnV0dG9uQ29udGFpbmVyRWxlbWVudCwgbm9kZXMpOwotICAgIGFjY3VtdWxh
dG9yLmFwcGVuZE1hcmt1cChjb25zdF9jYXN0PE5vZGUqPihub2RlKSwgY2hpbGRyZW5Pbmx5KTsK
KyAgICBhY2N1bXVsYXRvci5hcHBlbmRNYXJrdXAoY29uc3RfY2FzdDxOb2RlKj4obm9kZSksIGNo
aWxkcmVuT25seSwgYWJzb2x1dGVVUkxzKTsKICAgICByZXR1cm4gYWNjdW11bGF0b3IudGFrZVJl
c3VsdCgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmggYi9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmgKaW5kZXggZGQzNDE1OTY4YmU0ODBkOTZkNTA0YzY0Mzc4YjNm
Y2M3OGZjZTZlNC4uZjY0ZmI2MWVjMmYzMjE4NzQzNTc0M2Q4NTBiOWM0NjQ2NzhjY2Y4NyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
U3RyaW5nOwogCiAgICAgZW51bSBFQ2hpbGRyZW5Pbmx5IHsgSW5jbHVkZU5vZGUsIENoaWxkcmVu
T25seSB9OworICAgIGVudW0gRUFic29sdXRlVVJMcyB7IERvTm90UmVzb2x2ZVVSTHMsIEFic29s
dXRlVVJMcyB9OwogCiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFn
bWVudEZyb21UZXh0KFJhbmdlKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpOwogICAgIFBh
c3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKERvY3Vt
ZW50KiwgY29uc3QgU3RyaW5nJiBtYXJrdXAsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgRnJhZ21l
bnRTY3JpcHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKQEAgLTQ5
LDggKzUwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGJvb2wgaXNQbGFpblRleHRNYXJr
dXAoTm9kZSAqbm9kZSk7CiAKICAgICBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiwK
LSAgICAgICAgVmVjdG9yPE5vZGUqPiogPSAwLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSA9IERv
Tm90QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSwgYm9vbCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzID0g
ZmFsc2UpOwotICAgIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgTm9kZSosIEVDaGlsZHJlbk9u
bHkgPSBJbmNsdWRlTm9kZSwgVmVjdG9yPE5vZGUqPiogPSAwKTsKKyAgICAgICAgVmVjdG9yPE5v
ZGUqPiogPSAwLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSA9IERvTm90QW5ub3RhdGVGb3JJbnRl
cmNoYW5nZSwgYm9vbCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzID0gZmFsc2UsIEVBYnNvbHV0ZVVS
THMgPSBEb05vdFJlc29sdmVVUkxzKTsKKyAgICBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IE5v
ZGUqLCBFQ2hpbGRyZW5Pbmx5ID0gSW5jbHVkZU5vZGUsIFZlY3RvcjxOb2RlKj4qID0gMCwgRUFi
c29sdXRlVVJMcyA9IERvTm90UmVzb2x2ZVVSTHMpOwogICAgIAogICAgIFN0cmluZyBjcmVhdGVG
dWxsTWFya3VwKGNvbnN0IE5vZGUqKTsKICAgICBTdHJpbmcgY3JlYXRlRnVsbE1hcmt1cChjb25z
dCBSYW5nZSopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9h
cmRDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9t
aXVtLmNwcAppbmRleCA3NTBmZjMwNWMxOGIxOWVkZDY5YjdlZjFiY2I5ZWQ0MDViNTY1YjBlLi4y
OWY5NjIwZGI2YmI3NjUzMjI1NWZlMDJjNjM1ZGI2MTViMjdlNTI3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcApAQCAtNTEyLDggKzUxMiw3
IEBAIHZvaWQgQ2xpcGJvYXJkQ2hyb21pdW06OndyaXRlUmFuZ2UoUmFuZ2UqIHNlbGVjdGVkUmFu
Z2UsIEZyYW1lKiBmcmFtZSkKICAgICBpZiAoIW1fZGF0YU9iamVjdCkKICAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fZGF0YU9iamVjdC0+dGV4dEh0bWwgPSBjcmVhdGVNYXJrdXAoc2VsZWN0ZWRS
YW5nZSwgMCwKLSAgICAgICAgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSk7CisgICAgbV9kYXRhT2Jq
ZWN0LT50ZXh0SHRtbCA9IGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZv
ckludGVyY2hhbmdlLCBmYWxzZSwgQWJzb2x1dGVVUkxzKTsKICAgICBtX2RhdGFPYmplY3QtPmh0
bWxCYXNlVXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogCiAgICAgU3RyaW5nIHN0ciA9
IGZyYW1lLT5zZWxlY3RlZFRleHQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UGFzdGVib2FyZENocm9taXVtLmNwcAppbmRleCAwNDU1NDgyMWZlMjc4MmVlYzVkMGFlZWQ5NmUw
ZThmZDQ3Yzk4NGUyLi41ODM3M2IxMjZiOTgxYmE4MzA5ZWVkZTk3MzAzNzRiYjM4ZmQwNzZjIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3Bw
CkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0U2VsZWN0aW9uTW9kZShib29s
IHNlbGVjdGlvbk1vZGUpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2Uq
IHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBmcmFtZSkK
IHsKLSAgICBTdHJpbmcgaHRtbCA9IGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5v
dGF0ZUZvckludGVyY2hhbmdlKTsKKyAgICBTdHJpbmcgaHRtbCA9IGNyZWF0ZU1hcmt1cChzZWxl
Y3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBmYWxzZSwgQWJzb2x1dGVVUkxz
KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBLVVJMIHVybCA9IHNlbGVjdGVkUmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKGVjKS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgU3RyaW5nIHBs
YWluVGV4dCA9IGZyYW1lLT5zZWxlY3RlZFRleHQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9h
cmRHdGsuY3BwCmluZGV4IGFkMWM2NjVlMThlYzk1NGJjMGRhNDE3YmJhYTBlNjEzNWQyYzBlZDAu
LmMyNzQzMDllOTI3MGU4MzI3ZTdmZjg5MWI0Yjg5NmRhMzEyMWQzNDkgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvQ2xpcGJvYXJkR3RrLmNwcApAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgQ2xpcGJvYXJk
R3RrOjp3cml0ZVJhbmdlKFJhbmdlKiByYW5nZSwgRnJhbWUqIGZyYW1lKQogICAgIEFTU0VSVChy
YW5nZSk7CiAKICAgICBtX2RhdGFPYmplY3QtPnNldFRleHQoZnJhbWUtPnNlbGVjdGVkVGV4dCgp
KTsKLSAgICBtX2RhdGFPYmplY3QtPnNldE1hcmt1cChjcmVhdGVNYXJrdXAocmFuZ2UsIDAsIEFu
bm90YXRlRm9ySW50ZXJjaGFuZ2UpKTsKKyAgICBtX2RhdGFPYmplY3QtPnNldE1hcmt1cChjcmVh
dGVNYXJrdXAocmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UsIGZhbHNlLCBBYnNvbHV0
ZVVSTHMpKTsKIAogICAgIGlmIChtX2NsaXBib2FyZCkKICAgICAgICAgbV9oZWxwZXItPndyaXRl
Q2xpcGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2Jq
ZWN0R3RrLmNwcAppbmRleCA1N2Q5MjBjZTlkYmMzYWY4ZGY2MjA5MGE3MTQwZDM4NDM2MzQzZWIz
Li44ODZkM2MxZjZjMmE3YTdhNmUwZWMwZWY3MTkyMTdjNWI4MjFiYzNhIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcApAQCAtNDEsNyArNDEsNyBAQCBTdHJpbmcgRGF0YU9i
amVjdEd0azo6dGV4dCgpCiBTdHJpbmcgRGF0YU9iamVjdEd0azo6bWFya3VwKCkKIHsKICAgICBp
ZiAobV9yYW5nZSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU1hcmt1cChtX3JhbmdlLmdldCgpLCAw
LCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU1hcmt1cCht
X3JhbmdlLmdldCgpLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBmYWxzZSwgQWJzb2x1dGVV
UkxzKTsKICAgICByZXR1cm4gbV9tYXJrdXA7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEd0ay5jcHAKaW5kZXggNTk5ZjdkYTAxZTcwMjc5ZDFkMTI0MTgxZWY5NGI1OWNlNDI0NDFk
Ni4uZDEzOWJkOWEzOWNjZDAzM2MwY2Y0N2MyMWMxNGQ2ZWUyNTNmNDI3ZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJv
YXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9vbCBjYW5TbWFydENv
cHlPckRlbGV0ZSwKICAgICBHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCA9IG1faGVscGVyLT5nZXRD
bGlwYm9hcmQoZnJhbWUpOwogICAgIERhdGFPYmplY3RHdGsqIGRhdGFPYmplY3QgPSBEYXRhT2Jq
ZWN0R3RrOjpmb3JDbGlwYm9hcmQoY2xpcGJvYXJkKTsKICAgICBkYXRhT2JqZWN0LT5zZXRUZXh0
KGZyYW1lLT5zZWxlY3RlZFRleHQoKSk7Ci0gICAgZGF0YU9iamVjdC0+c2V0TWFya3VwKGNyZWF0
ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKSk7CisgICAg
ZGF0YU9iamVjdC0+c2V0TWFya3VwKGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5v
dGF0ZUZvckludGVyY2hhbmdlLCBmYWxzZSwgQWJzb2x1dGVVUkxzKSk7CiAgICAgbV9oZWxwZXIt
PndyaXRlQ2xpcGJvYXJkQ29udGVudHMoY2xpcGJvYXJkKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9oYWlrdS9QYXN0ZWJvYXJkSGFpa3UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9oYWlrdS9QYXN0ZWJvYXJkSGFpa3UuY3BwCmluZGV4IGRlZmVjM2ZhNzY3MDk1NTI0YjczMzhj
YWYzMzI1ZWI0MTU0ODY5Y2QuLmQ3YTdlMDg5NGU2ZDIwYjc5NmFlMGQwZDVkYzlhYzUxNjg5ZGQ4
MjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvUGFzdGVib2FyZEhhaWt1LmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L1Bhc3RlYm9hcmRIYWlrdS5jcHAKQEAgLTEw
Miw3ICsxMDIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxl
Y3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLAogCiAgICAgZGF0YS0+QWRkRGF0
YSgidGV4dC9wbGFpbiIsIEJfTUlNRV9UWVBFLCBzdHJpbmcuU3RyaW5nKCksIHN0cmluZy5MZW5n
dGgoKSk7CiAKLSAgICBCU3RyaW5nIG1hcmt1cFN0cmluZyhjcmVhdGVNYXJrdXAoc2VsZWN0ZWRS
YW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSkpOworICAgIEJTdHJpbmcgbWFya3VwU3Ry
aW5nKGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdl
LCBmYWxzZSwgQWJzb2x1dGVVUkxzKSk7CiAgICAgZGF0YS0+QWRkRGF0YSgidGV4dC9odG1sIiwg
Ql9NSU1FX1RZUEUsIG1hcmt1cFN0cmluZy5TdHJpbmcoKSwgbWFya3VwU3RyaW5nLkxlbmd0aCgp
KTsKIAogICAgIGJlX2NsaXBib2FyZC0+Q29tbWl0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJk
UXQuY3BwCmluZGV4IGM5OGM3OWE1NTQ2ZjhkOTYzZDQzZmM3YTk0NGI5YTk5MDBkN2IxN2IuLjQ4
NWQwZDE4ZmNkMzZlZGJlMmFhYTQ5NTE3ZWE2Yzc3MDViMGVjYzAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQv
Q2xpcGJvYXJkUXQuY3BwCkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBDbGlwYm9hcmRRdDo6d3Jp
dGVSYW5nZShSYW5nZSogcmFuZ2UsIEZyYW1lKiBmcmFtZSkKICAgICBRU3RyaW5nIHRleHQgPSBm
cmFtZS0+c2VsZWN0ZWRUZXh0KCk7CiAgICAgdGV4dC5yZXBsYWNlKFFDaGFyKDB4YTApLCBRTGF0
aW4xQ2hhcignICcpKTsKICAgICBtX3dyaXRhYmxlRGF0YS0+c2V0VGV4dCh0ZXh0KTsKLSAgICBt
X3dyaXRhYmxlRGF0YS0+c2V0SHRtbChjcmVhdGVNYXJrdXAocmFuZ2UsIDAsIEFubm90YXRlRm9y
SW50ZXJjaGFuZ2UpKTsKKyAgICBtX3dyaXRhYmxlRGF0YS0+c2V0SHRtbChjcmVhdGVNYXJrdXAo
cmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UsIGZhbHNlLCBBYnNvbHV0ZVVSTHMpKTsK
ICNpZm5kZWYgUVRfTk9fQ0xJUEJPQVJECiAgICAgaWYgKCFpc0ZvckRyYWdnaW5nKCkpCiAgICAg
ICAgIFFBcHBsaWNhdGlvbjo6Y2xpcGJvYXJkKCktPnNldE1pbWVEYXRhKG1fd3JpdGFibGVEYXRh
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcAppbmRleCA4NmQyY2ZlZGEyY2FhMDc1
ZDQyYjJjNWU2ZTViMjc2NzMwN2E0ODQ1Li5lMWU2ZDg0MDE0ZjczZGI0OTAwM2MzNGNhZDU2MDRl
ZTJiNzk0NzZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCkBAIC02Niw3ICs2
Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFu
Z2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsCiAgICAgbWQtPnNldFRleHQodGV4dCk7CiAK
ICAgICBRU3RyaW5nIGh0bWwgPSBRTGF0aW4xU3RyaW5nKCI8aHRtbD48aGVhZD48bWV0YSBodHRw
LWVxdWl2PVwiQ29udGVudC1UeXBlXCIgY29udGVudD1cInRleHQvaHRtbDsgY2hhcnNldD11dGYt
OFwiIC8+PC9oZWFkPjxib2R5PiIpOwotICAgIGh0bWwgKz0gY3JlYXRlTWFya3VwKHNlbGVjdGVk
UmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UpOworICAgIGh0bWwgKz0gY3JlYXRlTWFy
a3VwKHNlbGVjdGVkUmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UsIGZhbHNlLCBBYnNv
bHV0ZVVSTHMpOwogICAgIGh0bWwgKz0gUUxhdGluMVN0cmluZygiPC9ib2R5PjwvaHRtbD4iKTsK
ICAgICBtZC0+c2V0SHRtbChodG1sKTsKIAo=
</data>
<flag name="review"
          id="44986"
          type_id="1"
          status="+"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>