<?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>31897</bug_id>
          
          <creation_ts>2009-11-25 19:34:55 -0800</creation_ts>
          <short_desc>Add SVG animation test framework with &apos;snapshot&apos; functionality</short_desc>
          <delta_ts>2009-12-01 16:42:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>12437</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>jeffschiller</cc>
    
    <cc>jparent</cc>
    
    <cc>krit</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>staikos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>166609</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-11-25 19:34:55 -0800</bug_when>
    <thetext>This bug tracks the implementation of a SVG animation test framework with &apos;snapshot&apos; functionality.
It would be great if we could just move to certain times in the SVG timeline, let it render it and be able to sample the values.

This is absolutely needed to be able to test the upcoming animVal support, otherwhise we wouldn&apos;t have any suitable testing abilities
(setTimeout() based methods are not accurate enough, to do the sampling reliable)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166612</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-25 19:46:24 -0800</bug_when>
    <thetext>Agreed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166619</commentid>
    <comment_count>2</comment_count>
      <attachid>43891</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-11-25 20:22:28 -0800</bug_when>
    <thetext>Created attachment 43891
Initial patch

First version of the patch, please especially check the non-mac parts (qt/win/gtk, for typos etc.) Doesn&apos;t affect any existing layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166620</commentid>
    <comment_count>3</comment_count>
      <attachid>43892</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-11-25 20:29:33 -0800</bug_when>
    <thetext>Created attachment 43892
Updated patch

Oops, the upload version contained several typos in the ChangeLog and some tabs. Fixed that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167367</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-30 12:42:28 -0800</bug_when>
    <thetext>Attachment 43892 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Done processing WebKitTools/DumpRenderTree/wx/LayoutTestControllerWx.cpp
WebKit/gtk/webkit/webkitwebframe.cpp:57:  Alphabetical sorting problem.  [build/include_order] [4]
Done processing WebKit/gtk/webkit/webkitwebframe.cpp
WebKit/qt/Api/qwebframe.cpp:59:  Alphabetical sorting problem.  [build/include_order] [4]
Done processing WebKit/qt/Api/qwebframe.cpp
Done processing WebKit/mac/WebView/WebFramePrivate.h
Done processing WebCore/svg/SVGDocumentExtensions.h
Done processing WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp
Done processing WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h
Done processing WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp
Done processing WebCore/svg/animation/SMILTimeContainer.h
Done processing WebCore/svg/SVGDocumentExtensions.cpp
Done processing WebKit/win/WebFrame.h
Done processing WebKitTools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp
Done processing WebKit/gtk/webkit/webkitprivate.h
Done processing WebKitTools/DumpRenderTree/LayoutTestController.h
WebKit/win/WebFrame.cpp:95:  Alphabetical sorting problem.  [build/include_order] [4]
Done processing WebKit/win/WebFrame.cpp
Done processing WebCore/svg/animation/SMILTimeContainer.cpp
Done processing WebKitTools/DumpRenderTree/LayoutTestController.cpp
Total errors found: 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167780</commentid>
    <comment_count>5</comment_count>
      <attachid>43892</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-12-01 16:42:07 -0800</bug_when>
    <thetext>Comment on attachment 43892
Updated patch

Clearing flags on attachment: 43892

Committed r51567: &lt;http://trac.webkit.org/changeset/51567&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167781</commentid>
    <comment_count>6</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-12-01 16:42:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43891</attachid>
            <date>2009-11-25 20:22:28 -0800</date>
            <delta_ts>2009-11-25 20:29:33 -0800</delta_ts>
            <desc>Initial patch</desc>
            <filename>SVGAnimationTestingPatch.diff</filename>
            <type>text/plain</type>
            <size>51484</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTQwNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMDktMTEtMjUgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIFNWRyBhbmltYXRpb24gdGVzdCBmcmFtZXdvcmsgd2l0aCAnc25hcHNob3QnIGZ1
bmN0aW9uYWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMxODk3CisKKyAgICAgICAgQWRkICdzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRU
aW1lJyBtZXRob2QgdG8gdGhlIExheW91dFRlc3RDb250cm9sbGVyLAorICAgICAgICBmb3IgdGhl
IHVzZSB3aXRoaW4gdGhlIG5ldyBTVkcgYW5pbWF0aW9uIHRlc3QgZnJhbWV3b3JrIChMYXlvdXRU
ZXN0cy9zdmcvYW5pbWF0aW9ucy8pCisKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2Ft
cGxlQW5pbWF0aW9uQXRUaW1lKDxzdmcgYW5pbWF0aW9uIGlkPiwgPGFic29sdXRlIHRpbWU+LCA8
c3ZnIGVsZW1lbnQgaWQ+KTsKKyAgICAgICAgdG8gc2FtcGxlIGEgc3ZnIGFuaW1hdGVNb3Rpb24v
YW5pbWF0ZUNvbG9yL2FuaW1hdGUvc2V0IGVsZW1lbnQgYXQgY2VydGFpbiB0aW1lcy4KKworICAg
ICAgICBBZnRlciB0aGUgZGVzaXJlZCBTVkcgYW5pbWF0aW9uIHN0YXJ0cyBhbmQgY2FsbGluZyB0
aGUgbWV0aG9kIGFib3ZlLCBpdCdzIGltbWVkaWF0ZWx5IGZvcndhcmRlZCB0bworICAgICAgICB0
aGUgZGVzaXJlZCBzYW1wbGluZyB0aW1lLiBBZnRlciBKUyByZXR1cm5zIGZyb20gdGhlICdzYW1w
bGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lJyBtZXRob2QKKyAgICAgICAgYSBjYWxsYmFj
ayBpcyBmaXJlZCB1c2VkIHRvIHNhbXBsZSB0aGUgYW5pbWF0aW9uIHZhbHVlIGF0IHRoZSB0YXJn
ZXQgdGltZS4gSXQncyBtb2RlbGxlZCBzaW1pbGFyCisgICAgICAgIHRvIHRoZSBDU1MgYW5pbWF0
aW9uL3RyYW5zaXRpb24gdGVzdGluZyBmcmFtZXdvcmssIGluc3BpcmVkIGJ5CisgICAgICAgIExh
eW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcy4KKworICAgICAg
ICBUaG91Z2ggaXQgaGFzIGJlZW4gZXh0ZW5kZWQgdG8gaW50ZWdyYXRlIHdpdGhpbiB0aGUgZmFz
dC9qcy9qcy10ZXN0LSogZnJhbWV3b3JrLCB0aGF0J3MgdXNlZCBmb3IKKyAgICAgICAgdGhlIFNW
RyBkeW5hbWljLXVwZGF0ZXMgdGVzdHMsIHRvIHNpbXBsaWZ5IHRlc3QgY3JlYXRpb24sIGJ5IHV0
aWxpemluZyBzY3JpcHQtdGVzdHMvKiBvbmx5LgorCisgICAgICAgIEFkZGluZyBhIHNpbXBsZSB0
ZXN0Y2FzZSB0ZXN0aW5nIHRoZSBEUlQgbWV0aG9kcywgaXQgd2lsbCBzb29uIGJlIGV4dGVuZGVk
IHRvIHRlc3QgYW5pbVZhbC9iYXNlVmFsCisgICAgICAgIGludGVyYWN0aW9uLCB3aGlsZSBhbmlt
YXRpbmcuCisKKyAgICAgICAgVGVzdDogc3ZnL2FuaW1hdGlvbnMvYW5pbVZhbC1iYXNpY3MuaHRt
bAorCisgICAgICAgICogV2ViQ29yZS5iYXNlLmV4cDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9u
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnNhbXBsZUFu
aW1hdGlvbkF0VGltZSk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oOgor
ICAgICAgICAqIHN2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U01JTFRpbWVDb250YWluZXI6OlNNSUxUaW1lQ29udGFpbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNNSUxUaW1lQ29udGFpbmVyOjpzYW1wbGVBbmltYXRpb25BdFRpbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U01JTFRpbWVDb250YWluZXI6OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAg
ICAgICAqIHN2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuaDoKKwogMjAwOS0xMS0yNSAg
RGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhdmlkIExldmluLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkocmV2aXNpb24gNTE0MDUpCisrKyBX
ZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTk4NSw2ICs5ODUsMTAg
QEAgX19aVFZON1dlYkNvcmUxMkNocm9tZUNsaWVudEUKIF9fWlRWTjdXZWJDb3JlMTdGaWxlQ2hv
b3NlckNsaWVudEUKIF9fWlRWTjdXZWJDb3JlMTdGcmFtZUxvYWRlckNsaWVudEUKIF9fWlRWTjdX
ZWJDb3JlMjVIaXN0b3J5UHJvcGVydHlMaXN0V3JpdGVyRQorX19aTjdXZWJDb3JlMTRTVkdTTUlM
RWxlbWVudDEzaXNTTUlMRWxlbWVudEVQTlNfNE5vZGVFCitfX1pON1dlYkNvcmUyMVNWR0RvY3Vt
ZW50RXh0ZW5zaW9uczIxc2FtcGxlQW5pbWF0aW9uQXRUaW1lRVJLTlNfNlN0cmluZ0VQTlNfMTRT
VkdTTUlMRWxlbWVudEVkCitfX1pON1dlYkNvcmU4RG9jdW1lbnQxOWFjY2Vzc1NWR0V4dGVuc2lv
bnNFdgorX19aTjdXZWJDb3JlOERvY3VtZW50MTNzdmdFeHRlbnNpb25zRXYKIF9maWxlbmFtZUJ5
Rml4aW5nSWxsZWdhbENoYXJhY3RlcnMKIF9oYXNDYXNlSW5zZW5zaXRpdmVTdWJzdHJpbmcKIF9o
YXNDYXNlSW5zZW5zaXRpdmVTdWZmaXgKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1MTQwNSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05MCwxMCArOTAsMTAgQEAK
IAkJMDg3MjgxNTgwRjI2QjlCNjAwQUZDNTk2IC8qIE9wdGlvbkdyb3VwRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3MjgxNTQwRjI2QjlC
NjAwQUZDNTk2IC8qIE9wdGlvbkdyb3VwRWxlbWVudC5oICovOyB9OwogCQkwODc0NEJBQTBFREI3
RDg2MDA0QzlFNjMgLyogV01MT25FdmVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3NDRCQTkwRURCN0Q4NjAwNEM5RTYzIC8qIFdN
TE9uRXZlbnRFbGVtZW50LmNwcCAqLzsgfTsKIAkJMDg3NDRCQUUwRURCN0Q5MjAwNEM5RTYzIC8q
IFdNTE9uRXZlbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwODc0NEJBRDBFREI3RDkyMDA0QzlFNjMgLyogV01MT25FdmVudEVsZW1lbnQu
aCAqLzsgfTsKLQkJMDg3OEIxRkQxMDg3NEUzRjAwQTU1MDk3IC8qIFNWR0FuaW1hdGVkUHJvcGVy
dHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NzhC
MUY5MTA4NzRFM0YwMEE1NTA5NyAvKiBTVkdBbmltYXRlZFByb3BlcnR5LmggKi87IH07CisJCTA4
NzhCMUZEMTA4NzRFM0YwMEE1NTA5NyAvKiBTVkdBbmltYXRlZFByb3BlcnR5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc4QjFGOTEwODc0RTNGMDBB
NTUwOTcgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4NzhCMUZFMTA4NzRFM0YwMEE1NTA5NyAvKiBTeW5j
aHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc4QjFGQTEwODc0RTNGMDBBNTUwOTcgLyogU3luY2hy
b25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuY3BwICovOyB9OwotCQkwODc4QjFGRjEwODc0RTNG
MDBBNTUwOTcgLyogU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NzhCMUZCMTA4NzRFM0YwMEE1
NTA5NyAvKiBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5oICovOyB9OwotCQkwODc4
QjIwMDEwODc0RTNGMDBBNTUwOTcgLyogU3luY2hyb25pemFibGVUeXBlV3JhcHBlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3OEIxRkMxMDg3NEUz
RjAwQTU1MDk3IC8qIFN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXIuaCAqLzsgfTsKKwkJMDg3OEIx
RkYxMDg3NEUzRjAwQTU1MDk3IC8qIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc4QjFGQjEw
ODc0RTNGMDBBNTUwOTcgLyogU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwODc4QjIwMDEw
ODc0RTNGMDBBNTUwOTcgLyogU3luY2hyb25pemFibGVUeXBlV3JhcHBlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3OEIxRkMxMDg3NEUzRjAwQTU1
MDk3IC8qIFN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODdGRkEwRjBFRkYzRUQzMDA5REJEODggLyog
V01MSW5zZXJ0ZWRMZWdlbmRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4N0ZGQTBEMEVGRjNFRDMwMDlEQkQ4OCAvKiBXTUxJbnNlcnRl
ZExlZ2VuZEVsZW1lbnQuY3BwICovOyB9OwogCQkwODdGRkExMDBFRkYzRUQzMDA5REJEODggLyog
V01MSW5zZXJ0ZWRMZWdlbmRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwODdGRkEwRTBFRkYzRUQzMDA5REJEODggLyogV01MSW5zZXJ0ZWRM
ZWdlbmRFbGVtZW50LmggKi87IH07CiAJCTA4ODA3Qjc2MEVENzA5QUIwMDNGNjk3NSAvKiBXTUxH
b0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDg4MDdCNkEwRUQ3MDlBQjAwM0Y2OTc1IC8qIFdNTEdvRWxlbWVudC5jcHAgKi87IH07CkBA
IC0zMzE4LDcgKzMzMTgsNyBAQAogCQlCMjIyNzk4NTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5p
bWF0ZWRQYXRoRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjIyMjc3RUYwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkUGF0aERhdGEuaCAq
LzsgfTsKIAkJQjIyMjc5ODcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkUG9pbnRzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3N0Yx
MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFBvaW50cy5jcHAgKi87IH07CiAJCUIyMjI3
OTg4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFBvaW50cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc3RjIwRDAwQkYxRjAwNzFCNzgy
IC8qIFNWR0FuaW1hdGVkUG9pbnRzLmggKi87IH07Ci0JCUIyMjI3OThEMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdBbmltYXRlZFRlbXBsYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzdGNzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRU
ZW1wbGF0ZS5oICovOyB9OworCQlCMjIyNzk4RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0
ZWRUZW1wbGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjIyMjc3RjcwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkVGVtcGxhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMjIyNzk4RjBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc3RjkwRDAwQkYxRjAwNzFCNzgyIC8q
IFNWR0FuaW1hdGVFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjc5OTAwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0FuaW1hdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjIyNzdGQTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZUVsZW1l
bnQuaCAqLzsgfTsKIAkJQjIyMjc5OTIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVNb3Rp
b25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyMjI3N0ZDMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlTW90aW9uRWxlbWVudC5j
cHAgKi87IH07CkBAIC0zMzQ0LDcgKzMzNDQsNyBAQAogCQlCMjIyNzlCMzBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc4MUQwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0RvY3VtZW50LmNwcCAq
LzsgfTsKIAkJQjIyMjc5QjQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0RvY3VtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzgxRTBEMDBCRjFG
MDA3MUI3ODIgLyogU1ZHRG9jdW1lbnQuaCAqLzsgfTsKIAkJQjIyMjc5QjYwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc4MjAwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0VsZW1lbnQuY3BwICov
OyB9OwotCQlCMjIyNzlCNzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4MjEwRDAwQkYxRjAw
NzFCNzgyIC8qIFNWR0VsZW1lbnQuaCAqLzsgfTsKKwkJQjIyMjc5QjcwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyMjI3ODIxMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdFbGVtZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjIyMjc5QjkwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0VsZW1lbnRJbnN0YW5jZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzgyMzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZH
RWxlbWVudEluc3RhbmNlLmNwcCAqLzsgfTsKIAkJQjIyMjc5QkEwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0VsZW1lbnRJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc4MjQwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0VsZW1lbnRJbnN0YW5j
ZS5oICovOyB9OwogCQlCMjIyNzlCQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRWxlbWVudEluc3Rh
bmNlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjIyNzgyNjBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHRWxlbWVudEluc3RhbmNlTGlzdC5jcHAg
Ki87IH07CkBAIC0zNDI3LDcgKzM0MjcsNyBAQAogCQlCMjIyN0EyRjBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHTGFuZ1NwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyMjI3ODk5MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMYW5nU3BhY2UuY3BwICov
OyB9OwogCQlCMjIyN0EzMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGFuZ1NwYWNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzg5QTBEMDBCRjIw
MDA3MUI3ODIgLyogU1ZHTGFuZ1NwYWNlLmggKi87IH07CiAJCUIyMjI3QTMyMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdMZW5ndGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc4OUMwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xlbmd0aC5jcHAgKi87
IH07Ci0JCUIyMjI3QTMzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMZW5ndGguaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3ODlEMEQwMEJGMjAwMDcx
Qjc4MiAvKiBTVkdMZW5ndGguaCAqLzsgfTsKKwkJQjIyMjdBMzMwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0xlbmd0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjIyMjc4OUQwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xlbmd0aC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyMjI3QTM1MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdMZW5ndGhMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyMjI3ODlGMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0
LmNwcCAqLzsgfTsKIAkJQjIyMjdBMzYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xlbmd0aExpc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEEw
MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0LmggKi87IH07CiAJCUIyMjI3QTM4MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4QTIwRDAwQkYyMDAwNzFC
NzgyIC8qIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAgKi87IH07CkBAIC0zNjg5LDcgKzM2
ODksNyBAQAogCQlCMjdCMjg1RDBDRUYwRDcyMDBEMzlENTQgLyogRE9NU1ZHR2x5cGhFbGVtZW50
LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjdCMjgzMDBDRUYwQzM1MDBEMzlENTQgLyogRE9NU1ZHR2x5cGhFbGVtZW50Lmgg
Ki87IH07CiAJCUIyN0IyODVFMENFRjBENzIwMEQzOUQ1NCAvKiBET01TVkdNaXNzaW5nR2x5cGhF
bGVtZW50LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjdCMjgzMzBDRUYwQzM1MDBEMzlENTQgLyogRE9NU1ZHTWlzc2luZ0ds
eXBoRWxlbWVudC5oICovOyB9OwogCQlCMjhDNkEyNzBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHRG9j
dW1lbnRFeHRlbnNpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyOEM2QTFFMEQwMEM0NDgwMDMzNEFBNCAvKiBTVkdEb2N1bWVudEV4dGVuc2lv
bnMuY3BwICovOyB9OwotCQlCMjhDNkEyODBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHRG9jdW1lbnRF
eHRlbnNpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjhDNkExRjBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmggKi87
IH07CisJCUIyOEM2QTI4MEQwMEM0NDgwMDMzNEFBNCAvKiBTVkdEb2N1bWVudEV4dGVuc2lvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyOEM2QTFG
MEQwMEM0NDgwMDMzNEFBNCAvKiBTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMjhDNkEyOTBEMDBDNDQ4MDAz
MzRBQTQgLyogU1ZHSW1hZ2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjI4QzZBMjAwRDAwQzQ0ODAwMzM0QUE0IC8qIFNWR0ltYWdlTG9h
ZGVyLmNwcCAqLzsgfTsKIAkJQjI4QzZBMkEwRDAwQzQ0ODAwMzM0QUE0IC8qIFNWR0ltYWdlTG9h
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjhD
NkEyMTBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHSW1hZ2VMb2FkZXIuaCAqLzsgfTsKIAkJQjI5N0JD
NzAwQjNDMTRDRjAwNDVBNTkwIC8qIEpTU1ZHUGF0aFNlZ0xpc3RDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI5N0JDNkYwQjNDMTRDRjAw
NDVBNTkwIC8qIEpTU1ZHUGF0aFNlZ0xpc3RDdXN0b20uY3BwICovOyB9OwpAQCAtNDcyNSwxMSAr
NDcyNSwxMSBAQAogCQlFNDk2MjZDMzBEODBEOTQ5MDBFMzQwNUMgLyogUHJlbG9hZFNjYW5uZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDRBQkUx
MEQ3NTQyRjEwMEY5Njg2OSAvKiBQcmVsb2FkU2Nhbm5lci5oICovOyB9OwogCQlFNEFGQ0ZBNTBE
QUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBRkNGQTQwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRCZXpp
ZXIuaCAqLzsgfTsKIAkJRTRBRkQwMEIwREFGMzM1NDAwRjVGNTVDIC8qIFNNSUxUaW1lLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUZEMDA1MERB
RjMzNTQwMEY1RjU1QyAvKiBTTUlMVGltZS5jcHAgKi87IH07Ci0JCUU0QUZEMDBDMERBRjMzNTQw
MEY1RjU1QyAvKiBTTUlMVGltZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTRBRkQwMDYwREFGMzM1NDAwRjVGNTVDIC8qIFNNSUxUaW1lLmggKi87IH07
CisJCUU0QUZEMDBDMERBRjMzNTQwMEY1RjU1QyAvKiBTTUlMVGltZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBRkQwMDYwREFGMzM1NDAwRjVGNTVD
IC8qIFNNSUxUaW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTRBRkQwMEQwREFGMzM1NTAwRjVGNTVDIC8qIFNNSUxUaW1lQ29udGFpbmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUZEMDA3
MERBRjMzNTQwMEY1RjU1QyAvKiBTTUlMVGltZUNvbnRhaW5lci5jcHAgKi87IH07CiAJCUU0QUZE
MDBFMERBRjMzNTUwMEY1RjU1QyAvKiBTTUlMVGltZUNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBRkQwMDgwREFGMzM1NDAwRjVGNTVD
IC8qIFNNSUxUaW1lQ29udGFpbmVyLmggKi87IH07CiAJCUU0QUZEMDBGMERBRjMzNTUwMEY1RjU1
QyAvKiBTVkdTTUlMRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNEFGRDAwOTBEQUYzMzU0MDBGNUY1NUMgLyogU1ZHU01JTEVsZW1lbnQu
Y3BwICovOyB9OwotCQlFNEFGRDAxMDBEQUYzMzU1MDBGNUY1NUMgLyogU1ZHU01JTEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUZEMDBB
MERBRjMzNTQwMEY1RjU1QyAvKiBTVkdTTUlMRWxlbWVudC5oICovOyB9OworCQlFNEFGRDAxMDBE
QUYzMzU1MDBGNUY1NUMgLyogU1ZHU01JTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUZEMDBBMERBRjMzNTQwMEY1RjU1QyAvKiBTVkdT
TUlMRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUU0QzE3ODlBMEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDMTc4OTUwRUU2
OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9yTGlzdC5jcHAgKi87IH07CiAJCUU0QzE3ODlCMEVF
NjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzE3ODk2MEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NT
ZWxlY3Rvckxpc3QuaCAqLzsgfTsKIAkJRTRDMjc5NTgwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRl
ck1lZGlhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0QzI3OTU2MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5jcHAgKi87IH07CkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAJKHJldmlzaW9uIDUxNDA1KQorKysg
V2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIu
aCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU1ZHU01JTEVsZW1lbnQuaCIKICNpbmNs
dWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU01JTFRpbWVDb250YWluZXIuaCIKICNp
bmNsdWRlICJYTUxUb2tlbml6ZXIuaCIKQEAgLTg2LDYgKzg3LDE3IEBAIHZvaWQgU1ZHRG9jdW1l
bnRFeHRlbnNpb25zOjp1bnBhdXNlQW5pbWEKICAgICAgICAgKCppdHIpLT51bnBhdXNlQW5pbWF0
aW9ucygpOwogfQogCitib29sIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6c2FtcGxlQW5pbWF0aW9u
QXRUaW1lKGNvbnN0IFN0cmluZyYgZWxlbWVudElkLCBTVkdTTUlMRWxlbWVudCogZWxlbWVudCwg
ZG91YmxlIHRpbWUpCit7CisgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIFNNSUxUaW1lQ29udGFp
bmVyKiBjb250YWluZXIgPSBlbGVtZW50LT50aW1lQ29udGFpbmVyKCk7CisgICAgaWYgKCFjb250
YWluZXIgfHwgY29udGFpbmVyLT5pc1BhdXNlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBjb250YWluZXItPnNhbXBsZUFuaW1hdGlvbkF0VGltZShlbGVtZW50SWQsIHRpbWUpOwor
ICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVwb3J0
V2FybmluZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9
IG1fZG9jLT5mcmFtZSgpKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgJKHJl
dmlzaW9uIDUxNDA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFN0cmluZzsK
IGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsKIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQ7CitjbGFz
cyBTVkdTTUlMRWxlbWVudDsKIGNsYXNzIFNWR1NWR0VsZW1lbnQ7CiAKIGNsYXNzIFNWR0RvY3Vt
ZW50RXh0ZW5zaW9ucyB7CkBAIC01NCw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0
QW5pbWF0aW9ucygpOwogICAgIHZvaWQgcGF1c2VBbmltYXRpb25zKCk7CiAgICAgdm9pZCB1bnBh
dXNlQW5pbWF0aW9ucygpOworICAgIGJvb2wgc2FtcGxlQW5pbWF0aW9uQXRUaW1lKGNvbnN0IFN0
cmluZyYgZWxlbWVudElkLCBTVkdTTUlMRWxlbWVudCosIGRvdWJsZSB0aW1lKTsKIAogICAgIHZv
aWQgcmVwb3J0V2FybmluZyhjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlcG9ydEVycm9yKGNv
bnN0IFN0cmluZyYpOwpJbmRleDogV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFp
bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250
YWluZXIuY3BwCShyZXZpc2lvbiA1MTQwNSkKKysrIFdlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlM
VGltZUNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgU01JTFRp
bWVDb250YWluZXI6OlNNSUxUaW1lQ29udGFpbmVyKFNWRwogICAgIDogbV9iZWdpblRpbWUoMCkK
ICAgICAsIG1fcGF1c2VUaW1lKDApCiAgICAgLCBtX2FjY3VtdWxhdGVkUGF1c2VUaW1lKDApCisg
ICAgLCBtX25leHRNYW51YWxTYW1wbGVUaW1lKDApCiAgICAgLCBtX2RvY3VtZW50T3JkZXJJbmRl
eGVzRGlydHkoZmFsc2UpCiAgICAgLCBtX3RpbWVyKHRoaXMsICZTTUlMVGltZUNvbnRhaW5lcjo6
dGltZXJGaXJlZCkKICAgICAsIG1fb3duZXJTVkdFbGVtZW50KG93bmVyKQpAQCAtMjA3LDE0ICsy
MDgsNDUgQEAgU3RyaW5nIFNNSUxUaW1lQ29udGFpbmVyOjpiYXNlVmFsdWVGb3IoRQogICAgIG1f
c2F2ZWRCYXNlVmFsdWVzLmFkZChrZXksIGJhc2VWYWx1ZSk7CiAgICAgcmV0dXJuIGJhc2VWYWx1
ZTsKIH0KLSAgICAgIAorCit2b2lkIFNNSUxUaW1lQ29udGFpbmVyOjpzYW1wbGVBbmltYXRpb25B
dFRpbWUoY29uc3QgU3RyaW5nJiBlbGVtZW50SWQsIGRvdWJsZSBuZXdUaW1lKQoreworICAgIEFT
U0VSVChtX2JlZ2luVGltZSk7CisgICAgQVNTRVJUKCFpc1BhdXNlZCgpKTsKKworICAgIC8vIEZh
c3QtZm9yd2FyZCB0byB0aGUgdGltZSBEUlQgd2FudHMgdG8gc2FtcGxlCisgICAgbV90aW1lci5z
dG9wKCk7CisgICAgbV9uZXh0U2FtcGxpbmdUYXJnZXQgPSBlbGVtZW50SWQ7CisgICAgbV9uZXh0
TWFudWFsU2FtcGxlVGltZSA9IG5ld1RpbWU7CisKKyAgICB1cGRhdGVBbmltYXRpb25zKGVsYXBz
ZWQoKSk7Cit9CisKIHZvaWQgU01JTFRpbWVDb250YWluZXI6OnVwZGF0ZUFuaW1hdGlvbnMoU01J
TFRpbWUgZWxhcHNlZCkKIHsKICAgICBTTUlMVGltZSBlYXJsaWVyc0ZpcmVUaW1lID0gU01JTFRp
bWU6OnVucmVzb2x2ZWQoKTsKIAogICAgIFZlY3RvcjxTVkdTTUlMRWxlbWVudCo+IHRvQW5pbWF0
ZTsKICAgICBjb3B5VG9WZWN0b3IobV9zY2hlZHVsZWRBbmltYXRpb25zLCB0b0FuaW1hdGUpOwot
ICAgIAorCisgICAgaWYgKG1fbmV4dE1hbnVhbFNhbXBsZVRpbWUpIHsKKyAgICAgICAgU01JTFRp
bWUgc2FtcGxpbmdEaWZmOworICAgICAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgdG9Bbmlt
YXRlLnNpemUoKTsgKytuKSB7CisgICAgICAgICAgICBTVkdTTUlMRWxlbWVudCogYW5pbWF0aW9u
ID0gdG9BbmltYXRlW25dOworICAgICAgICAgICAgQVNTRVJUKGFuaW1hdGlvbi0+dGltZUNvbnRh
aW5lcigpID09IHRoaXMpOworCisgICAgICAgICAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50
ID0gYW5pbWF0aW9uLT50YXJnZXRFbGVtZW50KCk7CisgICAgICAgICAgICBpZiAoIXRhcmdldEVs
ZW1lbnQgfHwgdGFyZ2V0RWxlbWVudC0+Z2V0SURBdHRyaWJ1dGUoKSAhPSBtX25leHRTYW1wbGlu
Z1RhcmdldCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgc2FtcGxp
bmdEaWZmID0gYW5pbWF0aW9uLT5pbnRlcnZhbEJlZ2luKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGVsYXBzZWQgPSBTTUlMVGltZShtX25leHRNYW51YWxTYW1w
bGVUaW1lKSArIHNhbXBsaW5nRGlmZjsKKyAgICAgICAgbV9uZXh0TWFudWFsU2FtcGxlVGltZSA9
IDA7CisgICAgfQorCiAgICAgLy8gU29ydCBhY2NvcmRpbmcgdG8gcHJpb3JpdHkuIEVsZW1lbnRz
IHdpdGggbGF0ZXIgYmVnaW4gdGltZSBoYXZlIGhpZ2hlciBwcmlvcml0eS4KICAgICAvLyBJbiBj
YXNlIG9mIGEgdGllLCBkb2N1bWVudCBvcmRlciBkZWNpZGVzLiAKICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYWxzbyBjb25zaWRlciB0aW1pbmcgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZSBl
bGVtZW50cy4gRGVwZW5kZW50cwpJbmRleDogV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1l
Q29udGFpbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1l
Q29udGFpbmVyLmgJKHJldmlzaW9uIDUxNDA1KQorKysgV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NN
SUxUaW1lQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgdm9pZCBzZXREb2N1bWVudE9yZGVySW5k
ZXhlc0RpcnR5KCkgeyBtX2RvY3VtZW50T3JkZXJJbmRleGVzRGlydHkgPSB0cnVlOyB9CiAKKyAg
ICAgICAgLy8gTW92ZSB0byBhIHNwZWNpZmljIHRpbWUuIE9ubHkgdXNlZCBmb3IgRFJUIHRlc3Rp
bmcgcHVycG9zZXMuCisgICAgICAgIHZvaWQgc2FtcGxlQW5pbWF0aW9uQXRUaW1lKGNvbnN0IFN0
cmluZyYgZWxlbWVudElkLCBkb3VibGUgc2Vjb25kcyk7CisKICAgICBwcml2YXRlOgogICAgICAg
ICBTTUlMVGltZUNvbnRhaW5lcihTVkdTVkdFbGVtZW50KiBvd25lcik7CiAgICAgICAgIApAQCAt
NzYsNyArNzksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGRvdWJsZSBtX2JlZ2lu
VGltZTsKICAgICAgICAgZG91YmxlIG1fcGF1c2VUaW1lOwogICAgICAgICBkb3VibGUgbV9hY2N1
bXVsYXRlZFBhdXNlVGltZTsKLSAgICAgICAgCisgICAgICAgIGRvdWJsZSBtX25leHRNYW51YWxT
YW1wbGVUaW1lOworICAgICAgICBTdHJpbmcgbV9uZXh0U2FtcGxpbmdUYXJnZXQ7CisKICAgICAg
ICAgYm9vbCBtX2RvY3VtZW50T3JkZXJJbmRleGVzRGlydHk7CiAgICAgICAgIAogICAgICAgICBU
aW1lcjxTTUlMVGltZUNvbnRhaW5lcj4gbV90aW1lcjsKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MTQwNSkK
KysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMDktMTEtMjUgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFNWRyBh
bmltYXRpb24gdGVzdCBmcmFtZXdvcmsgd2l0aCAnc25hcHNob3QnIGZ1bmN0aW9uYWxpdHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxODk3CisKKyAg
ICAgICAgQWRkIEFQSSB1c2VkIGJ5IHRoZSBuZXcgJ3NhbXBsZVNWR0FuaW1hdGlvbkZvckVsZW1l
bnRBdFRpbWUnIERSVCBtZXRob2QsCisgICAgICAgIGZvcndhcmRpbmcgdGhlIGNhbGwgdG8gU1ZH
RG9jdW1lbnRFeHRlbnNpb25zLCBpZiBTVkcgaXMgZW5hYmxlZC4KKworICAgICAgICBJbXBsZW1l
bnRlZCBqdXN0IGxpa2UgdGhlIGV4aXN0aW5nIHBhdXNlQW5pbWF0aW9uKiBtZXRob2RzIGZvciBD
U1MgYW5pbWF0aW9ucy4KKworICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfZnJh
bWVfcGF1c2Vfc3ZnX2FuaW1hdGlvbik6CisKIDIwMDktMTEtMjQgIEpvYW5tYXJpZSBEaWdncyAg
PGpvYW5tYXJpZS5kaWdnc0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExv
cGV6LgpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAkocmV2aXNpb24gNTE0MDUpCisr
KyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
MSw2ICszMDEsOSBAQCBleHRlcm4gIkMiIHsKICAgICBXRUJLSVRfQVBJIGJvb2wKICAgICB3ZWJr
aXRfd2ViX2ZyYW1lX3BhdXNlX3RyYW5zaXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25z
dCBnY2hhciogbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IGdjaGFyKiBlbGVtZW50KTsKIAorICAg
IFdFQktJVF9BUEkgYm9vbAorICAgIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2Vfc3ZnX2FuaW1hdGlv
bihXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBhbmltYXRpb25JZCwgZG91Ymxl
IHRpbWUsIGNvbnN0IGdjaGFyKiBlbGVtZW50SWQpOworCiAgICAgV0VCS0lUX0FQSSB1bnNpZ25l
ZCBpbnQKICAgICB3ZWJraXRfd2ViX2ZyYW1lX251bWJlcl9vZl9hY3RpdmVfYW5pbWF0aW9ucyhX
ZWJLaXRXZWJGcmFtZSogZnJhbWUpOwogCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJmcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJh
bWUuY3BwCShyZXZpc2lvbiA1MTQwNSkKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZy
YW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTdWJz
dGl0dXRlRGF0YS5oIgorI2luY2x1ZGUgIlNWR1NNSUxFbGVtZW50LmgiCiAKICNpbmNsdWRlIDxh
dGsvYXRrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgpAQCAtOTU5LDYg
Kzk2MCwyMiBAQCBib29sIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2VfdHJhbnNpdGlvbihXCiAgICAg
cmV0dXJuIGNvcmUoZnJhbWUpLT5hbmltYXRpb24oKS0+cGF1c2VUcmFuc2l0aW9uQXRUaW1lKGNv
cmVFbGVtZW50LT5yZW5kZXJlcigpLCBBdG9taWNTdHJpbmcobmFtZSksIHRpbWUpOwogfQogCiti
b29sIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2Vfc3ZnX2FuaW1hdGlvbihXZWJLaXRXZWJGcmFtZSog
ZnJhbWUsIGNvbnN0IGdjaGFyKiBhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIGNvbnN0IGdjaGFy
KiBlbGVtZW50SWQpCit7CisgICAgQVNTRVJUKGNvcmUoZnJhbWUpKTsKKyAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBjb3JlKGZyYW1lKS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50IHx8
ICFkb2N1bWVudC0+c3ZnRXh0ZW5zaW9ucygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
RWxlbWVudCogY29yZUVsZW1lbnQgPSBkb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQoQXRvbWljU3Ry
aW5nKGFuaW1hdGlvbklkKSk7CisgICAgaWYgKCFjb3JlRWxlbWVudCB8fCAhU1ZHU01JTEVsZW1l
bnQ6OmlzU01JTEVsZW1lbnQoY29yZUVsZW1lbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisj
aWYgRU5BQkxFKFNWRykKKyAgICByZXR1cm4gZG9jdW1lbnQtPmFjY2Vzc1NWR0V4dGVuc2lvbnMo
KS0+c2FtcGxlQW5pbWF0aW9uQXRUaW1lKGVsZW1lbnRJZCwgc3RhdGljX2Nhc3Q8U1ZHU01JTEVs
ZW1lbnQqPihjb3JlRWxlbWVudCksIHRpbWUpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKK30KKwogdW5zaWduZWQgaW50IHdlYmtpdF93ZWJfZnJhbWVfbnVtYmVyX29mX2FjdGl2
ZV9hbmltYXRpb25zKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZShmcmFtZSk7CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNTE0MDUpCisrKyBXZWJLaXQvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDA5LTExLTI1ICBO
aWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTVkcgYW5pbWF0aW9uIHRlc3Qg
ZnJhbWV3b3JrIHdpdGggJ3NuYXBzaG90JyBmdW5jdGlvbmFsaXR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTg5NworCisgICAgICAgIEFkZCBBUEkg
dXNlZCBieSB0aGUgbmV3ICdzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lJyBEUlQg
bWV0aG9kLAorICAgICAgICBmb3J3YXJkaW5nIHRoZSBjYWxsIHRvIFNWR0RvY3VtZW50RXh0ZW5z
aW9ucywgaWYgU1ZHIGlzIGVuYWJsZWQuCisKKyAgICAgICAgSW1wbGVtZW50ZWQganVzdCBsaWtl
IHRoZSBleGlzdGluZyBwYXVzZUFuaW1hdGlvbiogbWV0aG9kcyBmb3IgQ1NTIGFuaW1hdGlvbnMu
CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBf
cGF1c2VTVkdBbmltYXRpb246b25TTUlMTm9kZTphdFRpbWU6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJGcmFtZVByaXZhdGUuaDoKKwogMjAwOS0xMS0yNCAgRG1pdHJ5IFRpdG92ICA8ZGltaWNo
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDUxNDA1KQorKysgV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
Y3JpcHRWYWx1ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TbWFydFJlcGxhY2UuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvU1ZHU01JTEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEl0ZXJhdG9y
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1R5
cGluZ0NvbW1hbmQuaD4KQEAgLTExMTYsNiArMTExNywyOSBAQCBzdGF0aWMgaW5saW5lIFdlYkRh
dGFTb3VyY2UgKmRhdGFTb3VyY2UoCiAgICAgcmV0dXJuIGNvbnRyb2xsZXItPnBhdXNlVHJhbnNp
dGlvbkF0VGltZShjb3JlTm9kZS0+cmVuZGVyZXIoKSwgbmFtZSwgdGltZSk7CiB9CiAKKy8vIFBh
dXNlIGEgZ2l2ZW4gU1ZHIGFuaW1hdGlvbiBvbiB0aGUgdGFyZ2V0IG5vZGUgYXQgYSBzcGVjaWZp
YyB0aW1lLgorLy8gVGhpcyBtZXRob2QgaXMgb25seSBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0
ZXN0aW5nIHRoZSBTVkcgYW5pbWF0aW9uIHN5c3RlbS4KKy0gKEJPT0wpX3BhdXNlU1ZHQW5pbWF0
aW9uOihOU1N0cmluZyopZWxlbWVudElkIG9uU01JTE5vZGU6KERPTU5vZGUgKilub2RlIGF0VGlt
ZTooTlNUaW1lSW50ZXJ2YWwpdGltZQoreworICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUoc2VsZik7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworIAorICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQgfHwgIWRv
Y3VtZW50LT5zdmdFeHRlbnNpb25zKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE5v
ZGUqIGNvcmVOb2RlID0gY29yZShub2RlKTsKKyAgICBpZiAoIWNvcmVOb2RlIHx8ICFTVkdTTUlM
RWxlbWVudDo6aXNTTUlMRWxlbWVudChjb3JlTm9kZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworI2lmIEVOQUJMRShTVkcpCisgICAgcmV0dXJuIGRvY3VtZW50LT5hY2Nlc3NTVkdFeHRlbnNp
b25zKCktPnNhbXBsZUFuaW1hdGlvbkF0VGltZShlbGVtZW50SWQsIHN0YXRpY19jYXN0PFNWR1NN
SUxFbGVtZW50Kj4oY29yZU5vZGUpLCB0aW1lKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOwor
I2VuZGlmCit9CisKIC0gKHVuc2lnbmVkKSBfbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zCiB7CiAg
ICAgRnJhbWUqIGZyYW1lID0gY29yZShzZWxmKTsKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWVQcml2YXRlLmgJKHJldmlzaW9uIDUxNDA1KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDEwIEBAIHR5cGVkZWYg
ZW51bSB7CiAtIChCT09MKV9wYXVzZUFuaW1hdGlvbjooTlNTdHJpbmcqKW5hbWUgb25Ob2RlOihE
T01Ob2RlICopbm9kZSBhdFRpbWU6KE5TVGltZUludGVydmFsKXRpbWU7CiAtIChCT09MKV9wYXVz
ZVRyYW5zaXRpb25PZlByb3BlcnR5OihOU1N0cmluZyopbmFtZSBvbk5vZGU6KERPTU5vZGUqKW5v
ZGUgYXRUaW1lOihOU1RpbWVJbnRlcnZhbCl0aW1lOwogCisvLyBQYXVzZSBhIGdpdmVuIFNWRyBh
bmltYXRpb24gb24gdGhlIHRhcmdldCBub2RlIGF0IGEgc3BlY2lmaWMgdGltZS4KKy8vIFRoaXMg
bWV0aG9kIGlzIG9ubHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGVzdGluZyB0aGUgU1ZHIGFu
aW1hdGlvbiBzeXN0ZW0uCistIChCT09MKV9wYXVzZVNWR0FuaW1hdGlvbjooTlNTdHJpbmcqKWVs
ZW1lbnRJZCBvblNNSUxOb2RlOihET01Ob2RlICopbm9kZSBhdFRpbWU6KE5TVGltZUludGVydmFs
KXRpbWU7CisKIC8vIFJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBjdXJyZW50bHkgcnVubmlu
ZyBhbmltYXRpb25zIChpbmNsdWRlcyBib3RoIENTUyB0cmFuc2l0aW9ucyBhbmQgQ1NTIGFuaW1h
dGlvbnMpLgogLSAodW5zaWduZWQpIF9udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnM7CiAKSW5kZXg6
IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwko
cmV2aXNpb24gNTE0MDUpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMTEtMjUgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIFNWRyBhbmltYXRpb24gdGVzdCBmcmFtZXdvcmsgd2l0aCAnc25hcHNob3QnIGZ1
bmN0aW9uYWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMxODk3CisKKyAgICAgICAgQWRkIEFQSSB1c2VkIGJ5IHRoZSBuZXcgJ3NhbXBsZVNWR0Fu
aW1hdGlvbkZvckVsZW1lbnRBdFRpbWUnIERSVCBtZXRob2QsCisgICAgICAgIGZvcndhcmRpbmcg
dGhlIGNhbGwgdG8gU1ZHRG9jdW1lbnRFeHRlbnNpb25zLCBpZiBTVkcgaXMgZW5hYmxlZC4KKwor
ICAgICAgICBJbXBsZW1lbnRlZCBqdXN0IGxpa2UgdGhlIGV4aXN0aW5nIHBhdXNlQW5pbWF0aW9u
KiBtZXRob2RzIGZvciBDU1MgYW5pbWF0aW9ucy4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUu
Y3BwOgorICAgICAgICAocXRfZHJ0X3BhdXNlU1ZHQW5pbWF0aW9uKToKKwogMjAwOS0xMS0yMyAg
RGF2aWQgQm9kZGllICA8ZGJvZGRpZUB0cm9sbHRlY2guY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEhhdXNtYW5uLgpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAkocmV2aXNpb24gNTE0MDUp
CisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYg
KzU2LDcgQEAKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiU3Vic3RpdHV0ZURhdGEuaCIKKyNpbmNsdWRlICJTVkdTTUlM
RWxlbWVudC5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAibWFya3VwLmgi
CiAjaW5jbHVkZSAicXRfaW5zdGFuY2UuaCIKQEAgLTE0OCw2ICsxNDksMzEgQEAgYm9vbCBRV0VC
S0lUX0VYUE9SVCBxdF9kcnRfcGF1c2VUcmFuc2l0aQogICAgIHJldHVybiBjb250cm9sbGVyLT5w
YXVzZVRyYW5zaXRpb25BdFRpbWUoY29yZU5vZGUtPnJlbmRlcmVyKCksIHByb3BlcnR5TmFtZSwg
dGltZSk7CiB9CiAKKy8vIFBhdXNlIGEgZ2l2ZW4gU1ZHIGFuaW1hdGlvbiBvbiB0aGUgdGFyZ2V0
IG5vZGUgYXQgYSBzcGVjaWZpYyB0aW1lLgorLy8gVGhpcyBtZXRob2QgaXMgb25seSBpbnRlbmRl
ZCB0byBiZSB1c2VkIGZvciB0ZXN0aW5nIHRoZSBTVkcgYW5pbWF0aW9uIHN5c3RlbS4KK2Jvb2wg
UVdFQktJVF9FWFBPUlQgcXRfZHJ0X3BhdXNlU1ZHQW5pbWF0aW9uKFFXZWJGcmFtZSAqcWZyYW1l
LCBjb25zdCBRU3RyaW5nICZhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcg
JmVsZW1lbnRJZCkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3Jl
KHFmcmFtZSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
RG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIFFfQVNTRVJUKGRvYyk7CisK
KyAgICBpZiAoIWRvYy0+c3ZnRXh0ZW5zaW9ucygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBOb2RlKiBjb3JlTm9kZSA9IGRvYy0+Z2V0RWxlbWVudEJ5SWQoYW5pbWF0aW9uSWQpOwor
ICAgIGlmICghY29yZU5vZGUgfHwgIVNWR1NNSUxFbGVtZW50Ojppc1NNSUxFbGVtZW50KGNvcmVO
b2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisjaWYgRU5BQkxFKFNWRykKKyAgICByZXR1
cm4gZG9jdW1lbnQtPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+c2FtcGxlQW5pbWF0aW9uQXRUaW1l
KGVsZW1lbnRJZCwgc3RhdGljX2Nhc3Q8U1ZHU01JTEVsZW1lbnQqPihjb3JlTm9kZSksIHRpbWUp
OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogLy8gUmV0dXJucyB0aGUg
dG90YWwgbnVtYmVyIG9mIGN1cnJlbnRseSBydW5uaW5nIGFuaW1hdGlvbnMgKGluY2x1ZGVzIGJv
dGggQ1NTIHRyYW5zaXRpb25zIGFuZCBDU1MgYW5pbWF0aW9ucykuCiBpbnQgUVdFQktJVF9FWFBP
UlQgcXRfZHJ0X251bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhRV2ViRnJhbWUgKnFmcmFtZSkKIHsK
SW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiA1MTQwNSkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMDktMTEtMjUgIE5pa29sYXMgWmltbWVybWFubiAg
PG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BT
ISkKKworICAgICAgICAqIEludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGw6CisgICAgICAg
ICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OnBhdXNlU1ZHQW5pbWF0aW9uKToK
KyAgICAgICAgKiBXZWJGcmFtZS5oOgorCisyMDA5LTExLTI1ICBOaWtvbGFzIFppbW1lcm1hbm4g
IDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBTVkcgYW5pbWF0aW9uIHRlc3QgZnJhbWV3b3JrIHdpdGggJ3Nu
YXBzaG90JyBmdW5jdGlvbmFsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMTg5NworCisgICAgICAgIEFkZCBBUEkgdXNlZCBieSB0aGUgbmV3ICdz
YW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lJyBEUlQgbWV0aG9kLAorICAgICAgICBm
b3J3YXJkaW5nIHRoZSBjYWxsIHRvIFNWR0RvY3VtZW50RXh0ZW5zaW9ucywgaWYgU1ZHIGlzIGVu
YWJsZWQuCisKKyAgICAgICAgSW1wbGVtZW50ZWQganVzdCBsaWtlIHRoZSBleGlzdGluZyBwYXVz
ZUFuaW1hdGlvbiogbWV0aG9kcyBmb3IgQ1NTIGFuaW1hdGlvbnMuCisKKyAgICAgICAgKiBJbnRl
cmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYkZyYW1lOjpwYXVzZVNWR0FuaW1hdGlvbik6CisgICAgICAgICogV2ViRnJhbWUu
aDoKKwogMjAwOS0xMS0yNSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAogICAgICAgICBOZWVk
IGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQogCiAgICAgICAgICogSW50
ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlkbDoKICAgICAgICAgKiBXZWJGcmFtZS5jcHA6CiAg
ICAgICAgIChXZWJGcmFtZTo6cGF1c2VTVkdBbmltYXRpb24pOgogICAgICAgICAqIFdlYkZyYW1l
Lmg6CiAKSW5kZXg6IFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC93aW4vV2ViRnJhbWUuY3BwCShyZXZpc2lvbiA1MTQwNSkKKysrIFdlYktpdC93aW4vV2ViRnJh
bWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZW5kZXJWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJUcmVlQXNUZXh0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1ZHU01JTEVs
ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSlNET01CaW5kaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVy
Lmg+CkBAIC0xMTU2LDYgKzExNTcsMzQgQEAgSFJFU1VMVCBXZWJGcmFtZTo6cGF1c2VUcmFuc2l0
aW9uKEJTVFIgcAogICAgIHJldHVybiBTX09LOwogfQogCitIUkVTVUxUIFdlYkZyYW1lOjpwYXVz
ZVNWR0FuaW1hdGlvbihCU1RSIGVsZW1lbnRJZCwgSURPTU5vZGUqIG5vZGUsIGRvdWJsZSBzZWNv
bmRzRnJvbU5vdywgQk9PTCogYW5pbWF0aW9uV2FzUnVubmluZykKK3sKKyAgICBpZiAoIW5vZGUg
fHwgIWFuaW1hdGlvbldhc1J1bm5pbmcpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKKyAg
ICAqYW5pbWF0aW9uV2FzUnVubmluZyA9IEZBTFNFOworCisgICAgRnJhbWUqIGZyYW1lID0gY29y
ZSh0aGlzKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gRV9GQUlMOworCisgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVu
dCB8fCAhZG9jdW1lbnQtPnN2Z0V4dGVuc2lvbnMoKSkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsK
KworICAgIENPTVB0cjxET01Ob2RlPiBkb21Ob2RlKFF1ZXJ5LCBub2RlKTsKKyAgICBpZiAoIWRv
bU5vZGUgfHwgIVNWR1NNSUxFbGVtZW50Ojppc1NNSUxFbGVtZW50KGRvbU5vZGUpKQorICAgICAg
ICByZXR1cm4gRV9GQUlMOworCisjaWYgRU5BQkxFKFNWRykKKyAgICAqYW5pbWF0aW9uV2FzUnVu
bmluZyA9IGRvY3VtZW50LT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnNhbXBsZUFuaW1hdGlvbkF0
VGltZShTdHJpbmcoZWxlbWVudElkLCBTeXNTdHJpbmdMZW4oZWxlbWVudElkKSksIHN0YXRpY19j
YXN0PFNWR1NNSUxFbGVtZW50Kj4oZG9tTm9kZSksIHNlY29uZHNGcm9tTm93KTsKKyNlbHNlCisg
ICAgKmFuaW1hdGlvbldhc1J1bm5pbmcgPSBGQUxTRTsKKyNlbmRpZgorCisgICAgcmV0dXJuIFNf
T0s7Cit9CisKIEhSRVNVTFQgV2ViRnJhbWU6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhVSU5U
KiBudW1iZXIpCiB7CiAgICAgaWYgKCFudW1iZXIpCkluZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1l
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5oCShyZXZpc2lvbiA1MTQwNSkK
KysrIFdlYktpdC93aW4vV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQwLDYgKzI0MCw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYXVz
ZUFuaW1hdGlvbihCU1RSIGFuaW1hdGlvbk5hbWUsIElET01Ob2RlKiwgZG91YmxlIHNlY29uZHNG
cm9tTm93LCBCT09MKiBhbmltYXRpb25XYXNSdW5uaW5nKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgcGF1c2VUcmFuc2l0aW9uKEJTVFIgcHJvcGVydHlOYW1lLCBJRE9N
Tm9kZSosIGRvdWJsZSBzZWNvbmRzRnJvbU5vdywgQk9PTCogdHJhbnNpdGlvbldhc1J1bm5pbmcp
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYXVzZVNWR0FuaW1hdGlv
bihCU1RSIGVsZW1lbnRJZCwgSURPTU5vZGUqLCBkb3VibGUgc2Vjb25kc0Zyb21Ob3csIEJPT0wq
IGFuaW1hdGlvbldhc1J1bm5pbmcpOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoVUlOVCopOwogCiAgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGlzRGlzcGxheWluZ1N0YW5kYWxvbmVJbWFnZShCT09MKik7
CkluZGV4OiBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsCShyZXZp
c2lvbiA1MTQwNSkKKysrIFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksNyBAQCBpbnRlcmZhY2UgSVdlYkZyYW1lUHJp
dmF0ZSA6IElVbmtub3duCiAKICAgICBIUkVTVUxUIHBhdXNlQW5pbWF0aW9uKFtpbl0gQlNUUiBh
bmltYXRpb25OYW1lLCBbaW5dIElET01Ob2RlKiBub2RlLCBbaW5dIGRvdWJsZSBzZWNvbmRzRnJv
bU5vdywgW291dCwgcmV0dmFsXSBCT09MKiBhbmltYXRpb25XYXNSdW5uaW5nKTsKICAgICBIUkVT
VUxUIHBhdXNlVHJhbnNpdGlvbihbaW5dIEJTVFIgcHJvcGVydHlOYW1lLCBbaW5dIElET01Ob2Rl
KiBub2RlLCBbaW5dIGRvdWJsZSBzZWNvbmRzRnJvbU5vdywgW291dCwgcmV0dmFsXSBCT09MKiB0
cmFuc2l0aW9uV2FzUnVubmluZyk7CisgICAgSFJFU1VMVCBwYXVzZVNWR0FuaW1hdGlvbihbaW5d
IEJTVFIgZWxlbWVudElkLCBbaW5dIElET01Ob2RlKiBub2RlLCBbaW5dIGRvdWJsZSBzZWNvbmRz
RnJvbU5vdywgW291dCwgcmV0dmFsXSBCT09MKiBhbmltYXRpb25XYXNSdW5uaW5nKTsKICAgICBI
UkVTVUxUIG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhbb3V0LCByZXR2YWxdIFVJTlQqIG51bWJl
cik7CiAKICAgICBIUkVTVUxUIGlzRGlzcGxheWluZ1N0YW5kYWxvbmVJbWFnZShbb3V0LCByZXR2
YWxdIEJPT0wqIHJlc3VsdCk7CkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MTQwNSkKKysrIFdlYktpdFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDA5LTExLTI1
ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTVkcgYW5pbWF0aW9uIHRl
c3QgZnJhbWV3b3JrIHdpdGggJ3NuYXBzaG90JyBmdW5jdGlvbmFsaXR5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTg5NworCisgICAgICAgIEFkZCBu
ZXcgJ3NhbXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRpbWUnIERSVCBtZXRob2QsCisgICAg
ICAgIHVzZWQgYnkgdGhlIG5ldyBTVkcgYW5pbWF0aW9uIHRlc3RpbmcgZnJhbWV3b3JrLCBpbXBs
ZW1lbnRlZAorICAgICAgICBmb3IgcXQvZ3RrL3dpbi9tYWMuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChzYW1wbGVTVkdBbmlt
YXRpb25Gb3JFbGVtZW50QXRUaW1lQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNhbXBs
ZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRpbWUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVt
ZW50QXRUaW1lKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJv
bGxlcld4LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzYW1wbGVTVkdBbmlt
YXRpb25Gb3JFbGVtZW50QXRUaW1lKToKKwogMjAwOS0xMS0yNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0
aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDog
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gNTE0MDUpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNzMsNiArMTA3MywyMiBA
QCBzdGF0aWMgSlNWYWx1ZVJlZiBwYXVzZVRyYW5zaXRpb25BdFRpbWVPCiAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCBjb250cm9sbGVyLT5wYXVzZVRyYW5zaXRpb25BdFRp
bWVPbkVsZW1lbnRXaXRoSWQocHJvcGVydHlOYW1lLmdldCgpLCB0aW1lLCBlbGVtZW50SWQuZ2V0
KCkpKTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVu
dEF0VGltZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlv
biwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAo
YXJndW1lbnRDb3VudCAhPSAzKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYW5pbWF0aW9uSWQoQWRv
cHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24p
KTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworICAgIGRvdWJsZSB0aW1lID0gSlNWYWx1ZVRv
TnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKTsKKyAgICBBU1NFUlQoISpl
eGNlcHRpb24pOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBlbGVtZW50SWQoQWRvcHQs
IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzJdLCBleGNlcHRpb24pKTsK
KyAgICBBU1NFUlQoISpleGNlcHRpb24pOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0
UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250
ZXh0LCBjb250cm9sbGVyLT5zYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lKGFuaW1h
dGlvbklkLmdldCgpLCB0aW1lLCBlbGVtZW50SWQuZ2V0KCkpKTsKK30KKwogc3RhdGljIEpTVmFs
dWVSZWYgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQogewogICAgIGlmIChhcmd1bWVudENvdW50ICE9IDApCkBAIC0xMjUwLDYgKzEy
NjYsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6CiAgICAgICAg
IHsgInBhdGhUb0xvY2FsUmVzb3VyY2UiLCBwYXRoVG9Mb2NhbFJlc291cmNlQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAicGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQiLCBw
YXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgInBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCIsIHBhdXNlVHJhbnNp
dGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNh
bXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRpbWUiLCBzYW1wbGVTVkdBbmltYXRpb25Gb3JF
bGVtZW50QXRUaW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicHJpbnRUb1BERiIsIGR1
bXBBc1BERkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInF1ZXVlQmFja05hdmlnYXRpb24i
LCBxdWV1ZUJhY2tOYXZpZ2F0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicXVldWVG
b3J3YXJkTmF2aWdhdGlvbiIsIHF1ZXVlRm9yd2FyZE5hdmlnYXRpb25DYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCShyZXZpc2lvbiA1MTQwNSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsyMDIsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdp
dGhJZChKU1N0cmluZ1JlZiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZSwgSlNTdHJpbmdSZWYg
ZWxlbWVudElkKTsKICAgICBib29sIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJ
ZChKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSB0aW1lLCBKU1N0cmluZ1JlZiBlbGVt
ZW50SWQpOworICAgIGJvb2wgc2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0VGltZShKU1N0
cmluZ1JlZiBhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIEpTU3RyaW5nUmVmIGVsZW1lbnRJZCk7
CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3Q7CiAKICAgICB2
b2lkIHdoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4oSlNTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBK
U1N0cmluZ1JlZiBkZXN0aW5hdGlvblByb3RvY29sLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvbkhv
c3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpJbmRleDogV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJH
dGsuY3BwCShyZXZpc2lvbiA1MTQwNSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0OCw2ICs0
NDgsMTQgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF1c2VUcmFuc2l0aQogICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAorYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2FtcGxl
U1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0VGltZShKU1N0cmluZ1JlZiBhbmltYXRpb25JZCwgZG91
YmxlIHRpbWUsIEpTU3RyaW5nUmVmIGVsZW1lbnRJZCkKK3sgICAgCisgICAgZ2NoYXIqIGFuaW1h
dGlvbkVsZW1lbnQgPSBKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhhbmltYXRpb25JZCk7CisgICAg
Ym9vbCByZXR1cm5WYWx1ZSA9IHdlYmtpdF93ZWJfZnJhbWVfcGF1c2Vfc3ZnX2FuaW1hdGlvbiht
YWluRnJhbWUsIGVsZW1lbnRJZCwgdGltZSwgYW5pbWF0aW9uRWxlbWVudCk7CisgICAgZ19mcmVl
KGVsZW1lbnQpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwogdW5zaWduZWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIHdlYmtpdF93ZWJfZnJhbWVfbnVtYmVyX29mX2FjdGl2ZV9hbmltYXRpb25zKG1haW5G
cmFtZSk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENv
bnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiA1MTQwNSkKKysrIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNDg2LDYgKzQ4NiwxNiBAQCBib29sIExheW91dFRlc3RDb250cm9sbGVy
OjpwYXVzZVRyYW5zaXRpCiAgICAgcmV0dXJuIFttYWluRnJhbWUgX3BhdXNlVHJhbnNpdGlvbk9m
UHJvcGVydHk6bmFtZU5TIG9uTm9kZTpbW21haW5GcmFtZSBET01Eb2N1bWVudF0gZ2V0RWxlbWVu
dEJ5SWQ6aWROU10gYXRUaW1lOnRpbWVdOwogfQogCitib29sIExheW91dFRlc3RDb250cm9sbGVy
OjpzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lKEpTU3RyaW5nUmVmIGFuaW1hdGlv
bklkLCBkb3VibGUgdGltZSwgSlNTdHJpbmdSZWYgZWxlbWVudElkKQoreworICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gYW5pbWF0aW9uSURDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmlu
ZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhbmltYXRpb25JZCkpOworICAgIE5TU3RyaW5nICphbmlt
YXRpb25JRE5TID0gKE5TU3RyaW5nICopYW5pbWF0aW9uSURDRi5nZXQoKTsKKyAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGVsZW1lbnRJRENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5n
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGVsZW1lbnRJZCkpOworICAgIE5TU3RyaW5nICplbGVtZW50
SUROUyA9IChOU1N0cmluZyAqKWVsZW1lbnRJRENGLmdldCgpOworCisgICAgcmV0dXJuIFttYWlu
RnJhbWUgX3BhdXNlU1ZHQW5pbWF0aW9uOmVsZW1lbnRJRE5TIG9uU01JTE5vZGU6W1ttYWluRnJh
bWUgRE9NRG9jdW1lbnRdIGdldEVsZW1lbnRCeUlkOmFuaW1hdGlvbklETlNdIGF0VGltZTp0aW1l
XTsKK30KKwogdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mQWN0aXZlQW5p
bWF0aW9ucygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFttYWluRnJhbWUgX251bWJlck9mQWN0aXZl
QW5pbWF0aW9uc107CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkocmV2aXNpb24gNTE0MDUpCisrKyBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksOSBAQCBleHRlcm4gdm9pZCBxdF9kdW1wX3Jlc291
cmNlX2xvYWRfY2FsbGJhCiBleHRlcm4gdm9pZCBxdF9kcnRfc2V0SmF2YVNjcmlwdFByb2ZpbGlu
Z0VuYWJsZWQoUVdlYkZyYW1lKiwgYm9vbCBlbmFibGVkKTsKIGV4dGVybiBib29sIHF0X2RydF9w
YXVzZUFuaW1hdGlvbihRV2ViRnJhbWUqLCBjb25zdCBRU3RyaW5nJiBuYW1lLCBkb3VibGUgdGlt
ZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKIGV4dGVybiBib29sIHF0X2RydF9wYXVzZVRy
YW5zaXRpb25PZlByb3BlcnR5KFFXZWJGcmFtZSosIGNvbnN0IFFTdHJpbmcmIG5hbWUsIGRvdWJs
ZSB0aW1lLCBjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQpOworZXh0ZXJuIGJvb2wgcXRfZHJ0X3Bh
dXNlU1ZHQW5pbWF0aW9uKFFXZWJGcmFtZSosIGNvbnN0IFFTdHJpbmcmIGFuaW1hdGlvbklkLCBk
b3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKIGV4dGVybiBpbnQgcXRfZHJ0
X251bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhRV2ViRnJhbWUqKTsKKwogZXh0ZXJuIHZvaWQgcXRf
ZHJ0X3doaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4oY29uc3QgUVN0cmluZyYgc291cmNlT3JpZ2lu
LCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBRU3RyaW5nJiBkZXN0
aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogZXh0ZXJuIFFT
dHJpbmcgcXRfZHJ0X2NvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKFFXZWJGcmFtZSogcUZyYW1l
LCBjb25zdCBRU3RyaW5nJiBpZCk7CiAKQEAgLTI4MCw2ICsyODIsMTUgQEAgYm9vbCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6cGF1c2VUcmFuc2l0aQogICAgIHJldHVybiBxdF9kcnRfcGF1c2VUcmFu
c2l0aW9uT2ZQcm9wZXJ0eShmcmFtZSwgcHJvcGVydHlOYW1lLCB0aW1lLCBlbGVtZW50SWQpOwog
fQogCitib29sIExheW91dFRlc3RDb250cm9sbGVyOjpzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVt
ZW50QXRUaW1lKGNvbnN0IFFTdHJpbmcmIGFuaW1hdGlvbklkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdGltZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKQoreworICAgIFFXZWJGcmFtZSogZnJhbWUg
PSBtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKTsKKyAgICBRX0FTU0VSVChmcmFtZSk7Cisg
ICAgcmV0dXJuIHF0X2RydF9wYXVzZVNWR0FuaW1hdGlvbihmcmFtZSwgYW5pbWF0aW9uSWQsIHRp
bWUsIGVsZW1lbnRJZCk7Cit9CisKIHVuc2lnbmVkIExheW91dFRlc3RDb250cm9sbGVyOjpudW1i
ZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBjb25zdAogewogICAgIFFXZWJGcmFtZSogZnJhbWUgPSBt
X2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJKHJldmlzaW9u
IDUxNDA1KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNiArMTE1LDcgQEAgcHVibGljIHNsb3Rz
OgogCiAgICAgYm9vbCBwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChjb25zdCBR
U3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVu
dElkKTsKICAgICBib29sIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChjb25z
dCBRU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nJiBlbGVt
ZW50SWQpOworICAgIGJvb2wgcGF1c2VTVkdBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQo
ZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CiAgICAgdW5zaWduZWQgbnVt
YmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3Q7CiAKICAgICB2b2lkIHdoaXRlTGlzdEFjY2Vz
c0Zyb21PcmlnaW4oY29uc3QgUVN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBRU3RyaW5nJiBk
ZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wg
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCShy
ZXZpc2lvbiA1MTQwNSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2MSw2ICs4NjEsMzEgQEAg
Ym9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF1c2VUcmFuc2l0aQogICAgIHJldHVybiBTVUND
RUVERUQoaHIpICYmIHdhc1J1bm5pbmc7CiB9CiAKK2Jvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNhbXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRpbWUoSlNTdHJpbmdSZWYgYW5pbWF0aW9u
SWQsIGRvdWJsZSB0aW1lLCBKU1N0cmluZ1JlZiBlbGVtZW50SWQpCit7CisgICAgQ09NUHRyPElE
T01Eb2N1bWVudD4gZG9jdW1lbnQ7CisgICAgaWYgKEZBSUxFRChmcmFtZS0+RE9NRG9jdW1lbnQo
JmRvY3VtZW50KSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEJTVFIgaWRCU1RSID0g
SlNTdHJpbmdDb3B5QlNUUihhbmltYXRpb25JZCk7CisgICAgQ09NUHRyPElET01FbGVtZW50PiBl
bGVtZW50OworICAgIEhSRVNVTFQgaHIgPSBkb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQoaWRCU1RS
LCAmZWxlbWVudCk7CisgICAgU3lzRnJlZVN0cmluZyhpZEJTVFIpOworICAgIGlmIChGQUlMRUQo
aHIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDT01QdHI8SVdlYkZyYW1lUHJpdmF0
ZT4gZnJhbWVQcml2YXRlKFF1ZXJ5LCBmcmFtZSk7CisgICAgaWYgKCFmcmFtZVByaXZhdGUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEJTVFIgZWxlbWVudElkQlNUUiA9IEpTU3RyaW5n
Q29weUJTVFIoZWxlbWVudElkKTsKKyAgICBCT09MIHdhc1J1bm5pbmcgPSBGQUxTRTsKKyAgICBo
ciA9IGZyYW1lUHJpdmF0ZS0+cGF1c2VTVkdBbmltYXRpb24oZWxlbWVudElkQlNUUiwgZWxlbWVu
dC5nZXQoKSwgdGltZSwgJndhc1J1bm5pbmcpOworICAgIFN5c0ZyZWVTdHJpbmcoZWxlbWVudElk
QlNUUik7CisKKyAgICByZXR1cm4gU1VDQ0VFREVEKGhyKSAmJiB3YXNSdW5uaW5nOworfQorCiB1
bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkg
Y29uc3QKIHsKICAgICBDT01QdHI8SVdlYkZyYW1lUHJpdmF0ZT4gZnJhbWVQcml2YXRlKFF1ZXJ5
LCBmcmFtZSk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0
Q29udHJvbGxlcld4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAkocmV2aXNpb24gNTE0MDUpCisrKyBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjY3LDYgKzI2NywxMiBAQCBib29sIExheW91dFRlc3RDb250cm9sbGVy
OjpwYXVzZUFuaW1hdGlvCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIExheW91dFRlc3RD
b250cm9sbGVyOjpzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lKEpTU3RyaW5nUmVm
IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZSwgSlNTdHJpbmdSZWYgZWxlbWVudElkKQoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldENhY2hlTW9kZWwoaW50KQogewogICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxNDA1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMDktMTEtMjUgIE5pa29sYXMgWmlt
bWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFNWRyBhbmltYXRpb24gdGVzdCBmcmFtZXdvcmsg
d2l0aCAnc25hcHNob3QnIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMxODk3CisKKwkJQWRkIExheW91dFRlc3RzL3N2Zy9hbmlt
YXRpb25zIGRpcmVjdG9yeSwgY29udGFpbmluZyBhIG5ldworCQlmcmFtZXdvcmsgZm9yIFNWRyBh
bmltYXRpb24gdGVzdCB3aXRoIHNhbXBsaW5nIGF0IGNlcnRhaW4gdGltZXMuCisKKwkJQWRkZWQg
b25lIGV4YW1wbGUgdGVzdCwgd2hpY2ggd2lsbCBiZSBleHRlbmRlZCBzb29uIHRvIGNvdmVyIGFu
aW1WYWwKKwkJc3VwcG9ydCwgb25jZSBiYXNpYyBzdXBwb3J0IGhhcyBiZWVuIGltcGxlbWVudGVk
LgorCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnM6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hbmlt
YXRpb25zL2FuaW1WYWwtYmFzaWNzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3Zn
L2FuaW1hdGlvbnMvYW5pbVZhbC1iYXNpY3MuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2Fu
aW1hdGlvbnMvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9yZXNv
dXJjZXMvU1ZHQW5pbWF0aW9uVGVzdENhc2UuanM6IEFkZGVkLgorICAgICAgICAoaXNDbG9zZUVu
b3VnaCk6CisgICAgICAgIChtb3ZlQW5pbWF0aW9uVGltZWxpbmVBbmRTYW1wbGUpOgorICAgICAg
ICAoc3RhcnRUZXN0KToKKyAgICAgICAgKHNhbXBsZUFuaW1hdGlvbik6CisgICAgICAgIChydW5B
bmltYXRpb25UZXN0KToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHM6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5pbVZhbC1i
YXNpY3MuanM6IEFkZGVkLgorICAgICAgICAoc2FtcGxlMSk6CisgICAgICAgIChzYW1wbGUyKToK
KyAgICAgICAgKHNhbXBsZTMpOgorICAgICAgICAoZXhlY3V0ZVRlc3QpOgorCiAyMDA5LTExLTI1
ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBB
dWRpbyByZWxhdGVkIGxheW91dCB0ZXN0cyBhcmUgZmFpbGluZyBvbiB0aGUgYnVpbGRib3QKSW5k
ZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2FuaW1WYWwtYmFzaWNzLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9hbmltVmFsLWJhc2lj
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9u
cy9hbmltVmFsLWJhc2ljcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkg
QEAKK1NWRyAxLjEgZHluYW1pYyBhbmltYXRpb24gdGVzdHMKKworVHJpdmlhbCBhbmltVmFsIHRl
c3RjYXNlLCB0byBzZWUgd2hldGVyIHdlIHN1cHBvcnQgaXQgYXQgYWxsLiBTaG91bGQgcmVzdWx0
IGluIGEgMjAweDIwMCByZWN0IGFuZCBvbmx5IFBBU1MgbWVzc2FnZXMKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgcmVjdC53aWR0aC5hbmltVmFsLnZhbHVlIGlzIDIwMAor
UEFTUyByZWN0LndpZHRoLmJhc2VWYWwudmFsdWUgaXMgMjAwCitQQVNTIHJlY3Qud2lkdGguYW5p
bVZhbC52YWx1ZSBpcyAxNTAKK1BBU1MgcmVjdC53aWR0aC5iYXNlVmFsLnZhbHVlIGlzIDE1MAor
UEFTUyByZWN0LndpZHRoLmFuaW1WYWwudmFsdWUgaXMgYWxtb3N0IDEwMCwganVzdCBiZWZvcmUt
ZW5kCitQQVNTIHJlY3Qud2lkdGguYmFzZVZhbC52YWx1ZSBpcyBhbG1vc3QgMTAwLCBqdXN0IGJl
Zm9yZS1lbmQKK1BBU1MgcmVjdC53aWR0aC5hbmltVmFsLnZhbHVlIGlzIDIwMAorUEFTUyByZWN0
LndpZHRoLmJhc2VWYWwudmFsdWUgaXMgMjAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMv
YW5pbVZhbC1iYXNpY3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0
aW9ucy9hbmltVmFsLWJhc2ljcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3Zn
L2FuaW1hdGlvbnMvYW5pbVZhbC1iYXNpY3MuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9keW5h
bWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1Rlc3RDYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvU1ZHQW5pbWF0aW9uVGVzdENhc2UuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8aDE+U1ZHIDEuMSBkeW5hbWljIGFuaW1hdGlvbiB0ZXN0czwvaDE+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy9hbmltVmFsLWJhc2ljcy5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9yZXNvdXJjZXMvU1ZHQW5p
bWF0aW9uVGVzdENhc2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlv
bnMvcmVzb3VyY2VzL1NWR0FuaW1hdGlvblRlc3RDYXNlLmpzCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvcmVzb3VyY2VzL1NWR0FuaW1hdGlvblRlc3RDYXNlLmpz
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACisvLyBJbnNwaXJlZCBieSBMYXlvdXRlc3Rz
L2FuaW1hdGlvbnMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcworLy8gTW9kaWZpZWQgdG8gd29y
ayB3aXRoIFNWRyBhbmQgdG9nZXRoZXIgd2l0aCBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRh
dGVzL3Jlc291cmNlcy9TVkdUZXN0Q2FzZS5qcworCitmdW5jdGlvbiBpc0Nsb3NlRW5vdWdoKGFj
dHVhbCwgZGVzaXJlZCwgdG9sZXJhbmNlKQoreworICAgIHZhciBkaWZmID0gTWF0aC5hYnMoYWN0
dWFsIC0gZGVzaXJlZCk7CisgICAgcmV0dXJuIGRpZmYgPD0gdG9sZXJhbmNlOworfQorCitmdW5j
dGlvbiBtb3ZlQW5pbWF0aW9uVGltZWxpbmVBbmRTYW1wbGUoaW5kZXgpCit7CisgICAgdmFyIGFu
aW1hdGlvbklkID0gZXhwZWN0ZWRSZXN1bHRzW2luZGV4XVswXTsKKyAgICB2YXIgdGltZSA9IGV4
cGVjdGVkUmVzdWx0c1tpbmRleF1bMV07CisgICAgdmFyIGVsZW1lbnRJZCA9IGV4cGVjdGVkUmVz
dWx0c1tpbmRleF1bMl07CisgICAgdmFyIHNhbXBsZUNhbGxiYWNrID0gZXhwZWN0ZWRSZXN1bHRz
W2luZGV4XVszXTsKKworICAgIGlmICghbGF5b3V0VGVzdENvbnRyb2xsZXIuc2FtcGxlU1ZHQW5p
bWF0aW9uRm9yRWxlbWVudEF0VGltZShhbmltYXRpb25JZCwgdGltZSwgZWxlbWVudElkKSkgewor
ICAgICAgICB0ZXN0RmFpbGVkKCJhbmltYXRpb24gXCIiICsgYW5pbWF0aW9uSWQgKyAiXCIgaXMg
bm90IHJ1bm5pbmciKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNhbXBsZUNhbGxi
YWNrKCk7Cit9CisKK3ZhciBjdXJyZW50VGVzdCA9IDA7Cit2YXIgZXhwZWN0ZWRSZXN1bHRzOwor
CitmdW5jdGlvbiBzdGFydFRlc3QoY2FsbGJhY2spIHsKKyAgICBpZiAoY3VycmVudFRlc3QgPiAw
KQorICAgICAgICB0aHJvdygiTm90IGFsbG93ZWQgdG8gY2FsbCBzdGFydFRlc3QoKSB0d2ljZSIp
OworCisgICAgdGVzdENvdW50ID0gZXhwZWN0ZWRSZXN1bHRzLmxlbmd0aDsKKyAgICBjdXJyZW50
VGVzdCA9IDA7CisKKyAgICBpZiAoY2FsbGJhY2spCisgICAgICAgIGNhbGxiYWNrKCk7CisKKyAg
ICAvLyBJbW1lZGlhdGVseSBzYW1wbGUsIGlmIHRoZSBmaXJzdCB0aW1lIGlzIDAKKyAgICBpZiAo
ZXhwZWN0ZWRSZXN1bHRzWzBdWzFdID09ICcwJykgeworICAgICAgICBleHBlY3RlZFJlc3VsdHNb
MF1bM10oKTsKKyAgICAgICAgKytjdXJyZW50VGVzdDsKKyAgICB9CisKKyAgICAvLyBXZSBtYXkg
aGF2ZSBqdXN0IHNhbXBsZWQgb24gYW5pbWF0aW9uLWJlZ2luLCBnaXZlIHRoZQorICAgIC8vIGRv
Y3VtZW50IHNvbWUgdGltZSB0byBpbnZva2UgdGhlIFNWRyBhbmltYXRpb24uCisgICAgLy8gSWYg
d2UgZml4IHRoZSBhbmltYXRpb24gdG8gc3RhcnQgd2l0aCB0aGUgU1ZHTG9hZCBldmVudAorICAg
IC8vIG5vdCBvbiBpbXBsaWNpdENsb3NlKCksIHdlIGNhbiBldmVuIGF2b2lkIHRoaXMgaGFjay4K
KyAgICB3aW5kb3cuc2V0VGltZW91dChzYW1wbGVBbmltYXRpb24sIDApOworfQorCitmdW5jdGlv
biBzYW1wbGVBbmltYXRpb24oKSB7CisgICAgaWYgKGN1cnJlbnRUZXN0ID09IGV4cGVjdGVkUmVz
dWx0cy5sZW5ndGgpIHsKKyAgICAgICAgY29tcGxldGVUZXN0KCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtb3ZlQW5pbWF0aW9uVGltZWxpbmVBbmRTYW1wbGUoY3VycmVudFRlc3Qp
OworICAgICsrY3VycmVudFRlc3Q7CisKKyAgICBzYW1wbGVBbmltYXRpb24oKTsKK30KKwordmFy
IGhhc1BhdXNlQW5pbWF0aW9uQVBJOwordmFyIGdsb2JhbENhbGxiYWNrOworCitmdW5jdGlvbiBy
dW5BbmltYXRpb25UZXN0KGV4cGVjdGVkLCBjYWxsYmFjaykKK3sKKyAgICBpZiAoIWV4cGVjdGVk
KQorICAgICAgICB0aHJvdygiRXhwZWN0ZWQgcmVzdWx0cyBhcmUgbWlzc2luZyEiKTsKKworICAg
IGV4cGVjdGVkUmVzdWx0cyA9IGV4cGVjdGVkOworCisgICAgaGFzUGF1c2VBbmltYXRpb25BUEkg
PSAoJ2xheW91dFRlc3RDb250cm9sbGVyJyBpbiB3aW5kb3cpICYmICgnc2FtcGxlU1ZHQW5pbWF0
aW9uRm9yRWxlbWVudEF0VGltZScgaW4gbGF5b3V0VGVzdENvbnRyb2xsZXIpOworICAgIGlmICgh
aGFzUGF1c2VBbmltYXRpb25BUEkpCisgICAgICAgIHRocm93KCJTVkcgYW5pbWF0aW9uIHBhdXNl
IEFQSSBtaXNzaW5nISIpOworCisgICAgc3RhcnRUZXN0KGNhbGxiYWNrKTsKK30KSW5kZXg6IExh
eW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9URU1QTEFU
RS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0
LXRlc3RzL1RFTVBMQVRFLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZHluYW1pYy11cGRhdGVz
L3Jlc291cmNlcy9TVkdUZXN0Q2FzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL1NWR0FuaW1hdGlvblRlc3RDYXNlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGgxPlNWRyAxLjEgZHluYW1pYyBhbmltYXRpb24gdGVzdHM8L2gxPgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJZT1VSX0pT
X0ZJTEVfSEVSRSI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5pbVZhbC1iYXNpY3MuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL2FuaW1WYWwtYmFz
aWNzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0
LXRlc3RzL2FuaW1WYWwtYmFzaWNzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDczIEBACisv
LyBGSVhNRTogVGhpcyB0ZXN0IHdpbGwgYmVjb21lIHVzZWZ1bCBvbmNlIHdlIGhhdmUgYmFzaWMg
YW5pbVZhbCBzdXBwb3J0LiBGb3Igbm93IGl0J3MganVzdCB0ZXN0aW5nIHRoZSBTVkcgYW5pbWF0
aW9uIHRlc3QgaW5mcmFzdHJ1Y3R1cmUKK2Rlc2NyaXB0aW9uKCJUcml2aWFsIGFuaW1WYWwgdGVz
dGNhc2UsIHRvIHNlZSB3aGV0ZXIgd2Ugc3VwcG9ydCBpdCBhdCBhbGwuIFNob3VsZCByZXN1bHQg
aW4gYSAyMDB4MjAwIHJlY3QgYW5kIG9ubHkgUEFTUyBtZXNzYWdlcyIpOworY3JlYXRlU1ZHVGVz
dENhc2UoKTsKKworLy8gU2V0dXAgdGVzdCBkb2N1bWVudAordmFyIHJlY3QgPSBjcmVhdGVTVkdF
bGVtZW50KCJyZWN0Iik7CityZWN0LnNldEF0dHJpYnV0ZSgiaWQiLCAicmVjdCIpOworcmVjdC5z
ZXRBdHRyaWJ1dGUoIndpZHRoIiwgIjIwMCIpOworcmVjdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIs
ICIyMDAiKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJmaWxsIiwgImdyZWVuIik7CityZWN0LnNldEF0
dHJpYnV0ZSgib25jbGljayIsICJleGVjdXRlVGVzdCgpIik7CisKK3ZhciBhbmltYXRlID0gY3Jl
YXRlU1ZHRWxlbWVudCgiYW5pbWF0ZSIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImlkIiwgImFu
aW1hdGlvbiIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImF0dHJpYnV0ZU5hbWUiLCAid2lkdGgi
KTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJmcm9tIiwgIjIwMCIpOworYW5pbWF0ZS5zZXRBdHRy
aWJ1dGUoInRvIiwgIjEwMCIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImJlZ2luIiwgImNsaWNr
Iik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgiZHVyIiwgIjRzIik7CityZWN0LmFwcGVuZENoaWxk
KGFuaW1hdGUpOworcm9vdFNWR0VsZW1lbnQuYXBwZW5kQ2hpbGQocmVjdCk7CisKKy8vIFNldHVw
IGFuaW1hdGlvbiB0ZXN0CitmdW5jdGlvbiBzYW1wbGUxKCkgeworICAgIC8vIENoZWNrIGluaXRp
YWwvZW5kIGNvbmRpdGlvbnMKKyAgICBzaG91bGRCZSgicmVjdC53aWR0aC5hbmltVmFsLnZhbHVl
IiwgIjIwMCIpOworICAgIHNob3VsZEJlKCJyZWN0LndpZHRoLmJhc2VWYWwudmFsdWUiLCAiMjAw
Iik7Cit9CisKK2Z1bmN0aW9uIHNhbXBsZTIoKSB7CisgICAgLy8gRklYTUU6IEFkZCBhbmltVmFs
IHN1cHBvcnQuIEFuaW1hdGVzIGJhc2VWYWwgYXQgdGhlIG1vbWVudC4KKyAgICAvLyBzaG91bGRC
ZSgicmVjdC53aWR0aC5hbmltVmFsLnZhbHVlIiwgIjE1MCIpOworICAgIC8vIHNob3VsZEJlKCJy
ZWN0LndpZHRoLmJhc2VWYWwudmFsdWUiLCAiMjAwIik7CisKKyAgICAvLyBDaGVjayBoYWxmLXRp
bWUgY29uZGl0aW9ucworICAgIHNob3VsZEJlKCJyZWN0LndpZHRoLmFuaW1WYWwudmFsdWUiLCAi
MTUwIik7CisgICAgc2hvdWxkQmUoInJlY3Qud2lkdGguYmFzZVZhbC52YWx1ZSIsICIxNTAiKTsK
K30KKworZnVuY3Rpb24gc2FtcGxlMygpIHsKKyAgICAvLyBGSVhNRTogQWRkIGFuaW1WYWwgc3Vw
cG9ydC4gQW5pbWF0ZXMgYmFzZVZhbCBhdCB0aGUgbW9tZW50LgorICAgIC8vIHNob3VsZEJlKCJy
ZWN0LndpZHRoLmFuaW1WYWwudmFsdWUiLCAiMTAwIik7CisgICAgLy8gc2hvdWxkQmUoInJlY3Qu
d2lkdGguYmFzZVZhbC52YWx1ZSIsICIyMDAiKTsKKworICAgIC8vIENoZWNrIGp1c3QgYmVmb3Jl
LWVuZCBjb25kaXRpb25zCisgICAgdmFyIG9rID0gaXNDbG9zZUVub3VnaChyZWN0LndpZHRoLmFu
aW1WYWwudmFsdWUsIDEwMCwgMC4wMSk7CisgICAgaWYgKG9rKQorICAgICAgICB0ZXN0UGFzc2Vk
KCJyZWN0LndpZHRoLmFuaW1WYWwudmFsdWUgaXMgYWxtb3N0IDEwMCwganVzdCBiZWZvcmUtZW5k
Iik7CisgICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKCJyZWN0LndpZHRoLmFuaW1WYWwudmFs
dWUgaXMgTk9UIGFsbW9zdCAxMDAsIGFzIGV4cGVjdGVkIik7CisKKyAgICBvayA9IGlzQ2xvc2VF
bm91Z2gocmVjdC53aWR0aC5iYXNlVmFsLnZhbHVlLCAxMDAsIDAuMDEpOworICAgIGlmIChvaykK
KyAgICAgICAgdGVzdFBhc3NlZCgicmVjdC53aWR0aC5iYXNlVmFsLnZhbHVlIGlzIGFsbW9zdCAx
MDAsIGp1c3QgYmVmb3JlLWVuZCIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZCgicmVj
dC53aWR0aC5iYXNlVmFsLnZhbHVlIGlzIE5PVCBhbG1vc3QgMTAwLCBhcyBleHBlY3RlZCIpOwor
fQorCitmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKKyAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9
IFsKKyAgICAgICAgLy8gW2FuaW1hdGlvbklkLCB0aW1lLCBlbGVtZW50SWQsIHNhbXBsZUNhbGxi
YWNrXQorICAgICAgICBbImFuaW1hdGlvbiIsIDAuMCwgICAgInJlY3QiLCBzYW1wbGUxXSwKKyAg
ICAgICAgWyJhbmltYXRpb24iLCAyLjAsICAgICJyZWN0Iiwgc2FtcGxlMl0sCisgICAgICAgIFsi
YW5pbWF0aW9uIiwgMy45OTk5LCAicmVjdCIsIHNhbXBsZTNdLAorICAgICAgICBbImFuaW1hdGlv
biIsIDQuMCAsICAgInJlY3QiLCBzYW1wbGUxXQorICAgIF07CisKKyAgICBydW5BbmltYXRpb25U
ZXN0KGV4cGVjdGVkVmFsdWVzKTsKK30KKworLy8gQmVnaW4gdGVzdCBhc3luYword2luZG93LnNl
dFRpbWVvdXQoInRyaWdnZXJVcGRhdGUoMTUsIDMwKSIsIDApOwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43892</attachid>
            <date>2009-11-25 20:29:33 -0800</date>
            <delta_ts>2009-12-01 16:42:07 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>SVGAnimationTestingPatch.diff</filename>
            <type>text/plain</type>
            <size>51020</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTQwNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMDktMTEtMjUgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIFNWRyBhbmltYXRpb24gdGVzdCBmcmFtZXdvcmsgd2l0aCAnc25hcHNob3QnIGZ1
bmN0aW9uYWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMxODk3CisKKyAgICAgICAgQWRkICdzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRU
aW1lJyBtZXRob2QgdG8gdGhlIExheW91dFRlc3RDb250cm9sbGVyLAorICAgICAgICBmb3IgdGhl
IHVzZSB3aXRoaW4gdGhlIG5ldyBTVkcgYW5pbWF0aW9uIHRlc3QgZnJhbWV3b3JrIChMYXlvdXRU
ZXN0cy9zdmcvYW5pbWF0aW9ucy8pCisKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2Ft
cGxlQW5pbWF0aW9uQXRUaW1lKDxzdmcgYW5pbWF0aW9uIGlkPiwgPGFic29sdXRlIHRpbWU+LCA8
c3ZnIGVsZW1lbnQgaWQ+KTsKKyAgICAgICAgdG8gc2FtcGxlIGEgc3ZnIGFuaW1hdGVNb3Rpb24v
YW5pbWF0ZUNvbG9yL2FuaW1hdGUvc2V0IGVsZW1lbnQgYXQgY2VydGFpbiB0aW1lcy4KKworICAg
ICAgICBBZnRlciB0aGUgZGVzaXJlZCBTVkcgYW5pbWF0aW9uIHN0YXJ0cyBhbmQgY2FsbGluZyB0
aGUgbWV0aG9kIGFib3ZlLCBpdCdzIGltbWVkaWF0ZWx5IGZvcndhcmRlZCB0bworICAgICAgICB0
aGUgZGVzaXJlZCBzYW1wbGluZyB0aW1lLiBBZnRlciBKUyByZXR1cm5zIGZyb20gdGhlICdzYW1w
bGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lJyBtZXRob2QKKyAgICAgICAgYSBjYWxsYmFj
ayBpcyBmaXJlZCB1c2VkIHRvIHNhbXBsZSB0aGUgYW5pbWF0aW9uIHZhbHVlIGF0IHRoZSB0YXJn
ZXQgdGltZS4gSXQncyBtb2RlbGxlZCBzaW1pbGFyCisgICAgICAgIHRvIHRoZSBDU1MgYW5pbWF0
aW9uL3RyYW5zaXRpb24gdGVzdGluZyBmcmFtZXdvcmssIGluc3BpcmVkIGJ5CisgICAgICAgIExh
eW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcy4KKworICAgICAg
ICBUaG91Z2ggaXQgaGFzIGJlZW4gZXh0ZW5kZWQgdG8gaW50ZWdyYXRlIHdpdGhpbiB0aGUgZmFz
dC9qcy9qcy10ZXN0LSogZnJhbWV3b3JrLCB0aGF0J3MgdXNlZCBmb3IKKyAgICAgICAgdGhlIFNW
RyBkeW5hbWljLXVwZGF0ZXMgdGVzdHMsIHRvIHNpbXBsaWZ5IHRlc3QgY3JlYXRpb24sIGJ5IHV0
aWxpemluZyBzY3JpcHQtdGVzdHMvKiBvbmx5LgorCisgICAgICAgIEFkZGluZyBhIHNpbXBsZSB0
ZXN0Y2FzZSB0ZXN0aW5nIHRoZSBEUlQgbWV0aG9kcywgaXQgd2lsbCBzb29uIGJlIGV4dGVuZGVk
IHRvIHRlc3QgYW5pbVZhbC9iYXNlVmFsCisgICAgICAgIGludGVyYWN0aW9uLCB3aGlsZSBhbmlt
YXRpbmcuCisKKyAgICAgICAgVGVzdDogc3ZnL2FuaW1hdGlvbnMvYW5pbVZhbC1iYXNpY3MuaHRt
bAorCisgICAgICAgICogV2ViQ29yZS5iYXNlLmV4cDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9u
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnNhbXBsZUFu
aW1hdGlvbkF0VGltZSk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oOgor
ICAgICAgICAqIHN2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U01JTFRpbWVDb250YWluZXI6OlNNSUxUaW1lQ29udGFpbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNNSUxUaW1lQ29udGFpbmVyOjpzYW1wbGVBbmltYXRpb25BdFRpbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U01JTFRpbWVDb250YWluZXI6OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAg
ICAgICAqIHN2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuaDoKKwogMjAwOS0xMS0yNSAg
RGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhdmlkIExldmluLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkocmV2aXNpb24gNTE0MDUpCisrKyBX
ZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTk4NSw2ICs5ODUsMTAg
QEAgX19aVFZON1dlYkNvcmUxMkNocm9tZUNsaWVudEUKIF9fWlRWTjdXZWJDb3JlMTdGaWxlQ2hv
b3NlckNsaWVudEUKIF9fWlRWTjdXZWJDb3JlMTdGcmFtZUxvYWRlckNsaWVudEUKIF9fWlRWTjdX
ZWJDb3JlMjVIaXN0b3J5UHJvcGVydHlMaXN0V3JpdGVyRQorX19aTjdXZWJDb3JlMTRTVkdTTUlM
RWxlbWVudDEzaXNTTUlMRWxlbWVudEVQTlNfNE5vZGVFCitfX1pON1dlYkNvcmUyMVNWR0RvY3Vt
ZW50RXh0ZW5zaW9uczIxc2FtcGxlQW5pbWF0aW9uQXRUaW1lRVJLTlNfNlN0cmluZ0VQTlNfMTRT
VkdTTUlMRWxlbWVudEVkCitfX1pON1dlYkNvcmU4RG9jdW1lbnQxOWFjY2Vzc1NWR0V4dGVuc2lv
bnNFdgorX19aTjdXZWJDb3JlOERvY3VtZW50MTNzdmdFeHRlbnNpb25zRXYKIF9maWxlbmFtZUJ5
Rml4aW5nSWxsZWdhbENoYXJhY3RlcnMKIF9oYXNDYXNlSW5zZW5zaXRpdmVTdWJzdHJpbmcKIF9o
YXNDYXNlSW5zZW5zaXRpdmVTdWZmaXgKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1MTQwNSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05MCwxMCArOTAsMTAgQEAK
IAkJMDg3MjgxNTgwRjI2QjlCNjAwQUZDNTk2IC8qIE9wdGlvbkdyb3VwRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3MjgxNTQwRjI2QjlC
NjAwQUZDNTk2IC8qIE9wdGlvbkdyb3VwRWxlbWVudC5oICovOyB9OwogCQkwODc0NEJBQTBFREI3
RDg2MDA0QzlFNjMgLyogV01MT25FdmVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3NDRCQTkwRURCN0Q4NjAwNEM5RTYzIC8qIFdN
TE9uRXZlbnRFbGVtZW50LmNwcCAqLzsgfTsKIAkJMDg3NDRCQUUwRURCN0Q5MjAwNEM5RTYzIC8q
IFdNTE9uRXZlbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwODc0NEJBRDBFREI3RDkyMDA0QzlFNjMgLyogV01MT25FdmVudEVsZW1lbnQu
aCAqLzsgfTsKLQkJMDg3OEIxRkQxMDg3NEUzRjAwQTU1MDk3IC8qIFNWR0FuaW1hdGVkUHJvcGVy
dHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NzhC
MUY5MTA4NzRFM0YwMEE1NTA5NyAvKiBTVkdBbmltYXRlZFByb3BlcnR5LmggKi87IH07CisJCTA4
NzhCMUZEMTA4NzRFM0YwMEE1NTA5NyAvKiBTVkdBbmltYXRlZFByb3BlcnR5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc4QjFGOTEwODc0RTNGMDBB
NTUwOTcgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4NzhCMUZFMTA4NzRFM0YwMEE1NTA5NyAvKiBTeW5j
aHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc4QjFGQTEwODc0RTNGMDBBNTUwOTcgLyogU3luY2hy
b25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuY3BwICovOyB9OwotCQkwODc4QjFGRjEwODc0RTNG
MDBBNTUwOTcgLyogU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NzhCMUZCMTA4NzRFM0YwMEE1
NTA5NyAvKiBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5oICovOyB9OwotCQkwODc4
QjIwMDEwODc0RTNGMDBBNTUwOTcgLyogU3luY2hyb25pemFibGVUeXBlV3JhcHBlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3OEIxRkMxMDg3NEUz
RjAwQTU1MDk3IC8qIFN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXIuaCAqLzsgfTsKKwkJMDg3OEIx
RkYxMDg3NEUzRjAwQTU1MDk3IC8qIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc4QjFGQjEw
ODc0RTNGMDBBNTUwOTcgLyogU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwODc4QjIwMDEw
ODc0RTNGMDBBNTUwOTcgLyogU3luY2hyb25pemFibGVUeXBlV3JhcHBlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3OEIxRkMxMDg3NEUzRjAwQTU1
MDk3IC8qIFN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODdGRkEwRjBFRkYzRUQzMDA5REJEODggLyog
V01MSW5zZXJ0ZWRMZWdlbmRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4N0ZGQTBEMEVGRjNFRDMwMDlEQkQ4OCAvKiBXTUxJbnNlcnRl
ZExlZ2VuZEVsZW1lbnQuY3BwICovOyB9OwogCQkwODdGRkExMDBFRkYzRUQzMDA5REJEODggLyog
V01MSW5zZXJ0ZWRMZWdlbmRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwODdGRkEwRTBFRkYzRUQzMDA5REJEODggLyogV01MSW5zZXJ0ZWRM
ZWdlbmRFbGVtZW50LmggKi87IH07CiAJCTA4ODA3Qjc2MEVENzA5QUIwMDNGNjk3NSAvKiBXTUxH
b0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDg4MDdCNkEwRUQ3MDlBQjAwM0Y2OTc1IC8qIFdNTEdvRWxlbWVudC5jcHAgKi87IH07CkBA
IC0zMzE4LDcgKzMzMTgsNyBAQAogCQlCMjIyNzk4NTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5p
bWF0ZWRQYXRoRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjIyMjc3RUYwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkUGF0aERhdGEuaCAq
LzsgfTsKIAkJQjIyMjc5ODcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkUG9pbnRzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3N0Yx
MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFBvaW50cy5jcHAgKi87IH07CiAJCUIyMjI3
OTg4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFBvaW50cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc3RjIwRDAwQkYxRjAwNzFCNzgy
IC8qIFNWR0FuaW1hdGVkUG9pbnRzLmggKi87IH07Ci0JCUIyMjI3OThEMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdBbmltYXRlZFRlbXBsYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzdGNzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRU
ZW1wbGF0ZS5oICovOyB9OworCQlCMjIyNzk4RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0
ZWRUZW1wbGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjIyMjc3RjcwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkVGVtcGxhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMjIyNzk4RjBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc3RjkwRDAwQkYxRjAwNzFCNzgyIC8q
IFNWR0FuaW1hdGVFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjc5OTAwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0FuaW1hdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjIyNzdGQTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZUVsZW1l
bnQuaCAqLzsgfTsKIAkJQjIyMjc5OTIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVNb3Rp
b25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyMjI3N0ZDMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlTW90aW9uRWxlbWVudC5j
cHAgKi87IH07CkBAIC0zMzQ0LDcgKzMzNDQsNyBAQAogCQlCMjIyNzlCMzBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc4MUQwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0RvY3VtZW50LmNwcCAq
LzsgfTsKIAkJQjIyMjc5QjQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0RvY3VtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzgxRTBEMDBCRjFG
MDA3MUI3ODIgLyogU1ZHRG9jdW1lbnQuaCAqLzsgfTsKIAkJQjIyMjc5QjYwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc4MjAwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0VsZW1lbnQuY3BwICov
OyB9OwotCQlCMjIyNzlCNzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4MjEwRDAwQkYxRjAw
NzFCNzgyIC8qIFNWR0VsZW1lbnQuaCAqLzsgfTsKKwkJQjIyMjc5QjcwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyMjI3ODIxMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdFbGVtZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjIyMjc5QjkwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0VsZW1lbnRJbnN0YW5jZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzgyMzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZH
RWxlbWVudEluc3RhbmNlLmNwcCAqLzsgfTsKIAkJQjIyMjc5QkEwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0VsZW1lbnRJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc4MjQwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0VsZW1lbnRJbnN0YW5j
ZS5oICovOyB9OwogCQlCMjIyNzlCQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRWxlbWVudEluc3Rh
bmNlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjIyNzgyNjBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHRWxlbWVudEluc3RhbmNlTGlzdC5jcHAg
Ki87IH07CkBAIC0zNDI3LDcgKzM0MjcsNyBAQAogCQlCMjIyN0EyRjBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHTGFuZ1NwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyMjI3ODk5MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMYW5nU3BhY2UuY3BwICov
OyB9OwogCQlCMjIyN0EzMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGFuZ1NwYWNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzg5QTBEMDBCRjIw
MDA3MUI3ODIgLyogU1ZHTGFuZ1NwYWNlLmggKi87IH07CiAJCUIyMjI3QTMyMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdMZW5ndGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc4OUMwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xlbmd0aC5jcHAgKi87
IH07Ci0JCUIyMjI3QTMzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMZW5ndGguaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3ODlEMEQwMEJGMjAwMDcx
Qjc4MiAvKiBTVkdMZW5ndGguaCAqLzsgfTsKKwkJQjIyMjdBMzMwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0xlbmd0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjIyMjc4OUQwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xlbmd0aC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyMjI3QTM1MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdMZW5ndGhMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyMjI3ODlGMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0
LmNwcCAqLzsgfTsKIAkJQjIyMjdBMzYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xlbmd0aExpc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEEw
MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0LmggKi87IH07CiAJCUIyMjI3QTM4MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4QTIwRDAwQkYyMDAwNzFC
NzgyIC8qIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAgKi87IH07CkBAIC0zNjg5LDcgKzM2
ODksNyBAQAogCQlCMjdCMjg1RDBDRUYwRDcyMDBEMzlENTQgLyogRE9NU1ZHR2x5cGhFbGVtZW50
LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjdCMjgzMDBDRUYwQzM1MDBEMzlENTQgLyogRE9NU1ZHR2x5cGhFbGVtZW50Lmgg
Ki87IH07CiAJCUIyN0IyODVFMENFRjBENzIwMEQzOUQ1NCAvKiBET01TVkdNaXNzaW5nR2x5cGhF
bGVtZW50LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjdCMjgzMzBDRUYwQzM1MDBEMzlENTQgLyogRE9NU1ZHTWlzc2luZ0ds
eXBoRWxlbWVudC5oICovOyB9OwogCQlCMjhDNkEyNzBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHRG9j
dW1lbnRFeHRlbnNpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyOEM2QTFFMEQwMEM0NDgwMDMzNEFBNCAvKiBTVkdEb2N1bWVudEV4dGVuc2lv
bnMuY3BwICovOyB9OwotCQlCMjhDNkEyODBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHRG9jdW1lbnRF
eHRlbnNpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjhDNkExRjBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmggKi87
IH07CisJCUIyOEM2QTI4MEQwMEM0NDgwMDMzNEFBNCAvKiBTVkdEb2N1bWVudEV4dGVuc2lvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyOEM2QTFG
MEQwMEM0NDgwMDMzNEFBNCAvKiBTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMjhDNkEyOTBEMDBDNDQ4MDAz
MzRBQTQgLyogU1ZHSW1hZ2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjI4QzZBMjAwRDAwQzQ0ODAwMzM0QUE0IC8qIFNWR0ltYWdlTG9h
ZGVyLmNwcCAqLzsgfTsKIAkJQjI4QzZBMkEwRDAwQzQ0ODAwMzM0QUE0IC8qIFNWR0ltYWdlTG9h
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjhD
NkEyMTBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHSW1hZ2VMb2FkZXIuaCAqLzsgfTsKIAkJQjI5N0JD
NzAwQjNDMTRDRjAwNDVBNTkwIC8qIEpTU1ZHUGF0aFNlZ0xpc3RDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI5N0JDNkYwQjNDMTRDRjAw
NDVBNTkwIC8qIEpTU1ZHUGF0aFNlZ0xpc3RDdXN0b20uY3BwICovOyB9OwpAQCAtNDcyNSwxMSAr
NDcyNSwxMSBAQAogCQlFNDk2MjZDMzBEODBEOTQ5MDBFMzQwNUMgLyogUHJlbG9hZFNjYW5uZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDRBQkUx
MEQ3NTQyRjEwMEY5Njg2OSAvKiBQcmVsb2FkU2Nhbm5lci5oICovOyB9OwogCQlFNEFGQ0ZBNTBE
QUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBRkNGQTQwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRCZXpp
ZXIuaCAqLzsgfTsKIAkJRTRBRkQwMEIwREFGMzM1NDAwRjVGNTVDIC8qIFNNSUxUaW1lLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUZEMDA1MERB
RjMzNTQwMEY1RjU1QyAvKiBTTUlMVGltZS5jcHAgKi87IH07Ci0JCUU0QUZEMDBDMERBRjMzNTQw
MEY1RjU1QyAvKiBTTUlMVGltZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTRBRkQwMDYwREFGMzM1NDAwRjVGNTVDIC8qIFNNSUxUaW1lLmggKi87IH07
CisJCUU0QUZEMDBDMERBRjMzNTQwMEY1RjU1QyAvKiBTTUlMVGltZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBRkQwMDYwREFGMzM1NDAwRjVGNTVD
IC8qIFNNSUxUaW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTRBRkQwMEQwREFGMzM1NTAwRjVGNTVDIC8qIFNNSUxUaW1lQ29udGFpbmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUZEMDA3
MERBRjMzNTQwMEY1RjU1QyAvKiBTTUlMVGltZUNvbnRhaW5lci5jcHAgKi87IH07CiAJCUU0QUZE
MDBFMERBRjMzNTUwMEY1RjU1QyAvKiBTTUlMVGltZUNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBRkQwMDgwREFGMzM1NDAwRjVGNTVD
IC8qIFNNSUxUaW1lQ29udGFpbmVyLmggKi87IH07CiAJCUU0QUZEMDBGMERBRjMzNTUwMEY1RjU1
QyAvKiBTVkdTTUlMRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNEFGRDAwOTBEQUYzMzU0MDBGNUY1NUMgLyogU1ZHU01JTEVsZW1lbnQu
Y3BwICovOyB9OwotCQlFNEFGRDAxMDBEQUYzMzU1MDBGNUY1NUMgLyogU1ZHU01JTEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUZEMDBB
MERBRjMzNTQwMEY1RjU1QyAvKiBTVkdTTUlMRWxlbWVudC5oICovOyB9OworCQlFNEFGRDAxMDBE
QUYzMzU1MDBGNUY1NUMgLyogU1ZHU01JTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUZEMDBBMERBRjMzNTQwMEY1RjU1QyAvKiBTVkdT
TUlMRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUU0QzE3ODlBMEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDMTc4OTUwRUU2
OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9yTGlzdC5jcHAgKi87IH07CiAJCUU0QzE3ODlCMEVF
NjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzE3ODk2MEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NT
ZWxlY3Rvckxpc3QuaCAqLzsgfTsKIAkJRTRDMjc5NTgwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRl
ck1lZGlhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0QzI3OTU2MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5jcHAgKi87IH07CkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAJKHJldmlzaW9uIDUxNDA1KQorKysg
V2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIu
aCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU1ZHU01JTEVsZW1lbnQuaCIKICNpbmNs
dWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU01JTFRpbWVDb250YWluZXIuaCIKICNp
bmNsdWRlICJYTUxUb2tlbml6ZXIuaCIKQEAgLTg2LDYgKzg3LDE3IEBAIHZvaWQgU1ZHRG9jdW1l
bnRFeHRlbnNpb25zOjp1bnBhdXNlQW5pbWEKICAgICAgICAgKCppdHIpLT51bnBhdXNlQW5pbWF0
aW9ucygpOwogfQogCitib29sIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6c2FtcGxlQW5pbWF0aW9u
QXRUaW1lKGNvbnN0IFN0cmluZyYgZWxlbWVudElkLCBTVkdTTUlMRWxlbWVudCogZWxlbWVudCwg
ZG91YmxlIHRpbWUpCit7CisgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIFNNSUxUaW1lQ29udGFp
bmVyKiBjb250YWluZXIgPSBlbGVtZW50LT50aW1lQ29udGFpbmVyKCk7CisgICAgaWYgKCFjb250
YWluZXIgfHwgY29udGFpbmVyLT5pc1BhdXNlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBjb250YWluZXItPnNhbXBsZUFuaW1hdGlvbkF0VGltZShlbGVtZW50SWQsIHRpbWUpOwor
ICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVwb3J0
V2FybmluZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9
IG1fZG9jLT5mcmFtZSgpKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgJKHJl
dmlzaW9uIDUxNDA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFN0cmluZzsK
IGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsKIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQ7CitjbGFz
cyBTVkdTTUlMRWxlbWVudDsKIGNsYXNzIFNWR1NWR0VsZW1lbnQ7CiAKIGNsYXNzIFNWR0RvY3Vt
ZW50RXh0ZW5zaW9ucyB7CkBAIC01NCw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0
QW5pbWF0aW9ucygpOwogICAgIHZvaWQgcGF1c2VBbmltYXRpb25zKCk7CiAgICAgdm9pZCB1bnBh
dXNlQW5pbWF0aW9ucygpOworICAgIGJvb2wgc2FtcGxlQW5pbWF0aW9uQXRUaW1lKGNvbnN0IFN0
cmluZyYgZWxlbWVudElkLCBTVkdTTUlMRWxlbWVudCosIGRvdWJsZSB0aW1lKTsKIAogICAgIHZv
aWQgcmVwb3J0V2FybmluZyhjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlcG9ydEVycm9yKGNv
bnN0IFN0cmluZyYpOwpJbmRleDogV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFp
bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250
YWluZXIuY3BwCShyZXZpc2lvbiA1MTQwNSkKKysrIFdlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlM
VGltZUNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgU01JTFRp
bWVDb250YWluZXI6OlNNSUxUaW1lQ29udGFpbmVyKFNWRwogICAgIDogbV9iZWdpblRpbWUoMCkK
ICAgICAsIG1fcGF1c2VUaW1lKDApCiAgICAgLCBtX2FjY3VtdWxhdGVkUGF1c2VUaW1lKDApCisg
ICAgLCBtX25leHRNYW51YWxTYW1wbGVUaW1lKDApCiAgICAgLCBtX2RvY3VtZW50T3JkZXJJbmRl
eGVzRGlydHkoZmFsc2UpCiAgICAgLCBtX3RpbWVyKHRoaXMsICZTTUlMVGltZUNvbnRhaW5lcjo6
dGltZXJGaXJlZCkKICAgICAsIG1fb3duZXJTVkdFbGVtZW50KG93bmVyKQpAQCAtMjA3LDE0ICsy
MDgsNDUgQEAgU3RyaW5nIFNNSUxUaW1lQ29udGFpbmVyOjpiYXNlVmFsdWVGb3IoRQogICAgIG1f
c2F2ZWRCYXNlVmFsdWVzLmFkZChrZXksIGJhc2VWYWx1ZSk7CiAgICAgcmV0dXJuIGJhc2VWYWx1
ZTsKIH0KLSAgICAgIAorCit2b2lkIFNNSUxUaW1lQ29udGFpbmVyOjpzYW1wbGVBbmltYXRpb25B
dFRpbWUoY29uc3QgU3RyaW5nJiBlbGVtZW50SWQsIGRvdWJsZSBuZXdUaW1lKQoreworICAgIEFT
U0VSVChtX2JlZ2luVGltZSk7CisgICAgQVNTRVJUKCFpc1BhdXNlZCgpKTsKKworICAgIC8vIEZh
c3QtZm9yd2FyZCB0byB0aGUgdGltZSBEUlQgd2FudHMgdG8gc2FtcGxlCisgICAgbV90aW1lci5z
dG9wKCk7CisgICAgbV9uZXh0U2FtcGxpbmdUYXJnZXQgPSBlbGVtZW50SWQ7CisgICAgbV9uZXh0
TWFudWFsU2FtcGxlVGltZSA9IG5ld1RpbWU7CisKKyAgICB1cGRhdGVBbmltYXRpb25zKGVsYXBz
ZWQoKSk7Cit9CisKIHZvaWQgU01JTFRpbWVDb250YWluZXI6OnVwZGF0ZUFuaW1hdGlvbnMoU01J
TFRpbWUgZWxhcHNlZCkKIHsKICAgICBTTUlMVGltZSBlYXJsaWVyc0ZpcmVUaW1lID0gU01JTFRp
bWU6OnVucmVzb2x2ZWQoKTsKIAogICAgIFZlY3RvcjxTVkdTTUlMRWxlbWVudCo+IHRvQW5pbWF0
ZTsKICAgICBjb3B5VG9WZWN0b3IobV9zY2hlZHVsZWRBbmltYXRpb25zLCB0b0FuaW1hdGUpOwot
ICAgIAorCisgICAgaWYgKG1fbmV4dE1hbnVhbFNhbXBsZVRpbWUpIHsKKyAgICAgICAgU01JTFRp
bWUgc2FtcGxpbmdEaWZmOworICAgICAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgdG9Bbmlt
YXRlLnNpemUoKTsgKytuKSB7CisgICAgICAgICAgICBTVkdTTUlMRWxlbWVudCogYW5pbWF0aW9u
ID0gdG9BbmltYXRlW25dOworICAgICAgICAgICAgQVNTRVJUKGFuaW1hdGlvbi0+dGltZUNvbnRh
aW5lcigpID09IHRoaXMpOworCisgICAgICAgICAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50
ID0gYW5pbWF0aW9uLT50YXJnZXRFbGVtZW50KCk7CisgICAgICAgICAgICBpZiAoIXRhcmdldEVs
ZW1lbnQgfHwgdGFyZ2V0RWxlbWVudC0+Z2V0SURBdHRyaWJ1dGUoKSAhPSBtX25leHRTYW1wbGlu
Z1RhcmdldCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgc2FtcGxp
bmdEaWZmID0gYW5pbWF0aW9uLT5pbnRlcnZhbEJlZ2luKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGVsYXBzZWQgPSBTTUlMVGltZShtX25leHRNYW51YWxTYW1w
bGVUaW1lKSArIHNhbXBsaW5nRGlmZjsKKyAgICAgICAgbV9uZXh0TWFudWFsU2FtcGxlVGltZSA9
IDA7CisgICAgfQorCiAgICAgLy8gU29ydCBhY2NvcmRpbmcgdG8gcHJpb3JpdHkuIEVsZW1lbnRz
IHdpdGggbGF0ZXIgYmVnaW4gdGltZSBoYXZlIGhpZ2hlciBwcmlvcml0eS4KICAgICAvLyBJbiBj
YXNlIG9mIGEgdGllLCBkb2N1bWVudCBvcmRlciBkZWNpZGVzLiAKICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYWxzbyBjb25zaWRlciB0aW1pbmcgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZSBl
bGVtZW50cy4gRGVwZW5kZW50cwpJbmRleDogV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1l
Q29udGFpbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1l
Q29udGFpbmVyLmgJKHJldmlzaW9uIDUxNDA1KQorKysgV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NN
SUxUaW1lQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgdm9pZCBzZXREb2N1bWVudE9yZGVySW5k
ZXhlc0RpcnR5KCkgeyBtX2RvY3VtZW50T3JkZXJJbmRleGVzRGlydHkgPSB0cnVlOyB9CiAKKyAg
ICAgICAgLy8gTW92ZSB0byBhIHNwZWNpZmljIHRpbWUuIE9ubHkgdXNlZCBmb3IgRFJUIHRlc3Rp
bmcgcHVycG9zZXMuCisgICAgICAgIHZvaWQgc2FtcGxlQW5pbWF0aW9uQXRUaW1lKGNvbnN0IFN0
cmluZyYgZWxlbWVudElkLCBkb3VibGUgc2Vjb25kcyk7CisKICAgICBwcml2YXRlOgogICAgICAg
ICBTTUlMVGltZUNvbnRhaW5lcihTVkdTVkdFbGVtZW50KiBvd25lcik7CiAgICAgICAgIApAQCAt
NzYsNyArNzksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGRvdWJsZSBtX2JlZ2lu
VGltZTsKICAgICAgICAgZG91YmxlIG1fcGF1c2VUaW1lOwogICAgICAgICBkb3VibGUgbV9hY2N1
bXVsYXRlZFBhdXNlVGltZTsKLSAgICAgICAgCisgICAgICAgIGRvdWJsZSBtX25leHRNYW51YWxT
YW1wbGVUaW1lOworICAgICAgICBTdHJpbmcgbV9uZXh0U2FtcGxpbmdUYXJnZXQ7CisKICAgICAg
ICAgYm9vbCBtX2RvY3VtZW50T3JkZXJJbmRleGVzRGlydHk7CiAgICAgICAgIAogICAgICAgICBU
aW1lcjxTTUlMVGltZUNvbnRhaW5lcj4gbV90aW1lcjsKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MTQwNSkK
KysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMDktMTEtMjUgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFNWRyBh
bmltYXRpb24gdGVzdCBmcmFtZXdvcmsgd2l0aCAnc25hcHNob3QnIGZ1bmN0aW9uYWxpdHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxODk3CisKKyAg
ICAgICAgQWRkIEFQSSB1c2VkIGJ5IHRoZSBuZXcgJ3NhbXBsZVNWR0FuaW1hdGlvbkZvckVsZW1l
bnRBdFRpbWUnIERSVCBtZXRob2QsCisgICAgICAgIGZvcndhcmRpbmcgdGhlIGNhbGwgdG8gU1ZH
RG9jdW1lbnRFeHRlbnNpb25zLCBpZiBTVkcgaXMgZW5hYmxlZC4KKworICAgICAgICBJbXBsZW1l
bnRlZCBqdXN0IGxpa2UgdGhlIGV4aXN0aW5nIHBhdXNlQW5pbWF0aW9uKiBtZXRob2RzIGZvciBD
U1MgYW5pbWF0aW9ucy4KKworICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfZnJh
bWVfcGF1c2Vfc3ZnX2FuaW1hdGlvbik6CisKIDIwMDktMTEtMjQgIEpvYW5tYXJpZSBEaWdncyAg
PGpvYW5tYXJpZS5kaWdnc0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExv
cGV6LgpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAkocmV2aXNpb24gNTE0MDUpCisr
KyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
MSw2ICszMDEsOSBAQCBleHRlcm4gIkMiIHsKICAgICBXRUJLSVRfQVBJIGJvb2wKICAgICB3ZWJr
aXRfd2ViX2ZyYW1lX3BhdXNlX3RyYW5zaXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25z
dCBnY2hhciogbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IGdjaGFyKiBlbGVtZW50KTsKIAorICAg
IFdFQktJVF9BUEkgYm9vbAorICAgIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2Vfc3ZnX2FuaW1hdGlv
bihXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBhbmltYXRpb25JZCwgZG91Ymxl
IHRpbWUsIGNvbnN0IGdjaGFyKiBlbGVtZW50SWQpOworCiAgICAgV0VCS0lUX0FQSSB1bnNpZ25l
ZCBpbnQKICAgICB3ZWJraXRfd2ViX2ZyYW1lX251bWJlcl9vZl9hY3RpdmVfYW5pbWF0aW9ucyhX
ZWJLaXRXZWJGcmFtZSogZnJhbWUpOwogCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJmcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJh
bWUuY3BwCShyZXZpc2lvbiA1MTQwNSkKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZy
YW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTdWJz
dGl0dXRlRGF0YS5oIgorI2luY2x1ZGUgIlNWR1NNSUxFbGVtZW50LmgiCiAKICNpbmNsdWRlIDxh
dGsvYXRrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgpAQCAtOTU5LDYg
Kzk2MCwyMiBAQCBib29sIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2VfdHJhbnNpdGlvbihXCiAgICAg
cmV0dXJuIGNvcmUoZnJhbWUpLT5hbmltYXRpb24oKS0+cGF1c2VUcmFuc2l0aW9uQXRUaW1lKGNv
cmVFbGVtZW50LT5yZW5kZXJlcigpLCBBdG9taWNTdHJpbmcobmFtZSksIHRpbWUpOwogfQogCiti
b29sIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2Vfc3ZnX2FuaW1hdGlvbihXZWJLaXRXZWJGcmFtZSog
ZnJhbWUsIGNvbnN0IGdjaGFyKiBhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIGNvbnN0IGdjaGFy
KiBlbGVtZW50SWQpCit7CisgICAgQVNTRVJUKGNvcmUoZnJhbWUpKTsKKyAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBjb3JlKGZyYW1lKS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50IHx8
ICFkb2N1bWVudC0+c3ZnRXh0ZW5zaW9ucygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
RWxlbWVudCogY29yZUVsZW1lbnQgPSBkb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQoQXRvbWljU3Ry
aW5nKGFuaW1hdGlvbklkKSk7CisgICAgaWYgKCFjb3JlRWxlbWVudCB8fCAhU1ZHU01JTEVsZW1l
bnQ6OmlzU01JTEVsZW1lbnQoY29yZUVsZW1lbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisj
aWYgRU5BQkxFKFNWRykKKyAgICByZXR1cm4gZG9jdW1lbnQtPmFjY2Vzc1NWR0V4dGVuc2lvbnMo
KS0+c2FtcGxlQW5pbWF0aW9uQXRUaW1lKGVsZW1lbnRJZCwgc3RhdGljX2Nhc3Q8U1ZHU01JTEVs
ZW1lbnQqPihjb3JlRWxlbWVudCksIHRpbWUpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKK30KKwogdW5zaWduZWQgaW50IHdlYmtpdF93ZWJfZnJhbWVfbnVtYmVyX29mX2FjdGl2
ZV9hbmltYXRpb25zKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZShmcmFtZSk7CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNTE0MDUpCisrKyBXZWJLaXQvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDA5LTExLTI1ICBO
aWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTVkcgYW5pbWF0aW9uIHRlc3Qg
ZnJhbWV3b3JrIHdpdGggJ3NuYXBzaG90JyBmdW5jdGlvbmFsaXR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTg5NworCisgICAgICAgIEFkZCBBUEkg
dXNlZCBieSB0aGUgbmV3ICdzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lJyBEUlQg
bWV0aG9kLAorICAgICAgICBmb3J3YXJkaW5nIHRoZSBjYWxsIHRvIFNWR0RvY3VtZW50RXh0ZW5z
aW9ucywgaWYgU1ZHIGlzIGVuYWJsZWQuCisKKyAgICAgICAgSW1wbGVtZW50ZWQganVzdCBsaWtl
IHRoZSBleGlzdGluZyBwYXVzZUFuaW1hdGlvbiogbWV0aG9kcyBmb3IgQ1NTIGFuaW1hdGlvbnMu
CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBf
cGF1c2VTVkdBbmltYXRpb246b25TTUlMTm9kZTphdFRpbWU6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJGcmFtZVByaXZhdGUuaDoKKwogMjAwOS0xMS0yNCAgRG1pdHJ5IFRpdG92ICA8ZGltaWNo
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDUxNDA1KQorKysgV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
Y3JpcHRWYWx1ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TbWFydFJlcGxhY2UuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvU1ZHU01JTEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEl0ZXJhdG9y
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1R5
cGluZ0NvbW1hbmQuaD4KQEAgLTExMTYsNiArMTExNywyOSBAQCBzdGF0aWMgaW5saW5lIFdlYkRh
dGFTb3VyY2UgKmRhdGFTb3VyY2UoCiAgICAgcmV0dXJuIGNvbnRyb2xsZXItPnBhdXNlVHJhbnNp
dGlvbkF0VGltZShjb3JlTm9kZS0+cmVuZGVyZXIoKSwgbmFtZSwgdGltZSk7CiB9CiAKKy8vIFBh
dXNlIGEgZ2l2ZW4gU1ZHIGFuaW1hdGlvbiBvbiB0aGUgdGFyZ2V0IG5vZGUgYXQgYSBzcGVjaWZp
YyB0aW1lLgorLy8gVGhpcyBtZXRob2QgaXMgb25seSBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0
ZXN0aW5nIHRoZSBTVkcgYW5pbWF0aW9uIHN5c3RlbS4KKy0gKEJPT0wpX3BhdXNlU1ZHQW5pbWF0
aW9uOihOU1N0cmluZyopZWxlbWVudElkIG9uU01JTE5vZGU6KERPTU5vZGUgKilub2RlIGF0VGlt
ZTooTlNUaW1lSW50ZXJ2YWwpdGltZQoreworICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUoc2VsZik7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworIAorICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQgfHwgIWRv
Y3VtZW50LT5zdmdFeHRlbnNpb25zKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE5v
ZGUqIGNvcmVOb2RlID0gY29yZShub2RlKTsKKyAgICBpZiAoIWNvcmVOb2RlIHx8ICFTVkdTTUlM
RWxlbWVudDo6aXNTTUlMRWxlbWVudChjb3JlTm9kZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworI2lmIEVOQUJMRShTVkcpCisgICAgcmV0dXJuIGRvY3VtZW50LT5hY2Nlc3NTVkdFeHRlbnNp
b25zKCktPnNhbXBsZUFuaW1hdGlvbkF0VGltZShlbGVtZW50SWQsIHN0YXRpY19jYXN0PFNWR1NN
SUxFbGVtZW50Kj4oY29yZU5vZGUpLCB0aW1lKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOwor
I2VuZGlmCit9CisKIC0gKHVuc2lnbmVkKSBfbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zCiB7CiAg
ICAgRnJhbWUqIGZyYW1lID0gY29yZShzZWxmKTsKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWVQcml2YXRlLmgJKHJldmlzaW9uIDUxNDA1KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDEwIEBAIHR5cGVkZWYg
ZW51bSB7CiAtIChCT09MKV9wYXVzZUFuaW1hdGlvbjooTlNTdHJpbmcqKW5hbWUgb25Ob2RlOihE
T01Ob2RlICopbm9kZSBhdFRpbWU6KE5TVGltZUludGVydmFsKXRpbWU7CiAtIChCT09MKV9wYXVz
ZVRyYW5zaXRpb25PZlByb3BlcnR5OihOU1N0cmluZyopbmFtZSBvbk5vZGU6KERPTU5vZGUqKW5v
ZGUgYXRUaW1lOihOU1RpbWVJbnRlcnZhbCl0aW1lOwogCisvLyBQYXVzZSBhIGdpdmVuIFNWRyBh
bmltYXRpb24gb24gdGhlIHRhcmdldCBub2RlIGF0IGEgc3BlY2lmaWMgdGltZS4KKy8vIFRoaXMg
bWV0aG9kIGlzIG9ubHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGVzdGluZyB0aGUgU1ZHIGFu
aW1hdGlvbiBzeXN0ZW0uCistIChCT09MKV9wYXVzZVNWR0FuaW1hdGlvbjooTlNTdHJpbmcqKWVs
ZW1lbnRJZCBvblNNSUxOb2RlOihET01Ob2RlICopbm9kZSBhdFRpbWU6KE5TVGltZUludGVydmFs
KXRpbWU7CisKIC8vIFJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBjdXJyZW50bHkgcnVubmlu
ZyBhbmltYXRpb25zIChpbmNsdWRlcyBib3RoIENTUyB0cmFuc2l0aW9ucyBhbmQgQ1NTIGFuaW1h
dGlvbnMpLgogLSAodW5zaWduZWQpIF9udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnM7CiAKSW5kZXg6
IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwko
cmV2aXNpb24gNTE0MDUpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMTEtMjUgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIFNWRyBhbmltYXRpb24gdGVzdCBmcmFtZXdvcmsgd2l0aCAnc25hcHNob3QnIGZ1
bmN0aW9uYWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMxODk3CisKKyAgICAgICAgQWRkIEFQSSB1c2VkIGJ5IHRoZSBuZXcgJ3NhbXBsZVNWR0Fu
aW1hdGlvbkZvckVsZW1lbnRBdFRpbWUnIERSVCBtZXRob2QsCisgICAgICAgIGZvcndhcmRpbmcg
dGhlIGNhbGwgdG8gU1ZHRG9jdW1lbnRFeHRlbnNpb25zLCBpZiBTVkcgaXMgZW5hYmxlZC4KKwor
ICAgICAgICBJbXBsZW1lbnRlZCBqdXN0IGxpa2UgdGhlIGV4aXN0aW5nIHBhdXNlQW5pbWF0aW9u
KiBtZXRob2RzIGZvciBDU1MgYW5pbWF0aW9ucy4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUu
Y3BwOgorICAgICAgICAocXRfZHJ0X3BhdXNlU1ZHQW5pbWF0aW9uKToKKwogMjAwOS0xMS0yMyAg
RGF2aWQgQm9kZGllICA8ZGJvZGRpZUB0cm9sbHRlY2guY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEhhdXNtYW5uLgpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAkocmV2aXNpb24gNTE0MDUp
CisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYg
KzU2LDcgQEAKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiU3Vic3RpdHV0ZURhdGEuaCIKKyNpbmNsdWRlICJTVkdTTUlM
RWxlbWVudC5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAibWFya3VwLmgi
CiAjaW5jbHVkZSAicXRfaW5zdGFuY2UuaCIKQEAgLTE0OCw2ICsxNDksMzEgQEAgYm9vbCBRV0VC
S0lUX0VYUE9SVCBxdF9kcnRfcGF1c2VUcmFuc2l0aQogICAgIHJldHVybiBjb250cm9sbGVyLT5w
YXVzZVRyYW5zaXRpb25BdFRpbWUoY29yZU5vZGUtPnJlbmRlcmVyKCksIHByb3BlcnR5TmFtZSwg
dGltZSk7CiB9CiAKKy8vIFBhdXNlIGEgZ2l2ZW4gU1ZHIGFuaW1hdGlvbiBvbiB0aGUgdGFyZ2V0
IG5vZGUgYXQgYSBzcGVjaWZpYyB0aW1lLgorLy8gVGhpcyBtZXRob2QgaXMgb25seSBpbnRlbmRl
ZCB0byBiZSB1c2VkIGZvciB0ZXN0aW5nIHRoZSBTVkcgYW5pbWF0aW9uIHN5c3RlbS4KK2Jvb2wg
UVdFQktJVF9FWFBPUlQgcXRfZHJ0X3BhdXNlU1ZHQW5pbWF0aW9uKFFXZWJGcmFtZSAqcWZyYW1l
LCBjb25zdCBRU3RyaW5nICZhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcg
JmVsZW1lbnRJZCkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3Jl
KHFmcmFtZSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
RG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIFFfQVNTRVJUKGRvYyk7CisK
KyAgICBpZiAoIWRvYy0+c3ZnRXh0ZW5zaW9ucygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBOb2RlKiBjb3JlTm9kZSA9IGRvYy0+Z2V0RWxlbWVudEJ5SWQoYW5pbWF0aW9uSWQpOwor
ICAgIGlmICghY29yZU5vZGUgfHwgIVNWR1NNSUxFbGVtZW50Ojppc1NNSUxFbGVtZW50KGNvcmVO
b2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisjaWYgRU5BQkxFKFNWRykKKyAgICByZXR1
cm4gZG9jdW1lbnQtPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+c2FtcGxlQW5pbWF0aW9uQXRUaW1l
KGVsZW1lbnRJZCwgc3RhdGljX2Nhc3Q8U1ZHU01JTEVsZW1lbnQqPihjb3JlTm9kZSksIHRpbWUp
OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogLy8gUmV0dXJucyB0aGUg
dG90YWwgbnVtYmVyIG9mIGN1cnJlbnRseSBydW5uaW5nIGFuaW1hdGlvbnMgKGluY2x1ZGVzIGJv
dGggQ1NTIHRyYW5zaXRpb25zIGFuZCBDU1MgYW5pbWF0aW9ucykuCiBpbnQgUVdFQktJVF9FWFBP
UlQgcXRfZHJ0X251bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhRV2ViRnJhbWUgKnFmcmFtZSkKIHsK
SW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiA1MTQwNSkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDktMTEtMjUgIE5pa29sYXMgWmltbWVybWFubiAg
PG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIFNWRyBhbmltYXRpb24gdGVzdCBmcmFtZXdvcmsgd2l0aCAnc25h
cHNob3QnIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMxODk3CisKKyAgICAgICAgQWRkIEFQSSB1c2VkIGJ5IHRoZSBuZXcgJ3Nh
bXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRpbWUnIERSVCBtZXRob2QsCisgICAgICAgIGZv
cndhcmRpbmcgdGhlIGNhbGwgdG8gU1ZHRG9jdW1lbnRFeHRlbnNpb25zLCBpZiBTVkcgaXMgZW5h
YmxlZC4KKworICAgICAgICBJbXBsZW1lbnRlZCBqdXN0IGxpa2UgdGhlIGV4aXN0aW5nIHBhdXNl
QW5pbWF0aW9uKiBtZXRob2RzIGZvciBDU1MgYW5pbWF0aW9ucy4KKworICAgICAgICAqIEludGVy
ZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGw6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViRnJhbWU6OnBhdXNlU1ZHQW5pbWF0aW9uKToKKyAgICAgICAgKiBXZWJGcmFtZS5o
OgorCiAyMDA5LTExLTI0ICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBbm90aGVyIFdpbmRvd3MgYnVpbGQgZml4CkluZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gNTE0
MDUpCisrKyBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiAr
OTIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVuZGVyVHJlZUFzVGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NWR1NNSUxFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0
SXRlcmF0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NQmluZGluZy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgpAQCAtMTE1Niw2ICsxMTU3LDM0IEBAIEhSRVNV
TFQgV2ViRnJhbWU6OnBhdXNlVHJhbnNpdGlvbihCU1RSIHAKICAgICByZXR1cm4gU19PSzsKIH0K
IAorSFJFU1VMVCBXZWJGcmFtZTo6cGF1c2VTVkdBbmltYXRpb24oQlNUUiBlbGVtZW50SWQsIElE
T01Ob2RlKiBub2RlLCBkb3VibGUgc2Vjb25kc0Zyb21Ob3csIEJPT0wqIGFuaW1hdGlvbldhc1J1
bm5pbmcpCit7CisgICAgaWYgKCFub2RlIHx8ICFhbmltYXRpb25XYXNSdW5uaW5nKQorICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOworCisgICAgKmFuaW1hdGlvbldhc1J1bm5pbmcgPSBGQUxTRTsK
KworICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUodGhpcyk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKKworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1
bWVudCgpOworICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5zdmdFeHRlbnNpb25zKCkp
CisgICAgICAgIHJldHVybiBFX0ZBSUw7CisKKyAgICBDT01QdHI8RE9NTm9kZT4gZG9tTm9kZShR
dWVyeSwgbm9kZSk7CisgICAgaWYgKCFkb21Ob2RlIHx8ICFTVkdTTUlMRWxlbWVudDo6aXNTTUlM
RWxlbWVudChkb21Ob2RlKSkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKworI2lmIEVOQUJMRShT
VkcpCisgICAgKmFuaW1hdGlvbldhc1J1bm5pbmcgPSBkb2N1bWVudC0+YWNjZXNzU1ZHRXh0ZW5z
aW9ucygpLT5zYW1wbGVBbmltYXRpb25BdFRpbWUoU3RyaW5nKGVsZW1lbnRJZCwgU3lzU3RyaW5n
TGVuKGVsZW1lbnRJZCkpLCBzdGF0aWNfY2FzdDxTVkdTTUlMRWxlbWVudCo+KGRvbU5vZGUpLCBz
ZWNvbmRzRnJvbU5vdyk7CisjZWxzZQorICAgICphbmltYXRpb25XYXNSdW5uaW5nID0gRkFMU0U7
CisjZW5kaWYKKworICAgIHJldHVybiBTX09LOworfQorCiBIUkVTVUxUIFdlYkZyYW1lOjpudW1i
ZXJPZkFjdGl2ZUFuaW1hdGlvbnMoVUlOVCogbnVtYmVyKQogewogICAgIGlmICghbnVtYmVyKQpJ
bmRleDogV2ViS2l0L3dpbi9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2Vi
RnJhbWUuaAkocmV2aXNpb24gNTE0MDUpCisrKyBXZWJLaXQvd2luL1dlYkZyYW1lLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI0MCw2ICsyNDAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgcGF1c2VBbmltYXRpb24oQlNUUiBhbmltYXRpb25OYW1lLCBJ
RE9NTm9kZSosIGRvdWJsZSBzZWNvbmRzRnJvbU5vdywgQk9PTCogYW5pbWF0aW9uV2FzUnVubmlu
Zyk7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhdXNlVHJhbnNpdGlv
bihCU1RSIHByb3BlcnR5TmFtZSwgSURPTU5vZGUqLCBkb3VibGUgc2Vjb25kc0Zyb21Ob3csIEJP
T0wqIHRyYW5zaXRpb25XYXNSdW5uaW5nKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgcGF1c2VTVkdBbmltYXRpb24oQlNUUiBlbGVtZW50SWQsIElET01Ob2RlKiwgZG91
YmxlIHNlY29uZHNGcm9tTm93LCBCT09MKiBhbmltYXRpb25XYXNSdW5uaW5nKTsKICAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKFVJ
TlQqKTsKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0Rpc3BsYXlp
bmdTdGFuZGFsb25lSW1hZ2UoQk9PTCopOwpJbmRleDogV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lX
ZWJGcmFtZVByaXZhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vSW50ZXJmYWNlcy9J
V2ViRnJhbWVQcml2YXRlLmlkbAkocmV2aXNpb24gNTE0MDUpCisrKyBXZWJLaXQvd2luL0ludGVy
ZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcg
QEAgaW50ZXJmYWNlIElXZWJGcmFtZVByaXZhdGUgOiBJVW5rbm93bgogCiAgICAgSFJFU1VMVCBw
YXVzZUFuaW1hdGlvbihbaW5dIEJTVFIgYW5pbWF0aW9uTmFtZSwgW2luXSBJRE9NTm9kZSogbm9k
ZSwgW2luXSBkb3VibGUgc2Vjb25kc0Zyb21Ob3csIFtvdXQsIHJldHZhbF0gQk9PTCogYW5pbWF0
aW9uV2FzUnVubmluZyk7CiAgICAgSFJFU1VMVCBwYXVzZVRyYW5zaXRpb24oW2luXSBCU1RSIHBy
b3BlcnR5TmFtZSwgW2luXSBJRE9NTm9kZSogbm9kZSwgW2luXSBkb3VibGUgc2Vjb25kc0Zyb21O
b3csIFtvdXQsIHJldHZhbF0gQk9PTCogdHJhbnNpdGlvbldhc1J1bm5pbmcpOworICAgIEhSRVNV
TFQgcGF1c2VTVkdBbmltYXRpb24oW2luXSBCU1RSIGVsZW1lbnRJZCwgW2luXSBJRE9NTm9kZSog
bm9kZSwgW2luXSBkb3VibGUgc2Vjb25kc0Zyb21Ob3csIFtvdXQsIHJldHZhbF0gQk9PTCogYW5p
bWF0aW9uV2FzUnVubmluZyk7CiAgICAgSFJFU1VMVCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMo
W291dCwgcmV0dmFsXSBVSU5UKiBudW1iZXIpOwogCiAgICAgSFJFU1VMVCBpc0Rpc3BsYXlpbmdT
dGFuZGFsb25lSW1hZ2UoW291dCwgcmV0dmFsXSBCT09MKiByZXN1bHQpOwpJbmRleDogV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2
aXNpb24gNTE0MDUpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwzMCBAQAorMjAwOS0xMS0yNSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1h
bm5AcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgU1ZHIGFuaW1hdGlvbiB0ZXN0IGZyYW1ld29yayB3aXRoICdzbmFwc2hvdCcgZnVu
Y3Rpb25hbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzE4OTcKKworICAgICAgICBBZGQgbmV3ICdzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50
QXRUaW1lJyBEUlQgbWV0aG9kLAorICAgICAgICB1c2VkIGJ5IHRoZSBuZXcgU1ZHIGFuaW1hdGlv
biB0ZXN0aW5nIGZyYW1ld29yaywgaW1wbGVtZW50ZWQKKyAgICAgICAgZm9yIHF0L2d0ay93aW4v
bWFjLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoc2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0VGltZUNhbGxiYWNrKToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxl
bWVudEF0VGltZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2FtcGxlU1ZHQW5p
bWF0aW9uRm9yRWxlbWVudEF0VGltZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5
b3V0VGVzdENvbnRyb2xsZXJRdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlv
dXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0VGltZSk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0VGltZSk6CisKIDIwMDkt
MTEtMjUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDUxNDA1KQorKysgV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDczLDYgKzEwNzMsMjIgQEAgc3RhdGljIEpTVmFsdWVSZWYgcGF1c2VUcmFuc2l0
aW9uQXRUaW1lTwogICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgY29udHJv
bGxlci0+cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKHByb3BlcnR5TmFtZS5n
ZXQoKSwgdGltZSwgZWxlbWVudElkLmdldCgpKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNh
bXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRpbWVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMykKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IGFuaW1hdGlvbklkKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQs
IGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKyAg
ICBkb3VibGUgdGltZSA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4
Y2VwdGlvbik7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKyAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gZWxlbWVudElkKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFy
Z3VtZW50c1syXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKworICAg
IExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVz
dENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIHJldHVy
biBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgY29udHJvbGxlci0+c2FtcGxlU1ZHQW5pbWF0
aW9uRm9yRWxlbWVudEF0VGltZShhbmltYXRpb25JZC5nZXQoKSwgdGltZSwgZWxlbWVudElkLmdl
dCgpKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIG51bWJlck9mQWN0aXZlQW5pbWF0aW9uc0Nh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoYXJndW1lbnRD
b3VudCAhPSAwKQpAQCAtMTI1MCw2ICsxMjY2LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0
VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJwYXRoVG9Mb2NhbFJlc291cmNlIiwgcGF0aFRv
TG9jYWxSZXNvdXJjZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInBhdXNlQW5pbWF0aW9u
QXRUaW1lT25FbGVtZW50V2l0aElkIiwgcGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRo
SWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVs
ZW1lbnRXaXRoSWQiLCBwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWRDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAorICAgICAgICB7ICJzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1l
Iiwgc2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0VGltZUNhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgInByaW50VG9QREYiLCBkdW1wQXNQREZDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJxdWV1ZUJhY2tOYXZpZ2F0aW9uIiwgcXVldWVCYWNrTmF2aWdhdGlvbkNhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInF1ZXVlRm9yd2FyZE5hdmlnYXRpb24iLCBxdWV1ZUZvcndhcmRO
YXZpZ2F0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gNTE0MDUpCisrKyBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDIsNiArMjAyLDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgcGF1c2VB
bmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoSlNTdHJpbmdSZWYgYW5pbWF0aW9uTmFtZSwg
ZG91YmxlIHRpbWUsIEpTU3RyaW5nUmVmIGVsZW1lbnRJZCk7CiAgICAgYm9vbCBwYXVzZVRyYW5z
aXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBkb3Vi
bGUgdGltZSwgSlNTdHJpbmdSZWYgZWxlbWVudElkKTsKKyAgICBib29sIHNhbXBsZVNWR0FuaW1h
dGlvbkZvckVsZW1lbnRBdFRpbWUoSlNTdHJpbmdSZWYgYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1l
LCBKU1N0cmluZ1JlZiBlbGVtZW50SWQpOwogICAgIHVuc2lnbmVkIG51bWJlck9mQWN0aXZlQW5p
bWF0aW9ucygpIGNvbnN0OwogCiAgICAgdm9pZCB3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKEpT
U3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwg
SlNTdHJpbmdSZWYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21h
aW5zKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAkocmV2aXNpb24gNTE0MDUpCisrKyBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NDgsNiArNDQ4LDE0IEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnBhdXNlVHJhbnNpdGkKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKK2Jvb2wgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNhbXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRpbWUoSlNT
dHJpbmdSZWYgYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lLCBKU1N0cmluZ1JlZiBlbGVtZW50SWQp
Cit7ICAgIAorICAgIGdjaGFyKiBhbmltYXRpb25FbGVtZW50ID0gSlNTdHJpbmdDb3B5VVRGOENT
dHJpbmcoYW5pbWF0aW9uSWQpOworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB3ZWJraXRfd2ViX2Zy
YW1lX3BhdXNlX3N2Z19hbmltYXRpb24obWFpbkZyYW1lLCBlbGVtZW50SWQsIHRpbWUsIGFuaW1h
dGlvbkVsZW1lbnQpOworICAgIGdfZnJlZShlbGVtZW50KTsKKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7Cit9CisKIHVuc2lnbmVkIExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZkFjdGl2ZUFu
aW1hdGlvbnMoKSBjb25zdAogewogICAgIHJldHVybiB3ZWJraXRfd2ViX2ZyYW1lX251bWJlcl9v
Zl9hY3RpdmVfYW5pbWF0aW9ucyhtYWluRnJhbWUpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQko
cmV2aXNpb24gNTE0MDUpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0
VGVzdENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ4Niw2ICs0ODYsMTYgQEAg
Ym9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF1c2VUcmFuc2l0aQogICAgIHJldHVybiBbbWFp
bkZyYW1lIF9wYXVzZVRyYW5zaXRpb25PZlByb3BlcnR5Om5hbWVOUyBvbk5vZGU6W1ttYWluRnJh
bWUgRE9NRG9jdW1lbnRdIGdldEVsZW1lbnRCeUlkOmlkTlNdIGF0VGltZTp0aW1lXTsKIH0KIAor
Ym9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0
VGltZShKU1N0cmluZ1JlZiBhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIEpTU3RyaW5nUmVmIGVs
ZW1lbnRJZCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGFuaW1hdGlvbklEQ0YoQWRv
cHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYW5pbWF0aW9u
SWQpKTsKKyAgICBOU1N0cmluZyAqYW5pbWF0aW9uSUROUyA9IChOU1N0cmluZyAqKWFuaW1hdGlv
bklEQ0YuZ2V0KCk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBlbGVtZW50SURDRihBZG9w
dENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBlbGVtZW50SWQp
KTsKKyAgICBOU1N0cmluZyAqZWxlbWVudElETlMgPSAoTlNTdHJpbmcgKillbGVtZW50SURDRi5n
ZXQoKTsKKworICAgIHJldHVybiBbbWFpbkZyYW1lIF9wYXVzZVNWR0FuaW1hdGlvbjplbGVtZW50
SUROUyBvblNNSUxOb2RlOltbbWFpbkZyYW1lIERPTURvY3VtZW50XSBnZXRFbGVtZW50QnlJZDph
bmltYXRpb25JRE5TXSBhdFRpbWU6dGltZV07Cit9CisKIHVuc2lnbmVkIExheW91dFRlc3RDb250
cm9sbGVyOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBjb25zdAogewogICAgIHJldHVybiBb
bWFpbkZyYW1lIF9udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnNdOwpJbmRleDogV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5j
cHAJKHJldmlzaW9uIDUxNDA1KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5
b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDkgQEAg
ZXh0ZXJuIHZvaWQgcXRfZHVtcF9yZXNvdXJjZV9sb2FkX2NhbGxiYQogZXh0ZXJuIHZvaWQgcXRf
ZHJ0X3NldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKFFXZWJGcmFtZSosIGJvb2wgZW5hYmxl
ZCk7CiBleHRlcm4gYm9vbCBxdF9kcnRfcGF1c2VBbmltYXRpb24oUVdlYkZyYW1lKiwgY29uc3Qg
UVN0cmluZyYgbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CiBl
eHRlcm4gYm9vbCBxdF9kcnRfcGF1c2VUcmFuc2l0aW9uT2ZQcm9wZXJ0eShRV2ViRnJhbWUqLCBj
b25zdCBRU3RyaW5nJiBuYW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElk
KTsKK2V4dGVybiBib29sIHF0X2RydF9wYXVzZVNWR0FuaW1hdGlvbihRV2ViRnJhbWUqLCBjb25z
dCBRU3RyaW5nJiBhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcmIGVsZW1l
bnRJZCk7CiBleHRlcm4gaW50IHF0X2RydF9udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoUVdlYkZy
YW1lKik7CisKIGV4dGVybiB2b2lkIHF0X2RydF93aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKGNv
bnN0IFFTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90
b2NvbCwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRp
b25TdWJkb21haW5zKTsKIGV4dGVybiBRU3RyaW5nIHF0X2RydF9jb3VudGVyVmFsdWVGb3JFbGVt
ZW50QnlJZChRV2ViRnJhbWUqIHFGcmFtZSwgY29uc3QgUVN0cmluZyYgaWQpOwogCkBAIC0yODAs
NiArMjgyLDE1IEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlVHJhbnNpdGkKICAg
ICByZXR1cm4gcXRfZHJ0X3BhdXNlVHJhbnNpdGlvbk9mUHJvcGVydHkoZnJhbWUsIHByb3BlcnR5
TmFtZSwgdGltZSwgZWxlbWVudElkKTsKIH0KIAorYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0VGltZShjb25zdCBRU3RyaW5nJiBhbmltYXRp
b25JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG91YmxlIHRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCkK
K3sKKyAgICBRV2ViRnJhbWUqIGZyYW1lID0gbV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCk7
CisgICAgUV9BU1NFUlQoZnJhbWUpOworICAgIHJldHVybiBxdF9kcnRfcGF1c2VTVkdBbmltYXRp
b24oZnJhbWUsIGFuaW1hdGlvbklkLCB0aW1lLCBlbGVtZW50SWQpOworfQorCiB1bnNpZ25lZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3QKIHsK
ICAgICBRV2ViRnJhbWUqIGZyYW1lID0gbV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCk7Cklu
ZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5oCShyZXZpc2lvbiA1MTQwNSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1
LDYgKzExNSw3IEBAIHB1YmxpYyBzbG90czoKIAogICAgIGJvb2wgcGF1c2VBbmltYXRpb25BdFRp
bWVPbkVsZW1lbnRXaXRoSWQoY29uc3QgUVN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRp
bWUsIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CiAgICAgYm9vbCBwYXVzZVRyYW5zaXRpb25B
dFRpbWVPbkVsZW1lbnRXaXRoSWQoY29uc3QgUVN0cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUg
dGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKKyAgICBib29sIHBhdXNlU1ZHQW5pbWF0
aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nJiBlbGVt
ZW50SWQpOwogICAgIHVuc2lnbmVkIG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0Owog
CiAgICAgdm9pZCB3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKGNvbnN0IFFTdHJpbmcmIHNvdXJj
ZU9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgUVN0cmlu
ZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKSW5k
ZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91
dFRlc3RDb250cm9sbGVyV2luLmNwcAkocmV2aXNpb24gNTE0MDUpCisrKyBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NjEsNiArODYxLDMxIEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNl
VHJhbnNpdGkKICAgICByZXR1cm4gU1VDQ0VFREVEKGhyKSAmJiB3YXNSdW5uaW5nOwogfQogCiti
b29sIExheW91dFRlc3RDb250cm9sbGVyOjpzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRU
aW1lKEpTU3RyaW5nUmVmIGFuaW1hdGlvbklkLCBkb3VibGUgdGltZSwgSlNTdHJpbmdSZWYgZWxl
bWVudElkKQoreworICAgIENPTVB0cjxJRE9NRG9jdW1lbnQ+IGRvY3VtZW50OworICAgIGlmIChG
QUlMRUQoZnJhbWUtPkRPTURvY3VtZW50KCZkb2N1bWVudCkpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBCU1RSIGlkQlNUUiA9IEpTU3RyaW5nQ29weUJTVFIoYW5pbWF0aW9uSWQpOwor
ICAgIENPTVB0cjxJRE9NRWxlbWVudD4gZWxlbWVudDsKKyAgICBIUkVTVUxUIGhyID0gZG9jdW1l
bnQtPmdldEVsZW1lbnRCeUlkKGlkQlNUUiwgJmVsZW1lbnQpOworICAgIFN5c0ZyZWVTdHJpbmco
aWRCU1RSKTsKKyAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgQ09NUHRyPElXZWJGcmFtZVByaXZhdGU+IGZyYW1lUHJpdmF0ZShRdWVyeSwgZnJhbWUpOwor
ICAgIGlmICghZnJhbWVQcml2YXRlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBCU1RS
IGVsZW1lbnRJZEJTVFIgPSBKU1N0cmluZ0NvcHlCU1RSKGVsZW1lbnRJZCk7CisgICAgQk9PTCB3
YXNSdW5uaW5nID0gRkFMU0U7CisgICAgaHIgPSBmcmFtZVByaXZhdGUtPnBhdXNlU1ZHQW5pbWF0
aW9uKGVsZW1lbnRJZEJTVFIsIGVsZW1lbnQuZ2V0KCksIHRpbWUsICZ3YXNSdW5uaW5nKTsKKyAg
ICBTeXNGcmVlU3RyaW5nKGVsZW1lbnRJZEJTVFIpOworCisgICAgcmV0dXJuIFNVQ0NFRURFRCho
cikgJiYgd2FzUnVubmluZzsKK30KKwogdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51
bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0CiB7CiAgICAgQ09NUHRyPElXZWJGcmFtZVBy
aXZhdGU+IGZyYW1lUHJpdmF0ZShRdWVyeSwgZnJhbWUpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAJ
KHJldmlzaW9uIDUxNDA1KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0
VGVzdENvbnRyb2xsZXJXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Nyw2ICsyNjcsMTIgQEAg
Ym9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF1c2VBbmltYXRpbwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAorYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2FtcGxlU1ZHQW5pbWF0aW9uRm9y
RWxlbWVudEF0VGltZShKU1N0cmluZ1JlZiBhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIEpTU3Ry
aW5nUmVmIGVsZW1lbnRJZCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJu
IGZhbHNlOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRDYWNoZU1vZGVsKGlu
dCkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MTQwNSkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDA5LTExLTI1ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTVkcg
YW5pbWF0aW9uIHRlc3QgZnJhbWV3b3JrIHdpdGggJ3NuYXBzaG90JyBmdW5jdGlvbmFsaXR5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTg5NworCisg
ICAgICAgIEFkZCBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucyBkaXJlY3RvcnksIGNvbnRhaW5p
bmcgYSBuZXcKKyAgICAgICAgZnJhbWV3b3JrIGZvciBTVkcgYW5pbWF0aW9uIHRlc3Qgd2l0aCBz
YW1wbGluZyBhdCBjZXJ0YWluIHRpbWVzLgorCisgICAgICAgIEFkZGVkIG9uZSBleGFtcGxlIHRl
c3QsIHdoaWNoIHdpbGwgYmUgZXh0ZW5kZWQgc29vbiB0byBjb3ZlciBhbmltVmFsCisgICAgICAg
IHN1cHBvcnQsIG9uY2UgYmFzaWMgc3VwcG9ydCBoYXMgYmVlbiBpbXBsZW1lbnRlZC4KKworICAg
ICAgICAqIHN2Zy9hbmltYXRpb25zOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9h
bmltVmFsLWJhc2ljcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hbmltYXRp
b25zL2FuaW1WYWwtYmFzaWNzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hbmltYXRpb25z
L3Jlc291cmNlczogQWRkZWQuCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvcmVzb3VyY2VzL1NW
R0FuaW1hdGlvblRlc3RDYXNlLmpzOiBBZGRlZC4KKyAgICAgICAgKGlzQ2xvc2VFbm91Z2gpOgor
ICAgICAgICAobW92ZUFuaW1hdGlvblRpbWVsaW5lQW5kU2FtcGxlKToKKyAgICAgICAgKHN0YXJ0
VGVzdCk6CisgICAgICAgIChzYW1wbGVBbmltYXRpb24pOgorICAgICAgICAocnVuQW5pbWF0aW9u
VGVzdCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbDogQWRkZWQu
CisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL2FuaW1WYWwtYmFzaWNzLmpz
OiBBZGRlZC4KKyAgICAgICAgKHNhbXBsZTEpOgorICAgICAgICAoc2FtcGxlMik6CisgICAgICAg
IChzYW1wbGUzKToKKyAgICAgICAgKGV4ZWN1dGVUZXN0KToKKwogMjAwOS0xMS0yNSAgQ3NhYmEg
T3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gQXVkaW8gcmVs
YXRlZCBsYXlvdXQgdGVzdHMgYXJlIGZhaWxpbmcgb24gdGhlIGJ1aWxkYm90CkluZGV4OiBMYXlv
dXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9hbmltVmFsLWJhc2ljcy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvYW5pbVZhbC1iYXNpY3MtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvYW5pbVZh
bC1iYXNpY3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACitTVkcg
MS4xIGR5bmFtaWMgYW5pbWF0aW9uIHRlc3RzCisKK1RyaXZpYWwgYW5pbVZhbCB0ZXN0Y2FzZSwg
dG8gc2VlIHdoZXRlciB3ZSBzdXBwb3J0IGl0IGF0IGFsbC4gU2hvdWxkIHJlc3VsdCBpbiBhIDIw
MHgyMDAgcmVjdCBhbmQgb25seSBQQVNTIG1lc3NhZ2VzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIHJlY3Qud2lkdGguYW5pbVZhbC52YWx1ZSBpcyAyMDAKK1BBU1MgcmVj
dC53aWR0aC5iYXNlVmFsLnZhbHVlIGlzIDIwMAorUEFTUyByZWN0LndpZHRoLmFuaW1WYWwudmFs
dWUgaXMgMTUwCitQQVNTIHJlY3Qud2lkdGguYmFzZVZhbC52YWx1ZSBpcyAxNTAKK1BBU1MgcmVj
dC53aWR0aC5hbmltVmFsLnZhbHVlIGlzIGFsbW9zdCAxMDAsIGp1c3QgYmVmb3JlLWVuZAorUEFT
UyByZWN0LndpZHRoLmJhc2VWYWwudmFsdWUgaXMgYWxtb3N0IDEwMCwganVzdCBiZWZvcmUtZW5k
CitQQVNTIHJlY3Qud2lkdGguYW5pbVZhbC52YWx1ZSBpcyAyMDAKK1BBU1MgcmVjdC53aWR0aC5i
YXNlVmFsLnZhbHVlIGlzIDIwMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2FuaW1WYWwt
YmFzaWNzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvYW5p
bVZhbC1iYXNpY3MuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRp
b25zL2FuaW1WYWwtYmFzaWNzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZHluYW1pYy11cGRh
dGVzL3Jlc291cmNlcy9TVkdUZXN0Q2FzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL1NWR0FuaW1hdGlvblRlc3RDYXNlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGgxPlNWRyAxLjEgZHluYW1pYyBhbmltYXRpb24gdGVzdHM8L2gxPgorPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvYW5pbVZhbC1iYXNpY3MuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvcmVzb3VyY2VzL1NWR0FuaW1hdGlvblRl
c3RDYXNlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3Jlc291
cmNlcy9TVkdBbmltYXRpb25UZXN0Q2FzZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L3N2Zy9hbmltYXRpb25zL3Jlc291cmNlcy9TVkdBbmltYXRpb25UZXN0Q2FzZS5qcwkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw3OCBAQAorLy8gSW5zcGlyZWQgYnkgTGF5b3V0ZXN0cy9hbmltYXRp
b25zL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanMKKy8vIE1vZGlmaWVkIHRvIHdvcmsgd2l0aCBT
VkcgYW5kIHRvZ2V0aGVyIHdpdGggTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNv
dXJjZXMvU1ZHVGVzdENhc2UuanMKKworZnVuY3Rpb24gaXNDbG9zZUVub3VnaChhY3R1YWwsIGRl
c2lyZWQsIHRvbGVyYW5jZSkKK3sKKyAgICB2YXIgZGlmZiA9IE1hdGguYWJzKGFjdHVhbCAtIGRl
c2lyZWQpOworICAgIHJldHVybiBkaWZmIDw9IHRvbGVyYW5jZTsKK30KKworZnVuY3Rpb24gbW92
ZUFuaW1hdGlvblRpbWVsaW5lQW5kU2FtcGxlKGluZGV4KQoreworICAgIHZhciBhbmltYXRpb25J
ZCA9IGV4cGVjdGVkUmVzdWx0c1tpbmRleF1bMF07CisgICAgdmFyIHRpbWUgPSBleHBlY3RlZFJl
c3VsdHNbaW5kZXhdWzFdOworICAgIHZhciBlbGVtZW50SWQgPSBleHBlY3RlZFJlc3VsdHNbaW5k
ZXhdWzJdOworICAgIHZhciBzYW1wbGVDYWxsYmFjayA9IGV4cGVjdGVkUmVzdWx0c1tpbmRleF1b
M107CisKKyAgICBpZiAoIWxheW91dFRlc3RDb250cm9sbGVyLnNhbXBsZVNWR0FuaW1hdGlvbkZv
ckVsZW1lbnRBdFRpbWUoYW5pbWF0aW9uSWQsIHRpbWUsIGVsZW1lbnRJZCkpIHsKKyAgICAgICAg
dGVzdEZhaWxlZCgiYW5pbWF0aW9uIFwiIiArIGFuaW1hdGlvbklkICsgIlwiIGlzIG5vdCBydW5u
aW5nIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzYW1wbGVDYWxsYmFjaygpOwor
fQorCit2YXIgY3VycmVudFRlc3QgPSAwOwordmFyIGV4cGVjdGVkUmVzdWx0czsKKworZnVuY3Rp
b24gc3RhcnRUZXN0KGNhbGxiYWNrKSB7CisgICAgaWYgKGN1cnJlbnRUZXN0ID4gMCkKKyAgICAg
ICAgdGhyb3coIk5vdCBhbGxvd2VkIHRvIGNhbGwgc3RhcnRUZXN0KCkgdHdpY2UiKTsKKworICAg
IHRlc3RDb3VudCA9IGV4cGVjdGVkUmVzdWx0cy5sZW5ndGg7CisgICAgY3VycmVudFRlc3QgPSAw
OworCisgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICBjYWxsYmFjaygpOworCisgICAgLy8gSW1t
ZWRpYXRlbHkgc2FtcGxlLCBpZiB0aGUgZmlyc3QgdGltZSBpcyAwCisgICAgaWYgKGV4cGVjdGVk
UmVzdWx0c1swXVsxXSA9PSAnMCcpIHsKKyAgICAgICAgZXhwZWN0ZWRSZXN1bHRzWzBdWzNdKCk7
CisgICAgICAgICsrY3VycmVudFRlc3Q7CisgICAgfQorCisgICAgLy8gV2UgbWF5IGhhdmUganVz
dCBzYW1wbGVkIG9uIGFuaW1hdGlvbi1iZWdpbiwgZ2l2ZSB0aGUKKyAgICAvLyBkb2N1bWVudCBz
b21lIHRpbWUgdG8gaW52b2tlIHRoZSBTVkcgYW5pbWF0aW9uLgorICAgIC8vIElmIHdlIGZpeCB0
aGUgYW5pbWF0aW9uIHRvIHN0YXJ0IHdpdGggdGhlIFNWR0xvYWQgZXZlbnQKKyAgICAvLyBub3Qg
b24gaW1wbGljaXRDbG9zZSgpLCB3ZSBjYW4gZXZlbiBhdm9pZCB0aGlzIGhhY2suCisgICAgd2lu
ZG93LnNldFRpbWVvdXQoc2FtcGxlQW5pbWF0aW9uLCAwKTsKK30KKworZnVuY3Rpb24gc2FtcGxl
QW5pbWF0aW9uKCkgeworICAgIGlmIChjdXJyZW50VGVzdCA9PSBleHBlY3RlZFJlc3VsdHMubGVu
Z3RoKSB7CisgICAgICAgIGNvbXBsZXRlVGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgbW92ZUFuaW1hdGlvblRpbWVsaW5lQW5kU2FtcGxlKGN1cnJlbnRUZXN0KTsKKyAgICAr
K2N1cnJlbnRUZXN0OworCisgICAgc2FtcGxlQW5pbWF0aW9uKCk7Cit9CisKK3ZhciBoYXNQYXVz
ZUFuaW1hdGlvbkFQSTsKK3ZhciBnbG9iYWxDYWxsYmFjazsKKworZnVuY3Rpb24gcnVuQW5pbWF0
aW9uVGVzdChleHBlY3RlZCwgY2FsbGJhY2spCit7CisgICAgaWYgKCFleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3coIkV4cGVjdGVkIHJlc3VsdHMgYXJlIG1pc3NpbmchIik7CisKKyAgICBleHBlY3Rl
ZFJlc3VsdHMgPSBleHBlY3RlZDsKKworICAgIGhhc1BhdXNlQW5pbWF0aW9uQVBJID0gKCdsYXlv
dXRUZXN0Q29udHJvbGxlcicgaW4gd2luZG93KSAmJiAoJ3NhbXBsZVNWR0FuaW1hdGlvbkZvckVs
ZW1lbnRBdFRpbWUnIGluIGxheW91dFRlc3RDb250cm9sbGVyKTsKKyAgICBpZiAoIWhhc1BhdXNl
QW5pbWF0aW9uQVBJKQorICAgICAgICB0aHJvdygiU1ZHIGFuaW1hdGlvbiBwYXVzZSBBUEkgbWlz
c2luZyEiKTsKKworICAgIHN0YXJ0VGVzdChjYWxsYmFjayk7Cit9CkluZGV4OiBMYXlvdXRUZXN0
cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9U
RU1QTEFURS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJj
ZXMvU1ZHVGVzdENhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9TVkdB
bmltYXRpb25UZXN0Q2FzZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxoMT5TVkcg
MS4xIGR5bmFtaWMgYW5pbWF0aW9uIHRlc3RzPC9oMT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iWU9VUl9KU19GSUxFX0hF
UkUiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2Fu
aW1hdGlvbnMvc2NyaXB0LXRlc3RzL2FuaW1WYWwtYmFzaWNzLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9hbmltVmFsLWJhc2ljcy5qcwko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9h
bmltVmFsLWJhc2ljcy5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MyBAQAorLy8gRklYTUU6
IFRoaXMgdGVzdCB3aWxsIGJlY29tZSB1c2VmdWwgb25jZSB3ZSBoYXZlIGJhc2ljIGFuaW1WYWwg
c3VwcG9ydC4gRm9yIG5vdyBpdCdzIGp1c3QgdGVzdGluZyB0aGUgU1ZHIGFuaW1hdGlvbiB0ZXN0
IGluZnJhc3RydWN0dXJlCitkZXNjcmlwdGlvbigiVHJpdmlhbCBhbmltVmFsIHRlc3RjYXNlLCB0
byBzZWUgd2hldGVyIHdlIHN1cHBvcnQgaXQgYXQgYWxsLiBTaG91bGQgcmVzdWx0IGluIGEgMjAw
eDIwMCByZWN0IGFuZCBvbmx5IFBBU1MgbWVzc2FnZXMiKTsKK2NyZWF0ZVNWR1Rlc3RDYXNlKCk7
CisKKy8vIFNldHVwIHRlc3QgZG9jdW1lbnQKK3ZhciByZWN0ID0gY3JlYXRlU1ZHRWxlbWVudCgi
cmVjdCIpOworcmVjdC5zZXRBdHRyaWJ1dGUoImlkIiwgInJlY3QiKTsKK3JlY3Quc2V0QXR0cmli
dXRlKCJ3aWR0aCIsICIyMDAiKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJoZWlnaHQiLCAiMjAwIik7
CityZWN0LnNldEF0dHJpYnV0ZSgiZmlsbCIsICJncmVlbiIpOworcmVjdC5zZXRBdHRyaWJ1dGUo
Im9uY2xpY2siLCAiZXhlY3V0ZVRlc3QoKSIpOworCit2YXIgYW5pbWF0ZSA9IGNyZWF0ZVNWR0Vs
ZW1lbnQoImFuaW1hdGUiKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJpZCIsICJhbmltYXRpb24i
KTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJhdHRyaWJ1dGVOYW1lIiwgIndpZHRoIik7Cithbmlt
YXRlLnNldEF0dHJpYnV0ZSgiZnJvbSIsICIyMDAiKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJ0
byIsICIxMDAiKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJiZWdpbiIsICJjbGljayIpOworYW5p
bWF0ZS5zZXRBdHRyaWJ1dGUoImR1ciIsICI0cyIpOworcmVjdC5hcHBlbmRDaGlsZChhbmltYXRl
KTsKK3Jvb3RTVkdFbGVtZW50LmFwcGVuZENoaWxkKHJlY3QpOworCisvLyBTZXR1cCBhbmltYXRp
b24gdGVzdAorZnVuY3Rpb24gc2FtcGxlMSgpIHsKKyAgICAvLyBDaGVjayBpbml0aWFsL2VuZCBj
b25kaXRpb25zCisgICAgc2hvdWxkQmUoInJlY3Qud2lkdGguYW5pbVZhbC52YWx1ZSIsICIyMDAi
KTsKKyAgICBzaG91bGRCZSgicmVjdC53aWR0aC5iYXNlVmFsLnZhbHVlIiwgIjIwMCIpOworfQor
CitmdW5jdGlvbiBzYW1wbGUyKCkgeworICAgIC8vIEZJWE1FOiBBZGQgYW5pbVZhbCBzdXBwb3J0
LiBBbmltYXRlcyBiYXNlVmFsIGF0IHRoZSBtb21lbnQuCisgICAgLy8gc2hvdWxkQmUoInJlY3Qu
d2lkdGguYW5pbVZhbC52YWx1ZSIsICIxNTAiKTsKKyAgICAvLyBzaG91bGRCZSgicmVjdC53aWR0
aC5iYXNlVmFsLnZhbHVlIiwgIjIwMCIpOworCisgICAgLy8gQ2hlY2sgaGFsZi10aW1lIGNvbmRp
dGlvbnMKKyAgICBzaG91bGRCZSgicmVjdC53aWR0aC5hbmltVmFsLnZhbHVlIiwgIjE1MCIpOwor
ICAgIHNob3VsZEJlKCJyZWN0LndpZHRoLmJhc2VWYWwudmFsdWUiLCAiMTUwIik7Cit9CisKK2Z1
bmN0aW9uIHNhbXBsZTMoKSB7CisgICAgLy8gRklYTUU6IEFkZCBhbmltVmFsIHN1cHBvcnQuIEFu
aW1hdGVzIGJhc2VWYWwgYXQgdGhlIG1vbWVudC4KKyAgICAvLyBzaG91bGRCZSgicmVjdC53aWR0
aC5hbmltVmFsLnZhbHVlIiwgIjEwMCIpOworICAgIC8vIHNob3VsZEJlKCJyZWN0LndpZHRoLmJh
c2VWYWwudmFsdWUiLCAiMjAwIik7CisKKyAgICAvLyBDaGVjayBqdXN0IGJlZm9yZS1lbmQgY29u
ZGl0aW9ucworICAgIHZhciBvayA9IGlzQ2xvc2VFbm91Z2gocmVjdC53aWR0aC5hbmltVmFsLnZh
bHVlLCAxMDAsIDAuMDEpOworICAgIGlmIChvaykKKyAgICAgICAgdGVzdFBhc3NlZCgicmVjdC53
aWR0aC5hbmltVmFsLnZhbHVlIGlzIGFsbW9zdCAxMDAsIGp1c3QgYmVmb3JlLWVuZCIpOworICAg
IGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZCgicmVjdC53aWR0aC5hbmltVmFsLnZhbHVlIGlzIE5P
VCBhbG1vc3QgMTAwLCBhcyBleHBlY3RlZCIpOworCisgICAgb2sgPSBpc0Nsb3NlRW5vdWdoKHJl
Y3Qud2lkdGguYmFzZVZhbC52YWx1ZSwgMTAwLCAwLjAxKTsKKyAgICBpZiAob2spCisgICAgICAg
IHRlc3RQYXNzZWQoInJlY3Qud2lkdGguYmFzZVZhbC52YWx1ZSBpcyBhbG1vc3QgMTAwLCBqdXN0
IGJlZm9yZS1lbmQiKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoInJlY3Qud2lkdGgu
YmFzZVZhbC52YWx1ZSBpcyBOT1QgYWxtb3N0IDEwMCwgYXMgZXhwZWN0ZWQiKTsKK30KKworZnVu
Y3Rpb24gZXhlY3V0ZVRlc3QoKSB7CisgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCisgICAg
ICAgIC8vIFthbmltYXRpb25JZCwgdGltZSwgZWxlbWVudElkLCBzYW1wbGVDYWxsYmFja10KKyAg
ICAgICAgWyJhbmltYXRpb24iLCAwLjAsICAgICJyZWN0Iiwgc2FtcGxlMV0sCisgICAgICAgIFsi
YW5pbWF0aW9uIiwgMi4wLCAgICAicmVjdCIsIHNhbXBsZTJdLAorICAgICAgICBbImFuaW1hdGlv
biIsIDMuOTk5OSwgInJlY3QiLCBzYW1wbGUzXSwKKyAgICAgICAgWyJhbmltYXRpb24iLCA0LjAg
LCAgICJyZWN0Iiwgc2FtcGxlMV0KKyAgICBdOworCisgICAgcnVuQW5pbWF0aW9uVGVzdChleHBl
Y3RlZFZhbHVlcyk7Cit9CisKKy8vIEJlZ2luIHRlc3QgYXN5bmMKK3dpbmRvdy5zZXRUaW1lb3V0
KCJ0cmlnZ2VyVXBkYXRlKDE1LCAzMCkiLCAwKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>