<?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>85533</bug_id>
          
          <creation_ts>2012-05-03 12:56:03 -0700</creation_ts>
          <short_desc>Don&apos;t require FrameLoaderClient to manufacture a commitData() call for empty documents</short_desc>
          <delta_ts>2012-05-04 10:36:31 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>615513</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-05-03 12:56:03 -0700</bug_when>
    <thetext>In http://trac.webkit.org/changeset/115654, I added a call to DocumentLoader::commitData() in DocumentLoader::finishedLoading() if no data was yet received. This is necessary to ensure DocumentWriter actually creates the new Document.

This removes the need for each FrameLoaderClient implementation to manufacture the commitData() call instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615517</commentid>
    <comment_count>1</comment_count>
      <attachid>140071</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-05-03 13:01:39 -0700</bug_when>
    <thetext>Created attachment 140071
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615551</commentid>
    <comment_count>2</comment_count>
      <attachid>140071</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-05-03 13:27:17 -0700</bug_when>
    <thetext>Comment on attachment 140071
patch

Attachment 140071 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12600338</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615580</commentid>
    <comment_count>3</comment_count>
      <attachid>140084</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-05-03 13:52:07 -0700</bug_when>
    <thetext>Created attachment 140084
fix gtk compile</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615660</commentid>
    <comment_count>4</comment_count>
      <attachid>140084</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-05-03 14:55:25 -0700</bug_when>
    <thetext>Comment on attachment 140084
fix gtk compile

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

It&apos;s surprising that many clients had this m_hasRepresentation logic. Looks good to me, except for WK1 part that I couldn&apos;t understand.

&gt; Source/WebKit/mac/ChangeLog:9
&gt; +        * WebView/WebHTMLRepresentation.mm:
&gt; +        (-[WebHTMLRepresentation finishedLoadingWithDataSource:]):

Could you add an explanation of what this is changing? It&apos;s not as closely connected to the goal of this patch as some other ports, so the change looks a bit confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616289</commentid>
    <comment_count>5</comment_count>
      <attachid>140250</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-05-04 09:20:51 -0700</bug_when>
    <thetext>Created attachment 140250
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616330</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-05-04 09:58:49 -0700</bug_when>
    <thetext>Well, the part I didn&apos;t understand was why there was a special case for web archives, and why it&apos;s no longer necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616336</commentid>
    <comment_count>7</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-05-04 10:06:23 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Well, the part I didn&apos;t understand was why there was a special case for web archives, and why it&apos;s no longer necessary.

Ah....from what I can tell from implementing the commitData() call in DocumentLoader, web archives do not like having a document created before the archive gets fully swapped in. I&apos;m guessing the special case is because sending that vacuous commitData call cause strange behavior if done for webarchives, so it just gets sent for everything else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616383</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-04 10:36:08 -0700</bug_when>
    <thetext>The title of this bug is wrong. It describes the change made before this bug was even filed, where FrameLoader no longer requires the commitData calls we were doing.

This bug tracks removing the now-unneeded commitData calls, so the title should somehow describe that. Maybe &quot;WebKit contains unneeded commitData calls for empty documents”.

The unclear title makes things a little confusing, but since everything is landed, we can just think that through better next time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616384</commentid>
    <comment_count>9</comment_count>
      <attachid>140250</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-04 10:36:26 -0700</bug_when>
    <thetext>Comment on attachment 140250
Patch for landing

Clearing flags on attachment: 140250

Committed r116121: &lt;http://trac.webkit.org/changeset/116121&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616385</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-04 10:36:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140071</attachid>
            <date>2012-05-03 13:01:39 -0700</date>
            <delta_ts>2012-05-03 13:52:07 -0700</delta_ts>
            <desc>patch</desc>
            <filename>fl.txt</filename>
            <type>text/plain</type>
            <size>27065</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEJsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwCShyZXZp
c2lvbiAxMTU5ODkpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYzLDE3
ICszNjMsMTIgQEAKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+d3Jp
dGVyKCktPmFkZERhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVu
dEJsYWNrQmVycnk6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQordm9p
ZCBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExv
YWRlciopCiB7CiAgICAgaWYgKG1fcGx1Z2luVmlldykgewogICAgICAgICBtX3BsdWdpblZpZXct
PmRpZEZpbmlzaExvYWRpbmcoKTsKICAgICAgICAgbV9wbHVnaW5WaWV3ID0gMDsKICAgICAgICAg
bV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IC8vIFRlbGxpbmcgdGhlIGZyYW1lIHdlIHJlY2VpdmVkIHNvbWUgZGF0YSBhbmQgcGFzc2luZyAw
IGFzIHRoZSBkYXRhIGlzIG91cgotICAgICAgICAvLyB3YXkgdG8gZ2V0IHdvcmsgZG9uZSB0aGF0
IGlzIG5vcm1hbGx5IGRvbmUgd2hlbiB0aGUgZmlyc3QgYml0IG9mIGRhdGEgaXMKLSAgICAgICAg
Ly8gcmVjZWl2ZWQsIGV2ZW4gZm9yIHRoZSBjYXNlIG9mIGEgZG9jdW1lbnQgd2l0aCBubyBkYXRh
IChsaWtlIGFib3V0OmJsYW5rKS4KLSAgICAgICAgY29tbWl0dGVkTG9hZChsb2FkZXIsIDAsIDAp
OwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMTU5OTgpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDUtMDMgIE5hdGUgQ2hhcGluICA8amFwaGV0
QGNocm9taXVtLm9yZz4KKworICAgICAgICBEb24ndCByZXF1aXJlIEZyYW1lTG9hZGVyQ2xpZW50
IHRvIG1hbnVmYWN0dXJlIGEgY29tbWl0RGF0YSgpIGNhbGwgZm9yIGVtcHR5IGRvY3VtZW50cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NTMzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpmaW5pc2hlZExvYWRpbmcpOgorCiAyMDEy
LTA1LTAzICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
bW92aW5nIGxpbmUgaW4gY29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyB0aGF0IGVuZm9yY2VzIGEg
bWluaW11bSBzY2FsZSBmYWN0b3IgdG8gbmV2ZXIgYWxsb3cgem9vbWluZyBvdXQgbW9yZSB0aGFu
IHZpZXdwb3J0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE1OTk4
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOSBAQAorMjAxMi0wNS0wMyAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIERvbid0IHJlcXVpcmUgRnJhbWVMb2FkZXJDbGllbnQgdG8gbWFudWZh
Y3R1cmUgYSBjb21taXREYXRhKCkgY2FsbCBmb3IgZW1wdHkgZG9jdW1lbnRzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1MzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OkZy
YW1lTG9hZGVyQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogc3Jj
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNs
aWVudEltcGw6Om1ha2VSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50SW1wbDo6cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKToKKyAgICAgICAgKEZyYW1l
TG9hZGVyQ2xpZW50SW1wbCk6CisKIDIwMTItMDUtMDMgIEFudG9ueSBTYXJnZW50ICA8YXNhcmdl
bnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBtZXRob2RzIHRvIGNyZWF0ZSBXZWJBcnJh
eUJ1ZmZlci9XZWJBcnJheUJ1ZmZlclZpZXcgZnJvbSB2OCBvYmplY3RzCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJ
KHJldmlzaW9uIDExNTk4OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNiBAQAogCiBG
cmFtZUxvYWRlckNsaWVudEltcGw6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbChXZWJGcmFtZUltcGwq
IGZyYW1lKQogICAgIDogbV93ZWJGcmFtZShmcmFtZSkKLSAgICAsIG1faGFzUmVwcmVzZW50YXRp
b24oZmFsc2UpCiAgICAgLCBtX3NlbnRJbml0aWFsUmVzcG9uc2VUb1BsdWdpbihmYWxzZSkKICAg
ICAsIG1fbmV4dE5hdmlnYXRpb25Qb2xpY3koV2ViTmF2aWdhdGlvblBvbGljeUlnbm9yZSkKIHsK
QEAgLTI3MiwxMSArMjcxLDYgQEAKICAgICBtX3dlYkZyYW1lLT5jcmVhdGVGcmFtZVZpZXcoKTsK
IH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6Om1ha2VSZXByZXNlbnRhdGlvbihEb2N1
bWVudExvYWRlciopCi17Ci0gICAgbV9oYXNSZXByZXNlbnRhdGlvbiA9IHRydWU7Ci19Ci0KIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpmb3JjZUxheW91dCgpCiB7CiAgICAgLy8gRklYTUUK
QEAgLTEwNDksMTEgKzEwNDMsNiBAQAogICAgIChtX3dlYkZyYW1lLT5mcmFtZSgpLT5sb2FkZXIo
KS0+cG9saWN5Q2hlY2tlcigpLT4qZnVuY3Rpb24pKFBvbGljeVVzZSk7CiB9CiAKLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRJbXBsOjpyZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1lbnRMb2Fk
ZXIqKQotewotICAgIG1faGFzUmVwcmVzZW50YXRpb24gPSB0cnVlOwotfQotCiB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50SW1wbDo6c2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQogewpAQCAtMTE1MCwxOCArMTEzOSwxMiBAQAogICAgIH0KIH0K
IAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExv
YWRlciogZGwpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZmluaXNoZWRMb2FkaW5nKERv
Y3VtZW50TG9hZGVyKikKIHsKICAgICBpZiAobV9wbHVnaW5XaWRnZXQpIHsKICAgICAgICAgbV9w
bHVnaW5XaWRnZXQtPmRpZEZpbmlzaExvYWRpbmcoKTsKICAgICAgICAgbV9wbHVnaW5XaWRnZXQg
PSAwOwogICAgICAgICBtX3NlbnRJbml0aWFsUmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGNyZWF0ZSBhbiBlbXB0
eSBkb2N1bWVudC4gU2VlIGJ1ZyA2MzQwMDQuCi0gICAgICAgIC8vIEhvd2V2ZXIsIHdlIG9ubHkg
d2FudCB0byBkbyB0aGlzIGlmIG1ha2VSZXByZXNlbnRhdGlvbiBoYXMgYmVlbiBjYWxsZWQsIHRv
Ci0gICAgICAgIC8vIG1hdGNoIHRoZSBiZWhhdmlvciBvbiB0aGUgTWFjLgotICAgICAgICBpZiAo
bV9oYXNSZXByZXNlbnRhdGlvbikKLSAgICAgICAgICAgIGRsLT53cml0ZXIoKS0+c2V0RW5jb2Rp
bmcoIiIsIGZhbHNlKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxMTU5ODkpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQAogCiAgICAgdmlydHVhbCBib29sIGhhc1dlYlZp
ZXcoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzRnJhbWVWaWV3KCkgY29uc3Q7Ci0gICAg
dmlydHVhbCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihXZWJDb3JlOjpEb2N1bWVudExvYWRlciop
OworICAgIHZpcnR1YWwgdm9pZCBtYWtlUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VMYXlvdXQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZm9yY2VMYXlvdXRGb3JOb25IVE1MKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENvcGll
c09uU2Nyb2xsKCk7CkBAIC0xMTgsNyArMTE4LDcgQEAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRy
PFdlYkNvcmU6OkZvcm1TdGF0ZT4pOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJt
aXRGb3JtKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6
Rm9ybVN0YXRlPik7Ci0gICAgdmlydHVhbCB2b2lkIHJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciopOworICAgIHZpcnR1YWwgdm9pZCByZXZlcnRUb1Byb3Zp
c2lvbmFsU3RhdGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VFc3Rp
bWF0ZWRQcm9ncmVzcygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQ
cm9ncmVzcygpIHsgfQpAQCAtMjI1LDExICsyMjUsNiBAQAogICAgIC8vIHRoZSB3ZWIgZnJhbWUg
b2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gZXhpc3QuCiAgICAgV2ViRnJhbWVJbXBsKiBtX3dlYkZy
YW1lOwogCi0gICAgLy8gVHJ1ZSBpZiBtYWtlUmVwcmVzZW50YXRpb24gd2FzIGNhbGxlZC4gIFdl
IGRvbid0IGFjdHVhbGx5IGhhdmUgYSBjb25jZXB0Ci0gICAgLy8gb2YgYSAicmVwcmVzZW50YXRp
b24iLCBidXQgd2UgbmVlZCB0byBrbm93IHdoZW4gd2UncmUgZXhwZWN0ZWQgdG8gaGF2ZSBvbmUu
Ci0gICAgLy8gU2VlIGZpbmlzaGVkTG9hZGluZygpLgotICAgIGJvb2wgbV9oYXNSZXByZXNlbnRh
dGlvbjsKLQogICAgIC8vIFVzZWQgdG8gaGVscCB0cmFjayBjbGllbnQgcmVkaXJlY3RzLiBXaGVu
IGEgcHJvdmlzaW9uYWwgbG9hZCBzdGFydHMsIGl0CiAgICAgLy8gaGFzIG5vIHJlZGlyZWN0cyBp
biBpdHMgY2hhaW4uIEJ1dCBpbiB0aGUgY2FzZSBvZiBjbGllbnQgcmVkaXJlY3RzLCB3ZSB3YW50
CiAgICAgLy8gdG8gYWRkIHRoYXQgaW5pdGlhbCBsb2FkIGFzIGEgcmVkaXJlY3QuIFdoZW4gd2Ug
Z2V0IGEgbmV3IHByb3Zpc2lvbmFsIGxvYWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAkocmV2aXNpb24g
MTE1OTg5KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDcgKzIxMiw2IEBACiAgICAgLCBtX3dl
YkZyYW1lKDApCiAgICAgLCBtX3BsdWdpblZpZXcoMCkKICAgICAsIG1faGFzU2VudFJlc3BvbnNl
VG9QbHVnaW4oZmFsc2UpCi0gICAgLCBtX2hhc1JlcHJlc2VudGF0aW9uKGZhbHNlKQogICAgICwg
bV9pc09yaWdpbmF0aW5nTG9hZChmYWxzZSkKIHsKIH0KQEAgLTMxMiwxMiArMzExLDcgQEAKIHsK
IH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjptYWtlUmVwcmVzZW50YXRpb24oRG9jdW1l
bnRMb2FkZXIqKQotewotICAgIG1faGFzUmVwcmVzZW50YXRpb24gPSB0cnVlOwotfQogCi0KIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6Zm9yY2VMYXlvdXQoKQogewogICAgIEZyYW1lVmlldyog
dmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKQEAgLTU2NywxMiArNTYxLDYgQEAKIH0KIAogCi12b2lk
IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShEb2N1bWVudExv
YWRlciopCi17Ci0gICAgbV9oYXNSZXByZXNlbnRhdGlvbiA9IHRydWU7Ci19Ci0KLQogdm9pZCBG
cmFtZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJvZ3Jlc3NTdGFydGVkTm90aWZpY2F0aW9uKCkKIHsK
ICAgICBpZiAobV93ZWJGcmFtZSAmJiBtX2ZyYW1lLT5wYWdlKCkpCkBAIC02MjYsMTYgKzYxNCwx
MCBAQAogfQogCiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZmluaXNoZWRMb2FkaW5nKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmZpbmlzaGVk
TG9hZGluZyhEb2N1bWVudExvYWRlciopCiB7Ci0gICAgaWYgKCFtX3BsdWdpblZpZXcpIHsKLSAg
ICAgICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgdG8gY3JlYXRlIGFuIGVtcHR5IGRvY3VtZW50LiBT
ZWUgYnVnIDYzNDAwNC4KLSAgICAgICAgLy8gSG93ZXZlciwgd2Ugb25seSB3YW50IHRvIGRvIHRo
aXMgaWYgbWFrZVJlcHJlc2VudGF0aW9uIGhhcyBiZWVuIGNhbGxlZCwKLSAgICAgICAgLy8gdG8g
bWF0Y2ggdGhlIGJlaGF2aW9yIG9uIHRoZSBNYWMuCi0gICAgICAgIGlmIChtX2hhc1JlcHJlc2Vu
dGF0aW9uKQotICAgICAgICAgICAgbG9hZGVyLT53cml0ZXIoKS0+c2V0RW5jb2RpbmcoIiIsIGZh
bHNlKTsKKyAgICBpZiAoIW1fcGx1Z2luVmlldykKICAgICAgICAgcmV0dXJuOwotICAgIH0KICAg
ICBpZiAobV9wbHVnaW5WaWV3LT5pc1BsdWdpblZpZXcoKSkKICAgICAgICAgbV9wbHVnaW5WaWV3
LT5kaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgbV9wbHVnaW5WaWV3ID0gMDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5oCShyZXZpc2lvbiAxMTU5ODkpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQAog
CiAgICAgdmlydHVhbCBib29sIGhhc1dlYlZpZXcoKSBjb25zdDsgLy8gbWFpbmx5IGZvciBhc3Nl
cnRpb25zCiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50TG9h
ZGVyKik7CisgICAgdmlydHVhbCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExvYWRl
ciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBmb3JjZUxheW91dCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBmb3JjZUxheW91dEZvck5vbkhUTUwoKTsKIApAQCAtMTM4LDcgKzEzOCw3IEBACiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9s
aWN5RnVuY3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKERvY3VtZW50TG9hZGVyKik7CisgICAgdmlydHVhbCB2
b2lkIHJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShEb2N1bWVudExvYWRlciopIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwb3N0UHJvZ3Jlc3NTdGFydGVkTm90
aWZpY2F0aW9uKCk7CkBAIC0yNzIsMTEgKzI3Miw2IEBACiAgICAgV2ViQ29yZTo6UGx1Z2luVmll
dyogbV9wbHVnaW5WaWV3OwogICAgIGJvb2wgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbjsKIAot
ICAgIC8vIFRydWUgaWYgbWFrZVJlcHJlc2VudGF0aW9uIHdhcyBjYWxsZWQuICBXZSBkb24ndCBh
Y3R1YWxseSBoYXZlIGEgY29uY2VwdAotICAgIC8vIG9mIGEgInJlcHJlc2VudGF0aW9uIiwgYnV0
IHdlIG5lZWQgdG8ga25vdyB3aGVuIHdlJ3JlIGV4cGVjdGVkIHRvIGhhdmUgb25lLgotICAgIC8v
IFNlZSBmaW5pc2hlZExvYWRpbmcoKS4KLSAgICBib29sIG1faGFzUmVwcmVzZW50YXRpb247Ci0K
ICAgICBLVVJMIG1fbGFzdFJlcXVlc3RlZFVybDsKICAgICBib29sIG1faXNPcmlnaW5hdGluZ0xv
YWQ7CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNTk5OCkKKysrIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTIt
MDUtMDMgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBEb24n
dCByZXF1aXJlIEZyYW1lTG9hZGVyQ2xpZW50IHRvIG1hbnVmYWN0dXJlIGEgY29tbWl0RGF0YSgp
IGNhbGwgZm9yIGVtcHR5IGRvY3VtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg1NTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6Om1ha2VSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpyZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUpOgorICAgICAgICAoRnJhbWVMb2FkZXJD
bGllbnRRdCk6CisKIDIwMTItMDUtMDMgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmVtb3ZpbmcgbGluZSBpbiBjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVz
IHRoYXQgZW5mb3JjZXMgYSBtaW5pbXVtIHNjYWxlIGZhY3RvciB0byBuZXZlciBhbGxvdyB6b29t
aW5nIG91dCBtb3JlIHRoYW4gdmlld3BvcnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAkocmV2aXNpb24g
MTE1OTg5KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQAogCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIG1h
a2VSZXByZXNlbnRhdGlvbihXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOworICAgICAgICB2aXJ0
dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgeyB9
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmb3JjZUxheW91dCgpOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZm9yY2VMYXlvdXRGb3JOb25IVE1MKCk7CiAKQEAgLTEwNSw3ICsxMDUsNyBAQAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpGb3JtU3RhdGU+KSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
V2lsbFN1Ym1pdEZvcm0oV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiwgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCByZXZlcnRU
b1Byb3Zpc2lvbmFsU3RhdGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciopIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24oKTsKQEAg
LTE5OCw4ICsxOTgsNiBAQAogICAgICAgICAvLyBQbHVnaW4gdmlldyB0byByZWRpcmVjdCBkYXRh
IHRvCiAgICAgICAgIFdlYkNvcmU6OlBsdWdpblZpZXcqIG1fcGx1Z2luVmlldzsKICAgICAgICAg
Ym9vbCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luOwotCi0gICAgICAgIGJvb2wgbV9oYXNSZXBy
ZXNlbnRhdGlvbjsKICAgICB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCShyZXZpc2lv
biAxMTU5ODkpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNiBAQAogICAgICwg
bV9sb2FkaW5nRXJyb3JQYWdlKGZhbHNlKQogICAgICwgbV9wbHVnaW5WaWV3KDApCiAgICAgLCBt
X2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luKGZhbHNlKQotICAgICwgbV9oYXNSZXByZXNlbnRhdGlv
bihmYWxzZSkKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7CiB9CkBAIC02NjUsMTEgKzY2NCw2IEBA
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6bWFr
ZVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikKLXsKLSAgICBtX2hhc1Jl
cHJlc2VudGF0aW9uID0gdHJ1ZTsKLX0KLQogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6Zm9yY2VM
YXlvdXQoKQogewogICAgIEZyYW1lVmlldyogdmlldyA9IGNvcmUobV9mcmFtZSktPnZpZXcoKTsK
QEAgLTg4MywxMSArODc3LDYgQEAKICAgICAgICAgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25f
Y2FuY2VsKG1fcG9saWN5RGVjaXNpb24pOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojpy
ZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKQotewotICAg
IG1faGFzUmVwcmVzZW50YXRpb24gPSB0cnVlOwotfQotCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
Ojp3aWxsQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CkBAIC05MzAsMTQgKzkxOSw5IEBACiAgICAgcmV0dXJuIFN0cmluZygpOwog
fQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikKIHsKLSAgICBpZiAoIW1fcGx1Z2luVmlldykg
ewotICAgICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBjcmVhdGUgYW4gZW1wdHkgZG9jdW1l
bnQsCi0gICAgICAgIC8vIGJ1dCBpdCBoYXMgdG8gYmUgc2tpcHBlZCBpbiB0aGUgcHJvdmlzaW9u
YWwgcGhhc2UuCi0gICAgICAgIGlmIChtX2hhc1JlcHJlc2VudGF0aW9uKQotICAgICAgICAgICAg
ZG9jdW1lbnRMb2FkZXItPndyaXRlcigpLT5zZXRFbmNvZGluZygiIiwgZmFsc2UpOwotICAgIH0g
ZWxzZSB7CisgICAgaWYgKG1fcGx1Z2luVmlldykgewogICAgICAgICBtX3BsdWdpblZpZXctPmRp
ZEZpbmlzaExvYWRpbmcoKTsKICAgICAgICAgbV9wbHVnaW5WaWV3ID0gMDsKICAgICAgICAgbV9o
YXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2
aXNpb24gMTE1OTk4KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDUtMDMgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBEb24ndCByZXF1aXJlIEZyYW1lTG9hZGVyQ2xpZW50IHRv
IG1hbnVmYWN0dXJlIGEgY29tbWl0RGF0YSgpIGNhbGwgZm9yIGVtcHR5IGRvY3VtZW50cy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NTMzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50OjpGcmFtZUxvYWRlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorICAgICAgICAoV2ViS2l0
OjpGcmFtZUxvYWRlckNsaWVudDo6bWFrZVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6RnJhbWVMb2FkZXJDbGllbnQ6OnJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZSk6CisgICAgICAg
IChGcmFtZUxvYWRlckNsaWVudCk6CisKIDIwMTItMDUtMDMgIEZhZHkgU2FtdWVsICA8ZnNhbXVl
bEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZpbmcgbGluZSBpbiBjb21wdXRlVmlld3Bv
cnRBdHRyaWJ1dGVzIHRoYXQgZW5mb3JjZXMgYSBtaW5pbXVtIHNjYWxlIGZhY3RvciB0byBuZXZl
ciBhbGxvdyB6b29taW5nIG91dCBtb3JlIHRoYW4gdmlld3BvcnQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cJKHJldmlzaW9uIDExNTk5OCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA1LTAzICBOYXRlIENoYXBpbiAgPGph
cGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRG9uJ3QgcmVxdWlyZSBGcmFtZUxvYWRlckNs
aWVudCB0byBtYW51ZmFjdHVyZSBhIGNvbW1pdERhdGEoKSBjYWxsIGZvciBlbXB0eSBkb2N1bWVu
dHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTUz
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisKIDIwMTItMDQtMjcgIEpvbiBMZWUgIDxq
b25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIE1pZ3JhdGUgcGVybWlzc2lvbiBmdW5jdGlvbnMg
dG8gTm90aWZpY2F0aW9uIGZyb20gTm90aWZpY2F0aW9uQ2VudGVyCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCShyZXZpc2lvbiAxMTU5ODkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxNywxMyAr
NTE3LDggQEAKICAgICBtX21hbnVhbExvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3Ro
KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExv
YWRpbmcoRG9jdW1lbnRMb2FkZXIqKQogewotICAgIC8vIFRlbGxpbmcgdGhlIGZyYW1lIHdlIHJl
Y2VpdmVkIHNvbWUgZGF0YSBhbmQgcGFzc2luZyAwIGFzIHRoZSBkYXRhIGlzIG91cgotICAgIC8v
IHdheSB0byBnZXQgd29yayBkb25lIHRoYXQgaXMgbm9ybWFsbHkgZG9uZSB3aGVuIHRoZSBmaXJz
dCBiaXQgb2YgZGF0YSBpcwotICAgIC8vIHJlY2VpdmVkLCBldmVuIGZvciB0aGUgY2FzZSBvZiBh
IGRvY3VtZW50IHdpdGggbm8gZGF0YSAobGlrZSBhYm91dDpibGFuaykKLSAgICBjb21taXR0ZWRM
b2FkKGxvYWRlciwgMCwgMCk7Ci0KICAgICBpZiAoIW1fbWFudWFsTG9hZGVyKQogICAgICAgICBy
ZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAJKHJldmlzaW9uIDExNTk4OSkKKysrIFNvdXJjZS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDQ0LDE0ICs0NDQsOSBAQAogfQogCiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRX
eDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50V3g6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopCiB7Ci0gICAgaWYg
KCFtX3BsdWdpblZpZXcpIHsKLSAgICAgICAgaWYgKG1fZmlyc3REYXRhKSB7Ci0gICAgICAgICAg
ICBsb2FkZXItPndyaXRlcigpLT5zZXRFbmNvZGluZyhtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05h
bWUoKSwgZmFsc2UpOwotICAgICAgICAgICAgbV9maXJzdERhdGEgPSBmYWxzZTsKLSAgICAgICAg
fQotICAgIH0gZWxzZSB7CisgICAgaWYgKG1fcGx1Z2luVmlldykgewogICAgICAgICBtX3BsdWdp
blZpZXctPmRpZEZpbmlzaExvYWRpbmcoKTsKICAgICAgICAgbV9wbHVnaW5WaWV3ID0gMDsKICAg
ICAgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwpAQCAtNjUxLDEwICs2NDYs
NyBAQAogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnNldE1haW5Eb2N1bWVudEVycm9yKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKQogewotICAgIGlmIChtX2ZpcnN0RGF0YSkgewotICAgICAgICBsb2FkZXItPndyaXRlcigp
LT5zZXRFbmNvZGluZyhtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgZmFsc2UpOwotICAg
ICAgICBtX2ZpcnN0RGF0YSA9IGZhbHNlOwotICAgIH0KKyAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCiAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgbW92ZWQgaW50byBXZWJDb3Jl
LgpAQCAtNzYxLDcgKzc1Myw2IEBACiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBtX3Jl
c3BvbnNlID0gcmVzcG9uc2U7Ci0gICAgbV9maXJzdERhdGEgPSB0cnVlOwogfQogCiB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZCwgaW50IGxlbmd0aCkKQEAgLTc3Niwx
MCArNzY3LDYgQEAKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEZhaWxM
b2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291
cmNlRXJyb3ImKQogewotICAgIGlmIChtX2ZpcnN0RGF0YSkgewotICAgICAgICBsb2FkZXItPndy
aXRlcigpLT5zZXRFbmNvZGluZyhtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgZmFsc2Up
OwotICAgICAgICBtX2ZpcnN0RGF0YSA9IGZhbHNlOwotICAgIH0KICAgICBpZiAobV93ZWJWaWV3
KSB7CiAgICAgICAgIFdlYktpdDo6V2ViVmlld0xvYWRFdmVudCB3a0V2ZW50KG1fd2ViVmlldyk7
CiAgICAgICAgIHdrRXZlbnQuU2V0U3RhdGUoV0VCVklFV19MT0FEX0ZBSUxFRCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFd4LmgJKHJldmlzaW9uIDExNTk4OSkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFd4LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0MSw3ICsyNDEsNiBA
QAogICAgICAgICBQbHVnaW5WaWV3KiBtX3BsdWdpblZpZXc7CiAgICAgICAgIGJvb2wgbV9oYXNT
ZW50UmVzcG9uc2VUb1BsdWdpbjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNl
OwotICAgICAgICBib29sIG1fZmlyc3REYXRhOwogICAgIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMTU5OTgpCisrKyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA1LTAzICBOYXRlIENoYXBpbiAgPGph
cGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRG9uJ3QgcmVxdWlyZSBGcmFtZUxvYWRlckNs
aWVudCB0byBtYW51ZmFjdHVyZSBhIGNvbW1pdERhdGEoKSBjYWxsIGZvciBlbXB0eSBkb2N1bWVu
dHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTUz
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
S2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50V3g6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFd4OjpzZXRNYWluRG9jdW1lbnRFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEZhaWxMb2Fk
aW5nKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKKyAg
ICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50V3gpOgorCiAyMDEyLTA0LTE4ICBKb24gSG9uZXljdXR0
ICA8amhvbmV5Y3V0dEBhcHBsZS5jb20+CiAKICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudCgpIHNob3VsZCBiZSBnaXZlbiBtb3JlCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTU5OTgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNS0wMyAgTmF0ZSBD
aGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERvbid0IHJlcXVpcmUgRnJh
bWVMb2FkZXJDbGllbnQgdG8gbWFudWZhY3R1cmUgYSBjb21taXREYXRhKCkgY2FsbCBmb3IgZW1w
dHkgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODU1MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJI
VE1MUmVwcmVzZW50YXRpb24gZmluaXNoZWRMb2FkaW5nV2l0aERhdGFTb3VyY2U6XSk6CisKIDIw
MTItMDUtMDIgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIE1pZ3JhdGUg
cGVybWlzc2lvbiBmdW5jdGlvbnMgdG8gTm90aWZpY2F0aW9uIGZyb20gTm90aWZpY2F0aW9uQ2Vu
dGVyCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5tbQkocmV2aXNpb24gMTE1OTg5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNCwxNCAr
MjE0LDYgQEAKIAogICAgIGlmICghd2ViRnJhbWUpCiAgICAgICAgIHJldHVybjsKLQotICAgIGlm
ICghW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7Ci0gICAgICAgIC8vIFRlbGxpbmcg
dGhlIGZyYW1lIHdlIHJlY2VpdmVkIHNvbWUgZGF0YSBhbmQgcGFzc2luZyBuaWwgYXMgdGhlIGRh
dGEgaXMgb3VyCi0gICAgICAgIC8vIHdheSB0byBnZXQgd29yayBkb25lIHRoYXQgaXMgbm9ybWFs
bHkgZG9uZSB3aGVuIHRoZSBmaXJzdCBiaXQgb2YgZGF0YSBpcwotICAgICAgICAvLyByZWNlaXZl
ZCwgZXZlbiBmb3IgdGhlIGNhc2Ugb2YgYSBkb2N1bWVudCB3aXRoIG5vIGRhdGEgKGxpa2UgYWJv
dXQ6YmxhbmspLgotICAgICAgICBbd2ViRnJhbWUgX2NvbW1pdERhdGE6bmlsXTsKLSAgICB9Ci0K
ICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW3dlYkZyYW1lIHdlYlZpZXddOwogICAgIGlmIChbd2Vi
VmlldyBtYWluRnJhbWVdID09IHdlYkZyYW1lICYmIFt3ZWJWaWV3IGlzRWRpdGFibGVdKQogICAg
ICAgICBjb3JlKHdlYkZyYW1lKS0+ZWRpdG9yKCktPmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxl
bWVudCgpOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFdpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCShyZXZpc2lvbiAxMTU5ODkp
CisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
V2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDMsMTIgKzQ0MywxMCBAQAogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpmaW5pc2hlZExv
YWRpbmcoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKQordm9pZCBGcmFtZUxvYWRlckNs
aWVudFdpbkNFOjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKQogewotICAgIGlmICgh
bV9wbHVnaW5WaWV3KSB7Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyLT53cml0ZXIoKS0+c2V0RW5j
b2RpbmcobV9yZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCksIGZhbHNlKTsKKyAgICBpZiAoIW1f
cGx1Z2luVmlldykKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIG1fcGx1Z2luVmlldy0+
ZGlkRmluaXNoTG9hZGluZygpOwogICAgIG1fcGx1Z2luVmlldyA9IDA7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbmNlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNl
L0NoYW5nZUxvZwkocmV2aXNpb24gMTE1OTk4KQorKysgU291cmNlL1dlYktpdC93aW5jZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNS0wMyAgTmF0ZSBD
aGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERvbid0IHJlcXVpcmUgRnJh
bWVMb2FkZXJDbGllbnQgdG8gbWFudWZhY3R1cmUgYSBjb21taXREYXRhKCkgY2FsbCBmb3IgZW1w
dHkgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODU1MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpmaW5pc2hlZExvYWRpbmcpOgorCiAy
MDEyLTA0LTE4ICBKb24gSG9uZXljdXR0ICA8amhvbmV5Y3V0dEBhcHBsZS5jb20+CiAKICAgICAg
ICAgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudCgpIHNob3Vs
ZCBiZSBnaXZlbiBtb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHJldmlzaW9uIDExNTk4OSkKKysr
IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAKIAogICAgIHZvaWQgY2FsbFBvbGljeUZ1
bmN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24sIFBvbGljeUFjdGlvbik7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50TG9hZGVyKik7CisgICAgdmlydHVhbCB2
b2lkIG1ha2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExvYWRlciopIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBmb3JjZUxheW91dCgpOwogICAgIHZpcnR1YWwgdm9pZCBmb3JjZUxheW91dEZvck5vbkhU
TUwoKTsKIApAQCAtMTIyLDcgKzEyMiw3IEBACiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2ls
bFNlbmRTdWJtaXRFdmVudChXVEY6OlBhc3NSZWZQdHI8Rm9ybVN0YXRlPikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiwgV1RG
OjpQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOwogCi0gICAgdmlydHVhbCB2b2lkIHJldmVydFRvUHJv
dmlzaW9uYWxTdGF0ZShEb2N1bWVudExvYWRlciopOworICAgIHZpcnR1YWwgdm9pZCByZXZlcnRU
b1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1lbnRMb2FkZXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9y
Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcG9zdFByb2dyZXNzU3RhcnRlZE5vdGlmaWNhdGlvbigp
OwpAQCAtMjE3LDcgKzIxNyw2IEBACiAgICAgLy8gUGx1Z2luIHZpZXcgdG8gcmVkaXJlY3QgZGF0
YSB0bwogICAgIFBsdWdpblZpZXcqIG1fcGx1Z2luVmlldzsKICAgICBib29sIG1faGFzU2VudFJl
c3BvbnNlVG9QbHVnaW47Ci0gICAgYm9vbCBtX2hhc1JlcHJlc2VudGF0aW9uOwogfTsKIAogfQpJ
bmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRF
ZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gMTE1OTg5KQorKysgU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MCw3ICs3MCw2IEBACiAgICAgLCBtX2N1c3RvbVVzZXJBZ2VudCgiIikKICAgICAs
IG1fcGx1Z2luVmlldygwKQogICAgICwgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbihmYWxzZSkK
LSAgICAsIG1faGFzUmVwcmVzZW50YXRpb24oZmFsc2UpCiB7CiB9CiAKQEAgLTUzMCwxMSArNTI5
LDYgQEAKICAgICBld2tfZnJhbWVfeHNzX2RldGVjdGVkKG1fZnJhbWUsICZ4c3NJbmZvKTsKIH0K
IAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6bWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50
TG9hZGVyKikKLXsKLSAgICBtX2hhc1JlcHJlc2VudGF0aW9uID0gdHJ1ZTsKLX0KLQogdm9pZCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6Zm9yY2VMYXlvdXQoKQogewogICAgIGV3a19mcmFtZV9mb3Jj
ZV9sYXlvdXQobV9mcmFtZSk7CkBAIC02NjMsMTEgKzY1Nyw2IEBACiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6cmV2ZXJ0VG9Qcm92aXNpb25h
bFN0YXRlKERvY3VtZW50TG9hZGVyKikKLXsKLSAgICBtX2hhc1JlcHJlc2VudGF0aW9uID0gdHJ1
ZTsKLX0KLQogdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6d2lsbENoYW5nZVRpdGxlKERvY3Vt
ZW50TG9hZGVyKikKIHsKICAgICAvLyBubyBuZWVkIGZvciwgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0
bGUgaXMgdGhlIHJpZ2h0IGNhbGxiYWNrCkBAIC03MTYsMTMgKzcwNSwxMCBAQAogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZmluaXNoZWRMb2Fk
aW5nKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcikKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopCiB7Ci0gICAgaWYgKCFtX3Bs
dWdpblZpZXcpIHsKLSAgICAgICAgaWYgKG1faGFzUmVwcmVzZW50YXRpb24pCi0gICAgICAgICAg
ICBkb2N1bWVudExvYWRlci0+d3JpdGVyKCktPnNldEVuY29kaW5nKCIiLCBmYWxzZSk7CisgICAg
aWYgKCFtX3BsdWdpblZpZXcpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgbV9wbHVnaW5W
aWV3LT5kaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgbV9wbHVnaW5WaWV3ID0gMDsKICAgICBtX2hh
c1NlbnRSZXNwb25zZVRvUGx1Z2luID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxMTU5OTgpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wNS0wMyAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIERvbid0IHJlcXVpcmUgRnJhbWVMb2FkZXJDbGllbnQgdG8g
bWFudWZhY3R1cmUgYSBjb21taXREYXRhKCkgY2FsbCBmb3IgZW1wdHkgZG9jdW1lbnRzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1MzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpGcmFtZUxvYWRlckNsaWVudEVmbCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpmaW5pc2hlZExvYWRpbmcp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6bWFrZVJlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpyZXZlcnRUb1Byb3Zpc2lv
bmFsU3RhdGUpOgorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRFZmwpOgorCiAyMDEyLTA1LTAz
ICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92aW5n
IGxpbmUgaW4gY29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyB0aGF0IGVuZm9yY2VzIGEgbWluaW11
bSBzY2FsZSBmYWN0b3IgdG8gbmV2ZXIgYWxsb3cgem9vbWluZyBvdXQgbW9yZSB0aGFuIHZpZXdw
b3J0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMTE1
OTg5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3MCw4ICs4NzAsNiBAQAogdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBs
b2FkZXIpCiB7CiAgICAgaWYgKCFtX3BsdWdpblZpZXcpIHsKLSAgICAgICAgY29tbWl0dGVkTG9h
ZChsb2FkZXIsIDAsIDApOwotCiAgICAgICAgIGlmIChtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50
YXRpb24pIHsKICAgICAgICAgICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7
CiAgICAgICAgICAgICBpZiAoIXdlYlBhZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTU5
OTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMi0wNS0wMyAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIERvbid0IHJlcXVpcmUgRnJhbWVMb2FkZXJDbGllbnQgdG8gbWFudWZhY3R1cmUg
YSBjb21taXREYXRhKCkgY2FsbCBmb3IgZW1wdHkgZG9jdW1lbnRzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1MzMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToKKwogMjAxMi0wNS0wMyAgRmFkeSBTYW11ZWwg
IDxmc2FtdWVsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmluZyBsaW5lIGluIGNvbXB1
dGVWaWV3cG9ydEF0dHJpYnV0ZXMgdGhhdCBlbmZvcmNlcyBhIG1pbmltdW0gc2NhbGUgZmFjdG9y
IHRvIG5ldmVyIGFsbG93IHpvb21pbmcgb3V0IG1vcmUgdGhhbiB2aWV3cG9ydAo=
</data>
<flag name="commit-queue"
          id="145835"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140084</attachid>
            <date>2012-05-03 13:52:07 -0700</date>
            <delta_ts>2012-05-04 09:20:45 -0700</delta_ts>
            <desc>fix gtk compile</desc>
            <filename>fl2.txt</filename>
            <type>text/plain</type>
            <size>27074</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEJsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwCShyZXZp
c2lvbiAxMTYwMDApCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYzLDE3
ICszNjMsMTIgQEAKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+d3Jp
dGVyKCktPmFkZERhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVu
dEJsYWNrQmVycnk6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQordm9p
ZCBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExv
YWRlciopCiB7CiAgICAgaWYgKG1fcGx1Z2luVmlldykgewogICAgICAgICBtX3BsdWdpblZpZXct
PmRpZEZpbmlzaExvYWRpbmcoKTsKICAgICAgICAgbV9wbHVnaW5WaWV3ID0gMDsKICAgICAgICAg
bV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IC8vIFRlbGxpbmcgdGhlIGZyYW1lIHdlIHJlY2VpdmVkIHNvbWUgZGF0YSBhbmQgcGFzc2luZyAw
IGFzIHRoZSBkYXRhIGlzIG91cgotICAgICAgICAvLyB3YXkgdG8gZ2V0IHdvcmsgZG9uZSB0aGF0
IGlzIG5vcm1hbGx5IGRvbmUgd2hlbiB0aGUgZmlyc3QgYml0IG9mIGRhdGEgaXMKLSAgICAgICAg
Ly8gcmVjZWl2ZWQsIGV2ZW4gZm9yIHRoZSBjYXNlIG9mIGEgZG9jdW1lbnQgd2l0aCBubyBkYXRh
IChsaWtlIGFib3V0OmJsYW5rKS4KLSAgICAgICAgY29tbWl0dGVkTG9hZChsb2FkZXIsIDAsIDAp
OwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMTYwMDApCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDUtMDMgIE5hdGUgQ2hhcGluICA8amFwaGV0
QGNocm9taXVtLm9yZz4KKworICAgICAgICBEb24ndCByZXF1aXJlIEZyYW1lTG9hZGVyQ2xpZW50
IHRvIG1hbnVmYWN0dXJlIGEgY29tbWl0RGF0YSgpIGNhbGwgZm9yIGVtcHR5IGRvY3VtZW50cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NTMzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpmaW5pc2hlZExvYWRpbmcpOgorCiAyMDEy
LTA1LTAzICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
bW92aW5nIGxpbmUgaW4gY29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyB0aGF0IGVuZm9yY2VzIGEg
bWluaW11bSBzY2FsZSBmYWN0b3IgdG8gbmV2ZXIgYWxsb3cgem9vbWluZyBvdXQgbW9yZSB0aGFu
IHZpZXdwb3J0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDExNjAwMCkKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExMCw3ICsxMTAsNiBAQAogCiBGcmFtZUxvYWRlckNsaWVudEltcGw6OkZyYW1lTG9hZGVy
Q2xpZW50SW1wbChXZWJGcmFtZUltcGwqIGZyYW1lKQogICAgIDogbV93ZWJGcmFtZShmcmFtZSkK
LSAgICAsIG1faGFzUmVwcmVzZW50YXRpb24oZmFsc2UpCiAgICAgLCBtX3NlbnRJbml0aWFsUmVz
cG9uc2VUb1BsdWdpbihmYWxzZSkKICAgICAsIG1fbmV4dE5hdmlnYXRpb25Qb2xpY3koV2ViTmF2
aWdhdGlvblBvbGljeUlnbm9yZSkKIHsKQEAgLTI3MiwxMSArMjcxLDYgQEAKICAgICBtX3dlYkZy
YW1lLT5jcmVhdGVGcmFtZVZpZXcoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6
Om1ha2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExvYWRlciopCi17Ci0gICAgbV9oYXNSZXByZXNl
bnRhdGlvbiA9IHRydWU7Ci19Ci0KIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpmb3JjZUxh
eW91dCgpCiB7CiAgICAgLy8gRklYTUUKQEAgLTEwNDksMTEgKzEwNDMsNiBAQAogICAgIChtX3dl
YkZyYW1lLT5mcmFtZSgpLT5sb2FkZXIoKS0+cG9saWN5Q2hlY2tlcigpLT4qZnVuY3Rpb24pKFBv
bGljeVVzZSk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpyZXZlcnRUb1Byb3Zp
c2lvbmFsU3RhdGUoRG9jdW1lbnRMb2FkZXIqKQotewotICAgIG1faGFzUmVwcmVzZW50YXRpb24g
PSB0cnVlOwotfQotCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6c2V0TWFpbkRvY3VtZW50
RXJyb3IoRG9jdW1lbnRMb2FkZXIqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewpAQCAtMTE1MCwx
OCArMTEzOSwxMiBAQAogICAgIH0KIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmZp
bmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogZGwpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
SW1wbDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikKIHsKICAgICBpZiAobV9wbHVn
aW5XaWRnZXQpIHsKICAgICAgICAgbV9wbHVnaW5XaWRnZXQtPmRpZEZpbmlzaExvYWRpbmcoKTsK
ICAgICAgICAgbV9wbHVnaW5XaWRnZXQgPSAwOwogICAgICAgICBtX3NlbnRJbml0aWFsUmVzcG9u
c2VUb1BsdWdpbiA9IGZhbHNlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFRoaXMgaXMgbmVj
ZXNzYXJ5IHRvIGNyZWF0ZSBhbiBlbXB0eSBkb2N1bWVudC4gU2VlIGJ1ZyA2MzQwMDQuCi0gICAg
ICAgIC8vIEhvd2V2ZXIsIHdlIG9ubHkgd2FudCB0byBkbyB0aGlzIGlmIG1ha2VSZXByZXNlbnRh
dGlvbiBoYXMgYmVlbiBjYWxsZWQsIHRvCi0gICAgICAgIC8vIG1hdGNoIHRoZSBiZWhhdmlvciBv
biB0aGUgTWFjLgotICAgICAgICBpZiAobV9oYXNSZXByZXNlbnRhdGlvbikKLSAgICAgICAgICAg
IGRsLT53cml0ZXIoKS0+c2V0RW5jb2RpbmcoIiIsIGZhbHNlKTsKICAgICB9CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5oCShyZXZpc2lvbiAxMTYwMDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQAogCiAg
ICAgdmlydHVhbCBib29sIGhhc1dlYlZpZXcoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaGFz
RnJhbWVWaWV3KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciopOworICAgIHZpcnR1YWwgdm9pZCBtYWtlUmVwcmVzZW50
YXRpb24oV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZm9y
Y2VMYXlvdXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VMYXlvdXRGb3JOb25IVE1MKCk7CiAg
ICAgdmlydHVhbCB2b2lkIHNldENvcGllc09uU2Nyb2xsKCk7CkBAIC0xMTgsNyArMTE4LDcgQEAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNl
bmRTdWJtaXRFdmVudChQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rp
b24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPik7Ci0gICAgdmlydHVhbCB2b2lkIHJl
dmVydFRvUHJvdmlzaW9uYWxTdGF0ZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOworICAgIHZp
cnR1YWwgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIHsgfQpAQCAtMjI1LDExICsyMjUsNiBA
QAogICAgIC8vIHRoZSB3ZWIgZnJhbWUgb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gZXhpc3QuCiAg
ICAgV2ViRnJhbWVJbXBsKiBtX3dlYkZyYW1lOwogCi0gICAgLy8gVHJ1ZSBpZiBtYWtlUmVwcmVz
ZW50YXRpb24gd2FzIGNhbGxlZC4gIFdlIGRvbid0IGFjdHVhbGx5IGhhdmUgYSBjb25jZXB0Ci0g
ICAgLy8gb2YgYSAicmVwcmVzZW50YXRpb24iLCBidXQgd2UgbmVlZCB0byBrbm93IHdoZW4gd2Un
cmUgZXhwZWN0ZWQgdG8gaGF2ZSBvbmUuCi0gICAgLy8gU2VlIGZpbmlzaGVkTG9hZGluZygpLgot
ICAgIGJvb2wgbV9oYXNSZXByZXNlbnRhdGlvbjsKLQogICAgIC8vIFVzZWQgdG8gaGVscCB0cmFj
ayBjbGllbnQgcmVkaXJlY3RzLiBXaGVuIGEgcHJvdmlzaW9uYWwgbG9hZCBzdGFydHMsIGl0CiAg
ICAgLy8gaGFzIG5vIHJlZGlyZWN0cyBpbiBpdHMgY2hhaW4uIEJ1dCBpbiB0aGUgY2FzZSBvZiBj
bGllbnQgcmVkaXJlY3RzLCB3ZSB3YW50CiAgICAgLy8gdG8gYWRkIHRoYXQgaW5pdGlhbCBsb2Fk
IGFzIGEgcmVkaXJlY3QuIFdoZW4gd2UgZ2V0IGEgbmV3IHByb3Zpc2lvbmFsIGxvYWQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTYwMDApCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisy
MDEyLTA1LTAzICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
RG9uJ3QgcmVxdWlyZSBGcmFtZUxvYWRlckNsaWVudCB0byBtYW51ZmFjdHVyZSBhIGNvbW1pdERh
dGEoKSBjYWxsIGZvciBlbXB0eSBkb2N1bWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTUzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6RnJhbWVMb2FkZXJDbGllbnRJ
bXBsKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGll
bnRJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6bWFrZVJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpy
ZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUpOgorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRJbXBs
KToKKwogMjAxMi0wNS0wMyAgQW50b255IFNhcmdlbnQgIDxhc2FyZ2VudEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgQWRkIG1ldGhvZHMgdG8gY3JlYXRlIFdlYkFycmF5QnVmZmVyL1dlYkFycmF5
QnVmZmVyVmlldyBmcm9tIHY4IG9iamVjdHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAkocmV2aXNpb24g
MTE2MDAwKQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDcgKzIxMiw2IEBACiAgICAgLCBtX3dl
YkZyYW1lKDApCiAgICAgLCBtX3BsdWdpblZpZXcoMCkKICAgICAsIG1faGFzU2VudFJlc3BvbnNl
VG9QbHVnaW4oZmFsc2UpCi0gICAgLCBtX2hhc1JlcHJlc2VudGF0aW9uKGZhbHNlKQogICAgICwg
bV9pc09yaWdpbmF0aW5nTG9hZChmYWxzZSkKIHsKIH0KQEAgLTMxMiwxMiArMzExLDcgQEAKIHsK
IH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjptYWtlUmVwcmVzZW50YXRpb24oRG9jdW1l
bnRMb2FkZXIqKQotewotICAgIG1faGFzUmVwcmVzZW50YXRpb24gPSB0cnVlOwotfQogCi0KIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6Zm9yY2VMYXlvdXQoKQogewogICAgIEZyYW1lVmlldyog
dmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKQEAgLTU2NywxMiArNTYxLDYgQEAKIH0KIAogCi12b2lk
IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShEb2N1bWVudExv
YWRlciopCi17Ci0gICAgbV9oYXNSZXByZXNlbnRhdGlvbiA9IHRydWU7Ci19Ci0KLQogdm9pZCBG
cmFtZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJvZ3Jlc3NTdGFydGVkTm90aWZpY2F0aW9uKCkKIHsK
ICAgICBpZiAobV93ZWJGcmFtZSAmJiBtX2ZyYW1lLT5wYWdlKCkpCkBAIC02MjYsMTYgKzYxNCwx
MCBAQAogfQogCiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZmluaXNoZWRMb2FkaW5nKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmZpbmlzaGVk
TG9hZGluZyhEb2N1bWVudExvYWRlciopCiB7Ci0gICAgaWYgKCFtX3BsdWdpblZpZXcpIHsKLSAg
ICAgICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgdG8gY3JlYXRlIGFuIGVtcHR5IGRvY3VtZW50LiBT
ZWUgYnVnIDYzNDAwNC4KLSAgICAgICAgLy8gSG93ZXZlciwgd2Ugb25seSB3YW50IHRvIGRvIHRo
aXMgaWYgbWFrZVJlcHJlc2VudGF0aW9uIGhhcyBiZWVuIGNhbGxlZCwKLSAgICAgICAgLy8gdG8g
bWF0Y2ggdGhlIGJlaGF2aW9yIG9uIHRoZSBNYWMuCi0gICAgICAgIGlmIChtX2hhc1JlcHJlc2Vu
dGF0aW9uKQotICAgICAgICAgICAgbG9hZGVyLT53cml0ZXIoKS0+c2V0RW5jb2RpbmcoIiIsIGZh
bHNlKTsKKyAgICBpZiAoIW1fcGx1Z2luVmlldykKICAgICAgICAgcmV0dXJuOwotICAgIH0KICAg
ICBpZiAobV9wbHVnaW5WaWV3LT5pc1BsdWdpblZpZXcoKSkKICAgICAgICAgbV9wbHVnaW5WaWV3
LT5kaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgbV9wbHVnaW5WaWV3ID0gMDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5oCShyZXZpc2lvbiAxMTYwMDApCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQAog
CiAgICAgdmlydHVhbCBib29sIGhhc1dlYlZpZXcoKSBjb25zdDsgLy8gbWFpbmx5IGZvciBhc3Nl
cnRpb25zCiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50TG9h
ZGVyKik7CisgICAgdmlydHVhbCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExvYWRl
ciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBmb3JjZUxheW91dCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBmb3JjZUxheW91dEZvck5vbkhUTUwoKTsKIApAQCAtMTM4LDcgKzEzOCw3IEBACiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9s
aWN5RnVuY3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKERvY3VtZW50TG9hZGVyKik7CisgICAgdmlydHVhbCB2
b2lkIHJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShEb2N1bWVudExvYWRlciopIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwb3N0UHJvZ3Jlc3NTdGFydGVkTm90
aWZpY2F0aW9uKCk7CkBAIC0yNzIsMTEgKzI3Miw2IEBACiAgICAgV2ViQ29yZTo6UGx1Z2luVmll
dyogbV9wbHVnaW5WaWV3OwogICAgIGJvb2wgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbjsKIAot
ICAgIC8vIFRydWUgaWYgbWFrZVJlcHJlc2VudGF0aW9uIHdhcyBjYWxsZWQuICBXZSBkb24ndCBh
Y3R1YWxseSBoYXZlIGEgY29uY2VwdAotICAgIC8vIG9mIGEgInJlcHJlc2VudGF0aW9uIiwgYnV0
IHdlIG5lZWQgdG8ga25vdyB3aGVuIHdlJ3JlIGV4cGVjdGVkIHRvIGhhdmUgb25lLgotICAgIC8v
IFNlZSBmaW5pc2hlZExvYWRpbmcoKS4KLSAgICBib29sIG1faGFzUmVwcmVzZW50YXRpb247Ci0K
ICAgICBLVVJMIG1fbGFzdFJlcXVlc3RlZFVybDsKICAgICBib29sIG1faXNPcmlnaW5hdGluZ0xv
YWQ7CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjAwMCkKKysrIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTIt
MDUtMDMgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBEb24n
dCByZXF1aXJlIEZyYW1lTG9hZGVyQ2xpZW50IHRvIG1hbnVmYWN0dXJlIGEgY29tbWl0RGF0YSgp
IGNhbGwgZm9yIGVtcHR5IGRvY3VtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg1NTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6Om1ha2VSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpyZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUpOgorICAgICAgICAoRnJhbWVMb2FkZXJD
bGllbnRRdCk6CisKIDIwMTItMDUtMDMgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmVtb3ZpbmcgbGluZSBpbiBjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVz
IHRoYXQgZW5mb3JjZXMgYSBtaW5pbXVtIHNjYWxlIGZhY3RvciB0byBuZXZlciBhbGxvdyB6b29t
aW5nIG91dCBtb3JlIHRoYW4gdmlld3BvcnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAkocmV2aXNpb24g
MTE2MDAwKQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQAogCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIG1h
a2VSZXByZXNlbnRhdGlvbihXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOworICAgICAgICB2aXJ0
dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgeyB9
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmb3JjZUxheW91dCgpOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZm9yY2VMYXlvdXRGb3JOb25IVE1MKCk7CiAKQEAgLTEwNSw3ICsxMDUsNyBAQAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpGb3JtU3RhdGU+KSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
V2lsbFN1Ym1pdEZvcm0oV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiwgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCByZXZlcnRU
b1Byb3Zpc2lvbmFsU3RhdGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciopIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24oKTsKQEAg
LTE5OCw4ICsxOTgsNiBAQAogICAgICAgICAvLyBQbHVnaW4gdmlldyB0byByZWRpcmVjdCBkYXRh
IHRvCiAgICAgICAgIFdlYkNvcmU6OlBsdWdpblZpZXcqIG1fcGx1Z2luVmlldzsKICAgICAgICAg
Ym9vbCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luOwotCi0gICAgICAgIGJvb2wgbV9oYXNSZXBy
ZXNlbnRhdGlvbjsKICAgICB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCShyZXZpc2lv
biAxMTYwMDApCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNiBAQAogICAgICwg
bV9sb2FkaW5nRXJyb3JQYWdlKGZhbHNlKQogICAgICwgbV9wbHVnaW5WaWV3KDApCiAgICAgLCBt
X2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luKGZhbHNlKQotICAgICwgbV9oYXNSZXByZXNlbnRhdGlv
bihmYWxzZSkKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7CiB9CkBAIC02NjUsMTEgKzY2NCw2IEBA
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6bWFr
ZVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikKLXsKLSAgICBtX2hhc1Jl
cHJlc2VudGF0aW9uID0gdHJ1ZTsKLX0KLQogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6Zm9yY2VM
YXlvdXQoKQogewogICAgIEZyYW1lVmlldyogdmlldyA9IGNvcmUobV9mcmFtZSktPnZpZXcoKTsK
QEAgLTg4MywxMSArODc3LDYgQEAKICAgICAgICAgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25f
Y2FuY2VsKG1fcG9saWN5RGVjaXNpb24pOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojpy
ZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKQotewotICAg
IG1faGFzUmVwcmVzZW50YXRpb24gPSB0cnVlOwotfQotCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
Ojp3aWxsQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CkBAIC05MzAsMTQgKzkxOSw5IEBACiAgICAgcmV0dXJuIFN0cmluZygpOwog
fQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikKIHsKLSAgICBpZiAoIW1fcGx1
Z2luVmlldykgewotICAgICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBjcmVhdGUgYW4gZW1w
dHkgZG9jdW1lbnQsCi0gICAgICAgIC8vIGJ1dCBpdCBoYXMgdG8gYmUgc2tpcHBlZCBpbiB0aGUg
cHJvdmlzaW9uYWwgcGhhc2UuCi0gICAgICAgIGlmIChtX2hhc1JlcHJlc2VudGF0aW9uKQotICAg
ICAgICAgICAgZG9jdW1lbnRMb2FkZXItPndyaXRlcigpLT5zZXRFbmNvZGluZygiIiwgZmFsc2Up
OwotICAgIH0gZWxzZSB7CisgICAgaWYgKG1fcGx1Z2luVmlldykgewogICAgICAgICBtX3BsdWdp
blZpZXctPmRpZEZpbmlzaExvYWRpbmcoKTsKICAgICAgICAgbV9wbHVnaW5WaWV3ID0gMDsKICAg
ICAgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwpJbmRleDogU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTE2MDAwKQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDUtMDMgIE5hdGUgQ2hhcGluICA8
amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBEb24ndCByZXF1aXJlIEZyYW1lTG9hZGVy
Q2xpZW50IHRvIG1hbnVmYWN0dXJlIGEgY29tbWl0RGF0YSgpIGNhbGwgZm9yIGVtcHR5IGRvY3Vt
ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1
NTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkZyYW1lTG9hZGVyQ2xpZW50OjpGcmFtZUxvYWRlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorICAgICAg
ICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6bWFrZVJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OnJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZSk6
CisgICAgICAgIChGcmFtZUxvYWRlckNsaWVudCk6CisKIDIwMTItMDUtMDMgIEZhZHkgU2FtdWVs
ICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZpbmcgbGluZSBpbiBjb21w
dXRlVmlld3BvcnRBdHRyaWJ1dGVzIHRoYXQgZW5mb3JjZXMgYSBtaW5pbXVtIHNjYWxlIGZhY3Rv
ciB0byBuZXZlciBhbGxvdyB6b29taW5nIG91dCBtb3JlIHRoYW4gdmlld3BvcnQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjAwMCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA1LTAzICBOYXRlIENo
YXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRG9uJ3QgcmVxdWlyZSBGcmFt
ZUxvYWRlckNsaWVudCB0byBtYW51ZmFjdHVyZSBhIGNvbW1pdERhdGEoKSBjYWxsIGZvciBlbXB0
eSBkb2N1bWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NTUzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisKIDIwMTItMDQtMjcgIEpv
biBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIE1pZ3JhdGUgcGVybWlzc2lvbiBm
dW5jdGlvbnMgdG8gTm90aWZpY2F0aW9uIGZyb20gTm90aWZpY2F0aW9uQ2VudGVyCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxMTYwMDApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxNywxMyArNTE3LDggQEAKICAgICBtX21hbnVhbExvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0
YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2Fk
aW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpm
aW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKQogewotICAgIC8vIFRlbGxpbmcgdGhlIGZy
YW1lIHdlIHJlY2VpdmVkIHNvbWUgZGF0YSBhbmQgcGFzc2luZyAwIGFzIHRoZSBkYXRhIGlzIG91
cgotICAgIC8vIHdheSB0byBnZXQgd29yayBkb25lIHRoYXQgaXMgbm9ybWFsbHkgZG9uZSB3aGVu
IHRoZSBmaXJzdCBiaXQgb2YgZGF0YSBpcwotICAgIC8vIHJlY2VpdmVkLCBldmVuIGZvciB0aGUg
Y2FzZSBvZiBhIGRvY3VtZW50IHdpdGggbm8gZGF0YSAobGlrZSBhYm91dDpibGFuaykKLSAgICBj
b21taXR0ZWRMb2FkKGxvYWRlciwgMCwgMCk7Ci0KICAgICBpZiAoIW1fbWFudWFsTG9hZGVyKQog
ICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAJKHJldmlzaW9uIDExNjAwMCkKKysr
IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQ0LDE0ICs0NDQsOSBAQAogfQogCiAKLXZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRXeDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50V3g6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopCiB7
Ci0gICAgaWYgKCFtX3BsdWdpblZpZXcpIHsKLSAgICAgICAgaWYgKG1fZmlyc3REYXRhKSB7Ci0g
ICAgICAgICAgICBsb2FkZXItPndyaXRlcigpLT5zZXRFbmNvZGluZyhtX3Jlc3BvbnNlLnRleHRF
bmNvZGluZ05hbWUoKSwgZmFsc2UpOwotICAgICAgICAgICAgbV9maXJzdERhdGEgPSBmYWxzZTsK
LSAgICAgICAgfQotICAgIH0gZWxzZSB7CisgICAgaWYgKG1fcGx1Z2luVmlldykgewogICAgICAg
ICBtX3BsdWdpblZpZXctPmRpZEZpbmlzaExvYWRpbmcoKTsKICAgICAgICAgbV9wbHVnaW5WaWV3
ID0gMDsKICAgICAgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwpAQCAtNjUx
LDEwICs2NDYsNyBAQAogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnNldE1haW5Eb2N1bWVu
dEVycm9yKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKQogewotICAgIGlmIChtX2ZpcnN0RGF0YSkgewotICAgICAgICBsb2FkZXIt
PndyaXRlcigpLT5zZXRFbmNvZGluZyhtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgZmFs
c2UpOwotICAgICAgICBtX2ZpcnN0RGF0YSA9IGZhbHNlOwotICAgIH0KKyAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCiAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgbW92ZWQgaW50
byBXZWJDb3JlLgpAQCAtNzYxLDcgKzc1Myw2IEBACiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ICAgICBtX3Jlc3BvbnNlID0gcmVzcG9uc2U7Ci0gICAgbV9maXJzdERhdGEgPSB0cnVlOwogfQog
CiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGgoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZCwgaW50IGxlbmd0aCkK
QEAgLTc3NiwxMCArNzY3LDYgQEAKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRj
aERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcsIGNv
bnN0IFJlc291cmNlRXJyb3ImKQogewotICAgIGlmIChtX2ZpcnN0RGF0YSkgewotICAgICAgICBs
b2FkZXItPndyaXRlcigpLT5zZXRFbmNvZGluZyhtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUo
KSwgZmFsc2UpOwotICAgICAgICBtX2ZpcnN0RGF0YSA9IGZhbHNlOwotICAgIH0KICAgICBpZiAo
bV93ZWJWaWV3KSB7CiAgICAgICAgIFdlYktpdDo6V2ViVmlld0xvYWRFdmVudCB3a0V2ZW50KG1f
d2ViVmlldyk7CiAgICAgICAgIHdrRXZlbnQuU2V0U3RhdGUoV0VCVklFV19MT0FEX0ZBSUxFRCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRX
eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFd4LmgJKHJldmlzaW9uIDExNjAwMCkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2Vi
S2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0MSw3
ICsyNDEsNiBAQAogICAgICAgICBQbHVnaW5WaWV3KiBtX3BsdWdpblZpZXc7CiAgICAgICAgIGJv
b2wgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBt
X3Jlc3BvbnNlOwotICAgICAgICBib29sIG1fZmlyc3REYXRhOwogICAgIH07CiAKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d3gvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTYwMDApCisrKyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA1LTAzICBOYXRlIENo
YXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRG9uJ3QgcmVxdWlyZSBGcmFt
ZUxvYWRlckNsaWVudCB0byBtYW51ZmFjdHVyZSBhIGNvbW1pdERhdGEoKSBjYWxsIGZvciBlbXB0
eSBkb2N1bWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NTUzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpzZXRNYWluRG9jdW1lbnRFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERp
ZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
V3guaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50V3gpOgorCiAyMDEyLTA0LTE4ICBKb24g
SG9uZXljdXR0ICA8amhvbmV5Y3V0dEBhcHBsZS5jb20+CiAKICAgICAgICAgRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudCgpIHNob3VsZCBiZSBnaXZlbiBtb3Jl
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTYwMDApCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNS0w
MyAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERvbid0IHJl
cXVpcmUgRnJhbWVMb2FkZXJDbGllbnQgdG8gbWFudWZhY3R1cmUgYSBjb21taXREYXRhKCkgY2Fs
bCBmb3IgZW1wdHkgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODU1MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAg
ICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZmluaXNoZWRMb2FkaW5nV2l0aERhdGFTb3VyY2U6
XSk6CisKIDIwMTItMDUtMDIgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAg
IE1pZ3JhdGUgcGVybWlzc2lvbiBmdW5jdGlvbnMgdG8gTm90aWZpY2F0aW9uIGZyb20gTm90aWZp
Y2F0aW9uQ2VudGVyCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkhUTUxSZXByZXNlbnRhdGlvbi5tbQkocmV2aXNpb24gMTE2MDAwKQorKysgU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAg
LTIxNCwxNCArMjE0LDYgQEAKIAogICAgIGlmICghd2ViRnJhbWUpCiAgICAgICAgIHJldHVybjsK
LQotICAgIGlmICghW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7Ci0gICAgICAgIC8v
IFRlbGxpbmcgdGhlIGZyYW1lIHdlIHJlY2VpdmVkIHNvbWUgZGF0YSBhbmQgcGFzc2luZyBuaWwg
YXMgdGhlIGRhdGEgaXMgb3VyCi0gICAgICAgIC8vIHdheSB0byBnZXQgd29yayBkb25lIHRoYXQg
aXMgbm9ybWFsbHkgZG9uZSB3aGVuIHRoZSBmaXJzdCBiaXQgb2YgZGF0YSBpcwotICAgICAgICAv
LyByZWNlaXZlZCwgZXZlbiBmb3IgdGhlIGNhc2Ugb2YgYSBkb2N1bWVudCB3aXRoIG5vIGRhdGEg
KGxpa2UgYWJvdXQ6YmxhbmspLgotICAgICAgICBbd2ViRnJhbWUgX2NvbW1pdERhdGE6bmlsXTsK
LSAgICB9Ci0KICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW3dlYkZyYW1lIHdlYlZpZXddOwogICAg
IGlmIChbd2ViVmlldyBtYWluRnJhbWVdID09IHdlYkZyYW1lICYmIFt3ZWJWaWV3IGlzRWRpdGFi
bGVdKQogICAgICAgICBjb3JlKHdlYkZyYW1lKS0+ZWRpdG9yKCktPmFwcGx5RWRpdGluZ1N0eWxl
VG9Cb2R5RWxlbWVudCgpOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCShyZXZpc2lv
biAxMTYwMDApCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDMsMTIgKzQ0MywxMCBAQAog
ICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpm
aW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKQordm9pZCBGcmFt
ZUxvYWRlckNsaWVudFdpbkNFOjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKQogewot
ICAgIGlmICghbV9wbHVnaW5WaWV3KSB7Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyLT53cml0ZXIo
KS0+c2V0RW5jb2RpbmcobV9yZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCksIGZhbHNlKTsKKyAg
ICBpZiAoIW1fcGx1Z2luVmlldykKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIG1fcGx1
Z2luVmlldy0+ZGlkRmluaXNoTG9hZGluZygpOwogICAgIG1fcGx1Z2luVmlldyA9IDA7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbmNlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2MDAwKQorKysgU291cmNlL1dlYktpdC93
aW5jZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNS0w
MyAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERvbid0IHJl
cXVpcmUgRnJhbWVMb2FkZXJDbGllbnQgdG8gbWFudWZhY3R1cmUgYSBjb21taXREYXRhKCkgY2Fs
bCBmb3IgZW1wdHkgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODU1MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpmaW5pc2hlZExvYWRp
bmcpOgorCiAyMDEyLTA0LTE4ICBKb24gSG9uZXljdXR0ICA8amhvbmV5Y3V0dEBhcHBsZS5jb20+
CiAKICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVu
dCgpIHNob3VsZCBiZSBnaXZlbiBtb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHJldmlzaW9uIDEx
NjAwMCkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50RWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAKIAogICAgIHZvaWQgY2Fs
bFBvbGljeUZ1bmN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24sIFBvbGljeUFjdGlvbik7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50TG9hZGVyKik7CisgICAg
dmlydHVhbCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExvYWRlciopIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBmb3JjZUxheW91dCgpOwogICAgIHZpcnR1YWwgdm9pZCBmb3JjZUxheW91
dEZvck5vbkhUTUwoKTsKIApAQCAtMTIyLDcgKzEyMiw3IEBACiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChXVEY6OlBhc3NSZWZQdHI8Rm9ybVN0YXRlPikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5j
dGlvbiwgV1RGOjpQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOwogCi0gICAgdmlydHVhbCB2b2lkIHJl
dmVydFRvUHJvdmlzaW9uYWxTdGF0ZShEb2N1bWVudExvYWRlciopOworICAgIHZpcnR1YWwgdm9p
ZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1lbnRMb2FkZXIqKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZUVycm9yJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcG9zdFByb2dyZXNzU3RhcnRlZE5vdGlm
aWNhdGlvbigpOwpAQCAtMjE3LDcgKzIxNyw2IEBACiAgICAgLy8gUGx1Z2luIHZpZXcgdG8gcmVk
aXJlY3QgZGF0YSB0bwogICAgIFBsdWdpblZpZXcqIG1fcGx1Z2luVmlldzsKICAgICBib29sIG1f
aGFzU2VudFJlc3BvbnNlVG9QbHVnaW47Ci0gICAgYm9vbCBtX2hhc1JlcHJlc2VudGF0aW9uOwog
fTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gMTE2MDAwKQorKysgU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw2IEBACiAgICAgLCBtX2N1c3RvbVVzZXJBZ2VudCgi
IikKICAgICAsIG1fcGx1Z2luVmlldygwKQogICAgICwgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdp
bihmYWxzZSkKLSAgICAsIG1faGFzUmVwcmVzZW50YXRpb24oZmFsc2UpCiB7CiB9CiAKQEAgLTUz
MCwxMSArNTI5LDYgQEAKICAgICBld2tfZnJhbWVfeHNzX2RldGVjdGVkKG1fZnJhbWUsICZ4c3NJ
bmZvKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6bWFrZVJlcHJlc2VudGF0aW9u
KERvY3VtZW50TG9hZGVyKikKLXsKLSAgICBtX2hhc1JlcHJlc2VudGF0aW9uID0gdHJ1ZTsKLX0K
LQogdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6Zm9yY2VMYXlvdXQoKQogewogICAgIGV3a19m
cmFtZV9mb3JjZV9sYXlvdXQobV9mcmFtZSk7CkBAIC02NjMsMTEgKzY1Nyw2IEBACiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6cmV2ZXJ0VG9Q
cm92aXNpb25hbFN0YXRlKERvY3VtZW50TG9hZGVyKikKLXsKLSAgICBtX2hhc1JlcHJlc2VudGF0
aW9uID0gdHJ1ZTsKLX0KLQogdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6d2lsbENoYW5nZVRp
dGxlKERvY3VtZW50TG9hZGVyKikKIHsKICAgICAvLyBubyBuZWVkIGZvciwgZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUgaXMgdGhlIHJpZ2h0IGNhbGxiYWNrCkBAIC03MTYsMTMgKzcwNSwxMCBAQAog
ICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6Zmlu
aXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcikKK3ZvaWQgRnJhbWVM
b2FkZXJDbGllbnRFZmw6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopCiB7Ci0gICAg
aWYgKCFtX3BsdWdpblZpZXcpIHsKLSAgICAgICAgaWYgKG1faGFzUmVwcmVzZW50YXRpb24pCi0g
ICAgICAgICAgICBkb2N1bWVudExvYWRlci0+d3JpdGVyKCktPnNldEVuY29kaW5nKCIiLCBmYWxz
ZSk7CisgICAgaWYgKCFtX3BsdWdpblZpZXcpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAgICAg
bV9wbHVnaW5WaWV3LT5kaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgbV9wbHVnaW5WaWV3ID0gMDsK
ICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMTYwMDApCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wNS0wMyAgTmF0ZSBDaGFwaW4gIDxq
YXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERvbid0IHJlcXVpcmUgRnJhbWVMb2FkZXJD
bGllbnQgdG8gbWFudWZhY3R1cmUgYSBjb21taXREYXRhKCkgY2FsbCBmb3IgZW1wdHkgZG9jdW1l
bnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1
MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpGcmFtZUxvYWRlckNsaWVudEVmbCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpmaW5pc2hl
ZExvYWRpbmcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6bWFrZVJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpyZXZlcnRU
b1Byb3Zpc2lvbmFsU3RhdGUpOgorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRFZmwpOgorCiAy
MDEyLTA1LTAzICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJlbW92aW5nIGxpbmUgaW4gY29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyB0aGF0IGVuZm9yY2Vz
IGEgbWluaW11bSBzY2FsZSBmYWN0b3IgdG8gbmV2ZXIgYWxsb3cgem9vbWluZyBvdXQgbW9yZSB0
aGFuIHZpZXdwb3J0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2
aXNpb24gMTE2MDAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3MCw4ICs4NzAs
NiBAQAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgaWYgKCFtX3BsdWdpblZpZXcpIHsKLSAgICAgICAgY29t
bWl0dGVkTG9hZChsb2FkZXIsIDAsIDApOwotCiAgICAgICAgIGlmIChtX2ZyYW1lSGFzQ3VzdG9t
UmVwcmVzZW50YXRpb24pIHsKICAgICAgICAgICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCk7CiAgICAgICAgICAgICBpZiAoIXdlYlBhZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxMTYwMDApCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNS0wMyAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIERvbid0IHJlcXVpcmUgRnJhbWVMb2FkZXJDbGllbnQgdG8gbWFu
dWZhY3R1cmUgYSBjb21taXREYXRhKCkgY2FsbCBmb3IgZW1wdHkgZG9jdW1lbnRzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1MzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToKKwogMjAxMi0wNS0wMyAgRmFk
eSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmluZyBsaW5l
IGluIGNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXMgdGhhdCBlbmZvcmNlcyBhIG1pbmltdW0gc2Nh
bGUgZmFjdG9yIHRvIG5ldmVyIGFsbG93IHpvb21pbmcgb3V0IG1vcmUgdGhhbiB2aWV3cG9ydAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140250</attachid>
            <date>2012-05-04 09:20:51 -0700</date>
            <delta_ts>2012-05-04 10:36:26 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-85533-20120504092053.patch</filename>
            <type>text/plain</type>
            <size>28398</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjEwOCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA1LTAzICBOYXRlIENo
YXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRG9uJ3QgcmVxdWlyZSBGcmFt
ZUxvYWRlckNsaWVudCB0byBtYW51ZmFjdHVyZSBhIGNvbW1pdERhdGEoKSBjYWxsIGZvciBlbXB0
eSBkb2N1bWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NTUzMworCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9h
ZGluZyk6CisKIDIwMTItMDUtMDQgIEtlbnQgSGFuc2VuIDxrZW50LmhhbnNlbkBub2tpYS5jb20+
CiAKICAgICAgICAgW1F0XSBVcGRhdGUgUXQgYnJpZGdlIGFmdGVyIGNoYW5nZXMgdG8gUU1ldGFN
ZXRob2QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAx
MTYxMDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODc5LDggKzg3OSw2IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQKIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAg
IGlmICghbV9wbHVnaW5WaWV3KSB7Ci0gICAgICAgIGNvbW1pdHRlZExvYWQobG9hZGVyLCAwLCAw
KTsKLQogICAgICAgICBpZiAobV9mcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uKSB7CiAgICAg
ICAgICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgICAgICAgICAg
aWYgKCF3ZWJQYWdlKQpJbmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMTYxMDgpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDUtMDMgIE5hdGUgQ2hhcGluICA8amFwaGV0
QGNocm9taXVtLm9yZz4KKworICAgICAgICBEb24ndCByZXF1aXJlIEZyYW1lTG9hZGVyQ2xpZW50
IHRvIG1hbnVmYWN0dXJlIGEgY29tbWl0RGF0YSgpIGNhbGwgZm9yIGVtcHR5IGRvY3VtZW50cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NTMzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmZpbmlzaGVkTG9hZGluZyk6CisK
IDIwMTItMDUtMDQgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTYwODUsIHIxMTYwOTEsIGFuZCBy
MTE2MDk1LgpJbmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5j
cHAJKHJldmlzaW9uIDExNjEwOCkKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNjMsMTcgKzM2MywxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6cmVj
ZWl2CiAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLT5h
ZGREYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRCbGFja0Jl
cnJ5OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3ZvaWQgRnJhbWVM
b2FkZXJDbGllbnRCbGFja0JlcnJ5OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKQog
ewogICAgIGlmIChtX3BsdWdpblZpZXcpIHsKICAgICAgICAgbV9wbHVnaW5WaWV3LT5kaWRGaW5p
c2hMb2FkaW5nKCk7CiAgICAgICAgIG1fcGx1Z2luVmlldyA9IDA7CiAgICAgICAgIG1faGFzU2Vu
dFJlc3BvbnNlVG9QbHVnaW4gPSBmYWxzZTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBUZWxs
aW5nIHRoZSBmcmFtZSB3ZSByZWNlaXZlZCBzb21lIGRhdGEgYW5kIHBhc3NpbmcgMCBhcyB0aGUg
ZGF0YSBpcyBvdXIKLSAgICAgICAgLy8gd2F5IHRvIGdldCB3b3JrIGRvbmUgdGhhdCBpcyBub3Jt
YWxseSBkb25lIHdoZW4gdGhlIGZpcnN0IGJpdCBvZiBkYXRhIGlzCi0gICAgICAgIC8vIHJlY2Vp
dmVkLCBldmVuIGZvciB0aGUgY2FzZSBvZiBhIGRvY3VtZW50IHdpdGggbm8gZGF0YSAobGlrZSBh
Ym91dDpibGFuaykuCi0gICAgICAgIGNvbW1pdHRlZExvYWQobG9hZGVyLCAwLCAwKTsKICAgICB9
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTYxMDgpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE5IEBACisyMDEyLTA1LTAzICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgRG9uJ3QgcmVxdWlyZSBGcmFtZUxvYWRlckNsaWVudCB0byBtYW51ZmFjdHVy
ZSBhIGNvbW1pdERhdGEoKSBjYWxsIGZvciBlbXB0eSBkb2N1bWVudHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTUzMworCisgICAgICAgIFJldmll
d2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpG
cmFtZUxvYWRlckNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIHNy
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJD
bGllbnRJbXBsOjptYWtlUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudEltcGw6OnJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZSk6CisgICAgICAgIChGcmFt
ZUxvYWRlckNsaWVudEltcGwpOgorCiAyMDEyLTA1LTAzICBXLiBKYW1lcyBNYWNMZWFuICA8d2pt
YWNsZWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFJldmlzZSB0b3VjaHBh
ZCBmbGluZyBjdXJ2ZSB0byB1c2UgZXhwb25lbnRpYWwgY3VydmUsIHRvIGltcHJvdmUgZmVlbCBh
bmQgc21hbGwgZmxpbmcgcGVyZm9ybWFuY2UuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDExNjEw
OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNiBAQCBlbnVtIHsKIAogRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpGcmFtZUxvYWRlckNsaWVudEltcGwoV2ViRnJhbWVJbXBsKiBmcmFtZSkK
ICAgICA6IG1fd2ViRnJhbWUoZnJhbWUpCi0gICAgLCBtX2hhc1JlcHJlc2VudGF0aW9uKGZhbHNl
KQogICAgICwgbV9zZW50SW5pdGlhbFJlc3BvbnNlVG9QbHVnaW4oZmFsc2UpCiAgICAgLCBtX25l
eHROYXZpZ2F0aW9uUG9saWN5KFdlYk5hdmlnYXRpb25Qb2xpY3lJZ25vcmUpCiB7CkBAIC0yNzIs
MTEgKzI3MSw2IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjptYWtlRG9jdW1lbnQKICAg
ICBtX3dlYkZyYW1lLT5jcmVhdGVGcmFtZVZpZXcoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNs
aWVudEltcGw6Om1ha2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExvYWRlciopCi17Ci0gICAgbV9o
YXNSZXByZXNlbnRhdGlvbiA9IHRydWU7Ci19Ci0KIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBs
Ojpmb3JjZUxheW91dCgpCiB7CiAgICAgLy8gRklYTUUKQEAgLTEwNDksMTEgKzEwNDMsNiBAQCB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hXaWxsCiAgICAgKG1fd2ViRnJhbWUt
PmZyYW1lKCktPmxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCktPipmdW5jdGlvbikoUG9saWN5VXNl
KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OnJldmVydFRvUHJvdmlzaW9uYWxT
dGF0ZShEb2N1bWVudExvYWRlciopCi17Ci0gICAgbV9oYXNSZXByZXNlbnRhdGlvbiA9IHRydWU7
Ci19Ci0KIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpzZXRNYWluRG9jdW1lbnRFcnJvcihE
b2N1bWVudExvYWRlciosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CkBAIC0xMTUwLDE4ICsxMTM5
LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpjb21taXR0ZWRMb2EKICAgICB9CiB9
CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqIGRsKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmZpbmlzaGVkTG9hZGluZyhE
b2N1bWVudExvYWRlciopCiB7CiAgICAgaWYgKG1fcGx1Z2luV2lkZ2V0KSB7CiAgICAgICAgIG1f
cGx1Z2luV2lkZ2V0LT5kaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgICAgIG1fcGx1Z2luV2lkZ2V0
ID0gMDsKICAgICAgICAgbV9zZW50SW5pdGlhbFJlc3BvbnNlVG9QbHVnaW4gPSBmYWxzZTsKLSAg
ICB9IGVsc2UgewotICAgICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBjcmVhdGUgYW4gZW1w
dHkgZG9jdW1lbnQuIFNlZSBidWcgNjM0MDA0LgotICAgICAgICAvLyBIb3dldmVyLCB3ZSBvbmx5
IHdhbnQgdG8gZG8gdGhpcyBpZiBtYWtlUmVwcmVzZW50YXRpb24gaGFzIGJlZW4gY2FsbGVkLCB0
bwotICAgICAgICAvLyBtYXRjaCB0aGUgYmVoYXZpb3Igb24gdGhlIE1hYy4KLSAgICAgICAgaWYg
KG1faGFzUmVwcmVzZW50YXRpb24pCi0gICAgICAgICAgICBkbC0+d3JpdGVyKCktPnNldEVuY29k
aW5nKCIiLCBmYWxzZSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAkocmV2aXNpb24gMTE2MTA4KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29s
IGhhc1dlYlZpZXcoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzRnJhbWVWaWV3KCkgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciopOworICAgIHZpcnR1YWwgdm9pZCBtYWtlUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VMYXlvdXQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZm9yY2VMYXlvdXRGb3JOb25IVE1MKCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldENvcGllc09uU2Nyb2xsKCk7CkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFN1Ym1p
dEV2ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPik7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Q
cm92aXNpb25hbFN0YXRlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CisgICAgdmlydHVhbCB2
b2lkIHJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgeyB9CkBAIC0yMjUsMTEgKzIyNSw2IEBAIHByaXZh
dGU6CiAgICAgLy8gdGhlIHdlYiBmcmFtZSBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBleGlzdC4K
ICAgICBXZWJGcmFtZUltcGwqIG1fd2ViRnJhbWU7CiAKLSAgICAvLyBUcnVlIGlmIG1ha2VSZXBy
ZXNlbnRhdGlvbiB3YXMgY2FsbGVkLiAgV2UgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBhIGNvbmNlcHQK
LSAgICAvLyBvZiBhICJyZXByZXNlbnRhdGlvbiIsIGJ1dCB3ZSBuZWVkIHRvIGtub3cgd2hlbiB3
ZSdyZSBleHBlY3RlZCB0byBoYXZlIG9uZS4KLSAgICAvLyBTZWUgZmluaXNoZWRMb2FkaW5nKCku
Ci0gICAgYm9vbCBtX2hhc1JlcHJlc2VudGF0aW9uOwotCiAgICAgLy8gVXNlZCB0byBoZWxwIHRy
YWNrIGNsaWVudCByZWRpcmVjdHMuIFdoZW4gYSBwcm92aXNpb25hbCBsb2FkIHN0YXJ0cywgaXQK
ICAgICAvLyBoYXMgbm8gcmVkaXJlY3RzIGluIGl0cyBjaGFpbi4gQnV0IGluIHRoZSBjYXNlIG9m
IGNsaWVudCByZWRpcmVjdHMsIHdlIHdhbnQKICAgICAvLyB0byBhZGQgdGhhdCBpbml0aWFsIGxv
YWQgYXMgYSByZWRpcmVjdC4gV2hlbiB3ZSBnZXQgYSBuZXcgcHJvdmlzaW9uYWwgbG9hZApJbmRl
eDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2MTA4KQorKysgU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDUtMDMgIE5h
dGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBEb24ndCByZXF1aXJl
IEZyYW1lTG9hZGVyQ2xpZW50IHRvIG1hbnVmYWN0dXJlIGEgY29tbWl0RGF0YSgpIGNhbGwgZm9y
IGVtcHR5IGRvY3VtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg1NTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtv
di4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpGcmFtZUxvYWRlckNsaWVu
dEVmbCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEVmbDo6bWFrZVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpyZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUpOgorICAgICAgICAoRnJhbWVMb2Fk
ZXJDbGllbnRFZmwpOgorCiAyMDEyLTA1LTA0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3Bo
ZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gTGF5b3V0VGVzdENvbnRyb2xsZXIg
ZG9lcyBub3Qgc3VwcG9ydCBvdmVycmlkaW5nIFdlYktpdExvYWRTaXRlSWNvbnNLZXkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDExNjEwOCkKKysrIFNvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzAsNyArNzAsNiBAQCBGcmFtZUxvYWRlckNsaWVudEVmbDo6RnJhbWVMb2FkZXJDbGllbnRF
CiAgICAgLCBtX2N1c3RvbVVzZXJBZ2VudCgiIikKICAgICAsIG1fcGx1Z2luVmlldygwKQogICAg
ICwgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbihmYWxzZSkKLSAgICAsIG1faGFzUmVwcmVzZW50
YXRpb24oZmFsc2UpCiB7CiB9CiAKQEAgLTUzMCwxMSArNTI5LDYgQEAgdm9pZCBGcmFtZUxvYWRl
ckNsaWVudEVmbDo6ZGlkRGV0ZWN0WFNTKAogICAgIGV3a19mcmFtZV94c3NfZGV0ZWN0ZWQobV9m
cmFtZSwgJnhzc0luZm8pOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjptYWtlUmVw
cmVzZW50YXRpb24oRG9jdW1lbnRMb2FkZXIqKQotewotICAgIG1faGFzUmVwcmVzZW50YXRpb24g
PSB0cnVlOwotfQotCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpmb3JjZUxheW91dCgpCiB7
CiAgICAgZXdrX2ZyYW1lX2ZvcmNlX2xheW91dChtX2ZyYW1lKTsKQEAgLTY2MywxMSArNjU3LDYg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2FuY2VsUG9saWN5QwogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnJldmVydFRvUHJvdmlz
aW9uYWxTdGF0ZShEb2N1bWVudExvYWRlciopCi17Ci0gICAgbV9oYXNSZXByZXNlbnRhdGlvbiA9
IHRydWU7Ci19Ci0KIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OndpbGxDaGFuZ2VUaXRsZShE
b2N1bWVudExvYWRlciopCiB7CiAgICAgLy8gbm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2
ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxsYmFjawpAQCAtNzE2LDEzICs3MDUsMTAgQEAgU3RyaW5n
IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpnZW5lcmF0ZWRNSQogICAgIHJldHVybiBTdHJpbmcoKTsK
IH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50
TG9hZGVyKiBkb2N1bWVudExvYWRlcikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmZpbmlz
aGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopCiB7Ci0gICAgaWYgKCFtX3BsdWdpblZpZXcpIHsK
LSAgICAgICAgaWYgKG1faGFzUmVwcmVzZW50YXRpb24pCi0gICAgICAgICAgICBkb2N1bWVudExv
YWRlci0+d3JpdGVyKCktPnNldEVuY29kaW5nKCIiLCBmYWxzZSk7CisgICAgaWYgKCFtX3BsdWdp
blZpZXcpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgbV9wbHVnaW5WaWV3LT5kaWRGaW5p
c2hMb2FkaW5nKCk7CiAgICAgbV9wbHVnaW5WaWV3ID0gMDsKICAgICBtX2hhc1NlbnRSZXNwb25z
ZVRvUGx1Z2luID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHJldmlzaW9uIDExNjEwOCkK
KysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGll
bnRFZmwgOiBwdWJsaWMgRnJhbQogCiAgICAgdm9pZCBjYWxsUG9saWN5RnVuY3Rpb24oRnJhbWVQ
b2xpY3lGdW5jdGlvbiwgUG9saWN5QWN0aW9uKTsKIAotICAgIHZpcnR1YWwgdm9pZCBtYWtlUmVw
cmVzZW50YXRpb24oRG9jdW1lbnRMb2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJl
c2VudGF0aW9uKERvY3VtZW50TG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlTGF5
b3V0KCk7CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlTGF5b3V0Rm9yTm9uSFRNTCgpOwogCkBAIC0x
MjIsNyArMTIyLDcgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbQog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoV1RGOjpQYXNzUmVm
UHRyPEZvcm1TdGF0ZT4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRG
b3JtKEZyYW1lUG9saWN5RnVuY3Rpb24sIFdURjo6UGFzc1JlZlB0cjxGb3JtU3RhdGU+KTsKIAot
ICAgIHZpcnR1YWwgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1lbnRMb2FkZXIq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKERvY3VtZW50TG9h
ZGVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKERvY3VtZW50
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgdmlydHVhbCB2b2lkIHBvc3RQ
cm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24oKTsKQEAgLTIxNyw3ICsyMTcsNiBAQCBjbGFzcyBG
cmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtCiAgICAgLy8gUGx1Z2luIHZpZXcgdG8g
cmVkaXJlY3QgZGF0YSB0bwogICAgIFBsdWdpblZpZXcqIG1fcGx1Z2luVmlldzsKICAgICBib29s
IG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW47Ci0gICAgYm9vbCBtX2hhc1JlcHJlc2VudGF0aW9u
OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2MTA4KQorKysgU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTItMDUtMDMgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBEb24ndCByZXF1aXJlIEZyYW1lTG9hZGVyQ2xpZW50IHRvIG1hbnVmYWN0dXJlIGEgY29tbWl0
RGF0YSgpIGNhbGwgZm9yIGVtcHR5IGRvY3VtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxl
eGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OkZyYW1l
TG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
TG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmg6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50OjptYWtlUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNs
aWVudDo6cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKToKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xp
ZW50KToKKwogMjAxMi0wNS0wMyAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZW1vdmluZyBsaW5lIGluIGNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXMgdGhh
dCBlbmZvcmNlcyBhIG1pbmltdW0gc2NhbGUgZmFjdG9yIHRvIG5ldmVyIGFsbG93IHpvb21pbmcg
b3V0IG1vcmUgdGhhbiB2aWV3cG9ydApJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24g
MTE2MTA4KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDYgQEAgRnJhbWVMb2Fk
ZXJDbGllbnQ6OkZyYW1lTG9hZGVyQ2xpZW50KFdlYgogICAgICwgbV9sb2FkaW5nRXJyb3JQYWdl
KGZhbHNlKQogICAgICwgbV9wbHVnaW5WaWV3KDApCiAgICAgLCBtX2hhc1NlbnRSZXNwb25zZVRv
UGx1Z2luKGZhbHNlKQotICAgICwgbV9oYXNSZXByZXNlbnRhdGlvbihmYWxzZSkKIHsKICAgICBB
U1NFUlQobV9mcmFtZSk7CiB9CkBAIC02NjUsMTEgKzY2NCw2IEBAIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnQ6OmRpZERldGVjdFhTUyhjb24KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lk
IEZyYW1lTG9hZGVyQ2xpZW50OjptYWtlUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqKQotewotICAgIG1faGFzUmVwcmVzZW50YXRpb24gPSB0cnVlOwotfQotCiB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50Ojpmb3JjZUxheW91dCgpCiB7CiAgICAgRnJhbWVWaWV3KiB2aWV3ID0g
Y29yZShtX2ZyYW1lKS0+dmlldygpOwpAQCAtODgzLDExICs4NzcsNiBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lDaGVjCiAgICAgICAgIHdlYmtpdF93ZWJfcG9saWN5X2Rl
Y2lzaW9uX2NhbmNlbChtX3BvbGljeURlY2lzaW9uKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNs
aWVudDo6cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikK
LXsKLSAgICBtX2hhc1JlcHJlc2VudGF0aW9uID0gdHJ1ZTsKLX0KLQogdm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6d2lsbENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtOTMwLDE0ICs5MTksOSBAQCBTdHJpbmcgRnJhbWVMb2Fk
ZXJDbGllbnQ6OmdlbmVyYXRlZE1JTUVUCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lk
IEZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqIGRvY3VtZW50TG9hZGVyKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2Fk
aW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikKIHsKLSAgICBpZiAoIW1fcGx1Z2luVmlldykg
ewotICAgICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBjcmVhdGUgYW4gZW1wdHkgZG9jdW1l
bnQsCi0gICAgICAgIC8vIGJ1dCBpdCBoYXMgdG8gYmUgc2tpcHBlZCBpbiB0aGUgcHJvdmlzaW9u
YWwgcGhhc2UuCi0gICAgICAgIGlmIChtX2hhc1JlcHJlc2VudGF0aW9uKQotICAgICAgICAgICAg
ZG9jdW1lbnRMb2FkZXItPndyaXRlcigpLT5zZXRFbmNvZGluZygiIiwgZmFsc2UpOwotICAgIH0g
ZWxzZSB7CisgICAgaWYgKG1fcGx1Z2luVmlldykgewogICAgICAgICBtX3BsdWdpblZpZXctPmRp
ZEZpbmlzaExvYWRpbmcoKTsKICAgICAgICAgbV9wbHVnaW5WaWV3ID0gMDsKICAgICAgICAgbV9o
YXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCShyZXZp
c2lvbiAxMTYxMDgpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3Q7CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciopOworICAgICAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyKikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmb3JjZUxheW91
dCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VMYXlvdXRGb3JOb25IVE1MKCk7CiAKQEAg
LTEwNSw3ICsxMDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9y
bVN0YXRlPikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3Jt
KFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpG
b3JtU3RhdGU+KTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25hbFN0
YXRlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXZl
cnRUb1Byb3Zpc2lvbmFsU3RhdGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSB7IH0KICAgICAg
ICAgdmlydHVhbCB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBwb3N0UHJvZ3Jlc3NTdGFydGVkTm90aWZpY2F0aW9uKCk7CkBAIC0xOTgsOCArMTk4LDYg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIC8vIFBsdWdpbiB2aWV3IHRvIHJlZGlyZWN0
IGRhdGEgdG8KICAgICAgICAgV2ViQ29yZTo6UGx1Z2luVmlldyogbV9wbHVnaW5WaWV3OwogICAg
ICAgICBib29sIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW47Ci0KLSAgICAgICAgYm9vbCBtX2hh
c1JlcHJlc2VudGF0aW9uOwogICAgIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDExNjEwOCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA1LTAzICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgRG9uJ3QgcmVxdWlyZSBGcmFtZUxvYWRlckNsaWVudCB0byBt
YW51ZmFjdHVyZSBhIGNvbW1pdERhdGEoKSBjYWxsIGZvciBlbXB0eSBkb2N1bWVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTUzMworCisgICAg
ICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgKiBXZWJWaWV3
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0
aW9uIGZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOl0pOiBDYWxsaW5nIGNvbW1pdERhdGEg
d2hlbiBmaW5pc2hpbmcgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwKKyAgICAgICAgICAgIGFzIFdl
YkNvcmUgd2lsbCB0YWtlIGNhcmUgb2Ygc2ltdWxhdGluZyB0aGUgcmVjZWlwdCBvZiBkYXRhIGFu
ZCBlbnN1cmluZyB0aGUgcmVxdWlzaXRlIHdvcmsgZ2V0cyBkb25lIGluIHRoZSBibGFuayBkb2N1
bWVudCBjYXNlLgorCiAyMDEyLTA1LTAzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgdXNlV2ViS2l0V2ViSW5zcGVjdG9yIHNob3VsZCBiZSBtb3JlIHJv
YnVzdCBhZ2FpbnN0IG1pc3NpbmcgZmlsZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCShyZXZpc2lvbiAxMTYxMDgpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjE0LDE0ICsyMTQsNiBAQCAtICh2b2lkKWZpbmlzaGVkTG9hZGluZ1dp
dGhEYXRhU291cmNlOihXCiAKICAgICBpZiAoIXdlYkZyYW1lKQogICAgICAgICByZXR1cm47Ci0K
LSAgICBpZiAoIVtzZWxmIF9pc0Rpc3BsYXlpbmdXZWJBcmNoaXZlXSkgewotICAgICAgICAvLyBU
ZWxsaW5nIHRoZSBmcmFtZSB3ZSByZWNlaXZlZCBzb21lIGRhdGEgYW5kIHBhc3NpbmcgbmlsIGFz
IHRoZSBkYXRhIGlzIG91cgotICAgICAgICAvLyB3YXkgdG8gZ2V0IHdvcmsgZG9uZSB0aGF0IGlz
IG5vcm1hbGx5IGRvbmUgd2hlbiB0aGUgZmlyc3QgYml0IG9mIGRhdGEgaXMKLSAgICAgICAgLy8g
cmVjZWl2ZWQsIGV2ZW4gZm9yIHRoZSBjYXNlIG9mIGEgZG9jdW1lbnQgd2l0aCBubyBkYXRhIChs
aWtlIGFib3V0OmJsYW5rKS4KLSAgICAgICAgW3dlYkZyYW1lIF9jb21taXREYXRhOm5pbF07Ci0g
ICAgfQotCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IFt3ZWJGcmFtZSB3ZWJWaWV3XTsKICAgICBp
ZiAoW3dlYlZpZXcgbWFpbkZyYW1lXSA9PSB3ZWJGcmFtZSAmJiBbd2ViVmlldyBpc0VkaXRhYmxl
XSkKICAgICAgICAgY29yZSh3ZWJGcmFtZSktPmVkaXRvcigpLT5hcHBseUVkaXRpbmdTdHlsZVRv
Qm9keUVsZW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTYxMDgpCisrKyBT
b3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDEyLTA1LTAzICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgRG9uJ3QgcmVxdWlyZSBGcmFtZUxvYWRlckNsaWVudCB0byBtYW51ZmFjdHVyZSBhIGNvbW1p
dERhdGEoKSBjYWxsIGZvciBlbXB0eSBkb2N1bWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTUzMworCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OkZy
YW1lTG9hZGVyQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6Om1ha2VSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OjpyZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUpOgorICAgICAgICAo
RnJhbWVMb2FkZXJDbGllbnRRdCk6CisKIDIwMTItMDUtMDMgIEZhZHkgU2FtdWVsICA8ZnNhbXVl
bEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZpbmcgbGluZSBpbiBjb21wdXRlVmlld3Bv
cnRBdHRyaWJ1dGVzIHRoYXQgZW5mb3JjZXMgYSBtaW5pbXVtIHNjYWxlIGZhY3RvciB0byBuZXZl
ciBhbGxvdyB6b29taW5nIG91dCBtb3JlIHRoYW4gdmlld3BvcnQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cAkocmV2aXNpb24gMTE2MTA4KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDcgKzIxMiw2IEBA
IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OkZyYW1lTG9hZGVyQ2xpZW50UXQKICAgICAsIG1fd2ViRnJh
bWUoMCkKICAgICAsIG1fcGx1Z2luVmlldygwKQogICAgICwgbV9oYXNTZW50UmVzcG9uc2VUb1Bs
dWdpbihmYWxzZSkKLSAgICAsIG1faGFzUmVwcmVzZW50YXRpb24oZmFsc2UpCiAgICAgLCBtX2lz
T3JpZ2luYXRpbmdMb2FkKGZhbHNlKQogewogfQpAQCAtMzEyLDExICszMTEsNiBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQmVjCiB7CiB9CiAKLXZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRRdDo6bWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50TG9hZGVyKikKLXsKLSAgICBt
X2hhc1JlcHJlc2VudGF0aW9uID0gdHJ1ZTsKLX0KLQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmZvcmNlTGF5b3V0KCkKIHsKQEAgLTU2NywxMiArNTYxLDYgQEAgdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaFdpbGxTdQogfQogCiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRR
dDo6cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKERvY3VtZW50TG9hZGVyKikKLXsKLSAgICBtX2hh
c1JlcHJlc2VudGF0aW9uID0gdHJ1ZTsKLX0KLQotCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6
OnBvc3RQcm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24oKQogewogICAgIGlmIChtX3dlYkZyYW1l
ICYmIG1fZnJhbWUtPnBhZ2UoKSkKQEAgLTYyNiwxNiArNjE0LDEwIEBAIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZGlkQ2hhbmdlVGl0bGUKIH0KIAogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQordm9pZCBGcmFtZUxv
YWRlckNsaWVudFF0OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKQogewotICAgIGlm
ICghbV9wbHVnaW5WaWV3KSB7Ci0gICAgICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGNyZWF0
ZSBhbiBlbXB0eSBkb2N1bWVudC4gU2VlIGJ1ZyA2MzQwMDQuCi0gICAgICAgIC8vIEhvd2V2ZXIs
IHdlIG9ubHkgd2FudCB0byBkbyB0aGlzIGlmIG1ha2VSZXByZXNlbnRhdGlvbiBoYXMgYmVlbiBj
YWxsZWQsCi0gICAgICAgIC8vIHRvIG1hdGNoIHRoZSBiZWhhdmlvciBvbiB0aGUgTWFjLgotICAg
ICAgICBpZiAobV9oYXNSZXByZXNlbnRhdGlvbikKLSAgICAgICAgICAgIGxvYWRlci0+d3JpdGVy
KCktPnNldEVuY29kaW5nKCIiLCBmYWxzZSk7CisgICAgaWYgKCFtX3BsdWdpblZpZXcpCiAgICAg
ICAgIHJldHVybjsKLSAgICB9CiAgICAgaWYgKG1fcGx1Z2luVmlldy0+aXNQbHVnaW5WaWV3KCkp
CiAgICAgICAgIG1fcGx1Z2luVmlldy0+ZGlkRmluaXNoTG9hZGluZygpOwogICAgIG1fcGx1Z2lu
VmlldyA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkocmV2aXNpb24gMTE2MTA4KQorKysgU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGhhc1dlYlZp
ZXcoKSBjb25zdDsgLy8gbWFpbmx5IGZvciBhc3NlcnRpb25zCiAKLSAgICB2aXJ0dWFsIHZvaWQg
bWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50TG9hZGVyKik7CisgICAgdmlydHVhbCB2b2lkIG1h
a2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExvYWRlciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBm
b3JjZUxheW91dCgpOwogICAgIHZpcnR1YWwgdm9pZCBmb3JjZUxheW91dEZvck5vbkhUTUwoKTsK
IApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hX
aWxsU2VuZFN1Ym1pdEV2ZW50KFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiwgUGFzc1Jl
ZlB0cjxGb3JtU3RhdGU+KTsKIAotICAgIHZpcnR1YWwgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFs
U3RhdGUoRG9jdW1lbnRMb2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNp
b25hbFN0YXRlKERvY3VtZW50TG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE1haW5E
b2N1bWVudEVycm9yKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAg
ICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24oKTsKQEAgLTI3
MiwxMSArMjcyLDYgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpQbHVnaW5WaWV3KiBtX3BsdWdp
blZpZXc7CiAgICAgYm9vbCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luOwogCi0gICAgLy8gVHJ1
ZSBpZiBtYWtlUmVwcmVzZW50YXRpb24gd2FzIGNhbGxlZC4gIFdlIGRvbid0IGFjdHVhbGx5IGhh
dmUgYSBjb25jZXB0Ci0gICAgLy8gb2YgYSAicmVwcmVzZW50YXRpb24iLCBidXQgd2UgbmVlZCB0
byBrbm93IHdoZW4gd2UncmUgZXhwZWN0ZWQgdG8gaGF2ZSBvbmUuCi0gICAgLy8gU2VlIGZpbmlz
aGVkTG9hZGluZygpLgotICAgIGJvb2wgbV9oYXNSZXByZXNlbnRhdGlvbjsKLQogICAgIEtVUkwg
bV9sYXN0UmVxdWVzdGVkVXJsOwogICAgIGJvb2wgbV9pc09yaWdpbmF0aW5nTG9hZDsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTYxMDgpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNS0wMyAg
TmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERvbid0IHJlcXVp
cmUgRnJhbWVMb2FkZXJDbGllbnQgdG8gbWFudWZhY3R1cmUgYSBjb21taXREYXRhKCkgY2FsbCBm
b3IgZW1wdHkgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODU1MzMKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlh
a292LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisKIDIw
MTItMDQtMjcgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIE1pZ3JhdGUg
cGVybWlzc2lvbiBmdW5jdGlvbnMgdG8gTm90aWZpY2F0aW9uIGZyb20gTm90aWZpY2F0aW9uQ2Vu
dGVyCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxMTYxMDgpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUxNywxMyArNTE3LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y29tbWl0dGVkTG9hZAogICAgIG1fbWFudWFsTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShkYXRhLCBs
ZW5ndGgpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmco
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopCiB7Ci0gICAgLy8gVGVsbGluZyB0aGUgZnJhbWUg
d2UgcmVjZWl2ZWQgc29tZSBkYXRhIGFuZCBwYXNzaW5nIDAgYXMgdGhlIGRhdGEgaXMgb3VyCi0g
ICAgLy8gd2F5IHRvIGdldCB3b3JrIGRvbmUgdGhhdCBpcyBub3JtYWxseSBkb25lIHdoZW4gdGhl
IGZpcnN0IGJpdCBvZiBkYXRhIGlzCi0gICAgLy8gcmVjZWl2ZWQsIGV2ZW4gZm9yIHRoZSBjYXNl
IG9mIGEgZG9jdW1lbnQgd2l0aCBubyBkYXRhIChsaWtlIGFib3V0OmJsYW5rKQotICAgIGNvbW1p
dHRlZExvYWQobG9hZGVyLCAwLCAwKTsKLQogICAgIGlmICghbV9tYW51YWxMb2FkZXIpCiAgICAg
ICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjEwOCkK
KysrIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTItMDUtMDMgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4K
KworICAgICAgICBEb24ndCByZXF1aXJlIEZyYW1lTG9hZGVyQ2xpZW50IHRvIG1hbnVmYWN0dXJl
IGEgY29tbWl0RGF0YSgpIGNhbGwgZm9yIGVtcHR5IGRvY3VtZW50cy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NTMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNs
aWVudFdpbkNFOjpmaW5pc2hlZExvYWRpbmcpOgorCiAyMDEyLTA0LTE4ICBKb24gSG9uZXljdXR0
ICA8amhvbmV5Y3V0dEBhcHBsZS5jb20+CiAKICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudCgpIHNob3VsZCBiZSBnaXZlbiBtb3JlCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXaW5DRS5jcHAJKHJldmlzaW9uIDExNjEwOCkKKysrIFNvdXJjZS9XZWJL
aXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ0MywxMiArNDQzLDEwIEBAIFN0cmluZyBGcmFtZUxvYWRlckNsaWVudFdp
bkNFOjpnZW5lcmF0ZWQKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRXaW5DRTo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExv
YWRlcikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZmluaXNoZWRMb2FkaW5nKERvY3Vt
ZW50TG9hZGVyKikKIHsKLSAgICBpZiAoIW1fcGx1Z2luVmlldykgewotICAgICAgICBkb2N1bWVu
dExvYWRlci0+d3JpdGVyKCktPnNldEVuY29kaW5nKG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFt
ZSgpLCBmYWxzZSk7CisgICAgaWYgKCFtX3BsdWdpblZpZXcpCiAgICAgICAgIHJldHVybjsKLSAg
ICB9CiAKICAgICBtX3BsdWdpblZpZXctPmRpZEZpbmlzaExvYWRpbmcoKTsKICAgICBtX3BsdWdp
blZpZXcgPSAwOwpJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjEwOCkKKysrIFNvdXJj
ZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTItMDUtMDMgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBE
b24ndCByZXF1aXJlIEZyYW1lTG9hZGVyQ2xpZW50IHRvIG1hbnVmYWN0dXJlIGEgY29tbWl0RGF0
YSgpIGNhbGwgZm9yIGVtcHR5IGRvY3VtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5
IFByb3NrdXJ5YWtvdi4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpmaW5pc2hl
ZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6c2V0TWFp
bkRvY3VtZW50RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6
ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyk6CisgICAgICAgICogV2ViS2l0U3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6CisgICAgICAgIChGcmFtZUxvYWRlckNsaWVudFd4
KToKKwogMjAxMi0wNC0xOCAgSm9uIEhvbmV5Y3V0dCAgPGpob25leWN1dHRAYXBwbGUuY29tPgog
CiAgICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQo
KSBzaG91bGQgYmUgZ2l2ZW4gbW9yZQpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAkocmV2aXNpb24gMTE2MTA4
KQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3gu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDQsMTQgKzQ0NCw5IEBAIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRXeDo6ZGlkQ2hhbmdlVGl0bGUKIH0KIAogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6
OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQordm9pZCBGcmFtZUxvYWRl
ckNsaWVudFd4OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKQogewotICAgIGlmICgh
bV9wbHVnaW5WaWV3KSB7Ci0gICAgICAgIGlmIChtX2ZpcnN0RGF0YSkgewotICAgICAgICAgICAg
bG9hZGVyLT53cml0ZXIoKS0+c2V0RW5jb2RpbmcobV9yZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1l
KCksIGZhbHNlKTsKLSAgICAgICAgICAgIG1fZmlyc3REYXRhID0gZmFsc2U7Ci0gICAgICAgIH0K
LSAgICB9IGVsc2UgeworICAgIGlmIChtX3BsdWdpblZpZXcpIHsKICAgICAgICAgbV9wbHVnaW5W
aWV3LT5kaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgICAgIG1fcGx1Z2luVmlldyA9IDA7CiAgICAg
ICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW4gPSBmYWxzZTsKQEAgLTY1MSwxMCArNjQ2LDcg
QEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudFd4OjpjYW5DYWNoZVBhZ2UoKQogCiB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50V3g6OnNldE1haW5Eb2N1bWVudEVycm9yKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKQogewotICAgIGlmICht
X2ZpcnN0RGF0YSkgewotICAgICAgICBsb2FkZXItPndyaXRlcigpLT5zZXRFbmNvZGluZyhtX3Jl
c3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgZmFsc2UpOwotICAgICAgICBtX2ZpcnN0RGF0YSA9
IGZhbHNlOwotICAgIH0KKyAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiAvLyBGSVhNRTogVGhp
cyBmdW5jdGlvbiBzaG91bGQgYmUgbW92ZWQgaW50byBXZWJDb3JlLgpAQCAtNzYxLDcgKzc1Myw2
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRSZWMKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogICAgIG1fcmVzcG9uc2UgPSByZXNwb25zZTsKLSAgICBtX2ZpcnN0RGF0
YSA9IHRydWU7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRSZWNl
aXZlQ29udGVudExlbmd0aChEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlk
LCBpbnQgbGVuZ3RoKQpAQCAtNzc2LDEwICs3NjcsNiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
V3g6OmRpc3BhdGNoRGlkRmluCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hE
aWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nLCBjb25z
dCBSZXNvdXJjZUVycm9yJikKIHsKLSAgICBpZiAobV9maXJzdERhdGEpIHsKLSAgICAgICAgbG9h
ZGVyLT53cml0ZXIoKS0+c2V0RW5jb2RpbmcobV9yZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCks
IGZhbHNlKTsKLSAgICAgICAgbV9maXJzdERhdGEgPSBmYWxzZTsKLSAgICB9CiAgICAgaWYgKG1f
d2ViVmlldykgewogICAgICAgICBXZWJLaXQ6OldlYlZpZXdMb2FkRXZlbnQgd2tFdmVudChtX3dl
YlZpZXcpOwogICAgICAgICB3a0V2ZW50LlNldFN0YXRlKFdFQlZJRVdfTE9BRF9GQUlMRUQpOwpJ
bmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3gu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXeC5oCShyZXZpc2lvbiAxMTYxMDgpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNyAr
MjQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQbHVnaW5WaWV3KiBtX3BsdWdp
blZpZXc7CiAgICAgICAgIGJvb2wgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbjsKICAgICAgICAg
UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgICAgICBib29sIG1fZmlyc3REYXRhOwog
ICAgIH07CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>