<?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>174016</bug_id>
          
          <creation_ts>2017-06-30 01:02:29 -0700</creation_ts>
          <short_desc>REGRESSION(r214194): Safari leaves a popup window open opened during before unload</short_desc>
          <delta_ts>2017-06-30 20:39:11 -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>DOM</component>
          <version>Safari Technology Preview</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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1324342</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-30 01:02:29 -0700</bug_when>
    <thetext>When a website opens a new window inside a beforeunload event, Safari leaves the window open because we prevent the initial navigation.

&lt;rdar://problem/32934449&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324345</commentid>
    <comment_count>1</comment_count>
      <attachid>314247</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-30 01:25:10 -0700</bug_when>
    <thetext>Created attachment 314247
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324346</commentid>
    <comment_count>2</comment_count>
      <attachid>314248</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-30 01:40:07 -0700</bug_when>
    <thetext>Created attachment 314248
Updated the change log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324489</commentid>
    <comment_count>3</comment_count>
      <attachid>314248</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-30 12:30:47 -0700</bug_when>
    <thetext>Comment on attachment 314248
Updated the change log

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

&gt; Source/WebCore/ChangeLog:32
&gt; +        the frame is null (durign the destruction of a frameless document) in which case we increment the global

typo: during</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324490</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-30 12:32:43 -0700</bug_when>
    <thetext>Committed r219008: &lt;http://trac.webkit.org/changeset/219008&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324491</commentid>
    <comment_count>5</comment_count>
      <attachid>314248</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-06-30 12:35:09 -0700</bug_when>
    <thetext>Comment on attachment 314248
Updated the change log

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

&gt;&gt; Source/WebCore/ChangeLog:32
&gt;&gt; +        the frame is null (durign the destruction of a frameless document) in which case we increment the global
&gt; 
&gt; typo: during

Nit: Here you use &quot;frameless&quot;, but above you use &quot;frame-less&quot;.

&gt; Source/WebCore/ChangeLog:36
&gt; +        document in destruction, and none of the frame in the same frame tree as the one given is currently in

I suggest using the phrase &quot;being destroyed&quot; instead of &quot;in destruction&quot; to make these sentence easier to read

Nit: &quot;the frame&quot; =&gt; &quot;the frames&quot; (notice the pluralization)

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:23989
&gt; +				9BA827781F06156500F71E75 /* NavigationDisabler.h */,

Please add this file so that it is in sorted order with the other files in this list.

&gt; Source/WebCore/dom/Document.cpp:2300
&gt; +        NavigationDisabler navigationDisabler(m_frame);

Nit: Although an unwritten convention there is a moment to use C++11 brace initialization in new code.

&gt; Source/WebCore/loader/FrameLoader.cpp:2921
&gt; +        NavigationDisabler navigationDisabler(&amp;m_frame);

Ditto.

&gt; Source/WebCore/loader/NavigationDisabler.h:38
&gt; +            m_frame-&gt;mainFrame().m_navigationDisableCount++;

Are you planning to replace SubframeLoadingDisabler with this class? If not, would it make sense to have m_navigationDisableCount live on Page?

Nit: This is OK as-is. Although the compiler is likely smart enough to do this for us, I suggest using frame instead of m_frame here.

Nit: This is OK as-is. The compiler is smart enough to know that we are not using the return value of this post-increment operator and convert to using a pre-increment. For your consideration, I suggest writing this using a pre-increment for consistency with the generated code.

&gt; Source/WebCore/loader/NavigationDisabler.h:40
&gt; +            s_globalNavigationDisableCount++;

Ditto.

&gt; Source/WebCore/loader/NavigationDisabler.h:48
&gt; +            mainFrame.m_navigationDisableCount--;

Nit: This is OK as-is. For your consideration, I suggest writing this using a pre-decrement for consistency with the generated code by the same argument as above

&gt; Source/WebCore/loader/NavigationDisabler.h:51
&gt; +            s_globalNavigationDisableCount--;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324492</commentid>
    <comment_count>6</comment_count>
      <attachid>314248</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-06-30 12:36:25 -0700</bug_when>
    <thetext>Comment on attachment 314248
Updated the change log

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

&gt; Source/WebCore/ChangeLog:4
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=174016

I know that this patch was already reviewed and landed. For future reference, we tend to put the radar bug URL under the WebKit build URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324503</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-30 13:24:50 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #5)
&gt; Comment on attachment 314248 [details]
&gt; Updated the change log
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=314248&amp;action=review
&gt;
&gt; &gt; Source/WebCore/ChangeLog:36
&gt; &gt; +        document in destruction, and none of the frame in the same frame tree as the one given is currently in
&gt; 
&gt; I suggest using the phrase &quot;being destroyed&quot; instead of &quot;in destruction&quot; to
&gt; make these sentence easier to read
&gt; 
&gt; Nit: &quot;the frame&quot; =&gt; &quot;the frames&quot; (notice the pluralization)
&gt; 
&gt; &gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:23989
&gt; &gt; +				9BA827781F06156500F71E75 /* NavigationDisabler.h */,
&gt; 
&gt; Please add this file so that it is in sorted order with the other files in
&gt; this list.

Maybe we should just run ./Tools/Scripts/sort-Xcode-project-file Source/WebCore/WebCore.xcodeproj/ automatically in webkit-patch upload. It&apos;s really silly that we ask people to do it themselves.

Anyhow, none of this will matter in a few months once we switch to CMake builds.

&gt; &gt; Source/WebCore/dom/Document.cpp:2300
&gt; &gt; +        NavigationDisabler navigationDisabler(m_frame);
&gt; 
&gt; Nit: Although an unwritten convention there is a moment to use C++11 brace
&gt; initialization in new code.

I don&apos;t think C++11 brace initialization is any better in this case since there is exactly one argument. It doesn&apos;t improve anything.

&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:2921
&gt; &gt; +        NavigationDisabler navigationDisabler(&amp;m_frame);
&gt; 
&gt; Ditto.

Ditto.

&gt; &gt; Source/WebCore/loader/NavigationDisabler.h:38
&gt; &gt; +            m_frame-&gt;mainFrame().m_navigationDisableCount++;
&gt; 
&gt; Are you planning to replace SubframeLoadingDisabler with this class? If not,
&gt; would it make sense to have m_navigationDisableCount live on Page?

No. Turns out that SubframeLoadingDisabler is used to disable loading of a frame inside a particular DOM tree within a specific document, not across frames. So it&apos;s a fundamentally different class than NavigationDisabler which tries to disable navigations across frames.

We can&apos;t use Page here because Page isn&apos;t a ref-counted object, and Frame can have a null Page. It&apos;s simply not safe to access Page via Frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324509</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-30 13:36:26 -0700</bug_when>
    <thetext>Sorted xcodeproject files in https://trac.webkit.org/changeset/219009.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324749</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-30 20:39:11 -0700</bug_when>
    <thetext>Committed r219039: &lt;http://trac.webkit.org/changeset/219039&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314247</attachid>
            <date>2017-06-30 01:25:10 -0700</date>
            <delta_ts>2017-06-30 01:40:06 -0700</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-174016-20170630012509.patch</filename>
            <type>text/plain</type>
            <size>19424</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODk5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE3LTA2LTMwICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04ocjIxNDE5NCk6
IFNhZmFyaSBsZWF2ZXMgYSBwb3B1cCB3aW5kb3cgb3BlbiBvcGVuZWQgZHVyaW5nIGJlZm9yZSB1
bmxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NDAxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBidWcgd2FzIGNhdXNlZCBieSBXZWJLaXQgYWxsb3dpbmcgdGhlIG9wZW5pbmcgb2YgYSBuZXcg
d2luZG93IHZpYSB3aW5kb3cub3BlbiBidXQgZGlzYWxsb3dpbmcKKyAgICAgICAgdGhlIGluaXRp
YWwgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIG5ld2x5IG9wZW5lZCB3aW5kb3cgd2hpbGUgYSBiZWZv
cmV1bmxvYWQgZXZlbnQgaXMgYmVpbmcgZGlzcGF0Y2hlZC4KKworICAgICAgICBCZWNhdXNlIHNv
bWUgd2Vic2l0ZXMgd2hpY2ggb3BlbnMgYSB3aW5kb3cgZHVyaW5nIGEgYmVmb3JldW5sb2FkIGV2
ZW50IHJlbGllcyBvbiB0aGUgb3BlbmVkIHBhZ2UKKyAgICAgICAgdG8gY29tbXVuaWNhdGUgYmFj
ayBpbiBvcmRlciB0byBjbG9zZSBpdC4gVGhpcyByZXN1bHRlZCBpbiBhIG5ld2x5IG9wZW5lZCBw
b3B1cCB3aW5kb3cgd2l0aCBhYm91dDpibGFuaworICAgICAgICBiZWluZyBsZWZ0IG91dCBvbiB0
aG9zZSB3ZWJzaXRlcy4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5IGFsbG93aW5nIHRoZSBu
YXZpZ2F0aW9uIG9mIGEgbmV3IHdpbmRvdyBhcyB3ZWxsIGFzIGFuIGV4aXN0aW5nIGFub3RoZXIg
d2luZG93LgorICAgICAgICBNb3JlIGNvbmNyZXRlbHksIHdlIGRpc2FsbG93IG5hdmlnYXRpb25z
IHdpdGhpbiB0aGUgc2FtZSBmcmFtZSB0cmVlIGFzIHRoZSBvbmUgaW4gd2hpY2ggYSBiZWZvcmV1
bmxvYWQKKyAgICAgICAgZXZlbnQgaXMgYmVpbmcgZGlzcGF0Y2hlZCwgYW5kIGFsbG93IG5hdmln
YXRpb25zIGVsc2V3aGVyZSAoaS5lLiBkaWZmZXJlbnQgd2luZG93IC8gcGFnZSkuCisgICAgICAg
IER1cmluZyB0aGUgZG9jdW1lbnQgZGVzdHJ1Y3Rpb24gKERvY3VtZW50OjpwcmVwYXJlRm9yRGVz
dHJ1Y3Rpb24pLCB3ZSBkaXNhbGxvdyBhbGwgdGhlIG5hdmlnYXRpb25zLgorCisgICAgICAgIFRl
c3RzOiBmYXN0L2V2ZW50cy9iZWZvcmUtdW5sb2FkLW5hdmlnYXRlLWRpZmZlcmVudC13aW5kb3cu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC1vcGVuLXdpbmRv
dy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9iZWZvcmUtdW5sb2FkLXNpYmxpbmct
ZnJhbWUuaHRtbAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6cHJlcGFyZUZvckRlc3RydWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmlzTmF2aWdhdGlvbkFsbG93ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNob3VsZENsb3NlKToKKyAgICAgICAg
KiBsb2FkZXIvTmF2aWdhdGlvbkRpc2FibGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TmF2aWdhdGlvbkRpc2FibGVyOjpOYXZpZ2F0aW9uRGlzYWJsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TmF2aWdhdGlvbkRpc2FibGVyOjp+TmF2aWdhdGlvbkRpc2FibGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdmlnYXRpb25EaXNhYmxlcjo6aXNOYXZpZ2F0aW9uQWxsb3dlZCk6CisgICAgICAg
ICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2
aWdhdGlvblNjaGVkdWxlcjo6c2hvdWxkU2NoZWR1bGVOYXZpZ2F0aW9uKToKKyAgICAgICAgKiBs
b2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlv
bkRpc2FibGVyOjpOYXZpZ2F0aW9uRGlzYWJsZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TmF2aWdhdGlvbkRpc2FibGVyOjp+TmF2aWdhdGlvbkRpc2FibGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25EaXNhYmxlcjo6aXNOYXZpZ2F0aW9uQWxsb3dlZCk6
IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9NYWluRnJhbWUuaDoKKwogMjAxNy0wNi0zMCAgQW50
b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFRvcCBjb250cm9scyBi
YXJzIHNob3VsZCBpbnZlcnQgd2l0aCByaWdodC10by1sZWZ0IHVzZXIgaW50ZXJmYWNlIGxheW91
dCBkaXJlY3Rpb24gbG9jYWxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTg5ODYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTEyNTE0LDYgKzEyNTE0LDcgQEAKIAkJOUI3MTRFMUUxQzkxMTY2OTAwQUMwRTkyIC8qIEV2ZW50
UGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudFBhdGgu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjcxNEUxRjFDOTExNjY5MDBBQzBF
OTIgLyogRXZlbnRQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50
UGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkEyNzNGMzE3MjIwNkJCMDA5
N0NFNDcgLyogTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCQTgyNzc4MUYwNjE1NjUwMEY3MUU3NSAvKiBOYXZpZ2F0
aW9uRGlzYWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdGlv
bkRpc2FibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCQUI2QzZBMTI1NTA2
MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRWRpdGluZ1N0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCQUI2
QzZCMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5bGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRWRpdGluZ1N0eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOUJBRjNCMjMxMkMxQTM5ODAwMDE0QkYxIC8qIFdyaXRpbmdEaXJlY3Rpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGluZ0RpcmVjdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM5ODUsNiArMjM5ODYsNyBAQAogCQkJCTkz
Q0NGMDI2MEFGNkM1MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggKi8sCiAJCQkJOTc5
RjQzRDExMDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuY3BwICovLAogCQkJ
CTk3OUY0M0QyMTA3NUU0NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmggKi8sCisJ
CQkJOUJBODI3NzgxRjA2MTU2NTAwRjcxRTc1IC8qIE5hdmlnYXRpb25EaXNhYmxlci5oICovLAog
CQkJCTkzRTIyN0REMEFGNTg5QUQwMEQ0ODMyNCAvKiBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5jcHAgKi8sCiAJCQkJNjU2RDM3MkIwQURCQTVERTAwQTQ1NTREIC8qIE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyLmggKi8sCiAJCQkJRDBGRjJBNUIxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdM
b2FkZXIuY3BwICovLApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMTg5
ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjAsNiArMTIwLDcgQEAKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAi
TmFtZU5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTmFtZWRGbG93Q29sbGVjdGlvbi5oIgorI2luY2x1
ZGUgIk5hdmlnYXRpb25EaXNhYmxlci5oIgogI2luY2x1ZGUgIk5lc3RpbmdMZXZlbEluY3JlbWVu
dGVyLmgiCiAjaW5jbHVkZSAiTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSAi
Tm9kZUl0ZXJhdG9yLmgiCkBAIC0yMjk2LDcgKzIyOTcsNyBAQCB2b2lkIERvY3VtZW50OjpwcmVw
YXJlRm9yRGVzdHJ1Y3Rpb24oKQogI2VuZGlmCiAKICAgICB7Ci0gICAgICAgIE5hdmlnYXRpb25E
aXNhYmxlciBuYXZpZ2F0aW9uRGlzYWJsZXI7CisgICAgICAgIE5hdmlnYXRpb25EaXNhYmxlciBu
YXZpZ2F0aW9uRGlzYWJsZXIobV9mcmFtZSk7CiAgICAgICAgIGRpc2Nvbm5lY3REZXNjZW5kYW50
RnJhbWVzKCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAJKHJldmlzaW9uIDIxODk4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDcgQEAKICNpbmNsdWRlICJNYWluRnJh
bWUuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIk1lbW9yeVJlbGVhc2Uu
aCIKKyNpbmNsdWRlICJOYXZpZ2F0aW9uRGlzYWJsZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGFnZUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZVRyYW5zaXRpb25FdmVudC5oIgpA
QCAtMTIxNCw3ICsxMjE1LDcgQEAgc3RhdGljIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kg
c2hvdQogCiBib29sIEZyYW1lTG9hZGVyOjppc05hdmlnYXRpb25BbGxvd2VkKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgPT0gUGFnZURp
c21pc3NhbFR5cGU6Ok5vbmUgJiYgTmF2aWdhdGlvbkRpc2FibGVyOjppc05hdmlnYXRpb25BbGxv
d2VkKCk7CisgICAgcmV0dXJuIG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID09
IFBhZ2VEaXNtaXNzYWxUeXBlOjpOb25lICYmIE5hdmlnYXRpb25EaXNhYmxlcjo6aXNOYXZpZ2F0
aW9uQWxsb3dlZChtX2ZyYW1lKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFt
ZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
RnJhbWVMb2FkVHlwZSBuZXdMb2FkVHlwZSwgRXZlbnQqIGV2ZW50LCBGb3JtU3RhdGUqIGZvcm1T
dGF0ZSkKQEAgLTI5MTcsNyArMjkxOCw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZENsb3Nl
KCkKIAogICAgIGJvb2wgc2hvdWxkQ2xvc2UgPSBmYWxzZTsKICAgICB7Ci0gICAgICAgIE5hdmln
YXRpb25EaXNhYmxlciBuYXZpZ2F0aW9uRGlzYWJsZXI7CisgICAgICAgIE5hdmlnYXRpb25EaXNh
YmxlciBuYXZpZ2F0aW9uRGlzYWJsZXIoJm1fZnJhbWUpOwogICAgICAgICBzaXplX3QgaTsKIAog
ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGFyZ2V0RnJhbWVzLnNpemUoKTsgaSsrKSB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkRpc2FibGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJNYWluRnJhbWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOYXZp
Z2F0aW9uRGlzYWJsZXIgeworcHVibGljOgorICAgIE5hdmlnYXRpb25EaXNhYmxlcihGcmFtZSog
ZnJhbWUpCisgICAgICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICB7CisgICAgICAgIGlmIChmcmFt
ZSkKKyAgICAgICAgICAgIG1fZnJhbWUtPm1haW5GcmFtZSgpLm1fbmF2aWdhdGlvbkRpc2FibGVD
b3VudCsrOworICAgICAgICBlbHNlIC8vIERpc2FibGUgYWxsIG5hdmlnYXRpb25zIHdoZW4gZGVz
dHJ1Y3RpbmcgYSBmcmFtZS1sZXNzIGRvY3VtZW50LgorICAgICAgICAgICAgc19nbG9iYWxOYXZp
Z2F0aW9uRGlzYWJsZUNvdW50Kys7CisgICAgfQorCisgICAgfk5hdmlnYXRpb25EaXNhYmxlcigp
CisgICAgeworICAgICAgICBpZiAobV9mcmFtZSkgeworICAgICAgICAgICAgYXV0byYgbWFpbkZy
YW1lID0gbV9mcmFtZS0+bWFpbkZyYW1lKCk7CisgICAgICAgICAgICBBU1NFUlQobWFpbkZyYW1l
Lm1fbmF2aWdhdGlvbkRpc2FibGVDb3VudCk7CisgICAgICAgICAgICBtYWluRnJhbWUubV9uYXZp
Z2F0aW9uRGlzYWJsZUNvdW50LS07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NF
UlQoc19nbG9iYWxOYXZpZ2F0aW9uRGlzYWJsZUNvdW50KTsKKyAgICAgICAgICAgIHNfZ2xvYmFs
TmF2aWdhdGlvbkRpc2FibGVDb3VudC0tOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGlj
IGJvb2wgaXNOYXZpZ2F0aW9uQWxsb3dlZChGcmFtZSYgZnJhbWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gIWZyYW1lLm1haW5GcmFtZSgpLm1fbmF2aWdhdGlvbkRpc2FibGVDb3VudCAmJiAhc19n
bG9iYWxOYXZpZ2F0aW9uRGlzYWJsZUNvdW50OworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWZQ
dHI8RnJhbWU+IG1fZnJhbWU7CisKKyAgICBzdGF0aWMgdW5zaWduZWQgc19nbG9iYWxOYXZpZ2F0
aW9uRGlzYWJsZUNvdW50OworfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL05h
dmlnYXRpb25TY2hlZHVsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMjE4OTg2KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmF2
aWdhdGlvbkRpc2FibGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpAQCAtNTUsNyAr
NTYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVuc2lnbmVkIE5hdmlnYXRpb25EaXNh
Ymxlcjo6c19uYXZpZ2F0aW9uRGlzYWJsZUNvdW50ID0gMDsKK3Vuc2lnbmVkIE5hdmlnYXRpb25E
aXNhYmxlcjo6c19nbG9iYWxOYXZpZ2F0aW9uRGlzYWJsZUNvdW50ID0gMDsKIAogY2xhc3MgU2No
ZWR1bGVkTmF2aWdhdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NoZWR1bGVkTmF2
aWdhdGlvbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMzY0LDcgKzM2NSw3IEBAIGlu
bGluZSBib29sIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNob3VsZFMKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICByZXR1cm4gTmF2aWdhdGlvbkRpc2FibGVyOjppc05hdmlnYXRpb25BbGxvd2Vk
KCk7CisgICAgcmV0dXJuIE5hdmlnYXRpb25EaXNhYmxlcjo6aXNOYXZpZ2F0aW9uQWxsb3dlZCht
X2ZyYW1lKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJlZGlyZWN0
KERvY3VtZW50JiBpbml0aWF0aW5nRG9jdW1lbnQsIGRvdWJsZSBkZWxheSwgY29uc3QgVVJMJiB1
cmwpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgJ
KHJldmlzaW9uIDIxODk4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2No
ZWR1bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDIzICs0Myw2IEBAIGNsYXNzIFNjaGVkdWxl
ZE5hdmlnYXRpb247CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFVSTDsKIAotY2xhc3Mg
TmF2aWdhdGlvbkRpc2FibGVyIHsKLXB1YmxpYzoKLSAgICBOYXZpZ2F0aW9uRGlzYWJsZXIoKQot
ICAgIHsKLSAgICAgICAgc19uYXZpZ2F0aW9uRGlzYWJsZUNvdW50Kys7Ci0gICAgfQotICAgIH5O
YXZpZ2F0aW9uRGlzYWJsZXIoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHNfbmF2aWdhdGlvbkRp
c2FibGVDb3VudCk7Ci0gICAgICAgIHNfbmF2aWdhdGlvbkRpc2FibGVDb3VudC0tOwotICAgIH0K
LSAgICBzdGF0aWMgYm9vbCBpc05hdmlnYXRpb25BbGxvd2VkKCkgeyByZXR1cm4gIXNfbmF2aWdh
dGlvbkRpc2FibGVDb3VudDsgfQotCi1wcml2YXRlOgotICAgIHN0YXRpYyB1bnNpZ25lZCBzX25h
dmlnYXRpb25EaXNhYmxlQ291bnQ7Ci19OwotCiBjbGFzcyBOYXZpZ2F0aW9uU2NoZWR1bGVyIHsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBOYXZpZ2F0aW9uU2NoZWR1bGVyKEZyYW1lJik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL01haW5GcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvTWFpbkZyYW1lLmgJKHJldmlzaW9uIDIxODk4NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvTWFpbkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDkgQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBlcmZvcm1hbmNlTG9nZ2luZz4g
bV9wZXJmb3JtYW5jZUxvZ2dpbmc7CisKKyAgICB1bnNpZ25lZCBtX25hdmlnYXRpb25EaXNhYmxl
Q291bnQgeyAwIH07CisgICAgZnJpZW5kIGNsYXNzIE5hdmlnYXRpb25EaXNhYmxlcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODk4NikKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE3
LTA2LTMwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JF
U1NJT04ocjIxNDE5NCk6IFNhZmFyaSBsZWF2ZXMgYSBwb3B1cCB3aW5kb3cgb3BlbiBvcGVuZWQg
ZHVyaW5nIGJlZm9yZSB1bmxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NDAxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGVkIHJlZ3Jlc3Npb24gdGVzdHMgZm9yIG5hdmlnYXRpbmcgYSBuZXcg
d2luZG93LCBhIHNpYmxpbmcgaWZyYW1lLCBhbmQgYW5vdGhlciBleGlzdGluZyB3aW5kb3cuCisK
KyAgICAgICAgKiBmYXN0L2V2ZW50cy9iZWZvcmUtdW5sb2FkLW5hdmlnYXRlLWRpZmZlcmVudC13
aW5kb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9iZWZvcmUt
dW5sb2FkLW5hdmlnYXRlLWRpZmZlcmVudC13aW5kb3cuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC1vcGVuLXdpbmRvdy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZXZlbnRzL2JlZm9yZS11bmxvYWQtb3Blbi13aW5kb3cuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC1zaWJsaW5nLWZyYW1l
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvYmVmb3JlLXVubG9h
ZC1zaWJsaW5nLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291
cmNlcy9tZXNzYWdlLW9wZW5lci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9y
ZXNvdXJjZXMvbWVzc2FnZS10b3AuaHRtbDogQWRkZWQuCisKIDIwMTctMDYtMjkgIENocmlzIEZs
ZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogQ2Fubm90IGNhbGwg
c2V0VmFsdWUoKSBvbiBjb250ZW50ZWRpdGFibGUgb3IgQVJJQSB0ZXh0IGNvbnRyb2xzCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtdW5sb2FkLW5hdmlnYXRlLWRpZmZlcmVu
dC13aW5kb3ctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2JlZm9yZS11bmxvYWQtbmF2aWdhdGUtZGlmZmVyZW50LXdpbmRvdy1leHBlY3RlZC50eHQJ
KG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC1u
YXZpZ2F0ZS1kaWZmZXJlbnQtd2luZG93LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQgQEAKK1RoaXMgdGVzdHMgbmF2aWdhdGluZyBhIGRpZmZlcmVudCB3aW5kb3cgZHVy
aW5nIGJlZm9yZXVubG9hZCBldmVudC4gVGhlIHBhZ2UgbG9hZCBzaG91bGQgc3VjY2VlZC4KKwor
UEFTUworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtdW5sb2FkLW5hdmln
YXRlLWRpZmZlcmVudC13aW5kb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9iZWZvcmUtdW5sb2FkLW5hdmlnYXRlLWRpZmZlcmVudC13aW5kb3cuaHRtbAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtdW5sb2FkLW5hdmln
YXRlLWRpZmZlcmVudC13aW5kb3cuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIG5hdmlnYXRp
bmcgYSBkaWZmZXJlbnQgd2luZG93IGR1cmluZyBiZWZvcmV1bmxvYWQgZXZlbnQuIFRoZSBwYWdl
IGxvYWQgc2hvdWxkIHN1Y2NlZWQuPC9wPgorPGJ1dHRvbiBvbmNsaWNrPSJzdGFydFRlc3QoKTsg
dGhpcy5yZW1vdmUoKTsiPlN0YXJ0IHRlc3Q8L2J1dHRvbj4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+
Cis8c2NyaXB0PgorCitjb25zdCBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFt
ZScpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFtZSk7CitmcmFtZS5jb250ZW50RG9j
dW1lbnQub3BlbigpOworZnJhbWUuY29udGVudERvY3VtZW50LndyaXRlKGA8c2NyaXB0PiB3aW5k
b3cub25iZWZvcmV1bmxvYWQgPSAoKSA9PiB0b3AuZGlkRmlyZUJlZm9yZVVubG9hZCgpOyA8L2Ag
KyBgc2NyaXB0PmApOworZnJhbWUuY29udGVudERvY3VtZW50LmNsb3NlKCk7CisKK2xldCBkaWZm
ZXJlbnRXaW5kb3c7Citjb25zdCBsb2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7
CitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgZGlmZmVyZW50V2luZG93ID0gd2luZG93Lm9w
ZW4oJ2Fib3V0OmJsYW5rJyk7CisgICAgc2V0VGltZW91dChlbmRUZXN0LCAxMDAwKTsKKyAgICBm
cmFtZS5zcmMgPSAnYWJvdXQ6YmxhbmsnOworICAgIGxvZy50ZXh0Q29udGVudCA9ICdGQUlMJzsK
K30KKworZnVuY3Rpb24gZGlkRmlyZUJlZm9yZVVubG9hZCgpIHsKKyAgICBkaWZmZXJlbnRXaW5k
b3cubG9jYXRpb24uaHJlZiA9ICdyZXNvdXJjZXMvbWVzc2FnZS1vcGVuZXIuaHRtbCc7Cit9CisK
K3dpbmRvdy5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHsKKyAgICBpZiAoZXZlbnQuZGF0YSA9PSAn
bG9hZCcpIHsKKyAgICAgICAgbG9nLnRleHRDb250ZW50ID0gJ1BBU1MnOworICAgICAgICBlbmRU
ZXN0KCk7CisgICAgfQorfQorCitmdW5jdGlvbiBlbmRUZXN0KCkgeworICAgIGRpZmZlcmVudFdp
bmRvdy5jbG9zZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKQorICAgIHRlc3RSdW5uZXIuc2V0UG9w
dXBCbG9ja2luZ0VuYWJsZWQoZmFsc2UpOworICAgIHRlc3RSdW5uZXIuc2V0Q2xvc2VSZW1haW5p
bmdXaW5kb3dzV2hlbkNvbXBsZXRlKHRydWUpOworICAgIHN0YXJ0VGVzdCgpOworICAgIGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpLnJlbW92ZSgpOworfQorCis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS11bmxv
YWQtb3Blbi13aW5kb3ctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2JlZm9yZS11bmxvYWQtb3Blbi13aW5kb3ctZXhwZWN0ZWQudHh0CShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS11bmxvYWQtb3Blbi13aW5k
b3ctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0
cyBvcGVuaW5nIGEgbmV3IHdpbmRvdyBkdXJpbmcgYmVmb3JldW5sb2FkIGV2ZW50LiBUaGUgcGFn
ZSBsb2FkIHNob3VsZCBzdWNjZWVkLgorCitQQVNTCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2JlZm9yZS11bmxvYWQtb3Blbi13aW5kb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtdW5sb2FkLW9wZW4td2luZG93Lmh0bWwJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC1vcGVuLXdp
bmRvdy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgb3BlbmluZyBhIG5ldyB3aW5kb3cgZHVy
aW5nIGJlZm9yZXVubG9hZCBldmVudC4gVGhlIHBhZ2UgbG9hZCBzaG91bGQgc3VjY2VlZC48L3A+
Cis8ZGl2IGlkPSJsb2ciPkZBSUw8L2Rpdj4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKQorICAgIHRl
c3RSdW5uZXIuc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoZmFsc2UpOworICAgIHRlc3RSdW5uZXIu
c2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKHRydWUpOworfQorCit2YXIgb3Bl
bmVkOworY29uc3QgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKK2Rv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOworZnJhbWUuY29udGVudERvY3VtZW50Lm9w
ZW4oKTsKK2ZyYW1lLmNvbnRlbnREb2N1bWVudC53cml0ZShgPHNjcmlwdD4gd2luZG93Lm9uYmVm
b3JldW5sb2FkID0gKCkgPT4gdG9wLm9wZW5lZCA9IHdpbmRvdy5vcGVuKCdyZXNvdXJjZXMvbWVz
c2FnZS1vcGVuZXIuaHRtbCcpOyA8L2AgKyBgc2NyaXB0PmApOworZnJhbWUuY29udGVudERvY3Vt
ZW50LmNsb3NlKCk7CisKK2ZyYW1lLnNyYyA9ICdhYm91dDpibGFuayc7CisKK3dpbmRvdy5vbm1l
c3NhZ2UgPSAoZXZlbnQpID0+IHsKKyAgICBpZiAoZXZlbnQuZGF0YSA9PSAnbG9hZCcpIHsKKyAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpLnRleHRDb250ZW50ID0gJ1BBU1Mn
OworICAgICAgICBlbmRUZXN0KCk7CisgICAgfQorfQorCitmdW5jdGlvbiBlbmRUZXN0KCkgewor
ICAgIGlmIChvcGVuZWQpCisgICAgICAgIG9wZW5lZC5jbG9zZSgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK3NldFRp
bWVvdXQoZW5kVGVzdCwgMTAwMCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC1zaWJsaW5nLWZyYW1lLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUt
dW5sb2FkLXNpYmxpbmctZnJhbWUtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS11bmxvYWQtc2libGluZy1mcmFtZS1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3RzIG5hdmlnYXRpbmcg
YSBzaWJsaW5nIGlmcmFtZSBkdXJpbmcgYmVmb3JldW5sb2FkLiBUaGUgbmF2aWdhdGlvbiBzaG91
bGQgYmUgcHJldmVudGVkLgorCitQQVNTCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2JlZm9yZS11bmxvYWQtc2libGluZy1mcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS11bmxvYWQtc2libGluZy1mcmFtZS5odG1sCShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS11bmxvYWQtc2libGluZy1m
cmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgbmF2aWdhdGluZyBhIHNpYmxpbmcgaWZy
YW1lIGR1cmluZyBiZWZvcmV1bmxvYWQuIFRoZSBuYXZpZ2F0aW9uIHNob3VsZCBiZSBwcmV2ZW50
ZWQuPC9wPgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworfQorCitjb25zdCBsb2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnbG9nJyk7Citjb25zdCBmcmFtZTEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUn
KTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUxKTsKK2ZyYW1lMS5jb250ZW50RG9j
dW1lbnQub3BlbigpOworZnJhbWUxLmNvbnRlbnREb2N1bWVudC53cml0ZShgPHNjcmlwdD4gd2lu
ZG93Lm9uYmVmb3JldW5sb2FkID0gKCkgPT4gdG9wLnN0YXJ0VGVzdCgpIDwvYCArIGBzY3JpcHQ+
YCk7CitmcmFtZTEuY29udGVudERvY3VtZW50LmNsb3NlKCk7CisKK2NvbnN0IGZyYW1lMiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChmcmFtZTIpOworCit3aW5kb3cub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7CisgICAgaWYgKGV2
ZW50LmRhdGEgPT0gJ2xvYWQnKQorICAgICAgICBsb2cudGV4dENvbnRlbnQgPSAnRkFJTCAtIHRo
ZSBuYXZpZ2F0aW9uIHN1Y2NlZWRlZCc7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAg
ICBmcmFtZTIuc3JjID0gJ3Jlc291cmNlcy9tZXNzYWdlLXRvcC5odG1sJzsKKyAgICBzZXRUaW1l
b3V0KCgpID0+IHsKKyAgICAgICAgaWYgKGxvZy50ZXh0Q29udGVudCA9PSAnJykKKyAgICAgICAg
ICAgIGxvZy50ZXh0Q29udGVudCA9ICdQQVNTJzsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSwgMTAwMCk7
Cit9CisKK2ZyYW1lMS5zcmMgPSAnYWJvdXQ6YmxhbmsnOworCis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9tZXNzYWdl
LW9wZW5lci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291
cmNlcy9tZXNzYWdlLW9wZW5lci5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3Jlc291cmNlcy9tZXNzYWdlLW9wZW5lci5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5IG9ubG9hZD0ib3Bl
bmVyLnRvcC5wb3N0TWVzc2FnZSgnbG9hZCcsICcqJyk7Ij4KK0xvYWRlZC4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9tZXNzYWdlLXRv
cC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9t
ZXNzYWdlLXRvcC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3Jlc291cmNlcy9tZXNzYWdlLXRvcC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5IG9ubG9hZD0idG9wLnBvc3RNZXNzYWdl
KCdsb2FkJywgJyonKTsiPgorTG9hZGVkLgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314248</attachid>
            <date>2017-06-30 01:40:07 -0700</date>
            <delta_ts>2017-06-30 12:30:47 -0700</delta_ts>
            <desc>Updated the change log</desc>
            <filename>bug-174016-20170630014007.patch</filename>
            <type>text/plain</type>
            <size>19812</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODk5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE3LTA2LTMwICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04ocjIxNDE5NCk6
IFNhZmFyaSBsZWF2ZXMgYSBwb3B1cCB3aW5kb3cgb3BlbiBvcGVuZWQgZHVyaW5nIGJlZm9yZSB1
bmxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NDAxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBidWcgd2FzIGNhdXNlZCBieSBXZWJLaXQgYWxsb3dpbmcgdGhlIG9wZW5pbmcgb2YgYSBuZXcg
d2luZG93IHZpYSB3aW5kb3cub3BlbiBidXQgZGlzYWxsb3dpbmcKKyAgICAgICAgdGhlIGluaXRp
YWwgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIG5ld2x5IG9wZW5lZCB3aW5kb3cgd2hpbGUgYSBiZWZv
cmV1bmxvYWQgZXZlbnQgaXMgYmVpbmcgZGlzcGF0Y2hlZC4KKworICAgICAgICBCZWNhdXNlIHNv
bWUgd2Vic2l0ZXMgd2hpY2ggb3BlbnMgYSB3aW5kb3cgZHVyaW5nIGEgYmVmb3JldW5sb2FkIGV2
ZW50IHJlbGllcyBvbiB0aGUgb3BlbmVkIHBhZ2UKKyAgICAgICAgdG8gY29tbXVuaWNhdGUgYmFj
ayBpbiBvcmRlciB0byBjbG9zZSBpdC4gVGhpcyByZXN1bHRlZCBpbiBhIG5ld2x5IG9wZW5lZCBw
b3B1cCB3aW5kb3cgd2l0aCBhYm91dDpibGFuaworICAgICAgICBiZWluZyBsZWZ0IG91dCBvbiB0
aG9zZSB3ZWJzaXRlcy4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5IGFsbG93aW5nIHRoZSBu
YXZpZ2F0aW9uIG9mIGEgbmV3IHdpbmRvdyBhcyB3ZWxsIGFzIGFuIGV4aXN0aW5nIGFub3RoZXIg
d2luZG93LgorICAgICAgICBNb3JlIGNvbmNyZXRlbHksIHdlIGRpc2FsbG93IG5hdmlnYXRpb25z
IHdpdGhpbiB0aGUgc2FtZSBmcmFtZSB0cmVlIGFzIHRoZSBvbmUgaW4gd2hpY2ggYSBiZWZvcmV1
bmxvYWQKKyAgICAgICAgZXZlbnQgaXMgYmVpbmcgZGlzcGF0Y2hlZCwgYW5kIGFsbG93IG5hdmln
YXRpb25zIGVsc2V3aGVyZSAoaS5lLiBkaWZmZXJlbnQgd2luZG93IC8gcGFnZSkuCisgICAgICAg
IER1cmluZyB0aGUgZGVzdHJ1Y3Rpb24gb2YgYSBmcmFtZS1sZXNzIGRvY3VtZW50LCBkaXNhbGxv
dyBhbGwgdGhlIG5hdmlnYXRpb25zLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50cy9iZWZv
cmUtdW5sb2FkLW5hdmlnYXRlLWRpZmZlcmVudC13aW5kb3cuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC1vcGVuLXdpbmRvdy5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2V2ZW50cy9iZWZvcmUtdW5sb2FkLXNpYmxpbmctZnJhbWUuaHRtbAorCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJlcGFyZUZvckRlc3RydWN0
aW9uKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmlzTmF2aWdhdGlvbkFsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnNob3VsZENsb3NlKToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvbkRp
c2FibGVyLmg6IEFkZGVkLiBFeHRyYWN0ZWQgZnJvbSBOYXZpZ2F0aW9uU2NoZWR1bGVyLmgKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25EaXNhYmxlcjo6TmF2aWdhdGlvbkRpc2FibGVyKTog
SW5jcmVtZW50IHRoZSBuZXdseSBhZGRlZCBjb3VudGVyIG9uIE1haW5GcmFtZSB1bmxlc3MKKyAg
ICAgICAgdGhlIGZyYW1lIGlzIG51bGwgKGR1cmlnbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgYSBmcmFt
ZWxlc3MgZG9jdW1lbnQpIGluIHdoaWNoIGNhc2Ugd2UgaW5jcmVtZW50IHRoZSBnbG9iYWwKKyAg
ICAgICAgZGlzYWJsZSBjb3VudC4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25EaXNhYmxl
cjo6fk5hdmlnYXRpb25EaXNhYmxlcik6IERpdHRvIGZvciBkZWNyZW1lbnRhdGlvbi4KKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25EaXNhYmxlcjo6aXNOYXZpZ2F0aW9uQWxsb3dlZCk6IE9u
bHkgYWxsb3cgdGhlIG5hdmlnYXRpb24gd2hlbiB0aGVyZSBpcyBubyBmcmFtZWxlc3MKKyAgICAg
ICAgZG9jdW1lbnQgaW4gZGVzdHJ1Y3Rpb24sIGFuZCBub25lIG9mIHRoZSBmcmFtZSBpbiB0aGUg
c2FtZSBmcmFtZSB0cmVlIGFzIHRoZSBvbmUgZ2l2ZW4gaXMgY3VycmVudGx5IGluCisgICAgICAg
IHRoZSBwcm9jZXNzIG9mIGRpc3BhdGNoaW5nIGEgYmVmb3JldW5sb2FkIGV2ZW50LgorICAgICAg
ICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRpb25TY2hlZHVsZXI6OnNob3VsZFNjaGVkdWxlTmF2aWdhdGlvbik6CisgICAgICAgICog
bG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRp
b25EaXNhYmxlcik6IE1vdmVkIHRvIE5hdmlnYXRpb25EaXNhYmxlci5oLgorICAgICAgICAqIHBh
Z2UvTWFpbkZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpNYWluRnJhbWUpOiBBZGRlZCBzX2ds
b2JhbE5hdmlnYXRpb25EaXNhYmxlQ291bnQuCisKIDIwMTctMDYtMzAgIEFudG9pbmUgUXVpbnQg
IDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBUb3AgY29udHJvbHMgYmFycyBzaG91bGQg
aW52ZXJ0IHdpdGggcmlnaHQtdG8tbGVmdCB1c2VyIGludGVyZmFjZSBsYXlvdXQgZGlyZWN0aW9u
IGxvY2FsZQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjE4OTg2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUxNCw2ICsx
MjUxNCw3IEBACiAJCTlCNzE0RTFFMUM5MTE2NjkwMEFDMEU5MiAvKiBFdmVudFBhdGguY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRQYXRoLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI3MTRFMUYxQzkxMTY2OTAwQUMwRTkyIC8qIEV2ZW50
UGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFBhdGguaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJBMjczRjMxNzIyMDZCQjAwOTdDRTQ3IC8qIExv
Z2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5QkE4Mjc3ODFGMDYxNTY1MDBGNzFFNzUgLyogTmF2aWdhdGlvbkRpc2FibGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmlnYXRpb25EaXNhYmxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkFCNkM2QTEyNTUwNjMxMDAxNjI2RDQg
LyogRWRpdGluZ1N0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRp
bmdTdHlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkFCNkM2QjEyNTUwNjMx
MDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEVkaXRpbmdTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTlCQUYzQjIzMTJDMUEzOTgwMDAxNEJGMSAvKiBXcml0aW5nRGlyZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRpbmdEaXJlY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIzOTg1LDYgKzIzOTg2LDcgQEAKIAkJCQk5M0NDRjAyNjBBRjZD
NTI5MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5oICovLAogCQkJCTk3OUY0M0QxMTA3NUU0
NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCAqLywKIAkJCQk5NzlGNDNEMjEw
NzVFNDRBMDAwMEY4M0IgLyogTmF2aWdhdGlvblNjaGVkdWxlci5oICovLAorCQkJCTlCQTgyNzc4
MUYwNjE1NjUwMEY3MUU3NSAvKiBOYXZpZ2F0aW9uRGlzYWJsZXIuaCAqLywKIAkJCQk5M0UyMjdE
RDBBRjU4OUFEMDBENDgzMjQgLyogTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwICovLAog
CQkJCTY1NkQzNzJCMEFEQkE1REUwMEE0NTU0RCAvKiBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5oICovLAogCQkJCUQwRkYyQTVCMTFGOEM0NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVyLmNwcCAq
LywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjE4OTg2KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDYgKzEy
MCw3IEBACiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIk5hbWVOb2RlTGlz
dC5oIgogI2luY2x1ZGUgIk5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJOYXZpZ2F0
aW9uRGlzYWJsZXIuaCIKICNpbmNsdWRlICJOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlci5oIgogI2lu
Y2x1ZGUgIk5vRXZlbnREaXNwYXRjaEFzc2VydGlvbi5oIgogI2luY2x1ZGUgIk5vZGVJdGVyYXRv
ci5oIgpAQCAtMjI5Niw3ICsyMjk3LDcgQEAgdm9pZCBEb2N1bWVudDo6cHJlcGFyZUZvckRlc3Ry
dWN0aW9uKCkKICNlbmRpZgogCiAgICAgewotICAgICAgICBOYXZpZ2F0aW9uRGlzYWJsZXIgbmF2
aWdhdGlvbkRpc2FibGVyOworICAgICAgICBOYXZpZ2F0aW9uRGlzYWJsZXIgbmF2aWdhdGlvbkRp
c2FibGVyKG1fZnJhbWUpOwogICAgICAgICBkaXNjb25uZWN0RGVzY2VuZGFudEZyYW1lcygpOwog
ICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lv
biAyMTg5ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBACiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5j
bHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJNZW1vcnlSZWxlYXNlLmgiCisjaW5jbHVk
ZSAiTmF2aWdhdGlvbkRpc2FibGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBh
Z2VDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2VUcmFuc2l0aW9uRXZlbnQuaCIKQEAgLTEyMTQsNyAr
MTIxNSw3IEBAIHN0YXRpYyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3UKIAogYm9v
bCBGcmFtZUxvYWRlcjo6aXNOYXZpZ2F0aW9uQWxsb3dlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID09IFBhZ2VEaXNtaXNzYWxUeXBl
OjpOb25lICYmIE5hdmlnYXRpb25EaXNhYmxlcjo6aXNOYXZpZ2F0aW9uQWxsb3dlZCgpOworICAg
IHJldHVybiBtX3BhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCA9PSBQYWdlRGlzbWlz
c2FsVHlwZTo6Tm9uZSAmJiBOYXZpZ2F0aW9uRGlzYWJsZXI6OmlzTmF2aWdhdGlvbkFsbG93ZWQo
bV9mcmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWVz
dCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIEZyYW1lTG9hZFR5
cGUgbmV3TG9hZFR5cGUsIEV2ZW50KiBldmVudCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUpCkBAIC0y
OTE3LDcgKzI5MTgsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRDbG9zZSgpCiAKICAgICBi
b29sIHNob3VsZENsb3NlID0gZmFsc2U7CiAgICAgewotICAgICAgICBOYXZpZ2F0aW9uRGlzYWJs
ZXIgbmF2aWdhdGlvbkRpc2FibGVyOworICAgICAgICBOYXZpZ2F0aW9uRGlzYWJsZXIgbmF2aWdh
dGlvbkRpc2FibGVyKCZtX2ZyYW1lKTsKICAgICAgICAgc2l6ZV90IGk7CiAKICAgICAgICAgZm9y
IChpID0gMDsgaSA8IHRhcmdldEZyYW1lcy5zaXplKCk7IGkrKykgewpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkRpc2FibGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWFp
bkZyYW1lLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTmF2aWdhdGlvbkRpc2Fi
bGVyIHsKK3B1YmxpYzoKKyAgICBOYXZpZ2F0aW9uRGlzYWJsZXIoRnJhbWUqIGZyYW1lKQorICAg
ICAgICA6IG1fZnJhbWUoZnJhbWUpCisgICAgeworICAgICAgICBpZiAoZnJhbWUpCisgICAgICAg
ICAgICBtX2ZyYW1lLT5tYWluRnJhbWUoKS5tX25hdmlnYXRpb25EaXNhYmxlQ291bnQrKzsKKyAg
ICAgICAgZWxzZSAvLyBEaXNhYmxlIGFsbCBuYXZpZ2F0aW9ucyB3aGVuIGRlc3RydWN0aW5nIGEg
ZnJhbWUtbGVzcyBkb2N1bWVudC4KKyAgICAgICAgICAgIHNfZ2xvYmFsTmF2aWdhdGlvbkRpc2Fi
bGVDb3VudCsrOworICAgIH0KKworICAgIH5OYXZpZ2F0aW9uRGlzYWJsZXIoKQorICAgIHsKKyAg
ICAgICAgaWYgKG1fZnJhbWUpIHsKKyAgICAgICAgICAgIGF1dG8mIG1haW5GcmFtZSA9IG1fZnJh
bWUtPm1haW5GcmFtZSgpOworICAgICAgICAgICAgQVNTRVJUKG1haW5GcmFtZS5tX25hdmlnYXRp
b25EaXNhYmxlQ291bnQpOworICAgICAgICAgICAgbWFpbkZyYW1lLm1fbmF2aWdhdGlvbkRpc2Fi
bGVDb3VudC0tOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKHNfZ2xvYmFs
TmF2aWdhdGlvbkRpc2FibGVDb3VudCk7CisgICAgICAgICAgICBzX2dsb2JhbE5hdmlnYXRpb25E
aXNhYmxlQ291bnQtLTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBib29sIGlzTmF2
aWdhdGlvbkFsbG93ZWQoRnJhbWUmIGZyYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuICFmcmFt
ZS5tYWluRnJhbWUoKS5tX25hdmlnYXRpb25EaXNhYmxlQ291bnQgJiYgIXNfZ2xvYmFsTmF2aWdh
dGlvbkRpc2FibGVDb3VudDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPEZyYW1lPiBt
X2ZyYW1lOworCisgICAgc3RhdGljIHVuc2lnbmVkIHNfZ2xvYmFsTmF2aWdhdGlvbkRpc2FibGVD
b3VudDsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2No
ZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
blNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDIxODk4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBA
QAogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5hdmlnYXRpb25EaXNh
Ymxlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTU1LDcgKzU2LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi11bnNpZ25lZCBOYXZpZ2F0aW9uRGlzYWJsZXI6OnNfbmF2
aWdhdGlvbkRpc2FibGVDb3VudCA9IDA7Cit1bnNpZ25lZCBOYXZpZ2F0aW9uRGlzYWJsZXI6OnNf
Z2xvYmFsTmF2aWdhdGlvbkRpc2FibGVDb3VudCA9IDA7CiAKIGNsYXNzIFNjaGVkdWxlZE5hdmln
YXRpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjaGVkdWxlZE5hdmlnYXRpb24pOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTM2NCw3ICszNjUsNyBAQCBpbmxpbmUgYm9vbCBO
YXZpZ2F0aW9uU2NoZWR1bGVyOjpzaG91bGRTCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAocHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
cmV0dXJuIE5hdmlnYXRpb25EaXNhYmxlcjo6aXNOYXZpZ2F0aW9uQWxsb3dlZCgpOworICAgIHJl
dHVybiBOYXZpZ2F0aW9uRGlzYWJsZXI6OmlzTmF2aWdhdGlvbkFsbG93ZWQobV9mcmFtZSk7CiB9
CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdChEb2N1bWVudCYg
aW5pdGlhdGluZ0RvY3VtZW50LCBkb3VibGUgZGVsYXksIGNvbnN0IFVSTCYgdXJsKQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCShyZXZpc2lvbiAy
MTg5ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MywyMyArNDMsNiBAQCBjbGFzcyBTY2hlZHVsZWROYXZpZ2F0aW9u
OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBVUkw7CiAKLWNsYXNzIE5hdmlnYXRpb25E
aXNhYmxlciB7Ci1wdWJsaWM6Ci0gICAgTmF2aWdhdGlvbkRpc2FibGVyKCkKLSAgICB7Ci0gICAg
ICAgIHNfbmF2aWdhdGlvbkRpc2FibGVDb3VudCsrOwotICAgIH0KLSAgICB+TmF2aWdhdGlvbkRp
c2FibGVyKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChzX25hdmlnYXRpb25EaXNhYmxlQ291bnQp
OwotICAgICAgICBzX25hdmlnYXRpb25EaXNhYmxlQ291bnQtLTsKLSAgICB9Ci0gICAgc3RhdGlj
IGJvb2wgaXNOYXZpZ2F0aW9uQWxsb3dlZCgpIHsgcmV0dXJuICFzX25hdmlnYXRpb25EaXNhYmxl
Q291bnQ7IH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgdW5zaWduZWQgc19uYXZpZ2F0aW9uRGlz
YWJsZUNvdW50OwotfTsKLQogY2xhc3MgTmF2aWdhdGlvblNjaGVkdWxlciB7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgTmF2aWdhdGlvblNjaGVkdWxlcihGcmFtZSYpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9NYWluRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L01haW5GcmFtZS5oCShyZXZpc2lvbiAyMTg5ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL01h
aW5GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5Miw5IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQZXJmb3JtYW5jZUxvZ2dpbmc+IG1fcGVyZm9ybWFu
Y2VMb2dnaW5nOworCisgICAgdW5zaWduZWQgbV9uYXZpZ2F0aW9uRGlzYWJsZUNvdW50IHsgMCB9
OworICAgIGZyaWVuZCBjbGFzcyBOYXZpZ2F0aW9uRGlzYWJsZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTg5ODYpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxNy0wNi0zMCAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSRUdSRVNTSU9OKHIyMTQx
OTQpOiBTYWZhcmkgbGVhdmVzIGEgcG9wdXAgd2luZG93IG9wZW4gb3BlbmVkIGR1cmluZyBiZWZv
cmUgdW5sb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzQwMTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCByZWdyZXNzaW9uIHRlc3RzIGZvciBuYXZpZ2F0aW5nIGEgbmV3IHdpbmRvdywgYSBz
aWJsaW5nIGlmcmFtZSwgYW5kIGFub3RoZXIgZXhpc3Rpbmcgd2luZG93LgorCisgICAgICAgICog
ZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC1uYXZpZ2F0ZS1kaWZmZXJlbnQtd2luZG93LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC1uYXZp
Z2F0ZS1kaWZmZXJlbnQtd2luZG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRz
L2JlZm9yZS11bmxvYWQtb3Blbi13aW5kb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9iZWZvcmUtdW5sb2FkLW9wZW4td2luZG93Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZXZlbnRzL2JlZm9yZS11bmxvYWQtc2libGluZy1mcmFtZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2JlZm9yZS11bmxvYWQtc2libGluZy1m
cmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9yZXNvdXJjZXMvbWVzc2Fn
ZS1vcGVuZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvcmVzb3VyY2VzL21l
c3NhZ2UtdG9wLmh0bWw6IEFkZGVkLgorCiAyMDE3LTA2LTI5ICBDaHJpcyBGbGVpemFjaCAgPGNm
bGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IENhbm5vdCBjYWxsIHNldFZhbHVlKCkg
b24gY29udGVudGVkaXRhYmxlIG9yIEFSSUEgdGV4dCBjb250cm9scwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC1uYXZpZ2F0ZS1kaWZmZXJlbnQtd2luZG93LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUt
dW5sb2FkLW5hdmlnYXRlLWRpZmZlcmVudC13aW5kb3ctZXhwZWN0ZWQudHh0CShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS11bmxvYWQtbmF2aWdhdGUtZGlm
ZmVyZW50LXdpbmRvdy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBA
CitUaGlzIHRlc3RzIG5hdmlnYXRpbmcgYSBkaWZmZXJlbnQgd2luZG93IGR1cmluZyBiZWZvcmV1
bmxvYWQgZXZlbnQuIFRoZSBwYWdlIGxvYWQgc2hvdWxkIHN1Y2NlZWQuCisKK1BBU1MKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC1uYXZpZ2F0ZS1kaWZmZXJl
bnQtd2luZG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVm
b3JlLXVubG9hZC1uYXZpZ2F0ZS1kaWZmZXJlbnQtd2luZG93Lmh0bWwJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC1uYXZpZ2F0ZS1kaWZmZXJl
bnQtd2luZG93Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyBuYXZpZ2F0aW5nIGEgZGlmZmVy
ZW50IHdpbmRvdyBkdXJpbmcgYmVmb3JldW5sb2FkIGV2ZW50LiBUaGUgcGFnZSBsb2FkIHNob3Vs
ZCBzdWNjZWVkLjwvcD4KKzxidXR0b24gb25jbGljaz0ic3RhcnRUZXN0KCk7IHRoaXMucmVtb3Zl
KCk7Ij5TdGFydCB0ZXN0PC9idXR0b24+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4K
KworY29uc3QgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKK2RvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOworZnJhbWUuY29udGVudERvY3VtZW50Lm9wZW4o
KTsKK2ZyYW1lLmNvbnRlbnREb2N1bWVudC53cml0ZShgPHNjcmlwdD4gd2luZG93Lm9uYmVmb3Jl
dW5sb2FkID0gKCkgPT4gdG9wLmRpZEZpcmVCZWZvcmVVbmxvYWQoKTsgPC9gICsgYHNjcmlwdD5g
KTsKK2ZyYW1lLmNvbnRlbnREb2N1bWVudC5jbG9zZSgpOworCitsZXQgZGlmZmVyZW50V2luZG93
OworY29uc3QgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOworZnVuY3Rpb24g
c3RhcnRUZXN0KCkgeworICAgIGRpZmZlcmVudFdpbmRvdyA9IHdpbmRvdy5vcGVuKCdhYm91dDpi
bGFuaycpOworICAgIHNldFRpbWVvdXQoZW5kVGVzdCwgMTAwMCk7CisgICAgZnJhbWUuc3JjID0g
J2Fib3V0OmJsYW5rJzsKKyAgICBsb2cudGV4dENvbnRlbnQgPSAnRkFJTCc7Cit9CisKK2Z1bmN0
aW9uIGRpZEZpcmVCZWZvcmVVbmxvYWQoKSB7CisgICAgZGlmZmVyZW50V2luZG93LmxvY2F0aW9u
LmhyZWYgPSAncmVzb3VyY2VzL21lc3NhZ2Utb3BlbmVyLmh0bWwnOworfQorCit3aW5kb3cub25t
ZXNzYWdlID0gKGV2ZW50KSA9PiB7CisgICAgaWYgKGV2ZW50LmRhdGEgPT0gJ2xvYWQnKSB7Cisg
ICAgICAgIGxvZy50ZXh0Q29udGVudCA9ICdQQVNTJzsKKyAgICAgICAgZW5kVGVzdCgpOworICAg
IH0KK30KKworZnVuY3Rpb24gZW5kVGVzdCgpIHsKKyAgICBkaWZmZXJlbnRXaW5kb3cuY2xvc2Uo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworfQorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVu
bmVyLnNldENhbk9wZW5XaW5kb3dzKCkKKyAgICB0ZXN0UnVubmVyLnNldFBvcHVwQmxvY2tpbmdF
bmFibGVkKGZhbHNlKTsKKyAgICB0ZXN0UnVubmVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1do
ZW5Db21wbGV0ZSh0cnVlKTsKKyAgICBzdGFydFRlc3QoKTsKKyAgICBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCdidXR0b24nKS5yZW1vdmUoKTsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtdW5sb2FkLW9wZW4td2lu
ZG93LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9i
ZWZvcmUtdW5sb2FkLW9wZW4td2luZG93LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtdW5sb2FkLW9wZW4td2luZG93LWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdHMgb3BlbmluZyBh
IG5ldyB3aW5kb3cgZHVyaW5nIGJlZm9yZXVubG9hZCBldmVudC4gVGhlIHBhZ2UgbG9hZCBzaG91
bGQgc3VjY2VlZC4KKworUEFTUworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZv
cmUtdW5sb2FkLW9wZW4td2luZG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvYmVmb3JlLXVubG9hZC1vcGVuLXdpbmRvdy5odG1sCShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS11bmxvYWQtb3Blbi13aW5kb3cuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGJvZHk+Cis8cD5UaGlzIHRlc3RzIG9wZW5pbmcgYSBuZXcgd2luZG93IGR1cmluZyBiZWZvcmV1
bmxvYWQgZXZlbnQuIFRoZSBwYWdlIGxvYWQgc2hvdWxkIHN1Y2NlZWQuPC9wPgorPGRpdiBpZD0i
bG9nIj5GQUlMPC9kaXY+Cis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKCkKKyAgICB0ZXN0UnVubmVyLnNl
dFBvcHVwQmxvY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICB0ZXN0UnVubmVyLnNldENsb3NlUmVt
YWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0cnVlKTsKK30KKwordmFyIG9wZW5lZDsKK2NvbnN0
IGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7Citkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGZyYW1lKTsKK2ZyYW1lLmNvbnRlbnREb2N1bWVudC5vcGVuKCk7CitmcmFt
ZS5jb250ZW50RG9jdW1lbnQud3JpdGUoYDxzY3JpcHQ+IHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9
ICgpID0+IHRvcC5vcGVuZWQgPSB3aW5kb3cub3BlbigncmVzb3VyY2VzL21lc3NhZ2Utb3BlbmVy
Lmh0bWwnKTsgPC9gICsgYHNjcmlwdD5gKTsKK2ZyYW1lLmNvbnRlbnREb2N1bWVudC5jbG9zZSgp
OworCitmcmFtZS5zcmMgPSAnYWJvdXQ6YmxhbmsnOworCit3aW5kb3cub25tZXNzYWdlID0gKGV2
ZW50KSA9PiB7CisgICAgaWYgKGV2ZW50LmRhdGEgPT0gJ2xvYWQnKSB7CisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKS50ZXh0Q29udGVudCA9ICdQQVNTJzsKKyAgICAgICAg
ZW5kVGVzdCgpOworICAgIH0KK30KKworZnVuY3Rpb24gZW5kVGVzdCgpIHsKKyAgICBpZiAob3Bl
bmVkKQorICAgICAgICBvcGVuZWQuY2xvc2UoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitzZXRUaW1lb3V0KGVuZFRl
c3QsIDEwMDApOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS11bmxvYWQtc2libGluZy1mcmFtZS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC1zaWJs
aW5nLWZyYW1lLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9iZWZvcmUtdW5sb2FkLXNpYmxpbmctZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0cyBuYXZpZ2F0aW5nIGEgc2libGluZyBp
ZnJhbWUgZHVyaW5nIGJlZm9yZXVubG9hZC4gVGhlIG5hdmlnYXRpb24gc2hvdWxkIGJlIHByZXZl
bnRlZC4KKworUEFTUworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtdW5s
b2FkLXNpYmxpbmctZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9iZWZvcmUtdW5sb2FkLXNpYmxpbmctZnJhbWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtdW5sb2FkLXNpYmxpbmctZnJhbWUuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGJvZHk+Cis8cD5UaGlzIHRlc3RzIG5hdmlnYXRpbmcgYSBzaWJsaW5nIGlmcmFtZSBkdXJpbmcg
YmVmb3JldW5sb2FkLiBUaGUgbmF2aWdhdGlvbiBzaG91bGQgYmUgcHJldmVudGVkLjwvcD4KKzxk
aXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKK30KKworY29uc3QgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOwor
Y29uc3QgZnJhbWUxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7Citkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lMSk7CitmcmFtZTEuY29udGVudERvY3VtZW50Lm9wZW4o
KTsKK2ZyYW1lMS5jb250ZW50RG9jdW1lbnQud3JpdGUoYDxzY3JpcHQ+IHdpbmRvdy5vbmJlZm9y
ZXVubG9hZCA9ICgpID0+IHRvcC5zdGFydFRlc3QoKSA8L2AgKyBgc2NyaXB0PmApOworZnJhbWUx
LmNvbnRlbnREb2N1bWVudC5jbG9zZSgpOworCitjb25zdCBmcmFtZTIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdpZnJhbWUnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUyKTsK
Kword2luZG93Lm9ubWVzc2FnZSA9IChldmVudCkgPT4geworICAgIGlmIChldmVudC5kYXRhID09
ICdsb2FkJykKKyAgICAgICAgbG9nLnRleHRDb250ZW50ID0gJ0ZBSUwgLSB0aGUgbmF2aWdhdGlv
biBzdWNjZWVkZWQnOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgZnJhbWUyLnNy
YyA9ICdyZXNvdXJjZXMvbWVzc2FnZS10b3AuaHRtbCc7CisgICAgc2V0VGltZW91dCgoKSA9PiB7
CisgICAgICAgIGlmIChsb2cudGV4dENvbnRlbnQgPT0gJycpCisgICAgICAgICAgICBsb2cudGV4
dENvbnRlbnQgPSAnUEFTUyc7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0sIDEwMDApOworfQorCitmcmFt
ZTEuc3JjID0gJ2Fib3V0OmJsYW5rJzsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvbWVzc2FnZS1vcGVuZXIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvbWVzc2Fn
ZS1vcGVuZXIuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9y
ZXNvdXJjZXMvbWVzc2FnZS1vcGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keSBvbmxvYWQ9Im9wZW5lci50b3AucG9z
dE1lc3NhZ2UoJ2xvYWQnLCAnKicpOyI+CitMb2FkZWQuCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvbWVzc2FnZS10b3AuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvbWVzc2FnZS10b3Au
aHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMv
bWVzc2FnZS10b3AuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8Ym9keSBvbmxvYWQ9InRvcC5wb3N0TWVzc2FnZSgnbG9hZCcsICcq
Jyk7Ij4KK0xvYWRlZC4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="335142"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>