<?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>50695</bug_id>
          
          <creation_ts>2010-12-08 10:06:48 -0800</creation_ts>
          <short_desc>Web Inspector: Remove FileSystem support from the inspector.</short_desc>
          <delta_ts>2011-02-10 09:44:05 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>318852</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-12-08 10:06:48 -0800</bug_when>
    <thetext>As discussed with Pavel I&apos;m removing FileSystem related code from inspector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318861</commentid>
    <comment_count>1</comment_count>
      <attachid>75921</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-12-08 10:16:59 -0800</bug_when>
    <thetext>Created attachment 75921
[patch] initial version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318963</commentid>
    <comment_count>2</comment_count>
      <attachid>75921</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-08 13:07:17 -0800</bug_when>
    <thetext>Comment on attachment 75921
[patch] initial version

Guys, could you provide some context since even those sitting next to you in the same room don&apos;t know what are your the plans on this feature?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347284</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-08 05:04:37 -0800</bug_when>
    <thetext>It sounds like Filesystem API is going to be changed significantly and inspector support as is won&apos;t make any sense. Hence, let us nuke it until we know what exactly we want from it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348332</commentid>
    <comment_count>4</comment_count>
      <attachid>81825</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-09 09:51:00 -0800</bug_when>
    <thetext>Created attachment 81825
[PATCH] Proposed change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348373</commentid>
    <comment_count>5</comment_count>
      <attachid>81825</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-02-09 10:45:38 -0800</bug_when>
    <thetext>Comment on attachment 81825
[PATCH] Proposed change.

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

&gt; Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp:65
&gt; -    DocumentLoader* documentLoader = m_inspectorAgent-&gt;inspectedPage()-&gt;mainFrame()-&gt;loader()-&gt;documentLoader();
&gt; -    if (documentLoader) {
&gt; -        ApplicationCacheHost* host = documentLoader-&gt;applicationCacheHost();
&gt; +    if (m_documentLoader) {
&gt; +        ApplicationCacheHost* host = m_documentLoader-&gt;applicationCacheHost();

What about the lifetime of documentLoader instance?

Others looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349106</commentid>
    <comment_count>6</comment_count>
      <attachid>81825</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-02-10 08:48:04 -0800</bug_when>
    <thetext>Comment on attachment 81825
[PATCH] Proposed change.

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

&gt; Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp:64
&gt; +    if (m_documentLoader) {

Main frame may change on navigation and the loader will change as well. r- for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349110</commentid>
    <comment_count>7</comment_count>
      <attachid>81987</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-10 09:08:17 -0800</bug_when>
    <thetext>Created attachment 81987
[PATCH] Review comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349111</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-10 09:08:39 -0800</bug_when>
    <thetext>&gt; 
&gt; What about the lifetime of documentLoader instance?
&gt; 

Good catch, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349112</commentid>
    <comment_count>9</comment_count>
      <attachid>81987</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-02-10 09:10:24 -0800</bug_when>
    <thetext>Comment on attachment 81987
[PATCH] Review comments addressed.

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

&gt; Source/WebCore/inspector/InspectorAgent.cpp:536
&gt; +        m_applicationCacheAgent-&gt;didCommitLoad(loader);

You need to call this for main frame loader only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349114</commentid>
    <comment_count>10</comment_count>
      <attachid>81988</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-10 09:11:07 -0800</bug_when>
    <thetext>Created attachment 81988
[PATCH] Review comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349121</commentid>
    <comment_count>11</comment_count>
      <attachid>81990</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-10 09:15:12 -0800</bug_when>
    <thetext>Created attachment 81990
[PATCH] Review comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349137</commentid>
    <comment_count>12</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-10 09:44:05 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
        D       Source/WebCore/inspector/InspectorFileSystemAgent.cpp
        D       Source/WebCore/inspector/InspectorFileSystemAgent.h
        D       Source/WebCore/inspector/front-end/FileSystemView.js
        M       Source/WebCore/CMakeLists.txt
        M       Source/WebCore/ChangeLog
        M       Source/WebCore/GNUmakefile.am
        M       Source/WebCore/WebCore.gypi
        M       Source/WebCore/WebCore.pro
        M       Source/WebCore/WebCore.vcproj/WebCore.vcproj
        M       Source/WebCore/WebCore.xcodeproj/project.pbxproj
        M       Source/WebCore/inspector/Inspector.idl
        M       Source/WebCore/inspector/InspectorAgent.cpp
        M       Source/WebCore/inspector/InspectorAgent.h
        M       Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp
        M       Source/WebCore/inspector/InspectorApplicationCacheAgent.h
        M       Source/WebCore/inspector/InspectorInstrumentation.cpp
        M       Source/WebCore/inspector/front-end/ResourcesPanel.js
        M       Source/WebCore/inspector/front-end/Settings.js
        M       Source/WebCore/inspector/front-end/WebKit.qrc
        M       Source/WebCore/inspector/front-end/inspector.html
Committed r78234</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75921</attachid>
            <date>2010-12-08 10:16:59 -0800</date>
            <delta_ts>2011-02-09 09:51:00 -0800</delta_ts>
            <desc>[patch] initial version</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>41993</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDU0YjFmODkuLmM5MTI2ODUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTE0MSw3ICsxMTQxLDYgQEAg
U0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVz
b3VyY2UuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCi0gICAgaW5zcGVjdG9yL0lu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNw
cAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmRpZmYgLS1naXQg
YS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGY1MzdiYzguLmEz
YTQ2NDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTAtMTItMDggIElseWEgVGlraG9ub3Zza3kgIDxsb2lz
bG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92ZSBGaWxlU3lzdGVtIHN1cHBvcnQgZnJvbSB0
aGUgaW5zcGVjdG9yLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MDY5NQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05V
bWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUu
cHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5wbToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVsZWFzZUZyb250ZW5kTGlmZXRp
bWVBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oOiBSZW1vdmVk
LgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanM6IFJlbW92
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuYWRkRG9jdW1lbnRVUkwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisKIDIw
MTAtMTItMDggIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEJldGggRGFraW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAzNDAzOGQ3Li41ZDZhNjViIDEwMDY0NAotLS0g
YS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAg
LTE5MTcsOCArMTkxNyw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
U3RvcmFnZVJlc291cmNlLmNwcCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZVJlc291cmNlLmggXAotCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudC5jcHAgXAotCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5o
IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIFwKIAlXZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBcCiAJV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIFwKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNTg4NGJm
Mi4uM2RkZjk0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKQEAgLTIwMDIsOCArMjAwMiw2IEBACiAgICAgICAgICAgICAnaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NU3RvcmFnZVJlc291cmNlLmgnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQuY3BwJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5o
JywKQEAgLTQ2MTUsNyArNDYxMyw2IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9FeHRlbnNpb25QYW5lbC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9F
eHRlbnNpb25SZWdpc3RyeVN0dWIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvRXh0ZW5zaW9uU2VydmVyLmpzJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5k
L0ZpbGVTeXN0ZW1WaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0Zv
bnRWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0dvVG9MaW5lRGlh
bG9nLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hBUkVudHJ5LmpzJywK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmlu
ZGV4IDQwYTAxNmMuLmI3MTY0ZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTAyOSw3ICsxMDI5LDYgQEAgU09VUkNFUyArPSBc
CiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIFwKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZVJlc291cmNlLmNwcCBcCi0gICAgaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBc
CiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgXAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIFwKQEAgLTE5MjIsNyArMTkyMSw2IEBAIEhF
QURFUlMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggXAog
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggXAogICAgIGluc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCBcCi0gICAgaW5zcGVjdG9yL0luc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQu
aCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBcCiAgICAg
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDgxMzJiYzUuLjA4ZGViY2MgMTAwNzU1Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNjQ5NzAsMTQgKzY0OTcwLDYgQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudC5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCIKLQkJCQk+
Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXElu
c3BlY3RvckZyb250ZW5kQ2xpZW50LmgiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ZjE2MTZjLi4yMjBiOGY0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTA0LDggKzkwNCw2
IEBACiAJCTM3RjgxOEZEMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RjgxOEZCMEQ2
NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzN0Y4MThGRTBENjU3NjA2MDA1RTFGMDUg
LyogV2ViQ29yZVVSTFJlc3BvbnNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzdGODE4RkMwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNw
b25zZS5tbSAqLzsgfTsKIAkJMzdGRDQyOTgxMTgzNjg0NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExp
bWl0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0ZE
NDI5NzExODM2ODQ2MDA5M0MwMjkgLyogVHJlZURlcHRoTGltaXQuaCAqLzsgfTsKLQkJMzg4OEY2
RUUxMjhDOTg4OTAwMENBOEUwIC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzODg4RjZFQzEyOEM5ODg5
MDAwQ0E4RTAgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCAqLzsgfTsKLQkJMzg4OEY2
RUYxMjhDOTg4OTAwMENBOEUwIC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzg4OEY2RUQxMjhDOTg4OTAw
MENBOEUwIC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oICovOyB9OwogCQkzQUM2NDhCMjEy
OUUxNDY1MDBDM0VCMjUgLyogRWRpdGluZ0JvdW5kYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQUM2NDhCMTEyOUUxNDY1MDBDM0VCMjUgLyogRWRp
dGluZ0JvdW5kYXJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDEwMDJDQ0QwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwMDJDQ0Iw
RjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovOyB9OwogCQk0MTAwMkND
RTBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDAyQ0NDMEY2NkVERUYwMDlFNjYw
RCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovOyB9OwpAQCAtNzAzMiw4ICs3MDMwLDYgQEAK
IAkJMzdGODE4RkMwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVVUkxSZXNwb25zZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdGQzk2REExMTA0RUQ3MTAwM0UxRkFE
IC8qIFRyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzdGRDQyOTcxMTgzNjg0NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyZWVEZXB0aExpbWl0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM4ODhGNkVDMTI4Qzk4ODkwMDBDQThFMCAvKiBJ
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMzg4OEY2RUQxMjhDOTg4OTAwMENBOEUwIC8qIEluc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0FDNjQ4QjExMjlF
MTQ2NTAwQzNFQjI1IC8qIEVkaXRpbmdCb3VuZGFyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFZGl0aW5nQm91bmRhcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDEwMDJDQ0IwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEwMDJDQ0MwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlw
dEZ1bmN0aW9uQ2FsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
Y3JpcHRGdW5jdGlvbkNhbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI0
MzAsOCArMTI0MjYsNiBAQAogCQkJCTdBMjQ1ODdBMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0
b3JET01BZ2VudC5oICovLAogCQkJCTQxRjA2MTczMEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0
b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwICovLAogCQkJCTQxRjA2MTcyMEY1RjAwQUMwMEEwN0VB
QyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCAqLywKLQkJCQkzODg4RjZFQzEyOEM5
ODg5MDAwQ0E4RTAgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCAqLywKLQkJCQkzODg4
RjZFRDEyOEM5ODg5MDAwQ0E4RTAgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmggKi8sCiAJ
CQkJRjM0NEM3MTIxMTI1QjgyQzAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50Lmgg
Ki8sCiAJCQkJRjM0NEM3NTcxMTI5NEZGNjAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuY3BwICovLAogCQkJCUYzNDRDNzUyMTEyOTREOUQwMEYyNkVFRSAvKiBJbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsLmggKi8sCkBAIC0yMDA0Niw3ICsyMDA0MCw2IEBACiAJCQkJ
RjMzRjA1M0UxMjBCMERBNTAwRTU3NDNBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdBMjQ1ODdDMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01B
Z2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMDYxNzQwRjVGMDBBQzAwQTA3RUFDIC8qIElu
c3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzg4OEY2RUYx
MjhDOTg4OTAwMENBOEUwIC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRjM0NEM3MTQxMTI1QjgyQzAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzQ0Qzc1MzExMjk0RDlEMDBGMjZFRUUgLyogSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EwRTc3MEYx
MEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yMjY4Myw3ICsyMjY3Niw2IEBACiAJCQkJRjMzRjA1M0QxMjBCMERBNTAwRTU3NDNBIC8q
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0EyNDU4N0Ix
MDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxRjA2MTc1MEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3Vy
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMzg4OEY2RUUxMjhDOTg4OTAwMENBOEUwIC8qIElu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0RjRGNUZGQjEx
Q0JEMkUxMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRjM0NEM3NTgxMTI5NEZGNjAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0EwRTc3MEUxMEMwMEE4ODAwQTAyNzZFIC8qIElu
c3BlY3RvckZyb250ZW5kSG9zdC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0gYi9XZWJDb3JlL2luc3BlY3Rv
ci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCmluZGV4IDZkMmUzYzQuLjViMGFmOWUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQpAQCAtNDgsMTEgKzQ4
LDYgQEAgJHR5cGVUcmFuc2Zvcm17IkFwcGxpY2F0aW9uQ2FjaGUifSA9IHsKICAgICAiaGVhZGVy
IiA9PiAiSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgiLAogICAgICJkb21haW5BY2Nl
c3NvciIgPT4gIm1faW5zcGVjdG9yQ29udHJvbGxlci0+YXBwbGljYXRpb25DYWNoZUFnZW50KCki
LAogfTsKLSR0eXBlVHJhbnNmb3JteyJGaWxlU3lzdGVtIn0gPSB7Ci0gICAgImZvcndhcmQiID0+
ICJJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQiLAotICAgICJoZWFkZXIiID0+ICJJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQuaCIsCi0gICAgImRvbWFpbkFjY2Vzc29yIiA9PiAibV9pbnNwZWN0b3JD
b250cm9sbGVyLT5maWxlU3lzdGVtQWdlbnQoKSIsCi19OwogJHR5cGVUcmFuc2Zvcm17IlByb2Zp
bGVyIn0gPSB7CiAgICAgImZvcndhcmQiID0+ICJJbnNwZWN0b3JQcm9maWxlckFnZW50IiwKICAg
ICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIiwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuaWRsCmluZGV4IDkzMmZhOTAuLjYwMmJjYTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5pZGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbApA
QCAtNzksMTIgKzc5LDEyIEBAIG1vZHVsZSBjb3JlIHsKICNlbmRpZgogI2lmIGRlZmluZWQoRU5B
QkxFX0RPTV9TVE9SQUdFKSAmJiBFTkFCTEVfRE9NX1NUT1JBR0UKICAgICAgICAgW25vdGlmeV0g
dm9pZCBhZGRET01TdG9yYWdlKG91dCBPYmplY3Qgc3RvcmFnZSk7Ci0gICAgICAgIFtub3RpZnld
IHZvaWQgdXBkYXRlRE9NU3RvcmFnZShvdXQgaW50IHN0b3JhZ2VJZCk7CisgICAgICAgIFtub3Rp
ZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQgdXBkYXRlRE9NU3RvcmFnZShvdXQgaW50IHN0b3Jh
Z2VJZCk7CiAgICAgICAgIFtub3RpZnldIHZvaWQgc2VsZWN0RE9NU3RvcmFnZShvdXQgaW50IHN0
b3JhZ2VJZCk7CiAjZW5kaWYKICNpZiBkZWZpbmVkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNB
VElPTlMpICYmIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMKLSAgICAgICAgW25vdGlm
eV0gdm9pZCB1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKG91dCBpbnQgc3RhdHVzKTsKLSAg
ICAgICAgW25vdGlmeV0gdm9pZCB1cGRhdGVOZXR3b3JrU3RhdGUob3V0IGJvb2xlYW4gaXNOb3dP
bmxpbmUpOworICAgICAgICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIHVwZGF0ZUFw
cGxpY2F0aW9uQ2FjaGVTdGF0dXMob3V0IGludCBzdGF0dXMpOworICAgICAgICBbbm90aWZ5LCBk
b21haW49UmVzb3VyY2VzXSB2b2lkIHVwZGF0ZU5ldHdvcmtTdGF0ZShvdXQgYm9vbGVhbiBpc05v
d09ubGluZSk7CiAjZW5kaWYKICNpZiBkZWZpbmVkKEVOQUJMRV9XT1JLRVJTKSAmJiBFTkFCTEVf
V09SS0VSUwogICAgICAgICBbbm90aWZ5XSB2b2lkIGRpZENyZWF0ZVdvcmtlcihvdXQgbG9uZyBp
ZCwgb3V0IFN0cmluZyB1cmwsIG91dCBib29sZWFuIGlzU2hhcmVkKTsKQEAgLTIxOCwxNCArMjE4
LDYgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbZG9tYWluPUFwcGxpY2F0aW9uQ2FjaGVdIHZv
aWQgZ2V0QXBwbGljYXRpb25DYWNoZXMob3V0IFZhbHVlIGFwcGxpY2F0aW9uQ2FjaGVzKTsKICNl
bmRpZgogCi0jaWYgZGVmaW5lZChFTkFCTEVfRklMRV9TWVNURU0pICYmIEVOQUJMRV9GSUxFX1NZ
U1RFTQotICAgICAgICBbZG9tYWluPUZpbGVTeXN0ZW1dIHZvaWQgZ2V0RmlsZVN5c3RlbVBhdGhB
c3luYyhpbiB1bnNpZ25lZCBpbnQgdHlwZSwgaW4gU3RyaW5nIG9yaWdpbik7Ci0gICAgICAgIFtk
b21haW49RmlsZVN5c3RlbV0gdm9pZCByZXZlYWxGb2xkZXJJbk9TKGluIFN0cmluZyBwYXRoKTsK
LSAgICAgICAgW25vdGlmeV0gdm9pZCBkaWRHZXRGaWxlU3lzdGVtUGF0aChvdXQgU3RyaW5nIHJv
b3QsIG91dCBpbnQgdHlwZSwgb3V0IFN0cmluZyBvcmlnaW4pOwotICAgICAgICBbbm90aWZ5XSB2
b2lkIGRpZEdldEZpbGVTeXN0ZW1FcnJvcihvdXQgaW50IHR5cGUsIG91dCBTdHJpbmcgb3JpZ2lu
KTsKLSAgICAgICAgW25vdGlmeV0gdm9pZCBkaWRHZXRGaWxlU3lzdGVtRGlzYWJsZWQoKTsKLSNl
bmRpZgotCiAgICAgICAgIFtkb21haW49QmFja2VuZF0gdm9pZCByZWxlYXNlV3JhcHBlck9iamVj
dEdyb3VwKGluIGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCwgaW4gU3RyaW5nIG9iamVjdEdyb3VwKTsK
ICAgICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9u
dGVuZChpbiBsb25nIHRlc3RDYWxsSWQsIGluIFN0cmluZyBqc29uUmVzdWx0KTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA2ZWFmODllLi5jYTI4NTRl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTExLDEw
ICsxMTEsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIgog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0jaW5jbHVkZSAiSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50LmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICNpbmNs
dWRlICJTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWEuaCIKQEAgLTQ5MiwxMCArNDg4
LDYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQogICAgIG1f
YXBwbGljYXRpb25DYWNoZUFnZW50ID0gbmV3IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dCh0aGlzLCBtX2Zyb250ZW5kLmdldCgpKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKEZJTEVfU1lT
VEVNKQotICAgIG1fZmlsZVN5c3RlbUFnZW50ID0gSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Ojpj
cmVhdGUodGhpcywgbV9mcm9udGVuZC5nZXQoKSk7Ci0jZW5kaWYKLSAgICAKICAgICBpZiAoIUlu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpCiAgICAgICAgIFNjcmlwdENv
bnRyb2xsZXI6OnNldENhcHR1cmVDYWxsU3RhY2tGb3JVbmNhdWdodEV4Y2VwdGlvbnModHJ1ZSk7
CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZENyZWF0ZWQoKTsKQEAgLTYw
MywxMiArNTk1LDYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZWxlYXNlRnJvbnRlbmRM
aWZldGltZUFnZW50cygpCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKICAg
ICBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jbGVhcigpOwogI2VuZGlmCi0KLSNpZiBFTkFCTEUo
RklMRV9TWVNURU0pCi0gICAgaWYgKG1fZmlsZVN5c3RlbUFnZW50KQotICAgICAgICBtX2ZpbGVT
eXN0ZW1BZ2VudC0+c3RvcCgpOyAKLSAgICAgICAgbV9maWxlU3lzdGVtQWdlbnQuY2xlYXIoKTsK
LSNlbmRpZgogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnBvcHVsYXRlU2NyaXB0T2Jq
ZWN0cygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggMDg2NWEz
YS4uOTliNWVhNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAt
OTEsMTAgKzkxLDYgQEAgY2xhc3MgU3RvcmFnZUFyZWE7CiBjbGFzcyBJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQ7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLWNsYXNz
IEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdFQl9TT0NL
RVRTKQogY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdDsKIGNsYXNzIFdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlOwpAQCAtMTg2LDEwICsxODIsNiBAQCBwdWJsaWM6CiAgICAgSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50KiBhcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSB7IHJldHVy
biBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudC5nZXQoKTsgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUo
RklMRV9TWVNURU0pCi0gICAgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KiBmaWxlU3lzdGVtQWdl
bnQoKSB7IHJldHVybiBtX2ZpbGVTeXN0ZW1BZ2VudC5nZXQoKTsgfQotI2VuZGlmIAotCiAgICAg
dm9pZCBtYWluUmVzb3VyY2VGaXJlZExvYWRFdmVudChEb2N1bWVudExvYWRlciosIGNvbnN0IEtV
UkwmKTsKICAgICB2b2lkIG1haW5SZXNvdXJjZUZpcmVkRE9NQ29udGVudEV2ZW50KERvY3VtZW50
TG9hZGVyKiwgY29uc3QgS1VSTCYpOwogCkBAIC0zNTEsMTAgKzM0Myw2IEBAIHByaXZhdGU6CiAg
ICAgT3duUHRyPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4gbV9hcHBsaWNhdGlvbkNh
Y2hlQWdlbnQ7CiAjZW5kaWYKICAgICAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgUmVm
UHRyPEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4gbV9maWxlU3lzdGVtQWdlbnQ7Ci0jZW5kaWYg
Ci0KICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlVG9Gb2N1czsKICAgICBSZWZQdHI8SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudD4gbV9yZXNvdXJjZUFnZW50OwogICAgIHVuc2lnbmVkIGxvbmcgbV9tYWlu
UmVzb3VyY2VJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhMGRmM2MuLjAw
MDAwMDAKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RP
UikgJiYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgi
Ci0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVk
ZSAiRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAi
RnJhbWVUcmVlLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgotI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiTG9jYWxGaWxlU3lzdGVtLmgiCi0jaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIElu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudENhbGxiYWNrcyA6IHB1YmxpYyBBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MgewotcHVibGljOgotICAgIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudENhbGxiYWNr
cyhJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQqIGFnZW50LCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCi0gICAgICAgIDogbV9hZ2VudChhZ2VudCkKLSAg
ICAgICAgLCBtX3R5cGUodHlwZSkKLSAgICAgICAgLCBtX29yaWdpbihvcmlnaW4pCi0gICAgeyAK
LSAgICB9Ci0KLSAgICB+SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Q2FsbGJhY2tzKCkKLSAgICB7
Ci0gICAgfQotCi0gICAgLy8gRmlsZVN5c3RlbUNhbGxiYWNrcyBpcyBvbmx5IHVzZWQgZm9yIGdl
dHRpbmcgZmlsZXN5c3RlbS4gQWxsIG90aGVyIG1ldGhvZHMgYXJlIGlycmVsZXZhbnQgYW5kIHdp
bGwgbm90IGJlIGNhbGxlZC4KLSAgICB2b2lkIGRpZFN1Y2NlZWQoKQotICAgIHsKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgdm9pZCBkaWRPcGVuRmlsZVN5c3Rl
bShjb25zdCBTdHJpbmcmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSkK
LSAgICB7Ci0gICAgICAgIC8vIEFnZW50IHdpbGwgYmUgYWxpdmUgZXZlbiBpZiBJbnNwZWN0b3JD
b250cm9sbGVyIGlzIGRlc3Ryb3llZCB1bnRpbCBjYWxsYmFjayBpcyBydW4uCi0gICAgICAgIG1f
YWdlbnQtPmRpZEdldEZpbGVTeXN0ZW1QYXRoKGZpbGVTeXN0ZW0tPnJvb3QoKSwgbV90eXBlLCBt
X29yaWdpbik7Ci0gICAgfQotCi0gICAgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1l
dGFkYXRhJikKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQot
ICAgIHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJ5KGNvbnN0IFN0cmluZyYsIGJvb2wpCi0gICAg
ewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRpZFJl
YWREaXJlY3RvcnlFbnRyaWVzKGJvb2wpCi0gICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRpZENyZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0cjxB
c3luY0ZpbGVXcml0ZXI+LCBsb25nIGxvbmcpCi0gICAgewotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBkaWRGYWlsKGludCkKLSAgICB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBJcyBpdCB1c2VmdWwgdG8gZ2l2ZSBiYWNrIHRoZSBjb2RlIHRvIEluc3Bl
Y3RvciBVST8KLSAgICAgICAgbV9hZ2VudC0+ZGlkR2V0RmlsZVN5c3RlbUVycm9yKG1fdHlwZSwg
bV9vcmlnaW4pOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50PiBtX2FnZW50OwotICAgIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSBtX3R5cGU7Ci0g
ICAgU3RyaW5nIG1fb3JpZ2luOwotfTsKLQotSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpJbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciwgSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQotICAgIDogbV9pbnNwZWN0b3JDb250
cm9sbGVyKGluc3BlY3RvckNvbnRyb2xsZXIpCi0gICAgLCBtX2Zyb250ZW5kKGZyb250ZW5kKQot
ewotfQotCi1JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6On5JbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQoKSB7IH0KLQotdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnN0b3AoKQotewotICAg
IG1faW5zcGVjdG9yQ29udHJvbGxlciA9IDA7Ci19Ci0KLSNpZiBQTEFURk9STShDSFJPTUlVTSkK
LXZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXZlYWxGb2xkZXJJbk9TKGNvbnN0IFN0
cmluZyYgcGF0aCkKLXsKLSAgICAvLyBGSVhNRTogUmVtb3ZlIGd1YXJkIHdoZW4gcmV2ZWFsRm9s
ZGVySW5PUyBpcyBpbXBsZW1lbnRlZCBmb3Igbm9uLWNocm9taXVtIHBsYXRmb3Jtcy4KLSAgICBX
ZWJDb3JlOjpyZXZlYWxGb2xkZXJJbk9TKHBhdGgpOwotfQotI2Vsc2UKLXZvaWQgSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50OjpyZXZlYWxGb2xkZXJJbk9TKGNvbnN0IFN0cmluZyYpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLSNlbmRpZgotCi12b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudDo6Z2V0RmlsZVN5c3RlbVBhdGhBc3luYyh1bnNpZ25lZCBpbnQgdHlwZSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4pCi17Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpmaWxlU3lz
dGVtRW5hYmxlZCgpKSB7Ci0gICAgICAgIG1fZnJvbnRlbmQtPmRpZEdldEZpbGVTeXN0ZW1EaXNh
YmxlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQXN5bmNGaWxlU3lzdGVtOjpU
eXBlIGFzeW5jRmlsZVN5c3RlbVR5cGUgPSBzdGF0aWNfY2FzdDxBc3luY0ZpbGVTeXN0ZW06OlR5
cGU+KHR5cGUpOwotICAgIEZyYW1lKiBtYWluRnJhbWUgPSBtX2luc3BlY3RvckNvbnRyb2xsZXIt
Pmluc3BlY3RlZFBhZ2UoKS0+bWFpbkZyYW1lKCk7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBt
YWluRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7
Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwotICAgICAg
ICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkg
PT0gb3JpZ2luKSB7Ci0gICAgICAgICAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3Rl
bSgpLnJlYWRGaWxlU3lzdGVtKGRvY3VtZW50LCBhc3luY0ZpbGVTeXN0ZW1UeXBlLCAwLCBuZXcg
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Q2FsbGJhY2tzKHRoaXMsIGFzeW5jRmlsZVN5c3RlbVR5
cGUsIG9yaWdpbikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotfQot
Ci12b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZGlkR2V0RmlsZVN5c3RlbVBhdGgoY29u
c3QgU3RyaW5nJiByb290LCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5n
JiBvcmlnaW4pCi17Ci0gICAgLy8gV2hlbiBjb250cm9sbGVyIGlzIGJlaW5nIGRlc3Ryb3llZCwg
dGhpcyBpcyBzZXQgdG8gMC4gQWdlbnQgY2FuIGxpdmUgZXZlbiBhZnRlciBtX2luc3BlY3RvckNv
bnRyb2xsZXIgaXMgZGVzdHJveWVkLgotICAgIGlmICghbV9pbnNwZWN0b3JDb250cm9sbGVyKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Zyb250ZW5kLT5kaWRHZXRGaWxlU3lzdGVtUGF0aChy
b290LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHR5cGUpLCBvcmlnaW4pOwotfQotCi12b2lk
IEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZGlkR2V0RmlsZVN5c3RlbUVycm9yKEFzeW5jRmls
ZVN5c3RlbTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKLXsKLSAgICAvLyBXaGVu
IGNvbnRyb2xsZXIgaXMgYmVpbmcgZGVzdHJveWVkLCB0aGlzIGlzIHNldCB0byAwLiBBZ2VudCBj
YW4gbGl2ZSBldmVuIGFmdGVyIG1faW5zcGVjdG9yQ29udHJvbGxlciBpcyBkZXN0cm95ZWQuCi0g
ICAgaWYgKCFtX2luc3BlY3RvckNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2Zy
b250ZW5kLT5kaWRHZXRGaWxlU3lzdGVtRXJyb3Ioc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih0
eXBlKSwgb3JpZ2luKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKEZJTEVfU1lTVEVNKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmggYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYTg1YWQwZi4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIElu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudF9oCi0jZGVmaW5lIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dF9oCi0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNp
bmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIERvY3VtZW50OwotY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKLWNsYXNz
IEluc3BlY3RvckZyb250ZW5kOwotY2xhc3MgTG9jYWxGaWxlU3lzdGVtOwotCi1jbGFzcyBJbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQ+IGNyZWF0ZShJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9s
bGVyLCBJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudChpbnNwZWN0b3JDb250cm9sbGVy
LCBmcm9udGVuZCkpOwotICAgIH0KLQotICAgIH5JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoKTsK
LSAgICB2b2lkIHN0b3AoKTsKLQotICAgIC8vIEZyb20gRnJvbnRlbmQKLSAgICB2b2lkIGdldEZp
bGVTeXN0ZW1QYXRoQXN5bmModW5zaWduZWQgaW50IHR5cGUsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
KTsKLSAgICB2b2lkIHJldmVhbEZvbGRlckluT1MoY29uc3QgU3RyaW5nJiBwYXRoKTsKLQotICAg
IC8vIEJhY2tlbmQgdG8gRnJvbnRlbmQKLSAgICB2b2lkIGRpZEdldEZpbGVTeXN0ZW1QYXRoKGNv
bnN0IFN0cmluZyYsIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4p
OwotICAgIHZvaWQgZGlkR2V0RmlsZVN5c3RlbUVycm9yKEFzeW5jRmlsZVN5c3RlbTo6VHlwZSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4pOwotICAgIHZvaWQgZGlkR2V0RmlsZVN5c3RlbURpc2FibGVk
KCk7Ci0KLXByaXZhdGU6Ci0gICAgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KEluc3BlY3RvckNv
bnRyb2xsZXIqLCBJbnNwZWN0b3JGcm9udGVuZCopOwotICAgIHZvaWQgZ2V0RmlsZVN5c3RlbVJv
b3QoQXN5bmNGaWxlU3lzdGVtOjpUeXBlKTsKLQotICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIG1f
aW5zcGVjdG9yQ29udHJvbGxlcjsKLSAgICBJbnNwZWN0b3JGcm9udGVuZCogbV9mcm9udGVuZDsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1IpICYmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSNlbmRpZiAvLyBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0
ZW1WaWV3LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3Lmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2QwMTA3Li4wMDAwMDAwCi0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcworKysgL2Rldi9udWxs
CkBAIC0xLDE5MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0gPSB7fQotCi0vLyBLZWVw
IGluIHN5bmMgd2l0aCBUeXBlIGluIEFzeW5jRmlsZVN5c3RlbS5oCi1XZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbS5URU1QT1JBUlkgPSAwOwotV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0uUEVSU0lTVEVO
VCA9IDE7Ci0KLVdlYkluc3BlY3Rvci5GaWxlU3lzdGVtLmdldEZpbGVTeXN0ZW1QYXRoc0FzeW5j
ID0gZnVuY3Rpb24ob3JpZ2luKQotewotICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0RmlsZVN5c3Rl
bVBhdGhBc3luYyhXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbS5QRVJTSVNURU5ULCBvcmlnaW4pOwot
ICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0RmlsZVN5c3RlbVBhdGhBc3luYyhXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbS5URU1QT1JBUlksIG9yaWdpbik7Ci19Ci0KLVdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtVmlldyA9IGZ1bmN0aW9uKHRyZWVFbGVtZW50LCBmaWxlU3lzdGVtT3JpZ2luKQotewotICAg
IFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLmVsZW1lbnQuYWRkU3R5
bGVDbGFzcygicmVzb3VyY2UtdmlldyIpOwotICAgIHRoaXMuX3RyZWVFbGVtZW50ID0gdHJlZUVs
ZW1lbnQ7Ci0gICAgdGhpcy5fb3JpZ2luID0gZmlsZVN5c3RlbU9yaWdpbjsKLSAgICB0aGlzLl90
YWJiZWRQYW5lID0gbmV3IFdlYkluc3BlY3Rvci5UYWJiZWRQYW5lKHRoaXMuZWxlbWVudCk7Ci0K
LSAgICB0aGlzLl9wZXJzaXN0ZW50RmlsZVN5c3RlbUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9wZXJzaXN0ZW50RmlsZVN5c3RlbUVsZW1lbnQuY2xh
c3NOYW1lID0gInJlc291cmNlLXZpZXctaGVhZGVycyI7Ci0gICAgdGhpcy5fdGFiYmVkUGFuZS5h
cHBlbmRUYWIoInBlcnNpc3RlbnQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBlcnNpc3RlbnQg
RmlsZSBTeXN0ZW0iKSwgdGhpcy5fcGVyc2lzdGVudEZpbGVTeXN0ZW1FbGVtZW50LCB0aGlzLl9z
ZWxlY3RGaWxlU3lzdGVtVGFiLmJpbmQodGhpcywgdHJ1ZSkpOwotCi0gICAgdGhpcy5fdGVtcEZp
bGVTeXN0ZW1FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhp
cy5fdGVtcEZpbGVTeXN0ZW1FbGVtZW50LmNsYXNzTmFtZSA9ICJyZXNvdXJjZS12aWV3LWhlYWRl
cnMiOwotICAgIHRoaXMuX3RhYmJlZFBhbmUuYXBwZW5kVGFiKCJ0ZW1wIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJUZW1wb3JhcnkgRmlsZSBTeXN0ZW0iKSwgdGhpcy5fdGVtcEZpbGVTeXN0ZW1F
bGVtZW50LCB0aGlzLnNlbGVjdFRlbXBvcmFyeUZpbGVTeXN0ZW1UYWIuYmluZCh0aGlzLCB0cnVl
KSk7Ci0KLSAgICB0aGlzLl90ZW1wb3JhcnlSb290ID0gIiI7Ci0gICAgdGhpcy5fcGVyc2lzdGVu
dFJvb3QgPSAiIjsKLSAgICB0aGlzLl9pc0ZpbGVTeXN0ZW1EaXNhYmxlZCA9IGZhbHNlOwotICAg
IHRoaXMuX3BlcnNpc3RlbnRSb290RXJyb3IgPSBmYWxzZTsKLSAgICB0aGlzLl90ZW1wb3JhcnlS
b290RXJyb3IgPSBmYWxzZTsKLSAgICB0aGlzLmZpbGVTeXN0ZW1WaXNpYmxlID0gdHJ1ZTsKLSAg
ICB0aGlzLl9zZWxlY3RGaWxlU3lzdGVtVGFiKCk7Ci0gICAgdGhpcy5yZWZyZXNoRmlsZVN5c3Rl
bSgpOwotfQotCi1XZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlID0gewotICAg
IHNob3c6IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0
b3IuVmlldy5wcm90b3R5cGUuc2hvdy5jYWxsKHRoaXMsIHBhcmVudEVsZW1lbnQpOwotICAgICAg
ICB0aGlzLl91cGRhdGUoKTsKLSAgICB9LAotCi0gICAgc2V0IGZpbGVTeXN0ZW1WaXNpYmxlKHgp
Ci0gICAgewotICAgICAgICBpZiAoeCA9PT0gdGhpcy5fZmlsZVN5c3RlbVZpc2libGUpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaXNpYmxlID0geDsKLSAg
ICAgICAgaWYgKHgpCi0gICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGVh
ZGVycy12aXNpYmxlIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuZWxlbWVudC5y
ZW1vdmVTdHlsZUNsYXNzKCJoZWFkZXJzLXZpc2libGUiKTsgCi0gICAgICAgIHRoaXMuX3NlbGVj
dEZpbGVTeXN0ZW1UYWIoKTsKLSAgICB9LAotCi0gICAgX3VwZGF0ZTogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgdGhpcy5fc2VsZWN0RmlsZVN5c3RlbVRhYigpOwotICAgICAgICBXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbS5nZXRGaWxlU3lzdGVtUGF0aHNBc3luYyh0aGlzLl9vcmlnaW4pOwot
ICAgIH0sCi0KLSAgICB1cGRhdGVGaWxlU3lzdGVtUGF0aDogZnVuY3Rpb24ocm9vdCwgdHlwZSwg
b3JpZ2luKQotICAgIHsKLSAgICAgICAgaWYgKG9yaWdpbiA9PSB0aGlzLl9vcmlnaW4gJiYgdHlw
ZSA9PSBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbS5QRVJTSVNURU5UKSB7Ci0gICAgICAgICAgICB0
aGlzLl9wZXJzaXN0ZW50Um9vdCA9IHJvb3Q7Ci0gICAgICAgICAgICB0aGlzLl9wZXJzaXN0ZW50
Um9vdEVycm9yID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChvcmln
aW4gPT0gdGhpcy5fb3JpZ2luICYmIHR5cGUgPT0gV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0uVEVN
UE9SQVJZKSB7Ci0gICAgICAgICAgICB0aGlzLl90ZW1wb3JhcnlSb290ID0gcm9vdDsKLSAgICAg
ICAgICAgIHRoaXMuX3RlbXBvcmFyeVJvb3RFcnJvckVycm9yID0gZmFsc2U7Ci0gICAgICAgIH0K
LQotICAgICAgICB0aGlzLnJlZnJlc2hGaWxlU3lzdGVtKCk7Ci0gICAgfSwKLSAgICAKLSAgICB1
cGRhdGVGaWxlU3lzdGVtRXJyb3I6IGZ1bmN0aW9uKHR5cGUsIG9yaWdpbikKLSAgICB7Ci0gICAg
ICAgIGlmICh0eXBlID09IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtLlBFUlNJU1RFTlQpCi0gICAg
ICAgICAgICB0aGlzLl9wZXJzaXN0ZW50Um9vdEVycm9yID0gdHJ1ZTsKLSAgICAgICAgCi0gICAg
ICAgIGlmICh0eXBlID09IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtLlRFTVBPUkFSWSkKLSAgICAg
ICAgICAgIHRoaXMuX3RlbXBvcmFyeVJvb3RFcnJvciA9IHRydWU7Ci0KLSAgICAgICAgdGhpcy5y
ZWZyZXNoRmlsZVN5c3RlbSgpOwotICAgIH0sCi0gICAgCi0gICAgc2V0RmlsZVN5c3RlbURpc2Fi
bGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9pc0ZpbGVTeXN0ZW1EaXNhYmxl
ZCA9IHRydWU7Ci0gICAgICAgIHRoaXMucmVmcmVzaEZpbGVTeXN0ZW0oKTsKLSAgICB9LAotICAg
IF9zZWxlY3RGaWxlU3lzdGVtVGFiOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl90
YWJiZWRQYW5lLnNlbGVjdFRhYigicGVyc2lzdGVudCIpOwotICAgIH0sCi0gICAgCi0gICAgc2Vs
ZWN0VGVtcG9yYXJ5RmlsZVN5c3RlbVRhYjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhp
cy5fdGFiYmVkUGFuZS5zZWxlY3RUYWIoInRlbXAiKTsKLSAgICB9LAotCi0gICAgX3JldmVhbFBl
cnNpc3RlbnRGb2xkZXJJbk9TOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JC
YWNrZW5kLnJldmVhbEZvbGRlckluT1ModGhpcy5fcGVyc2lzdGVudFJvb3QpOwotICAgIH0sCi0g
ICAgCi0gICAgX3JldmVhbFRlbXBvcmFyeUZvbGRlckluT1M6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIEluc3BlY3RvckJhY2tlbmQucmV2ZWFsRm9sZGVySW5PUyh0aGlzLl90ZW1wb3JhcnlS
b290KTsKLSAgICB9LAotICAgIAotICAgIF9jcmVhdGVUZXh0QW5kQnV0dG9uOiBmdW5jdGlvbihm
aWxlU3lzdGVtRWxlbWVudCwgcm9vdFBhdGhUZXh0LCB0eXBlLCBpc0Vycm9yKQotICAgIHsKLSAg
ICAgICAgZmlsZVN5c3RlbUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgdmFyIHJv
b3RQYXRoID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaWxlIFN5c3RlbSByb290IHBhdGggbm90
IGF2YWlsYWJsZS4iKTsKLSAgICAgICAgaWYgKHRoaXMuX2lzRmlsZVN5c3RlbURpc2FibGVkKQot
ICAgICAgICAgICAgcm9vdFBhdGggPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbGUgU3lzdGVt
IGlzIGRpc2FibGVkLiIpOwotICAgICAgICBlbHNlIGlmIChpc0Vycm9yKQotICAgICAgICAgICAg
cm9vdFBhdGggPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVycm9yIGluIGZldGNoaW5nIHJvb3Qg
cGF0aCBmb3IgZmlsZSBzeXN0ZW0uIik7Ci0gICAgICAgIGVsc2UgaWYgKHJvb3RQYXRoVGV4dCkK
LSAgICAgICAgICAgIHJvb3RQYXRoID0gcm9vdFBhdGhUZXh0OwotCi0gICAgICAgIHZhciByb290
VGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiUm9vdDogIiArIHJvb3RQYXRoLmVz
Y2FwZUhUTUwoKSk7Ci0gICAgICAgIHZhciByb290U3lzdGVtRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICByb290U3lzdGVtRWxlbWVudC5jbGFzc05hbWUg
PSAiaGVhZGVyLXZhbHVlIHNvdXJjZS1jb2RlIjsKLSAgICAgICAgcm9vdFN5c3RlbUVsZW1lbnQu
YXBwZW5kQ2hpbGQocm9vdFRleHROb2RlKTsKLSAgICAgICAgZmlsZVN5c3RlbUVsZW1lbnQuYXBw
ZW5kQ2hpbGQocm9vdFN5c3RlbUVsZW1lbnQpOwotICAgICAgICAgICAgCi0gICAgICAgIGlmICgh
aXNFcnJvciAmJiByb290UGF0aFRleHQpIHsKLSAgICAgICAgICAgIC8vIEFwcGVuZCBCcm93c2Ug
YnV0dG9uIGlmZiByb290IHBhdGggaXMgYXZhaWxhYmxlIGFuZCBpdCBpcyBub3QgYW4gZXJyb3Iu
Ci0gICAgICAgICAgICB2YXIgY29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKLSAgICAgICAgICAgIGNvbnRlbnRFbGVtZW50LmNsYXNzTmFtZSA9ICJwYW5lbC1l
bmFibGVyLXZpZXctY29udGVudCI7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtRWxlbWVudC5hcHBl
bmRDaGlsZChjb250ZW50RWxlbWVudCk7Ci0gICAgICAgICAgICB2YXIgY2hvaWNlc0Zvcm0gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJmb3JtIik7Ci0gICAgICAgICAgICBjb250ZW50RWxlbWVu
dC5hcHBlbmRDaGlsZChjaG9pY2VzRm9ybSk7Ci0gICAgICAgICAgICB2YXIgZW5hYmxlQnV0dG9u
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7Ci0gICAgICAgICAgICBlbmFibGVC
dXR0b24uc2V0QXR0cmlidXRlKCJ0eXBlIiwgImJ1dHRvbiIpOwotICAgICAgICAgICAgZW5hYmxl
QnV0dG9uLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXZlYWwgZm9sZGVy
IGluIE9TIik7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQmluZCB0aGlzIGRpcmVjdGx5IHRvIElu
c3BlY3RvckJhY2tlbmQuCi0gICAgICAgICAgICBpZiAodHlwZSA9PSBXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbS5QRVJTSVNURU5UKQotICAgICAgICAgICAgICAgIGVuYWJsZUJ1dHRvbi5hZGRFdmVu
dExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3JldmVhbFBlcnNpc3RlbnRGb2xkZXJJbk9TLmJpbmQo
dGhpcyksIGZhbHNlKTsKLSAgICAgICAgICAgIGlmICh0eXBlID09IFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtLlRFTVBPUkFSWSkKLSAgICAgICAgICAgICAgICBlbmFibGVCdXR0b24uYWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCB0aGlzLl9yZXZlYWxUZW1wb3JhcnlGb2xkZXJJbk9TLmJpbmQodGhp
cyksIGZhbHNlKTsKLSAgICAgICAgICAgIGNob2ljZXNGb3JtLmFwcGVuZENoaWxkKGVuYWJsZUJ1
dHRvbik7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtRWxlbWVudC5hcHBlbmRDaGlsZChjb250ZW50
RWxlbWVudCk7Ci0gICAgICAgIH0KLSAgICB9LAotICAgIAotICAgIHJlZnJlc2hGaWxlU3lzdGVt
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9jcmVhdGVUZXh0QW5kQnV0dG9uKHRo
aXMuX3BlcnNpc3RlbnRGaWxlU3lzdGVtRWxlbWVudCwgdGhpcy5fcGVyc2lzdGVudFJvb3QsIFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtLlBFUlNJU1RFTlQsIHRoaXMuX3BlcnNpc3RlbnRSb290RXJy
b3IpOwotICAgICAgICB0aGlzLl9jcmVhdGVUZXh0QW5kQnV0dG9uKHRoaXMuX3RlbXBGaWxlU3lz
dGVtRWxlbWVudCwgdGhpcy5fdGVtcG9yYXJ5Um9vdCwgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0u
VEVNUE9SQVJZLCB0aGlzLl90ZW1wb3JhcnlSb290RXJyb3IpOwotICAgIH0sIAotfQotCi1XZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rv
ci5WaWV3LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZXNQYW5lbC5qcwppbmRleCBkNmY3MTcyLi40YmQ2MzFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC01NiwxMiArNTYsNiBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VzUGFuZWwgPSBmdW5jdGlvbihkYXRhYmFzZSkKICAgICB0aGlzLmFwcGxp
Y2F0aW9uQ2FjaGVMaXN0VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRl
Z29yeVRyZWVFbGVtZW50KHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQXBwbGljYXRpb24g
Q2FjaGUiKSwgIkFwcGxpY2F0aW9uQ2FjaGUiLCAiYXBwbGljYXRpb24tY2FjaGUtc3RvcmFnZS10
cmVlLWl0ZW0iKTsKICAgICB0aGlzLnNpZGViYXJUcmVlLmFwcGVuZENoaWxkKHRoaXMuYXBwbGlj
YXRpb25DYWNoZUxpc3RUcmVlRWxlbWVudCk7CiAKLSAgICBpZiAoUHJlZmVyZW5jZXMuZmlsZVN5
c3RlbUVuYWJsZWQpIHsKLSAgICAgICAgdGhpcy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50ID0g
bmV3IFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlUcmVlRWxlbWVudCh0aGlzLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkZpbGUgU3lzdGVtIiksICJGaWxlU3lzdGVtIiwgImZpbGUtc3lzdGVt
LXN0b3JhZ2UtdHJlZS1pdGVtIik7Ci0gICAgICAgIHRoaXMuc2lkZWJhclRyZWUuYXBwZW5kQ2hp
bGQodGhpcy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50KTsKLSAgICAgICAgdGhpcy5maWxlU3lz
dGVtTGlzdFRyZWVFbGVtZW50LmV4cGFuZCgpOwotICAgIH0KLQogICAgIHRoaXMuc3RvcmFnZVZp
ZXdzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5zdG9yYWdlVmll
d3MuaWQgPSAic3RvcmFnZS12aWV3cyI7CiAgICAgdGhpcy5zdG9yYWdlVmlld3MuY2xhc3NOYW1l
ID0gImRpZmYtY29udGFpbmVyIjsKQEAgLTc4LDYgKzcyLDggQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlc1BhbmVsID0gZnVuY3Rpb24oZGF0YWJhc2UpCiAKICAgICB0aGlzLnNpZGViYXJFbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX29ubW91c2Vtb3ZlLmJpbmQodGhp
cyksIGZhbHNlKTsKICAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNlb3V0IiwgdGhpcy5fb25tb3VzZW91dC5iaW5kKHRoaXMpLCBmYWxzZSk7CisKKyAgICBJbnNw
ZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRG9tYWluRGlzcGF0Y2hlcigiUmVzb3VyY2VzIiwgdGhpcyk7
CiB9CiAKIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CkBAIC0xNDUs
NyArMTQxLDYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fZG9tU3RvcmFnZSA9IFtdOwogCiAgICAgICAgIHRoaXMuX2Nvb2tpZVZpZXdz
ID0ge307Ci0gICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3ID0gbnVsbDsKICAgICAgICAgCiAg
ICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVWaWV3ID0gbnVsbDsKICAgICAgICAgZGVsZXRl
IHRoaXMuX2NhY2hlZEFwcGxpY2F0aW9uQ2FjaGVWaWV3U3RhdHVzOwpAQCAtMTU1LDggKzE1MCw2
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuc2Vzc2lvblN0b3JhZ2VMaXN0VHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAg
ICAgdGhpcy5jb29raWVMaXN0VHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAg
dGhpcy5hcHBsaWNhdGlvbkNhY2hlTGlzdFRyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7Ci0g
ICAgICAgIGlmIChQcmVmZXJlbmNlcy5maWxlU3lzdGVtRW5hYmxlZCkKLSAgICAgICAgICAgIHRo
aXMuZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0
aGlzLnN0b3JhZ2VWaWV3cy5yZW1vdmVDaGlsZHJlbigpOwogCiAgICAgICAgIHRoaXMuc3RvcmFn
ZVZpZXdTdGF0dXNCYXJJdGVtc0NvbnRhaW5lci5yZW1vdmVDaGlsZHJlbigpOwpAQCAtMjgyLDE2
ICsyNzUsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgdmFyIGFwcGxpY2F0aW9uQ2FjaGVUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0
b3IuQXBwbGljYXRpb25DYWNoZVRyZWVFbGVtZW50KHRoaXMsIGRvbWFpbik7CiAgICAgICAgICAg
ICB0aGlzLmFwcGxpY2F0aW9uQ2FjaGVMaXN0VHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoYXBwbGlj
YXRpb25DYWNoZVRyZWVFbGVtZW50KTsKICAgICAgICAgfQotCi0gICAgICAgIGlmIChQcmVmZXJl
bmNlcy5maWxlU3lzdGVtRW5hYmxlZCkgewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIG1hdGNoIHRoZSBTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcoKSwgYWRkIGEgdGVzdCBmb3Ig
dGhpcy4KLSAgICAgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IHBhcnNlZFVSTC5zY2hlbWUg
KyAiOi8vIiArIHBhcnNlZFVSTC5ob3N0ICsgKHBhcnNlZFVSTC5wb3J0ID8gKCI6IiArIHBhcnNl
ZFVSTC5wb3J0KSA6ICIiKTsKLSAgICAgICAgICAgIGlmICghdGhpcy5fb3JpZ2luc1tzZWN1cml0
eU9yaWdpbl0pIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9vcmlnaW5zW3NlY3VyaXR5T3JpZ2lu
XSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdmFyIGZpbGVTeXN0ZW1UcmVlRWxlbWVudCA9IG5l
dyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50KHRoaXMsIHNlY3VyaXR5T3JpZ2lu
KTsKLSAgICAgICAgICAgICAgICB0aGlzLmZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQuYXBwZW5k
Q2hpbGQoZmlsZVN5c3RlbVRyZWVFbGVtZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQog
ICAgIH0sCiAKICAgICBhZGRET01TdG9yYWdlOiBmdW5jdGlvbihkb21TdG9yYWdlKQpAQCAtNDcy
LDEyICs0NTUsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgdGhpcy5fYXBwbGljYXRpb25DYWNoZVZpZXcudXBkYXRlU3RhdHVzKHRoaXMu
X2NhY2hlZEFwcGxpY2F0aW9uQ2FjaGVWaWV3U3RhdHVzKTsKICAgICB9LAogCi0gICAgc2hvd0Zp
bGVTeXN0ZW06IGZ1bmN0aW9uKHRyZWVFbGVtZW50LCBvcmlnaW4pCi0gICAgewotICAgICAgICB0
aGlzLl9maWxlU3lzdGVtVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcodHJl
ZUVsZW1lbnQsIG9yaWdpbik7Ci0gICAgICAgIHRoaXMuX2lubmVyU2hvd1ZpZXcodGhpcy5fZmls
ZVN5c3RlbVZpZXcpOwotICAgIH0sCi0gICAgCiAgICAgc2hvd0NhdGVnb3J5VmlldzogZnVuY3Rp
b24oY2F0ZWdvcnlOYW1lKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9jYXRlZ29yeVZpZXcp
CkBAIC02MjYsMjQgKzYwMyw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlVmlldy51cGRhdGVTdGF0
dXMoc3RhdHVzKTsKICAgICB9LAogCi0gICAgdXBkYXRlRmlsZVN5c3RlbVBhdGg6IGZ1bmN0aW9u
KHJvb3QsIHR5cGUsIG9yaWdpbikKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9maWxlU3lzdGVt
VmlldyAmJiB0aGlzLl9maWxlU3lzdGVtVmlldyA9PT0gdGhpcy52aXNpYmxlVmlldykKLSAgICAg
ICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3LnVwZGF0ZUZpbGVTeXN0ZW1QYXRoKHJvb3QsIHR5
cGUsIG9yaWdpbik7ICAKLSAgICB9LAotICAKLSAgICB1cGRhdGVGaWxlU3lzdGVtRXJyb3I6IGZ1
bmN0aW9uKHR5cGUsIG9yaWdpbikKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9maWxlU3lzdGVt
VmlldyAmJiB0aGlzLl9maWxlU3lzdGVtVmlldyA9PT0gdGhpcy52aXNpYmxlVmlldykKLSAgICAg
ICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3LnVwZGF0ZUZpbGVTeXN0ZW1FcnJvcih0eXBlLCBv
cmlnaW4pOyAgCi0gICAgfSwKLSAgICAKLSAgICBzZXRGaWxlU3lzdGVtRGlzYWJsZWQ6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9maWxlU3lzdGVtVmlldyAmJiB0aGlzLl9m
aWxlU3lzdGVtVmlldyA9PT0gdGhpcy52aXNpYmxlVmlldykKLSAgICAgICAgICAgIHRoaXMuX2Zp
bGVTeXN0ZW1WaWV3LnNldEZpbGVTeXN0ZW1EaXNhYmxlZCgpOyAgCi0gICAgfSwKLQogICAgIHVw
ZGF0ZU5ldHdvcmtTdGF0ZTogZnVuY3Rpb24oaXNOb3dPbmxpbmUpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5fYXBwbGljYXRpb25DYWNoZVZpZXcgJiYgdGhpcy5fYXBwbGljYXRpb25DYWNoZVZp
ZXcgPT09IHRoaXMudmlzaWJsZVZpZXcpCkBAIC0xMjY1LDI3ICsxMjI0LDYgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlUmV2aXNpb25UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiB9CiAKIFdlYklu
c3BlY3Rvci5SZXNvdXJjZVJldmlzaW9uVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9
IFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZTsKLQotV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwgb3Jp
Z2luKQotewotICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhp
cywgc3RvcmFnZVBhbmVsLCBudWxsLCBvcmlnaW4sICJmaWxlLXN5c3RlbS1zdG9yYWdlLXRyZWUt
aXRlbSIpOwotICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKLX0KLQotV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0IGl0ZW1VUkwoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuICJmaWxlLXN5c3RlbTovLyIgKyBlbmNvZGVVUkkodGhpcy5fb3Jp
Z2luKTsKLSAgICB9LAotCi0gICAgb25zZWxlY3Q6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnNlbGVjdC5j
YWxsKHRoaXMpOwotICAgICAgICB0aGlzLl9zdG9yYWdlUGFuZWwuc2hvd0ZpbGVTeXN0ZW0odGhp
cywgdGhpcy5fb3JpZ2luKTsKLSAgICB9Ci19Ci0gCi1XZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRy
ZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VU
cmVlRWxlbWVudC5wcm90b3R5cGU7CiAgCiBXZWJJbnNwZWN0b3IuU3RvcmFnZUNhdGVnb3J5Vmll
dyA9IGZ1bmN0aW9uKCkKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TZXR0aW5ncy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwpp
bmRleCAxNjNiMTg0Li5hYjZhMDhiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2V0dGluZ3MuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRp
bmdzLmpzCkBAIC00NSw3ICs0NSw2IEBAIHZhciBQcmVmZXJlbmNlcyA9IHsKICAgICBvbmxpbmVE
ZXRlY3Rpb25FbmFibGVkOiB0cnVlLAogICAgIG5hdGl2ZUluc3RydW1lbnRhdGlvbkVuYWJsZWQ6
IGZhbHNlLAogICAgIHJlc291cmNlRXhwb3J0RW5hYmxlZDogZmFsc2UsCi0gICAgZmlsZVN5c3Rl
bUVuYWJsZWQ6IGZhbHNlLAogICAgIHVzZURhdGFVUkxGb3JSZXNvdXJjZUltYWdlSWNvbnM6IHRy
dWUsCiAgICAgc2hvd1RpbWluZ1RhYjogZmFsc2UsCiAgICAgc2hvd0Nvb2tpZXNUYWI6IGZhbHNl
LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCAyZjkxYWRiLi4zNzUx
NzU1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtNDQsNyArNDQs
NiBAQAogICAgIDxmaWxlPkV4dGVuc2lvblBhbmVsLmpzPC9maWxlPgogICAgIDxmaWxlPkV4dGVu
c2lvblJlZ2lzdHJ5U3R1Yi5qczwvZmlsZT4KICAgICA8ZmlsZT5FeHRlbnNpb25TZXJ2ZXIuanM8
L2ZpbGU+Ci0gICAgPGZpbGU+RmlsZVN5c3RlbVZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+Rm9u
dFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+R29Ub0xpbmVEaWFsb2cuanM8L2ZpbGU+CiAgICAg
PGZpbGU+SEFSRW50cnkuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWwKaW5kZXggNDBlNzVlYS4uNzk2NzVlMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtNzEsNyArNzEsNiBAQCBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvb2tpZXNUYWJsZS5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29va2llSXRl
bXNWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJBcHBsaWNhdGlvbkNhY2hlSXRlbXNWaWV3LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJGaWxlU3lzdGVtVmlldy5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2NyaXB0LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJCcmVha3BvaW50
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJC
cmVha3BvaW50TWFuYWdlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5qcwppbmRleCBjNDA5MjRjLi45YzIzNmM5IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTEyMzEsMzYgKzEyMzEsNiBAQCBXZWJJbnNwZWN0
b3IuYWRkRE9NU3RvcmFnZSA9IGZ1bmN0aW9uKHBheWxvYWQpCiAgICAgdGhpcy5wYW5lbHMucmVz
b3VyY2VzLmFkZERPTVN0b3JhZ2UoZG9tU3RvcmFnZSk7CiB9CiAKLVdlYkluc3BlY3Rvci51cGRh
dGVET01TdG9yYWdlID0gZnVuY3Rpb24oc3RvcmFnZUlkKQotewotICAgIHRoaXMucGFuZWxzLnJl
c291cmNlcy51cGRhdGVET01TdG9yYWdlKHN0b3JhZ2VJZCk7Ci19Ci0KLVdlYkluc3BlY3Rvci51
cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzID0gZnVuY3Rpb24oc3RhdHVzKQotewotICAgIHRo
aXMucGFuZWxzLnJlc291cmNlcy51cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKHN0YXR1cyk7
Ci19Ci0KLVdlYkluc3BlY3Rvci5kaWRHZXRGaWxlU3lzdGVtUGF0aCA9IGZ1bmN0aW9uKHJvb3Qs
IHR5cGUsIG9yaWdpbikKLXsKLSAgICB0aGlzLnBhbmVscy5yZXNvdXJjZXMudXBkYXRlRmlsZVN5
c3RlbVBhdGgocm9vdCwgdHlwZSwgb3JpZ2luKTsKLX0KLQotV2ViSW5zcGVjdG9yLmRpZEdldEZp
bGVTeXN0ZW1FcnJvciA9IGZ1bmN0aW9uKHR5cGUsIG9yaWdpbikKLXsKLSAgICB0aGlzLnBhbmVs
cy5yZXNvdXJjZXMudXBkYXRlRmlsZVN5c3RlbUVycm9yKHR5cGUsIG9yaWdpbik7Ci19Ci0KLVdl
Ykluc3BlY3Rvci5kaWRHZXRGaWxlU3lzdGVtRGlzYWJsZWQgPSBmdW5jdGlvbigpCi17Ci0gICAg
dGhpcy5wYW5lbHMucmVzb3VyY2VzLnNldEZpbGVTeXN0ZW1EaXNhYmxlZCgpOwotfQotCi1XZWJJ
bnNwZWN0b3IudXBkYXRlTmV0d29ya1N0YXRlID0gZnVuY3Rpb24oaXNOb3dPbmxpbmUpCi17Ci0g
ICAgdGhpcy5wYW5lbHMucmVzb3VyY2VzLnVwZGF0ZU5ldHdvcmtTdGF0ZShpc05vd09ubGluZSk7
Ci19Ci0KIFdlYkluc3BlY3Rvci5zZWFyY2hpbmdGb3JOb2RlV2FzRW5hYmxlZCA9IGZ1bmN0aW9u
KCkKIHsKICAgICB0aGlzLnBhbmVscy5lbGVtZW50cy5zZWFyY2hpbmdGb3JOb2RlV2FzRW5hYmxl
ZCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggNTZiOWJjZS4uNjBhMzhmOSAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTAtMTItMDggIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFJlbW92ZSBGaWxlU3lzdGVtIHN1cHBvcnQgZnJvbSB0aGUgaW5zcGVj
dG9yLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDY5NQorCisgICAgICAgICogc3JjL2pzL0RldlRvb2xzLmpzOgorICAgICAgICAoKToKKwogMjAx
MC0xMi0wNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2
VG9vbHMuanMgYi9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCmluZGV4IGQ2NTM2
YmMuLmI4YmJhMTkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMu
anMKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcwpAQCAtNDYsNyArNDYs
NiBAQCB2YXIgY29udGV4dCA9IHt9OyAgLy8gVXNlZCBieSBXZWJDb3JlJ3MgaW5zcGVjdG9yIHJv
dXRpbmVzLgogICAgIFByZWZlcmVuY2VzLmNhbkVkaXRTY3JpcHRTb3VyY2UgPSB0cnVlOwogICAg
IFByZWZlcmVuY2VzLm9ubGluZURldGVjdGlvbkVuYWJsZWQgPSBmYWxzZTsKICAgICBQcmVmZXJl
bmNlcy5uYXRpdmVJbnN0cnVtZW50YXRpb25FbmFibGVkID0gdHJ1ZTsKLSAgICBQcmVmZXJlbmNl
cy5maWxlU3lzdGVtRW5hYmxlZCA9IGZhbHNlOwogICAgIFByZWZlcmVuY2VzLnJlc291cmNlRXhw
b3J0RW5hYmxlZCA9IHRydWU7CiAgICAgUHJlZmVyZW5jZXMuc2hvd1RpbWluZ1RhYiA9IHRydWU7
CiAgICAgUHJlZmVyZW5jZXMuc2hvd0Nvb2tpZXNUYWIgPSB0cnVlOwo=
</data>
<flag name="review"
          id="66779"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81825</attachid>
            <date>2011-02-09 09:51:00 -0800</date>
            <delta_ts>2011-02-10 09:08:17 -0800</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>nuke_fs</filename>
            <type>text/plain</type>
            <size>51152</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggM2RjNDBjOS4uMGQ1OWEwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEwMzAsNyArMTAzMCw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZS5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKLSAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAogICAgIGluc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkOWQwMGQ1Li42ZTc1MzRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMTEtMDItMDkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2ViIEluc3BlY3RvcjogUmVtb3ZlIEZpbGVTeXN0ZW0gc3VwcG9ydCBmcm9tIHRoZSBpbnNw
ZWN0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDY5NQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
YW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0QXBwbGljYXRpb25DYWNoZXMpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50aWZpZXJGb3JJbml0aWFsUmVx
dWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsU2VuZFJlcXVlc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVSZXNvdXJjZVJlc3BvbnNlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVzb3Vy
Y2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om5ldHdvcmtTdGF0ZUNoYW5nZWRJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dXBkYXRlQXBwbGlj
YXRpb25DYWNoZVN0YXR1c0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpyZXRyaWV2ZVJlc291cmNlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWw6CisKIDIwMTEtMDItMDkgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCmluZGV4IDA0YzA5M2UuLmQwOTYyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBA
IC0xOTg3LDggKzE5ODcsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCBcCi0JU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgXAotCVNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCBcCiAJU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50LmggXAogCVNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggMzc0MTFlMC4uNGQ1OGFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjA0
NSw4ICsyMDQ1LDYgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVz
b3VyY2UuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJl
c291cmNlLmgnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQuY3BwJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCcsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oJywKQEAgLTQ2OTMsNyAr
NDY5MSw2IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25QYW5l
bC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25SZWdpc3Ry
eVN0dWIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2Vy
dmVyLmpzJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3
LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZvbnRWaWV3LmpzJywKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0dvVG9MaW5lRGlhbG9nLmpzJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hBUkVudHJ5LmpzJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5k
ZXggOTI2YzE1NC4uNWI5ODQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTEwNjAsNyArMTA2MCw2IEBA
IFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgXAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIFwKICAgICBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCBcCi0gICAgaW5zcGVjdG9yL0luc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAg
XAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggODczN2E4NC4uZTRm
YzA5MSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
QEAgLTY1NDQyLDE0ICs2NTQ0Miw2IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3Bw
IgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNw
ZWN0b3JcSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJ
PEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENs
aWVudC5oIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTY1NzYxLDEwICs2NTc1Myw2IEBACiAJCQkJ
CT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0
b3JcZnJvbnQtZW5kXEZpbGVTeXN0ZW1WaWV3LmpzIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJ
CTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxGb250Vmll
dy5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYjI0NDk1Li42ZWQ5NWZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04
NjAsOCArODYwLDYgQEAKIAkJMzdGODE4RkQwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxS
ZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzdGODE4RkIwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3RjgxOEZFMEQ2NTc2
MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0Y4MThGQzBENjU3NjA2MDA1RTFGMDUgLyogV2Vi
Q29yZVVSTFJlc3BvbnNlLm1tICovOyB9OwogCQkzN0ZENDI5ODExODM2ODQ2MDA5M0MwMjkgLyog
VHJlZURlcHRoTGltaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3RkQ0Mjk3MTE4MzY4NDYwMDkzQzAyOSAvKiBUcmVlRGVwdGhMaW1pdC5oICovOyB9
OwotCQkzODg4RjZFRTEyOEM5ODg5MDAwQ0E4RTAgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4ODhG
NkVDMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwICovOyB9
OwotCQkzODg4RjZFRjEyOEM5ODg5MDAwQ0E4RTAgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzODg4RjZF
RDEyOEM5ODg5MDAwQ0E4RTAgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmggKi87IH07CiAJ
CTNBQzY0OEIyMTI5RTE0NjUwMEMzRUIyNSAvKiBFZGl0aW5nQm91bmRhcnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNBQzY0OEIxMTI5RTE0NjUwMEMz
RUIyNSAvKiBFZGl0aW5nQm91bmRhcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0MTAwMkNDRDBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVu
Y3Rpb25DYWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTAwMkNDQjBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi87IH07
CiAJCTQxMDAyQ0NFMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwMDJDQ0MwRjY2
RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi87IH07CkBAIC03MjIyLDgg
KzcyMjAsNiBAQAogCQkzN0Y4MThGQzBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVSTFJlc3Bv
bnNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZVVS
TFJlc3BvbnNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0ZDOTZEQTExMDRF
RDcxMDAzRTFGQUQgLyogVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0ZENDI5NzExODM2ODQ2MDA5M0MwMjkgLyogVHJl
ZURlcHRoTGltaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJlZURlcHRo
TGltaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzg4OEY2RUMxMjhDOTg4OTAw
MENBOEUwIC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkzODg4RjZFRDEyOEM5ODg5MDAwQ0E4RTAgLyogSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
QUM2NDhCMTEyOUUxNDY1MDBDM0VCMjUgLyogRWRpdGluZ0JvdW5kYXJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdCb3VuZGFyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTAwMkNDQjBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2Fs
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTAwMkNDQzBGNjZFREVGMDA5RTY2
MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMzAwNSw4ICsxMzAwMSw2IEBACiAJCQkJN0E3NEVDQjkxMDE4MzlBNjAwQkY5MzlF
IC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oICovLAogCQkJCTQxRjA2MTczMEY1RjAwQUMw
MEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwICovLAogCQkJCTQxRjA2
MTcyMEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCAqLywK
LQkJCQkzODg4RjZFQzEyOEM5ODg5MDAwQ0E4RTAgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
LmNwcCAqLywKLQkJCQkzODg4RjZFRDEyOEM5ODg5MDAwQ0E4RTAgLyogSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50LmggKi8sCiAJCQkJRjM0NEM3MTIxMTI1QjgyQzAwRjI2RUVFIC8qIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50LmggKi8sCiAJCQkJRjM0NEM3NTcxMTI5NEZGNjAwRjI2RUVFIC8qIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwICovLAogCQkJCUYzNDRDNzUyMTEyOTREOUQw
MEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggKi8sCkBAIC0yMDkxNyw3
ICsyMDkxMSw2IEBACiAJCQkJN0EyNDU4N0MxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRP
TUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTc0RUNCQjEwMTgzOUE2MDBCRjkzOUUgLyog
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYwNjE3NDBG
NUYwMEFDMDBBMDdFQUMgLyogSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmggaW4gSGVhZGVy
cyAqLywKLQkJCQkzODg4RjZFRjEyOEM5ODg5MDAwQ0E4RTAgLyogSW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzQ0QzcxNDExMjVCODJDMDBGMjZFRUUgLyog
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNDRDNzUzMTEy
OTREOUQwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3QTBFNzcwRjEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmggaW4gSGVhZGVycyAqLywKQEAgLTIzNjUwLDcgKzIzNjQzLDYgQEAKIAkJCQk3QTI0NTg3
QjEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0E3NEVDQkExMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUYwNjE3NTBGNUYwMEFDMDBBMDdFQUMgLyogSW5z
cGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTM4ODhGNkVF
MTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNEY0RjVGRkIxMUNCRDJFMTAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250ZW5k
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzNDRDNzU4MTEyOTRGRjYwMEYyNkVFRSAvKiBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBMEU3NzBF
MTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCmluZGV4IGVhMGY0ODAuLjMz
MDg3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCkBAIC0xNTksMjAg
KzE1OSw2IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW25vdGlmeSwgZG9tYWluPUFwcGxpY2F0
aW9uQ2FjaGVdIHZvaWQgdXBkYXRlTmV0d29ya1N0YXRlKG91dCBib29sZWFuIGlzTm93T25saW5l
KTsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChFTkFCTEVfRklMRV9TWVNURU0pICYmIEVOQUJMRV9G
SUxFX1NZU1RFTQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIEZpbGVzeXN0
ZW0gQVBJCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgW2RvbWFpbj1GaWxlU3lz
dGVtXSB2b2lkIGdldEZpbGVTeXN0ZW1QYXRoQXN5bmMoaW4gdW5zaWduZWQgaW50IHR5cGUsIGlu
IFN0cmluZyBvcmlnaW4pOwotICAgICAgICBbZG9tYWluPUZpbGVTeXN0ZW1dIHZvaWQgcmV2ZWFs
Rm9sZGVySW5PUyhpbiBTdHJpbmcgcGF0aCk7Ci0KLSAgICAgICAgW25vdGlmeSwgZG9tYWluPUZp
bGVTeXN0ZW1dIHZvaWQgZGlkR2V0RmlsZVN5c3RlbVBhdGgob3V0IFN0cmluZyByb290LCBvdXQg
aW50IHR5cGUsIG91dCBTdHJpbmcgb3JpZ2luKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPUZp
bGVTeXN0ZW1dIHZvaWQgZGlkR2V0RmlsZVN5c3RlbUVycm9yKG91dCBpbnQgdHlwZSwgb3V0IFN0
cmluZyBvcmlnaW4pOwotICAgICAgICBbbm90aWZ5LCBkb21haW49RmlsZVN5c3RlbV0gdm9pZCBk
aWRHZXRGaWxlU3lzdGVtRGlzYWJsZWQoKTsKLSNlbmRpZgotCiAgICAgICAgIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCiAgICAgICAgIC8vIERPTSBBUEkKICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IGM2ZDljYTAuLmI4NWVh
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcApAQCAt
MTIwLDEwICsxMjAsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0jaW5jbHVkZSAiSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50LmgiCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAzLDExICszOTksNyBAQCB2b2lkIEluc3BlY3RvckFn
ZW50OjpjcmVhdGVGcm9udGVuZExpZmV0aW1lQWdlbnRzKCkKICNlbmRpZgogCiAjaWYgRU5BQkxF
KE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9
IG5ldyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQodGhpcywgbV9mcm9udGVuZCk7Ci0j
ZW5kaWYKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICBtX2ZpbGVTeXN0ZW1BZ2VudCA9
IEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6Y3JlYXRlKHRoaXMsIG1fZnJvbnRlbmQpOworICAg
IG1fYXBwbGljYXRpb25DYWNoZUFnZW50ID0gbmV3IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudChtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2Fk
ZXIoKSwgbV9mcm9udGVuZCk7CiAjZW5kaWYKIH0KIApAQCAtNDM5LDExICs0MzEsNiBAQCB2b2lk
IEluc3BlY3RvckFnZW50OjpyZWxlYXNlRnJvbnRlbmRMaWZldGltZUFnZW50cygpCiAgICAgbV9h
cHBsaWNhdGlvbkNhY2hlQWdlbnQuY2xlYXIoKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKEZJTEVf
U1lTVEVNKQotICAgIGlmIChtX2ZpbGVTeXN0ZW1BZ2VudCkKLSAgICAgICAgbV9maWxlU3lzdGVt
QWdlbnQtPnN0b3AoKTsKLSAgICAgICAgbV9maWxlU3lzdGVtQWdlbnQuY2xlYXIoKTsKLSNlbmRp
ZgogICAgIHN0b3BUaW1lbGluZVByb2ZpbGVyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXggZDE1YzFlYi4uMjZmN2MxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKQEAgLTk0LDEwICs5NCw2IEBAIGNsYXNz
IFN0b3JhZ2VBcmVhOwogY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OwogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi1jbGFzcyBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQ7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKIGNsYXNzIFdlYlNvY2tl
dEhhbmRzaGFrZVJlcXVlc3Q7CiBjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTsKQEAg
LTE1Myw5ICsxNDksNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogICAgIElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudCogZG9tU3RvcmFnZUFnZW50KCkgeyByZXR1cm4gbV9kb21T
dG9yYWdlQWdlbnQuZ2V0KCk7IH0KICNlbmRpZgotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAg
ICBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQqIGZpbGVTeXN0ZW1BZ2VudCgpIHsgcmV0dXJuIG1f
ZmlsZVN5c3RlbUFnZW50LmdldCgpOyB9Ci0jZW5kaWYKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKICAgICBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCogYnJvd3NlckRlYnVn
Z2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50LmdldCgpOyB9
CiAgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVidWdnZXJBZ2VudC5nZXQoKTsgfQpAQCAtMjk1LDEwICsyODgsNiBAQCBwcml2YXRl
OgogICAgIE93blB0cjxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+IG1fYXBwbGljYXRp
b25DYWNoZUFnZW50OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgUmVm
UHRyPEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4gbV9maWxlU3lzdGVtQWdlbnQ7Ci0jZW5kaWYK
LQogICAgIFJlZlB0cjxOb2RlPiBtX2hpZ2hsaWdodGVkTm9kZTsKICAgICBSZWZQdHI8Tm9kZT4g
bV9ub2RlVG9Gb2N1czsKICAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4gbV9yZXNv
dXJjZUFnZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCAyNzc2YzU2Li4xZmI5YzQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtNDEsOCArNDEsOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50KEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgSW5zcGVjdG9y
RnJvbnRlbmQqIGZyb250ZW5kKQotICAgIDogbV9pbnNwZWN0b3JBZ2VudChpbnNwZWN0b3JBZ2Vu
dCkKK0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50KERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwgSW5zcGVjdG9yRnJvbnRl
bmQqIGZyb250ZW5kKQorICAgIDogbV9kb2N1bWVudExvYWRlcihkb2N1bWVudExvYWRlcikKICAg
ICAsIG1fZnJvbnRlbmQoZnJvbnRlbmQpCiB7CiB9CkBAIC02MSw5ICs2MSw4IEBAIHZvaWQgSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKCkKIAogdm9p
ZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEFwcGxpY2F0aW9uQ2FjaGVzKFJl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIGFwcGxpY2F0aW9uQ2FjaGVzKQogewotICAgIERvY3VtZW50
TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IG1faW5zcGVjdG9yQWdlbnQtPmluc3BlY3RlZFBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpOwotICAgIGlmIChkb2N1
bWVudExvYWRlcikgewotICAgICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdCogaG9zdCA9IGRvY3Vt
ZW50TG9hZGVyLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpOworICAgIGlmIChtX2RvY3VtZW50TG9h
ZGVyKSB7CisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBob3N0ID0gbV9kb2N1bWVudExv
YWRlci0+YXBwbGljYXRpb25DYWNoZUhvc3QoKTsKICAgICAgICAgQXBwbGljYXRpb25DYWNoZUhv
c3Q6OkNhY2hlSW5mbyBpbmZvID0gaG9zdC0+YXBwbGljYXRpb25DYWNoZUluZm8oKTsKIAogICAg
ICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCByZXNvdXJjZXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmgKaW5kZXggYjkzNTJmZS4uMDgxMDk0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQu
aApAQCAtMzMsNiArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERvY3Vt
ZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIElu
c3BlY3RvckFnZW50OwpAQCAtNDQsNyArNDUsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwog
Y2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50IHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5z
cGVjdG9yQWdlbnQqLCBJbnNwZWN0b3JGcm9udGVuZCopOworICAgIEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudChEb2N1bWVudExvYWRlciosIEluc3BlY3RvckZyb250ZW5kKik7CiAgICAg
fkluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpIHsgfQogCiAgICAgLy8gQmFja2VuZCB0
byBGcm9udGVuZApAQCAtNTksNyArNjAsNyBAQCBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+IGJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKGNvbnN0
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0Jik7CiAgICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm8mKTsKIAotICAgIEluc3Bl
Y3RvckFnZW50KiBtX2luc3BlY3RvckFnZW50OworICAgIERvY3VtZW50TG9hZGVyKiBtX2RvY3Vt
ZW50TG9hZGVyOwogICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY3Yzk3YS4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikg
JiYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCi0j
aW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAi
RmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJh
bWVUcmVlLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgIkxvY2FsRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnRDYWxsYmFja3MgOiBwdWJsaWMgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
IHsKLXB1YmxpYzoKLSAgICBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnRDYWxsYmFja3MoSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50KiBhZ2VudCwgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYgb3JpZ2luKQotICAgICAgICA6IG1fYWdlbnQoYWdlbnQpCi0gICAgICAgICwg
bV90eXBlKHR5cGUpCi0gICAgICAgICwgbV9vcmlnaW4ob3JpZ2luKQotICAgIHsgCi0gICAgfQot
Ci0gICAgfkluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudENhbGxiYWNrcygpCi0gICAgewotICAgIH0K
LQotICAgIC8vIEZpbGVTeXN0ZW1DYWxsYmFja3MgaXMgb25seSB1c2VkIGZvciBnZXR0aW5nIGZp
bGVzeXN0ZW0uIEFsbCBvdGhlciBtZXRob2RzIGFyZSBpcnJlbGV2YW50IGFuZCB3aWxsIG5vdCBi
ZSBjYWxsZWQuCi0gICAgdm9pZCBkaWRTdWNjZWVkKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3Qg
U3RyaW5nJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0pCi0gICAgewot
ICAgICAgICAvLyBBZ2VudCB3aWxsIGJlIGFsaXZlIGV2ZW4gaWYgSW5zcGVjdG9yQWdlbnQgaXMg
ZGVzdHJveWVkIHVudGlsIGNhbGxiYWNrIGlzIHJ1bi4KLSAgICAgICAgbV9hZ2VudC0+ZGlkR2V0
RmlsZVN5c3RlbVBhdGgoZmlsZVN5c3RlbS0+cm9vdCgpLCBtX3R5cGUsIG1fb3JpZ2luKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGRpZFJlYWRNZXRhZGF0YShjb25zdCBGaWxlTWV0YWRhdGEmKQotICAg
IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgdm9pZCBkaWRS
ZWFkRGlyZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiwgYm9vbCkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHZvaWQgZGlkUmVhZERpcmVjdG9yeUVu
dHJpZXMoYm9vbCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0K
LQotICAgIHZvaWQgZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRl
cj4sIGxvbmcgbG9uZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IH0KLSAgICAKLSAgICB2b2lkIGRpZEZhaWwoaW50KQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6
IElzIGl0IHVzZWZ1bCB0byBnaXZlIGJhY2sgdGhlIGNvZGUgdG8gSW5zcGVjdG9yIFVJPwotICAg
ICAgICBtX2FnZW50LT5kaWRHZXRGaWxlU3lzdGVtRXJyb3IobV90eXBlLCBtX29yaWdpbik7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+IG1f
YWdlbnQ7Ci0gICAgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIG1fdHlwZTsKLSAgICBTdHJpbmcgbV9v
cmlnaW47Ci19OwotCi1JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6Okluc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIEluc3BlY3RvckZyb250ZW5k
KiBmcm9udGVuZCkKLSAgICA6IG1faW5zcGVjdG9yQWdlbnQoaW5zcGVjdG9yQWdlbnQpCi0gICAg
LCBtX2Zyb250ZW5kKGZyb250ZW5kKQotewotfQotCi1JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6
On5JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoKSB7IH0KLQotdm9pZCBJbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnQ6OnN0b3AoKQotewotICAgIG1faW5zcGVjdG9yQWdlbnQgPSAwOwotfQotCi0jaWYg
UExBVEZPUk0oQ0hST01JVU0pCi12b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmV2ZWFs
Rm9sZGVySW5PUyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgLy8gRklYTUU6IFJlbW92ZSBn
dWFyZCB3aGVuIHJldmVhbEZvbGRlckluT1MgaXMgaW1wbGVtZW50ZWQgZm9yIG5vbi1jaHJvbWl1
bSBwbGF0Zm9ybXMuCi0gICAgV2ViQ29yZTo6cmV2ZWFsRm9sZGVySW5PUyhwYXRoKTsKLX0KLSNl
bHNlCi12b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmV2ZWFsRm9sZGVySW5PUyhjb25z
dCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0jZW5kaWYKLQotdm9pZCBJ
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmdldEZpbGVTeXN0ZW1QYXRoQXN5bmModW5zaWduZWQg
aW50IHR5cGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQotewotICAgIGlmICghUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6ZmlsZVN5c3RlbUVuYWJsZWQoKSkgewotICAgICAgICBtX2Zyb250ZW5kLT5k
aWRHZXRGaWxlU3lzdGVtRGlzYWJsZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEFzeW5jRmlsZVN5c3RlbTo6VHlwZSBhc3luY0ZpbGVTeXN0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8
QXN5bmNGaWxlU3lzdGVtOjpUeXBlPih0eXBlKTsKLSAgICBGcmFtZSogbWFpbkZyYW1lID0gbV9p
bnNwZWN0b3JBZ2VudC0+aW5zcGVjdGVkUGFnZSgpLT5tYWluRnJhbWUoKTsKLSAgICBmb3IgKEZy
YW1lKiBmcmFtZSA9IG1haW5GcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJh
dmVyc2VOZXh0KCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3Vt
ZW50KCk7Ci0gICAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4o
KS0+dG9TdHJpbmcoKSA9PSBvcmlnaW4pIHsKLSAgICAgICAgICAgIExvY2FsRmlsZVN5c3RlbTo6
bG9jYWxGaWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0oZG9jdW1lbnQsIGFzeW5jRmlsZVN5c3Rl
bVR5cGUsIDAsIG5ldyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnRDYWxsYmFja3ModGhpcywgYXN5
bmNGaWxlU3lzdGVtVHlwZSwgb3JpZ2luKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLXZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpkaWRHZXRGaWxl
U3lzdGVtUGF0aChjb25zdCBTdHJpbmcmIHJvb3QsIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBl
LCBjb25zdCBTdHJpbmcmIG9yaWdpbikKLXsKLSAgICAvLyBXaGVuIGNvbnRyb2xsZXIgaXMgYmVp
bmcgZGVzdHJveWVkLCB0aGlzIGlzIHNldCB0byAwLiBBZ2VudCBjYW4gbGl2ZSBldmVuIGFmdGVy
IG1faW5zcGVjdG9yQWdlbnQgaXMgZGVzdHJveWVkLgotICAgIGlmICghbV9pbnNwZWN0b3JBZ2Vu
dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9mcm9udGVuZC0+ZGlkR2V0RmlsZVN5c3RlbVBh
dGgocm9vdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih0eXBlKSwgb3JpZ2luKTsKLX0KLQot
dm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRpZEdldEZpbGVTeXN0ZW1FcnJvcihBc3lu
Y0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCi17Ci0gICAgLy8g
V2hlbiBjb250cm9sbGVyIGlzIGJlaW5nIGRlc3Ryb3llZCwgdGhpcyBpcyBzZXQgdG8gMC4gQWdl
bnQgY2FuIGxpdmUgZXZlbiBhZnRlciBtX2luc3BlY3RvckFnZW50IGlzIGRlc3Ryb3llZC4KLSAg
ICBpZiAoIW1faW5zcGVjdG9yQWdlbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2Zyb250ZW5k
LT5kaWRHZXRGaWxlU3lzdGVtRXJyb3Ioc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih0eXBlKSwg
b3JpZ2luKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KElOU1BFQ1RPUikgJiYgRU5BQkxFKEZJTEVfU1lTVEVNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiOTk1ZDcwLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudF9oCi0jZGVmaW5lIEluc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudF9oCi0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoRklM
RV9TWVNURU0pCi0KLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERvY3VtZW50OwotY2xhc3MgSW5zcGVjdG9yQWdl
bnQ7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKLWNsYXNzIExvY2FsRmlsZVN5c3RlbTsKLQot
Y2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50IDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50PiBjcmVhdGUoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFn
ZW50LCBJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudChpbnNwZWN0b3JBZ2VudCwgZnJv
bnRlbmQpKTsKLSAgICB9Ci0KLSAgICB+SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KCk7Ci0gICAg
dm9pZCBzdG9wKCk7Ci0KLSAgICAvLyBGcm9tIEZyb250ZW5kCi0gICAgdm9pZCBnZXRGaWxlU3lz
dGVtUGF0aEFzeW5jKHVuc2lnbmVkIGludCB0eXBlLCBjb25zdCBTdHJpbmcmIG9yaWdpbik7Ci0g
ICAgdm9pZCByZXZlYWxGb2xkZXJJbk9TKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0KLSAgICAvLyBC
YWNrZW5kIHRvIEZyb250ZW5kCi0gICAgdm9pZCBkaWRHZXRGaWxlU3lzdGVtUGF0aChjb25zdCBT
dHJpbmcmLCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKLSAg
ICB2b2lkIGRpZEdldEZpbGVTeXN0ZW1FcnJvcihBc3luY0ZpbGVTeXN0ZW06OlR5cGUsIGNvbnN0
IFN0cmluZyYgb3JpZ2luKTsKLSAgICB2b2lkIGRpZEdldEZpbGVTeXN0ZW1EaXNhYmxlZCgpOwot
Ci1wcml2YXRlOgotICAgIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudChJbnNwZWN0b3JBZ2VudCos
IEluc3BlY3RvckZyb250ZW5kKik7Ci0gICAgdm9pZCBnZXRGaWxlU3lzdGVtUm9vdChBc3luY0Zp
bGVTeXN0ZW06OlR5cGUpOwotCi0gICAgSW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7
Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmQqIG1fZnJvbnRlbmQ7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoRklMRV9T
WVNURU0pCi0jZW5kaWYgLy8gSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5k
ZXggMDc0NTA1ZS4uMzk5OTI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTM3MiwxMiArMzcyLDEyIEBAIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNhbGN1bGF0ZVN0eWxlSW1wbChjb25z
dCBJbnNwZWN0b3JJbnN0cnVtZW50CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlY2FsY3Vs
YXRlU3R5bGUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50aWZp
ZXJGb3JJbml0aWFsUmVxdWVzdEltcGwoSW5zcGVjdG9yQWdlbnQqIGljLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppZGVudGlmaWVyRm9y
SW5pdGlhbFJlcXVlc3RJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgaWYgKCFpYy0+ZW5hYmxlZCgpKQorICAgIGlmICgh
aW5zcGVjdG9yQWdlbnQtPmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKElu
c3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdl
bnQoaWMpKQorICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0g
cmV0cmlldmVSZXNvdXJjZUFnZW50KGluc3BlY3RvckFnZW50KSkKICAgICAgICAgcmVzb3VyY2VB
Z2VudC0+aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIHJlcXVlc3QudXJs
KCksIGxvYWRlcik7CiB9CiAKQEAgLTM4NiwyNSArMzg2LDI1IEBAIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjphcHBseVVzZXJBZ2VudE92ZXJyaWRlSW1wbChJbnNwZWN0b3JBZ2VudCog
aW5zcGVjCiAgICAgaW5zcGVjdG9yQWdlbnQtPmFwcGx5VXNlckFnZW50T3ZlcnJpZGUodXNlckFn
ZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVz
dEltcGwoSW5zcGVjdG9yQWdlbnQqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3RJbXBs
KEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5l
QWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaWMpKQorICAgIGlmIChJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3Rv
ckFnZW50KSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFNlbmRSZXNvdXJjZVJlcXVlc3Qo
aWRlbnRpZmllciwgcmVxdWVzdCk7Ci0gICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJl
c291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaWMpKQorICAgIGlmIChJbnNwZWN0
b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGlu
c3BlY3RvckFnZW50KSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+d2lsbFNlbmRSZXF1ZXN0KGlk
ZW50aWZpZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogfQogCi12b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKEluc3BlY3RvckFnZW50
KiBpYywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Om1hcmtSZXNvdXJjZUFzQ2FjaGVkSW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9y
QWdlbnQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIHsKLSAgICBpZiAoSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisg
ICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJl
c291cmNlQWdlbnQoaW5zcGVjdG9yQWdlbnQpKQogICAgICAgICByZXNvdXJjZUFnZW50LT5tYXJr
UmVzb3VyY2VBc0NhY2hlZChpZGVudGlmaWVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zcGVjdG9yQWdl
bnQqIGljLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBDYWNoZWRSZXNvdXJjZSogY2Fj
aGVkUmVzb3VyY2UpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlSW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJj
ZSkKIHsKLSAgICBpZiAoIWljLT5lbmFibGVkKCkpCisgICAgaWYgKCFpbnNwZWN0b3JBZ2VudC0+
ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdl
bnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaWMpKQorICAgIGlmIChJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFn
ZW50KGluc3BlY3RvckFnZW50KSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlKGxvYWRlciwgY2FjaGVkUmVzb3VyY2UpOwogfQogCkBAIC00Mzgs
NDcgKzQzOCw0NyBAQCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcAogCiB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKGNvbnN0IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewotICAgIEluc3BlY3RvckFnZW50KiBpYyA9IGNvb2tpZS5maXJzdDsKLSAgICBpZiAo
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VB
Z2VudChpYykpCisgICAgSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50ID0gY29va2llLmZp
cnN0OworICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0
cmlldmVSZXNvdXJjZUFnZW50KGluc3BlY3RvckFnZW50KSkKICAgICAgICAgcmVzb3VyY2VBZ2Vu
dC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIGxvYWRlciwgcmVzcG9uc2UpOwotICAg
IGljLT5jb25zb2xlQWdlbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3Bv
bnNlKTsKKyAgICBpbnNwZWN0b3JBZ2VudC0+Y29uc29sZUFnZW50KCktPmRpZFJlY2VpdmVSZXNw
b25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiAgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29va2llKSkKICAgICAg
ICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoSW1wbChJ
bnNwZWN0b3JBZ2VudCogaWMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGxlbmd0aFJl
Y2VpdmVkKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50
TGVuZ3RoSW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgaW50IGxlbmd0aFJlY2VpdmVkKQogewotICAgIGlmIChJbnNwZWN0b3JSZXNv
dXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKKyAg
ICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVz
b3VyY2VBZ2VudChpbnNwZWN0b3JBZ2VudCkpCiAgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZFJl
Y2VpdmVDb250ZW50TGVuZ3RoKGlkZW50aWZpZXIsIGxlbmd0aFJlY2VpdmVkKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJbXBsKEluc3BlY3Rv
ckFnZW50KiBpYywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkK
K3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnNw
ZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91
YmxlIGZpbmlzaFRpbWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVs
aW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaWMpKQorICAgIGlmIChJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3Bl
Y3RvckFnZW50KSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRmluaXNoTG9hZGluZ1Jlc291
cmNlKGlkZW50aWZpZXIsIGZhbHNlLCBmaW5pc2hUaW1lKTsKLSAgICBpZiAoSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisg
ICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJl
c291cmNlQWdlbnQoaW5zcGVjdG9yQWdlbnQpKQogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRG
aW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOwogfQogCi12b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBsKEluc3BlY3RvckFnZW50KiBpYywg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZ0ltcGwoSW5zcGVjdG9y
QWdlbnQqIGluc3BlY3RvckFnZW50LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGljLT5jb25zb2xlQWdlbnQoKS0+ZGlkRmFpbExv
YWRpbmcoaWRlbnRpZmllciwgZXJyb3IpOwotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50
KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGljKSkKKyAgICBpbnNwZWN0
b3JBZ2VudC0+Y29uc29sZUFnZW50KCktPmRpZEZhaWxMb2FkaW5nKGlkZW50aWZpZXIsIGVycm9y
KTsKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJp
ZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JBZ2VudCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQt
PmRpZEZpbmlzaExvYWRpbmdSZXNvdXJjZShpZGVudGlmaWVyLCB0cnVlLCAwKTsKLSAgICBpZiAo
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VB
Z2VudChpYykpCisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQg
PSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaW5zcGVjdG9yQWdlbnQpKQogICAgICAgICByZXNvdXJj
ZUFnZW50LT5kaWRGYWlsTG9hZGluZyhpZGVudGlmaWVyLCBlcnJvcik7CiB9CiAKLXZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3RJ
bXBsKEluc3BlY3RvckFnZW50KiBpYywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2Vu
ZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbChJbnNwZWN0b3JBZ2Vu
dCogaW5zcGVjdG9yQWdlbnQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkws
IHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKQogewotICAgIGljLT5jb25zb2xlQWdlbnQoKS0+cmVz
b3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVybCwgc2VuZFVSTCwgc2VuZExpbmVOdW1i
ZXIpOwotICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0
cmlldmVSZXNvdXJjZUFnZW50KGljKSkKKyAgICBpbnNwZWN0b3JBZ2VudC0+Y29uc29sZUFnZW50
KCktPnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1cmwsIHNlbmRVUkwsIHNlbmRM
aW5lTnVtYmVyKTsKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2Vu
dCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpbnNwZWN0b3JBZ2VudCkpCiAgICAgICAgIHJlc291
cmNlQWdlbnQtPnNldEluaXRpYWxDb250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgIlhI
UiIpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWRJ
bXBsKEluc3BlY3RvckFnZW50KiBpYywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVN0cmluZykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3Jp
cHRJbXBvcnRlZEltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKQogewotICAgIGlmIChJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFn
ZW50KGljKSkKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9
IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpbnNwZWN0b3JBZ2VudCkpCiAgICAgICAgIHJlc291cmNl
QWdlbnQtPnNldEluaXRpYWxDb250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgIlNjcmlw
dCIpOwogfQogCkBAIC02MzEsMTUgKzYzMSwxNSBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ2xvc2VXZWJTb2NrZXRJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQotdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246Om5ldHdvcmtTdGF0ZUNoYW5nZWRJbXBsKEluc3BlY3RvckFn
ZW50KiBpYykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpuZXR3b3JrU3RhdGVDaGFu
Z2VkSW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQpCiB7Ci0gICAgaWYgKEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogYXBwbGljYXRpb25DYWNoZUFnZW50ID0gaWMtPmFw
cGxpY2F0aW9uQ2FjaGVBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQqIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9IGluc3BlY3RvckFnZW50LT5hcHBsaWNhdGlv
bkNhY2hlQWdlbnQoKSkKICAgICAgICAgYXBwbGljYXRpb25DYWNoZUFnZW50LT5uZXR3b3JrU3Rh
dGVDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1cGRhdGVB
cHBsaWNhdGlvbkNhY2hlU3RhdHVzSW1wbChJbnNwZWN0b3JBZ2VudCogaWMsIEZyYW1lKiBmcmFt
ZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1cGRhdGVBcHBsaWNhdGlvbkNhY2hl
U3RhdHVzSW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIEZyYW1lKiBmcmFtZSkK
IHsKLSAgICBpZiAoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KiBhcHBsaWNhdGlvbkNh
Y2hlQWdlbnQgPSBpYy0+YXBwbGljYXRpb25DYWNoZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogYXBwbGljYXRpb25DYWNoZUFnZW50ID0gaW5zcGVjdG9y
QWdlbnQtPmFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpKQogICAgICAgICBhcHBsaWNhdGlvbkNhY2hl
QWdlbnQtPnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMoZnJhbWUpOwogfQogI2VuZGlmCkBA
IC02NzgsOSArNjc4LDkgQEAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpyZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29uc3QgSW4KICAgICByZXR1cm4gMDsK
IH0KIAotSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpy
ZXRyaWV2ZVJlc291cmNlQWdlbnQoSW5zcGVjdG9yQWdlbnQqIGljKQorSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXRyaWV2ZVJlc291cmNlQWdlbnQo
SW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50KQogewotICAgIHJldHVybiBpYy0+cmVzb3Vy
Y2VBZ2VudCgpOworICAgIHJldHVybiBpbnNwZWN0b3JBZ2VudC0+cmVzb3VyY2VBZ2VudCgpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTZmMjFhNC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjExICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci1XZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIgPSBmdW5jdGlvbigpCi17Ci19Ci0K
LS8vIEtlZXAgaW4gc3luYyB3aXRoIFR5cGUgaW4gQXN5bmNGaWxlU3lzdGVtLmgKLVdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5URU1QT1JBUlkgPSAwOwotV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1EaXNwYXRjaGVyLlBFUlNJU1RFTlQgPSAxOwotCi1XZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbURpc3BhdGNoZXIucHJvdG90eXBlID0gewotICAgIGdldEZpbGVTeXN0ZW1QYXRoc0FzeW5j
OiBmdW5jdGlvbihvcmlnaW4pCi0gICAgewotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldEZp
bGVTeXN0ZW1QYXRoQXN5bmMoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyLlBFUlNJ
U1RFTlQsIG9yaWdpbik7Ci0gICAgICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0RmlsZVN5c3RlbVBh
dGhBc3luYyhXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIuVEVNUE9SQVJZLCBvcmln
aW4pOwotICAgIH0sCi0KLSAgICBkaWRHZXRGaWxlU3lzdGVtUGF0aDogZnVuY3Rpb24ocm9vdCwg
dHlwZSwgb3JpZ2luKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJj
ZXMudXBkYXRlRmlsZVN5c3RlbVBhdGgocm9vdCwgdHlwZSwgb3JpZ2luKTsKLSAgICB9LAotCi0g
ICAgZGlkR2V0RmlsZVN5c3RlbUVycm9yOiBmdW5jdGlvbih0eXBlLCBvcmlnaW4pCi0gICAgewot
ICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy51cGRhdGVGaWxlU3lzdGVtRXJy
b3IodHlwZSwgb3JpZ2luKTsKLSAgICB9LAotCi0gICAgZGlkR2V0RmlsZVN5c3RlbURpc2FibGVk
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNl
cy5zZXRGaWxlU3lzdGVtRGlzYWJsZWQoKTsKLSAgICB9Ci19Ci0KLUluc3BlY3RvckJhY2tlbmQu
cmVnaXN0ZXJEb21haW5EaXNwYXRjaGVyKCJGaWxlU3lzdGVtIiwgbmV3IFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtRGlzcGF0Y2hlcigpKTsKLQotV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3ID0g
ZnVuY3Rpb24odHJlZUVsZW1lbnQsIGZpbGVTeXN0ZW1PcmlnaW4pCi17Ci0gICAgV2ViSW5zcGVj
dG9yLlZpZXcuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJy
ZXNvdXJjZS12aWV3Iik7Ci0gICAgdGhpcy5fdHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVudDsKLSAg
ICB0aGlzLl9vcmlnaW4gPSBmaWxlU3lzdGVtT3JpZ2luOwotICAgIHRoaXMuX3RhYmJlZFBhbmUg
PSBuZXcgV2ViSW5zcGVjdG9yLlRhYmJlZFBhbmUodGhpcy5lbGVtZW50KTsKLQotICAgIHRoaXMu
X3BlcnNpc3RlbnRGaWxlU3lzdGVtRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwotICAgIHRoaXMuX3BlcnNpc3RlbnRGaWxlU3lzdGVtRWxlbWVudC5jbGFzc05hbWUgPSAi
cmVzb3VyY2Utdmlldy1oZWFkZXJzIjsKLSAgICB0aGlzLl90YWJiZWRQYW5lLmFwcGVuZFRhYigi
cGVyc2lzdGVudCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGVyc2lzdGVudCBGaWxlIFN5c3Rl
bSIpLCB0aGlzLl9wZXJzaXN0ZW50RmlsZVN5c3RlbUVsZW1lbnQsIHRoaXMuX3NlbGVjdEZpbGVT
eXN0ZW1UYWIuYmluZCh0aGlzLCB0cnVlKSk7Ci0KLSAgICB0aGlzLl90ZW1wRmlsZVN5c3RlbUVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl90ZW1wRmls
ZVN5c3RlbUVsZW1lbnQuY2xhc3NOYW1lID0gInJlc291cmNlLXZpZXctaGVhZGVycyI7Ci0gICAg
dGhpcy5fdGFiYmVkUGFuZS5hcHBlbmRUYWIoInRlbXAiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlRlbXBvcmFyeSBGaWxlIFN5c3RlbSIpLCB0aGlzLl90ZW1wRmlsZVN5c3RlbUVsZW1lbnQsIHRo
aXMuc2VsZWN0VGVtcG9yYXJ5RmlsZVN5c3RlbVRhYi5iaW5kKHRoaXMsIHRydWUpKTsKLQotICAg
IHRoaXMuX3RlbXBvcmFyeVJvb3QgPSAiIjsKLSAgICB0aGlzLl9wZXJzaXN0ZW50Um9vdCA9ICIi
OwotICAgIHRoaXMuX2lzRmlsZVN5c3RlbURpc2FibGVkID0gZmFsc2U7Ci0gICAgdGhpcy5fcGVy
c2lzdGVudFJvb3RFcnJvciA9IGZhbHNlOwotICAgIHRoaXMuX3RlbXBvcmFyeVJvb3RFcnJvciA9
IGZhbHNlOwotICAgIHRoaXMuZmlsZVN5c3RlbVZpc2libGUgPSB0cnVlOwotICAgIHRoaXMuX3Nl
bGVjdEZpbGVTeXN0ZW1UYWIoKTsKLSAgICB0aGlzLnJlZnJlc2hGaWxlU3lzdGVtKCk7Ci19Ci0K
LVdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgc2hvdzogZnVu
Y3Rpb24ocGFyZW50RWxlbWVudCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5WaWV3LnBy
b3RvdHlwZS5zaG93LmNhbGwodGhpcywgcGFyZW50RWxlbWVudCk7Ci0gICAgICAgIHRoaXMuX3Vw
ZGF0ZSgpOwotICAgIH0sCi0KLSAgICBzZXQgZmlsZVN5c3RlbVZpc2libGUoeCkKLSAgICB7Ci0g
ICAgICAgIGlmICh4ID09PSB0aGlzLl9maWxlU3lzdGVtVmlzaWJsZSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgdGhpcy5fZmlsZVN5c3RlbVZpc2libGUgPSB4OwotICAgICAgICBpZiAo
eCkKLSAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoZWFkZXJzLXZpc2li
bGUiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZVN0eWxl
Q2xhc3MoImhlYWRlcnMtdmlzaWJsZSIpOyAKLSAgICAgICAgdGhpcy5fc2VsZWN0RmlsZVN5c3Rl
bVRhYigpOwotICAgIH0sCi0KLSAgICBfdXBkYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICB0aGlzLl9zZWxlY3RGaWxlU3lzdGVtVGFiKCk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtLmdldEZpbGVTeXN0ZW1QYXRoc0FzeW5jKHRoaXMuX29yaWdpbik7Ci0gICAgfSwKLQot
ICAgIHVwZGF0ZUZpbGVTeXN0ZW1QYXRoOiBmdW5jdGlvbihyb290LCB0eXBlLCBvcmlnaW4pCi0g
ICAgewotICAgICAgICBpZiAob3JpZ2luID09IHRoaXMuX29yaWdpbiAmJiB0eXBlID09IFdlYklu
c3BlY3Rvci5GaWxlU3lzdGVtLlBFUlNJU1RFTlQpIHsKLSAgICAgICAgICAgIHRoaXMuX3BlcnNp
c3RlbnRSb290ID0gcm9vdDsKLSAgICAgICAgICAgIHRoaXMuX3BlcnNpc3RlbnRSb290RXJyb3Ig
PSBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKG9yaWdpbiA9PSB0aGlz
Ll9vcmlnaW4gJiYgdHlwZSA9PSBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbS5URU1QT1JBUlkpIHsK
LSAgICAgICAgICAgIHRoaXMuX3RlbXBvcmFyeVJvb3QgPSByb290OwotICAgICAgICAgICAgdGhp
cy5fdGVtcG9yYXJ5Um9vdEVycm9yRXJyb3IgPSBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAg
IHRoaXMucmVmcmVzaEZpbGVTeXN0ZW0oKTsKLSAgICB9LAotICAgIAotICAgIHVwZGF0ZUZpbGVT
eXN0ZW1FcnJvcjogZnVuY3Rpb24odHlwZSwgb3JpZ2luKQotICAgIHsKLSAgICAgICAgaWYgKHR5
cGUgPT0gV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0uUEVSU0lTVEVOVCkKLSAgICAgICAgICAgIHRo
aXMuX3BlcnNpc3RlbnRSb290RXJyb3IgPSB0cnVlOwotICAgICAgICAKLSAgICAgICAgaWYgKHR5
cGUgPT0gV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0uVEVNUE9SQVJZKQotICAgICAgICAgICAgdGhp
cy5fdGVtcG9yYXJ5Um9vdEVycm9yID0gdHJ1ZTsKLQotICAgICAgICB0aGlzLnJlZnJlc2hGaWxl
U3lzdGVtKCk7Ci0gICAgfSwKLSAgICAKLSAgICBzZXRGaWxlU3lzdGVtRGlzYWJsZWQ6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2lzRmlsZVN5c3RlbURpc2FibGVkID0gdHJ1ZTsK
LSAgICAgICAgdGhpcy5yZWZyZXNoRmlsZVN5c3RlbSgpOwotICAgIH0sCi0gICAgX3NlbGVjdEZp
bGVTeXN0ZW1UYWI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3RhYmJlZFBhbmUu
c2VsZWN0VGFiKCJwZXJzaXN0ZW50Iik7Ci0gICAgfSwKLSAgICAKLSAgICBzZWxlY3RUZW1wb3Jh
cnlGaWxlU3lzdGVtVGFiOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl90YWJiZWRQ
YW5lLnNlbGVjdFRhYigidGVtcCIpOwotICAgIH0sCi0KLSAgICBfcmV2ZWFsUGVyc2lzdGVudEZv
bGRlckluT1M6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvckJhY2tlbmQucmV2
ZWFsRm9sZGVySW5PUyh0aGlzLl9wZXJzaXN0ZW50Um9vdCk7Ci0gICAgfSwKLSAgICAKLSAgICBf
cmV2ZWFsVGVtcG9yYXJ5Rm9sZGVySW5PUzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC5yZXZlYWxGb2xkZXJJbk9TKHRoaXMuX3RlbXBvcmFyeVJvb3QpOwotICAg
IH0sCi0gICAgCi0gICAgX2NyZWF0ZVRleHRBbmRCdXR0b246IGZ1bmN0aW9uKGZpbGVTeXN0ZW1F
bGVtZW50LCByb290UGF0aFRleHQsIHR5cGUsIGlzRXJyb3IpCi0gICAgewotICAgICAgICBmaWxl
U3lzdGVtRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotICAgICAgICB2YXIgcm9vdFBhdGggPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbGUgU3lzdGVtIHJvb3QgcGF0aCBub3QgYXZhaWxhYmxl
LiIpOwotICAgICAgICBpZiAodGhpcy5faXNGaWxlU3lzdGVtRGlzYWJsZWQpCi0gICAgICAgICAg
ICByb290UGF0aCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmlsZSBTeXN0ZW0gaXMgZGlzYWJs
ZWQuIik7Ci0gICAgICAgIGVsc2UgaWYgKGlzRXJyb3IpCi0gICAgICAgICAgICByb290UGF0aCA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXJyb3IgaW4gZmV0Y2hpbmcgcm9vdCBwYXRoIGZvciBm
aWxlIHN5c3RlbS4iKTsKLSAgICAgICAgZWxzZSBpZiAocm9vdFBhdGhUZXh0KQotICAgICAgICAg
ICAgcm9vdFBhdGggPSByb290UGF0aFRleHQ7Ci0KLSAgICAgICAgdmFyIHJvb3RUZXh0Tm9kZSA9
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJSb290OiAiICsgcm9vdFBhdGguZXNjYXBlSFRNTCgp
KTsKLSAgICAgICAgdmFyIHJvb3RTeXN0ZW1FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgICAgIHJvb3RTeXN0ZW1FbGVtZW50LmNsYXNzTmFtZSA9ICJoZWFkZXIt
dmFsdWUgc291cmNlLWNvZGUiOwotICAgICAgICByb290U3lzdGVtRWxlbWVudC5hcHBlbmRDaGls
ZChyb290VGV4dE5vZGUpOwotICAgICAgICBmaWxlU3lzdGVtRWxlbWVudC5hcHBlbmRDaGlsZChy
b290U3lzdGVtRWxlbWVudCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgaWYgKCFpc0Vycm9yICYm
IHJvb3RQYXRoVGV4dCkgewotICAgICAgICAgICAgLy8gQXBwZW5kIEJyb3dzZSBidXR0b24gaWZm
IHJvb3QgcGF0aCBpcyBhdmFpbGFibGUgYW5kIGl0IGlzIG5vdCBhbiBlcnJvci4KLSAgICAgICAg
ICAgIHZhciBjb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwot
ICAgICAgICAgICAgY29udGVudEVsZW1lbnQuY2xhc3NOYW1lID0gInBhbmVsLWVuYWJsZXItdmll
dy1jb250ZW50IjsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1FbGVtZW50LmFwcGVuZENoaWxkKGNv
bnRlbnRFbGVtZW50KTsKLSAgICAgICAgICAgIHZhciBjaG9pY2VzRm9ybSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImZvcm0iKTsKLSAgICAgICAgICAgIGNvbnRlbnRFbGVtZW50LmFwcGVuZENo
aWxkKGNob2ljZXNGb3JtKTsKLSAgICAgICAgICAgIHZhciBlbmFibGVCdXR0b24gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsKLSAgICAgICAgICAgIGVuYWJsZUJ1dHRvbi5zZXRB
dHRyaWJ1dGUoInR5cGUiLCAiYnV0dG9uIik7Ci0gICAgICAgICAgICBlbmFibGVCdXR0b24udGV4
dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJldmVhbCBmb2xkZXIgaW4gT1MiKTsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBCaW5kIHRoaXMgZGlyZWN0bHkgdG8gSW5zcGVjdG9yQmFj
a2VuZC4KLSAgICAgICAgICAgIGlmICh0eXBlID09IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtLlBF
UlNJU1RFTlQpCi0gICAgICAgICAgICAgICAgZW5hYmxlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIo
ImNsaWNrIiwgdGhpcy5fcmV2ZWFsUGVyc2lzdGVudEZvbGRlckluT1MuYmluZCh0aGlzKSwgZmFs
c2UpOwotICAgICAgICAgICAgaWYgKHR5cGUgPT0gV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0uVEVN
UE9SQVJZKQotICAgICAgICAgICAgICAgIGVuYWJsZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJj
bGljayIsIHRoaXMuX3JldmVhbFRlbXBvcmFyeUZvbGRlckluT1MuYmluZCh0aGlzKSwgZmFsc2Up
OwotICAgICAgICAgICAgY2hvaWNlc0Zvcm0uYXBwZW5kQ2hpbGQoZW5hYmxlQnV0dG9uKTsKLSAg
ICAgICAgICAgIGZpbGVTeXN0ZW1FbGVtZW50LmFwcGVuZENoaWxkKGNvbnRlbnRFbGVtZW50KTsK
LSAgICAgICAgfQotICAgIH0sCi0gICAgCi0gICAgcmVmcmVzaEZpbGVTeXN0ZW06IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2NyZWF0ZVRleHRBbmRCdXR0b24odGhpcy5fcGVyc2lz
dGVudEZpbGVTeXN0ZW1FbGVtZW50LCB0aGlzLl9wZXJzaXN0ZW50Um9vdCwgV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW0uUEVSU0lTVEVOVCwgdGhpcy5fcGVyc2lzdGVudFJvb3RFcnJvcik7Ci0gICAg
ICAgIHRoaXMuX2NyZWF0ZVRleHRBbmRCdXR0b24odGhpcy5fdGVtcEZpbGVTeXN0ZW1FbGVtZW50
LCB0aGlzLl90ZW1wb3JhcnlSb290LCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbS5URU1QT1JBUlks
IHRoaXMuX3RlbXBvcmFyeVJvb3RFcnJvcik7Ci0gICAgfSwgCi19Ci0KLVdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJv
dG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VzUGFuZWwuanMKaW5kZXggYzcwNzdhOS4uN2MwNjQ5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC01Niwx
MiArNTYsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwgPSBmdW5jdGlvbihkYXRhYmFz
ZSkKICAgICB0aGlzLmFwcGxpY2F0aW9uQ2FjaGVMaXN0VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5z
cGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50KHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQXBwbGljYXRpb24gQ2FjaGUiKSwgIkFwcGxpY2F0aW9uQ2FjaGUiLCAiYXBwbGljYXRp
b24tY2FjaGUtc3RvcmFnZS10cmVlLWl0ZW0iKTsKICAgICB0aGlzLnNpZGViYXJUcmVlLmFwcGVu
ZENoaWxkKHRoaXMuYXBwbGljYXRpb25DYWNoZUxpc3RUcmVlRWxlbWVudCk7CiAKLSAgICBpZiAo
UHJlZmVyZW5jZXMuZmlsZVN5c3RlbUVuYWJsZWQpIHsKLSAgICAgICAgdGhpcy5maWxlU3lzdGVt
TGlzdFRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlUcmVlRWxl
bWVudCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbGUgU3lzdGVtIiksICJGaWxlU3lz
dGVtIiwgImZpbGUtc3lzdGVtLXN0b3JhZ2UtdHJlZS1pdGVtIik7Ci0gICAgICAgIHRoaXMuc2lk
ZWJhclRyZWUuYXBwZW5kQ2hpbGQodGhpcy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50KTsKLSAg
ICAgICAgdGhpcy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LmV4cGFuZCgpOwotICAgIH0KLQog
ICAgIHRoaXMuc3RvcmFnZVZpZXdzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAg
ICAgdGhpcy5zdG9yYWdlVmlld3MuaWQgPSAic3RvcmFnZS12aWV3cyI7CiAgICAgdGhpcy5zdG9y
YWdlVmlld3MuY2xhc3NOYW1lID0gImRpZmYtY29udGFpbmVyIjsKQEAgLTE1NCw3ICsxNDgsNiBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
Ll9kb21TdG9yYWdlID0gW107CiAKICAgICAgICAgdGhpcy5fY29va2llVmlld3MgPSB7fTsKLSAg
ICAgICAgdGhpcy5fZmlsZVN5c3RlbVZpZXcgPSBudWxsOwogICAgICAgICAKICAgICAgICAgdGhp
cy5fYXBwbGljYXRpb25DYWNoZVZpZXcgPSBudWxsOwogICAgICAgICBkZWxldGUgdGhpcy5fY2Fj
aGVkQXBwbGljYXRpb25DYWNoZVZpZXdTdGF0dXM7CkBAIC0xNjQsOCArMTU3LDYgQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zZXNzaW9u
U3RvcmFnZUxpc3RUcmVlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLmNv
b2tpZUxpc3RUcmVlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLmFwcGxp
Y2F0aW9uQ2FjaGVMaXN0VHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgaWYg
KFByZWZlcmVuY2VzLmZpbGVTeXN0ZW1FbmFibGVkKQotICAgICAgICAgICAgdGhpcy5maWxlU3lz
dGVtTGlzdFRyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRoaXMuc3RvcmFn
ZVZpZXdzLnJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICAgICAgdGhpcy5zdG9yYWdlVmlld1N0YXR1
c0Jhckl0ZW1zQ29udGFpbmVyLnJlbW92ZUNoaWxkcmVuKCk7CkBAIC0yOTksMTYgKzI5MCw2IEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2
YXIgYXBwbGljYXRpb25DYWNoZVRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5BcHBsaWNh
dGlvbkNhY2hlVHJlZUVsZW1lbnQodGhpcywgZG9tYWluKTsKICAgICAgICAgICAgIHRoaXMuYXBw
bGljYXRpb25DYWNoZUxpc3RUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChhcHBsaWNhdGlvbkNhY2hl
VHJlZUVsZW1lbnQpOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKFByZWZlcmVuY2VzLmZpbGVT
eXN0ZW1FbmFibGVkKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbWF0Y2gg
dGhlIFNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZygpLCBhZGQgYSB0ZXN0IGZvciB0aGlzLgotICAg
ICAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gcGFyc2VkVVJMLnNjaGVtZSArICI6Ly8iICsg
cGFyc2VkVVJMLmhvc3QgKyAocGFyc2VkVVJMLnBvcnQgPyAoIjoiICsgcGFyc2VkVVJMLnBvcnQp
IDogIiIpOwotICAgICAgICAgICAgaWYgKCF0aGlzLl9vcmlnaW5zW3NlY3VyaXR5T3JpZ2luXSkg
ewotICAgICAgICAgICAgICAgIHRoaXMuX29yaWdpbnNbc2VjdXJpdHlPcmlnaW5dID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICB2YXIgZmlsZVN5c3RlbVRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQodGhpcywgc2VjdXJpdHlPcmlnaW4pOwotICAgICAg
ICAgICAgICAgIHRoaXMuZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChmaWxl
U3lzdGVtVHJlZUVsZW1lbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgfSwKIAog
ICAgIGFkZERPTVN0b3JhZ2U6IGZ1bmN0aW9uKGRvbVN0b3JhZ2UpCkBAIC00ODksMTIgKzQ3MCw2
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlVmlldy51cGRhdGVTdGF0dXModGhpcy5fY2FjaGVkQXBw
bGljYXRpb25DYWNoZVZpZXdTdGF0dXMpOwogICAgIH0sCiAKLSAgICBzaG93RmlsZVN5c3RlbTog
ZnVuY3Rpb24odHJlZUVsZW1lbnQsIG9yaWdpbikKLSAgICB7Ci0gICAgICAgIHRoaXMuX2ZpbGVT
eXN0ZW1WaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldyh0cmVlRWxlbWVudCwg
b3JpZ2luKTsKLSAgICAgICAgdGhpcy5faW5uZXJTaG93Vmlldyh0aGlzLl9maWxlU3lzdGVtVmll
dyk7Ci0gICAgfSwKLSAgICAKICAgICBzaG93Q2F0ZWdvcnlWaWV3OiBmdW5jdGlvbihjYXRlZ29y
eU5hbWUpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2NhdGVnb3J5VmlldykKQEAgLTY0Mywy
NCArNjE4LDYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVWaWV3LnVwZGF0ZVN0YXR1cyhzdGF0dXMp
OwogICAgIH0sCiAKLSAgICB1cGRhdGVGaWxlU3lzdGVtUGF0aDogZnVuY3Rpb24ocm9vdCwgdHlw
ZSwgb3JpZ2luKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2ZpbGVTeXN0ZW1WaWV3ICYmIHRo
aXMuX2ZpbGVTeXN0ZW1WaWV3ID09PSB0aGlzLnZpc2libGVWaWV3KQotICAgICAgICAgICAgdGhp
cy5fZmlsZVN5c3RlbVZpZXcudXBkYXRlRmlsZVN5c3RlbVBhdGgocm9vdCwgdHlwZSwgb3JpZ2lu
KTsgIAotICAgIH0sCi0gIAotICAgIHVwZGF0ZUZpbGVTeXN0ZW1FcnJvcjogZnVuY3Rpb24odHlw
ZSwgb3JpZ2luKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2ZpbGVTeXN0ZW1WaWV3ICYmIHRo
aXMuX2ZpbGVTeXN0ZW1WaWV3ID09PSB0aGlzLnZpc2libGVWaWV3KQotICAgICAgICAgICAgdGhp
cy5fZmlsZVN5c3RlbVZpZXcudXBkYXRlRmlsZVN5c3RlbUVycm9yKHR5cGUsIG9yaWdpbik7ICAK
LSAgICB9LAotICAgIAotICAgIHNldEZpbGVTeXN0ZW1EaXNhYmxlZDogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgaWYgKHRoaXMuX2ZpbGVTeXN0ZW1WaWV3ICYmIHRoaXMuX2ZpbGVTeXN0ZW1W
aWV3ID09PSB0aGlzLnZpc2libGVWaWV3KQotICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbVZp
ZXcuc2V0RmlsZVN5c3RlbURpc2FibGVkKCk7ICAKLSAgICB9LAotCiAgICAgdXBkYXRlTmV0d29y
a1N0YXRlOiBmdW5jdGlvbihpc05vd09ubGluZSkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9h
cHBsaWNhdGlvbkNhY2hlVmlldyAmJiB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlVmlldyA9PT0gdGhp
cy52aXNpYmxlVmlldykKQEAgLTEyODMsMjcgKzEyNDAsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VSZXZpc2lvblRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLlJlc291
cmNlUmV2aXNpb25UcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
LkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlOwogCi1XZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFnZVBhbmVsLCBvcmlnaW4pCi17Ci0gICAg
V2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBzdG9yYWdlUGFu
ZWwsIG51bGwsIG9yaWdpbiwgImZpbGUtc3lzdGVtLXN0b3JhZ2UtdHJlZS1pdGVtIik7Ci0gICAg
dGhpcy5fb3JpZ2luID0gb3JpZ2luOwotfQotCi1XZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBnZXQgaXRlbVVSTCgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gImZpbGUtc3lzdGVtOi8vIiArIGVuY29kZVVSSSh0aGlzLl9vcmlnaW4pOwotICAgIH0s
Ci0KLSAgICBvbnNlbGVjdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9y
LkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0LmNhbGwodGhpcyk7Ci0g
ICAgICAgIHRoaXMuX3N0b3JhZ2VQYW5lbC5zaG93RmlsZVN5c3RlbSh0aGlzLCB0aGlzLl9vcmln
aW4pOwotICAgIH0KLX0KLSAKLVdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LnBy
b3RvdHlwZTsKLSAKIFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlWaWV3ID0gZnVuY3Rpb24o
KQogewogICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRleCA4M2ViYWYwLi42OGI4MWE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdz
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMK
QEAgLTQ1LDcgKzQ1LDYgQEAgdmFyIFByZWZlcmVuY2VzID0gewogICAgIG9ubGluZURldGVjdGlv
bkVuYWJsZWQ6IHRydWUsCiAgICAgbmF0aXZlSW5zdHJ1bWVudGF0aW9uRW5hYmxlZDogZmFsc2Us
CiAgICAgcmVzb3VyY2VFeHBvcnRFbmFibGVkOiBmYWxzZSwKLSAgICBmaWxlU3lzdGVtRW5hYmxl
ZDogZmFsc2UsCiAgICAgdXNlRGF0YVVSTEZvclJlc291cmNlSW1hZ2VJY29uczogdHJ1ZSwKICAg
ICBzaG93VGltaW5nVGFiOiBmYWxzZSwKICAgICBzaG93Q29va2llc1RhYjogZmFsc2UsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggY2E2YmEy
OS4uZGQzMjViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2Vi
S2l0LnFyYwpAQCAtNDQsNyArNDQsNiBAQAogICAgIDxmaWxlPkV4dGVuc2lvblBhbmVsLmpzPC9m
aWxlPgogICAgIDxmaWxlPkV4dGVuc2lvblJlZ2lzdHJ5U3R1Yi5qczwvZmlsZT4KICAgICA8Zmls
ZT5FeHRlbnNpb25TZXJ2ZXIuanM8L2ZpbGU+Ci0gICAgPGZpbGU+RmlsZVN5c3RlbVZpZXcuanM8
L2ZpbGU+CiAgICAgPGZpbGU+Rm9udFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+R29Ub0xpbmVE
aWFsb2cuanM8L2ZpbGU+CiAgICAgPGZpbGU+SEFSRW50cnkuanM8L2ZpbGU+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCA0ZDhl
OTUzLi4wNDM1ZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmh0bWwKQEAgLTcyLDcgKzcyLDYgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJDb29raWVzVGFibGUuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvb2tpZUl0ZW1zVmlldy5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQXBw
bGljYXRpb25DYWNoZUl0ZW1zVmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iRmlsZVN5c3RlbVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNjcmlwdC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQnJlYWtwb2ludC5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQnJlYWtwb2lu
dE1hbmFnZXIuanMiPjwvc2NyaXB0Pgo=
</data>
<flag name="review"
          id="73437"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81987</attachid>
            <date>2011-02-10 09:08:17 -0800</date>
            <delta_ts>2011-02-10 09:11:07 -0800</delta_ts>
            <desc>[PATCH] Review comments addressed.</desc>
            <filename>filesystem</filename>
            <type>text/plain</type>
            <size>51659</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDY0YmYxNi4uMDRhZDIwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEwMzAsNyArMTAzMCw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZS5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKLSAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAogICAgIGluc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3OGRiMTQ4Li4zYTQ5NDg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMTEtMDItMDkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2ViIEluc3BlY3RvcjogUmVtb3ZlIEZpbGVTeXN0ZW0gc3VwcG9ydCBmcm9tIHRoZSBpbnNw
ZWN0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDY5NQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
YW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0QXBwbGljYXRpb25DYWNoZXMpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50aWZpZXJGb3JJbml0aWFsUmVx
dWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsU2VuZFJlcXVlc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVSZXNvdXJjZVJlc3BvbnNlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVzb3Vy
Y2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om5ldHdvcmtTdGF0ZUNoYW5nZWRJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dXBkYXRlQXBwbGlj
YXRpb25DYWNoZVN0YXR1c0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpyZXRyaWV2ZVJlc291cmNlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWw6CisKIDIwMTEtMDItMTAgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KaW5kZXggMzZmNzJhYi4uZGNjNDRhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTE5ODcsOCArMTk4Nyw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCBcCi0JU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBcCiAJU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBiYTllMzEzLi5jYTdiMjllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0yMDQ1LDggKzIwNDUsNiBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VSZXNvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9y
YWdlUmVzb3VyY2UuaCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudC5jcHAnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgnLApAQCAtNDY5
Niw3ICs0Njk0LDYgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lv
blBhbmVsLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblJl
Z2lzdHJ5U3R1Yi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNp
b25TZXJ2ZXIuanMnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3Rl
bVZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvR29Ub0xpbmVEaWFsb2cuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanMnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
bwppbmRleCBkY2RiN2E1Li44ODUyMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTA2MCw3ICsxMDYw
LDYgQEAgU09VUkNFUyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBc
CiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgXAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwIFwKLSAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAwY2M0ZmQy
Li42YWEyNjY5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtNjU0NTQsMTQgKzY1NDU0LDYgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8Rmls
ZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dC5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGluc3BlY3RvclxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+
Ci0JCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZyb250
ZW5kQ2xpZW50LmgiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtNjU3NzMsMTAgKzY1NzY1LDYgQEAK
IAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3Rvclxmcm9udC1lbmRcRmlsZVN5c3RlbVZpZXcuanMiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+
Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEZv
bnRWaWV3LmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDlmM2UyNDYuLmNhYzQzNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTg2MCw4ICs4NjAsNiBAQAogCQkzN0Y4MThGRDBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29y
ZVVSTFJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzN0Y4MThGQjBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVSTFJlc3BvbnNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzdGODE4RkUw
RDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RjgxOEZDMEQ2NTc2MDYwMDVFMUYwNSAv
KiBXZWJDb3JlVVJMUmVzcG9uc2UubW0gKi87IH07CiAJCTM3RkQ0Mjk4MTE4MzY4NDYwMDkzQzAy
OSAvKiBUcmVlRGVwdGhMaW1pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzdGRDQyOTcxMTgzNjg0NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0Lmgg
Ki87IH07Ci0JCTM4ODhGNkVFMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Mzg4OEY2RUMxMjhDOTg4OTAwMENBOEUwIC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAg
Ki87IH07Ci0JCTM4ODhGNkVGMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4
ODhGNkVEMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCAqLzsg
fTsKIAkJM0FDNjQ4QjIxMjlFMTQ2NTAwQzNFQjI1IC8qIEVkaXRpbmdCb3VuZGFyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0FDNjQ4QjExMjlFMTQ2
NTAwQzNFQjI1IC8qIEVkaXRpbmdCb3VuZGFyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMDAyQ0NEMEY2NkVERUYwMDlFNjYwRCAvKiBTY3Jp
cHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAq
LzsgfTsKIAkJNDEwMDJDQ0UwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkND
QzBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLzsgfTsKQEAgLTcy
MjUsOCArNzIyMyw2IEBACiAJCTM3RjgxOEZDMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJM
UmVzcG9uc2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJD
b3JlVVJMUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RkM5NkRB
MTEwNEVENzEwMDNFMUZBRCAvKiBUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RkQ0Mjk3MTE4MzY4NDYwMDkzQzAyOSAv
KiBUcmVlRGVwdGhMaW1pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmVl
RGVwdGhMaW1pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzODg4RjZFQzEyOEM5
ODg5MDAwQ0E4RTAgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM4ODhGNkVEMTI4Qzk4ODkwMDBDQThFMCAvKiBJ
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTNBQzY0OEIxMTI5RTE0NjUwMEMzRUIyNSAvKiBFZGl0aW5nQm91bmRhcnkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ0JvdW5kYXJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5j
dGlvbkNhbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RnVuY3Rp
b25DYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMDAyQ0NDMEY2NkVERUYw
MDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzMDExLDggKzEzMDA3LDYgQEAKIAkJCQk3QTc0RUNCOTEwMTgzOUE2MDBC
RjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggKi8sCiAJCQkJNDFGMDYxNzMwRjVG
MDBBQzAwQTA3RUFDIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAgKi8sCiAJCQkJ
NDFGMDYxNzIwRjVGMDBBQzAwQTA3RUFDIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5o
ICovLAotCQkJCTM4ODhGNkVDMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQuY3BwICovLAotCQkJCTM4ODhGNkVEMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQuaCAqLywKIAkJCQlGMzQ0QzcxMjExMjVCODJDMDBGMjZFRUUgLyogSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLywKIAkJCQlGMzQ0Qzc1NzExMjk0RkY2MDBGMjZFRUUg
LyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgKi8sCiAJCQkJRjM0NEM3NTIxMTI5
NEQ5RDAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCAqLywKQEAgLTIw
OTI2LDcgKzIwOTIwLDYgQEAKIAkJCQk3QTI0NTg3QzEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVj
dG9yRE9NQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBNzRFQ0JCMTAxODM5QTYwMEJGOTM5
RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjA2
MTc0MEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTM4ODhGNkVGMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNDRDNzE0MTEyNUI4MkMwMEYyNkVF
RSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM0NEM3
NTMxMTI5NEQ5RDAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdBMEU3NzBGMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjM2NTksNyArMjM2NTIsNiBAQAogCQkJCTdB
MjQ1ODdCMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QTc0RUNCQTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxRjA2MTc1MEY1RjAwQUMwMEEwN0VBQyAv
KiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMzg4
OEY2RUUxMjhDOTg4OTAwMENBOEUwIC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0RjRGNUZGQjExQ0JEMkUxMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJv
bnRlbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM0NEM3NTgxMTI5NEZGNjAwRjI2RUVFIC8q
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0Ew
RTc3MEUxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
aWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKaW5kZXggYTc5NGFh
My4uODBjMjRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTE1
MSwxNyArMTUxLDYgQEAgbW9kdWxlIGNvcmUgewogICAgIH07CiAjZW5kaWYKIAotI2lmIGRlZmlu
ZWQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAmJiBFTkFCTEVfRklMRV9TWVNURU0KLSAgICBpbnRlcmZh
Y2UgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0gRmlsZVN5c3RlbSB7Ci0gICAgICAgIHZvaWQgZ2V0
RmlsZVN5c3RlbVBhdGhBc3luYyhpbiB1bnNpZ25lZCBpbnQgdHlwZSwgaW4gU3RyaW5nIG9yaWdp
bik7Ci0gICAgICAgIHZvaWQgcmV2ZWFsRm9sZGVySW5PUyhpbiBTdHJpbmcgcGF0aCk7Ci0KLSAg
ICAgICAgW25vdGlmeV0gdm9pZCBkaWRHZXRGaWxlU3lzdGVtUGF0aChvdXQgU3RyaW5nIHJvb3Qs
IG91dCBpbnQgdHlwZSwgb3V0IFN0cmluZyBvcmlnaW4pOwotICAgICAgICBbbm90aWZ5XSB2b2lk
IGRpZEdldEZpbGVTeXN0ZW1FcnJvcihvdXQgaW50IHR5cGUsIG91dCBTdHJpbmcgb3JpZ2luKTsK
LSAgICAgICAgW25vdGlmeV0gdm9pZCBkaWRHZXRGaWxlU3lzdGVtRGlzYWJsZWQoKTsKLSAgICB9
OwotI2VuZGlmCi0KICAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0gRE9NIHsK
ICAgICAgICAgdm9pZCBnZXRDaGlsZE5vZGVzKGluIGxvbmcgbm9kZUlkKTsKICAgICAgICAgdm9p
ZCBzZXRBdHRyaWJ1dGUoaW4gbG9uZyBlbGVtZW50SWQsIGluIFN0cmluZyBuYW1lLCBpbiBTdHJp
bmcgdmFsdWUsIG91dCBib29sZWFuIHN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggYzZkOWNhMC4uMWExM2RiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC0xMjAsMTAgKzEyMCw2IEBA
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgiCiAjZW5kaWYKIAot
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSNpbmNsdWRlICJJbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC00MDMsMTEgKzM5OSw3IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmNyZWF0ZUZyb250
ZW5kTGlmZXRpbWVBZ2VudHMoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05TKQotICAgIG1fYXBwbGljYXRpb25DYWNoZUFnZW50ID0gbmV3IEluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudCh0aGlzLCBtX2Zyb250ZW5kKTsKLSNlbmRpZgotCi0jaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQotICAgIG1fZmlsZVN5c3RlbUFnZW50ID0gSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50OjpjcmVhdGUodGhpcywgbV9mcm9udGVuZCk7CisgICAgbV9hcHBsaWNhdGlvbkNh
Y2hlQWdlbnQgPSBuZXcgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KG1faW5zcGVjdGVk
UGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLCBtX2Zyb250ZW5k
KTsKICNlbmRpZgogfQogCkBAIC00MzksMTEgKzQzMSw2IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6
OnJlbGVhc2VGcm9udGVuZExpZmV0aW1lQWdlbnRzKCkKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5jbGVhcigpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgaWYg
KG1fZmlsZVN5c3RlbUFnZW50KQotICAgICAgICBtX2ZpbGVTeXN0ZW1BZ2VudC0+c3RvcCgpOwot
ICAgICAgICBtX2ZpbGVTeXN0ZW1BZ2VudC5jbGVhcigpOwotI2VuZGlmCiAgICAgc3RvcFRpbWVs
aW5lUHJvZmlsZXIoKTsKIH0KIApAQCAtNTQ0LDcgKzUzMSwxMCBAQCB2b2lkIEluc3BlY3RvckFn
ZW50OjpkaWRDb21taXRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKICAgICBpZiAobV9y
ZXNvdXJjZUFnZW50KQogICAgICAgICBtX3Jlc291cmNlQWdlbnQtPmRpZENvbW1pdExvYWQobG9h
ZGVyKTsKLSAgICAKKworICAgIGlmIChtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudCkKKyAgICAgICAg
bV9hcHBsaWNhdGlvbkNhY2hlQWdlbnQtPmRpZENvbW1pdExvYWQobG9hZGVyKTsKKwogICAgIEFT
U0VSVChtX2luc3BlY3RlZFBhZ2UpOwogCiAgICAgaWYgKGxvYWRlci0+ZnJhbWUoKSA9PSBtX2lu
c3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudC5oCmluZGV4IGQxNWMxZWIuLjI2ZjdjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCkBAIC05NCwxMCArOTQsNiBAQCBjbGFzcyBTdG9yYWdl
QXJlYTsKIGNsYXNzIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDsKICNlbmRpZgogCi0j
aWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Owot
I2VuZGlmCi0KICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiBjbGFzcyBXZWJTb2NrZXRIYW5kc2hh
a2VSZXF1ZXN0OwogY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U7CkBAIC0xNTMsOSAr
MTQ5LDYgQEAgcHVibGljOgogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQqIGRvbVN0b3JhZ2VBZ2VudCgpIHsgcmV0dXJuIG1fZG9tU3RvcmFnZUFn
ZW50LmdldCgpOyB9CiAjZW5kaWYKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50KiBmaWxlU3lzdGVtQWdlbnQoKSB7IHJldHVybiBtX2ZpbGVTeXN0
ZW1BZ2VudC5nZXQoKTsgfQotI2VuZGlmCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
CiAgICAgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQqIGJyb3dzZXJEZWJ1Z2dlckFnZW50
KCkgY29uc3QgeyByZXR1cm4gbV9icm93c2VyRGVidWdnZXJBZ2VudC5nZXQoKTsgfQogICAgIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2Rl
YnVnZ2VyQWdlbnQuZ2V0KCk7IH0KQEAgLTI5NSwxMCArMjg4LDYgQEAgcHJpdmF0ZToKICAgICBP
d25QdHI8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PiBtX2FwcGxpY2F0aW9uQ2FjaGVB
Z2VudDsKICNlbmRpZgogCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIFJlZlB0cjxJbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQ+IG1fZmlsZVN5c3RlbUFnZW50OwotI2VuZGlmCi0KICAgICBS
ZWZQdHI8Tm9kZT4gbV9oaWdobGlnaHRlZE5vZGU7CiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZVRv
Rm9jdXM7CiAgICAgUmVmUHRyPEluc3BlY3RvclJlc291cmNlQWdlbnQ+IG1fcmVzb3VyY2VBZ2Vu
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggMjc3NmM1Ni4uYjM4YmI4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5jcHAKQEAgLTQxLDEyICs0MSwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50KEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgSW5zcGVjdG9yRnJvbnRl
bmQqIGZyb250ZW5kKQotICAgIDogbV9pbnNwZWN0b3JBZ2VudChpbnNwZWN0b3JBZ2VudCkKK0lu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50KERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwgSW5zcGVjdG9yRnJvbnRlbmQqIGZy
b250ZW5kKQorICAgIDogbV9kb2N1bWVudExvYWRlcihkb2N1bWVudExvYWRlcikKICAgICAsIG1f
ZnJvbnRlbmQoZnJvbnRlbmQpCiB7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50OjpkaWRDb21taXRMb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcikKK3sK
KyAgICBtX2RvY3VtZW50TG9hZGVyID0gZG9jdW1lbnRMb2FkZXI7Cit9CisKIHZvaWQgSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKEZy
YW1lKiBmcmFtZSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6U3RhdHVzIHN0YXR1cyA9
IGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3Qo
KS0+c3RhdHVzKCk7CkBAIC02MSw5ICs2Niw4IEBAIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKCkKIAogdm9pZCBJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQ6OmdldEFwcGxpY2F0aW9uQ2FjaGVzKFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4qIGFwcGxpY2F0aW9uQ2FjaGVzKQogewotICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExv
YWRlciA9IG1faW5zcGVjdG9yQWdlbnQtPmluc3BlY3RlZFBhZ2UoKS0+bWFpbkZyYW1lKCktPmxv
YWRlcigpLT5kb2N1bWVudExvYWRlcigpOwotICAgIGlmIChkb2N1bWVudExvYWRlcikgewotICAg
ICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdCogaG9zdCA9IGRvY3VtZW50TG9hZGVyLT5hcHBsaWNh
dGlvbkNhY2hlSG9zdCgpOworICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKSB7CisgICAgICAgIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0KiBob3N0ID0gbV9kb2N1bWVudExvYWRlci0+YXBwbGljYXRpb25D
YWNoZUhvc3QoKTsKICAgICAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNhY2hlSW5mbyBpbmZv
ID0gaG9zdC0+YXBwbGljYXRpb25DYWNoZUluZm8oKTsKIAogICAgICAgICBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCByZXNvdXJjZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKaW5k
ZXggYjkzNTJmZS4uMzNjZWU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaApAQCAtMzMsNiArMzMsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3Mg
RnJhbWU7CiBjbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckFnZW50OwpAQCAt
NDQsOSArNDUsMTEgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIEluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KEluc3BlY3RvckFnZW50KiwgSW5z
cGVjdG9yRnJvbnRlbmQqKTsKKyAgICBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoRG9j
dW1lbnRMb2FkZXIqLCBJbnNwZWN0b3JGcm9udGVuZCopOwogICAgIH5JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQoKSB7IH0KIAorICAgIHZvaWQgZGlkQ29tbWl0TG9hZChEb2N1bWVudExv
YWRlciopOworCiAgICAgLy8gQmFja2VuZCB0byBGcm9udGVuZAogICAgIHZvaWQgdXBkYXRlQXBw
bGljYXRpb25DYWNoZVN0YXR1cyhGcmFtZSopOwogICAgIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdl
ZCgpOwpAQCAtNTksNyArNjIsNyBAQCBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+IGJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKGNvbnN0IEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0Jik7CiAgICAgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm8mKTsKIAotICAgIEluc3BlY3RvckFn
ZW50KiBtX2luc3BlY3RvckFnZW50OworICAgIERvY3VtZW50TG9hZGVyKiBtX2RvY3VtZW50TG9h
ZGVyOwogICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY3Yzk3YS4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIklu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5B
QkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCi0jaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiRmlsZVN5
c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVUcmVl
LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZC5oIgotI2luY2x1ZGUgIkxvY2FsRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnRDYWxsYmFja3MgOiBwdWJsaWMgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzIHsKLXB1
YmxpYzoKLSAgICBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnRDYWxsYmFja3MoSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50KiBhZ2VudCwgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGNvbnN0IFN0
cmluZyYgb3JpZ2luKQotICAgICAgICA6IG1fYWdlbnQoYWdlbnQpCi0gICAgICAgICwgbV90eXBl
KHR5cGUpCi0gICAgICAgICwgbV9vcmlnaW4ob3JpZ2luKQotICAgIHsgCi0gICAgfQotCi0gICAg
fkluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudENhbGxiYWNrcygpCi0gICAgewotICAgIH0KLQotICAg
IC8vIEZpbGVTeXN0ZW1DYWxsYmFja3MgaXMgb25seSB1c2VkIGZvciBnZXR0aW5nIGZpbGVzeXN0
ZW0uIEFsbCBvdGhlciBtZXRob2RzIGFyZSBpcnJlbGV2YW50IGFuZCB3aWxsIG5vdCBiZSBjYWxs
ZWQuCi0gICAgdm9pZCBkaWRTdWNjZWVkKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIH0KLQotICAgIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5n
JiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0pCi0gICAgewotICAgICAg
ICAvLyBBZ2VudCB3aWxsIGJlIGFsaXZlIGV2ZW4gaWYgSW5zcGVjdG9yQWdlbnQgaXMgZGVzdHJv
eWVkIHVudGlsIGNhbGxiYWNrIGlzIHJ1bi4KLSAgICAgICAgbV9hZ2VudC0+ZGlkR2V0RmlsZVN5
c3RlbVBhdGgoZmlsZVN5c3RlbS0+cm9vdCgpLCBtX3R5cGUsIG1fb3JpZ2luKTsKLSAgICB9Ci0K
LSAgICB2b2lkIGRpZFJlYWRNZXRhZGF0YShjb25zdCBGaWxlTWV0YWRhdGEmKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgdm9pZCBkaWRSZWFkRGly
ZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiwgYm9vbCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJpZXMo
Ym9vbCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAg
IHZvaWQgZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4sIGxv
bmcgbG9uZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLSAg
ICAKLSAgICB2b2lkIGRpZEZhaWwoaW50KQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IElzIGl0
IHVzZWZ1bCB0byBnaXZlIGJhY2sgdGhlIGNvZGUgdG8gSW5zcGVjdG9yIFVJPwotICAgICAgICBt
X2FnZW50LT5kaWRHZXRGaWxlU3lzdGVtRXJyb3IobV90eXBlLCBtX29yaWdpbik7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+IG1fYWdlbnQ7
Ci0gICAgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIG1fdHlwZTsKLSAgICBTdHJpbmcgbV9vcmlnaW47
Ci19OwotCi1JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIEluc3BlY3RvckZyb250ZW5kKiBmcm9u
dGVuZCkKLSAgICA6IG1faW5zcGVjdG9yQWdlbnQoaW5zcGVjdG9yQWdlbnQpCi0gICAgLCBtX2Zy
b250ZW5kKGZyb250ZW5kKQotewotfQotCi1JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6On5JbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQoKSB7IH0KLQotdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQ6OnN0b3AoKQotewotICAgIG1faW5zcGVjdG9yQWdlbnQgPSAwOwotfQotCi0jaWYgUExBVEZP
Uk0oQ0hST01JVU0pCi12b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmV2ZWFsRm9sZGVy
SW5PUyhjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgLy8gRklYTUU6IFJlbW92ZSBndWFyZCB3
aGVuIHJldmVhbEZvbGRlckluT1MgaXMgaW1wbGVtZW50ZWQgZm9yIG5vbi1jaHJvbWl1bSBwbGF0
Zm9ybXMuCi0gICAgV2ViQ29yZTo6cmV2ZWFsRm9sZGVySW5PUyhwYXRoKTsKLX0KLSNlbHNlCi12
b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmV2ZWFsRm9sZGVySW5PUyhjb25zdCBTdHJp
bmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0jZW5kaWYKLQotdm9pZCBJbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQ6OmdldEZpbGVTeXN0ZW1QYXRoQXN5bmModW5zaWduZWQgaW50IHR5
cGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQotewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6ZmlsZVN5c3RlbUVuYWJsZWQoKSkgewotICAgICAgICBtX2Zyb250ZW5kLT5kaWRHZXRG
aWxlU3lzdGVtRGlzYWJsZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFzeW5j
RmlsZVN5c3RlbTo6VHlwZSBhc3luY0ZpbGVTeXN0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8QXN5bmNG
aWxlU3lzdGVtOjpUeXBlPih0eXBlKTsKLSAgICBGcmFtZSogbWFpbkZyYW1lID0gbV9pbnNwZWN0
b3JBZ2VudC0+aW5zcGVjdGVkUGFnZSgpLT5tYWluRnJhbWUoKTsKLSAgICBmb3IgKEZyYW1lKiBm
cmFtZSA9IG1haW5GcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VO
ZXh0KCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7
Ci0gICAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9T
dHJpbmcoKSA9PSBvcmlnaW4pIHsKLSAgICAgICAgICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxG
aWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0oZG9jdW1lbnQsIGFzeW5jRmlsZVN5c3RlbVR5cGUs
IDAsIG5ldyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnRDYWxsYmFja3ModGhpcywgYXN5bmNGaWxl
U3lzdGVtVHlwZSwgb3JpZ2luKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICB9Ci19Ci0KLXZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpkaWRHZXRGaWxlU3lzdGVt
UGF0aChjb25zdCBTdHJpbmcmIHJvb3QsIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBjb25z
dCBTdHJpbmcmIG9yaWdpbikKLXsKLSAgICAvLyBXaGVuIGNvbnRyb2xsZXIgaXMgYmVpbmcgZGVz
dHJveWVkLCB0aGlzIGlzIHNldCB0byAwLiBBZ2VudCBjYW4gbGl2ZSBldmVuIGFmdGVyIG1faW5z
cGVjdG9yQWdlbnQgaXMgZGVzdHJveWVkLgotICAgIGlmICghbV9pbnNwZWN0b3JBZ2VudCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9mcm9udGVuZC0+ZGlkR2V0RmlsZVN5c3RlbVBhdGgocm9v
dCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih0eXBlKSwgb3JpZ2luKTsKLX0KLQotdm9pZCBJ
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRpZEdldEZpbGVTeXN0ZW1FcnJvcihBc3luY0ZpbGVT
eXN0ZW06OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCi17Ci0gICAgLy8gV2hlbiBj
b250cm9sbGVyIGlzIGJlaW5nIGRlc3Ryb3llZCwgdGhpcyBpcyBzZXQgdG8gMC4gQWdlbnQgY2Fu
IGxpdmUgZXZlbiBhZnRlciBtX2luc3BlY3RvckFnZW50IGlzIGRlc3Ryb3llZC4KLSAgICBpZiAo
IW1faW5zcGVjdG9yQWdlbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2Zyb250ZW5kLT5kaWRH
ZXRGaWxlU3lzdGVtRXJyb3Ioc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih0eXBlKSwgb3JpZ2lu
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUikgJiYgRU5BQkxFKEZJTEVfU1lTVEVNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiOTk1ZDcwLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudF9oCi0jZGVmaW5lIEluc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudF9oCi0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoRklMRV9TWVNU
RU0pCi0KLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERvY3VtZW50OwotY2xhc3MgSW5zcGVjdG9yQWdlbnQ7Ci1j
bGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKLWNsYXNzIExvY2FsRmlsZVN5c3RlbTsKLQotY2xhc3Mg
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50IDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50PiBjcmVhdGUoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBJ
bnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudChpbnNwZWN0b3JBZ2VudCwgZnJvbnRlbmQp
KTsKLSAgICB9Ci0KLSAgICB+SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KCk7Ci0gICAgdm9pZCBz
dG9wKCk7Ci0KLSAgICAvLyBGcm9tIEZyb250ZW5kCi0gICAgdm9pZCBnZXRGaWxlU3lzdGVtUGF0
aEFzeW5jKHVuc2lnbmVkIGludCB0eXBlLCBjb25zdCBTdHJpbmcmIG9yaWdpbik7Ci0gICAgdm9p
ZCByZXZlYWxGb2xkZXJJbk9TKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0KLSAgICAvLyBCYWNrZW5k
IHRvIEZyb250ZW5kCi0gICAgdm9pZCBkaWRHZXRGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcm
LCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKLSAgICB2b2lk
IGRpZEdldEZpbGVTeXN0ZW1FcnJvcihBc3luY0ZpbGVTeXN0ZW06OlR5cGUsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luKTsKLSAgICB2b2lkIGRpZEdldEZpbGVTeXN0ZW1EaXNhYmxlZCgpOwotCi1wcml2
YXRlOgotICAgIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudChJbnNwZWN0b3JBZ2VudCosIEluc3Bl
Y3RvckZyb250ZW5kKik7Ci0gICAgdm9pZCBnZXRGaWxlU3lzdGVtUm9vdChBc3luY0ZpbGVTeXN0
ZW06OlR5cGUpOwotCi0gICAgSW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7Ci0gICAg
SW5zcGVjdG9yRnJvbnRlbmQqIG1fZnJvbnRlbmQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoRklMRV9TWVNURU0p
Ci0jZW5kaWYgLy8gSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggMDc0
NTA1ZS4uMzk5OTI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTM3MiwxMiArMzcyLDEyIEBAIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNhbGN1bGF0ZVN0eWxlSW1wbChjb25zdCBJbnNw
ZWN0b3JJbnN0cnVtZW50CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlY2FsY3VsYXRlU3R5
bGUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50aWZpZXJGb3JJ
bml0aWFsUmVxdWVzdEltcGwoSW5zcGVjdG9yQWdlbnQqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppZGVudGlmaWVyRm9ySW5pdGlh
bFJlcXVlc3RJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCiB7Ci0gICAgaWYgKCFpYy0+ZW5hYmxlZCgpKQorICAgIGlmICghaW5zcGVj
dG9yQWdlbnQtPmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKEluc3BlY3Rv
clJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaWMp
KQorICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmll
dmVSZXNvdXJjZUFnZW50KGluc3BlY3RvckFnZW50KSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+
aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIHJlcXVlc3QudXJsKCksIGxv
YWRlcik7CiB9CiAKQEAgLTM4NiwyNSArMzg2LDI1IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjphcHBseVVzZXJBZ2VudE92ZXJyaWRlSW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVj
CiAgICAgaW5zcGVjdG9yQWdlbnQtPmFwcGx5VXNlckFnZW50T3ZlcnJpZGUodXNlckFnZW50KTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdEltcGwo
SW5zcGVjdG9yQWdlbnQqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkK
K3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3RJbXBsKEluc3Bl
Y3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVz
cG9uc2UpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQg
PSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaWMpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckFnZW50
KSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFNlbmRSZXNvdXJjZVJlcXVlc3QoaWRlbnRp
ZmllciwgcmVxdWVzdCk7Ci0gICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNl
QWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaWMpKQorICAgIGlmIChJbnNwZWN0b3JSZXNv
dXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGluc3BlY3Rv
ckFnZW50KSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+d2lsbFNlbmRSZXF1ZXN0KGlkZW50aWZp
ZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKEluc3BlY3RvckFnZW50KiBpYywg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
Om1hcmtSZXNvdXJjZUFzQ2FjaGVkSW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIHsKLSAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgaWYg
KEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNl
QWdlbnQoaW5zcGVjdG9yQWdlbnQpKQogICAgICAgICByZXNvdXJjZUFnZW50LT5tYXJrUmVzb3Vy
Y2VBc0NhY2hlZChpZGVudGlmaWVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zcGVjdG9yQWdlbnQqIGlj
LCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVz
b3VyY2UpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJv
bU1lbW9yeUNhY2hlSW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsK
LSAgICBpZiAoIWljLT5lbmFibGVkKCkpCisgICAgaWYgKCFpbnNwZWN0b3JBZ2VudC0+ZW5hYmxl
ZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJl
c291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaWMpKQorICAgIGlmIChJbnNwZWN0
b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGlu
c3BlY3RvckFnZW50KSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkTG9hZFJlc291cmNlRnJv
bU1lbW9yeUNhY2hlKGxvYWRlciwgY2FjaGVkUmVzb3VyY2UpOwogfQogCkBAIC00MzgsNDcgKzQz
OCw0NyBAQCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcAogCiB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKGNvbnN0IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ewotICAgIEluc3BlY3RvckFnZW50KiBpYyA9IGNvb2tpZS5maXJzdDsKLSAgICBpZiAoSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChp
YykpCisgICAgSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50ID0gY29va2llLmZpcnN0Owor
ICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVS
ZXNvdXJjZUFnZW50KGluc3BlY3RvckFnZW50KSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlk
UmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIGxvYWRlciwgcmVzcG9uc2UpOwotICAgIGljLT5j
b25zb2xlQWdlbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsK
KyAgICBpbnNwZWN0b3JBZ2VudC0+Y29uc29sZUFnZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZShp
ZGVudGlmaWVyLCByZXNwb25zZSk7CiAgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRp
bWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29va2llKSkKICAgICAgICAgdGlt
ZWxpbmVBZ2VudC0+ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoSW1wbChJbnNwZWN0
b3JBZ2VudCogaWMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGxlbmd0aFJlY2VpdmVk
KQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50TGVuZ3Ro
SW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgaW50IGxlbmd0aFJlY2VpdmVkKQogewotICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKKyAgICBpZiAo
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VB
Z2VudChpbnNwZWN0b3JBZ2VudCkpCiAgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZFJlY2VpdmVD
b250ZW50TGVuZ3RoKGlkZW50aWZpZXIsIGxlbmd0aFJlY2VpdmVkKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJbXBsKEluc3BlY3RvckFnZW50
KiBpYywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkKK3ZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnNwZWN0b3JB
Z2VudCogaW5zcGVjdG9yQWdlbnQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZp
bmlzaFRpbWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdl
bnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaWMpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckFn
ZW50KSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRmluaXNoTG9hZGluZ1Jlc291cmNlKGlk
ZW50aWZpZXIsIGZhbHNlLCBmaW5pc2hUaW1lKTsKLSAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgaWYg
KEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNl
QWdlbnQoaW5zcGVjdG9yQWdlbnQpKQogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRGaW5pc2hM
b2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBsKEluc3BlY3RvckFnZW50KiBpYywgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZ0ltcGwoSW5zcGVjdG9yQWdlbnQq
IGluc3BlY3RvckFnZW50LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQogewotICAgIGljLT5jb25zb2xlQWdlbnQoKS0+ZGlkRmFpbExvYWRpbmco
aWRlbnRpZmllciwgZXJyb3IpOwotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1l
bGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGljKSkKKyAgICBpbnNwZWN0b3JBZ2Vu
dC0+Y29uc29sZUFnZW50KCktPmRpZEZhaWxMb2FkaW5nKGlkZW50aWZpZXIsIGVycm9yKTsKKyAg
ICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGlt
ZWxpbmVBZ2VudChpbnNwZWN0b3JBZ2VudCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZp
bmlzaExvYWRpbmdSZXNvdXJjZShpZGVudGlmaWVyLCB0cnVlLCAwKTsKLSAgICBpZiAoSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChp
YykpCisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRy
aWV2ZVJlc291cmNlQWdlbnQoaW5zcGVjdG9yQWdlbnQpKQogICAgICAgICByZXNvdXJjZUFnZW50
LT5kaWRGYWlsTG9hZGluZyhpZGVudGlmaWVyLCBlcnJvcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3RJbXBsKElu
c3BlY3RvckFnZW50KiBpYywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwg
dW5zaWduZWQgc2VuZExpbmVOdW1iZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbChJbnNwZWN0b3JBZ2VudCogaW5z
cGVjdG9yQWdlbnQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2ln
bmVkIHNlbmRMaW5lTnVtYmVyKQogewotICAgIGljLT5jb25zb2xlQWdlbnQoKS0+cmVzb3VyY2VS
ZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVybCwgc2VuZFVSTCwgc2VuZExpbmVOdW1iZXIpOwot
ICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVS
ZXNvdXJjZUFnZW50KGljKSkKKyAgICBpbnNwZWN0b3JBZ2VudC0+Y29uc29sZUFnZW50KCktPnJl
c291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1cmwsIHNlbmRVUkwsIHNlbmRMaW5lTnVt
YmVyKTsKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJl
dHJpZXZlUmVzb3VyY2VBZ2VudChpbnNwZWN0b3JBZ2VudCkpCiAgICAgICAgIHJlc291cmNlQWdl
bnQtPnNldEluaXRpYWxDb250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgIlhIUiIpOwog
fQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWRJbXBsKElu
c3BlY3RvckFnZW50KiBpYywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVN0cmluZykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBv
cnRlZEltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKQogewotICAgIGlmIChJbnNwZWN0
b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGlj
KSkKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJp
ZXZlUmVzb3VyY2VBZ2VudChpbnNwZWN0b3JBZ2VudCkpCiAgICAgICAgIHJlc291cmNlQWdlbnQt
PnNldEluaXRpYWxDb250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgIlNjcmlwdCIpOwog
fQogCkBAIC02MzEsMTUgKzYzMSwxNSBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ2xvc2VXZWJTb2NrZXRJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQotdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Om5ldHdvcmtTdGF0ZUNoYW5nZWRJbXBsKEluc3BlY3RvckFnZW50KiBp
YykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpuZXR3b3JrU3RhdGVDaGFuZ2VkSW1w
bChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQpCiB7Ci0gICAgaWYgKEluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudCogYXBwbGljYXRpb25DYWNoZUFnZW50ID0gaWMtPmFwcGxpY2F0
aW9uQ2FjaGVBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQq
IGFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9IGluc3BlY3RvckFnZW50LT5hcHBsaWNhdGlvbkNhY2hl
QWdlbnQoKSkKICAgICAgICAgYXBwbGljYXRpb25DYWNoZUFnZW50LT5uZXR3b3JrU3RhdGVDaGFu
Z2VkKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1cGRhdGVBcHBsaWNh
dGlvbkNhY2hlU3RhdHVzSW1wbChJbnNwZWN0b3JBZ2VudCogaWMsIEZyYW1lKiBmcmFtZSkKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVz
SW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIEZyYW1lKiBmcmFtZSkKIHsKLSAg
ICBpZiAoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KiBhcHBsaWNhdGlvbkNhY2hlQWdl
bnQgPSBpYy0+YXBwbGljYXRpb25DYWNoZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudCogYXBwbGljYXRpb25DYWNoZUFnZW50ID0gaW5zcGVjdG9yQWdlbnQt
PmFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpKQogICAgICAgICBhcHBsaWNhdGlvbkNhY2hlQWdlbnQt
PnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMoZnJhbWUpOwogfQogI2VuZGlmCkBAIC02Nzgs
OSArNjc4LDkgQEAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpyZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29uc3QgSW4KICAgICByZXR1cm4gMDsKIH0KIAot
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXRyaWV2
ZVJlc291cmNlQWdlbnQoSW5zcGVjdG9yQWdlbnQqIGljKQorSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dCogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXRyaWV2ZVJlc291cmNlQWdlbnQoSW5zcGVj
dG9yQWdlbnQqIGluc3BlY3RvckFnZW50KQogewotICAgIHJldHVybiBpYy0+cmVzb3VyY2VBZ2Vu
dCgpOworICAgIHJldHVybiBpbnNwZWN0b3JBZ2VudC0+cmVzb3VyY2VBZ2VudCgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNTZmMjFhNC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjExICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1XZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIgPSBmdW5jdGlvbigpCi17Ci19Ci0KLS8vIEtl
ZXAgaW4gc3luYyB3aXRoIFR5cGUgaW4gQXN5bmNGaWxlU3lzdGVtLmgKLVdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtRGlzcGF0Y2hlci5URU1QT1JBUlkgPSAwOwotV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1EaXNwYXRjaGVyLlBFUlNJU1RFTlQgPSAxOwotCi1XZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURp
c3BhdGNoZXIucHJvdG90eXBlID0gewotICAgIGdldEZpbGVTeXN0ZW1QYXRoc0FzeW5jOiBmdW5j
dGlvbihvcmlnaW4pCi0gICAgewotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldEZpbGVTeXN0
ZW1QYXRoQXN5bmMoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyLlBFUlNJU1RFTlQs
IG9yaWdpbik7Ci0gICAgICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0RmlsZVN5c3RlbVBhdGhBc3lu
YyhXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIuVEVNUE9SQVJZLCBvcmlnaW4pOwot
ICAgIH0sCi0KLSAgICBkaWRHZXRGaWxlU3lzdGVtUGF0aDogZnVuY3Rpb24ocm9vdCwgdHlwZSwg
b3JpZ2luKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMudXBk
YXRlRmlsZVN5c3RlbVBhdGgocm9vdCwgdHlwZSwgb3JpZ2luKTsKLSAgICB9LAotCi0gICAgZGlk
R2V0RmlsZVN5c3RlbUVycm9yOiBmdW5jdGlvbih0eXBlLCBvcmlnaW4pCi0gICAgewotICAgICAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy51cGRhdGVGaWxlU3lzdGVtRXJyb3IodHlw
ZSwgb3JpZ2luKTsKLSAgICB9LAotCi0gICAgZGlkR2V0RmlsZVN5c3RlbURpc2FibGVkOiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5zZXRG
aWxlU3lzdGVtRGlzYWJsZWQoKTsKLSAgICB9Ci19Ci0KLUluc3BlY3RvckJhY2tlbmQucmVnaXN0
ZXJEb21haW5EaXNwYXRjaGVyKCJGaWxlU3lzdGVtIiwgbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtRGlzcGF0Y2hlcigpKTsKLQotV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3ID0gZnVuY3Rp
b24odHJlZUVsZW1lbnQsIGZpbGVTeXN0ZW1PcmlnaW4pCi17Ci0gICAgV2ViSW5zcGVjdG9yLlZp
ZXcuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJyZXNvdXJj
ZS12aWV3Iik7Ci0gICAgdGhpcy5fdHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVudDsKLSAgICB0aGlz
Ll9vcmlnaW4gPSBmaWxlU3lzdGVtT3JpZ2luOwotICAgIHRoaXMuX3RhYmJlZFBhbmUgPSBuZXcg
V2ViSW5zcGVjdG9yLlRhYmJlZFBhbmUodGhpcy5lbGVtZW50KTsKLQotICAgIHRoaXMuX3BlcnNp
c3RlbnRGaWxlU3lzdGVtRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwot
ICAgIHRoaXMuX3BlcnNpc3RlbnRGaWxlU3lzdGVtRWxlbWVudC5jbGFzc05hbWUgPSAicmVzb3Vy
Y2Utdmlldy1oZWFkZXJzIjsKLSAgICB0aGlzLl90YWJiZWRQYW5lLmFwcGVuZFRhYigicGVyc2lz
dGVudCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGVyc2lzdGVudCBGaWxlIFN5c3RlbSIpLCB0
aGlzLl9wZXJzaXN0ZW50RmlsZVN5c3RlbUVsZW1lbnQsIHRoaXMuX3NlbGVjdEZpbGVTeXN0ZW1U
YWIuYmluZCh0aGlzLCB0cnVlKSk7Ci0KLSAgICB0aGlzLl90ZW1wRmlsZVN5c3RlbUVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl90ZW1wRmlsZVN5c3Rl
bUVsZW1lbnQuY2xhc3NOYW1lID0gInJlc291cmNlLXZpZXctaGVhZGVycyI7Ci0gICAgdGhpcy5f
dGFiYmVkUGFuZS5hcHBlbmRUYWIoInRlbXAiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRlbXBv
cmFyeSBGaWxlIFN5c3RlbSIpLCB0aGlzLl90ZW1wRmlsZVN5c3RlbUVsZW1lbnQsIHRoaXMuc2Vs
ZWN0VGVtcG9yYXJ5RmlsZVN5c3RlbVRhYi5iaW5kKHRoaXMsIHRydWUpKTsKLQotICAgIHRoaXMu
X3RlbXBvcmFyeVJvb3QgPSAiIjsKLSAgICB0aGlzLl9wZXJzaXN0ZW50Um9vdCA9ICIiOwotICAg
IHRoaXMuX2lzRmlsZVN5c3RlbURpc2FibGVkID0gZmFsc2U7Ci0gICAgdGhpcy5fcGVyc2lzdGVu
dFJvb3RFcnJvciA9IGZhbHNlOwotICAgIHRoaXMuX3RlbXBvcmFyeVJvb3RFcnJvciA9IGZhbHNl
OwotICAgIHRoaXMuZmlsZVN5c3RlbVZpc2libGUgPSB0cnVlOwotICAgIHRoaXMuX3NlbGVjdEZp
bGVTeXN0ZW1UYWIoKTsKLSAgICB0aGlzLnJlZnJlc2hGaWxlU3lzdGVtKCk7Ci19Ci0KLVdlYklu
c3BlY3Rvci5GaWxlU3lzdGVtVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgc2hvdzogZnVuY3Rpb24o
cGFyZW50RWxlbWVudCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlw
ZS5zaG93LmNhbGwodGhpcywgcGFyZW50RWxlbWVudCk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZSgp
OwotICAgIH0sCi0KLSAgICBzZXQgZmlsZVN5c3RlbVZpc2libGUoeCkKLSAgICB7Ci0gICAgICAg
IGlmICh4ID09PSB0aGlzLl9maWxlU3lzdGVtVmlzaWJsZSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgdGhpcy5fZmlsZVN5c3RlbVZpc2libGUgPSB4OwotICAgICAgICBpZiAoeCkKLSAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoZWFkZXJzLXZpc2libGUiKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3Mo
ImhlYWRlcnMtdmlzaWJsZSIpOyAKLSAgICAgICAgdGhpcy5fc2VsZWN0RmlsZVN5c3RlbVRhYigp
OwotICAgIH0sCi0KLSAgICBfdXBkYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlz
Ll9zZWxlY3RGaWxlU3lzdGVtVGFiKCk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
LmdldEZpbGVTeXN0ZW1QYXRoc0FzeW5jKHRoaXMuX29yaWdpbik7Ci0gICAgfSwKLQotICAgIHVw
ZGF0ZUZpbGVTeXN0ZW1QYXRoOiBmdW5jdGlvbihyb290LCB0eXBlLCBvcmlnaW4pCi0gICAgewot
ICAgICAgICBpZiAob3JpZ2luID09IHRoaXMuX29yaWdpbiAmJiB0eXBlID09IFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtLlBFUlNJU1RFTlQpIHsKLSAgICAgICAgICAgIHRoaXMuX3BlcnNpc3RlbnRS
b290ID0gcm9vdDsKLSAgICAgICAgICAgIHRoaXMuX3BlcnNpc3RlbnRSb290RXJyb3IgPSBmYWxz
ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKG9yaWdpbiA9PSB0aGlzLl9vcmln
aW4gJiYgdHlwZSA9PSBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbS5URU1QT1JBUlkpIHsKLSAgICAg
ICAgICAgIHRoaXMuX3RlbXBvcmFyeVJvb3QgPSByb290OwotICAgICAgICAgICAgdGhpcy5fdGVt
cG9yYXJ5Um9vdEVycm9yRXJyb3IgPSBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMu
cmVmcmVzaEZpbGVTeXN0ZW0oKTsKLSAgICB9LAotICAgIAotICAgIHVwZGF0ZUZpbGVTeXN0ZW1F
cnJvcjogZnVuY3Rpb24odHlwZSwgb3JpZ2luKQotICAgIHsKLSAgICAgICAgaWYgKHR5cGUgPT0g
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0uUEVSU0lTVEVOVCkKLSAgICAgICAgICAgIHRoaXMuX3Bl
cnNpc3RlbnRSb290RXJyb3IgPSB0cnVlOwotICAgICAgICAKLSAgICAgICAgaWYgKHR5cGUgPT0g
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0uVEVNUE9SQVJZKQotICAgICAgICAgICAgdGhpcy5fdGVt
cG9yYXJ5Um9vdEVycm9yID0gdHJ1ZTsKLQotICAgICAgICB0aGlzLnJlZnJlc2hGaWxlU3lzdGVt
KCk7Ci0gICAgfSwKLSAgICAKLSAgICBzZXRGaWxlU3lzdGVtRGlzYWJsZWQ6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHRoaXMuX2lzRmlsZVN5c3RlbURpc2FibGVkID0gdHJ1ZTsKLSAgICAg
ICAgdGhpcy5yZWZyZXNoRmlsZVN5c3RlbSgpOwotICAgIH0sCi0gICAgX3NlbGVjdEZpbGVTeXN0
ZW1UYWI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3RhYmJlZFBhbmUuc2VsZWN0
VGFiKCJwZXJzaXN0ZW50Iik7Ci0gICAgfSwKLSAgICAKLSAgICBzZWxlY3RUZW1wb3JhcnlGaWxl
U3lzdGVtVGFiOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl90YWJiZWRQYW5lLnNl
bGVjdFRhYigidGVtcCIpOwotICAgIH0sCi0KLSAgICBfcmV2ZWFsUGVyc2lzdGVudEZvbGRlcklu
T1M6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvckJhY2tlbmQucmV2ZWFsRm9s
ZGVySW5PUyh0aGlzLl9wZXJzaXN0ZW50Um9vdCk7Ci0gICAgfSwKLSAgICAKLSAgICBfcmV2ZWFs
VGVtcG9yYXJ5Rm9sZGVySW5PUzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9y
QmFja2VuZC5yZXZlYWxGb2xkZXJJbk9TKHRoaXMuX3RlbXBvcmFyeVJvb3QpOwotICAgIH0sCi0g
ICAgCi0gICAgX2NyZWF0ZVRleHRBbmRCdXR0b246IGZ1bmN0aW9uKGZpbGVTeXN0ZW1FbGVtZW50
LCByb290UGF0aFRleHQsIHR5cGUsIGlzRXJyb3IpCi0gICAgewotICAgICAgICBmaWxlU3lzdGVt
RWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotICAgICAgICB2YXIgcm9vdFBhdGggPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkZpbGUgU3lzdGVtIHJvb3QgcGF0aCBub3QgYXZhaWxhYmxlLiIpOwot
ICAgICAgICBpZiAodGhpcy5faXNGaWxlU3lzdGVtRGlzYWJsZWQpCi0gICAgICAgICAgICByb290
UGF0aCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmlsZSBTeXN0ZW0gaXMgZGlzYWJsZWQuIik7
Ci0gICAgICAgIGVsc2UgaWYgKGlzRXJyb3IpCi0gICAgICAgICAgICByb290UGF0aCA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRXJyb3IgaW4gZmV0Y2hpbmcgcm9vdCBwYXRoIGZvciBmaWxlIHN5
c3RlbS4iKTsKLSAgICAgICAgZWxzZSBpZiAocm9vdFBhdGhUZXh0KQotICAgICAgICAgICAgcm9v
dFBhdGggPSByb290UGF0aFRleHQ7Ci0KLSAgICAgICAgdmFyIHJvb3RUZXh0Tm9kZSA9IGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCJSb290OiAiICsgcm9vdFBhdGguZXNjYXBlSFRNTCgpKTsKLSAg
ICAgICAgdmFyIHJvb3RTeXN0ZW1FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7Ci0gICAgICAgIHJvb3RTeXN0ZW1FbGVtZW50LmNsYXNzTmFtZSA9ICJoZWFkZXItdmFsdWUg
c291cmNlLWNvZGUiOwotICAgICAgICByb290U3lzdGVtRWxlbWVudC5hcHBlbmRDaGlsZChyb290
VGV4dE5vZGUpOwotICAgICAgICBmaWxlU3lzdGVtRWxlbWVudC5hcHBlbmRDaGlsZChyb290U3lz
dGVtRWxlbWVudCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgaWYgKCFpc0Vycm9yICYmIHJvb3RQ
YXRoVGV4dCkgewotICAgICAgICAgICAgLy8gQXBwZW5kIEJyb3dzZSBidXR0b24gaWZmIHJvb3Qg
cGF0aCBpcyBhdmFpbGFibGUgYW5kIGl0IGlzIG5vdCBhbiBlcnJvci4KLSAgICAgICAgICAgIHZh
ciBjb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAg
ICAgICAgY29udGVudEVsZW1lbnQuY2xhc3NOYW1lID0gInBhbmVsLWVuYWJsZXItdmlldy1jb250
ZW50IjsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1FbGVtZW50LmFwcGVuZENoaWxkKGNvbnRlbnRF
bGVtZW50KTsKLSAgICAgICAgICAgIHZhciBjaG9pY2VzRm9ybSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImZvcm0iKTsKLSAgICAgICAgICAgIGNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKGNo
b2ljZXNGb3JtKTsKLSAgICAgICAgICAgIHZhciBlbmFibGVCdXR0b24gPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJidXR0b24iKTsKLSAgICAgICAgICAgIGVuYWJsZUJ1dHRvbi5zZXRBdHRyaWJ1
dGUoInR5cGUiLCAiYnV0dG9uIik7Ci0gICAgICAgICAgICBlbmFibGVCdXR0b24udGV4dENvbnRl
bnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJldmVhbCBmb2xkZXIgaW4gT1MiKTsKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBCaW5kIHRoaXMgZGlyZWN0bHkgdG8gSW5zcGVjdG9yQmFja2VuZC4K
LSAgICAgICAgICAgIGlmICh0eXBlID09IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtLlBFUlNJU1RF
TlQpCi0gICAgICAgICAgICAgICAgZW5hYmxlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgdGhpcy5fcmV2ZWFsUGVyc2lzdGVudEZvbGRlckluT1MuYmluZCh0aGlzKSwgZmFsc2UpOwot
ICAgICAgICAgICAgaWYgKHR5cGUgPT0gV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0uVEVNUE9SQVJZ
KQotICAgICAgICAgICAgICAgIGVuYWJsZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuX3JldmVhbFRlbXBvcmFyeUZvbGRlckluT1MuYmluZCh0aGlzKSwgZmFsc2UpOwotICAg
ICAgICAgICAgY2hvaWNlc0Zvcm0uYXBwZW5kQ2hpbGQoZW5hYmxlQnV0dG9uKTsKLSAgICAgICAg
ICAgIGZpbGVTeXN0ZW1FbGVtZW50LmFwcGVuZENoaWxkKGNvbnRlbnRFbGVtZW50KTsKLSAgICAg
ICAgfQotICAgIH0sCi0gICAgCi0gICAgcmVmcmVzaEZpbGVTeXN0ZW06IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHRoaXMuX2NyZWF0ZVRleHRBbmRCdXR0b24odGhpcy5fcGVyc2lzdGVudEZp
bGVTeXN0ZW1FbGVtZW50LCB0aGlzLl9wZXJzaXN0ZW50Um9vdCwgV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW0uUEVSU0lTVEVOVCwgdGhpcy5fcGVyc2lzdGVudFJvb3RFcnJvcik7Ci0gICAgICAgIHRo
aXMuX2NyZWF0ZVRleHRBbmRCdXR0b24odGhpcy5fdGVtcEZpbGVTeXN0ZW1FbGVtZW50LCB0aGlz
Ll90ZW1wb3JhcnlSb290LCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbS5URU1QT1JBUlksIHRoaXMu
X3RlbXBvcmFyeVJvb3RFcnJvcik7Ci0gICAgfSwgCi19Ci0KLVdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2Vz
UGFuZWwuanMKaW5kZXggYzcwNzdhOS4uN2MwNjQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC01NiwxMiArNTYs
NiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwgPSBmdW5jdGlvbihkYXRhYmFzZSkKICAg
ICB0aGlzLmFwcGxpY2F0aW9uQ2FjaGVMaXN0VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9y
LlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50KHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
QXBwbGljYXRpb24gQ2FjaGUiKSwgIkFwcGxpY2F0aW9uQ2FjaGUiLCAiYXBwbGljYXRpb24tY2Fj
aGUtc3RvcmFnZS10cmVlLWl0ZW0iKTsKICAgICB0aGlzLnNpZGViYXJUcmVlLmFwcGVuZENoaWxk
KHRoaXMuYXBwbGljYXRpb25DYWNoZUxpc3RUcmVlRWxlbWVudCk7CiAKLSAgICBpZiAoUHJlZmVy
ZW5jZXMuZmlsZVN5c3RlbUVuYWJsZWQpIHsKLSAgICAgICAgdGhpcy5maWxlU3lzdGVtTGlzdFRy
ZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlUcmVlRWxlbWVudCh0
aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbGUgU3lzdGVtIiksICJGaWxlU3lzdGVtIiwg
ImZpbGUtc3lzdGVtLXN0b3JhZ2UtdHJlZS1pdGVtIik7Ci0gICAgICAgIHRoaXMuc2lkZWJhclRy
ZWUuYXBwZW5kQ2hpbGQodGhpcy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50KTsKLSAgICAgICAg
dGhpcy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LmV4cGFuZCgpOwotICAgIH0KLQogICAgIHRo
aXMuc3RvcmFnZVZpZXdzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhp
cy5zdG9yYWdlVmlld3MuaWQgPSAic3RvcmFnZS12aWV3cyI7CiAgICAgdGhpcy5zdG9yYWdlVmll
d3MuY2xhc3NOYW1lID0gImRpZmYtY29udGFpbmVyIjsKQEAgLTE1NCw3ICsxNDgsNiBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9kb21T
dG9yYWdlID0gW107CiAKICAgICAgICAgdGhpcy5fY29va2llVmlld3MgPSB7fTsKLSAgICAgICAg
dGhpcy5fZmlsZVN5c3RlbVZpZXcgPSBudWxsOwogICAgICAgICAKICAgICAgICAgdGhpcy5fYXBw
bGljYXRpb25DYWNoZVZpZXcgPSBudWxsOwogICAgICAgICBkZWxldGUgdGhpcy5fY2FjaGVkQXBw
bGljYXRpb25DYWNoZVZpZXdTdGF0dXM7CkBAIC0xNjQsOCArMTU3LDYgQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zZXNzaW9uU3RvcmFn
ZUxpc3RUcmVlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLmNvb2tpZUxp
c3RUcmVlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLmFwcGxpY2F0aW9u
Q2FjaGVMaXN0VHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgaWYgKFByZWZl
cmVuY2VzLmZpbGVTeXN0ZW1FbmFibGVkKQotICAgICAgICAgICAgdGhpcy5maWxlU3lzdGVtTGlz
dFRyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRoaXMuc3RvcmFnZVZpZXdz
LnJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICAgICAgdGhpcy5zdG9yYWdlVmlld1N0YXR1c0Jhckl0
ZW1zQ29udGFpbmVyLnJlbW92ZUNoaWxkcmVuKCk7CkBAIC0yOTksMTYgKzI5MCw2IEBAIFdlYklu
c3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgYXBw
bGljYXRpb25DYWNoZVRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNh
Y2hlVHJlZUVsZW1lbnQodGhpcywgZG9tYWluKTsKICAgICAgICAgICAgIHRoaXMuYXBwbGljYXRp
b25DYWNoZUxpc3RUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChhcHBsaWNhdGlvbkNhY2hlVHJlZUVs
ZW1lbnQpOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKFByZWZlcmVuY2VzLmZpbGVTeXN0ZW1F
bmFibGVkKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbWF0Y2ggdGhlIFNl
Y3VyaXR5T3JpZ2luOjp0b1N0cmluZygpLCBhZGQgYSB0ZXN0IGZvciB0aGlzLgotICAgICAgICAg
ICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gcGFyc2VkVVJMLnNjaGVtZSArICI6Ly8iICsgcGFyc2Vk
VVJMLmhvc3QgKyAocGFyc2VkVVJMLnBvcnQgPyAoIjoiICsgcGFyc2VkVVJMLnBvcnQpIDogIiIp
OwotICAgICAgICAgICAgaWYgKCF0aGlzLl9vcmlnaW5zW3NlY3VyaXR5T3JpZ2luXSkgewotICAg
ICAgICAgICAgICAgIHRoaXMuX29yaWdpbnNbc2VjdXJpdHlPcmlnaW5dID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICB2YXIgZmlsZVN5c3RlbVRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtVHJlZUVsZW1lbnQodGhpcywgc2VjdXJpdHlPcmlnaW4pOwotICAgICAgICAgICAg
ICAgIHRoaXMuZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChmaWxlU3lzdGVt
VHJlZUVsZW1lbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgfSwKIAogICAgIGFk
ZERPTVN0b3JhZ2U6IGZ1bmN0aW9uKGRvbVN0b3JhZ2UpCkBAIC00ODksMTIgKzQ3MCw2IEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlz
Ll9hcHBsaWNhdGlvbkNhY2hlVmlldy51cGRhdGVTdGF0dXModGhpcy5fY2FjaGVkQXBwbGljYXRp
b25DYWNoZVZpZXdTdGF0dXMpOwogICAgIH0sCiAKLSAgICBzaG93RmlsZVN5c3RlbTogZnVuY3Rp
b24odHJlZUVsZW1lbnQsIG9yaWdpbikKLSAgICB7Ci0gICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1W
aWV3ID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldyh0cmVlRWxlbWVudCwgb3JpZ2lu
KTsKLSAgICAgICAgdGhpcy5faW5uZXJTaG93Vmlldyh0aGlzLl9maWxlU3lzdGVtVmlldyk7Ci0g
ICAgfSwKLSAgICAKICAgICBzaG93Q2F0ZWdvcnlWaWV3OiBmdW5jdGlvbihjYXRlZ29yeU5hbWUp
CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2NhdGVnb3J5VmlldykKQEAgLTY0MywyNCArNjE4
LDYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVWaWV3LnVwZGF0ZVN0YXR1cyhzdGF0dXMpOwogICAg
IH0sCiAKLSAgICB1cGRhdGVGaWxlU3lzdGVtUGF0aDogZnVuY3Rpb24ocm9vdCwgdHlwZSwgb3Jp
Z2luKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2ZpbGVTeXN0ZW1WaWV3ICYmIHRoaXMuX2Zp
bGVTeXN0ZW1WaWV3ID09PSB0aGlzLnZpc2libGVWaWV3KQotICAgICAgICAgICAgdGhpcy5fZmls
ZVN5c3RlbVZpZXcudXBkYXRlRmlsZVN5c3RlbVBhdGgocm9vdCwgdHlwZSwgb3JpZ2luKTsgIAot
ICAgIH0sCi0gIAotICAgIHVwZGF0ZUZpbGVTeXN0ZW1FcnJvcjogZnVuY3Rpb24odHlwZSwgb3Jp
Z2luKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2ZpbGVTeXN0ZW1WaWV3ICYmIHRoaXMuX2Zp
bGVTeXN0ZW1WaWV3ID09PSB0aGlzLnZpc2libGVWaWV3KQotICAgICAgICAgICAgdGhpcy5fZmls
ZVN5c3RlbVZpZXcudXBkYXRlRmlsZVN5c3RlbUVycm9yKHR5cGUsIG9yaWdpbik7ICAKLSAgICB9
LAotICAgIAotICAgIHNldEZpbGVTeXN0ZW1EaXNhYmxlZDogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgaWYgKHRoaXMuX2ZpbGVTeXN0ZW1WaWV3ICYmIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3ID09
PSB0aGlzLnZpc2libGVWaWV3KQotICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbVZpZXcuc2V0
RmlsZVN5c3RlbURpc2FibGVkKCk7ICAKLSAgICB9LAotCiAgICAgdXBkYXRlTmV0d29ya1N0YXRl
OiBmdW5jdGlvbihpc05vd09ubGluZSkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9hcHBsaWNh
dGlvbkNhY2hlVmlldyAmJiB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlVmlldyA9PT0gdGhpcy52aXNp
YmxlVmlldykKQEAgLTEyODMsMjcgKzEyNDAsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VSZXZp
c2lvblRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLlJlc291cmNlUmV2
aXNpb25UcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkJhc2VT
dG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlOwogCi1XZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRy
ZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFnZVBhbmVsLCBvcmlnaW4pCi17Ci0gICAgV2ViSW5z
cGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBzdG9yYWdlUGFuZWwsIG51
bGwsIG9yaWdpbiwgImZpbGUtc3lzdGVtLXN0b3JhZ2UtdHJlZS1pdGVtIik7Ci0gICAgdGhpcy5f
b3JpZ2luID0gb3JpZ2luOwotfQotCi1XZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKLSAgICBnZXQgaXRlbVVSTCgpCi0gICAgewotICAgICAgICByZXR1cm4g
ImZpbGUtc3lzdGVtOi8vIiArIGVuY29kZVVSSSh0aGlzLl9vcmlnaW4pOwotICAgIH0sCi0KLSAg
ICBvbnNlbGVjdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkJhc2VT
dG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0LmNhbGwodGhpcyk7Ci0gICAgICAg
IHRoaXMuX3N0b3JhZ2VQYW5lbC5zaG93RmlsZVN5c3RlbSh0aGlzLCB0aGlzLl9vcmlnaW4pOwot
ICAgIH0KLX0KLSAKLVdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlw
ZTsKLSAKIFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlWaWV3ID0gZnVuY3Rpb24oKQogewog
ICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRleCA4M2ViYWYwLi42OGI4MWE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKQEAgLTQ1
LDcgKzQ1LDYgQEAgdmFyIFByZWZlcmVuY2VzID0gewogICAgIG9ubGluZURldGVjdGlvbkVuYWJs
ZWQ6IHRydWUsCiAgICAgbmF0aXZlSW5zdHJ1bWVudGF0aW9uRW5hYmxlZDogZmFsc2UsCiAgICAg
cmVzb3VyY2VFeHBvcnRFbmFibGVkOiBmYWxzZSwKLSAgICBmaWxlU3lzdGVtRW5hYmxlZDogZmFs
c2UsCiAgICAgdXNlRGF0YVVSTEZvclJlc291cmNlSW1hZ2VJY29uczogdHJ1ZSwKICAgICBzaG93
VGltaW5nVGFiOiBmYWxzZSwKICAgICBzaG93Q29va2llc1RhYjogZmFsc2UsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggY2E2YmEyOS4uZGQz
MjViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJL
aXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YwpAQCAtNDQsNyArNDQsNiBAQAogICAgIDxmaWxlPkV4dGVuc2lvblBhbmVsLmpzPC9maWxlPgog
ICAgIDxmaWxlPkV4dGVuc2lvblJlZ2lzdHJ5U3R1Yi5qczwvZmlsZT4KICAgICA8ZmlsZT5FeHRl
bnNpb25TZXJ2ZXIuanM8L2ZpbGU+Ci0gICAgPGZpbGU+RmlsZVN5c3RlbVZpZXcuanM8L2ZpbGU+
CiAgICAgPGZpbGU+Rm9udFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+R29Ub0xpbmVEaWFsb2cu
anM8L2ZpbGU+CiAgICAgPGZpbGU+SEFSRW50cnkuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCA0ZDhlOTUzLi4w
NDM1ZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWwKQEAgLTcyLDcgKzcyLDYgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJDb29raWVzVGFibGUuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvb2tpZUl0ZW1zVmlldy5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQXBwbGljYXRp
b25DYWNoZUl0ZW1zVmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iRmlsZVN5c3RlbVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNjcmlwdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQnJlYWtwb2ludE1hbmFn
ZXIuanMiPjwvc2NyaXB0Pgo=
</data>
<flag name="review"
          id="73605"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81988</attachid>
            <date>2011-02-10 09:11:07 -0800</date>
            <delta_ts>2011-02-10 09:15:12 -0800</delta_ts>
            <desc>[PATCH] Review comments addressed.</desc>
            <filename>filesystem</filename>
            <type>text/plain</type>
            <size>51958</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDY0YmYxNi4uMDRhZDIwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEwMzAsNyArMTAzMCw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZS5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKLSAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAogICAgIGluc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3OGRiMTQ4Li4zYTQ5NDg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMTEtMDItMDkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2ViIEluc3BlY3RvcjogUmVtb3ZlIEZpbGVTeXN0ZW0gc3VwcG9ydCBmcm9tIHRoZSBpbnNw
ZWN0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDY5NQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
YW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0QXBwbGljYXRpb25DYWNoZXMpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50aWZpZXJGb3JJbml0aWFsUmVx
dWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsU2VuZFJlcXVlc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVSZXNvdXJjZVJlc3BvbnNlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVzb3Vy
Y2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om5ldHdvcmtTdGF0ZUNoYW5nZWRJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dXBkYXRlQXBwbGlj
YXRpb25DYWNoZVN0YXR1c0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpyZXRyaWV2ZVJlc291cmNlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWw6CisKIDIwMTEtMDItMTAgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KaW5kZXggMzZmNzJhYi4uZGNjNDRhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTE5ODcsOCArMTk4Nyw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCBcCi0JU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBcCiAJU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBiYTllMzEzLi5jYTdiMjllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0yMDQ1LDggKzIwNDUsNiBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VSZXNvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9y
YWdlUmVzb3VyY2UuaCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudC5jcHAnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgnLApAQCAtNDY5
Niw3ICs0Njk0LDYgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lv
blBhbmVsLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblJl
Z2lzdHJ5U3R1Yi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNp
b25TZXJ2ZXIuanMnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3Rl
bVZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvR29Ub0xpbmVEaWFsb2cuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanMnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
bwppbmRleCBkY2RiN2E1Li44ODUyMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTA2MCw3ICsxMDYw
LDYgQEAgU09VUkNFUyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBc
CiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgXAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwIFwKLSAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAwY2M0ZmQy
Li42YWEyNjY5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtNjU0NTQsMTQgKzY1NDU0LDYgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8Rmls
ZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dC5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGluc3BlY3RvclxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+
Ci0JCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZyb250
ZW5kQ2xpZW50LmgiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtNjU3NzMsMTAgKzY1NzY1LDYgQEAK
IAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3Rvclxmcm9udC1lbmRcRmlsZVN5c3RlbVZpZXcuanMiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+
Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEZv
bnRWaWV3LmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDlmM2UyNDYuLmNhYzQzNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTg2MCw4ICs4NjAsNiBAQAogCQkzN0Y4MThGRDBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29y
ZVVSTFJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzN0Y4MThGQjBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVSTFJlc3BvbnNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzdGODE4RkUw
RDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RjgxOEZDMEQ2NTc2MDYwMDVFMUYwNSAv
KiBXZWJDb3JlVVJMUmVzcG9uc2UubW0gKi87IH07CiAJCTM3RkQ0Mjk4MTE4MzY4NDYwMDkzQzAy
OSAvKiBUcmVlRGVwdGhMaW1pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzdGRDQyOTcxMTgzNjg0NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0Lmgg
Ki87IH07Ci0JCTM4ODhGNkVFMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Mzg4OEY2RUMxMjhDOTg4OTAwMENBOEUwIC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAg
Ki87IH07Ci0JCTM4ODhGNkVGMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4
ODhGNkVEMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCAqLzsg
fTsKIAkJM0FDNjQ4QjIxMjlFMTQ2NTAwQzNFQjI1IC8qIEVkaXRpbmdCb3VuZGFyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0FDNjQ4QjExMjlFMTQ2
NTAwQzNFQjI1IC8qIEVkaXRpbmdCb3VuZGFyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMDAyQ0NEMEY2NkVERUYwMDlFNjYwRCAvKiBTY3Jp
cHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAq
LzsgfTsKIAkJNDEwMDJDQ0UwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkND
QzBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLzsgfTsKQEAgLTcy
MjUsOCArNzIyMyw2IEBACiAJCTM3RjgxOEZDMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJM
UmVzcG9uc2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJD
b3JlVVJMUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RkM5NkRB
MTEwNEVENzEwMDNFMUZBRCAvKiBUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RkQ0Mjk3MTE4MzY4NDYwMDkzQzAyOSAv
KiBUcmVlRGVwdGhMaW1pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmVl
RGVwdGhMaW1pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzODg4RjZFQzEyOEM5
ODg5MDAwQ0E4RTAgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM4ODhGNkVEMTI4Qzk4ODkwMDBDQThFMCAvKiBJ
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTNBQzY0OEIxMTI5RTE0NjUwMEMzRUIyNSAvKiBFZGl0aW5nQm91bmRhcnkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ0JvdW5kYXJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5j
dGlvbkNhbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RnVuY3Rp
b25DYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMDAyQ0NDMEY2NkVERUYw
MDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzMDExLDggKzEzMDA3LDYgQEAKIAkJCQk3QTc0RUNCOTEwMTgzOUE2MDBC
RjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggKi8sCiAJCQkJNDFGMDYxNzMwRjVG
MDBBQzAwQTA3RUFDIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAgKi8sCiAJCQkJ
NDFGMDYxNzIwRjVGMDBBQzAwQTA3RUFDIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5o
ICovLAotCQkJCTM4ODhGNkVDMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQuY3BwICovLAotCQkJCTM4ODhGNkVEMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQuaCAqLywKIAkJCQlGMzQ0QzcxMjExMjVCODJDMDBGMjZFRUUgLyogSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLywKIAkJCQlGMzQ0Qzc1NzExMjk0RkY2MDBGMjZFRUUg
LyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgKi8sCiAJCQkJRjM0NEM3NTIxMTI5
NEQ5RDAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCAqLywKQEAgLTIw
OTI2LDcgKzIwOTIwLDYgQEAKIAkJCQk3QTI0NTg3QzEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVj
dG9yRE9NQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBNzRFQ0JCMTAxODM5QTYwMEJGOTM5
RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjA2
MTc0MEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTM4ODhGNkVGMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNDRDNzE0MTEyNUI4MkMwMEYyNkVF
RSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM0NEM3
NTMxMTI5NEQ5RDAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdBMEU3NzBGMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjM2NTksNyArMjM2NTIsNiBAQAogCQkJCTdB
MjQ1ODdCMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QTc0RUNCQTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxRjA2MTc1MEY1RjAwQUMwMEEwN0VBQyAv
KiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMzg4
OEY2RUUxMjhDOTg4OTAwMENBOEUwIC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0RjRGNUZGQjExQ0JEMkUxMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJv
bnRlbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM0NEM3NTgxMTI5NEZGNjAwRjI2RUVFIC8q
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0Ew
RTc3MEUxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
aWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKaW5kZXggYTc5NGFh
My4uODBjMjRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTE1
MSwxNyArMTUxLDYgQEAgbW9kdWxlIGNvcmUgewogICAgIH07CiAjZW5kaWYKIAotI2lmIGRlZmlu
ZWQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAmJiBFTkFCTEVfRklMRV9TWVNURU0KLSAgICBpbnRlcmZh
Y2UgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0gRmlsZVN5c3RlbSB7Ci0gICAgICAgIHZvaWQgZ2V0
RmlsZVN5c3RlbVBhdGhBc3luYyhpbiB1bnNpZ25lZCBpbnQgdHlwZSwgaW4gU3RyaW5nIG9yaWdp
bik7Ci0gICAgICAgIHZvaWQgcmV2ZWFsRm9sZGVySW5PUyhpbiBTdHJpbmcgcGF0aCk7Ci0KLSAg
ICAgICAgW25vdGlmeV0gdm9pZCBkaWRHZXRGaWxlU3lzdGVtUGF0aChvdXQgU3RyaW5nIHJvb3Qs
IG91dCBpbnQgdHlwZSwgb3V0IFN0cmluZyBvcmlnaW4pOwotICAgICAgICBbbm90aWZ5XSB2b2lk
IGRpZEdldEZpbGVTeXN0ZW1FcnJvcihvdXQgaW50IHR5cGUsIG91dCBTdHJpbmcgb3JpZ2luKTsK
LSAgICAgICAgW25vdGlmeV0gdm9pZCBkaWRHZXRGaWxlU3lzdGVtRGlzYWJsZWQoKTsKLSAgICB9
OwotI2VuZGlmCi0KICAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0gRE9NIHsK
ICAgICAgICAgdm9pZCBnZXRDaGlsZE5vZGVzKGluIGxvbmcgbm9kZUlkKTsKICAgICAgICAgdm9p
ZCBzZXRBdHRyaWJ1dGUoaW4gbG9uZyBlbGVtZW50SWQsIGluIFN0cmluZyBuYW1lLCBpbiBTdHJp
bmcgdmFsdWUsIG91dCBib29sZWFuIHN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggYzZkOWNhMC4uODBlMGY1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC0xMjAsMTAgKzEyMCw2IEBA
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgiCiAjZW5kaWYKIAot
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSNpbmNsdWRlICJJbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC00MDMsMTEgKzM5OSw3IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmNyZWF0ZUZyb250
ZW5kTGlmZXRpbWVBZ2VudHMoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05TKQotICAgIG1fYXBwbGljYXRpb25DYWNoZUFnZW50ID0gbmV3IEluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudCh0aGlzLCBtX2Zyb250ZW5kKTsKLSNlbmRpZgotCi0jaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQotICAgIG1fZmlsZVN5c3RlbUFnZW50ID0gSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50OjpjcmVhdGUodGhpcywgbV9mcm9udGVuZCk7CisgICAgbV9hcHBsaWNhdGlvbkNh
Y2hlQWdlbnQgPSBuZXcgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KG1faW5zcGVjdGVk
UGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLCBtX2Zyb250ZW5k
KTsKICNlbmRpZgogfQogCkBAIC00MzksMTEgKzQzMSw2IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6
OnJlbGVhc2VGcm9udGVuZExpZmV0aW1lQWdlbnRzKCkKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5jbGVhcigpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgaWYg
KG1fZmlsZVN5c3RlbUFnZW50KQotICAgICAgICBtX2ZpbGVTeXN0ZW1BZ2VudC0+c3RvcCgpOwot
ICAgICAgICBtX2ZpbGVTeXN0ZW1BZ2VudC5jbGVhcigpOwotI2VuZGlmCiAgICAgc3RvcFRpbWVs
aW5lUHJvZmlsZXIoKTsKIH0KIApAQCAtNTQ0LDcgKzUzMSw3IEBAIHZvaWQgSW5zcGVjdG9yQWdl
bnQ6OmRpZENvbW1pdExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogICAgIGlmIChtX3Jl
c291cmNlQWdlbnQpCiAgICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+ZGlkQ29tbWl0TG9hZChsb2Fk
ZXIpOwotICAgIAorCiAgICAgQVNTRVJUKG1faW5zcGVjdGVkUGFnZSk7CiAKICAgICBpZiAobG9h
ZGVyLT5mcmFtZSgpID09IG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkpIHsKQEAgLTU1NCw2
ICs1NDEsOSBAQCB2b2lkIEluc3BlY3RvckFnZW50OjpkaWRDb21taXRMb2FkKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIpCiAgICAgICAgIG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5kaXNjYXJkSW5qZWN0
ZWRTY3JpcHRzKCk7CiAgICAgICAgIG1fY29uc29sZUFnZW50LT5yZXNldCgpOwogCisgICAgICAg
IGlmIChtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudCkKKyAgICAgICAgICAgIG1fYXBwbGljYXRpb25D
YWNoZUFnZW50LT5kaWRDb21taXRMb2FkKGxvYWRlcik7CisKICNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikKICAgICAgICAgaWYgKG1fZGVidWdnZXJBZ2VudCkgewogICAgICAgICAgICAg
S1VSTCB1cmwgPSBpbnNwZWN0ZWRVUkxXaXRob3V0RnJhZ21lbnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXggZDE1YzFlYi4uMjZmN2MxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKQEAgLTk0LDEwICs5NCw2IEBA
IGNsYXNzIFN0b3JhZ2VBcmVhOwogY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi1jbGFzcyBJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQ7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKIGNsYXNzIFdl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q7CiBjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZTsKQEAgLTE1Myw5ICsxNDksNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQog
ICAgIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCogZG9tU3RvcmFnZUFnZW50KCkgeyByZXR1cm4g
bV9kb21TdG9yYWdlQWdlbnQuZ2V0KCk7IH0KICNlbmRpZgotI2lmIEVOQUJMRShGSUxFX1NZU1RF
TSkKLSAgICBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQqIGZpbGVTeXN0ZW1BZ2VudCgpIHsgcmV0
dXJuIG1fZmlsZVN5c3RlbUFnZW50LmdldCgpOyB9Ci0jZW5kaWYKICNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKICAgICBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCogYnJvd3Nl
ckRlYnVnZ2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50Lmdl
dCgpOyB9CiAgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVidWdnZXJBZ2VudC5nZXQoKTsgfQpAQCAtMjk1LDEwICsyODgsNiBAQCBw
cml2YXRlOgogICAgIE93blB0cjxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+IG1fYXBw
bGljYXRpb25DYWNoZUFnZW50OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0g
ICAgUmVmUHRyPEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4gbV9maWxlU3lzdGVtQWdlbnQ7Ci0j
ZW5kaWYKLQogICAgIFJlZlB0cjxOb2RlPiBtX2hpZ2hsaWdodGVkTm9kZTsKICAgICBSZWZQdHI8
Tm9kZT4gbV9ub2RlVG9Gb2N1czsKICAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4g
bV9yZXNvdXJjZUFnZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCAyNzc2YzU2Li5iMzhi
YjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtNDEsMTIgKzQxLDE3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBJ
bnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCi0gICAgOiBtX2luc3BlY3RvckFnZW50KGluc3Bl
Y3RvckFnZW50KQorSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyLCBJbnNwZWN0
b3JGcm9udGVuZCogZnJvbnRlbmQpCisgICAgOiBtX2RvY3VtZW50TG9hZGVyKGRvY3VtZW50TG9h
ZGVyKQogICAgICwgbV9mcm9udGVuZChmcm9udGVuZCkKIHsKIH0KIAordm9pZCBJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZENvbW1pdExvYWQoRG9jdW1lbnRMb2FkZXIqIGRvY3Vt
ZW50TG9hZGVyKQoreworICAgIG1fZG9jdW1lbnRMb2FkZXIgPSBkb2N1bWVudExvYWRlcjsKK30K
Kwogdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OnVwZGF0ZUFwcGxpY2F0aW9u
Q2FjaGVTdGF0dXMoRnJhbWUqIGZyYW1lKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpT
dGF0dXMgc3RhdHVzID0gZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNh
dGlvbkNhY2hlSG9zdCgpLT5zdGF0dXMoKTsKQEAgLTYxLDkgKzY2LDggQEAgdm9pZCBJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogCiB2b2lkIElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0QXBwbGljYXRpb25DYWNoZXMoUmVmUHRy
PEluc3BlY3RvclZhbHVlPiogYXBwbGljYXRpb25DYWNoZXMpCiB7Ci0gICAgRG9jdW1lbnRMb2Fk
ZXIqIGRvY3VtZW50TG9hZGVyID0gbV9pbnNwZWN0b3JBZ2VudC0+aW5zcGVjdGVkUGFnZSgpLT5t
YWluRnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCk7Ci0gICAgaWYgKGRvY3VtZW50
TG9hZGVyKSB7Ci0gICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBob3N0ID0gZG9jdW1lbnRM
b2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCk7CisgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIp
IHsKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZUhvc3QqIGhvc3QgPSBtX2RvY3VtZW50TG9hZGVy
LT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpOwogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
Q2FjaGVJbmZvIGluZm8gPSBob3N0LT5hcHBsaWNhdGlvbkNhY2hlSW5mbygpOwogCiAgICAgICAg
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0IHJlc291cmNlczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQuaAppbmRleCBiOTM1MmZlLi4zM2NlZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBA
IC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRG9jdW1lbnRM
b2FkZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVj
dG9yQWdlbnQ7CkBAIC00NCw5ICs0NSwxMSBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xh
c3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5zcGVj
dG9yQWdlbnQqLCBJbnNwZWN0b3JGcm9udGVuZCopOworICAgIEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudChEb2N1bWVudExvYWRlciosIEluc3BlY3RvckZyb250ZW5kKik7CiAgICAgfklu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpIHsgfQogCisgICAgdm9pZCBkaWRDb21taXRM
b2FkKERvY3VtZW50TG9hZGVyKik7CisKICAgICAvLyBCYWNrZW5kIHRvIEZyb250ZW5kCiAgICAg
dm9pZCB1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKEZyYW1lKik7CiAgICAgdm9pZCBuZXR3
b3JrU3RhdGVDaGFuZ2VkKCk7CkBAIC01OSw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JBcnJheT4gYnVpbGRBcnJheUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZXMoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3QmKTsKICAgICBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbyYpOwogCi0g
ICAgSW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7CisgICAgRG9jdW1lbnRMb2FkZXIq
IG1fZG9jdW1lbnRMb2FkZXI7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmQqIG1fZnJvbnRlbmQ7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjdjOTdhLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgiCi0KLSNpZiBFTkFCTEUoSU5T
UEVDVE9SKSAmJiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJBc3luY0ZpbGVXcml0
ZXIuaCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNp
bmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNs
dWRlICJGcmFtZVRyZWUuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudC5oIgotI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiTG9jYWxGaWxlU3lzdGVtLmgiCi0jaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIElu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudENhbGxiYWNrcyA6IHB1YmxpYyBBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MgewotcHVibGljOgotICAgIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudENhbGxiYWNr
cyhJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQqIGFnZW50LCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCi0gICAgICAgIDogbV9hZ2VudChhZ2VudCkKLSAg
ICAgICAgLCBtX3R5cGUodHlwZSkKLSAgICAgICAgLCBtX29yaWdpbihvcmlnaW4pCi0gICAgeyAK
LSAgICB9Ci0KLSAgICB+SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Q2FsbGJhY2tzKCkKLSAgICB7
Ci0gICAgfQotCi0gICAgLy8gRmlsZVN5c3RlbUNhbGxiYWNrcyBpcyBvbmx5IHVzZWQgZm9yIGdl
dHRpbmcgZmlsZXN5c3RlbS4gQWxsIG90aGVyIG1ldGhvZHMgYXJlIGlycmVsZXZhbnQgYW5kIHdp
bGwgbm90IGJlIGNhbGxlZC4KLSAgICB2b2lkIGRpZFN1Y2NlZWQoKQotICAgIHsKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgdm9pZCBkaWRPcGVuRmlsZVN5c3Rl
bShjb25zdCBTdHJpbmcmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSkK
LSAgICB7Ci0gICAgICAgIC8vIEFnZW50IHdpbGwgYmUgYWxpdmUgZXZlbiBpZiBJbnNwZWN0b3JB
Z2VudCBpcyBkZXN0cm95ZWQgdW50aWwgY2FsbGJhY2sgaXMgcnVuLgotICAgICAgICBtX2FnZW50
LT5kaWRHZXRGaWxlU3lzdGVtUGF0aChmaWxlU3lzdGVtLT5yb290KCksIG1fdHlwZSwgbV9vcmln
aW4pOwotICAgIH0KLQotICAgIHZvaWQgZGlkUmVhZE1ldGFkYXRhKGNvbnN0IEZpbGVNZXRhZGF0
YSYpCi0gICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICB2
b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyeShjb25zdCBTdHJpbmcmLCBib29sKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgdm9pZCBkaWRSZWFkRGly
ZWN0b3J5RW50cmllcyhib29sKQotICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgfQotCi0gICAgdm9pZCBkaWRDcmVhdGVGaWxlV3JpdGVyKFBhc3NPd25QdHI8QXN5bmNG
aWxlV3JpdGVyPiwgbG9uZyBsb25nKQotICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgZGlkRmFpbChpbnQpCi0gICAgewotICAgICAgICAv
LyBGSVhNRTogSXMgaXQgdXNlZnVsIHRvIGdpdmUgYmFjayB0aGUgY29kZSB0byBJbnNwZWN0b3Ig
VUk/Ci0gICAgICAgIG1fYWdlbnQtPmRpZEdldEZpbGVTeXN0ZW1FcnJvcihtX3R5cGUsIG1fb3Jp
Z2luKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudD4gbV9hZ2VudDsKLSAgICBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgbV90eXBlOwotICAgIFN0
cmluZyBtX29yaWdpbjsKLX07Ci0KLUluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6SW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50KEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgSW5zcGVjdG9y
RnJvbnRlbmQqIGZyb250ZW5kKQotICAgIDogbV9pbnNwZWN0b3JBZ2VudChpbnNwZWN0b3JBZ2Vu
dCkKLSAgICAsIG1fZnJvbnRlbmQoZnJvbnRlbmQpCi17Ci19Ci0KLUluc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudDo6fkluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCgpIHsgfQotCi12b2lkIEluc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudDo6c3RvcCgpCi17Ci0gICAgbV9pbnNwZWN0b3JBZ2VudCA9IDA7Ci19
Ci0KLSNpZiBQTEFURk9STShDSFJPTUlVTSkKLXZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
OjpyZXZlYWxGb2xkZXJJbk9TKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICAvLyBGSVhNRTog
UmVtb3ZlIGd1YXJkIHdoZW4gcmV2ZWFsRm9sZGVySW5PUyBpcyBpbXBsZW1lbnRlZCBmb3Igbm9u
LWNocm9taXVtIHBsYXRmb3Jtcy4KLSAgICBXZWJDb3JlOjpyZXZlYWxGb2xkZXJJbk9TKHBhdGgp
OwotfQotI2Vsc2UKLXZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXZlYWxGb2xkZXJJ
bk9TKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLSNlbmRpZgot
Ci12b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6Z2V0RmlsZVN5c3RlbVBhdGhBc3luYyh1
bnNpZ25lZCBpbnQgdHlwZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCi17Ci0gICAgaWYgKCFSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpmaWxlU3lzdGVtRW5hYmxlZCgpKSB7Ci0gICAgICAgIG1fZnJv
bnRlbmQtPmRpZEdldEZpbGVTeXN0ZW1EaXNhYmxlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIGFzeW5jRmlsZVN5c3RlbVR5cGUgPSBzdGF0
aWNfY2FzdDxBc3luY0ZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpOwotICAgIEZyYW1lKiBtYWluRnJh
bWUgPSBtX2luc3BlY3RvckFnZW50LT5pbnNwZWN0ZWRQYWdlKCktPm1haW5GcmFtZSgpOwotICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLT50cmF2ZXJzZU5leHQoKSkgewotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFt
ZS0+ZG9jdW1lbnQoKTsKLSAgICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpLT50b1N0cmluZygpID09IG9yaWdpbikgewotICAgICAgICAgICAgTG9jYWxGaWxl
U3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbShkb2N1bWVudCwgYXN5bmNG
aWxlU3lzdGVtVHlwZSwgMCwgbmV3IEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudENhbGxiYWNrcyh0
aGlzLCBhc3luY0ZpbGVTeXN0ZW1UeXBlLCBvcmlnaW4pKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRp
ZEdldEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYgcm9vdCwgQXN5bmNGaWxlU3lzdGVtOjpU
eXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQotewotICAgIC8vIFdoZW4gY29udHJvbGxl
ciBpcyBiZWluZyBkZXN0cm95ZWQsIHRoaXMgaXMgc2V0IHRvIDAuIEFnZW50IGNhbiBsaXZlIGV2
ZW4gYWZ0ZXIgbV9pbnNwZWN0b3JBZ2VudCBpcyBkZXN0cm95ZWQuCi0gICAgaWYgKCFtX2luc3Bl
Y3RvckFnZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Zyb250ZW5kLT5kaWRHZXRGaWxl
U3lzdGVtUGF0aChyb290LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHR5cGUpLCBvcmlnaW4p
OwotfQotCi12b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZGlkR2V0RmlsZVN5c3RlbUVy
cm9yKEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKLXsK
LSAgICAvLyBXaGVuIGNvbnRyb2xsZXIgaXMgYmVpbmcgZGVzdHJveWVkLCB0aGlzIGlzIHNldCB0
byAwLiBBZ2VudCBjYW4gbGl2ZSBldmVuIGFmdGVyIG1faW5zcGVjdG9yQWdlbnQgaXMgZGVzdHJv
eWVkLgotICAgIGlmICghbV9pbnNwZWN0b3JBZ2VudCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1f
ZnJvbnRlbmQtPmRpZEdldEZpbGVTeXN0ZW1FcnJvcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+
KHR5cGUpLCBvcmlnaW4pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoRklMRV9TWVNURU0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5OTVkNzAuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCisrKyAvZGV2L251bGwKQEAg
LTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICog
bWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50X2gKLSNkZWZpbmUg
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50X2gKLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVO
QUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgotI2luY2x1
ZGUgIkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBJbnNw
ZWN0b3JBZ2VudDsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kOwotY2xhc3MgTG9jYWxGaWxlU3lz
dGVtOwotCi1jbGFzcyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+IGNyZWF0ZShJbnNwZWN0b3JBZ2VudCogaW5z
cGVjdG9yQWdlbnQsIEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KGluc3BlY3RvckFn
ZW50LCBmcm9udGVuZCkpOwotICAgIH0KLQotICAgIH5JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQo
KTsKLSAgICB2b2lkIHN0b3AoKTsKLQotICAgIC8vIEZyb20gRnJvbnRlbmQKLSAgICB2b2lkIGdl
dEZpbGVTeXN0ZW1QYXRoQXN5bmModW5zaWduZWQgaW50IHR5cGUsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luKTsKLSAgICB2b2lkIHJldmVhbEZvbGRlckluT1MoY29uc3QgU3RyaW5nJiBwYXRoKTsKLQot
ICAgIC8vIEJhY2tlbmQgdG8gRnJvbnRlbmQKLSAgICB2b2lkIGRpZEdldEZpbGVTeXN0ZW1QYXRo
KGNvbnN0IFN0cmluZyYsIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSwgY29uc3QgU3RyaW5nJiBvcmln
aW4pOwotICAgIHZvaWQgZGlkR2V0RmlsZVN5c3RlbUVycm9yKEFzeW5jRmlsZVN5c3RlbTo6VHlw
ZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwotICAgIHZvaWQgZGlkR2V0RmlsZVN5c3RlbURpc2Fi
bGVkKCk7Ci0KLXByaXZhdGU6Ci0gICAgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KEluc3BlY3Rv
ckFnZW50KiwgSW5zcGVjdG9yRnJvbnRlbmQqKTsKLSAgICB2b2lkIGdldEZpbGVTeXN0ZW1Sb290
KEFzeW5jRmlsZVN5c3RlbTo6VHlwZSk7Ci0KLSAgICBJbnNwZWN0b3JBZ2VudCogbV9pbnNwZWN0
b3JBZ2VudDsKLSAgICBJbnNwZWN0b3JGcm9udGVuZCogbV9mcm9udGVuZDsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJM
RShGSUxFX1NZU1RFTSkKLSNlbmRpZiAvLyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcAppbmRleCAwNzQ1MDVlLi4zOTk5MjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMzcyLDEyICszNzIs
MTIgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2FsY3VsYXRlU3R5bGVJ
bXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnQKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlk
UmVjYWxjdWxhdGVTdHlsZSgpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0SW1wbChJbnNwZWN0b3JBZ2VudCogaWMsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50
aWZpZXJGb3JJbml0aWFsUmVxdWVzdEltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBpZiAoIWljLT5lbmFibGVkKCkpCisg
ICAgaWYgKCFpbnNwZWN0b3JBZ2VudC0+ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVz
b3VyY2VBZ2VudChpYykpCisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNl
QWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaW5zcGVjdG9yQWdlbnQpKQogICAgICAgICBy
ZXNvdXJjZUFnZW50LT5pZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoaWRlbnRpZmllciwgcmVx
dWVzdC51cmwoKSwgbG9hZGVyKTsKIH0KIApAQCAtMzg2LDI1ICszODYsMjUgQEAgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmFwcGx5VXNlckFnZW50T3ZlcnJpZGVJbXBsKEluc3BlY3Rv
ckFnZW50KiBpbnNwZWMKICAgICBpbnNwZWN0b3JBZ2VudC0+YXBwbHlVc2VyQWdlbnRPdmVycmlk
ZSh1c2VyQWdlbnQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNl
bmRSZXF1ZXN0SW1wbChJbnNwZWN0b3JBZ2VudCogaWMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVx
dWVzdEltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCog
dGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpYykpCisgICAgaWYgKEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQo
aW5zcGVjdG9yQWdlbnQpKQogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsU2VuZFJlc291cmNl
UmVxdWVzdChpZGVudGlmaWVyLCByZXF1ZXN0KTsKLSAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgaWYg
KEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNl
QWdlbnQoaW5zcGVjdG9yQWdlbnQpKQogICAgICAgICByZXNvdXJjZUFnZW50LT53aWxsU2VuZFJl
cXVlc3QoaWRlbnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptYXJrUmVzb3VyY2VBc0NhY2hlZEltcGwoSW5zcGVj
dG9yQWdlbnQqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKEluc3BlY3RvckFnZW50KiBp
bnNwZWN0b3JBZ2VudCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogewotICAgIGlmIChJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50
KGljKSkKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJl
dHJpZXZlUmVzb3VyY2VBZ2VudChpbnNwZWN0b3JBZ2VudCkpCiAgICAgICAgIHJlc291cmNlQWdl
bnQtPm1hcmtSZXNvdXJjZUFzQ2FjaGVkKGlkZW50aWZpZXIpOwogfQogCi12b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1wbChJbnNw
ZWN0b3JBZ2VudCogaWMsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IENhY2hlZFJlc291
cmNlKiBjYWNoZWRSZXNvdXJjZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRM
b2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JB
Z2VudCwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgQ2FjaGVkUmVzb3VyY2UqIGNhY2hl
ZFJlc291cmNlKQogewotICAgIGlmICghaWMtPmVuYWJsZWQoKSkKKyAgICBpZiAoIWluc3BlY3Rv
ckFnZW50LT5lbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisg
ICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJl
c291cmNlQWdlbnQoaW5zcGVjdG9yQWdlbnQpKQogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRM
b2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUobG9hZGVyLCBjYWNoZWRSZXNvdXJjZSk7CiB9CiAK
QEAgLTQzOCw0NyArNDM4LDQ3IEBAIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwCiAKIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoY29u
c3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCiB7Ci0gICAgSW5zcGVjdG9yQWdlbnQqIGljID0gY29va2llLmZpcnN0Owot
ICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVS
ZXNvdXJjZUFnZW50KGljKSkKKyAgICBJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQgPSBj
b29raWUuZmlyc3Q7CisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdl
bnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaW5zcGVjdG9yQWdlbnQpKQogICAgICAgICByZXNv
dXJjZUFnZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgbG9hZGVyLCByZXNwb25z
ZSk7Ci0gICAgaWMtPmNvbnNvbGVBZ2VudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmll
ciwgcmVzcG9uc2UpOworICAgIGluc3BlY3RvckFnZW50LT5jb25zb2xlQWdlbnQoKS0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICBpZiAoSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUp
KQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZSgpOwog
fQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGhJbXBsKEluc3BlY3RvckFnZW50KiBpYywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQg
bGVuZ3RoUmVjZWl2ZWQpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2
ZUNvbnRlbnRMZW5ndGhJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCiB7Ci0gICAgaWYgKEluc3Bl
Y3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQo
aWMpKQorICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0
cmlldmVSZXNvdXJjZUFnZW50KGluc3BlY3RvckFnZW50KSkKICAgICAgICAgcmVzb3VyY2VBZ2Vu
dC0+ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoaWRlbnRpZmllciwgbGVuZ3RoUmVjZWl2ZWQpOwog
fQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZ0ltcGwo
SW5zcGVjdG9yQWdlbnQqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5p
c2hUaW1lKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJ
bXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBkb3VibGUgZmluaXNoVGltZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpYykpCisgICAgaWYgKElu
c3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdl
bnQoaW5zcGVjdG9yQWdlbnQpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRGaW5pc2hMb2Fk
aW5nUmVzb3VyY2UoaWRlbnRpZmllciwgZmFsc2UsIGZpbmlzaFRpbWUpOwotICAgIGlmIChJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50
KGljKSkKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJl
dHJpZXZlUmVzb3VyY2VBZ2VudChpbnNwZWN0b3JBZ2VudCkpCiAgICAgICAgIHJlc291cmNlQWdl
bnQtPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllciwgZmluaXNoVGltZSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZ0ltcGwoSW5zcGVjdG9yQWdl
bnQqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nSW1wbChJ
bnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgaWMtPmNvbnNvbGVBZ2VudCgpLT5k
aWRGYWlsTG9hZGluZyhpZGVudGlmaWVyLCBlcnJvcik7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaWMpKQorICAg
IGluc3BlY3RvckFnZW50LT5jb25zb2xlQWdlbnQoKS0+ZGlkRmFpbExvYWRpbmcoaWRlbnRpZmll
ciwgZXJyb3IpOworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckFnZW50KSkKICAgICAgICAgdGltZWxp
bmVBZ2VudC0+ZGlkRmluaXNoTG9hZGluZ1Jlc291cmNlKGlkZW50aWZpZXIsIHRydWUsIDApOwot
ICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVS
ZXNvdXJjZUFnZW50KGljKSkKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3Vy
Y2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpbnNwZWN0b3JBZ2VudCkpCiAgICAgICAg
IHJlc291cmNlQWdlbnQtPmRpZEZhaWxMb2FkaW5nKGlkZW50aWZpZXIsIGVycm9yKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRw
UmVxdWVzdEltcGwoSW5zcGVjdG9yQWdlbnQqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcikKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3RJbXBsKEluc3Bl
Y3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
c2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpCiB7Ci0gICAgaWMtPmNvbnNvbGVBZ2Vu
dCgpLT5yZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodXJsLCBzZW5kVVJMLCBzZW5k
TGluZU51bWJlcik7Ci0gICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdl
bnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaWMpKQorICAgIGluc3BlY3RvckFnZW50LT5jb25z
b2xlQWdlbnQoKS0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVybCwgc2VuZFVS
TCwgc2VuZExpbmVOdW1iZXIpOworICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNv
dXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGluc3BlY3RvckFnZW50KSkKICAgICAg
ICAgcmVzb3VyY2VBZ2VudC0+c2V0SW5pdGlhbENvbnRlbnQoaWRlbnRpZmllciwgc291cmNlU3Ry
aW5nLCAiWEhSIik7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJ
bXBvcnRlZEltcGwoSW5zcGVjdG9yQWdlbnQqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNjcmlwdEltcG9ydGVkSW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCiB7Ci0g
ICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJl
c291cmNlQWdlbnQoaWMpKQorICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJj
ZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGluc3BlY3RvckFnZW50KSkKICAgICAgICAg
cmVzb3VyY2VBZ2VudC0+c2V0SW5pdGlhbENvbnRlbnQoaWRlbnRpZmllciwgc291cmNlU3RyaW5n
LCAiU2NyaXB0Iik7CiB9CiAKQEAgLTYzMSwxNSArNjMxLDE1IEBAIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDbG9zZVdlYlNvY2tldEltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3Bl
Y3RvckFnCiAjZW5kaWYKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCi12
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bmV0d29ya1N0YXRlQ2hhbmdlZEltcGwoSW5z
cGVjdG9yQWdlbnQqIGljKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om5ldHdvcmtT
dGF0ZUNoYW5nZWRJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCkKIHsKLSAgICBp
ZiAoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KiBhcHBsaWNhdGlvbkNhY2hlQWdlbnQg
PSBpYy0+YXBwbGljYXRpb25DYWNoZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudCogYXBwbGljYXRpb25DYWNoZUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmFw
cGxpY2F0aW9uQ2FjaGVBZ2VudCgpKQogICAgICAgICBhcHBsaWNhdGlvbkNhY2hlQWdlbnQtPm5l
dHdvcmtTdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXNJbXBsKEluc3BlY3RvckFnZW50KiBpYywgRnJh
bWUqIGZyYW1lKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnVwZGF0ZUFwcGxpY2F0
aW9uQ2FjaGVTdGF0dXNJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgRnJhbWUq
IGZyYW1lKQogewotICAgIGlmIChJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIGFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudCA9IGljLT5hcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSkKKyAgICBpZiAo
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KiBhcHBsaWNhdGlvbkNhY2hlQWdlbnQgPSBp
bnNwZWN0b3JBZ2VudC0+YXBwbGljYXRpb25DYWNoZUFnZW50KCkpCiAgICAgICAgIGFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC0+dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhmcmFtZSk7CiB9CiAj
ZW5kaWYKQEAgLTY3OCw5ICs2NzgsOSBAQCBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnJldHJpZXZlVGltZWxpbmVBZ2VudChjb25zdCBJbgogICAgIHJl
dHVybiAwOwogfQogCi1JbnNwZWN0b3JSZXNvdXJjZUFnZW50KiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OnJldHJpZXZlUmVzb3VyY2VBZ2VudChJbnNwZWN0b3JBZ2VudCogaWMpCitJbnNwZWN0
b3JSZXNvdXJjZUFnZW50KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJldHJpZXZlUmVzb3Vy
Y2VBZ2VudChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQpCiB7Ci0gICAgcmV0dXJuIGlj
LT5yZXNvdXJjZUFnZW50KCk7CisgICAgcmV0dXJuIGluc3BlY3RvckFnZW50LT5yZXNvdXJjZUFn
ZW50KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA1NmYyMWE0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMKKysrIC9kZXYvbnVsbApAQCAtMSwy
MTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLVdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlciA9IGZ1bmN0aW9uKCkK
LXsKLX0KLQotLy8gS2VlcCBpbiBzeW5jIHdpdGggVHlwZSBpbiBBc3luY0ZpbGVTeXN0ZW0uaAot
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyLlRFTVBPUkFSWSA9IDA7Ci1XZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIuUEVSU0lTVEVOVCA9IDE7Ci0KLVdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0RmlsZVN5c3RlbVBh
dGhzQXN5bmM6IGZ1bmN0aW9uKG9yaWdpbikKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvckJhY2tl
bmQuZ2V0RmlsZVN5c3RlbVBhdGhBc3luYyhXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNo
ZXIuUEVSU0lTVEVOVCwgb3JpZ2luKTsKLSAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRGaWxl
U3lzdGVtUGF0aEFzeW5jKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5URU1QT1JB
UlksIG9yaWdpbik7Ci0gICAgfSwKLQotICAgIGRpZEdldEZpbGVTeXN0ZW1QYXRoOiBmdW5jdGlv
bihyb290LCB0eXBlLCBvcmlnaW4pCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxz
LnJlc291cmNlcy51cGRhdGVGaWxlU3lzdGVtUGF0aChyb290LCB0eXBlLCBvcmlnaW4pOwotICAg
IH0sCi0KLSAgICBkaWRHZXRGaWxlU3lzdGVtRXJyb3I6IGZ1bmN0aW9uKHR5cGUsIG9yaWdpbikK
LSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnVwZGF0ZUZpbGVT
eXN0ZW1FcnJvcih0eXBlLCBvcmlnaW4pOwotICAgIH0sCi0KLSAgICBkaWRHZXRGaWxlU3lzdGVt
RGlzYWJsZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
cmVzb3VyY2VzLnNldEZpbGVTeXN0ZW1EaXNhYmxlZCgpOwotICAgIH0KLX0KLQotSW5zcGVjdG9y
QmFja2VuZC5yZWdpc3RlckRvbWFpbkRpc3BhdGNoZXIoIkZpbGVTeXN0ZW0iLCBuZXcgV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyKCkpOwotCi1XZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bVZpZXcgPSBmdW5jdGlvbih0cmVlRWxlbWVudCwgZmlsZVN5c3RlbU9yaWdpbikKLXsKLSAgICBX
ZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5lbGVtZW50LmFkZFN0eWxl
Q2xhc3MoInJlc291cmNlLXZpZXciKTsKLSAgICB0aGlzLl90cmVlRWxlbWVudCA9IHRyZWVFbGVt
ZW50OwotICAgIHRoaXMuX29yaWdpbiA9IGZpbGVTeXN0ZW1PcmlnaW47Ci0gICAgdGhpcy5fdGFi
YmVkUGFuZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGFiYmVkUGFuZSh0aGlzLmVsZW1lbnQpOwotCi0g
ICAgdGhpcy5fcGVyc2lzdGVudEZpbGVTeXN0ZW1FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fcGVyc2lzdGVudEZpbGVTeXN0ZW1FbGVtZW50LmNsYXNz
TmFtZSA9ICJyZXNvdXJjZS12aWV3LWhlYWRlcnMiOwotICAgIHRoaXMuX3RhYmJlZFBhbmUuYXBw
ZW5kVGFiKCJwZXJzaXN0ZW50IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQZXJzaXN0ZW50IEZp
bGUgU3lzdGVtIiksIHRoaXMuX3BlcnNpc3RlbnRGaWxlU3lzdGVtRWxlbWVudCwgdGhpcy5fc2Vs
ZWN0RmlsZVN5c3RlbVRhYi5iaW5kKHRoaXMsIHRydWUpKTsKLQotICAgIHRoaXMuX3RlbXBGaWxl
U3lzdGVtRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMu
X3RlbXBGaWxlU3lzdGVtRWxlbWVudC5jbGFzc05hbWUgPSAicmVzb3VyY2Utdmlldy1oZWFkZXJz
IjsKLSAgICB0aGlzLl90YWJiZWRQYW5lLmFwcGVuZFRhYigidGVtcCIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiVGVtcG9yYXJ5IEZpbGUgU3lzdGVtIiksIHRoaXMuX3RlbXBGaWxlU3lzdGVtRWxl
bWVudCwgdGhpcy5zZWxlY3RUZW1wb3JhcnlGaWxlU3lzdGVtVGFiLmJpbmQodGhpcywgdHJ1ZSkp
OwotCi0gICAgdGhpcy5fdGVtcG9yYXJ5Um9vdCA9ICIiOwotICAgIHRoaXMuX3BlcnNpc3RlbnRS
b290ID0gIiI7Ci0gICAgdGhpcy5faXNGaWxlU3lzdGVtRGlzYWJsZWQgPSBmYWxzZTsKLSAgICB0
aGlzLl9wZXJzaXN0ZW50Um9vdEVycm9yID0gZmFsc2U7Ci0gICAgdGhpcy5fdGVtcG9yYXJ5Um9v
dEVycm9yID0gZmFsc2U7Ci0gICAgdGhpcy5maWxlU3lzdGVtVmlzaWJsZSA9IHRydWU7Ci0gICAg
dGhpcy5fc2VsZWN0RmlsZVN5c3RlbVRhYigpOwotICAgIHRoaXMucmVmcmVzaEZpbGVTeXN0ZW0o
KTsKLX0KLQotV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LnByb3RvdHlwZSA9IHsKLSAgICBz
aG93OiBmdW5jdGlvbihwYXJlbnRFbGVtZW50KQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9y
LlZpZXcucHJvdG90eXBlLnNob3cuY2FsbCh0aGlzLCBwYXJlbnRFbGVtZW50KTsKLSAgICAgICAg
dGhpcy5fdXBkYXRlKCk7Ci0gICAgfSwKLQotICAgIHNldCBmaWxlU3lzdGVtVmlzaWJsZSh4KQot
ICAgIHsKLSAgICAgICAgaWYgKHggPT09IHRoaXMuX2ZpbGVTeXN0ZW1WaXNpYmxlKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9maWxlU3lzdGVtVmlzaWJsZSA9IHg7Ci0gICAg
ICAgIGlmICh4KQotICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhlYWRl
cnMtdmlzaWJsZSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVt
b3ZlU3R5bGVDbGFzcygiaGVhZGVycy12aXNpYmxlIik7IAotICAgICAgICB0aGlzLl9zZWxlY3RG
aWxlU3lzdGVtVGFiKCk7Ci0gICAgfSwKLQotICAgIF91cGRhdGU6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHRoaXMuX3NlbGVjdEZpbGVTeXN0ZW1UYWIoKTsKLSAgICAgICAgV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW0uZ2V0RmlsZVN5c3RlbVBhdGhzQXN5bmModGhpcy5fb3JpZ2luKTsKLSAg
ICB9LAotCi0gICAgdXBkYXRlRmlsZVN5c3RlbVBhdGg6IGZ1bmN0aW9uKHJvb3QsIHR5cGUsIG9y
aWdpbikKLSAgICB7Ci0gICAgICAgIGlmIChvcmlnaW4gPT0gdGhpcy5fb3JpZ2luICYmIHR5cGUg
PT0gV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0uUEVSU0lTVEVOVCkgewotICAgICAgICAgICAgdGhp
cy5fcGVyc2lzdGVudFJvb3QgPSByb290OwotICAgICAgICAgICAgdGhpcy5fcGVyc2lzdGVudFJv
b3RFcnJvciA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAob3JpZ2lu
ID09IHRoaXMuX29yaWdpbiAmJiB0eXBlID09IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtLlRFTVBP
UkFSWSkgewotICAgICAgICAgICAgdGhpcy5fdGVtcG9yYXJ5Um9vdCA9IHJvb3Q7Ci0gICAgICAg
ICAgICB0aGlzLl90ZW1wb3JhcnlSb290RXJyb3JFcnJvciA9IGZhbHNlOwotICAgICAgICB9Ci0K
LSAgICAgICAgdGhpcy5yZWZyZXNoRmlsZVN5c3RlbSgpOwotICAgIH0sCi0gICAgCi0gICAgdXBk
YXRlRmlsZVN5c3RlbUVycm9yOiBmdW5jdGlvbih0eXBlLCBvcmlnaW4pCi0gICAgewotICAgICAg
ICBpZiAodHlwZSA9PSBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbS5QRVJTSVNURU5UKQotICAgICAg
ICAgICAgdGhpcy5fcGVyc2lzdGVudFJvb3RFcnJvciA9IHRydWU7Ci0gICAgICAgIAotICAgICAg
ICBpZiAodHlwZSA9PSBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbS5URU1QT1JBUlkpCi0gICAgICAg
ICAgICB0aGlzLl90ZW1wb3JhcnlSb290RXJyb3IgPSB0cnVlOwotCi0gICAgICAgIHRoaXMucmVm
cmVzaEZpbGVTeXN0ZW0oKTsKLSAgICB9LAotICAgIAotICAgIHNldEZpbGVTeXN0ZW1EaXNhYmxl
ZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5faXNGaWxlU3lzdGVtRGlzYWJsZWQg
PSB0cnVlOwotICAgICAgICB0aGlzLnJlZnJlc2hGaWxlU3lzdGVtKCk7Ci0gICAgfSwKLSAgICBf
c2VsZWN0RmlsZVN5c3RlbVRhYjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fdGFi
YmVkUGFuZS5zZWxlY3RUYWIoInBlcnNpc3RlbnQiKTsKLSAgICB9LAotICAgIAotICAgIHNlbGVj
dFRlbXBvcmFyeUZpbGVTeXN0ZW1UYWI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
X3RhYmJlZFBhbmUuc2VsZWN0VGFiKCJ0ZW1wIik7Ci0gICAgfSwKLQotICAgIF9yZXZlYWxQZXJz
aXN0ZW50Rm9sZGVySW5PUzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yQmFj
a2VuZC5yZXZlYWxGb2xkZXJJbk9TKHRoaXMuX3BlcnNpc3RlbnRSb290KTsKLSAgICB9LAotICAg
IAotICAgIF9yZXZlYWxUZW1wb3JhcnlGb2xkZXJJbk9TOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICBJbnNwZWN0b3JCYWNrZW5kLnJldmVhbEZvbGRlckluT1ModGhpcy5fdGVtcG9yYXJ5Um9v
dCk7Ci0gICAgfSwKLSAgICAKLSAgICBfY3JlYXRlVGV4dEFuZEJ1dHRvbjogZnVuY3Rpb24oZmls
ZVN5c3RlbUVsZW1lbnQsIHJvb3RQYXRoVGV4dCwgdHlwZSwgaXNFcnJvcikKLSAgICB7Ci0gICAg
ICAgIGZpbGVTeXN0ZW1FbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgICAgIHZhciByb290
UGF0aCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmlsZSBTeXN0ZW0gcm9vdCBwYXRoIG5vdCBh
dmFpbGFibGUuIik7Ci0gICAgICAgIGlmICh0aGlzLl9pc0ZpbGVTeXN0ZW1EaXNhYmxlZCkKLSAg
ICAgICAgICAgIHJvb3RQYXRoID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaWxlIFN5c3RlbSBp
cyBkaXNhYmxlZC4iKTsKLSAgICAgICAgZWxzZSBpZiAoaXNFcnJvcikKLSAgICAgICAgICAgIHJv
b3RQYXRoID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFcnJvciBpbiBmZXRjaGluZyByb290IHBh
dGggZm9yIGZpbGUgc3lzdGVtLiIpOwotICAgICAgICBlbHNlIGlmIChyb290UGF0aFRleHQpCi0g
ICAgICAgICAgICByb290UGF0aCA9IHJvb3RQYXRoVGV4dDsKLQotICAgICAgICB2YXIgcm9vdFRl
eHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlJvb3Q6ICIgKyByb290UGF0aC5lc2Nh
cGVIVE1MKCkpOwotICAgICAgICB2YXIgcm9vdFN5c3RlbUVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgcm9vdFN5c3RlbUVsZW1lbnQuY2xhc3NOYW1lID0g
ImhlYWRlci12YWx1ZSBzb3VyY2UtY29kZSI7Ci0gICAgICAgIHJvb3RTeXN0ZW1FbGVtZW50LmFw
cGVuZENoaWxkKHJvb3RUZXh0Tm9kZSk7Ci0gICAgICAgIGZpbGVTeXN0ZW1FbGVtZW50LmFwcGVu
ZENoaWxkKHJvb3RTeXN0ZW1FbGVtZW50KTsKLSAgICAgICAgICAgIAotICAgICAgICBpZiAoIWlz
RXJyb3IgJiYgcm9vdFBhdGhUZXh0KSB7Ci0gICAgICAgICAgICAvLyBBcHBlbmQgQnJvd3NlIGJ1
dHRvbiBpZmYgcm9vdCBwYXRoIGlzIGF2YWlsYWJsZSBhbmQgaXQgaXMgbm90IGFuIGVycm9yLgot
ICAgICAgICAgICAgdmFyIGNvbnRlbnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Ci0gICAgICAgICAgICBjb250ZW50RWxlbWVudC5jbGFzc05hbWUgPSAicGFuZWwtZW5h
Ymxlci12aWV3LWNvbnRlbnQiOwotICAgICAgICAgICAgZmlsZVN5c3RlbUVsZW1lbnQuYXBwZW5k
Q2hpbGQoY29udGVudEVsZW1lbnQpOwotICAgICAgICAgICAgdmFyIGNob2ljZXNGb3JtID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZm9ybSIpOwotICAgICAgICAgICAgY29udGVudEVsZW1lbnQu
YXBwZW5kQ2hpbGQoY2hvaWNlc0Zvcm0pOwotICAgICAgICAgICAgdmFyIGVuYWJsZUJ1dHRvbiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOwotICAgICAgICAgICAgZW5hYmxlQnV0
dG9uLnNldEF0dHJpYnV0ZSgidHlwZSIsICJidXR0b24iKTsKLSAgICAgICAgICAgIGVuYWJsZUJ1
dHRvbi50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmV2ZWFsIGZvbGRlciBp
biBPUyIpOwotICAgICAgICAgICAgLy8gRklYTUU6IEJpbmQgdGhpcyBkaXJlY3RseSB0byBJbnNw
ZWN0b3JCYWNrZW5kLgotICAgICAgICAgICAgaWYgKHR5cGUgPT0gV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW0uUEVSU0lTVEVOVCkKLSAgICAgICAgICAgICAgICBlbmFibGVCdXR0b24uYWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCB0aGlzLl9yZXZlYWxQZXJzaXN0ZW50Rm9sZGVySW5PUy5iaW5kKHRo
aXMpLCBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAodHlwZSA9PSBXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbS5URU1QT1JBUlkpCi0gICAgICAgICAgICAgICAgZW5hYmxlQnV0dG9uLmFkZEV2ZW50TGlz
dGVuZXIoImNsaWNrIiwgdGhpcy5fcmV2ZWFsVGVtcG9yYXJ5Rm9sZGVySW5PUy5iaW5kKHRoaXMp
LCBmYWxzZSk7Ci0gICAgICAgICAgICBjaG9pY2VzRm9ybS5hcHBlbmRDaGlsZChlbmFibGVCdXR0
b24pOwotICAgICAgICAgICAgZmlsZVN5c3RlbUVsZW1lbnQuYXBwZW5kQ2hpbGQoY29udGVudEVs
ZW1lbnQpOwotICAgICAgICB9Ci0gICAgfSwKLSAgICAKLSAgICByZWZyZXNoRmlsZVN5c3RlbTog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fY3JlYXRlVGV4dEFuZEJ1dHRvbih0aGlz
Ll9wZXJzaXN0ZW50RmlsZVN5c3RlbUVsZW1lbnQsIHRoaXMuX3BlcnNpc3RlbnRSb290LCBXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbS5QRVJTSVNURU5ULCB0aGlzLl9wZXJzaXN0ZW50Um9vdEVycm9y
KTsKLSAgICAgICAgdGhpcy5fY3JlYXRlVGV4dEFuZEJ1dHRvbih0aGlzLl90ZW1wRmlsZVN5c3Rl
bUVsZW1lbnQsIHRoaXMuX3RlbXBvcmFyeVJvb3QsIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtLlRF
TVBPUkFSWSwgdGhpcy5fdGVtcG9yYXJ5Um9vdEVycm9yKTsKLSAgICB9LCAKLX0KLQotV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1WaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
Vmlldy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwppbmRleCBjNzA3N2E5Li43YzA2NDlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMK
QEAgLTU2LDEyICs1Niw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbCA9IGZ1bmN0aW9u
KGRhdGFiYXNlKQogICAgIHRoaXMuYXBwbGljYXRpb25DYWNoZUxpc3RUcmVlRWxlbWVudCA9IG5l
dyBXZWJJbnNwZWN0b3IuU3RvcmFnZUNhdGVnb3J5VHJlZUVsZW1lbnQodGhpcywgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJBcHBsaWNhdGlvbiBDYWNoZSIpLCAiQXBwbGljYXRpb25DYWNoZSIsICJh
cHBsaWNhdGlvbi1jYWNoZS1zdG9yYWdlLXRyZWUtaXRlbSIpOwogICAgIHRoaXMuc2lkZWJhclRy
ZWUuYXBwZW5kQ2hpbGQodGhpcy5hcHBsaWNhdGlvbkNhY2hlTGlzdFRyZWVFbGVtZW50KTsKIAot
ICAgIGlmIChQcmVmZXJlbmNlcy5maWxlU3lzdGVtRW5hYmxlZCkgewotICAgICAgICB0aGlzLmZp
bGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29y
eVRyZWVFbGVtZW50KHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmlsZSBTeXN0ZW0iKSwg
IkZpbGVTeXN0ZW0iLCAiZmlsZS1zeXN0ZW0tc3RvcmFnZS10cmVlLWl0ZW0iKTsKLSAgICAgICAg
dGhpcy5zaWRlYmFyVHJlZS5hcHBlbmRDaGlsZCh0aGlzLmZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1l
bnQpOwotICAgICAgICB0aGlzLmZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQuZXhwYW5kKCk7Ci0g
ICAgfQotCiAgICAgdGhpcy5zdG9yYWdlVmlld3MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKICAgICB0aGlzLnN0b3JhZ2VWaWV3cy5pZCA9ICJzdG9yYWdlLXZpZXdzIjsKICAgICB0
aGlzLnN0b3JhZ2VWaWV3cy5jbGFzc05hbWUgPSAiZGlmZi1jb250YWluZXIiOwpAQCAtMTU0LDcg
KzE0OCw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX2RvbVN0b3JhZ2UgPSBbXTsKIAogICAgICAgICB0aGlzLl9jb29raWVWaWV3cyA9
IHt9OwotICAgICAgICB0aGlzLl9maWxlU3lzdGVtVmlldyA9IG51bGw7CiAgICAgICAgIAogICAg
ICAgICB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlVmlldyA9IG51bGw7CiAgICAgICAgIGRlbGV0ZSB0
aGlzLl9jYWNoZWRBcHBsaWNhdGlvbkNhY2hlVmlld1N0YXR1czsKQEAgLTE2NCw4ICsxNTcsNiBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
LnNlc3Npb25TdG9yYWdlTGlzdFRyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAg
IHRoaXMuY29va2llTGlzdFRyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRo
aXMuYXBwbGljYXRpb25DYWNoZUxpc3RUcmVlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotICAg
ICAgICBpZiAoUHJlZmVyZW5jZXMuZmlsZVN5c3RlbUVuYWJsZWQpCi0gICAgICAgICAgICB0aGlz
LmZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhp
cy5zdG9yYWdlVmlld3MucmVtb3ZlQ2hpbGRyZW4oKTsKIAogICAgICAgICB0aGlzLnN0b3JhZ2VW
aWV3U3RhdHVzQmFySXRlbXNDb250YWluZXIucmVtb3ZlQ2hpbGRyZW4oKTsKQEAgLTI5OSwxNiAr
MjkwLDYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHZhciBhcHBsaWNhdGlvbkNhY2hlVHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9y
LkFwcGxpY2F0aW9uQ2FjaGVUcmVlRWxlbWVudCh0aGlzLCBkb21haW4pOwogICAgICAgICAgICAg
dGhpcy5hcHBsaWNhdGlvbkNhY2hlTGlzdFRyZWVFbGVtZW50LmFwcGVuZENoaWxkKGFwcGxpY2F0
aW9uQ2FjaGVUcmVlRWxlbWVudCk7CiAgICAgICAgIH0KLQotICAgICAgICBpZiAoUHJlZmVyZW5j
ZXMuZmlsZVN5c3RlbUVuYWJsZWQpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBtYXRjaCB0aGUgU2VjdXJpdHlPcmlnaW46OnRvU3RyaW5nKCksIGFkZCBhIHRlc3QgZm9yIHRo
aXMuCi0gICAgICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW4gPSBwYXJzZWRVUkwuc2NoZW1lICsg
IjovLyIgKyBwYXJzZWRVUkwuaG9zdCArIChwYXJzZWRVUkwucG9ydCA/ICgiOiIgKyBwYXJzZWRV
UkwucG9ydCkgOiAiIik7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX29yaWdpbnNbc2VjdXJpdHlP
cmlnaW5dKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fb3JpZ2luc1tzZWN1cml0eU9yaWdpbl0g
PSB0cnVlOwotICAgICAgICAgICAgICAgIHZhciBmaWxlU3lzdGVtVHJlZUVsZW1lbnQgPSBuZXcg
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudCh0aGlzLCBzZWN1cml0eU9yaWdpbik7
Ci0gICAgICAgICAgICAgICAgdGhpcy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LmFwcGVuZENo
aWxkKGZpbGVTeXN0ZW1UcmVlRWxlbWVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAg
ICB9LAogCiAgICAgYWRkRE9NU3RvcmFnZTogZnVuY3Rpb24oZG9tU3RvcmFnZSkKQEAgLTQ4OSwx
MiArNDcwLDYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVWaWV3LnVwZGF0ZVN0YXR1cyh0aGlzLl9j
YWNoZWRBcHBsaWNhdGlvbkNhY2hlVmlld1N0YXR1cyk7CiAgICAgfSwKIAotICAgIHNob3dGaWxl
U3lzdGVtOiBmdW5jdGlvbih0cmVlRWxlbWVudCwgb3JpZ2luKQotICAgIHsKLSAgICAgICAgdGhp
cy5fZmlsZVN5c3RlbVZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3KHRyZWVF
bGVtZW50LCBvcmlnaW4pOwotICAgICAgICB0aGlzLl9pbm5lclNob3dWaWV3KHRoaXMuX2ZpbGVT
eXN0ZW1WaWV3KTsKLSAgICB9LAotICAgIAogICAgIHNob3dDYXRlZ29yeVZpZXc6IGZ1bmN0aW9u
KGNhdGVnb3J5TmFtZSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fY2F0ZWdvcnlWaWV3KQpA
QCAtNjQzLDI0ICs2MTgsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5fYXBwbGljYXRpb25DYWNoZVZpZXcudXBkYXRlU3RhdHVz
KHN0YXR1cyk7CiAgICAgfSwKIAotICAgIHVwZGF0ZUZpbGVTeXN0ZW1QYXRoOiBmdW5jdGlvbihy
b290LCB0eXBlLCBvcmlnaW4pCi0gICAgewotICAgICAgICBpZiAodGhpcy5fZmlsZVN5c3RlbVZp
ZXcgJiYgdGhpcy5fZmlsZVN5c3RlbVZpZXcgPT09IHRoaXMudmlzaWJsZVZpZXcpCi0gICAgICAg
ICAgICB0aGlzLl9maWxlU3lzdGVtVmlldy51cGRhdGVGaWxlU3lzdGVtUGF0aChyb290LCB0eXBl
LCBvcmlnaW4pOyAgCi0gICAgfSwKLSAgCi0gICAgdXBkYXRlRmlsZVN5c3RlbUVycm9yOiBmdW5j
dGlvbih0eXBlLCBvcmlnaW4pCi0gICAgewotICAgICAgICBpZiAodGhpcy5fZmlsZVN5c3RlbVZp
ZXcgJiYgdGhpcy5fZmlsZVN5c3RlbVZpZXcgPT09IHRoaXMudmlzaWJsZVZpZXcpCi0gICAgICAg
ICAgICB0aGlzLl9maWxlU3lzdGVtVmlldy51cGRhdGVGaWxlU3lzdGVtRXJyb3IodHlwZSwgb3Jp
Z2luKTsgIAotICAgIH0sCi0gICAgCi0gICAgc2V0RmlsZVN5c3RlbURpc2FibGVkOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fZmlsZVN5c3RlbVZpZXcgJiYgdGhpcy5fZmls
ZVN5c3RlbVZpZXcgPT09IHRoaXMudmlzaWJsZVZpZXcpCi0gICAgICAgICAgICB0aGlzLl9maWxl
U3lzdGVtVmlldy5zZXRGaWxlU3lzdGVtRGlzYWJsZWQoKTsgIAotICAgIH0sCi0KICAgICB1cGRh
dGVOZXR3b3JrU3RhdGU6IGZ1bmN0aW9uKGlzTm93T25saW5lKQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVWaWV3ICYmIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVWaWV3
ID09PSB0aGlzLnZpc2libGVWaWV3KQpAQCAtMTI4MywyNyArMTI0MCw2IEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVJldmlzaW9uVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VSZXZpc2lvblRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGU7CiAKLVdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihzdG9yYWdlUGFuZWwsIG9yaWdpbikK
LXsKLSAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHN0
b3JhZ2VQYW5lbCwgbnVsbCwgb3JpZ2luLCAiZmlsZS1zeXN0ZW0tc3RvcmFnZS10cmVlLWl0ZW0i
KTsKLSAgICB0aGlzLl9vcmlnaW4gPSBvcmlnaW47Ci19Ci0KLVdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGdldCBpdGVtVVJMKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAiZmlsZS1zeXN0ZW06Ly8iICsgZW5jb2RlVVJJKHRoaXMuX29yaWdpbik7
Ci0gICAgfSwKLQotICAgIG9uc2VsZWN0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBXZWJJ
bnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUub25zZWxlY3QuY2FsbCh0
aGlzKTsKLSAgICAgICAgdGhpcy5fc3RvcmFnZVBhbmVsLnNob3dGaWxlU3lzdGVtKHRoaXMsIHRo
aXMuX29yaWdpbik7Ci0gICAgfQotfQotIAotV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxl
bWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVs
ZW1lbnQucHJvdG90eXBlOwotIAogV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVZpZXcgPSBm
dW5jdGlvbigpCiB7CiAgICAgV2ViSW5zcGVjdG9yLlZpZXcuY2FsbCh0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IDgzZWJhZjAu
LjY4YjgxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2V0dGluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0
aW5ncy5qcwpAQCAtNDUsNyArNDUsNiBAQCB2YXIgUHJlZmVyZW5jZXMgPSB7CiAgICAgb25saW5l
RGV0ZWN0aW9uRW5hYmxlZDogdHJ1ZSwKICAgICBuYXRpdmVJbnN0cnVtZW50YXRpb25FbmFibGVk
OiBmYWxzZSwKICAgICByZXNvdXJjZUV4cG9ydEVuYWJsZWQ6IGZhbHNlLAotICAgIGZpbGVTeXN0
ZW1FbmFibGVkOiBmYWxzZSwKICAgICB1c2VEYXRhVVJMRm9yUmVzb3VyY2VJbWFnZUljb25zOiB0
cnVlLAogICAgIHNob3dUaW1pbmdUYWI6IGZhbHNlLAogICAgIHNob3dDb29raWVzVGFiOiBmYWxz
ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0
LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRl
eCBjYTZiYTI5Li5kZDMyNWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9XZWJLaXQucXJjCkBAIC00NCw3ICs0NCw2IEBACiAgICAgPGZpbGU+RXh0ZW5zaW9uUGFu
ZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+RXh0ZW5zaW9uUmVnaXN0cnlTdHViLmpzPC9maWxlPgog
ICAgIDxmaWxlPkV4dGVuc2lvblNlcnZlci5qczwvZmlsZT4KLSAgICA8ZmlsZT5GaWxlU3lzdGVt
Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5Gb250Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5H
b1RvTGluZURpYWxvZy5qczwvZmlsZT4KICAgICA8ZmlsZT5IQVJFbnRyeS5qczwvZmlsZT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0
bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmlu
ZGV4IDRkOGU5NTMuLjA0MzVkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtNzIsNyArNzIsNiBAQCBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvb2tpZXNUYWJsZS5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29va2llSXRl
bXNWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJBcHBsaWNhdGlvbkNhY2hlSXRlbXNWaWV3LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJGaWxlU3lzdGVtVmlldy5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2NyaXB0LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJCcmVha3BvaW50
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJC
cmVha3BvaW50TWFuYWdlci5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81990</attachid>
            <date>2011-02-10 09:15:12 -0800</date>
            <delta_ts>2011-02-10 09:16:39 -0800</delta_ts>
            <desc>[PATCH] Review comments addressed.</desc>
            <filename>filesystem</filename>
            <type>text/plain</type>
            <size>52005</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDY0YmYxNi4uMDRhZDIwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEwMzAsNyArMTAzMCw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZS5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKLSAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAogICAgIGluc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3OGRiMTQ4Li4zYTQ5NDg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMTEtMDItMDkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2ViIEluc3BlY3RvcjogUmVtb3ZlIEZpbGVTeXN0ZW0gc3VwcG9ydCBmcm9tIHRoZSBpbnNw
ZWN0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDY5NQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
YW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0QXBwbGljYXRpb25DYWNoZXMpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50aWZpZXJGb3JJbml0aWFsUmVx
dWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsU2VuZFJlcXVlc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVSZXNvdXJjZVJlc3BvbnNlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVzb3Vy
Y2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om5ldHdvcmtTdGF0ZUNoYW5nZWRJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dXBkYXRlQXBwbGlj
YXRpb25DYWNoZVN0YXR1c0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpyZXRyaWV2ZVJlc291cmNlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWw6CisKIDIwMTEtMDItMTAgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KaW5kZXggMzZmNzJhYi4uZGNjNDRhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTE5ODcsOCArMTk4Nyw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCBcCi0JU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBcCiAJU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBiYTllMzEzLi5jYTdiMjllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0yMDQ1LDggKzIwNDUsNiBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VSZXNvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9y
YWdlUmVzb3VyY2UuaCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudC5jcHAnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgnLApAQCAtNDY5
Niw3ICs0Njk0LDYgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lv
blBhbmVsLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblJl
Z2lzdHJ5U3R1Yi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNp
b25TZXJ2ZXIuanMnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3Rl
bVZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvR29Ub0xpbmVEaWFsb2cuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanMnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
bwppbmRleCBkY2RiN2E1Li44ODUyMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTA2MCw3ICsxMDYw
LDYgQEAgU09VUkNFUyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBc
CiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgXAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwIFwKLSAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAwY2M0ZmQy
Li42YWEyNjY5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtNjU0NTQsMTQgKzY1NDU0LDYgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8Rmls
ZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dC5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGluc3BlY3RvclxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+
Ci0JCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZyb250
ZW5kQ2xpZW50LmgiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtNjU3NzMsMTAgKzY1NzY1LDYgQEAK
IAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3Rvclxmcm9udC1lbmRcRmlsZVN5c3RlbVZpZXcuanMiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+
Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEZv
bnRWaWV3LmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDlmM2UyNDYuLmNhYzQzNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTg2MCw4ICs4NjAsNiBAQAogCQkzN0Y4MThGRDBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29y
ZVVSTFJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzN0Y4MThGQjBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVSTFJlc3BvbnNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzdGODE4RkUw
RDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RjgxOEZDMEQ2NTc2MDYwMDVFMUYwNSAv
KiBXZWJDb3JlVVJMUmVzcG9uc2UubW0gKi87IH07CiAJCTM3RkQ0Mjk4MTE4MzY4NDYwMDkzQzAy
OSAvKiBUcmVlRGVwdGhMaW1pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzdGRDQyOTcxMTgzNjg0NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0Lmgg
Ki87IH07Ci0JCTM4ODhGNkVFMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Mzg4OEY2RUMxMjhDOTg4OTAwMENBOEUwIC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAg
Ki87IH07Ci0JCTM4ODhGNkVGMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4
ODhGNkVEMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCAqLzsg
fTsKIAkJM0FDNjQ4QjIxMjlFMTQ2NTAwQzNFQjI1IC8qIEVkaXRpbmdCb3VuZGFyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0FDNjQ4QjExMjlFMTQ2
NTAwQzNFQjI1IC8qIEVkaXRpbmdCb3VuZGFyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMDAyQ0NEMEY2NkVERUYwMDlFNjYwRCAvKiBTY3Jp
cHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAq
LzsgfTsKIAkJNDEwMDJDQ0UwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkND
QzBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLzsgfTsKQEAgLTcy
MjUsOCArNzIyMyw2IEBACiAJCTM3RjgxOEZDMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJM
UmVzcG9uc2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJD
b3JlVVJMUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RkM5NkRB
MTEwNEVENzEwMDNFMUZBRCAvKiBUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3guaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RkQ0Mjk3MTE4MzY4NDYwMDkzQzAyOSAv
KiBUcmVlRGVwdGhMaW1pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmVl
RGVwdGhMaW1pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzODg4RjZFQzEyOEM5
ODg5MDAwQ0E4RTAgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM4ODhGNkVEMTI4Qzk4ODkwMDBDQThFMCAvKiBJ
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTNBQzY0OEIxMTI5RTE0NjUwMEMzRUIyNSAvKiBFZGl0aW5nQm91bmRhcnkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ0JvdW5kYXJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5j
dGlvbkNhbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RnVuY3Rp
b25DYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMDAyQ0NDMEY2NkVERUYw
MDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzMDExLDggKzEzMDA3LDYgQEAKIAkJCQk3QTc0RUNCOTEwMTgzOUE2MDBC
RjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggKi8sCiAJCQkJNDFGMDYxNzMwRjVG
MDBBQzAwQTA3RUFDIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAgKi8sCiAJCQkJ
NDFGMDYxNzIwRjVGMDBBQzAwQTA3RUFDIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5o
ICovLAotCQkJCTM4ODhGNkVDMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQuY3BwICovLAotCQkJCTM4ODhGNkVEMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQuaCAqLywKIAkJCQlGMzQ0QzcxMjExMjVCODJDMDBGMjZFRUUgLyogSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLywKIAkJCQlGMzQ0Qzc1NzExMjk0RkY2MDBGMjZFRUUg
LyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgKi8sCiAJCQkJRjM0NEM3NTIxMTI5
NEQ5RDAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCAqLywKQEAgLTIw
OTI2LDcgKzIwOTIwLDYgQEAKIAkJCQk3QTI0NTg3QzEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVj
dG9yRE9NQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBNzRFQ0JCMTAxODM5QTYwMEJGOTM5
RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjA2
MTc0MEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTM4ODhGNkVGMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNDRDNzE0MTEyNUI4MkMwMEYyNkVF
RSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM0NEM3
NTMxMTI5NEQ5RDAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdBMEU3NzBGMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjM2NTksNyArMjM2NTIsNiBAQAogCQkJCTdB
MjQ1ODdCMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QTc0RUNCQTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxRjA2MTc1MEY1RjAwQUMwMEEwN0VBQyAv
KiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMzg4
OEY2RUUxMjhDOTg4OTAwMENBOEUwIC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0RjRGNUZGQjExQ0JEMkUxMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJv
bnRlbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM0NEM3NTgxMTI5NEZGNjAwRjI2RUVFIC8q
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0Ew
RTc3MEUxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
aWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKaW5kZXggYTc5NGFh
My4uODBjMjRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTE1
MSwxNyArMTUxLDYgQEAgbW9kdWxlIGNvcmUgewogICAgIH07CiAjZW5kaWYKIAotI2lmIGRlZmlu
ZWQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAmJiBFTkFCTEVfRklMRV9TWVNURU0KLSAgICBpbnRlcmZh
Y2UgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0gRmlsZVN5c3RlbSB7Ci0gICAgICAgIHZvaWQgZ2V0
RmlsZVN5c3RlbVBhdGhBc3luYyhpbiB1bnNpZ25lZCBpbnQgdHlwZSwgaW4gU3RyaW5nIG9yaWdp
bik7Ci0gICAgICAgIHZvaWQgcmV2ZWFsRm9sZGVySW5PUyhpbiBTdHJpbmcgcGF0aCk7Ci0KLSAg
ICAgICAgW25vdGlmeV0gdm9pZCBkaWRHZXRGaWxlU3lzdGVtUGF0aChvdXQgU3RyaW5nIHJvb3Qs
IG91dCBpbnQgdHlwZSwgb3V0IFN0cmluZyBvcmlnaW4pOwotICAgICAgICBbbm90aWZ5XSB2b2lk
IGRpZEdldEZpbGVTeXN0ZW1FcnJvcihvdXQgaW50IHR5cGUsIG91dCBTdHJpbmcgb3JpZ2luKTsK
LSAgICAgICAgW25vdGlmeV0gdm9pZCBkaWRHZXRGaWxlU3lzdGVtRGlzYWJsZWQoKTsKLSAgICB9
OwotI2VuZGlmCi0KICAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0gRE9NIHsK
ICAgICAgICAgdm9pZCBnZXRDaGlsZE5vZGVzKGluIGxvbmcgbm9kZUlkKTsKICAgICAgICAgdm9p
ZCBzZXRBdHRyaWJ1dGUoaW4gbG9uZyBlbGVtZW50SWQsIGluIFN0cmluZyBuYW1lLCBpbiBTdHJp
bmcgdmFsdWUsIG91dCBib29sZWFuIHN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggYzZkOWNhMC4uZTRiZGYxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC0xMjAsMTAgKzEyMCw2IEBA
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgiCiAjZW5kaWYKIAot
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSNpbmNsdWRlICJJbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC00MDMsMTEgKzM5OSw3IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmNyZWF0ZUZyb250
ZW5kTGlmZXRpbWVBZ2VudHMoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05TKQotICAgIG1fYXBwbGljYXRpb25DYWNoZUFnZW50ID0gbmV3IEluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudCh0aGlzLCBtX2Zyb250ZW5kKTsKLSNlbmRpZgotCi0jaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQotICAgIG1fZmlsZVN5c3RlbUFnZW50ID0gSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50OjpjcmVhdGUodGhpcywgbV9mcm9udGVuZCk7CisgICAgbV9hcHBsaWNhdGlvbkNh
Y2hlQWdlbnQgPSBuZXcgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KG1faW5zcGVjdGVk
UGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLCBtX2Zyb250ZW5k
KTsKICNlbmRpZgogfQogCkBAIC00MzksMTEgKzQzMSw2IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6
OnJlbGVhc2VGcm9udGVuZExpZmV0aW1lQWdlbnRzKCkKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5jbGVhcigpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgaWYg
KG1fZmlsZVN5c3RlbUFnZW50KQotICAgICAgICBtX2ZpbGVTeXN0ZW1BZ2VudC0+c3RvcCgpOwot
ICAgICAgICBtX2ZpbGVTeXN0ZW1BZ2VudC5jbGVhcigpOwotI2VuZGlmCiAgICAgc3RvcFRpbWVs
aW5lUHJvZmlsZXIoKTsKIH0KIApAQCAtNTQ0LDcgKzUzMSw3IEBAIHZvaWQgSW5zcGVjdG9yQWdl
bnQ6OmRpZENvbW1pdExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogICAgIGlmIChtX3Jl
c291cmNlQWdlbnQpCiAgICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+ZGlkQ29tbWl0TG9hZChsb2Fk
ZXIpOwotICAgIAorCiAgICAgQVNTRVJUKG1faW5zcGVjdGVkUGFnZSk7CiAKICAgICBpZiAobG9h
ZGVyLT5mcmFtZSgpID09IG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkpIHsKQEAgLTU1NCw2
ICs1NDEsMTEgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlkQ29tbWl0TG9hZChEb2N1bWVudExv
YWRlciogbG9hZGVyKQogICAgICAgICBtX2luamVjdGVkU2NyaXB0SG9zdC0+ZGlzY2FyZEluamVj
dGVkU2NyaXB0cygpOwogICAgICAgICBtX2NvbnNvbGVBZ2VudC0+cmVzZXQoKTsKIAorI2lmIEVO
QUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCisgICAgICAgIGlmIChtX2FwcGxpY2F0aW9u
Q2FjaGVBZ2VudCkKKyAgICAgICAgICAgIG1fYXBwbGljYXRpb25DYWNoZUFnZW50LT5kaWRDb21t
aXRMb2FkKGxvYWRlcik7CisjZW5kaWYKKwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VS
KQogICAgICAgICBpZiAobV9kZWJ1Z2dlckFnZW50KSB7CiAgICAgICAgICAgICBLVVJMIHVybCA9
IGluc3BlY3RlZFVSTFdpdGhvdXRGcmFnbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnQuaAppbmRleCBkMTVjMWViLi4yNmY3YzE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaApAQCAtOTQsMTAgKzk0LDYgQEAgY2xhc3MgU3Rv
cmFnZUFyZWE7CiBjbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ7CiAjZW5kaWYK
IAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLWNsYXNzIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogY2xhc3MgV2ViU29ja2V0SGFu
ZHNoYWtlUmVxdWVzdDsKIGNsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOwpAQCAtMTUz
LDkgKzE0OSw2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdlQWdlbnQoKSB7IHJldHVybiBtX2RvbVN0b3Jh
Z2VBZ2VudC5nZXQoKTsgfQogI2VuZGlmCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIElu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudCogZmlsZVN5c3RlbUFnZW50KCkgeyByZXR1cm4gbV9maWxl
U3lzdGVtQWdlbnQuZ2V0KCk7IH0KLSNlbmRpZgogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVH
R0VSKQogICAgIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50KiBicm93c2VyRGVidWdnZXJB
Z2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYnJvd3NlckRlYnVnZ2VyQWdlbnQuZ2V0KCk7IH0KICAg
ICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50KCkgY29uc3QgeyByZXR1cm4g
bV9kZWJ1Z2dlckFnZW50LmdldCgpOyB9CkBAIC0yOTUsMTAgKzI4OCw2IEBAIHByaXZhdGU6CiAg
ICAgT3duUHRyPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4gbV9hcHBsaWNhdGlvbkNh
Y2hlQWdlbnQ7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICBSZWZQdHI8
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiBtX2ZpbGVTeXN0ZW1BZ2VudDsKLSNlbmRpZgotCiAg
ICAgUmVmUHRyPE5vZGU+IG1faGlnaGxpZ2h0ZWROb2RlOwogICAgIFJlZlB0cjxOb2RlPiBtX25v
ZGVUb0ZvY3VzOwogICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZUFnZW50PiBtX3Jlc291cmNl
QWdlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4IDI3NzZjNTYuLmIzOGJiODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuY3BwCkBAIC00MSwxMiArNDEsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIEluc3BlY3RvckZy
b250ZW5kKiBmcm9udGVuZCkKLSAgICA6IG1faW5zcGVjdG9yQWdlbnQoaW5zcGVjdG9yQWdlbnQp
CitJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIsIEluc3BlY3RvckZyb250ZW5k
KiBmcm9udGVuZCkKKyAgICA6IG1fZG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2FkZXIpCiAgICAg
LCBtX2Zyb250ZW5kKGZyb250ZW5kKQogewogfQogCit2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudDo6ZGlkQ29tbWl0TG9hZChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIp
Cit7CisgICAgbV9kb2N1bWVudExvYWRlciA9IGRvY3VtZW50TG9hZGVyOworfQorCiB2b2lkIElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1
cyhGcmFtZSogZnJhbWUpCiB7CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlN0YXR1cyBzdGF0
dXMgPSBmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVI
b3N0KCktPnN0YXR1cygpOwpAQCAtNjEsOSArNjYsOCBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudDo6bmV0d29ya1N0YXRlQ2hhbmdlZCgpCiAKIHZvaWQgSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50OjpnZXRBcHBsaWNhdGlvbkNhY2hlcyhSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+KiBhcHBsaWNhdGlvbkNhY2hlcykKIHsKLSAgICBEb2N1bWVudExvYWRlciogZG9jdW1l
bnRMb2FkZXIgPSBtX2luc3BlY3RvckFnZW50LT5pbnNwZWN0ZWRQYWdlKCktPm1haW5GcmFtZSgp
LT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKTsKLSAgICBpZiAoZG9jdW1lbnRMb2FkZXIpIHsK
LSAgICAgICAgQXBwbGljYXRpb25DYWNoZUhvc3QqIGhvc3QgPSBkb2N1bWVudExvYWRlci0+YXBw
bGljYXRpb25DYWNoZUhvc3QoKTsKKyAgICBpZiAobV9kb2N1bWVudExvYWRlcikgeworICAgICAg
ICBBcHBsaWNhdGlvbkNhY2hlSG9zdCogaG9zdCA9IG1fZG9jdW1lbnRMb2FkZXItPmFwcGxpY2F0
aW9uQ2FjaGVIb3N0KCk7CiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDYWNoZUluZm8g
aW5mbyA9IGhvc3QtPmFwcGxpY2F0aW9uQ2FjaGVJbmZvKCk7CiAKICAgICAgICAgQXBwbGljYXRp
b25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3QgcmVzb3VyY2VzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5o
CmluZGV4IGI5MzUyZmUuLjMzY2VlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKQEAgLTMzLDYgKzMz
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNs
YXNzIEZyYW1lOwogY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsK
QEAgLTQ0LDkgKzQ1LDExIEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnNwZWN0b3JBZ2VudCos
IEluc3BlY3RvckZyb250ZW5kKik7CisgICAgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
KERvY3VtZW50TG9hZGVyKiwgSW5zcGVjdG9yRnJvbnRlbmQqKTsKICAgICB+SW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50KCkgeyB9CiAKKyAgICB2b2lkIGRpZENvbW1pdExvYWQoRG9jdW1l
bnRMb2FkZXIqKTsKKwogICAgIC8vIEJhY2tlbmQgdG8gRnJvbnRlbmQKICAgICB2b2lkIHVwZGF0
ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMoRnJhbWUqKTsKICAgICB2b2lkIG5ldHdvcmtTdGF0ZUNo
YW5nZWQoKTsKQEAgLTU5LDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiBidWlsZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlcyhjb25zdCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYpOwogICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShj
b25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvJik7CiAKLSAgICBJbnNwZWN0
b3JBZ2VudCogbV9pbnNwZWN0b3JBZ2VudDsKKyAgICBEb2N1bWVudExvYWRlciogbV9kb2N1bWVu
dExvYWRlcjsKICAgICBJbnNwZWN0b3JGcm9udGVuZCogbV9mcm9udGVuZDsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2N2M5N2EuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCIKLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpICYm
IEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlci5oIgotI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkZp
bGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkZyYW1l
VHJlZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvckFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9y
RnJvbnRlbmQuaCIKLSNpbmNsdWRlICJMb2NhbEZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50Q2FsbGJhY2tzIDogcHVibGljIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyB7
Ci1wdWJsaWM6Ci0gICAgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Q2FsbGJhY2tzKEluc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudCogYWdlbnQsIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBjb25z
dCBTdHJpbmcmIG9yaWdpbikKLSAgICAgICAgOiBtX2FnZW50KGFnZW50KQotICAgICAgICAsIG1f
dHlwZSh0eXBlKQotICAgICAgICAsIG1fb3JpZ2luKG9yaWdpbikKLSAgICB7IAotICAgIH0KLQot
ICAgIH5JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnRDYWxsYmFja3MoKQotICAgIHsKLSAgICB9Ci0K
LSAgICAvLyBGaWxlU3lzdGVtQ2FsbGJhY2tzIGlzIG9ubHkgdXNlZCBmb3IgZ2V0dGluZyBmaWxl
c3lzdGVtLiBBbGwgb3RoZXIgbWV0aG9kcyBhcmUgaXJyZWxldmFudCBhbmQgd2lsbCBub3QgYmUg
Y2FsbGVkLgotICAgIHZvaWQgZGlkU3VjY2VlZCgpCi0gICAgewotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0
cmluZyYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBmaWxlU3lzdGVtKQotICAgIHsKLSAg
ICAgICAgLy8gQWdlbnQgd2lsbCBiZSBhbGl2ZSBldmVuIGlmIEluc3BlY3RvckFnZW50IGlzIGRl
c3Ryb3llZCB1bnRpbCBjYWxsYmFjayBpcyBydW4uCi0gICAgICAgIG1fYWdlbnQtPmRpZEdldEZp
bGVTeXN0ZW1QYXRoKGZpbGVTeXN0ZW0tPnJvb3QoKSwgbV90eXBlLCBtX29yaWdpbik7Ci0gICAg
fQotCi0gICAgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJikKLSAgICB7
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHZvaWQgZGlkUmVh
ZERpcmVjdG9yeUVudHJ5KGNvbnN0IFN0cmluZyYsIGJvb2wpCi0gICAgewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRy
aWVzKGJvb2wpCi0gICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0K
LSAgICB2b2lkIGRpZENyZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXI+
LCBsb25nIGxvbmcpCi0gICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9
Ci0gICAgCi0gICAgdm9pZCBkaWRGYWlsKGludCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJ
cyBpdCB1c2VmdWwgdG8gZ2l2ZSBiYWNrIHRoZSBjb2RlIHRvIEluc3BlY3RvciBVST8KLSAgICAg
ICAgbV9hZ2VudC0+ZGlkR2V0RmlsZVN5c3RlbUVycm9yKG1fdHlwZSwgbV9vcmlnaW4pOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiBtX2Fn
ZW50OwotICAgIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSBtX3R5cGU7Ci0gICAgU3RyaW5nIG1fb3Jp
Z2luOwotfTsKLQotSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBJbnNwZWN0b3JGcm9udGVuZCog
ZnJvbnRlbmQpCi0gICAgOiBtX2luc3BlY3RvckFnZW50KGluc3BlY3RvckFnZW50KQotICAgICwg
bV9mcm9udGVuZChmcm9udGVuZCkKLXsKLX0KLQotSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Ojp+
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KCkgeyB9Ci0KLXZvaWQgSW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50OjpzdG9wKCkKLXsKLSAgICBtX2luc3BlY3RvckFnZW50ID0gMDsKLX0KLQotI2lmIFBM
QVRGT1JNKENIUk9NSVVNKQotdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJldmVhbEZv
bGRlckluT1MoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIC8vIEZJWE1FOiBSZW1vdmUgZ3Vh
cmQgd2hlbiByZXZlYWxGb2xkZXJJbk9TIGlzIGltcGxlbWVudGVkIGZvciBub24tY2hyb21pdW0g
cGxhdGZvcm1zLgotICAgIFdlYkNvcmU6OnJldmVhbEZvbGRlckluT1MocGF0aCk7Ci19Ci0jZWxz
ZQotdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJldmVhbEZvbGRlckluT1MoY29uc3Qg
U3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotI2VuZGlmCi0KLXZvaWQgSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50OjpnZXRGaWxlU3lzdGVtUGF0aEFzeW5jKHVuc2lnbmVkIGlu
dCB0eXBlLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKLXsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OmZpbGVTeXN0ZW1FbmFibGVkKCkpIHsKLSAgICAgICAgbV9mcm9udGVuZC0+ZGlk
R2V0RmlsZVN5c3RlbURpc2FibGVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBB
c3luY0ZpbGVTeXN0ZW06OlR5cGUgYXN5bmNGaWxlU3lzdGVtVHlwZSA9IHN0YXRpY19jYXN0PEFz
eW5jRmlsZVN5c3RlbTo6VHlwZT4odHlwZSk7Ci0gICAgRnJhbWUqIG1haW5GcmFtZSA9IG1faW5z
cGVjdG9yQWdlbnQtPmluc3BlY3RlZFBhZ2UoKS0+bWFpbkZyYW1lKCk7Ci0gICAgZm9yIChGcmFt
ZSogZnJhbWUgPSBtYWluRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZl
cnNlTmV4dCgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVu
dCgpOwotICAgICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkt
PnRvU3RyaW5nKCkgPT0gb3JpZ2luKSB7Ci0gICAgICAgICAgICBMb2NhbEZpbGVTeXN0ZW06Omxv
Y2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKGRvY3VtZW50LCBhc3luY0ZpbGVTeXN0ZW1U
eXBlLCAwLCBuZXcgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Q2FsbGJhY2tzKHRoaXMsIGFzeW5j
RmlsZVN5c3RlbVR5cGUsIG9yaWdpbikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgfQotfQotCi12b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZGlkR2V0RmlsZVN5
c3RlbVBhdGgoY29uc3QgU3RyaW5nJiByb290LCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4pCi17Ci0gICAgLy8gV2hlbiBjb250cm9sbGVyIGlzIGJlaW5n
IGRlc3Ryb3llZCwgdGhpcyBpcyBzZXQgdG8gMC4gQWdlbnQgY2FuIGxpdmUgZXZlbiBhZnRlciBt
X2luc3BlY3RvckFnZW50IGlzIGRlc3Ryb3llZC4KLSAgICBpZiAoIW1faW5zcGVjdG9yQWdlbnQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fZnJvbnRlbmQtPmRpZEdldEZpbGVTeXN0ZW1QYXRo
KHJvb3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odHlwZSksIG9yaWdpbik7Ci19Ci0KLXZv
aWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpkaWRHZXRGaWxlU3lzdGVtRXJyb3IoQXN5bmNG
aWxlU3lzdGVtOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQotewotICAgIC8vIFdo
ZW4gY29udHJvbGxlciBpcyBiZWluZyBkZXN0cm95ZWQsIHRoaXMgaXMgc2V0IHRvIDAuIEFnZW50
IGNhbiBsaXZlIGV2ZW4gYWZ0ZXIgbV9pbnNwZWN0b3JBZ2VudCBpcyBkZXN0cm95ZWQuCi0gICAg
aWYgKCFtX2luc3BlY3RvckFnZW50KQotICAgICAgICByZXR1cm47Ci0gICAgbV9mcm9udGVuZC0+
ZGlkR2V0RmlsZVN5c3RlbUVycm9yKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odHlwZSksIG9y
aWdpbik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShJ
TlNQRUNUT1IpICYmIEVOQUJMRShGSUxFX1NZU1RFTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYjk5NWQ3MC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnRfaAotI2RlZmluZSBJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnRfaAotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKEZJTEVf
U1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEb2N1bWVudDsKLWNsYXNzIEluc3BlY3RvckFnZW50
OwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7Ci1jbGFzcyBMb2NhbEZpbGVTeXN0ZW07Ci0KLWNs
YXNzIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudD4gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudD4gY3JlYXRlKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2Vu
dCwgSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoaW5zcGVjdG9yQWdlbnQsIGZyb250
ZW5kKSk7Ci0gICAgfQotCi0gICAgfkluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCgpOwotICAgIHZv
aWQgc3RvcCgpOwotCi0gICAgLy8gRnJvbSBGcm9udGVuZAotICAgIHZvaWQgZ2V0RmlsZVN5c3Rl
bVBhdGhBc3luYyh1bnNpZ25lZCBpbnQgdHlwZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwotICAg
IHZvaWQgcmV2ZWFsRm9sZGVySW5PUyhjb25zdCBTdHJpbmcmIHBhdGgpOwotCi0gICAgLy8gQmFj
a2VuZCB0byBGcm9udGVuZAotICAgIHZvaWQgZGlkR2V0RmlsZVN5c3RlbVBhdGgoY29uc3QgU3Ry
aW5nJiwgQXN5bmNGaWxlU3lzdGVtOjpUeXBlLCBjb25zdCBTdHJpbmcmIG9yaWdpbik7Ci0gICAg
dm9pZCBkaWRHZXRGaWxlU3lzdGVtRXJyb3IoQXN5bmNGaWxlU3lzdGVtOjpUeXBlLCBjb25zdCBT
dHJpbmcmIG9yaWdpbik7Ci0gICAgdm9pZCBkaWRHZXRGaWxlU3lzdGVtRGlzYWJsZWQoKTsKLQot
cHJpdmF0ZToKLSAgICBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoSW5zcGVjdG9yQWdlbnQqLCBJ
bnNwZWN0b3JGcm9udGVuZCopOwotICAgIHZvaWQgZ2V0RmlsZVN5c3RlbVJvb3QoQXN5bmNGaWxl
U3lzdGVtOjpUeXBlKTsKLQotICAgIEluc3BlY3RvckFnZW50KiBtX2luc3BlY3RvckFnZW50Owot
ICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKEZJTEVfU1lT
VEVNKQotI2VuZGlmIC8vIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4
IDA3NDUwNWUuLjM5OTkyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0zNzIsMTIgKzM3MiwxMiBAQCB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxhdGVTdHlsZUltcGwoY29uc3Qg
SW5zcGVjdG9ySW5zdHJ1bWVudAogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZWNhbGN1bGF0
ZVN0eWxlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppZGVudGlmaWVy
Rm9ySW5pdGlhbFJlcXVlc3RJbXBsKEluc3BlY3RvckFnZW50KiBpYywgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aWRlbnRpZmllckZvcklu
aXRpYWxSZXF1ZXN0SW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmICghaWMtPmVuYWJsZWQoKSkKKyAgICBpZiAoIWlu
c3BlY3RvckFnZW50LT5lbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50
KGljKSkKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJl
dHJpZXZlUmVzb3VyY2VBZ2VudChpbnNwZWN0b3JBZ2VudCkpCiAgICAgICAgIHJlc291cmNlQWdl
bnQtPmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCByZXF1ZXN0LnVybCgp
LCBsb2FkZXIpOwogfQogCkBAIC0zODYsMjUgKzM4NiwyNSBAQCB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6YXBwbHlVc2VyQWdlbnRPdmVycmlkZUltcGwoSW5zcGVjdG9yQWdlbnQqIGlu
c3BlYwogICAgIGluc3BlY3RvckFnZW50LT5hcHBseVVzZXJBZ2VudE92ZXJyaWRlKHVzZXJBZ2Vu
dCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3RJ
bXBsKEluc3BlY3RvckFnZW50KiBpYywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0SW1wbChJ
bnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVj
dFJlc3BvbnNlKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFn
ZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGljKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JB
Z2VudCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxTZW5kUmVzb3VyY2VSZXF1ZXN0KGlk
ZW50aWZpZXIsIHJlcXVlc3QpOwotICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNv
dXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKKyAgICBpZiAoSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpbnNw
ZWN0b3JBZ2VudCkpCiAgICAgICAgIHJlc291cmNlQWdlbnQtPndpbGxTZW5kUmVxdWVzdChpZGVu
dGlmaWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Om1hcmtSZXNvdXJjZUFzQ2FjaGVkSW1wbChJbnNwZWN0b3JBZ2VudCog
aWMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjptYXJrUmVzb3VyY2VBc0NhY2hlZEltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFn
ZW50LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKEluc3BlY3RvclJlc291
cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaWMpKQorICAg
IGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNv
dXJjZUFnZW50KGluc3BlY3RvckFnZW50KSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+bWFya1Jl
c291cmNlQXNDYWNoZWQoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJbXBsKEluc3BlY3RvckFnZW50
KiBpYywgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgQ2FjaGVkUmVzb3VyY2UqIGNhY2hl
ZFJlc291cmNlKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRSZXNvdXJj
ZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBEb2N1
bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2Up
CiB7Ci0gICAgaWYgKCFpYy0+ZW5hYmxlZCgpKQorICAgIGlmICghaW5zcGVjdG9yQWdlbnQtPmVu
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50
KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKKyAgICBpZiAoSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2Vu
dChpbnNwZWN0b3JBZ2VudCkpCiAgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZExvYWRSZXNvdXJj
ZUZyb21NZW1vcnlDYWNoZShsb2FkZXIsIGNhY2hlZFJlc291cmNlKTsKIH0KIApAQCAtNDM4LDQ3
ICs0MzgsNDcgQEAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3AKIAogdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChjb25zdCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKLSAgICBJbnNwZWN0b3JBZ2VudCogaWMgPSBjb29raWUuZmlyc3Q7Ci0gICAgaWYgKElu
c3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdl
bnQoaWMpKQorICAgIEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCA9IGNvb2tpZS5maXJz
dDsKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJp
ZXZlUmVzb3VyY2VBZ2VudChpbnNwZWN0b3JBZ2VudCkpCiAgICAgICAgIHJlc291cmNlQWdlbnQt
PmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCBsb2FkZXIsIHJlc3BvbnNlKTsKLSAgICBp
Yy0+Y29uc29sZUFnZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25z
ZSk7CisgICAgaW5zcGVjdG9yQWdlbnQtPmNvbnNvbGVBZ2VudCgpLT5kaWRSZWNlaXZlUmVzcG9u
c2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50
KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCiAgICAgICAg
IHRpbWVsaW5lQWdlbnQtPmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aEltcGwoSW5z
cGVjdG9yQWdlbnQqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBsZW5ndGhSZWNl
aXZlZCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVudExl
bmd0aEltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGludCBsZW5ndGhSZWNlaXZlZCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAg
aWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291
cmNlQWdlbnQoaW5zcGVjdG9yQWdlbnQpKQogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRSZWNl
aXZlQ29udGVudExlbmd0aChpZGVudGlmaWVyLCBsZW5ndGhSZWNlaXZlZCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnNwZWN0b3JB
Z2VudCogaWMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zcGVj
dG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJs
ZSBmaW5pc2hUaW1lKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGlu
ZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGljKSkKKyAgICBpZiAoSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0
b3JBZ2VudCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZpbmlzaExvYWRpbmdSZXNvdXJj
ZShpZGVudGlmaWVyLCBmYWxzZSwgZmluaXNoVGltZSk7Ci0gICAgaWYgKEluc3BlY3RvclJlc291
cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaWMpKQorICAg
IGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNv
dXJjZUFnZW50KGluc3BlY3RvckFnZW50KSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkRmlu
aXNoTG9hZGluZyhpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nSW1wbChJbnNwZWN0b3JBZ2VudCogaWMsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBsKEluc3BlY3RvckFn
ZW50KiBpbnNwZWN0b3JBZ2VudCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBpYy0+Y29uc29sZUFnZW50KCktPmRpZEZhaWxMb2Fk
aW5nKGlkZW50aWZpZXIsIGVycm9yKTsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCog
dGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpYykpCisgICAgaW5zcGVjdG9y
QWdlbnQtPmNvbnNvbGVBZ2VudCgpLT5kaWRGYWlsTG9hZGluZyhpZGVudGlmaWVyLCBlcnJvcik7
CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2
ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQWdlbnQpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5k
aWRGaW5pc2hMb2FkaW5nUmVzb3VyY2UoaWRlbnRpZmllciwgdHJ1ZSwgMCk7Ci0gICAgaWYgKElu
c3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdl
bnQoaWMpKQorICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0g
cmV0cmlldmVSZXNvdXJjZUFnZW50KGluc3BlY3RvckFnZW50KSkKICAgICAgICAgcmVzb3VyY2VB
Z2VudC0+ZGlkRmFpbExvYWRpbmcoaWRlbnRpZmllciwgZXJyb3IpOwogfQogCi12b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1w
bChJbnNwZWN0b3JBZ2VudCogaWMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRV
UkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdEltcGwoSW5zcGVjdG9yQWdlbnQq
IGluc3BlY3RvckFnZW50LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1
bnNpZ25lZCBzZW5kTGluZU51bWJlcikKIHsKLSAgICBpYy0+Y29uc29sZUFnZW50KCktPnJlc291
cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1cmwsIHNlbmRVUkwsIHNlbmRMaW5lTnVtYmVy
KTsKLSAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJp
ZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgaW5zcGVjdG9yQWdlbnQtPmNvbnNvbGVBZ2VudCgp
LT5yZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodXJsLCBzZW5kVVJMLCBzZW5kTGlu
ZU51bWJlcik7CisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQg
PSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaW5zcGVjdG9yQWdlbnQpKQogICAgICAgICByZXNvdXJj
ZUFnZW50LT5zZXRJbml0aWFsQ29udGVudChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcsICJYSFIi
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkSW1w
bChJbnNwZWN0b3JBZ2VudCogaWMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VTdHJpbmcpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0
SW1wb3J0ZWRJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZykKIHsKLSAgICBpZiAoSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2Vu
dChpYykpCisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBy
ZXRyaWV2ZVJlc291cmNlQWdlbnQoaW5zcGVjdG9yQWdlbnQpKQogICAgICAgICByZXNvdXJjZUFn
ZW50LT5zZXRJbml0aWFsQ29udGVudChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcsICJTY3JpcHQi
KTsKIH0KIApAQCAtNjMxLDE1ICs2MzEsMTUgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENsb3NlV2ViU29ja2V0SW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWcKICNl
bmRpZgogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKLXZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpuZXR3b3JrU3RhdGVDaGFuZ2VkSW1wbChJbnNwZWN0b3JBZ2Vu
dCogaWMpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bmV0d29ya1N0YXRlQ2hhbmdl
ZEltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50KQogewotICAgIGlmIChJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9IGljLT5hcHBs
aWNhdGlvbkNhY2hlQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50KiBhcHBsaWNhdGlvbkNhY2hlQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+YXBwbGljYXRpb25D
YWNoZUFnZW50KCkpCiAgICAgICAgIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudC0+bmV0d29ya1N0YXRl
Q2hhbmdlZCgpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dXBkYXRlQXBw
bGljYXRpb25DYWNoZVN0YXR1c0ltcGwoSW5zcGVjdG9yQWdlbnQqIGljLCBGcmFtZSogZnJhbWUp
Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0
YXR1c0ltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBGcmFtZSogZnJhbWUpCiB7
Ci0gICAgaWYgKEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogYXBwbGljYXRpb25DYWNo
ZUFnZW50ID0gaWMtPmFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQqIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9IGluc3BlY3RvckFn
ZW50LT5hcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSkKICAgICAgICAgYXBwbGljYXRpb25DYWNoZUFn
ZW50LT51cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKGZyYW1lKTsKIH0KICNlbmRpZgpAQCAt
Njc4LDkgKzY3OCw5IEBAIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6cmV0cmlldmVUaW1lbGluZUFnZW50KGNvbnN0IEluCiAgICAgcmV0dXJuIDA7CiB9
CiAKLUluc3BlY3RvclJlc291cmNlQWdlbnQqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0
cmlldmVSZXNvdXJjZUFnZW50KEluc3BlY3RvckFnZW50KiBpYykKK0luc3BlY3RvclJlc291cmNl
QWdlbnQqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVSZXNvdXJjZUFnZW50KElu
c3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCkKIHsKLSAgICByZXR1cm4gaWMtPnJlc291cmNl
QWdlbnQoKTsKKyAgICByZXR1cm4gaW5zcGVjdG9yQWdlbnQtPnJlc291cmNlQWdlbnQoKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDU2ZjIxYTQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9GaWxlU3lzdGVtVmlldy5qcworKysgL2Rldi9udWxsCkBAIC0xLDIxMSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyID0gZnVuY3Rpb24oKQotewotfQotCi0v
LyBLZWVwIGluIHN5bmMgd2l0aCBUeXBlIGluIEFzeW5jRmlsZVN5c3RlbS5oCi1XZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIuVEVNUE9SQVJZID0gMDsKLVdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtRGlzcGF0Y2hlci5QRVJTSVNURU5UID0gMTsKLQotV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1EaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKLSAgICBnZXRGaWxlU3lzdGVtUGF0aHNBc3luYzog
ZnVuY3Rpb24ob3JpZ2luKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRGaWxl
U3lzdGVtUGF0aEFzeW5jKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5QRVJTSVNU
RU5ULCBvcmlnaW4pOwotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldEZpbGVTeXN0ZW1QYXRo
QXN5bmMoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyLlRFTVBPUkFSWSwgb3JpZ2lu
KTsKLSAgICB9LAotCi0gICAgZGlkR2V0RmlsZVN5c3RlbVBhdGg6IGZ1bmN0aW9uKHJvb3QsIHR5
cGUsIG9yaWdpbikKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2Vz
LnVwZGF0ZUZpbGVTeXN0ZW1QYXRoKHJvb3QsIHR5cGUsIG9yaWdpbik7Ci0gICAgfSwKLQotICAg
IGRpZEdldEZpbGVTeXN0ZW1FcnJvcjogZnVuY3Rpb24odHlwZSwgb3JpZ2luKQotICAgIHsKLSAg
ICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMudXBkYXRlRmlsZVN5c3RlbUVycm9y
KHR5cGUsIG9yaWdpbik7Ci0gICAgfSwKLQotICAgIGRpZEdldEZpbGVTeXN0ZW1EaXNhYmxlZDog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMu
c2V0RmlsZVN5c3RlbURpc2FibGVkKCk7Ci0gICAgfQotfQotCi1JbnNwZWN0b3JCYWNrZW5kLnJl
Z2lzdGVyRG9tYWluRGlzcGF0Y2hlcigiRmlsZVN5c3RlbSIsIG5ldyBXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbURpc3BhdGNoZXIoKSk7Ci0KLVdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldyA9IGZ1
bmN0aW9uKHRyZWVFbGVtZW50LCBmaWxlU3lzdGVtT3JpZ2luKQotewotICAgIFdlYkluc3BlY3Rv
ci5WaWV3LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygicmVz
b3VyY2UtdmlldyIpOwotICAgIHRoaXMuX3RyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQ7Ci0gICAg
dGhpcy5fb3JpZ2luID0gZmlsZVN5c3RlbU9yaWdpbjsKLSAgICB0aGlzLl90YWJiZWRQYW5lID0g
bmV3IFdlYkluc3BlY3Rvci5UYWJiZWRQYW5lKHRoaXMuZWxlbWVudCk7Ci0KLSAgICB0aGlzLl9w
ZXJzaXN0ZW50RmlsZVN5c3RlbUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKLSAgICB0aGlzLl9wZXJzaXN0ZW50RmlsZVN5c3RlbUVsZW1lbnQuY2xhc3NOYW1lID0gInJl
c291cmNlLXZpZXctaGVhZGVycyI7Ci0gICAgdGhpcy5fdGFiYmVkUGFuZS5hcHBlbmRUYWIoInBl
cnNpc3RlbnQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBlcnNpc3RlbnQgRmlsZSBTeXN0ZW0i
KSwgdGhpcy5fcGVyc2lzdGVudEZpbGVTeXN0ZW1FbGVtZW50LCB0aGlzLl9zZWxlY3RGaWxlU3lz
dGVtVGFiLmJpbmQodGhpcywgdHJ1ZSkpOwotCi0gICAgdGhpcy5fdGVtcEZpbGVTeXN0ZW1FbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fdGVtcEZpbGVT
eXN0ZW1FbGVtZW50LmNsYXNzTmFtZSA9ICJyZXNvdXJjZS12aWV3LWhlYWRlcnMiOwotICAgIHRo
aXMuX3RhYmJlZFBhbmUuYXBwZW5kVGFiKCJ0ZW1wIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJU
ZW1wb3JhcnkgRmlsZSBTeXN0ZW0iKSwgdGhpcy5fdGVtcEZpbGVTeXN0ZW1FbGVtZW50LCB0aGlz
LnNlbGVjdFRlbXBvcmFyeUZpbGVTeXN0ZW1UYWIuYmluZCh0aGlzLCB0cnVlKSk7Ci0KLSAgICB0
aGlzLl90ZW1wb3JhcnlSb290ID0gIiI7Ci0gICAgdGhpcy5fcGVyc2lzdGVudFJvb3QgPSAiIjsK
LSAgICB0aGlzLl9pc0ZpbGVTeXN0ZW1EaXNhYmxlZCA9IGZhbHNlOwotICAgIHRoaXMuX3BlcnNp
c3RlbnRSb290RXJyb3IgPSBmYWxzZTsKLSAgICB0aGlzLl90ZW1wb3JhcnlSb290RXJyb3IgPSBm
YWxzZTsKLSAgICB0aGlzLmZpbGVTeXN0ZW1WaXNpYmxlID0gdHJ1ZTsKLSAgICB0aGlzLl9zZWxl
Y3RGaWxlU3lzdGVtVGFiKCk7Ci0gICAgdGhpcy5yZWZyZXNoRmlsZVN5c3RlbSgpOwotfQotCi1X
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlID0gewotICAgIHNob3c6IGZ1bmN0
aW9uKHBhcmVudEVsZW1lbnQpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuVmlldy5wcm90
b3R5cGUuc2hvdy5jYWxsKHRoaXMsIHBhcmVudEVsZW1lbnQpOwotICAgICAgICB0aGlzLl91cGRh
dGUoKTsKLSAgICB9LAotCi0gICAgc2V0IGZpbGVTeXN0ZW1WaXNpYmxlKHgpCi0gICAgewotICAg
ICAgICBpZiAoeCA9PT0gdGhpcy5fZmlsZVN5c3RlbVZpc2libGUpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaXNpYmxlID0geDsKLSAgICAgICAgaWYgKHgp
Ci0gICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGVhZGVycy12aXNpYmxl
Iik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVTdHlsZUNs
YXNzKCJoZWFkZXJzLXZpc2libGUiKTsgCi0gICAgICAgIHRoaXMuX3NlbGVjdEZpbGVTeXN0ZW1U
YWIoKTsKLSAgICB9LAotCi0gICAgX3VwZGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
dGhpcy5fc2VsZWN0RmlsZVN5c3RlbVRhYigpOwotICAgICAgICBXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbS5nZXRGaWxlU3lzdGVtUGF0aHNBc3luYyh0aGlzLl9vcmlnaW4pOwotICAgIH0sCi0KLSAg
ICB1cGRhdGVGaWxlU3lzdGVtUGF0aDogZnVuY3Rpb24ocm9vdCwgdHlwZSwgb3JpZ2luKQotICAg
IHsKLSAgICAgICAgaWYgKG9yaWdpbiA9PSB0aGlzLl9vcmlnaW4gJiYgdHlwZSA9PSBXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbS5QRVJTSVNURU5UKSB7Ci0gICAgICAgICAgICB0aGlzLl9wZXJzaXN0
ZW50Um9vdCA9IHJvb3Q7Ci0gICAgICAgICAgICB0aGlzLl9wZXJzaXN0ZW50Um9vdEVycm9yID0g
ZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChvcmlnaW4gPT0gdGhpcy5f
b3JpZ2luICYmIHR5cGUgPT0gV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0uVEVNUE9SQVJZKSB7Ci0g
ICAgICAgICAgICB0aGlzLl90ZW1wb3JhcnlSb290ID0gcm9vdDsKLSAgICAgICAgICAgIHRoaXMu
X3RlbXBvcmFyeVJvb3RFcnJvckVycm9yID0gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICB0
aGlzLnJlZnJlc2hGaWxlU3lzdGVtKCk7Ci0gICAgfSwKLSAgICAKLSAgICB1cGRhdGVGaWxlU3lz
dGVtRXJyb3I6IGZ1bmN0aW9uKHR5cGUsIG9yaWdpbikKLSAgICB7Ci0gICAgICAgIGlmICh0eXBl
ID09IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtLlBFUlNJU1RFTlQpCi0gICAgICAgICAgICB0aGlz
Ll9wZXJzaXN0ZW50Um9vdEVycm9yID0gdHJ1ZTsKLSAgICAgICAgCi0gICAgICAgIGlmICh0eXBl
ID09IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtLlRFTVBPUkFSWSkKLSAgICAgICAgICAgIHRoaXMu
X3RlbXBvcmFyeVJvb3RFcnJvciA9IHRydWU7Ci0KLSAgICAgICAgdGhpcy5yZWZyZXNoRmlsZVN5
c3RlbSgpOwotICAgIH0sCi0gICAgCi0gICAgc2V0RmlsZVN5c3RlbURpc2FibGVkOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICB0aGlzLl9pc0ZpbGVTeXN0ZW1EaXNhYmxlZCA9IHRydWU7Ci0g
ICAgICAgIHRoaXMucmVmcmVzaEZpbGVTeXN0ZW0oKTsKLSAgICB9LAotICAgIF9zZWxlY3RGaWxl
U3lzdGVtVGFiOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl90YWJiZWRQYW5lLnNl
bGVjdFRhYigicGVyc2lzdGVudCIpOwotICAgIH0sCi0gICAgCi0gICAgc2VsZWN0VGVtcG9yYXJ5
RmlsZVN5c3RlbVRhYjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fdGFiYmVkUGFu
ZS5zZWxlY3RUYWIoInRlbXAiKTsKLSAgICB9LAotCi0gICAgX3JldmVhbFBlcnNpc3RlbnRGb2xk
ZXJJbk9TOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJldmVh
bEZvbGRlckluT1ModGhpcy5fcGVyc2lzdGVudFJvb3QpOwotICAgIH0sCi0gICAgCi0gICAgX3Jl
dmVhbFRlbXBvcmFyeUZvbGRlckluT1M6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIEluc3Bl
Y3RvckJhY2tlbmQucmV2ZWFsRm9sZGVySW5PUyh0aGlzLl90ZW1wb3JhcnlSb290KTsKLSAgICB9
LAotICAgIAotICAgIF9jcmVhdGVUZXh0QW5kQnV0dG9uOiBmdW5jdGlvbihmaWxlU3lzdGVtRWxl
bWVudCwgcm9vdFBhdGhUZXh0LCB0eXBlLCBpc0Vycm9yKQotICAgIHsKLSAgICAgICAgZmlsZVN5
c3RlbUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgdmFyIHJvb3RQYXRoID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJGaWxlIFN5c3RlbSByb290IHBhdGggbm90IGF2YWlsYWJsZS4i
KTsKLSAgICAgICAgaWYgKHRoaXMuX2lzRmlsZVN5c3RlbURpc2FibGVkKQotICAgICAgICAgICAg
cm9vdFBhdGggPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbGUgU3lzdGVtIGlzIGRpc2FibGVk
LiIpOwotICAgICAgICBlbHNlIGlmIChpc0Vycm9yKQotICAgICAgICAgICAgcm9vdFBhdGggPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVycm9yIGluIGZldGNoaW5nIHJvb3QgcGF0aCBmb3IgZmls
ZSBzeXN0ZW0uIik7Ci0gICAgICAgIGVsc2UgaWYgKHJvb3RQYXRoVGV4dCkKLSAgICAgICAgICAg
IHJvb3RQYXRoID0gcm9vdFBhdGhUZXh0OwotCi0gICAgICAgIHZhciByb290VGV4dE5vZGUgPSBk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiUm9vdDogIiArIHJvb3RQYXRoLmVzY2FwZUhUTUwoKSk7
Ci0gICAgICAgIHZhciByb290U3lzdGVtRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwotICAgICAgICByb290U3lzdGVtRWxlbWVudC5jbGFzc05hbWUgPSAiaGVhZGVyLXZh
bHVlIHNvdXJjZS1jb2RlIjsKLSAgICAgICAgcm9vdFN5c3RlbUVsZW1lbnQuYXBwZW5kQ2hpbGQo
cm9vdFRleHROb2RlKTsKLSAgICAgICAgZmlsZVN5c3RlbUVsZW1lbnQuYXBwZW5kQ2hpbGQocm9v
dFN5c3RlbUVsZW1lbnQpOwotICAgICAgICAgICAgCi0gICAgICAgIGlmICghaXNFcnJvciAmJiBy
b290UGF0aFRleHQpIHsKLSAgICAgICAgICAgIC8vIEFwcGVuZCBCcm93c2UgYnV0dG9uIGlmZiBy
b290IHBhdGggaXMgYXZhaWxhYmxlIGFuZCBpdCBpcyBub3QgYW4gZXJyb3IuCi0gICAgICAgICAg
ICB2YXIgY29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAg
ICAgICAgICAgIGNvbnRlbnRFbGVtZW50LmNsYXNzTmFtZSA9ICJwYW5lbC1lbmFibGVyLXZpZXct
Y29udGVudCI7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtRWxlbWVudC5hcHBlbmRDaGlsZChjb250
ZW50RWxlbWVudCk7Ci0gICAgICAgICAgICB2YXIgY2hvaWNlc0Zvcm0gPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJmb3JtIik7Ci0gICAgICAgICAgICBjb250ZW50RWxlbWVudC5hcHBlbmRDaGls
ZChjaG9pY2VzRm9ybSk7Ci0gICAgICAgICAgICB2YXIgZW5hYmxlQnV0dG9uID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiYnV0dG9uIik7Ci0gICAgICAgICAgICBlbmFibGVCdXR0b24uc2V0QXR0
cmlidXRlKCJ0eXBlIiwgImJ1dHRvbiIpOwotICAgICAgICAgICAgZW5hYmxlQnV0dG9uLnRleHRD
b250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXZlYWwgZm9sZGVyIGluIE9TIik7Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogQmluZCB0aGlzIGRpcmVjdGx5IHRvIEluc3BlY3RvckJhY2tl
bmQuCi0gICAgICAgICAgICBpZiAodHlwZSA9PSBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbS5QRVJT
SVNURU5UKQotICAgICAgICAgICAgICAgIGVuYWJsZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJj
bGljayIsIHRoaXMuX3JldmVhbFBlcnNpc3RlbnRGb2xkZXJJbk9TLmJpbmQodGhpcyksIGZhbHNl
KTsKLSAgICAgICAgICAgIGlmICh0eXBlID09IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtLlRFTVBP
UkFSWSkKLSAgICAgICAgICAgICAgICBlbmFibGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCB0aGlzLl9yZXZlYWxUZW1wb3JhcnlGb2xkZXJJbk9TLmJpbmQodGhpcyksIGZhbHNlKTsK
LSAgICAgICAgICAgIGNob2ljZXNGb3JtLmFwcGVuZENoaWxkKGVuYWJsZUJ1dHRvbik7Ci0gICAg
ICAgICAgICBmaWxlU3lzdGVtRWxlbWVudC5hcHBlbmRDaGlsZChjb250ZW50RWxlbWVudCk7Ci0g
ICAgICAgIH0KLSAgICB9LAotICAgIAotICAgIHJlZnJlc2hGaWxlU3lzdGVtOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICB0aGlzLl9jcmVhdGVUZXh0QW5kQnV0dG9uKHRoaXMuX3BlcnNpc3Rl
bnRGaWxlU3lzdGVtRWxlbWVudCwgdGhpcy5fcGVyc2lzdGVudFJvb3QsIFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtLlBFUlNJU1RFTlQsIHRoaXMuX3BlcnNpc3RlbnRSb290RXJyb3IpOwotICAgICAg
ICB0aGlzLl9jcmVhdGVUZXh0QW5kQnV0dG9uKHRoaXMuX3RlbXBGaWxlU3lzdGVtRWxlbWVudCwg
dGhpcy5fdGVtcG9yYXJ5Um9vdCwgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0uVEVNUE9SQVJZLCB0
aGlzLl90ZW1wb3JhcnlSb290RXJyb3IpOwotICAgIH0sIAotfQotCi1XZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbVZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3Rv
dHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlc1BhbmVsLmpzCmluZGV4IGM3MDc3YTkuLjdjMDY0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpAQCAtNTYsMTIg
KzU2LDYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsID0gZnVuY3Rpb24oZGF0YWJhc2Up
CiAgICAgdGhpcy5hcHBsaWNhdGlvbkNhY2hlTGlzdFRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3Bl
Y3Rvci5TdG9yYWdlQ2F0ZWdvcnlUcmVlRWxlbWVudCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkFwcGxpY2F0aW9uIENhY2hlIiksICJBcHBsaWNhdGlvbkNhY2hlIiwgImFwcGxpY2F0aW9u
LWNhY2hlLXN0b3JhZ2UtdHJlZS1pdGVtIik7CiAgICAgdGhpcy5zaWRlYmFyVHJlZS5hcHBlbmRD
aGlsZCh0aGlzLmFwcGxpY2F0aW9uQ2FjaGVMaXN0VHJlZUVsZW1lbnQpOwogCi0gICAgaWYgKFBy
ZWZlcmVuY2VzLmZpbGVTeXN0ZW1FbmFibGVkKSB7Ci0gICAgICAgIHRoaXMuZmlsZVN5c3RlbUxp
c3RUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuU3RvcmFnZUNhdGVnb3J5VHJlZUVsZW1l
bnQodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaWxlIFN5c3RlbSIpLCAiRmlsZVN5c3Rl
bSIsICJmaWxlLXN5c3RlbS1zdG9yYWdlLXRyZWUtaXRlbSIpOwotICAgICAgICB0aGlzLnNpZGVi
YXJUcmVlLmFwcGVuZENoaWxkKHRoaXMuZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudCk7Ci0gICAg
ICAgIHRoaXMuZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5leHBhbmQoKTsKLSAgICB9Ci0KICAg
ICB0aGlzLnN0b3JhZ2VWaWV3cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAg
IHRoaXMuc3RvcmFnZVZpZXdzLmlkID0gInN0b3JhZ2Utdmlld3MiOwogICAgIHRoaXMuc3RvcmFn
ZVZpZXdzLmNsYXNzTmFtZSA9ICJkaWZmLWNvbnRhaW5lciI7CkBAIC0xNTQsNyArMTQ4LDYgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
ZG9tU3RvcmFnZSA9IFtdOwogCiAgICAgICAgIHRoaXMuX2Nvb2tpZVZpZXdzID0ge307Ci0gICAg
ICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3ID0gbnVsbDsKICAgICAgICAgCiAgICAgICAgIHRoaXMu
X2FwcGxpY2F0aW9uQ2FjaGVWaWV3ID0gbnVsbDsKICAgICAgICAgZGVsZXRlIHRoaXMuX2NhY2hl
ZEFwcGxpY2F0aW9uQ2FjaGVWaWV3U3RhdHVzOwpAQCAtMTY0LDggKzE1Nyw2IEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuc2Vzc2lvblN0
b3JhZ2VMaXN0VHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy5jb29r
aWVMaXN0VHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy5hcHBsaWNh
dGlvbkNhY2hlTGlzdFRyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgICAgIGlmIChQ
cmVmZXJlbmNlcy5maWxlU3lzdGVtRW5hYmxlZCkKLSAgICAgICAgICAgIHRoaXMuZmlsZVN5c3Rl
bUxpc3RUcmVlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLnN0b3JhZ2VW
aWV3cy5yZW1vdmVDaGlsZHJlbigpOwogCiAgICAgICAgIHRoaXMuc3RvcmFnZVZpZXdTdGF0dXNC
YXJJdGVtc0NvbnRhaW5lci5yZW1vdmVDaGlsZHJlbigpOwpAQCAtMjk5LDE2ICsyOTAsNiBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFy
IGFwcGxpY2F0aW9uQ2FjaGVUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuQXBwbGljYXRp
b25DYWNoZVRyZWVFbGVtZW50KHRoaXMsIGRvbWFpbik7CiAgICAgICAgICAgICB0aGlzLmFwcGxp
Y2F0aW9uQ2FjaGVMaXN0VHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoYXBwbGljYXRpb25DYWNoZVRy
ZWVFbGVtZW50KTsKICAgICAgICAgfQotCi0gICAgICAgIGlmIChQcmVmZXJlbmNlcy5maWxlU3lz
dGVtRW5hYmxlZCkgewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG1hdGNoIHRo
ZSBTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcoKSwgYWRkIGEgdGVzdCBmb3IgdGhpcy4KLSAgICAg
ICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IHBhcnNlZFVSTC5zY2hlbWUgKyAiOi8vIiArIHBh
cnNlZFVSTC5ob3N0ICsgKHBhcnNlZFVSTC5wb3J0ID8gKCI6IiArIHBhcnNlZFVSTC5wb3J0KSA6
ICIiKTsKLSAgICAgICAgICAgIGlmICghdGhpcy5fb3JpZ2luc1tzZWN1cml0eU9yaWdpbl0pIHsK
LSAgICAgICAgICAgICAgICB0aGlzLl9vcmlnaW5zW3NlY3VyaXR5T3JpZ2luXSA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgdmFyIGZpbGVTeXN0ZW1UcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50KHRoaXMsIHNlY3VyaXR5T3JpZ2luKTsKLSAgICAgICAg
ICAgICAgICB0aGlzLmZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZmlsZVN5
c3RlbVRyZWVFbGVtZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAgIH0sCiAKICAg
ICBhZGRET01TdG9yYWdlOiBmdW5jdGlvbihkb21TdG9yYWdlKQpAQCAtNDg5LDEyICs0NzAsNiBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
dGhpcy5fYXBwbGljYXRpb25DYWNoZVZpZXcudXBkYXRlU3RhdHVzKHRoaXMuX2NhY2hlZEFwcGxp
Y2F0aW9uQ2FjaGVWaWV3U3RhdHVzKTsKICAgICB9LAogCi0gICAgc2hvd0ZpbGVTeXN0ZW06IGZ1
bmN0aW9uKHRyZWVFbGVtZW50LCBvcmlnaW4pCi0gICAgewotICAgICAgICB0aGlzLl9maWxlU3lz
dGVtVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcodHJlZUVsZW1lbnQsIG9y
aWdpbik7Ci0gICAgICAgIHRoaXMuX2lubmVyU2hvd1ZpZXcodGhpcy5fZmlsZVN5c3RlbVZpZXcp
OwotICAgIH0sCi0gICAgCiAgICAgc2hvd0NhdGVnb3J5VmlldzogZnVuY3Rpb24oY2F0ZWdvcnlO
YW1lKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9jYXRlZ29yeVZpZXcpCkBAIC02NDMsMjQg
KzYxOCw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlVmlldy51cGRhdGVTdGF0dXMoc3RhdHVzKTsK
ICAgICB9LAogCi0gICAgdXBkYXRlRmlsZVN5c3RlbVBhdGg6IGZ1bmN0aW9uKHJvb3QsIHR5cGUs
IG9yaWdpbikKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9maWxlU3lzdGVtVmlldyAmJiB0aGlz
Ll9maWxlU3lzdGVtVmlldyA9PT0gdGhpcy52aXNpYmxlVmlldykKLSAgICAgICAgICAgIHRoaXMu
X2ZpbGVTeXN0ZW1WaWV3LnVwZGF0ZUZpbGVTeXN0ZW1QYXRoKHJvb3QsIHR5cGUsIG9yaWdpbik7
ICAKLSAgICB9LAotICAKLSAgICB1cGRhdGVGaWxlU3lzdGVtRXJyb3I6IGZ1bmN0aW9uKHR5cGUs
IG9yaWdpbikKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9maWxlU3lzdGVtVmlldyAmJiB0aGlz
Ll9maWxlU3lzdGVtVmlldyA9PT0gdGhpcy52aXNpYmxlVmlldykKLSAgICAgICAgICAgIHRoaXMu
X2ZpbGVTeXN0ZW1WaWV3LnVwZGF0ZUZpbGVTeXN0ZW1FcnJvcih0eXBlLCBvcmlnaW4pOyAgCi0g
ICAgfSwKLSAgICAKLSAgICBzZXRGaWxlU3lzdGVtRGlzYWJsZWQ6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIGlmICh0aGlzLl9maWxlU3lzdGVtVmlldyAmJiB0aGlzLl9maWxlU3lzdGVtVmll
dyA9PT0gdGhpcy52aXNpYmxlVmlldykKLSAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3
LnNldEZpbGVTeXN0ZW1EaXNhYmxlZCgpOyAgCi0gICAgfSwKLQogICAgIHVwZGF0ZU5ldHdvcmtT
dGF0ZTogZnVuY3Rpb24oaXNOb3dPbmxpbmUpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fYXBw
bGljYXRpb25DYWNoZVZpZXcgJiYgdGhpcy5fYXBwbGljYXRpb25DYWNoZVZpZXcgPT09IHRoaXMu
dmlzaWJsZVZpZXcpCkBAIC0xMjgzLDI3ICsxMjQwLDYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNl
UmV2aXNpb25UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVJldmlzaW9uVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5C
YXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZTsKIAotV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1UcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwgb3JpZ2luKQotewotICAgIFdl
Ykluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgc3RvcmFnZVBhbmVs
LCBudWxsLCBvcmlnaW4sICJmaWxlLXN5c3RlbS1zdG9yYWdlLXRyZWUtaXRlbSIpOwotICAgIHRo
aXMuX29yaWdpbiA9IG9yaWdpbjsKLX0KLQotV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0IGl0ZW1VUkwoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuICJmaWxlLXN5c3RlbTovLyIgKyBlbmNvZGVVUkkodGhpcy5fb3JpZ2luKTsKLSAgICB9LAot
Ci0gICAgb25zZWxlY3Q6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5C
YXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnNlbGVjdC5jYWxsKHRoaXMpOwotICAg
ICAgICB0aGlzLl9zdG9yYWdlUGFuZWwuc2hvd0ZpbGVTeXN0ZW0odGhpcywgdGhpcy5fb3JpZ2lu
KTsKLSAgICB9Ci19Ci0gCi1XZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50LnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90
b3R5cGU7Ci0gCiBXZWJJbnNwZWN0b3IuU3RvcmFnZUNhdGVnb3J5VmlldyA9IGZ1bmN0aW9uKCkK
IHsKICAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKaW5kZXggODNlYmFmMC4uNjhiODFhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBA
IC00NSw3ICs0NSw2IEBAIHZhciBQcmVmZXJlbmNlcyA9IHsKICAgICBvbmxpbmVEZXRlY3Rpb25F
bmFibGVkOiB0cnVlLAogICAgIG5hdGl2ZUluc3RydW1lbnRhdGlvbkVuYWJsZWQ6IGZhbHNlLAog
ICAgIHJlc291cmNlRXhwb3J0RW5hYmxlZDogZmFsc2UsCi0gICAgZmlsZVN5c3RlbUVuYWJsZWQ6
IGZhbHNlLAogICAgIHVzZURhdGFVUkxGb3JSZXNvdXJjZUltYWdlSWNvbnM6IHRydWUsCiAgICAg
c2hvd1RpbWluZ1RhYjogZmFsc2UsCiAgICAgc2hvd0Nvb2tpZXNUYWI6IGZhbHNlLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IGNhNmJhMjku
LmRkMzI1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
V2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktp
dC5xcmMKQEAgLTQ0LDcgKzQ0LDYgQEAKICAgICA8ZmlsZT5FeHRlbnNpb25QYW5lbC5qczwvZmls
ZT4KICAgICA8ZmlsZT5FeHRlbnNpb25SZWdpc3RyeVN0dWIuanM8L2ZpbGU+CiAgICAgPGZpbGU+
RXh0ZW5zaW9uU2VydmVyLmpzPC9maWxlPgotICAgIDxmaWxlPkZpbGVTeXN0ZW1WaWV3LmpzPC9m
aWxlPgogICAgIDxmaWxlPkZvbnRWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkdvVG9MaW5lRGlh
bG9nLmpzPC9maWxlPgogICAgIDxmaWxlPkhBUkVudHJ5LmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggNGQ4ZTk1
My4uMDQzNWRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5odG1sCkBAIC03Miw3ICs3Miw2IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29va2llc1RhYmxlLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJDb29raWVJdGVtc1ZpZXcuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkFwcGxp
Y2F0aW9uQ2FjaGVJdGVtc1ZpZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9IkZpbGVTeXN0ZW1WaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTY3JpcHQuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkJyZWFrcG9pbnQuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkJyZWFrcG9pbnRN
YW5hZ2VyLmpzIj48L3NjcmlwdD4K
</data>
<flag name="review"
          id="73608"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>