<?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>62852</bug_id>
          
          <creation_ts>2011-06-17 03:19:10 -0700</creation_ts>
          <short_desc>cannot handle status codes which have no response body</short_desc>
          <delta_ts>2011-12-27 02:14:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Keunsoon Lee">keunsoon.lee</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>alex</cc>
    
    <cc>ap</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>robert</cc>
    
    <cc>sangseok.lim</cc>
    
    <cc>simonjam</cc>
    
    <cc>svillar</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>422526</commentid>
    <comment_count>0</comment_count>
    <who name="Keunsoon Lee">keunsoon.lee</who>
    <bug_when>2011-06-17 03:19:10 -0700</bug_when>
    <thetext>Hi,

This bug report is derived from https://bugs.webkit.org/show_bug.cgi?id=60875.

I found that FrameLoader tries to download if server or client error code without response body comes on EFL and GTK port.
But it seems all other ports have same problem.

So, I created a new thread to solve this problem for all ports and FrameLoader.

For solution, I simply called didFail() for such cases on soup port.
But, Robert Hogan and James Simonsen said didFail() is only for Network error and not for such status code error cases.

If so, we might need to create a new flow on Loader, because there is no way to handle this on Webkit.
And, each port might be hard to handle this within themselves.

What do you thing so?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424316</commentid>
    <comment_count>1</comment_count>
    <who name="Keunsoon Lee">keunsoon.lee</who>
    <bug_when>2011-06-21 00:13:30 -0700</bug_when>
    <thetext>Hi,

I still don&apos;t know what is the best way to handle this.
So, I researched several browsers&apos; acting for this.

As you can see, only Opera and Chromium can show page information to user.
And, others show just blank page.

I prefer showing information than blank page.
Then, we need to create the information page for each status code somewhere, though.

How about you?

--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Testing site : http://spe.mobilephone.net/wit/commonv1/httperror.xhtml

** Linux PC
   Opera
      making a error page for each status code

   Chromium
      making a error page for each status code

   Firefox
      showing blank page

** Windows PC
   Safari
      showing blank page

   IE 
      cannot test because it is not able to handle xhtml

** Mobile
   Android Browser
      showing blank page

   iPhone 4 Safari
      showing blank page</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424479</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-21 08:54:04 -0700</bug_when>
    <thetext>Clearly, different vendors can have different opinion on this matter.

Could you implement this in your browser without changing WebKit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425019</commentid>
    <comment_count>3</comment_count>
    <who name="Keunsoon Lee">keunsoon.lee</who>
    <bug_when>2011-06-21 22:12:56 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Clearly, different vendors can have different opinion on this matter.
&gt; 
&gt; Could you implement this in your browser without changing WebKit?

It is pretty simple, if network layer (e.g. soup, curl etc.) creates the info page and provides it as if receiving from Server.
But I don&apos;t think it is a good idea, because each port cannot choose their behavior for that case.
Furthermore, each port might want to insert their logo on the information page.

To support the specialized page, network layer can request to create the page for each port.
But, I still don&apos;t like it, because it makes a dependency between network layer and each port.

So, I&apos;m looking for the way to give a choice to each port.
That is, notifying this situation to each port and showing a blank page if they don&apos;t do anything would be better.

It is not simple, because ResourceLoader always expects MIME-Type on ResourceResponse, though.


Any comment and idea will be welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442698</commentid>
    <comment_count>4</comment_count>
      <attachid>102090</attachid>
    <who name="Keunsoon Lee">keunsoon.lee</who>
    <bug_when>2011-07-26 19:08:20 -0700</bug_when>
    <thetext>Created attachment 102090
Add new FrameLoaderClient function to notify a case finished without response body.

Sorry for this late update.

Rough scenario for added flow is like follow;

1. DocumentLoader::finishedLoading() found m_gotFirstByte is false, which is the target situation.
2. Notifying the situation to FrameLoaderClient through dispatchDidFinishLoadingWithoutBody(), newly added function.
3. If FrameLoaderClient wants to show informational page, it should create substitute data and send it to FrameLoader.
	3-1. If FrameLoaderClient does nothing for the function, FrameLoader commits blank page.
4. FrameLoadTypeReload will be set for the substitute data for Back/Forward.
5. The original DocumentLoader will be stopped while loading the substitute data.


There is a premise for this flow. 
PolicyUse should be selected for this.
That means, MIME Type from server or http stack (in case of content sniffing) should be exist and a type for PolicyUse on FrameLoader.
I will consider to solve this after finishing this flow.

Finally, I&apos;m not confident of the new function&apos;s name, dispatchDidFinishLoadingWithoutBody.
It will notify to FrameLoaderClient that loading is finished but it has no response body.
I feel this has similar meaning with dispatchDidFinishLoading(), so I chose the name.
But, I&apos;m not sure what different is dispatchDidFinishLoading from dispatchDidFinishLoad.
I&apos;d appreciate it if anyone can give me advice for this.

Any advice and comment will be welcome.

Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442700</commentid>
    <comment_count>5</comment_count>
      <attachid>102090</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-26 19:18:44 -0700</bug_when>
    <thetext>Comment on attachment 102090
Add new FrameLoaderClient function to notify a case finished without response body.

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

&gt; Source/WebCore/loader/FrameLoader.cpp:3299
&gt; +    m_delegateIsFinishingWithoutBody = true;
&gt; +    m_client-&gt;dispatchDidFinishLoadingWithoutBody(dl);
&gt; +    m_delegateIsFinishingWithoutBody = false;

Frown.  We use this pattern a bunch in FrameLoader, but it&apos;s really fragile.  If we&apos;re being re-entered by the client, who&apos;s to say this function can&apos;t be re-entered?  The net result of patches like this are that we have skads of these bools hanging off FrameLoader and the class is a bear to work with.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442701</commentid>
    <comment_count>6</comment_count>
      <attachid>102090</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-26 19:19:39 -0700</bug_when>
    <thetext>Comment on attachment 102090
Add new FrameLoaderClient function to notify a case finished without response body.

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

R- for lack of tests.  I&apos;m not sure excited about the approach either.

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

No tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442718</commentid>
    <comment_count>7</comment_count>
    <who name="Keunsoon Lee">keunsoon.lee</who>
    <bug_when>2011-07-26 19:59:04 -0700</bug_when>
    <thetext>Oh, thank you for your review!

I&apos;m going to modify it according your comment with test.

Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442720</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-26 20:21:22 -0700</bug_when>
    <thetext>Why is this new client call necessary? Can&apos;t the client just check main resource data from didFinish?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442732</commentid>
    <comment_count>9</comment_count>
    <who name="Keunsoon Lee">keunsoon.lee</who>
    <bug_when>2011-07-26 20:48:08 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Why is this new client call necessary? Can&apos;t the client just check main resource data from didFinish?

If you mean FrameLoader::didFinishLoad(), it is called after committing.
At that time, there is no sign for the situation unless we create a new flag for that.

I also considered creating a new flag on FrameLoader or DocumentLoader.
(The name could be isFinishedWithoutBody and so on.)
But, I felt adding new FrameLoaderClient function is more natural for loader&apos;s structure.

Furthermore, I think it is more convenient for each port to support specific informational page.

That&apos;s why I added this new function.

Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442745</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-26 22:43:04 -0700</bug_when>
    <thetext>What kind of information are you looking for that is not currently available?

For instance, a FrameLoaderClient gets a pointer to document loader in dispatchDidLoadMainResource(). It also gets it in committedLoad(), together with the data that triggered the commit. Also, from virtually any callback it can access its frame&apos;s active document loader, and any information associated with it.

The problem I see with implementing the behavior you described is one of choice - there are so many ways to do it that it&apos;s hard to pick one that works best in edge cases. Adding one more similar callback will only make the problem worse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442746</commentid>
    <comment_count>11</comment_count>
    <who name="Keunsoon Lee">keunsoon.lee</who>
    <bug_when>2011-07-26 23:00:19 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; What kind of information are you looking for that is not currently available?
&gt; 
&gt; For instance, a FrameLoaderClient gets a pointer to document loader in dispatchDidLoadMainResource(). It also gets it in committedLoad(), together with the data that triggered the commit. Also, from virtually any callback it can access its frame&apos;s active document loader, and any information associated with it.
&gt; 
&gt; The problem I see with implementing the behavior you described is one of choice - there are so many ways to do it that it&apos;s hard to pick one that works best in edge cases. Adding one more similar callback will only make the problem worse.

I thought giving an exact notice for the situation via separate function would be the best way.
But, now I agree with you that adding a similar function can make client confused rather than help.

Furthermore, Adam Barth said (on chat) that different behavior for specific status code on FrameLoader would not be a good choice.

Now, I&apos;m studying Chromium port to solve this situation because I heard it can solve this problem without any touch on FrameLoader.


Thank you for your comment!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102090</attachid>
            <date>2011-07-26 19:08:20 -0700</date>
            <delta_ts>2011-07-26 19:19:38 -0700</delta_ts>
            <desc>Add new FrameLoaderClient function to notify a case finished without response body.</desc>
            <filename>patch-[20110722]-[keunsoon.lee@samsung.com]-[handleStatusCodeWithoutBody].patch</filename>
            <type>text/plain</type>
            <size>29871</size>
            <attacher name="Keunsoon Lee">keunsoon.lee</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxNTY0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDctMjIgIEtldW5zb29u
IExlZSAgPGtldW5zb29uLmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBjYW5ub3QgaGFuZGxl
IHN0YXR1cyBjb2RlcyB3aGljaCBoYXZlIG5vIHJlc3BvbnNlIGJvZHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyODUyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisK
KyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZyk6IAorICAgICAgICAgICAgICAgIGNhbGwg
ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nV2l0aG91dEJvZHkoKSBpZiBtX2dvdEZpcnN0Qnl0ZSBp
cyBmYWxzZSBhbmQKKyAgICAgICAgICAgICAgICByZWNlaXZlZCBzdGF0dXMgY29kZSBpcyA0eHgg
b3IgNXh4LgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZ1dpdGhv
dXRCb2R5KTogQWRkZWQgdGhpcyBzdHVicy4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKTogCisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2hvdWxkUmVsb2FkVG9IYW5kbGVVbnJlYWNoYWJs
ZVVSTCk6IENoZWNrIGlmIG1fZGVsZWdhdGVJc2ZpbmlzaGluZ1dpdGhvdXRCb2R5IGlzIHNldC4K
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nV2l0aG91dEJvZHkpOgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlci5oOiBBZGRlZCBtX2RlbGVnYXRlSXNGaW5pc2hpbmdXaXRob3V0
Qm9keS4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMS0wNy0y
MiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjkxMDI0LgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiA5MTU2NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw3ICsyODIs
MTQgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0SWZSZWFkeSgpCiAKIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZygpCiB7Ci0gICAgbV9nb3RGaXJzdEJ5dGUgPSB0cnVl
OyAgIAorICAgIGlmICghbV9nb3RGaXJzdEJ5dGUgJiYgbV9yZXNwb25zZS5odHRwU3RhdHVzQ29k
ZSgpID49IDQwMCkgeworICAgICAgICBmcmFtZUxvYWRlcigpLT5kaXNwYXRjaERpZEZpbmlzaExv
YWRpbmdXaXRob3V0Qm9keSh0aGlzKTsKKyAgICAgICAgLy8gc2hvdWxkIGNoZWNrIGJlY2F1c2Ug
ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nV2l0aG91dEJvZHkoKSBjYW4gc3RvcCB0aGlzIERvY3Vt
ZW50TG9hZGVyCisgICAgICAgIGlmICghZnJhbWVMb2FkZXIoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX2dvdEZpcnN0Qnl0ZSA9IHRydWU7CiAgICAgY29tbWl0SWZSZWFk
eSgpOwogICAgIGlmIChGcmFtZUxvYWRlciogbG9hZGVyID0gZnJhbWVMb2FkZXIoKSkgewogICAg
ICAgICBsb2FkZXItPmZpbmlzaGVkTG9hZGluZ0RvY3VtZW50KHRoaXMpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gOTE1NjQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2MSw2ICsyNjEs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNl
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKERv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgaW50KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZykg
eyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZ1dpdGhvdXRCb2R5
KERvY3VtZW50TG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExv
YWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZUVycm9y
JikgeyB9CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9y
eUNhY2hlKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIGludCkgeyByZXR1cm4gZmFsc2U7IH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA5MTU2NCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw2ICsxNzcs
NyBAQCBGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIoRnJhbWUqIGZyYW1lLCBGCiAgICAgLCBtX3N0
YXRlKEZyYW1lU3RhdGVDb21taXR0ZWRQYWdlKQogICAgICwgbV9sb2FkVHlwZShGcmFtZUxvYWRU
eXBlU3RhbmRhcmQpCiAgICAgLCBtX2RlbGVnYXRlSXNIYW5kbGluZ1Byb3Zpc2lvbmFsTG9hZEVy
cm9yKGZhbHNlKQorICAgICwgbV9kZWxlZ2F0ZUlzRmluaXNoaW5nV2l0aG91dEJvZHkoZmFsc2Up
CiAgICAgLCBtX3F1aWNrUmVkaXJlY3RDb21pbmcoZmFsc2UpCiAgICAgLCBtX3NlbnRSZWRpcmVj
dE5vdGlmaWNhdGlvbihmYWxzZSkKICAgICAsIG1faW5TdG9wQWxsTG9hZGVycyhmYWxzZSkKQEAg
LTE0MDksMTQgKzE0MTAsMTYgQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkUmVsb2FkVG9IYW5k
bGVVbgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBXZSBvbmx5IHRyZWF0IHVucmVh
Y2hhYmxlVVJMcyBzcGVjaWFsbHkgZHVyaW5nIHRoZSBkZWxlZ2F0ZSBjYWxsYmFja3MKLSAgICAv
LyBmb3IgcHJvdmlzaW9uYWwgbG9hZCBlcnJvcnMgYW5kIG5hdmlnYXRpb24gcG9saWN5IGRlY2lz
aW9ucy4gVGhlIGZvcm1lcgotICAgIC8vIGNhc2UgaGFuZGxlcyB3ZWxsLWZvcm1lZCBVUkxzIHRo
YXQgY2FuJ3QgYmUgbG9hZGVkLCBhbmQgdGhlIGxhdHRlcgotICAgIC8vIGNhc2UgaGFuZGxlcyBt
YWxmb3JtZWQgVVJMcyBhbmQgdW5rbm93biBzY2hlbWVzLiBMb2FkaW5nIGFsdGVybmF0ZSBjb250
ZW50Ci0gICAgLy8gYXQgb3RoZXIgdGltZXMgYmVoYXZlcyBsaWtlIGEgc3RhbmRhcmQgbG9hZC4K
KyAgICAvLyBmb3IgcHJvdmlzaW9uYWwgbG9hZCBlcnJvcnMsIG5hdmlnYXRpb24gcG9saWN5IGRl
Y2lzaW9ucyBhbmQgc2VuZGluZworICAgIC8vIHN1YnN0aXR1dGUgcGFnZSBhY2NvcmRpbmcgdG8g
c3RhdHVzIGNvZGUuIFRoZSBmaXJzdAorICAgIC8vIGNhc2UgaGFuZGxlcyB3ZWxsLWZvcm1lZCBV
UkxzIHRoYXQgY2FuJ3QgYmUgbG9hZGVkLCBhbmQgdGhlIHNlY29uZAorICAgIC8vIGNhc2UgaGFu
ZGxlcyBtYWxmb3JtZWQgVVJMcyBhbmQgdW5rbm93biBzY2hlbWVzLiBUaGUgbGFzdCBjYXNlIGhh
bmRsZXMKKyAgICAvLyB3ZWxsLWZvcm1lZCBVUkxzIHRoYXQgbG9hZGVkIHdpdGggbm8gcmVzcG9u
c2UgYm9keS4KKyAgICAvLyBMb2FkaW5nIGFsdGVybmF0ZSBjb250ZW50IGF0IG90aGVyIHRpbWVz
IGJlaGF2ZXMgbGlrZSBhIHN0YW5kYXJkIGxvYWQuCiAgICAgRG9jdW1lbnRMb2FkZXIqIGNvbXBh
cmVEb2N1bWVudExvYWRlciA9IDA7CiAgICAgaWYgKHBvbGljeUNoZWNrZXIoKS0+ZGVsZWdhdGVJ
c0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeSgpIHx8IHBvbGljeUNoZWNrZXIoKS0+ZGVsZWdhdGVJ
c0hhbmRsaW5nVW5pbXBsZW1lbnRhYmxlUG9saWN5KCkpCiAgICAgICAgIGNvbXBhcmVEb2N1bWVu
dExvYWRlciA9IG1fcG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0KCk7Ci0gICAgZWxzZSBpZiAobV9k
ZWxlZ2F0ZUlzSGFuZGxpbmdQcm92aXNpb25hbExvYWRFcnJvcikKKyAgICBlbHNlIGlmIChtX2Rl
bGVnYXRlSXNIYW5kbGluZ1Byb3Zpc2lvbmFsTG9hZEVycm9yIHx8IG1fZGVsZWdhdGVJc0Zpbmlz
aGluZ1dpdGhvdXRCb2R5KQogICAgICAgICBjb21wYXJlRG9jdW1lbnRMb2FkZXIgPSBtX3Byb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXIuZ2V0KCk7CiAKICAgICByZXR1cm4gY29tcGFyZURvY3VtZW50
TG9hZGVyICYmIHVucmVhY2hhYmxlVVJMID09IGNvbXBhcmVEb2N1bWVudExvYWRlci0+cmVxdWVz
dCgpLnVybCgpOwpAQCAtMzI4OSw0ICszMjkyLDExIEBAIEZyYW1lKiBjcmVhdGVXaW5kb3coRnJh
bWUqIG9wZW5lckZyYW1lLAogICAgIHJldHVybiBmcmFtZTsKIH0KIAordm9pZCBGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nV2l0aG91dEJvZHkoRG9jdW1lbnRMb2FkZXIqIGRs
KQoreworICAgIG1fZGVsZWdhdGVJc0ZpbmlzaGluZ1dpdGhvdXRCb2R5ID0gdHJ1ZTsKKyAgICBt
X2NsaWVudC0+ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nV2l0aG91dEJvZHkoZGwpOworICAgIG1f
ZGVsZWdhdGVJc0ZpbmlzaGluZ1dpdGhvdXRCb2R5ID0gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lv
biA5MTU2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDYsNiArMjA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hEaWRD
bGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkKik7CiAgICAgdm9pZCBkaXNw
YXRjaERpZENsZWFyV2luZG93T2JqZWN0c0luQWxsV29ybGRzKCk7CiAgICAgdm9pZCBkaXNwYXRj
aERvY3VtZW50RWxlbWVudEF2YWlsYWJsZSgpOworICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hM
b2FkaW5nV2l0aG91dEJvZHkoRG9jdW1lbnRMb2FkZXIqKTsKIAogICAgIHZvaWQgb3duZXJFbGVt
ZW50U2FuZGJveEZsYWdzQ2hhbmdlZCgpIHsgdXBkYXRlU2FuZGJveEZsYWdzKCk7IH0KIApAQCAt
MzkwLDYgKzM5MSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBtX3Bv
bGljeURvY3VtZW50TG9hZGVyOwogCiAgICAgYm9vbCBtX2RlbGVnYXRlSXNIYW5kbGluZ1Byb3Zp
c2lvbmFsTG9hZEVycm9yOworICAgIGJvb2wgbV9kZWxlZ2F0ZUlzRmluaXNoaW5nV2l0aG91dEJv
ZHk7CiAKICAgICBib29sIG1fcXVpY2tSZWRpcmVjdENvbWluZzsKICAgICBib29sIG1fc2VudFJl
ZGlyZWN0Tm90aWZpY2F0aW9uOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHJldmlzaW9uIDkxNTY0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVS
ZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGludCBkYXRhTGVuZ3RoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZ1dp
dGhvdXRCb2R5KERvY3VtZW50TG9hZGVyKikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGRp
c3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGludCBsZW5ndGgp
ID0gMDsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxNTY0KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNCBAQAorMjAxMS0wNy0yMiAgS2V1bnNvb24gTGVlICA8a2V1bnNvb24ubGVlQHNhbXN1
bmcuY29tPgorCisgICAgICAgIGNhbm5vdCBoYW5kbGUgc3RhdHVzIGNvZGVzIHdoaWNoIGhhdmUg
bm8gcmVzcG9uc2UgYm9keQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjI4NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZ1dpdGhvdXRC
b2R5KTogQWRkZWQgdGhpcyBzdHViLgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuaDoKKwogMjAxMS0wNy0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVkIERFUFMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9u
IDkxNTY0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIwLDYgKzQyMCwxMSBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRGCiAgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgp
LT5kaWRGaW5pc2hSZXNvdXJjZUxvYWQobV93ZWJGcmFtZSwgaWRlbnRpZmllcik7CiB9CiAKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmdXaXRob3V0
Qm9keShEb2N1bWVudExvYWRlciogbG9hZGVyKQoreworICAgIC8vIEZJWE1FCit9CisKIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuaAkocmV2aXNpb24gOTE1NjQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZUNvbnRlbnRMZW5ndGgoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGludCBkYXRhTGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nV2l0
aG91dEJvZHkoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1
YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShXZWJDb3JlOjpE
b2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDkxNTY0KQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMjIgIEtldW5zb29uIExlZSAgPGtldW5zb29u
LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBjYW5ub3QgaGFuZGxlIHN0YXR1cyBjb2RlcyB3
aGljaCBoYXZlIG5vIHJlc3BvbnNlIGJvZHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYyODUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRG
aW5pc2hMb2FkaW5nV2l0aG91dEJvZHkpOiBBZGRlZCB0aGlzIHN0dWIuCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKKwogMjAxMS0wNy0xOSAgR3l1eW91
bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEFkZCBl
d2tfbmV0d29yay5jcHB8aCBmaWxlcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHJldmlzaW9u
IDkxNTY0KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzEsNiArNzMxLDExIEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmkKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmdX
aXRob3V0Qm9keShEb2N1bWVudExvYWRlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwogdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1
bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5oCShyZXZpc2lvbiA5MTU2NCkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAg
Y2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbQogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bmcgIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nICBp
ZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nV2l0
aG91dEJvZHkoRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRG
YWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVz
b3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50IGxlbmd0aCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cJKHJldmlzaW9uIDkxNTY0KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDctMjIgIEtldW5zb29uIExlZSAg
PGtldW5zb29uLmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBjYW5ub3QgaGFuZGxlIHN0YXR1
cyBjb2RlcyB3aGljaCBoYXZlIG5vIHJlc3BvbnNlIGJvZHkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyODUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZEZpbmlzaExvYWRpbmcpOiAKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZ1dpdGhvdXRCb2R5KTogQWRkZWQgdGhpcyBzdHVicy4K
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorCiAyMDEx
LTA3LTExICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAg
IFtHVEtdIEdvb2dsZSBDYWxlbmRhciB0aGlua3Mgd2UncmUgbW9iaWxlCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwCShyZXZpc2lvbiA5MTU2NCkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiAr
ODksNyBAQAogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVk
ZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDxwbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0u
aD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgpAQCAtMTA2MSw2ICsxMDYyLDIz
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmluaXMKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlz
aExvYWRpbmdXaXRob3V0Qm9keShXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyKQorewor
ICAgIC8vIHNob3VsZCB1cGRhdGUgdXJsIGFuZCB0aXRsZSBmcm9tIG9yaWdpbmFsIGRvY3VtZW50
CisgICAgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CisKKyAgICBXZWJLaXQ6OkRvY3VtZW50TG9h
ZGVyKiBkbCA9IHN0YXRpY19jYXN0PFdlYktpdDo6RG9jdW1lbnRMb2FkZXIqPihsb2FkZXIpOwor
CisgICAgVGV4dFN0cmVhbSB0c3RyOworICAgIHRzdHIgPDwgZGwtPnJlc3BvbnNlKCkuaHR0cFN0
YXR1c0NvZGUoKTsKKyAgICBTdHJpbmcgY29udGVudCA9IHRzdHIucmVsZWFzZSgpICsgIiByZWNl
aXZlZCI7CisKKyAgICBSZXNvdXJjZUVycm9yIGVycm9yKGRsLT50aXRsZSgpLnN0cmluZygpLCBk
bC0+cmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpLAorICAgICAgICAgICAgZGwtPnJlc3BvbnNl
KCkudXJsKCksIGNvbnRlbnQpOworCisgICAgZGlzcGF0Y2hEaWRGYWlsTG9hZChlcnJvcik7Cit9
CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBzdGF0aWNfY2FzdDxXZWJLaXQ6OkRvY3Vt
ZW50TG9hZGVyKj4obG9hZGVyKS0+ZGVjcmVhc2VMb2FkQ291bnQoaWRlbnRpZmllcik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmgJKHJldmlzaW9uIDkxNTY0KQorKysgU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtNjcs
NiArNjcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyAgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5n
dGgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyAgaWRlbnRpZmllcik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmdXaXRob3V0Qm9keShXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWls
TG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgIGlkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCBib29s
IGRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIGludCBsZW5ndGgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2hh
aWt1L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxv
ZwkocmV2aXNpb24gOTE1NjQpCisrKyBTb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTA3LTIyICBLZXVuc29vbiBMZWUgIDxr
ZXVuc29vbi5sZWVAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgY2Fubm90IGhhbmRsZSBzdGF0dXMg
Y29kZXMgd2hpY2ggaGF2ZSBubyByZXNwb25zZSBib2R5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjg1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpk
aXNwYXRjaERpZEZpbmlzaExvYWRpbmdXaXRob3V0Qm9keSk6IEFkZGVkIHRoaXMgc3R1YnMuCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oOgorCiAyMDEx
LTA3LTE1ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTjogTW91c2UgY3Vyc29yIGRvZXNu4oCZdCBoaWRlIHdoZW4gZnVsbCBzY3JlZW4gdmlkZW8g
SFVEIGhpZGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50SGFpa3UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvaGFpa3Uv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHAJKHJldmlzaW9uIDkxNTY0
KQorKysgU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEhhaWt1LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIyLDYgKzYyMiwxMSBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmdX
aXRob3V0Qm9keShEb2N1bWVudExvYWRlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwogdm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VFcnJvciYpCiB7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAkocmV2aXNpb24gOTE1NjQpCisrKyBTb3VyY2Uv
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAkod29y
a2luZyBjb3B5KQpAQCAtMTk3LDYgKzE5Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRl
bnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBpbnQpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZyk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRp
bmdXaXRob3V0Qm9keShEb2N1bWVudExvYWRlciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKICAgICAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1l
bW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDkxNTY0KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMjIgIEtldW5zb29uIExlZSAgPGtldW5zb29uLmxlZUBz
YW1zdW5nLmNvbT4KKworICAgICAgICBjYW5ub3QgaGFuZGxlIHN0YXR1cyBjb2RlcyB3aGljaCBo
YXZlIG5vIHJlc3BvbnNlIGJvZHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYyODUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAo
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZ1dpdGhvdXRCb2R5
KTogQWRkZWQgdGhpcyBzdHVicy4KKwogMjAxMS0wNy0xOSAgTGVvIFlhbmcgIDxsZW95YW5nLndl
YmtpdEBnbWFpbC5jb20+CiAKICAgICAgICAgU1ZHOiBNaXNzaW5nIGltcGxlbWVudGF0aW9uIG9m
IDxhbHRHbHlwaERlZj4sIDxhbHRHbHlwaEl0ZW0+IGFuZCA8Z2x5cGhSZWY+CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgJKHJldmlzaW9uIDkxNTY0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0YUxlbmd0aCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9h
ZGluZ1dpdGhvdXRCb2R5KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAog
ICAgIHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIE5TQ2FjaGVkVVJM
UmVzcG9uc2UqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiA5MTU2NCkK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MzMsNiArNTMzLDEwIEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmkKICAgICBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRl
ck1hYyo+KGxvYWRlciktPmRlY3JlYXNlTG9hZENvdW50KGlkZW50aWZpZXIpOwogfQogCit2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmdXaXRob3V0Qm9k
eShEb2N1bWVudExvYWRlciopCit7Cit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBXZWJWaWV3
ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCShyZXZpc2lvbiA5MTU2NCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMjIgIEtldW5zb29uIExlZSAgPGtl
dW5zb29uLmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBjYW5ub3QgaGFuZGxlIHN0YXR1cyBj
b2RlcyB3aGljaCBoYXZlIG5vIHJlc3BvbnNlIGJvZHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyODUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNo
RGlkRmluaXNoTG9hZGluZ1dpdGhvdXRCb2R5KTogQWRkZWQgdGhpcyBzdHVicy4KKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKIDIwMTEtMDctMTkgIENh
aW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9y
Zz4KIAogICAgICAgICBbUXRdIEltcHJvdmUgZG9jdW1lbnRhdGlvbiBvZiBRV2ViVmlldzo6c2V0
UGFnZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHJldmlzaW9uIDkxNTY0KQorKysgU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTEyNCw2ICsxMTI0LDEwIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlz
cGF0Y2hEaWRGaW4KICAgICAgICAgICAgICAgIChkdW1wQXNzaWduZWRVcmxzLmNvbnRhaW5zKGlk
ZW50aWZpZXIpID8gcVByaW50YWJsZShkdW1wQXNzaWduZWRVcmxzW2lkZW50aWZpZXJdKSA6ICI8
dW5rbm93bj4iKSk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRG
aW5pc2hMb2FkaW5nV2l0aG91dEJvZHkoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKQoreworfQor
CiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBpZiAoZHVtcFJlc291cmNl
TG9hZENhbGxiYWNrcykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiA5MTU2NCkKKysrIFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDIsNiArMTAyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcsIGludCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlu
aXNoTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpOworICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmdXaXRob3V0Qm9keShXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2Fk
aW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBp
bnQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA5MTU2NCkKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEx
LTA3LTIyICBLZXVuc29vbiBMZWUgIDxrZXVuc29vbi5sZWVAc2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgY2Fubm90IGhhbmRsZSBzdGF0dXMgY29kZXMgd2hpY2ggaGF2ZSBubyByZXNwb25zZSBib2R5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjg1Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZ1dpdGhvdXRCb2R5KTogQWRkZWQgdGhp
cyBzdHVicy4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
OgorCiAyMDExLTA3LTE4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ3NDIKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDkxNTY0KQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzMsNiArMjMzLDEwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmkK
ICAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZS0+ZGlkRmluaXNoTG9hZGluZ0Zyb21EYXRhU291cmNl
KHdlYlZpZXcsIGlkZW50aWZpZXIsIGdldFdlYkRhdGFTb3VyY2UobG9hZGVyKSk7CiB9CiAKK3Zv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZ1dpdGhvdXRC
b2R5KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit7Cit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAg
ICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCShyZXZpc2lvbiA5MTU2NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVDb250ZW50TGVuZ3RoKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0YUxlbmd0aCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllcik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGlu
Z1dpdGhvdXRCb2R5KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBsZW5ndGgp
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkocmV2aXNpb24gOTE1NjQpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisy
MDExLTA3LTIyICBLZXVuc29vbiBMZWUgIDxrZXVuc29vbi5sZWVAc2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgY2Fubm90IGhhbmRsZSBzdGF0dXMgY29kZXMgd2hpY2ggaGF2ZSBubyByZXNwb25zZSBi
b2R5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjg1
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZ1dpdGhvdXRC
b2R5KTogQWRkZWQgdGhpcyBzdHVicy4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFdpbkNFLmg6CisKIDIwMTEtMDctMTUgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBNb3VzZSBjdXJzb3IgZG9lc27igJl0IGhp
ZGUgd2hlbiBmdWxsIHNjcmVlbiB2aWRlbyBIVUQgaGlkZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFdpbkNFLmNwcAkocmV2aXNpb24gOTE1NjQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MDUsNiArNTA1LDExIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWQK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6
OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZ1dpdGhvdXRCb2R5KERvY3VtZW50TG9hZGVyKikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6
OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBj
b25zdCBSZXNvdXJjZUVycm9yJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291
cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFdpbkNFLmgJKHJldmlzaW9uIDkxNTY0KQorKysgU291cmNlL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYyLDYgKzYyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgIGlk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChXZWJDb3JlOjpEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nICBpZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGaW5pc2hMb2FkaW5nV2l0aG91dEJvZHkoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9t
TWVtb3J5Q2FjaGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgaW50IGxlbmd0
aCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MTU2NCkKKysrIFNvdXJjZS9XZWJL
aXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDct
MjIgIEtldW5zb29uIExlZSAgPGtldW5zb29uLmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBj
YW5ub3QgaGFuZGxlIHN0YXR1cyBjb2RlcyB3aGljaCBoYXZlIG5vIHJlc3BvbnNlIGJvZHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyODUyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nV2l0aG91dEJvZHkpOiBBZGRlZCB0
aGlzIHN0dWJzLgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5o
OgorCiAyMDExLTA3LTE1ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTjogTW91c2UgY3Vyc29yIGRvZXNu4oCZdCBoaWRlIHdoZW4gZnVsbCBzY3Jl
ZW4gdmlkZW8gSFVEIGhpZGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9X
ZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCShyZXZpc2lvbiA5MTU2NCkKKysr
IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzQ5LDYgKzc0OSwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
V3g6OmRpc3BhdGNoRGlkRmluCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBGcmFt
ZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmdXaXRob3V0Qm9keShEb2N1
bWVudExvYWRlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBGcmFtZUxv
YWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlRXJyb3ImKQogewogICAgIGlmIChtX2Zp
cnN0RGF0YSkgewpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCShyZXZpc2lvbiA5MTU2NCkKKysrIFNvdXJjZS9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE5NSw2ICsxOTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nLCBpbnQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5n
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZpbmlzaExvYWRpbmdXaXRob3V0Qm9keShEb2N1bWVudExvYWRlciopOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCBi
b29sIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGludCk7
CiAK
</data>
<flag name="review"
          id="97229"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>