<?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>52717</bug_id>
          
          <creation_ts>2011-01-19 06:20:05 -0800</creation_ts>
          <short_desc>Web Inspector: move methods from InjectedScript domain into DOM, Runtime and Debugger domains. Introduce InspectorRuntimeAgent.</short_desc>
          <delta_ts>2011-01-19 10:28:49 -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="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>buildbot</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>336471</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-19 06:20:05 -0800</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336472</commentid>
    <comment_count>1</comment_count>
      <attachid>79414</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-19 06:22:51 -0800</bug_when>
    <thetext>Created attachment 79414
[PATCH] Proposed change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336473</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-19 06:24:49 -0800</bug_when>
    <thetext>Attachment 79414 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/inspector/InspectorDOMAgent.h:105:  The parameter name &quot;injectedScriptHost&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorDOMAgent.h:105:  The parameter name &quot;frontend&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorDOMAgent.h:131:  The parameter name &quot;document&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorDOMAgent.h:140:  The parameter name &quot;node&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorDOMAgent.h:148:  The parameter name &quot;document&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorDOMAgent.h:161:  The parameter name &quot;document&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorDOMAgent.h:162:  The parameter name &quot;document&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorDOMAgent.h:164:  The parameter name &quot;event&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorDOMAgent.h:168:  The parameter name &quot;node&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorDOMAgent.h:169:  The parameter name &quot;node&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorDOMAgent.h:173:  The parameter name &quot;node&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorDOMAgent.h:177:  The parameter name &quot;node&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorDOMAgent.h:178:  The parameter name &quot;element&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorDOMAgent.h:180:  The parameter name &quot;registeredEventListener&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorDOMAgent.h:180:  The parameter name &quot;node&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 15 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336478</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-19 06:30:13 -0800</bug_when>
    <thetext>Attachment 79414 did not build on gtk:
Build output: http://queues.webkit.org/results/7585194</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336481</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-01-19 06:36:24 -0800</bug_when>
    <thetext>Attachment 79414 did not build on qt:
Build output: http://queues.webkit.org/results/7560212</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336482</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-19 06:36:53 -0800</bug_when>
    <thetext>Attachment 79414 did not build on chromium:
Build output: http://queues.webkit.org/results/7500204</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336487</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-01-19 06:43:13 -0800</bug_when>
    <thetext>Attachment 79414 did not build on win:
Build output: http://queues.webkit.org/results/7530218</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336493</commentid>
    <comment_count>7</comment_count>
      <attachid>79418</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-19 06:46:49 -0800</bug_when>
    <thetext>Created attachment 79418
[PATCH] Proposed change with missing files added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336503</commentid>
    <comment_count>8</comment_count>
      <attachid>79418</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-19 07:03:01 -0800</bug_when>
    <thetext>Comment on attachment 79418
[PATCH] Proposed change with missing files added.

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

&gt; Source/WebCore/inspector/InjectedScriptHost.cpp:152
&gt; + 

Remove this space.

&gt; Source/WebCore/inspector/InjectedScriptHost.cpp:158
&gt; +InjectedScript InjectedScriptHost::injectedScriptForMainWorld()

injectedScriptForMainWorld -&gt; injectedScriptForMainFrame

&gt; Source/WebCore/inspector/InspectorRuntimeAgent.cpp:83
&gt; +InjectedScript InspectorRuntimeAgent::injectedScriptForObjectId(InspectorObject* objectId)

Let&apos;s move this method into InjectedScriptHost and move pushNodeToFrontend into DOM agent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336505</commentid>
    <comment_count>9</comment_count>
      <attachid>79419</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-19 07:09:31 -0800</bug_when>
    <thetext>Created attachment 79419
[PATCH] Review comments addressed, for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336508</commentid>
    <comment_count>10</comment_count>
      <attachid>79422</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-19 07:17:16 -0800</bug_when>
    <thetext>Created attachment 79422
[PATCH] Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336616</commentid>
    <comment_count>11</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-19 10:28:49 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
        C       Source/WebCore/inspector/InjectedScript.h =&gt; Source/WebCore/inspector/InspectorRuntimeAgent.h
        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/CodeGeneratorInspector.pm
        M       Source/WebCore/inspector/InjectedScript.cpp
        M       Source/WebCore/inspector/InjectedScript.h
        M       Source/WebCore/inspector/InjectedScriptHost.cpp
        M       Source/WebCore/inspector/InjectedScriptHost.h
        M       Source/WebCore/inspector/InjectedScriptSource.js
        M       Source/WebCore/inspector/Inspector.idl
        M       Source/WebCore/inspector/InspectorController.cpp
        M       Source/WebCore/inspector/InspectorController.h
        M       Source/WebCore/inspector/InspectorDOMAgent.cpp
        M       Source/WebCore/inspector/InspectorDOMAgent.h
        M       Source/WebCore/inspector/InspectorDebuggerAgent.cpp
        M       Source/WebCore/inspector/InspectorDebuggerAgent.h
        A       Source/WebCore/inspector/InspectorRuntimeAgent.cpp
        M       Source/WebCore/inspector/front-end/ConsoleView.js
        M       Source/WebCore/inspector/front-end/ScriptsPanel.js
Committed r76136</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79414</attachid>
            <date>2011-01-19 06:22:51 -0800</date>
            <delta_ts>2011-01-19 06:46:49 -0800</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>runtime_agent</filename>
            <type>text/plain</type>
            <size>58532</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzY1ZTQxMy4uYTllOWZhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTExNjksNiArMTE2OSw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCiAgICAgaW5zcGVj
dG9yL0luc3BlY3RvclNldHRpbmdzLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5j
cHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZDFiOTI3Li44YWJhMGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTEtMDEtMTkg
IFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBtZXRo
b2RzIGZyb20gSW5qZWN0ZWRTY3JpcHQgZG9tYWluIGludG8gRE9NLAorICAgICAgICBSdW50aW1l
IGFuZCBEZWJ1Z2dlciBkb21haW5zLiBJbnRyb2R1Y2UgSW5zcGVjdG9yUnVudGltZUFnZW50Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI3MTcKKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNw
ZWN0b3IucG06CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpnZXRDb21wbGV0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Z2V0Q29tcGxldGlvbnNPbkNhbGxGcmFtZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhv
c3Q6OmluamVjdGVkU2NyaXB0Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291
cmNlLmpzOgorICAgICAgICAoLik6CisgICAgICAgICgpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZWxlYXNlRnJvbnRl
bmRMaWZldGltZUFnZW50cyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0Tm9kZVByb3BlcnRpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldE5vZGVQcm90b3R5cGVzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjppbmplY3RlZFNjcmlwdEZvck5vZGVJZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudExpc3RlbmVySW5mbzo6RXZlbnRMaXN0ZW5lckluZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OkRPTUxpc3RlbmVyOjp+RE9NTGlzdGVuZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6Y2FzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6ZG9jdW1lbnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpl
dmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmdldENvbXBsZXRpb25zT25DYWxsRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JDYWxsRnJhbWVJZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
bnNvbGVWaWV3LnByb3RvdHlwZS5jb21wbGV0aW9ucyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLnByb3RvdHlwZS5kb0V2YWxJbkNhbGxGcmFtZSk6CisKIDIwMTEtMDEtMTkgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtl
IE5pd2EuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDI0N2Y4ODAuLjkzNWY3N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCkBAIC0xOTgyLDYgKzE5ODIsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggXAogCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBcCisJU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBcCiAJU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclNldHRpbmdzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclNldHRpbmdzLmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdGF0ZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDg5NzU4Y2IuLjhhMDJjNmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTIwMzUsNiArMjAzNSw4IEBACiAgICAgICAgICAgICAnaW5z
cGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9y
UnVudGltZUFnZW50LmNwcCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRp
bWVBZ2VudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yU2V0dGluZ3MuaCcsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL0luc3BlY3RvclNldHRpbmdzLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGE4
NTcyNDIuLjJmNDJhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xMDYwLDYgKzEwNjAsNyBAQCBTT1VS
Q0VTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBcCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIFwKICAgICBpbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgXAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yU2V0dGluZ3MuY3BwIFwKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAgXApAQCAtMTk1Niw2ICsxOTU3LDcgQEAgSEVBREVSUyArPSBcCiAgICAg
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIFwKICAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5oIFwKKyAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmggXAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JTZXR0aW5ncy5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yU3Rh
dGUuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDhiYTNjNGMuLjRkZjQw
M2MgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBA
IC02NTE2Miw2ICs2NTE2MiwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9y
XEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yU2V0dGluZ3MuY3BwIgogCQkJ
CT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBkZjAxNTM0Li5hNmVjNzExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjY0LDkgKzE2NjQs
MTEgQEAKIAkJN0E3NEVDQkExMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QTc0RUNCODEwMTgzOUE1MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCAq
LzsgfTsKIAkJN0E3NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3
NEVDQjkxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oICovOyB9
OwogCQk3QTc0RUNCRDEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0E3NEVDQkMxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9t
LmNwcCAqLzsgfTsKKwkJN0FBMzY1RUUxMkU3MjY1NDAwRENBMjQyIC8qIEluc3BlY3RvclJ1bnRp
bWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QUEzNjVFRDEyRTcyNjU0MDBEQ0EyNDIgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCAq
LzsgfTsKIAkJN0FCMEIxQzAxMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFiYXNlQWdl
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FC
MEIxQkUxMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwICovOyB9
OwogCQk3QUIwQjFDMTEyMTFBNjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FCMEIxQkYx
MjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFiYXNlQWdlbnQuaCAqLzsgfTsKIAkJN0FE
RTcyMjYxMENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBREU3MjI1MTBDQkJCOUIwMDZC
M0IzQSAvKiBDb250ZXh0TWVudVByb3ZpZGVyLmggKi87IH07CisJCTdBRjExQTVBMTJFNzI3NDkw
MDYxRjIzQyAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjExQTU5MTJFNzI3NDkwMDYxRjIzQyAvKiBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaCAqLzsgfTsKIAkJN0FGRDRBOEIxMTMxQzI3NjAwMzVCODgzIC8q
IFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0FGRDRG
RjQxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4
MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0UzM0NEMDExMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJp
b3JpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdF
MzNDRDAwMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgwODksOSArODA5MSwxMSBAQAog
CQk3QTc0RUNCODEwMTgzOUE1MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNzRFQ0I5MTAxODM5
QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdBNzRFQ0JDMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3Rv
ckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdBQTM2NUVEMTJFNzI2NTQwMERDQTI0MiAvKiBJbnNwZWN0b3JSdW50aW1l
QWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9y
UnVudGltZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FCMEIxQkUx
MjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBQjBCMUJGMTIxMUE2MjIwMEE3Njk0MCAvKiBJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3RvckRhdGFiYXNlQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0FERTcyMjUxMENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGV4dE1lbnVQcm92aWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QUYxMUE1OTEyRTcyNzQ5MDA2MUYyM0MgLyogSW5zcGVj
dG9yUnVudGltZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZENEE4
QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTY3JpcHRCcmVha3BvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdERlYnVnTGlzdGVuZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3
IC8qIFB1cmdlUHJpb3JpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVy
Z2VQcmlvcml0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI5ODIsNiArMTI5
ODYsOCBAQAogCQkJCTlGMEQ2QjJEMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxl
ckFnZW50LmggKi8sCiAJCQkJODJBQjE3NzExMjVDODI2NzAwQzUwNjlEIC8qIEluc3BlY3RvclJl
c291cmNlQWdlbnQuY3BwICovLAogCQkJCTgyQUIxNzcyMTI1QzgyNjcwMEM1MDY5RCAvKiBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmggKi8sCisJCQkJN0FBMzY1RUQxMkU3MjY1NDAwRENBMjQyIC8q
IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgKi8sCisJCQkJN0FGMTFBNTkxMkU3Mjc0OTAwNjFG
MjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oICovLAogCQkJCTRGQTNCOTA4MTI1Q0QxMjEw
MDMwMEJBRCAvKiBJbnNwZWN0b3JTdGF0ZS5jcHAgKi8sCiAJCQkJNEZBM0I5MDkxMjVDRDEyMjAw
MzAwQkFEIC8qIEluc3BlY3RvclN0YXRlLmggKi8sCiAJCQkJODJBQjE3NkYxMjVDODI2NzAwQzUw
NjlEIC8qIEluc3BlY3RvclN0eWxlU2hlZXQuY3BwICovLApAQCAtMjIzNjcsNiArMjIzNzMsNyBA
QAogCQkJCTJFMzdFMDA2MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0E1NjQwQzAxMkRGOUU1RTAwRjQ1MzZEIC8qIEluc3BlY3RvclNldHRpbmdzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGM0Q0QzQ3OTEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9y
QnJvd3NlckRlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTdBRjExQTVBMTJFNzI3
NDkwMDYxRjIzQyAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAt
MjUwNTYsNiArMjUwNjMsNyBAQAogCQkJCTJFMzdFMDA1MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RP
TVVSTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTU2NDBCRjEyREY5RTVFMDBGNDUzNkQgLyog
SW5zcGVjdG9yU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjNENEM0NzgxMkUwNzY2
MzAwM0RBMTUwIC8qIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTdBQTM2NUVFMTJFNzI2NTQwMERDQTI0MiAvKiBJbnNwZWN0b3JSdW50aW1lQWdl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCmluZGV4IDE2YTYwNzAuLmVhOThkMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCkBA
IC03Myw2ICs3MywxMSBAQCAkdHlwZVRyYW5zZm9ybXsiUHJvZmlsZXIifSA9IHsKICAgICAiaGVh
ZGVyIiA9PiAiSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIiwKICAgICAiZG9tYWluQWNjZXNzb3Ii
ID0+ICJtX2luc3BlY3RvckNvbnRyb2xsZXItPm1fcHJvZmlsZXJBZ2VudCIsCiB9OworJHR5cGVU
cmFuc2Zvcm17IlJ1bnRpbWUifSA9IHsKKyAgICAiZm9yd2FyZCIgPT4gIkluc3BlY3RvclJ1bnRp
bWVBZ2VudCIsCisgICAgImhlYWRlciIgPT4gIkluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIiwKKyAg
ICAiZG9tYWluQWNjZXNzb3IiID0+ICJtX2luc3BlY3RvckNvbnRyb2xsZXItPm1fcnVudGltZUFn
ZW50IiwKK307CiAKICR0eXBlVHJhbnNmb3JteyJGcm9udGVuZCJ9ID0gewogICAgICJmb3J3YXJk
IiA9PiAiSW5zcGVjdG9yRnJvbnRlbmQiLApAQCAtMTE3LDcgKzEyMiw3IEBAICR0eXBlVHJhbnNm
b3JteyJTdHJpbmcifSA9IHsKICAgICAidmFyaWFibGUiID0+ICJTdHJpbmciLAogICAgICJyZXR1
cm4iID0+ICJTdHJpbmciLAogICAgICJkZWZhdWx0VmFsdWUiID0+ICJcIlwiIiwKLSAgICAiZm9y
d2FyZEhlYWRlciIgPT4gInd0Zi9Gb3J3YXJkLmgiLAorICAgICJmb3J3YXJkSGVhZGVyIiA9PiAi
UGxhdGZvcm1TdHJpbmcuaCIsCiAgICAgImhlYWRlciIgPT4gIlBsYXRmb3JtU3RyaW5nLmgiLAog
ICAgICJKU09OVHlwZSIgPT4gIlN0cmluZyIsCiAgICAgIkpTVHlwZSIgPT4gInN0cmluZyIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IGYyODQ2Mjcu
LmM4NjQzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cApAQCAtNTIsMTAgKzUyLDEwIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91CiAgICAgbWFrZUNh
bGwoZnVuY3Rpb24sIHJlc3VsdCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRl
SW5DYWxsRnJhbWUobG9uZyBjYWxsRnJhbWUsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29u
c3QgU3RyaW5nJiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQor
dm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3Qg
U3RyaW5nJiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQogewog
ICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAi
ZXZhbHVhdGVJbkNhbGxGcmFtZSIpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxG
cmFtZSk7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lSWQtPnRvSlNPTlN0
cmluZygpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKICAgICBm
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RHcm91cCk7CiAgICAgbWFrZUNhbGwoZnVuY3Rp
b24sIHJlc3VsdCk7CkBAIC02OSwxMiArNjksMjAgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZh
bHVhdGVPblNlbGYoY29uc3QgU3RyaW5nJiBmdW5jdGlvbkJvZHksIFBhc3NSZWZQdHI8SW5zcGUK
ICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgcmVzdWx0KTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlw
dDo6Z2V0Q29tcGxldGlvbnMoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBib29sIGluY2x1ZGVJ
bnNwZWN0b3JDb21tYW5kTGluZUFQSSwgbG9uZyBjYWxsRnJhbWVJZCwgUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiogcmVzdWx0KQordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0Q29tcGxldGlvbnMoY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBib29sIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQ
SSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQogewogICAgIFNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAiZ2V0Q29tcGxldGlvbnMiKTsK
ICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEkpOwotICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZUlkKTsKKyAgICBtYWtlQ2FsbChmdW5jdGlvbiwg
cmVzdWx0KTsKK30KKwordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0Q29tcGxldGlvbnNPbkNhbGxG
cmFtZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImdldENvbXBsZXRpb25zIik7CisgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lSWQtPnRvSlNPTlN0cmluZygpKTsKKyAgICBm
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEkpOwogICAgIG1ha2VDYWxsKGZ1
bmN0aW9uLCByZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5oCmluZGV4IDlmYjRjNTAuLjBhM2YyNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdC5oCkBAIC01MSw5ICs1MSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNOb1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE9iamVjdC5oYXNOb1Zh
bHVlKCk7IH0KIAogICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBj
b25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQp
OwotICAgIHZvaWQgZXZhbHVhdGVJbkNhbGxGcmFtZShsb25nIGNhbGxGcmFtZSwgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+KiByZXN1bHQpOworICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFtZShQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVz
dWx0KTsKICAgICB2b2lkIGV2YWx1YXRlT25TZWxmKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25Cb2R5
LCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmd1bWVudHNBcnJheSwgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiogcmVzdWx0KTsKLSAgICB2b2lkIGdldENvbXBsZXRpb25zKGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIGxvbmcg
Y2FsbEZyYW1lSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAgdm9pZCBn
ZXRDb21wbGV0aW9ucyhjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGJvb2wgaW5jbHVkZUluc3Bl
Y3RvckNvbW1hbmRMaW5lQVBJLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOworICAg
IHZvaWQgZ2V0Q29tcGxldGlvbnNPbkNhbGxGcmFtZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRlSW5z
cGVjdG9yQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CiAg
ICAgdm9pZCBnZXRQcm9wZXJ0aWVzKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJ
ZCwgYm9vbCBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgYm9vbCBhYmJyZXZpYXRlLCBSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+KiByZXN1bHQpOwogICAgIHZvaWQgcHVzaE5vZGVUb0Zyb250ZW5kKFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiog
cmVzdWx0KTsKICAgICB2b2lkIHJlc29sdmVOb2RlKGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+KiByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0SG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcAppbmRleCBmMjNkOGVjLi45MDVhZjgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApAQCAtODAsMjAgKzgwLDYg
QEAgSW5qZWN0ZWRTY3JpcHRIb3N0Ojp+SW5qZWN0ZWRTY3JpcHRIb3N0KCkKIHsKIH0KIAotdm9p
ZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwg
Y29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0
KQotewotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRG
b3JNYWluV29ybGQoKTsKLSAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAg
ICAgICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGUoZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIHJl
c3VsdCk7Ci19Ci0KLXZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZUluQ2FsbEZyYW1l
KGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCwgbG9uZyBjYWxsRnJhbWUsIGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiogcmVzdWx0KQotewotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0
ZWRTY3JpcHRJZCA/IG1faWRUb0luamVjdGVkU2NyaXB0LmdldChpbmplY3RlZFNjcmlwdElkKSA6
IGluamVjdGVkU2NyaXB0Rm9yTWFpbldvcmxkKCk7Ci0gICAgaWYgKCFpbmplY3RlZFNjcmlwdC5o
YXNOb1ZhbHVlKCkpCi0gICAgICAgIGluamVjdGVkU2NyaXB0LmV2YWx1YXRlSW5DYWxsRnJhbWUo
Y2FsbEZyYW1lLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgcmVzdWx0KTsKLX0KLQogdm9pZCBJ
bmplY3RlZFNjcmlwdEhvc3Q6OmV2YWx1YXRlT25TZWxmKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25C
b2R5LCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmd1bWVudHNBcnJheSwgUmVmUHRyPElu
c3BlY3RvclZhbHVlPiogcmVzdWx0KQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2Ny
aXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JNYWluV29ybGQoKTsKQEAgLTEwMSw1NSArODcsNiBAQCB2
b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVPblNlbGYoY29uc3QgU3RyaW5nJiBmdW5j
dGlvbkJvZHksIFBhc3NSZWZQdHI8SQogICAgICAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0ZU9u
U2VsZihmdW5jdGlvbkJvZHksIGFyZ3VtZW50c0FycmF5LCByZXN1bHQpOwogfQogCi12b2lkIElu
amVjdGVkU2NyaXB0SG9zdDo6Z2V0Q29tcGxldGlvbnMobG9uZyBpbmplY3RlZFNjcmlwdElkLCBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGJvb2wgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5l
QVBJLCBsb25nIGNhbGxGcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCi17
Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdElkID8g
bV9pZFRvSW5qZWN0ZWRTY3JpcHQuZ2V0KGluamVjdGVkU2NyaXB0SWQpIDogaW5qZWN0ZWRTY3Jp
cHRGb3JNYWluV29ybGQoKTsKLSAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkK
LSAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0Q29tcGxldGlvbnMoZXhwcmVzc2lvbiwgaW5jbHVk
ZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCBjYWxsRnJhbWVJZCwgcmVzdWx0KTsKLX0KLQotdm9p
ZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmdldFByb3BlcnRpZXMoUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IG9iamVjdElkLCBib29sIGlnbm9yZUhhc093blByb3BlcnR5LCBib29sIGFiYnJldmlh
dGUsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKLXsKLSAgICBJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQuZ2V0
KCkpOwotICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICBpbmpl
Y3RlZFNjcmlwdC5nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwg
YWJicmV2aWF0ZSwgcmVzdWx0KTsKLX0KLQotdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OnB1c2hO
b2RlVG9Gcm9udGVuZChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKLXsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3Rl
ZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQuZ2V0KCkpOwotICAg
IGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICBpbmplY3RlZFNjcmlw
dC5wdXNoTm9kZVRvRnJvbnRlbmQob2JqZWN0SWQsIHJlc3VsdCk7Ci19Ci0KLXZvaWQgSW5qZWN0
ZWRTY3JpcHRIb3N0OjpyZXNvbHZlTm9kZShsb25nIG5vZGVJZCwgUmVmUHRyPEluc3BlY3RvclZh
bHVlPiogcmVzdWx0KQotewotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5q
ZWN0ZWRTY3JpcHRGb3JOb2RlSWQobm9kZUlkKTsKLSAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkKLSAgICAgICAgaW5qZWN0ZWRTY3JpcHQucmVzb2x2ZU5vZGUobm9kZUlkLCBy
ZXN1bHQpOwotfQotCi12b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6Z2V0Tm9kZVByb3BlcnRpZXMo
bG9uZyBub2RlSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHByb3BlcnRpZXNBcnJheSwg
UmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQotewotICAgIEluamVjdGVkU2NyaXB0IGlu
amVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JOb2RlSWQobm9kZUlkKTsKLSAgICBpZiAo
IWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0
Tm9kZVByb3BlcnRpZXMobm9kZUlkLCBwcm9wZXJ0aWVzQXJyYXksIHJlc3VsdCk7Ci19Ci0KLXZv
aWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXROb2RlUHJvdG90eXBlcyhsb25nIG5vZGVJZCwgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQotewotICAgIEluamVjdGVkU2NyaXB0IGluamVj
dGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JOb2RlSWQobm9kZUlkKTsKLSAgICBpZiAoIWlu
amVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0Tm9k
ZVByb3RvdHlwZXMobm9kZUlkLCByZXN1bHQpOwotfQotCi12b2lkIEluamVjdGVkU2NyaXB0SG9z
dDo6c2V0UHJvcGVydHlWYWx1ZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQs
IGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKLXsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQuZ2V0KCkpOwot
ICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICBpbmplY3RlZFNj
cmlwdC5zZXRQcm9wZXJ0eVZhbHVlKG9iamVjdElkLCBwcm9wZXJ0eU5hbWUsIGV4cHJlc3Npb24s
IHJlc3VsdCk7Ci19Ci0KIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjbGVhckNvbnNvbGVNZXNz
YWdlcygpCiB7CiAgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikKQEAgLTIxMiwxMiArMTQ5
LDE3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpzZWxlY3RET01TdG9yYWdlKFN0b3JhZ2Uq
IHN0b3JhZ2UpCiAgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+bV9kb21TdG9yYWdlQWdl
bnQtPnNlbGVjdERPTVN0b3JhZ2Uoc3RvcmFnZSk7CiB9CiAjZW5kaWYKLQorIAogSW5qZWN0ZWRT
Y3JpcHQgSW5qZWN0ZWRTY3JpcHRIb3N0OjppbmplY3RlZFNjcmlwdEZvcklkKGxvbmcgaWQpCiB7
CiAgICAgcmV0dXJuIG1faWRUb0luamVjdGVkU2NyaXB0LmdldChpZCk7CiB9CiAKK0luamVjdGVk
U2NyaXB0IEluamVjdGVkU2NyaXB0SG9zdDo6aW5qZWN0ZWRTY3JpcHRGb3JNYWluV29ybGQoKQor
eworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdEZvcihtYWluV29ybGRTY3JpcHRTdGF0ZShtX2lu
c3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS0+bWFpbkZyYW1lKCkpKTsKK30KKwog
dm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmRpc2NhcmRJbmplY3RlZFNjcmlwdHMoKQogewogICAg
IElkVG9JbmplY3RlZFNjcmlwdE1hcDo6aXRlcmF0b3IgZW5kID0gbV9pZFRvSW5qZWN0ZWRTY3Jp
cHQuZW5kKCk7CkBAIC0yODMsNDMgKzIyNSw2IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0Ojpk
aWREZXN0cm95V29ya2VyKGxvbmcgaWQpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCiAK
LUluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0SG9zdDo6aW5qZWN0ZWRTY3JpcHRGb3JPYmpl
Y3RJZChJbnNwZWN0b3JPYmplY3QqIG9iamVjdElkKQotewotICAgIGxvbmcgaW5qZWN0ZWRTY3Jp
cHRJZCA9IDA7Ci0gICAgYm9vbCBzdWNjZXNzID0gb2JqZWN0SWQtPmdldE51bWJlcigiaW5qZWN0
ZWRTY3JpcHRJZCIsICZpbmplY3RlZFNjcmlwdElkKTsKLSAgICBpZiAoc3VjY2VzcykKLSAgICAg
ICAgcmV0dXJuIG1faWRUb0luamVjdGVkU2NyaXB0LmdldChpbmplY3RlZFNjcmlwdElkKTsKLSAg
ICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKLX0KLQotSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRT
Y3JpcHRIb3N0OjppbmplY3RlZFNjcmlwdEZvck5vZGVJZChsb25nIG5vZGVJZCkKLXsKLSAgICBp
ZiAoIW1faW5zcGVjdG9yQ29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0
KCk7Ci0KLSAgICBGcmFtZSogZnJhbWUgPSAwOwotICAgIGlmIChub2RlSWQpIHsKLSAgICAgICAg
QVNTRVJUKG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZG9tQWdlbnQoKSk7Ci0gICAgICAgIE5vZGUq
IG5vZGUgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmRvbUFnZW50KCktPm5vZGVGb3JJZChub2Rl
SWQpOwotICAgICAgICBpZiAobm9kZSkgewotICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gbm9kZS0+b3duZXJEb2N1bWVudCgpOwotICAgICAgICAgICAgaWYgKGRvY3VtZW50KQotICAg
ICAgICAgICAgICAgIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7Ci0gICAgICAgIH0KLSAgICB9
IGVsc2UKLSAgICAgICAgZnJhbWUgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBh
Z2UoKS0+bWFpbkZyYW1lKCk7Ci0KLSAgICBpZiAoZnJhbWUpCi0gICAgICAgIHJldHVybiBpbmpl
Y3RlZFNjcmlwdEZvcihtYWluV29ybGRTY3JpcHRTdGF0ZShmcmFtZSkpOwotCi0gICAgcmV0dXJu
IEluamVjdGVkU2NyaXB0KCk7Ci19Ci0KLUluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0SG9z
dDo6aW5qZWN0ZWRTY3JpcHRGb3JNYWluV29ybGQoKQotewotICAgIHJldHVybiBpbmplY3RlZFNj
cmlwdEZvcihtYWluV29ybGRTY3JpcHRTdGF0ZShtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3Bl
Y3RlZFBhZ2UoKS0+bWFpbkZyYW1lKCkpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEhvc3QuaAppbmRleCA0Y2I2MjJkLi5kYzRmYTk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCkBAIC01OSwxNiArNTks
NyBAQCBwdWJsaWM6CiAgICAgfkluamVjdGVkU2NyaXB0SG9zdCgpOwogCiAgICAgLy8gUGFydCBv
ZiB0aGUgcHJvdG9jb2wuCi0gICAgdm9pZCBldmFsdWF0ZShjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJl
c3VsdCk7Ci0gICAgdm9pZCBldmFsdWF0ZUluQ2FsbEZyYW1lKGxvbmcgaW5qZWN0ZWRTY3JpcHRJ
ZCwgbG9uZyBjYWxsRnJhbWUsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5n
JiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKICAgICB2b2lk
IGV2YWx1YXRlT25TZWxmKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25Cb2R5LCBQYXNzUmVmUHRyPElu
c3BlY3RvckFycmF5PiBhcmd1bWVudHNBcnJheSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVz
dWx0KTsKLSAgICB2b2lkIGdldENvbXBsZXRpb25zKGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCwgY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBib29sIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQ
SSwgbG9uZyBjYWxsRnJhbWVJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKLSAg
ICB2b2lkIGdldFByb3BlcnRpZXMoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElk
LCBib29sIGlnbm9yZUhhc093blByb3BlcnR5LCBib29sIGFiYnJldmlhdGUsIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBwdXNoTm9kZVRvRnJvbnRlbmQoUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiBy
ZXN1bHQpOwotICAgIHZvaWQgcmVzb2x2ZU5vZGUobG9uZyBub2RlSWQsIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXROb2RlUHJvcGVydGllcyhsb25nIG5vZGVJ
ZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gcHJvcGVydGllc0FycmF5LCBSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQgZ2V0Tm9kZVByb3RvdHlwZXMobG9uZyBu
b2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBzZXRQcm9w
ZXJ0eVZhbHVlKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgY29uc3QgU3Ry
aW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiogcmVzdWx0KTsKIAogICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xsZXI7IH0KICAgICB2b2lk
IGRpc2Nvbm5lY3RDb250cm9sbGVyKCkgeyBtX2luc3BlY3RvckNvbnRyb2xsZXIgPSAwOyB9CkBA
IC05Niw2ICs4Nyw3IEBAIHB1YmxpYzoKICAgICBwYWlyPGxvbmcsIFNjcmlwdE9iamVjdD4gaW5q
ZWN0U2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBTY3JpcHRTdGF0ZSopOwogICAgIEluamVj
dGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yKFNjcmlwdFN0YXRlKik7CiAgICAgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JJZChsb25nKTsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdEZvck1haW5Xb3JsZCgpOwogICAgIHZvaWQgZGlzY2FyZEluamVjdGVkU2NyaXB0
cygpOwogICAgIHZvaWQgcmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cChsb25nIGluamVjdGVkU2Ny
aXB0SWQsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOwogCkBAIC0xMDksMTAgKzEwMSw2IEBA
IHByaXZhdGU6CiAgICAgU2NyaXB0T2JqZWN0IGNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0
cmluZyYgc291cmNlLCBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGxvbmcgaWQpOwogICAgIHZv
aWQgZGlzY2FyZEluamVjdGVkU2NyaXB0KFNjcmlwdFN0YXRlKik7CiAKLSAgICBJbmplY3RlZFNj
cmlwdCBpbmplY3RlZFNjcmlwdEZvck9iamVjdElkKEluc3BlY3Rvck9iamVjdCogb2JqZWN0SWQp
OwotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yTm9kZUlkKGxvbmcgbm9kZUlk
KTsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvck1haW5Xb3JsZCgpOwotCiAg
ICAgSW5zcGVjdG9yQ29udHJvbGxlciogbV9pbnNwZWN0b3JDb250cm9sbGVyOwogICAgIGxvbmcg
bV9uZXh0SW5qZWN0ZWRTY3JpcHRJZDsKICAgICBsb25nIG1fbGFzdFdvcmtlcklkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCmluZGV4IDQ2
ODM5OTcuLjdjYTI1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTE4NiwyOSArMTg2LDE0IEBAIEluamVjdGVkU2NyaXB0LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHByb3BlcnR5TmFtZVNldCk7
CiAgICAgfSwKIAotICAgIGdldENvbXBsZXRpb25zOiBmdW5jdGlvbihleHByZXNzaW9uLCBpbmNs
dWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIGNhbGxGcmFtZUlkKQorICAgIGdldENvbXBsZXRp
b25zOiBmdW5jdGlvbihleHByZXNzaW9uLCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEkp
CiAgICAgewogICAgICAgICB2YXIgcHJvcHMgPSB7fTsKICAgICAgICAgdHJ5IHsKLSAgICAgICAg
ICAgIHZhciBleHByZXNzaW9uUmVzdWx0OwotICAgICAgICAgICAgLy8gRXZhbHVhdGUgb24gY2Fs
bCBmcmFtZSBpZiBjYWxsIGZyYW1lIGlkIGlzIGF2YWlsYWJsZS4KLSAgICAgICAgICAgIGlmIChj
YWxsRnJhbWVJZCAhPT0gLTEpIHsKLSAgICAgICAgICAgICAgICB2YXIgY2FsbEZyYW1lID0gdGhp
cy5fY2FsbEZyYW1lRm9ySWQoY2FsbEZyYW1lSWQpOwotICAgICAgICAgICAgICAgIGlmICghY2Fs
bEZyYW1lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHM7Ci0gICAgICAgICAgICAg
ICAgaWYgKGV4cHJlc3Npb24pCi0gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb25SZXN1bHQg
PSB0aGlzLl9ldmFsdWF0ZU9uKGNhbGxGcmFtZS5ldmFsdWF0ZSwgY2FsbEZyYW1lLCBleHByZXNz
aW9uLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
Ly8gRXZhbHVhdGUgaW50byBwcm9wZXJ0aWVzIGluIHNjb3BlIG9mIHRoZSBzZWxlY3RlZCBjYWxs
IGZyYW1lLgotICAgICAgICAgICAgICAgICAgICB2YXIgc2NvcGVDaGFpbiA9IGNhbGxGcmFtZS5z
Y29wZUNoYWluOwotICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjb3Bl
Q2hhaW4ubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wb3B1bGF0
ZVByb3BlcnR5TmFtZXMoc2NvcGVDaGFpbltpXSwgcHJvcHMpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFleHByZXNzaW9uKQot
ICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uID0gInRoaXMiOwotICAgICAgICAgICAgICAg
IGV4cHJlc3Npb25SZXN1bHQgPSB0aGlzLl9ldmFsdWF0ZU9uKGluc3BlY3RlZFdpbmRvdy5ldmFs
LCBpbnNwZWN0ZWRXaW5kb3csIGV4cHJlc3Npb24sIGZhbHNlKTsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmICghZXhwcmVzc2lvbikKKyAgICAgICAgICAgICAgICBleHByZXNzaW9uID0g
InRoaXMiOworICAgICAgICAgICAgdmFyIGV4cHJlc3Npb25SZXN1bHQgPSB0aGlzLl9ldmFsdWF0
ZU9uKGluc3BlY3RlZFdpbmRvdy5ldmFsLCBpbnNwZWN0ZWRXaW5kb3csIGV4cHJlc3Npb24sIGZh
bHNlKTsKKwogICAgICAgICAgICAgaWYgKHR5cGVvZiBleHByZXNzaW9uUmVzdWx0ID09PSAib2Jq
ZWN0IikKICAgICAgICAgICAgICAgICB0aGlzLl9wb3B1bGF0ZVByb3BlcnR5TmFtZXMoZXhwcmVz
c2lvblJlc3VsdCwgcHJvcHMpOwogICAgIApAQCAtMjIxLDYgKzIwNiwzNCBAQCBJbmplY3RlZFNj
cmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBwcm9wczsKICAgICB9LAogCisgICAg
Z2V0Q29tcGxldGlvbnNPbkNhbGxGcmFtZTogZnVuY3Rpb24oY2FsbEZyYW1lSWQsIGV4cHJlc3Np
b24sIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSkKKyAgICB7CisgICAgICAgIHZhciBw
cm9wcyA9IHt9OworICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFyIGNhbGxGcmFtZSA9IHRo
aXMuX2NhbGxGcmFtZUZvcklkKGNhbGxGcmFtZUlkKTsKKyAgICAgICAgICAgIGlmICghY2FsbEZy
YW1lKQorICAgICAgICAgICAgICAgIHJldHVybiBwcm9wczsKKworICAgICAgICAgICAgaWYgKGV4
cHJlc3Npb24pIHsKKyAgICAgICAgICAgICAgICB2YXIgZXhwcmVzc2lvblJlc3VsdCA9IHRoaXMu
X2V2YWx1YXRlT24oY2FsbEZyYW1lLmV2YWx1YXRlLCBjYWxsRnJhbWUsIGV4cHJlc3Npb24sIHRy
dWUpOworICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZXhwcmVzc2lvblJlc3VsdCA9PT0gIm9i
amVjdCIpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlUHJvcGVydHlOYW1lcyhl
eHByZXNzaW9uUmVzdWx0LCBwcm9wcyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIC8vIEV2YWx1YXRlIGludG8gcHJvcGVydGllcyBpbiBzY29wZSBvZiB0aGUgc2VsZWN0
ZWQgY2FsbCBmcmFtZS4KKyAgICAgICAgICAgICAgICB2YXIgc2NvcGVDaGFpbiA9IGNhbGxGcmFt
ZS5zY29wZUNoYWluOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NvcGVD
aGFpbi5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVQcm9w
ZXJ0eU5hbWVzKHNjb3BlQ2hhaW5baV0sIHByb3BzKTsKKyAgICAgICAgICAgIH0KKyAgICAKKyAg
ICAgICAgICAgIGlmIChpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEkpIHsKKyAgICAgICAg
ICAgICAgICBmb3IgKHZhciBwcm9wIGluIHRoaXMuX2NvbW1hbmRMaW5lQVBJKQorICAgICAgICAg
ICAgICAgICAgICBwcm9wc1twcm9wXSA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
Y2F0Y2goZSkgeworICAgICAgICB9CisgICAgICAgIHJldHVybiBwcm9wczsKKyAgICB9LAorCiAg
ICAgZXZhbHVhdGU6IGZ1bmN0aW9uKGV4cHJlc3Npb24sIG9iamVjdEdyb3VwKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlQW5kV3JhcChpbnNwZWN0ZWRXaW5kb3cuZXZhbCwg
aW5zcGVjdGVkV2luZG93LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgZmFsc2UpOwpAQCAtMjc4
LDcgKzI5MSw3IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9LAogCi0gICAgZXZhbHVhdGVJbkNhbGxGcmFtZTogZnVuY3Rpb24oY2Fs
bEZyYW1lSWQsIGNvZGUsIG9iamVjdEdyb3VwKQorICAgIGV2YWx1YXRlT25DYWxsRnJhbWU6IGZ1
bmN0aW9uKGNhbGxGcmFtZUlkLCBjb2RlLCBvYmplY3RHcm91cCkKICAgICB7CiAgICAgICAgIHZh
ciBjYWxsRnJhbWUgPSB0aGlzLl9jYWxsRnJhbWVGb3JJZChjYWxsRnJhbWVJZCk7CiAgICAgICAg
IGlmICghY2FsbEZyYW1lKQpAQCAtMjg2LDEwICsyOTksMTEgQEAgSW5qZWN0ZWRTY3JpcHQucHJv
dG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVBbmRXcmFwKGNhbGxGcmFt
ZS5ldmFsdWF0ZSwgY2FsbEZyYW1lLCBjb2RlLCBvYmplY3RHcm91cCwgdHJ1ZSk7CiAgICAgfSwK
IAotICAgIF9jYWxsRnJhbWVGb3JJZDogZnVuY3Rpb24oaWQpCisgICAgX2NhbGxGcmFtZUZvcklk
OiBmdW5jdGlvbihjYWxsRnJhbWVJZCkKICAgICB7CisgICAgICAgIHZhciBvcmRpbmFsID0gY2Fs
bEZyYW1lSWQub3JkaW5hbDsKICAgICAgICAgdmFyIGNhbGxGcmFtZSA9IEluamVjdGVkU2NyaXB0
SG9zdC5jdXJyZW50Q2FsbEZyYW1lKCk7Ci0gICAgICAgIHdoaWxlICgtLWlkID49IDAgJiYgY2Fs
bEZyYW1lKQorICAgICAgICB3aGlsZSAoLS1vcmRpbmFsID49IDAgJiYgY2FsbEZyYW1lKQogICAg
ICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLmNhbGxlcjsKICAgICAgICAgcmV0dXJuIGNh
bGxGcmFtZTsKICAgICB9LApAQCAtNTMxLDE2ICs1NDUsMTUgQEAgSW5qZWN0ZWRTY3JpcHQuUmVt
b3RlT2JqZWN0LmZyb21PYmplY3QgPSBmdW5jdGlvbihvYmplY3QsIG9iamVjdElkLCBhYmJyZXZp
YXRlKQogICAgIH0KIH0KIAotSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkgPSBmdW5jdGlv
bihpZCwgY2FsbEZyYW1lKQorSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkgPSBmdW5jdGlv
bihvcmRpbmFsLCBjYWxsRnJhbWUpCiB7Ci0gICAgdGhpcy5pZCA9IGlkOworICAgIHRoaXMuaWQg
PSB7IG9yZGluYWw6IG9yZGluYWwsIGluamVjdGVkU2NyaXB0SWQ6IGluamVjdGVkU2NyaXB0SWQg
fTsKICAgICB0aGlzLnR5cGUgPSBjYWxsRnJhbWUudHlwZTsKICAgICB0aGlzLmZ1bmN0aW9uTmFt
ZSA9ICh0aGlzLnR5cGUgPT09ICJmdW5jdGlvbiIgPyBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lIDog
IiIpOwogICAgIHRoaXMuc291cmNlSUQgPSBjYWxsRnJhbWUuc291cmNlSUQ7CiAgICAgdGhpcy5s
aW5lID0gY2FsbEZyYW1lLmxpbmU7CiAgICAgdGhpcy5jb2x1bW4gPSBjYWxsRnJhbWUuY29sdW1u
OwogICAgIHRoaXMuc2NvcGVDaGFpbiA9IHRoaXMuX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSk7
Ci0gICAgdGhpcy53b3JsZElkID0gaW5qZWN0ZWRTY3JpcHRJZDsKIH0KIAogSW5qZWN0ZWRTY3Jp
cHQuQ2FsbEZyYW1lUHJveHkucHJvdG90eXBlID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yLmlkbAppbmRleCA3MzljMzM2Li4zODJiNmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmlkbApAQCAtNzEsMTkgKzcxLDIwIEBAIG1vZHVsZSBjb3JlIHsKICAgICAg
ICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgZGVsZXRlQ29va2llKGluIFN0cmluZyBjb29raWVO
YW1lLCBpbiBTdHJpbmcgZG9tYWluKTsKIAogICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICAgICAg
ICAvLyBSdW50aW1lCisgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICAgICAgW2RvbWFpbj1S
dW50aW1lXSB2b2lkIGV2YWx1YXRlKGluIFN0cmluZyBleHByZXNzaW9uLCBpbiBTdHJpbmcgb2Jq
ZWN0R3JvdXAsIG91dCBWYWx1ZSByZXN1bHQpOworICAgICAgICBbZG9tYWluPVJ1bnRpbWVdIHZv
aWQgZ2V0Q29tcGxldGlvbnMoaW4gU3RyaW5nIGV4cHJlc3Npb24sIGluIGJvb2xlYW4gaW5jbHVk
ZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCBvdXQgVmFsdWUgcmVzdWx0KTsKKyAgICAgICAgW2Rv
bWFpbj1SdW50aW1lXSB2b2lkIGdldFByb3BlcnRpZXMoaW4gT2JqZWN0IG9iamVjdElkLCBpbiBi
b29sZWFuIGlnbm9yZUhhc093blByb3BlcnR5LCBpbiBib29sZWFuIGFiYnJldmlhdGUsIG91dCBW
YWx1ZSByZXN1bHQpOworICAgICAgICBbZG9tYWluPVJ1bnRpbWVdIHZvaWQgc2V0UHJvcGVydHlW
YWx1ZShpbiBPYmplY3Qgb2JqZWN0SWQsIGluIFN0cmluZyBwcm9wZXJ0eU5hbWUsIGluIFN0cmlu
ZyBleHByZXNzaW9uLCBvdXQgVmFsdWUgcmVzdWx0KTsKKyAgICAgICAgW2RvbWFpbj1SdW50aW1l
XSB2b2lkIHB1c2hOb2RlVG9Gcm9udGVuZChpbiBPYmplY3Qgb2JqZWN0SWQsIG91dCBWYWx1ZSBy
ZXN1bHQpOworCisgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAgICAgIC8vIEluamVjdGVkIFNj
cmlwdAogICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCi0gICAgICAgIFtkb21haW49SW5qZWN0ZWRT
Y3JpcHRdIHZvaWQgZXZhbHVhdGUoaW4gU3RyaW5nIGV4cHJlc3Npb24sIGluIFN0cmluZyBvYmpl
Y3RHcm91cCwgb3V0IFZhbHVlIHJlc3VsdCk7Ci0gICAgICAgIFtkb21haW49SW5qZWN0ZWRTY3Jp
cHRdIHZvaWQgZXZhbHVhdGVJbkNhbGxGcmFtZShpbiBsb25nIGluamVjdGVkU2NyaXB0SWQsIGlu
IGxvbmcgY2FsbEZyYW1lLCBpbiBTdHJpbmcgZXhwcmVzc2lvbiwgaW4gU3RyaW5nIG9iamVjdEdy
b3VwLCBvdXQgVmFsdWUgcmVzdWx0KTsKICAgICAgICAgW2RvbWFpbj1JbmplY3RlZFNjcmlwdF0g
dm9pZCBldmFsdWF0ZU9uU2VsZihpbiBTdHJpbmcgZnVuY3Rpb25Cb2R5LCBpbiBBcnJheSBhcmd1
bWVudHNBcnJheSwgb3V0IFZhbHVlIHJlc3VsdCk7Ci0gICAgICAgIFtkb21haW49SW5qZWN0ZWRT
Y3JpcHRdIHZvaWQgZ2V0Q29tcGxldGlvbnMoaW4gbG9uZyBpbmplY3RlZFNjcmlwdElkLCBpbiBT
dHJpbmcgZXhwcmVzc2lvbiwgaW4gYm9vbGVhbiBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVB
UEksIGluIGxvbmcgY2FsbEZyYW1lSWQsIG91dCBWYWx1ZSByZXN1bHQpOwotICAgICAgICBbZG9t
YWluPUluamVjdGVkU2NyaXB0XSB2b2lkIGdldFByb3BlcnRpZXMoaW4gT2JqZWN0IG9iamVjdElk
LCBpbiBib29sZWFuIGlnbm9yZUhhc093blByb3BlcnR5LCBpbiBib29sZWFuIGFiYnJldmlhdGUs
IG91dCBWYWx1ZSByZXN1bHQpOwotICAgICAgICBbZG9tYWluPUluamVjdGVkU2NyaXB0XSB2b2lk
IHB1c2hOb2RlVG9Gcm9udGVuZChpbiBPYmplY3Qgb2JqZWN0SWQsIG91dCBWYWx1ZSByZXN1bHQp
OwotICAgICAgICBbZG9tYWluPUluamVjdGVkU2NyaXB0XSB2b2lkIHJlc29sdmVOb2RlKGluIGxv
bmcgbm9kZUlkLCBvdXQgVmFsdWUgcmVzdWx0KTsKLSAgICAgICAgW2RvbWFpbj1JbmplY3RlZFNj
cmlwdF0gdm9pZCBnZXROb2RlUHJvcGVydGllcyhpbiBsb25nIG5vZGVJZCwgaW4gQXJyYXkgcHJv
cGVydGllc0FycmF5LCBvdXQgVmFsdWUgcmVzdWx0KTsKLSAgICAgICAgW2RvbWFpbj1JbmplY3Rl
ZFNjcmlwdF0gdm9pZCBnZXROb2RlUHJvdG90eXBlcyhpbiBsb25nIG5vZGVJZCwgb3V0IFZhbHVl
IHJlc3VsdCk7Ci0gICAgICAgIFtkb21haW49SW5qZWN0ZWRTY3JpcHRdIHZvaWQgc2V0UHJvcGVy
dHlWYWx1ZShpbiBPYmplY3Qgb2JqZWN0SWQsIGluIFN0cmluZyBwcm9wZXJ0eU5hbWUsIGluIFN0
cmluZyBleHByZXNzaW9uLCBvdXQgVmFsdWUgcmVzdWx0KTsKIAogICAgICAgICAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwogICAgICAgICAvLyBDb25zb2xlIEFQSQpAQCAtMTkwLDYgKzE5MSw5IEBAIG1vZHVsZSBj
b3JlIHsKICAgICAgICAgW2RvbWFpbj1ET01dIHZvaWQgcGVyZm9ybVNlYXJjaChpbiBTdHJpbmcg
cXVlcnksIGluIGJvb2xlYW4gcnVuU3luY2hyb25vdXNseSk7CiAgICAgICAgIFtkb21haW49RE9N
XSB2b2lkIHNlYXJjaENhbmNlbGVkKCk7CiAgICAgICAgIFtkb21haW49RE9NXSB2b2lkIHB1c2hO
b2RlQnlQYXRoVG9Gcm9udGVuZChpbiBTdHJpbmcgcGF0aCwgb3V0IGxvbmcgbm9kZUlkKTsKKyAg
ICAgICAgW2RvbWFpbj1ET01dIHZvaWQgcmVzb2x2ZU5vZGUoaW4gbG9uZyBub2RlSWQsIG91dCBW
YWx1ZSByZXN1bHQpOworICAgICAgICBbZG9tYWluPURPTV0gdm9pZCBnZXROb2RlUHJvcGVydGll
cyhpbiBsb25nIG5vZGVJZCwgaW4gQXJyYXkgcHJvcGVydGllc0FycmF5LCBvdXQgVmFsdWUgcmVz
dWx0KTsKKyAgICAgICAgW2RvbWFpbj1ET01dIHZvaWQgZ2V0Tm9kZVByb3RvdHlwZXMoaW4gbG9u
ZyBub2RlSWQsIG91dCBWYWx1ZSByZXN1bHQpOwogCiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1E
T01dIHZvaWQgc2V0RG9jdW1lbnQob3V0IFZhbHVlIHJvb3QpOyAvLyBGSVhNRTogc2hvdWxkIGJl
IHJlcXVlc3RlZCBmcm9tIHRoZSBmcm9udC1lbmQgYXMgZ2V0RG9jdW1lbnQuCiAgICAgICAgIFtu
b3RpZnksIGRvbWFpbj1ET01dIHZvaWQgYXR0cmlidXRlc1VwZGF0ZWQob3V0IGxvbmcgaWQsIG91
dCBBcnJheSBhdHRyaWJ1dGVzKTsKQEAgLTI2NiwxMSArMjcwLDE0IEBAIG1vZHVsZSBjb3JlIHsK
ICAgICAgICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9pZCByZXN1bWUoKTsKICAgICAgICAgW25vdGlm
eSwgZG9tYWluPURlYnVnZ2VyXSB2b2lkIHJlc3VtZWRTY3JpcHQoKTsgLy8gRklYTUU6IE1ha2Ug
dGhpcyBvdXQgcGFyYW1ldGVyIGZvIHJlc3VtZSBpZiBwb3NzaWJsZS4KIAotICAgICAgICBbZG9t
YWluPURlYnVnZ2VyXSB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoaW4gbG9uZyBwYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlLCBvdXQgbG9uZyBuZXdTdGF0ZSk7Ci0KICAgICAgICAgW2RvbWFp
bj1EZWJ1Z2dlcl0gdm9pZCBlZGl0U2NyaXB0U291cmNlKGluIFN0cmluZyBzb3VyY2VJRCwgaW4g
U3RyaW5nIG5ld0NvbnRlbnQsIG91dCBib29sZWFuIHN1Y2Nlc3MsIG91dCBTdHJpbmcgcmVzdWx0
LCBvdXQgVmFsdWUgbmV3Q2FsbEZyYW1lcyk7CiAgICAgICAgIFtkb21haW49RGVidWdnZXJdIHZv
aWQgZ2V0U2NyaXB0U291cmNlKGluIFN0cmluZyBzb3VyY2VJRCwgb3V0IFN0cmluZyBzY3JpcHRT
b3VyY2UpOwogCisgICAgICAgIFtkb21haW49RGVidWdnZXJdIHZvaWQgc2V0UGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZShpbiBsb25nIHBhdXNlT25FeGNlcHRpb25zU3RhdGUsIG91dCBsb25nIG5ld1N0
YXRlKTsKKworICAgICAgICBbZG9tYWluPURlYnVnZ2VyXSB2b2lkIGV2YWx1YXRlT25DYWxsRnJh
bWUoaW4gT2JqZWN0IGNhbGxGcmFtZUlkLCBpbiBTdHJpbmcgZXhwcmVzc2lvbiwgaW4gU3RyaW5n
IG9iamVjdEdyb3VwLCBvdXQgVmFsdWUgcmVzdWx0KTsKKyAgICAgICAgW2RvbWFpbj1EZWJ1Z2dl
cl0gdm9pZCBnZXRDb21wbGV0aW9uc09uQ2FsbEZyYW1lKGluIE9iamVjdCBjYWxsRnJhbWVJZCwg
aW4gU3RyaW5nIGV4cHJlc3Npb24sIGluIGJvb2xlYW4gaW5jbHVkZUluc3BlY3RvckNvbW1hbmRM
aW5lQVBJLCBvdXQgVmFsdWUgcmVzdWx0KTsKKwogICAgICAgICBbbm90aWZ5LCBkb21haW49RGVi
dWdnZXJdIHZvaWQgYnJlYWtwb2ludFJlc29sdmVkKG91dCBTdHJpbmcgYnJlYWtwb2ludElkLCBv
dXQgU3RyaW5nIHNvdXJjZUlELCBvdXQgdW5zaWduZWQgaW50IGxpbmVOdW1iZXIsIG91dCBTdHJp
bmcgY29uZGl0aW9uLCBvdXQgYm9vbGVhbiBlbmFibGVkLCBvdXQgdW5zaWduZWQgaW50IG9yaWdp
bmFsTGluZU51bWJlcik7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9XT1JLRVJTKSAmJiBFTkFCTEVf
V09SS0VSUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCmluZGV4IDM4MGMwNTcuLjhiNmI2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTcwLDYgKzcwLDcgQEAKICNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQcm9m
aWxlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIgorI2luY2x1
ZGUgIkluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JUaW1l
bGluZUFnZW50LmgiCkBAIC0zODksOCArMzkwLDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
Ojpjb25uZWN0RnJvbnRlbmQoKQogICAgIG1fb3BlbmluZ0Zyb250ZW5kID0gZmFsc2U7CiAgICAg
cmVsZWFzZUZyb250ZW5kTGlmZXRpbWVBZ2VudHMoKTsKICAgICBtX2Zyb250ZW5kID0gbmV3IElu
c3BlY3RvckZyb250ZW5kKG1fY2xpZW50KTsKLSAgICBtX2RvbUFnZW50ID0gSW5zcGVjdG9yRE9N
QWdlbnQ6OmNyZWF0ZShtX2Zyb250ZW5kLmdldCgpKTsKKyAgICBtX2RvbUFnZW50ID0gSW5zcGVj
dG9yRE9NQWdlbnQ6OmNyZWF0ZShtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSwgbV9mcm9udGVu
ZC5nZXQoKSk7CiAgICAgbV9yZXNvdXJjZUFnZW50ID0gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
Y3JlYXRlKG1faW5zcGVjdGVkUGFnZSwgbV9mcm9udGVuZC5nZXQoKSk7CisgICAgbV9ydW50aW1l
QWdlbnQgPSBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmNyZWF0ZShtX2luamVjdGVkU2NyaXB0SG9z
dC5nZXQoKSk7CiAKICAgICBtX2Nzc0FnZW50LT5zZXRET01BZ2VudChtX2RvbUFnZW50LmdldCgp
KTsKIApAQCAtNTAwLDYgKzUwMiw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29u
bmVjdEZyb250ZW5kKCkKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVsZWFzZUZyb250ZW5k
TGlmZXRpbWVBZ2VudHMoKQogewogICAgIG1fcmVzb3VyY2VBZ2VudC5jbGVhcigpOworICAgIG1f
cnVudGltZUFnZW50LmNsZWFyKCk7CiAKICAgICAvLyBUaGlzIHNob3VsZCBiZSBpbnZva2VkIHBy
aW9yIHRvIG1fZG9tQWdlbnQgZGVzdHJ1Y3Rpb24uCiAgICAgbV9jc3NBZ2VudC0+c2V0RE9NQWdl
bnQoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aAppbmRleCA0MDUxMzljLi5hYjgzNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTcyLDYgKzcyLDcgQEAgY2xhc3MgSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JQ
cm9maWxlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDsKK2NsYXNzIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudDsKIGNsYXNzIEluc3BlY3RvclNldHRpbmdzOwogY2xhc3MgSW5zcGVj
dG9yU3RhdGU7CiBjbGFzcyBJbnNwZWN0b3JTdG9yYWdlQWdlbnQ7CkBAIC0zMTEsNiArMzEyLDcg
QEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxOb2RlPiBtX25vZGVUb0ZvY3VzOwogICAgIFJlZlB0
cjxJbnNwZWN0b3JSZXNvdXJjZUFnZW50PiBtX3Jlc291cmNlQWdlbnQ7CisgICAgT3duUHRyPElu
c3BlY3RvclJ1bnRpbWVBZ2VudD4gbV9ydW50aW1lQWdlbnQ7CiAKICNpZiBFTkFCTEUoREFUQUJB
U0UpCiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPEluc3BlY3RvckRhdGFiYXNlUmVz
b3VyY2U+ID4gRGF0YWJhc2VSZXNvdXJjZXNNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAxOWFlMzBkLi45MDYxNDliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTU5LDYg
KzU5LDcgQEAKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgorI2luY2x1ZGUgIkluamVjdGVk
U2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAi
TXV0YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKQEAgLTIwNiw4ICsyMDcsOSBAQCBw
dWJsaWM6CiAKIH0KIAotSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KEluc3Bl
Y3RvckZyb250ZW5kKiBmcm9udGVuZCkKK0luc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01B
Z2VudChJbmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0SG9zdCwgSW5zcGVjdG9yRnJv
bnRlbmQqIGZyb250ZW5kKQogICAgIDogRXZlbnRMaXN0ZW5lcihJbnNwZWN0b3JET01BZ2VudFR5
cGUpCisgICAgLCBtX2luamVjdGVkU2NyaXB0SG9zdChpbmplY3RlZFNjcmlwdEhvc3QpCiAgICAg
LCBtX2Zyb250ZW5kKGZyb250ZW5kKQogICAgICwgbV9kb21MaXN0ZW5lcigwKQogICAgICwgbV9s
YXN0Tm9kZUlkKDEpCkBAIC03NTgsNiArNzYwLDI3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OnNlYXJjaENhbmNlbGVkKCkKICAgICBtX3NlYXJjaFJlc3VsdHMuY2xlYXIoKTsKIH0KIAordm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUobG9uZyBub2RlSWQsIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IGluamVjdGVkU2NyaXB0Rm9yTm9kZUlkKG5vZGVJZCk7CisgICAgaWYgKCFpbmplY3RlZFNj
cmlwdC5oYXNOb1ZhbHVlKCkpCisgICAgICAgIGluamVjdGVkU2NyaXB0LnJlc29sdmVOb2RlKG5v
ZGVJZCwgcmVzdWx0KTsKK30KKwordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0Tm9kZVByb3Bl
cnRpZXMobG9uZyBub2RlSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHByb3BlcnRpZXNB
cnJheSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQoreworICAgIEluamVjdGVkU2Ny
aXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JOb2RlSWQobm9kZUlkKTsKKyAg
ICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAgICAgaW5qZWN0ZWRTY3Jp
cHQuZ2V0Tm9kZVByb3BlcnRpZXMobm9kZUlkLCBwcm9wZXJ0aWVzQXJyYXksIHJlc3VsdCk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldE5vZGVQcm90b3R5cGVzKGxvbmcgbm9kZUlk
LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit7CisgICAgSW5qZWN0ZWRTY3JpcHQg
aW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvck5vZGVJZChub2RlSWQpOworICAgIGlm
ICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5n
ZXROb2RlUHJvdG90eXBlcyhub2RlSWQsIHJlc3VsdCk7Cit9CisKIFN0cmluZyBJbnNwZWN0b3JE
T01BZ2VudDo6ZG9jdW1lbnRVUkxTdHJpbmcoRG9jdW1lbnQqIGRvY3VtZW50KSBjb25zdAogewog
ICAgIGlmICghZG9jdW1lbnQgfHwgZG9jdW1lbnQtPnVybCgpLmlzTnVsbCgpKQpAQCAtMTExMiw2
ICsxMTM1LDI2IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlQnlQYXRoVG9Gcm9u
dGVuZChjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcqIG5vZGVJCiAgICAgICAgICpub2RlSWQgPSBw
dXNoTm9kZVBhdGhUb0Zyb250ZW5kKG5vZGUpOwogfQogCitJbmplY3RlZFNjcmlwdCBJbnNwZWN0
b3JET01BZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JOb2RlSWQobG9uZyBub2RlSWQpCit7CisgICAg
RnJhbWUqIGZyYW1lID0gMDsKKyAgICBpZiAobm9kZUlkKSB7CisgICAgICAgIE5vZGUqIG5vZGUg
PSBub2RlRm9ySWQobm9kZUlkKTsKKyAgICAgICAgaWYgKG5vZGUpIHsKKyAgICAgICAgICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IG5vZGUtPm93bmVyRG9jdW1lbnQoKTsKKyAgICAgICAgICAgIGlm
IChkb2N1bWVudCkKKyAgICAgICAgICAgICAgICBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwor
ICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIGZyYW1lID0gbWFpbkZyYW1lRG9jdW1lbnQo
KS0+ZnJhbWUoKTsKKworICAgIGlmIChmcmFtZSkKKyAgICAgICAgcmV0dXJuIG1faW5qZWN0ZWRT
Y3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvcihtYWluV29ybGRTY3JpcHRTdGF0ZShmcmFtZSkp
OworCisgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggOTcxNzVmZS4uNzg4MTNiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTMyLDYg
KzMyLDggQEAKIAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudFRh
cmdldC5oIgorI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRT
Y3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiTm9k
ZUxpc3QuaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtNDUsMTY0ICs0NywxNjggQEAKICNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAg
IGNsYXNzIENvbnRhaW5lck5vZGU7Ci0gICAgY2xhc3MgQ1NTUnVsZTsKLSAgICBjbGFzcyBDU1NS
dWxlTGlzdDsKLSAgICBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwotICAgIGNsYXNzIENTU1N0
eWxlUnVsZTsKLSAgICBjbGFzcyBDU1NTdHlsZVNoZWV0OwotICAgIGNsYXNzIENoYXJhY3RlckRh
dGE7Ci0gICAgY2xhc3MgRG9jdW1lbnQ7Ci0gICAgY2xhc3MgRWxlbWVudDsKLSAgICBjbGFzcyBF
dmVudDsKLSAgICBjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKLSAgICBjbGFzcyBJbnNwZWN0b3JG
cm9udGVuZDsKLSAgICBjbGFzcyBNYXRjaEpvYjsKLSAgICBjbGFzcyBOYW1lTm9kZU1hcDsKLSAg
ICBjbGFzcyBOb2RlOwotICAgIGNsYXNzIFBhZ2U7CitjbGFzcyBDb250YWluZXJOb2RlOworY2xh
c3MgQ1NTUnVsZTsKK2NsYXNzIENTU1J1bGVMaXN0OworY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlv
bjsKK2NsYXNzIENTU1N0eWxlUnVsZTsKK2NsYXNzIENTU1N0eWxlU2hlZXQ7CitjbGFzcyBDaGFy
YWN0ZXJEYXRhOworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBFbGVtZW50OworY2xhc3MgRXZlbnQ7
CitjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kOworY2xh
c3MgTWF0Y2hKb2I7CitjbGFzcyBOYW1lTm9kZU1hcDsKK2NsYXNzIE5vZGU7CitjbGFzcyBQYWdl
OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotICAgIHN0cnVjdCBFdmVudExpc3RlbmVySW5m
byB7Ci0gICAgICAgIEV2ZW50TGlzdGVuZXJJbmZvKE5vZGUqIG5vZGUsIGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBjb25zdCBFdmVudExpc3RlbmVyVmVjdG9yJiBldmVudExpc3RlbmVy
VmVjdG9yKQotICAgICAgICAgICAgOiBub2RlKG5vZGUpCi0gICAgICAgICAgICAsIGV2ZW50VHlw
ZShldmVudFR5cGUpCi0gICAgICAgICAgICAsIGV2ZW50TGlzdGVuZXJWZWN0b3IoZXZlbnRMaXN0
ZW5lclZlY3RvcikKK3N0cnVjdCBFdmVudExpc3RlbmVySW5mbyB7CisgICAgRXZlbnRMaXN0ZW5l
ckluZm8oTm9kZSogbm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEV2
ZW50TGlzdGVuZXJWZWN0b3ImIGV2ZW50TGlzdGVuZXJWZWN0b3IpCisgICAgICAgIDogbm9kZShu
b2RlKQorICAgICAgICAsIGV2ZW50VHlwZShldmVudFR5cGUpCisgICAgICAgICwgZXZlbnRMaXN0
ZW5lclZlY3RvcihldmVudExpc3RlbmVyVmVjdG9yKQorICAgIHsKKyAgICB9CisKKyAgICBOb2Rl
KiBub2RlOworICAgIGNvbnN0IEF0b21pY1N0cmluZyBldmVudFR5cGU7CisgICAgY29uc3QgRXZl
bnRMaXN0ZW5lclZlY3RvciBldmVudExpc3RlbmVyVmVjdG9yOworfTsKKworY2xhc3MgSW5zcGVj
dG9yRE9NQWdlbnQgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CitwdWJsaWM6CisgICAgc3RydWN0
IERPTUxpc3RlbmVyIHsKKyAgICAgICAgdmlydHVhbCB+RE9NTGlzdGVuZXIoKQogICAgICAgICB7
CiAgICAgICAgIH0KLQotICAgICAgICBOb2RlKiBub2RlOwotICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcgZXZlbnRUeXBlOwotICAgICAgICBjb25zdCBFdmVudExpc3RlbmVyVmVjdG9yIGV2ZW50
TGlzdGVuZXJWZWN0b3I7Ci0gICAgfTsKLQotICAgIGNsYXNzIEluc3BlY3RvckRPTUFnZW50IDog
cHVibGljIEV2ZW50TGlzdGVuZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RydWN0IERPTUxp
c3RlbmVyIHsKLSAgICAgICAgICAgIHZpcnR1YWwgfkRPTUxpc3RlbmVyKCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVEb2N1
bWVudChEb2N1bWVudCopID0gMDsKLSAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVE
T01Ob2RlKE5vZGUqKSA9IDA7Ci0gICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkTW9kaWZ5RE9N
QXR0cihFbGVtZW50KikgPSAwOwotICAgICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEluc3BlY3RvckRPTUFnZW50PiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5k
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3RvckRP
TUFnZW50KGZyb250ZW5kKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgY29uc3QgSW5z
cGVjdG9yRE9NQWdlbnQqIGNhc3QoY29uc3QgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lci0+dHlwZSgpID09IEluc3BlY3RvckRP
TUFnZW50VHlwZQotICAgICAgICAgICAgICAgID8gc3RhdGljX2Nhc3Q8Y29uc3QgSW5zcGVjdG9y
RE9NQWdlbnQqPihsaXN0ZW5lcikKLSAgICAgICAgICAgICAgICA6IDA7Ci0gICAgICAgIH0KLQot
ICAgICAgICBJbnNwZWN0b3JET01BZ2VudChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpOwot
ICAgICAgICB+SW5zcGVjdG9yRE9NQWdlbnQoKTsKLQotICAgICAgICB2b2lkIHJlc2V0KCk7Ci0K
LSAgICAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpOwotCi0gICAgICAgIC8vIE1ldGhvZHMgY2FsbGVkIGZyb20gdGhlIGZyb250ZW5kIGZvciBE
T00gbm9kZXMgaW5zcGVjdGlvbi4KLSAgICAgICAgdm9pZCBnZXRDaGlsZE5vZGVzKGxvbmcgbm9k
ZUlkKTsKLSAgICAgICAgdm9pZCBzZXRBdHRyaWJ1dGUobG9uZyBlbGVtZW50SWQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCogc3VjY2Vzcyk7Ci0gICAgICAg
IHZvaWQgcmVtb3ZlQXR0cmlidXRlKGxvbmcgZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGJvb2wqIHN1Y2Nlc3MpOwotICAgICAgICB2b2lkIHJlbW92ZU5vZGUobG9uZyBub2RlSWQsIGxv
bmcqIG91dE5vZGVJZCk7Ci0gICAgICAgIHZvaWQgY2hhbmdlVGFnTmFtZShsb25nIG5vZGVJZCwg
Y29uc3QgU3RyaW5nJiB0YWdOYW1lLCBsb25nKiBuZXdJZCk7Ci0gICAgICAgIHZvaWQgZ2V0T3V0
ZXJIVE1MKGxvbmcgbm9kZUlkLCBXVEY6OlN0cmluZyogb3V0ZXJIVE1MKTsKLSAgICAgICAgdm9p
ZCBzZXRPdXRlckhUTUwobG9uZyBub2RlSWQsIGNvbnN0IFN0cmluZyYgb3V0ZXJIVE1MLCBsb25n
KiBuZXdJZCk7Ci0gICAgICAgIHZvaWQgc2V0VGV4dE5vZGVWYWx1ZShsb25nIG5vZGVJZCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCogc3VjY2Vzcyk7Ci0gICAgICAgIHZvaWQgZ2V0RXZlbnRM
aXN0ZW5lcnNGb3JOb2RlKGxvbmcgbm9kZUlkLCBsb25nKiBvdXROb2RlSWQsIFJlZlB0cjxJbnNw
ZWN0b3JBcnJheT4qIGxpc3RlbmVyc0FycmF5KTsKLSAgICAgICAgdm9pZCBhZGRJbnNwZWN0ZWRO
b2RlKGxvbmcgbm9kZUlkKTsKLSAgICAgICAgdm9pZCBwZXJmb3JtU2VhcmNoKGNvbnN0IFN0cmlu
ZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgYm9vbCBydW5TeW5jaHJvbm91c2x5KTsKLSAgICAg
ICAgdm9pZCBzZWFyY2hDYW5jZWxlZCgpOwotICAgICAgICBib29sIHNob3VsZEJyZWFrT25Ob2Rl
SW5zZXJ0aW9uKE5vZGUqIG5vZGUsIE5vZGUqIHBhcmVudCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGRldGFpbHMpOwotICAgICAgICBib29sIHNob3VsZEJyZWFrT25Ob2RlUmVtb3ZhbChO
b2RlKiBub2RlLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGV0YWlscyk7Ci0gICAgICAg
IGJvb2wgc2hvdWxkQnJlYWtPbkF0dHJpYnV0ZU1vZGlmaWNhdGlvbihFbGVtZW50KiBlbGVtZW50
LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGV0YWlscyk7Ci0KLSAgICAgICAgLy8gTWV0
aG9kcyBjYWxsZWQgZnJvbSB0aGUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLgotICAgICAgICB2
b2lkIHNldERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCk7Ci0gICAgICAgIHZvaWQgcmVsZWFz
ZURhbmdsaW5nTm9kZXMoKTsKLQotICAgICAgICB2b2lkIGRpZEluc2VydERPTU5vZGUoTm9kZSop
OwotICAgICAgICB2b2lkIGRpZFJlbW92ZURPTU5vZGUoTm9kZSopOwotICAgICAgICB2b2lkIGRp
ZE1vZGlmeURPTUF0dHIoRWxlbWVudCopOwotICAgICAgICB2b2lkIGNoYXJhY3RlckRhdGFNb2Rp
ZmllZChDaGFyYWN0ZXJEYXRhKik7Ci0KLSAgICAgICAgTm9kZSogbm9kZUZvcklkKGxvbmcgbm9k
ZUlkKTsKLSAgICAgICAgbG9uZyBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqIG5vZGUpOwot
ICAgICAgICB2b2lkIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChsb25nIG5vZGVJZCk7Ci0gICAg
ICAgIHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9u
Zyogbm9kZUlkKTsKLSAgICAgICAgbG9uZyBpbnNwZWN0ZWROb2RlKHVuc2lnbmVkIGxvbmcgbnVt
KTsKLSAgICAgICAgdm9pZCBjb3B5Tm9kZShsb25nIG5vZGVJZCk7Ci0gICAgICAgIGNvbnN0IExp
c3RIYXNoU2V0PFJlZlB0cjxEb2N1bWVudD4gPiYgZG9jdW1lbnRzKCkgeyByZXR1cm4gbV9kb2N1
bWVudHM7IH0KLSAgICAgICAgdm9pZCBzZXRET01MaXN0ZW5lcihET01MaXN0ZW5lciopOwotCi0g
ICAgICAgIFN0cmluZyBkb2N1bWVudFVSTFN0cmluZyhEb2N1bWVudCogZG9jdW1lbnQpIGNvbnN0
OwotCi0gICAgICAgIC8vIFdlIHJlcHJlc2VudCBlbWJlZGRlZCBkb21zIGFzIGEgcGFydCBvZiB0
aGUgc2FtZSBoaWVyYXJjaHkuIEhlbmNlIHdlIHRyZWF0IGNoaWxkcmVuIG9mIGZyYW1lIG93bmVy
cyBkaWZmZXJlbnRseS4KLSAgICAgICAgLy8gV2UgYWxzbyBza2lwIHdoaXRlc3BhY2UgdGV4dCBu
b2RlcyBjb25kaXRpb25hbGx5LiBGb2xsb3dpbmcgbWV0aG9kcyBlbmNhcHN1bGF0ZSB0aGVzZSBz
cGVjaWZpY3MuCi0gICAgICAgIHN0YXRpYyBOb2RlKiBpbm5lckZpcnN0Q2hpbGQoTm9kZSopOwot
ICAgICAgICBzdGF0aWMgTm9kZSogaW5uZXJOZXh0U2libGluZyhOb2RlKik7Ci0gICAgICAgIHN0
YXRpYyBOb2RlKiBpbm5lclByZXZpb3VzU2libGluZyhOb2RlKik7Ci0gICAgICAgIHN0YXRpYyB1
bnNpZ25lZCBpbm5lckNoaWxkTm9kZUNvdW50KE5vZGUqKTsKLSAgICAgICAgc3RhdGljIE5vZGUq
IGlubmVyUGFyZW50Tm9kZShOb2RlKik7Ci0gICAgICAgIHN0YXRpYyBib29sIGlzV2hpdGVzcGFj
ZShOb2RlKik7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHN0YXJ0TGlzdGVuaW5nRnJh
bWVEb2N1bWVudChOb2RlKiBmcmFtZU93bmVyTm9kZSk7Ci0gICAgICAgIHZvaWQgc3RhcnRMaXN0
ZW5pbmcoRG9jdW1lbnQqIGRvY3VtZW50KTsKLSAgICAgICAgdm9pZCBzdG9wTGlzdGVuaW5nKERv
Y3VtZW50KiBkb2N1bWVudCk7Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCogZXZlbnQpOwotCi0gICAgICAgIC8vIE5vZGUt
cmVsYXRlZCBtZXRob2RzLgotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBs
b25nPiBOb2RlVG9JZE1hcDsKLSAgICAgICAgbG9uZyBiaW5kKE5vZGUqIG5vZGUsIE5vZGVUb0lk
TWFwKiBub2Rlc01hcCk7Ci0gICAgICAgIHZvaWQgdW5iaW5kKE5vZGUqIG5vZGUsIE5vZGVUb0lk
TWFwKiBub2Rlc01hcCk7Ci0KLSAgICAgICAgYm9vbCBwdXNoRG9jdW1lbnRUb0Zyb250ZW5kKCk7
Ci0KLSAgICAgICAgYm9vbCBoYXNCcmVha3BvaW50KE5vZGUqIG5vZGUsIGxvbmcgdHlwZSk7Ci0g
ICAgICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUqIHJvb3QsIHVpbnQzMl90
IHJvb3RNYXNrLCBib29sIHZhbHVlKTsKLSAgICAgICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2
ZW50KE5vZGUqIHRhcmdldCwgbG9uZyBicmVha3BvaW50VHlwZSwgYm9vbCBpbnNlcnRpb24sIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkZXNjcmlwdGlvbik7Ci0KLSAgICAgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbnQg
ZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7Ci0gICAgICAgIFBhc3NSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGVtZW50KiBlbGVtZW50
KTsKLSAgICAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYnVpbGRBcnJheUZvckNvbnRh
aW5lckNoaWxkcmVuKE5vZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9k
ZXNNYXApOwotICAgICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RG
b3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lciwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIG5vZGUp
OwotCi0gICAgICAgIERvY3VtZW50KiBtYWluRnJhbWVEb2N1bWVudCgpIGNvbnN0OwotCi0gICAg
ICAgIHZvaWQgb25NYXRjaEpvYnNUaW1lcihUaW1lcjxJbnNwZWN0b3JET01BZ2VudD4qKTsKLSAg
ICAgICAgdm9pZCByZXBvcnROb2Rlc0FzU2VhcmNoUmVzdWx0cyhMaXN0SGFzaFNldDxOb2RlKj4m
IHJlc3VsdENvbGxlY3Rvcik7Ci0KLSAgICAgICAgTm9kZSogbm9kZUZvclBhdGgoY29uc3QgU3Ry
aW5nJiBwYXRoKTsKLSAgICAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gdG9BcnJheShj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZGF0YSk7Ci0KLSAgICAgICAgdm9pZCBkaXNjYXJkQmluZGlu
Z3MoKTsKLQotICAgICAgICBJbnNwZWN0b3JGcm9udGVuZCogbV9mcm9udGVuZDsKLSAgICAgICAg
RE9NTGlzdGVuZXIqIG1fZG9tTGlzdGVuZXI7Ci0gICAgICAgIE5vZGVUb0lkTWFwIG1fZG9jdW1l
bnROb2RlVG9JZE1hcDsKLSAgICAgICAgLy8gT3ducyBub2RlIG1hcHBpbmdzIGZvciBkYW5nbGlu
ZyBub2Rlcy4KLSAgICAgICAgVmVjdG9yPE5vZGVUb0lkTWFwKj4gbV9kYW5nbGluZ05vZGVUb0lk
TWFwczsKLSAgICAgICAgSGFzaE1hcDxsb25nLCBOb2RlKj4gbV9pZFRvTm9kZTsKLSAgICAgICAg
SGFzaE1hcDxsb25nLCBOb2RlVG9JZE1hcCo+IG1faWRUb05vZGVzTWFwOwotICAgICAgICBIYXNo
U2V0PGxvbmc+IG1fY2hpbGRyZW5SZXF1ZXN0ZWQ7Ci0gICAgICAgIGxvbmcgbV9sYXN0Tm9kZUlk
OwotICAgICAgICBMaXN0SGFzaFNldDxSZWZQdHI8RG9jdW1lbnQ+ID4gbV9kb2N1bWVudHM7Ci0g
ICAgICAgIERlcXVlPE1hdGNoSm9iKj4gbV9wZW5kaW5nTWF0Y2hKb2JzOwotICAgICAgICBUaW1l
cjxJbnNwZWN0b3JET01BZ2VudD4gbV9tYXRjaEpvYnNUaW1lcjsKLSAgICAgICAgSGFzaFNldDxS
ZWZQdHI8Tm9kZT4gPiBtX3NlYXJjaFJlc3VsdHM7Ci0gICAgICAgIFZlY3Rvcjxsb25nPiBtX2lu
c3BlY3RlZE5vZGVzOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlRG9jdW1lbnQoRG9j
dW1lbnQqKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUq
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqKSA9
IDA7CiAgICAgfTsKIAotI2VuZGlmCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yRE9N
QWdlbnQ+IGNyZWF0ZShJbmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0SG9zdCwgSW5z
cGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJbnNwZWN0b3JET01BZ2VudChpbmplY3RlZFNjcmlwdEhvc3QsIGZyb250ZW5kKSk7Cisg
ICAgfQorCisgICAgc3RhdGljIGNvbnN0IEluc3BlY3RvckRPTUFnZW50KiBjYXN0KGNvbnN0IEV2
ZW50TGlzdGVuZXIqIGxpc3RlbmVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGxpc3RlbmVyLT50
eXBlKCkgPT0gSW5zcGVjdG9yRE9NQWdlbnRUeXBlCisgICAgICAgICAgICA/IHN0YXRpY19jYXN0
PGNvbnN0IEluc3BlY3RvckRPTUFnZW50Kj4obGlzdGVuZXIpCisgICAgICAgICAgICA6IDA7Cisg
ICAgfQorCisgICAgSW5zcGVjdG9yRE9NQWdlbnQoSW5qZWN0ZWRTY3JpcHRIb3N0KiBpbmplY3Rl
ZFNjcmlwdEhvc3QsIEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCk7CisgICAgfkluc3BlY3Rv
ckRPTUFnZW50KCk7CisKKyAgICB2b2lkIHJlc2V0KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcik7CisKKyAgICAvLyBNZXRob2RzIGNh
bGxlZCBmcm9tIHRoZSBmcm9udGVuZCBmb3IgRE9NIG5vZGVzIGluc3BlY3Rpb24uCisgICAgdm9p
ZCBnZXRDaGlsZE5vZGVzKGxvbmcgbm9kZUlkKTsKKyAgICB2b2lkIHNldEF0dHJpYnV0ZShsb25n
IGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29s
KiBzdWNjZXNzKTsKKyAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShsb25nIGVsZW1lbnRJZCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBib29sKiBzdWNjZXNzKTsKKyAgICB2b2lkIHJlbW92ZU5vZGUobG9u
ZyBub2RlSWQsIGxvbmcqIG91dE5vZGVJZCk7CisgICAgdm9pZCBjaGFuZ2VUYWdOYW1lKGxvbmcg
bm9kZUlkLCBjb25zdCBTdHJpbmcmIHRhZ05hbWUsIGxvbmcqIG5ld0lkKTsKKyAgICB2b2lkIGdl
dE91dGVySFRNTChsb25nIG5vZGVJZCwgV1RGOjpTdHJpbmcqIG91dGVySFRNTCk7CisgICAgdm9p
ZCBzZXRPdXRlckhUTUwobG9uZyBub2RlSWQsIGNvbnN0IFN0cmluZyYgb3V0ZXJIVE1MLCBsb25n
KiBuZXdJZCk7CisgICAgdm9pZCBzZXRUZXh0Tm9kZVZhbHVlKGxvbmcgbm9kZUlkLCBjb25zdCBT
dHJpbmcmIHZhbHVlLCBib29sKiBzdWNjZXNzKTsKKyAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJz
Rm9yTm9kZShsb25nIG5vZGVJZCwgbG9uZyogb3V0Tm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+KiBsaXN0ZW5lcnNBcnJheSk7CisgICAgdm9pZCBhZGRJbnNwZWN0ZWROb2RlKGxvbmcgbm9k
ZUlkKTsKKyAgICB2b2lkIHBlcmZvcm1TZWFyY2goY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJp
bW1lZFF1ZXJ5LCBib29sIHJ1blN5bmNocm9ub3VzbHkpOworICAgIHZvaWQgc2VhcmNoQ2FuY2Vs
ZWQoKTsKKyAgICB2b2lkIHJlc29sdmVOb2RlKGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+KiByZXN1bHQpOworICAgIHZvaWQgZ2V0Tm9kZVByb3BlcnRpZXMobG9uZyBub2RlSWQs
IFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHByb3BlcnRpZXNBcnJheSwgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIGdldE5vZGVQcm90b3R5cGVzKGxvbmcgbm9k
ZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOworCisKKyAgICAvLyBNZXRob2Rz
IGNhbGxlZCBmcm9tIHRoZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uCisgICAgdm9pZCBzZXRE
b2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpOworICAgIHZvaWQgcmVsZWFzZURhbmdsaW5nTm9k
ZXMoKTsKKworICAgIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZShOb2RlKik7CisgICAgdm9pZCBkaWRS
ZW1vdmVET01Ob2RlKE5vZGUqKTsKKyAgICB2b2lkIGRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCop
OworICAgIHZvaWQgY2hhcmFjdGVyRGF0YU1vZGlmaWVkKENoYXJhY3RlckRhdGEqKTsKKworICAg
IE5vZGUqIG5vZGVGb3JJZChsb25nIG5vZGVJZCk7CisgICAgbG9uZyBwdXNoTm9kZVBhdGhUb0Zy
b250ZW5kKE5vZGUqIG5vZGUpOworICAgIHZvaWQgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGxv
bmcgbm9kZUlkKTsKKyAgICB2b2lkIHB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChjb25zdCBTdHJp
bmcmIHBhdGgsIGxvbmcqIG5vZGVJZCk7CisgICAgbG9uZyBpbnNwZWN0ZWROb2RlKHVuc2lnbmVk
IGxvbmcgbnVtKTsKKyAgICB2b2lkIGNvcHlOb2RlKGxvbmcgbm9kZUlkKTsKKyAgICBjb25zdCBM
aXN0SGFzaFNldDxSZWZQdHI8RG9jdW1lbnQ+ID4mIGRvY3VtZW50cygpIHsgcmV0dXJuIG1fZG9j
dW1lbnRzOyB9CisgICAgdm9pZCBzZXRET01MaXN0ZW5lcihET01MaXN0ZW5lciopOworCisgICAg
U3RyaW5nIGRvY3VtZW50VVJMU3RyaW5nKERvY3VtZW50KiBkb2N1bWVudCkgY29uc3Q7CisKKyAg
ICAvLyBXZSByZXByZXNlbnQgZW1iZWRkZWQgZG9tcyBhcyBhIHBhcnQgb2YgdGhlIHNhbWUgaGll
cmFyY2h5LiBIZW5jZSB3ZSB0cmVhdCBjaGlsZHJlbiBvZiBmcmFtZSBvd25lcnMgZGlmZmVyZW50
bHkuCisgICAgLy8gV2UgYWxzbyBza2lwIHdoaXRlc3BhY2UgdGV4dCBub2RlcyBjb25kaXRpb25h
bGx5LiBGb2xsb3dpbmcgbWV0aG9kcyBlbmNhcHN1bGF0ZSB0aGVzZSBzcGVjaWZpY3MuCisgICAg
c3RhdGljIE5vZGUqIGlubmVyRmlyc3RDaGlsZChOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIGlu
bmVyTmV4dFNpYmxpbmcoTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiBpbm5lclByZXZpb3VzU2li
bGluZyhOb2RlKik7CisgICAgc3RhdGljIHVuc2lnbmVkIGlubmVyQ2hpbGROb2RlQ291bnQoTm9k
ZSopOworICAgIHN0YXRpYyBOb2RlKiBpbm5lclBhcmVudE5vZGUoTm9kZSopOworICAgIHN0YXRp
YyBib29sIGlzV2hpdGVzcGFjZShOb2RlKik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzdGFydExp
c3RlbmluZ0ZyYW1lRG9jdW1lbnQoTm9kZSogZnJhbWVPd25lck5vZGUpOworICAgIHZvaWQgc3Rh
cnRMaXN0ZW5pbmcoRG9jdW1lbnQqIGRvY3VtZW50KTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmco
RG9jdW1lbnQqIGRvY3VtZW50KTsKKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KTsKKworICAgIC8vIE5vZGUtcmVsYXRl
ZCBtZXRob2RzLgorICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIGxvbmc+IE5vZGVU
b0lkTWFwOworICAgIGxvbmcgYmluZChOb2RlKiBub2RlLCBOb2RlVG9JZE1hcCogbm9kZXNNYXAp
OworICAgIHZvaWQgdW5iaW5kKE5vZGUqIG5vZGUsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7CisK
KyAgICBib29sIHB1c2hEb2N1bWVudFRvRnJvbnRlbmQoKTsKKworICAgIGJvb2wgaGFzQnJlYWtw
b2ludChOb2RlKiBub2RlLCBsb25nIHR5cGUpOworICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFr
cG9pbnRzKE5vZGUqIHJvb3QsIHVpbnQzMl90IHJvb3RNYXNrLCBib29sIHZhbHVlKTsKKyAgICB2
b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBsb25nIGJyZWFrcG9pbnRU
eXBlLCBib29sIGluc2VydGlvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRlc2NyaXB0
aW9uKTsKKworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvck5v
ZGUoTm9kZSogbm9kZSwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOworICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhF
bGVtZW50KiBlbGVtZW50KTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZEFy
cmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVU
b0lkTWFwKiBub2Rlc01hcCk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxk
T2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgcmVn
aXN0ZXJlZEV2ZW50TGlzdGVuZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBOb2Rl
KiBub2RlKTsKKworICAgIERvY3VtZW50KiBtYWluRnJhbWVEb2N1bWVudCgpIGNvbnN0OworCisg
ICAgdm9pZCBvbk1hdGNoSm9ic1RpbWVyKFRpbWVyPEluc3BlY3RvckRPTUFnZW50PiopOworICAg
IHZvaWQgcmVwb3J0Tm9kZXNBc1NlYXJjaFJlc3VsdHMoTGlzdEhhc2hTZXQ8Tm9kZSo+JiByZXN1
bHRDb2xsZWN0b3IpOworCisgICAgTm9kZSogbm9kZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRo
KTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiB0b0FycmF5KGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkYXRhKTsKKworICAgIHZvaWQgZGlzY2FyZEJpbmRpbmdzKCk7CisKKyAgICBJbmpl
Y3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvck5vZGVJZChsb25nIG5vZGVJZCk7CisKKyAgICBJ
bmplY3RlZFNjcmlwdEhvc3QqIG1faW5qZWN0ZWRTY3JpcHRIb3N0OworICAgIEluc3BlY3RvckZy
b250ZW5kKiBtX2Zyb250ZW5kOworICAgIERPTUxpc3RlbmVyKiBtX2RvbUxpc3RlbmVyOworICAg
IE5vZGVUb0lkTWFwIG1fZG9jdW1lbnROb2RlVG9JZE1hcDsKKyAgICAvLyBPd25zIG5vZGUgbWFw
cGluZ3MgZm9yIGRhbmdsaW5nIG5vZGVzLgorICAgIFZlY3RvcjxOb2RlVG9JZE1hcCo+IG1fZGFu
Z2xpbmdOb2RlVG9JZE1hcHM7CisgICAgSGFzaE1hcDxsb25nLCBOb2RlKj4gbV9pZFRvTm9kZTsK
KyAgICBIYXNoTWFwPGxvbmcsIE5vZGVUb0lkTWFwKj4gbV9pZFRvTm9kZXNNYXA7CisgICAgSGFz
aFNldDxsb25nPiBtX2NoaWxkcmVuUmVxdWVzdGVkOworICAgIGxvbmcgbV9sYXN0Tm9kZUlkOwor
ICAgIExpc3RIYXNoU2V0PFJlZlB0cjxEb2N1bWVudD4gPiBtX2RvY3VtZW50czsKKyAgICBEZXF1
ZTxNYXRjaEpvYio+IG1fcGVuZGluZ01hdGNoSm9iczsKKyAgICBUaW1lcjxJbnNwZWN0b3JET01B
Z2VudD4gbV9tYXRjaEpvYnNUaW1lcjsKKyAgICBIYXNoU2V0PFJlZlB0cjxOb2RlPiA+IG1fc2Vh
cmNoUmVzdWx0czsKKyAgICBWZWN0b3I8bG9uZz4gbV9pbnNwZWN0ZWROb2RlczsKK307CisKKyNl
bmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cAppbmRleCA1NzUxMzYzLi4wMWExODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xNzMsNiArMTczLDIwIEBAIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShsb25n
IHBhdXNlU3RhdGUsIGxvbmcqIG5lCiAgICAgKm5ld1N0YXRlID0gU2NyaXB0RGVidWdTZXJ2ZXI6
OnNoYXJlZCgpLnBhdXNlT25FeGNlcHRpb25zU3RhdGUoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcm
IG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit7CisgICAgSW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvckNhbGxGcmFtZUlk
KGNhbGxGcmFtZUlkLmdldCgpKTsKKyAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUo
KSkKKyAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGVPbkNhbGxGcmFtZShjYWxsRnJhbWVJ
ZCwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIHJlc3VsdCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6Z2V0Q29tcGxldGlvbnNPbkNhbGxGcmFtZShQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgYm9vbCBp
bmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJl
c3VsdCkKK3sKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2Ny
aXB0Rm9yQ2FsbEZyYW1lSWQoY2FsbEZyYW1lSWQuZ2V0KCkpOworICAgIGlmICghaW5qZWN0ZWRT
Y3JpcHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5nZXRDb21wbGV0aW9u
c09uQ2FsbEZyYW1lKGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBpbmNsdWRlSW5zcGVjdG9yQ29t
bWFuZExpbmVBUEksIHJlc3VsdCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
Y2xlYXJGb3JQYWdlTmF2aWdhdGlvbigpCiB7CiAgICAgbV9zY3JpcHRJRFRvQ29udGVudC5jbGVh
cigpOwpAQCAtMjUzLDYgKzI2NywxNSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJy
ZWFrUHJvZ3JhbShEZWJ1Z2dlckV2ZW50VHlwZSB0eXBlLCBQYXNzUmVmUHRyPElucwogICAgIFNj
cmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5icmVha1Byb2dyYW0oKTsKIH0KIAorSW5qZWN0ZWRT
Y3JpcHQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JDYWxsRnJhbWVJ
ZChJbnNwZWN0b3JPYmplY3QqIGNhbGxGcmFtZUlkKQoreworICAgIGxvbmcgaW5qZWN0ZWRTY3Jp
cHRJZCA9IDA7CisgICAgYm9vbCBzdWNjZXNzID0gY2FsbEZyYW1lSWQtPmdldE51bWJlcigiaW5q
ZWN0ZWRTY3JpcHRJZCIsICZpbmplY3RlZFNjcmlwdElkKTsKKyAgICBpZiAoc3VjY2VzcykKKyAg
ICAgICAgcmV0dXJuIG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCkt
PmluamVjdGVkU2NyaXB0Rm9ySWQoaW5qZWN0ZWRTY3JpcHRJZCk7CisgICAgcmV0dXJuIEluamVj
dGVkU2NyaXB0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggMGE2
ZmQzYi4uNWU1NjZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5oCkBAIC0zMSw2ICszMSw3IEBACiAjZGVmaW5lIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnRfaAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJM
RShJTlNQRUNUT1IpCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJTY3Jp
cHREZWJ1Z0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgpAQCAtNTksMTUgKzYwLDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBi
b29sIGlzRGVidWdnZXJBbHdheXNFbmFibGVkKCk7CiAKKyAgICAvLyBQYXJ0IG9mIHRoZSBwcm90
b2NvbC4KICAgICB2b2lkIGFjdGl2YXRlQnJlYWtwb2ludHMoKTsKICAgICB2b2lkIGRlYWN0aXZh
dGVCcmVha3BvaW50cygpOwogICAgIHZvaWQgc2V0U3RpY2t5QnJlYWtwb2ludChjb25zdCBTdHJp
bmcmIHVybCwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIGJv
b2wgZW5hYmxlZCk7CiAgICAgdm9pZCBzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNl
SUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29sIGVu
YWJsZWQsIFN0cmluZyogYnJlYWtwb2ludElkLCB1bnNpZ25lZCBpbnQqIGFjdHVhbExpbmVOdW1i
ZXIpOwogICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJ
ZCk7Ci0KICAgICB2b2lkIGVkaXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwg
Y29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBib29sKiBzdWNjZXNzLCBTdHJpbmcqIHJlc3VsdCwg
UmVmUHRyPEluc3BlY3RvclZhbHVlPiogbmV3Q2FsbEZyYW1lcyk7CiAgICAgdm9pZCBnZXRTY3Jp
cHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpOwot
CiAgICAgdm9pZCBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KERlYnVnZ2VyRXZlbnRUeXBl
IHR5cGUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGRhdGEpOwogICAgIHZvaWQgY2FuY2Vs
UGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKICAgICB2b2lkIGJyZWFrUHJvZ3JhbShEZWJ1Z2dlckV2
ZW50VHlwZSB0eXBlLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBkYXRhKTsKQEAgLTc2LDgg
Kzc2LDkgQEAgcHVibGljOgogICAgIHZvaWQgc3RlcE92ZXIoKTsKICAgICB2b2lkIHN0ZXBJbnRv
KCk7CiAgICAgdm9pZCBzdGVwT3V0KCk7Ci0KICAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25z
U3RhdGUobG9uZyBwYXVzZVN0YXRlLCBsb25nKiBuZXdTdGF0ZSk7CisgICAgdm9pZCBldmFsdWF0
ZU9uQ2FsbEZyYW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYWxsRnJhbWVJZCwgY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOworICAgIHZvaWQgZ2V0Q29tcGxldGlvbnNPbkNhbGxG
cmFtZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CiAKICAgICB2b2lkIGNsZWFyRm9yUGFnZU5hdmln
YXRpb24oKTsKIApAQCAtOTIsNiArOTMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRDb250aW51ZSgpOwogCiAgICAgdm9pZCByZXN0b3JlQnJlYWtwb2ludChjb25zdCBTdHJpbmcm
IHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwg
Ym9vbCBlbmFibGVkKTsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckNhbGxG
cmFtZUlkKEluc3BlY3Rvck9iamVjdCogY2FsbEZyYW1lSWQpOwogCiAgICAgSW5zcGVjdG9yQ29u
dHJvbGxlciogbV9pbnNwZWN0b3JDb250cm9sbGVyOwogICAgIEluc3BlY3RvckZyb250ZW5kKiBt
X2Zyb250ZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db25zb2xlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29u
c29sZVZpZXcuanMKaW5kZXggODQzYzJiMy4uYWJjMDg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBAIC0zNTUsMTQgKzM1NSwx
MSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAvLyBD
b2xsZWN0IGNvbW1hIHNlcGFyYXRlZCBvYmplY3QgcHJvcGVydGllcyBmb3IgdGhlIGNvbXBsZXRp
b24uCiAKICAgICAgICAgdmFyIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSA9ICghZG90
Tm90YXRpb24gJiYgIWJyYWNrZXROb3RhdGlvbik7Ci0gICAgICAgIHZhciBjYWxsRnJhbWVJZCA9
IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5zZWxlY3RlZENhbGxGcmFtZUlkKCkgfHwgLTE7
CiAgICAgICAgIHZhciBpbmplY3RlZFNjcmlwdEFjY2VzczsKLSAgICAgICAgaWYgKFdlYkluc3Bl
Y3Rvci5wYW5lbHMuc2NyaXB0cyAmJiBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMucGF1c2Vk
KSB7Ci0gICAgICAgICAgICB2YXIgc2VsZWN0ZWRDYWxsRnJhbWUgPSBXZWJJbnNwZWN0b3IucGFu
ZWxzLnNjcmlwdHMuc2lkZWJhclBhbmVzLmNhbGxzdGFjay5zZWxlY3RlZENhbGxGcmFtZTsKLSAg
ICAgICAgICAgIHZhciBpbmplY3RlZFNjcmlwdElkID0gc2VsZWN0ZWRDYWxsRnJhbWUud29ybGRJ
ZDsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB2YXIgaW5qZWN0ZWRTY3JpcHRJZCA9IDA7
Ci0gICAgICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0Q29tcGxldGlvbnMoaW5qZWN0ZWRTY3JpcHRJ
ZCwgZXhwcmVzc2lvblN0cmluZywgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCBjYWxs
RnJhbWVJZCwgcmVwb3J0Q29tcGxldGlvbnMpOworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnBh
bmVscy5zY3JpcHRzICYmIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5wYXVzZWQpCisgICAg
ICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldENvbXBsZXRpb25zT25DYWxsRnJhbWUoV2ViSW5z
cGVjdG9yLnBhbmVscy5zY3JpcHRzLnNlbGVjdGVkQ2FsbEZyYW1lSWQoKSwgZXhwcmVzc2lvblN0
cmluZywgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCByZXBvcnRDb21wbGV0aW9ucyk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0Q29tcGxldGlv
bnMoZXhwcmVzc2lvblN0cmluZywgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCByZXBv
cnRDb21wbGV0aW9ucyk7CiAgICAgfSwKIAogICAgIF9yZXBvcnRDb21wbGV0aW9uczogZnVuY3Rp
b24oYmVzdE1hdGNoT25seSwgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrLCBkb3ROb3RhdGlvbiwg
YnJhY2tldE5vdGF0aW9uLCBwcmVmaXgsIHJlc3VsdCwgaXNFeGNlcHRpb24pIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5kZXgg
NmFmMTI0Yi4uM2UxYjE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTM2Niw3ICszNjYsNyBAQCBXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAg
ICAgICAgICAgICAgY2FsbGJhY2soV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9h
ZChyZXN1bHQpKTsKICAgICAgICAgfQotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmV2YWx1YXRl
SW5DYWxsRnJhbWUoY2FsbEZyYW1lLndvcmxkSWQsIGNhbGxGcmFtZS5pZCwgY29kZSwgb2JqZWN0
R3JvdXAsIGV2YWxDYWxsYmFjayk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZXZhbHVhdGVP
bkNhbGxGcmFtZShjYWxsRnJhbWUuaWQsIGNvZGUsIG9iamVjdEdyb3VwLCBldmFsQ2FsbGJhY2sp
OwogICAgIH0sCiAKICAgICBfZGVidWdnZXJQYXVzZWQ6IGZ1bmN0aW9uKGV2ZW50KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79418</attachid>
            <date>2011-01-19 06:46:49 -0800</date>
            <delta_ts>2011-01-19 07:09:31 -0800</delta_ts>
            <desc>[PATCH] Proposed change with missing files added.</desc>
            <filename>runtime_agent_2</filename>
            <type>text/plain</type>
            <size>67487</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzY1ZTQxMy4uYTllOWZhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTExNjksNiArMTE2OSw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCiAgICAgaW5zcGVj
dG9yL0luc3BlY3RvclNldHRpbmdzLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5j
cHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZDFiOTI3Li4xYmZhNjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTEtMDEtMTkg
IFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBtZXRo
b2RzIGZyb20gSW5qZWN0ZWRTY3JpcHQgZG9tYWluIGludG8gRE9NLAorICAgICAgICBSdW50aW1l
IGFuZCBEZWJ1Z2dlciBkb21haW5zLiBJbnRyb2R1Y2UgSW5zcGVjdG9yUnVudGltZUFnZW50Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI3MTcKKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNw
ZWN0b3IucG06CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpnZXRDb21wbGV0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Z2V0Q29tcGxldGlvbnNPbkNhbGxGcmFtZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhv
c3Q6OmluamVjdGVkU2NyaXB0Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291
cmNlLmpzOgorICAgICAgICAoLik6CisgICAgICAgICgpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZWxlYXNlRnJvbnRl
bmRMaWZldGltZUFnZW50cyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0Tm9kZVByb3BlcnRpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldE5vZGVQcm90b3R5cGVzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjppbmplY3RlZFNjcmlwdEZvck5vZGVJZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudExpc3RlbmVySW5mbzo6RXZlbnRMaXN0ZW5lckluZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OkRPTUxpc3RlbmVyOjp+RE9NTGlzdGVuZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6Y2FzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6ZG9jdW1lbnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpl
dmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmdldENvbXBsZXRpb25zT25DYWxsRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JDYWxsRnJhbWVJZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Okluc3BlY3RvclJ1bnRpbWVBZ2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6On5JbnNwZWN0b3JSdW50aW1lQWdlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldENvbXBsZXRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNldFByb3BlcnR5VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpwdXNoTm9kZVRv
RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50Ojppbmpl
Y3RlZFNjcmlwdEZvck9iamVjdElkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVu
dGltZUFnZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdC5oLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpjcmVh
dGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLmNvbXBsZXRpb25zKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLmRvRXZhbEluQ2FsbEZyYW1lKToKKwog
MjAxMS0wMS0xOSAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0Bnb29nbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMjQ3Zjg4
MC4uOTM1Zjc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysr
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE5ODIsNiArMTk4Miw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBy
b2ZpbGVyQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcCBcCisJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2V0dGluZ3MuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2V0dGluZ3MuaCBcCiAJU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggODk3NThjYi4uOGEwMmM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjAzNSw2ICsyMDM1LDgg
QEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oJywKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgnLAorICAgICAgICAgICAg
J2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwJywKKyAgICAgICAgICAgICdpbnNw
ZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9J
bnNwZWN0b3JTdGF0ZS5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JTZXR0
aW5ncy5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yU2V0dGluZ3MuY3BwJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8KaW5kZXggYTg1NzI0Mi4uMmY0MmE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTEw
NjAsNiArMTA2MCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5j
cHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBcCisgICAgaW5z
cGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JTZXR0aW5ncy5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHAgXAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBcCkBAIC0xOTU2LDYgKzE5NTcsNyBA
QCBIRUFERVJTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgg
XAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggXAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggXAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclNldHRpbmdzLmggXAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
aW5kZXggOGJhM2M0Yy4uNGRmNDAzYyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY1MTYyLDYgKzY1MTYyLDE0IEBACiAJCQkJPgogCQkJPC9G
aWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JS
dW50aW1lQWdlbnQuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yUnVudGltZUFnZW50LmgiCisJCQkJPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0
b3JTZXR0aW5ncy5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmMDE1MzQuLmE2ZWM3MTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE2NjQsOSArMTY2NCwxMSBAQAogCQk3QTc0RUNCQTEwMTgzOUE2MDBCRjkzOUUgLyog
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0I4MTAxODM5QTUwMEJGOTM5RSAvKiBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwICovOyB9OwogCQk3QTc0RUNCQjEwMTgzOUE2MDBCRjkzOUUgLyog
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTc0RUNCOTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmggKi87IH07CiAJCTdBNzRFQ0JEMTAxODM5REEwMEJGOTM5RSAvKiBKU0lu
c3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc0RUNCQzEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0
b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwICovOyB9OworCQk3QUEzNjVFRTEyRTcyNjU0MDBEQ0Ey
NDIgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQTM2NUVEMTJFNzI2NTQwMERDQTI0MiAvKiBJbnNwZWN0
b3JSdW50aW1lQWdlbnQuY3BwICovOyB9OwogCQk3QUIwQjFDMDEyMTFBNjIyMDBBNzY5NDAgLyog
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QUIwQjFCRTEyMTFBNjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudC5jcHAgKi87IH07CiAJCTdBQjBCMUMxMTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QUIwQjFCRjEyMTFBNjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudC5oICovOyB9OwogCQk3QURFNzIyNjEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0FERTcyMjUxMENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLzsgfTsK
KwkJN0FGMTFBNUExMkU3Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGMTFBNTkxMkU3
Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oICovOyB9OwogCQk3QUZENEE4
QjExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGRDRBOEExMTMxQzI3NjAwMzVCODgzIC8q
IFNjcmlwdEJyZWFrcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QUZENEZGNDExMzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0
ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FG
RDRGRjMxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RTMzQ0QwMTEyN0YzNDBE
MDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3Jp
dHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
ODA4OSw5ICs4MDkxLDExIEBACiAJCTdBNzRFQ0I4MTAxODM5QTUwMEJGOTM5RSAvKiBJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0E3NEVDQjkxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E3NEVDQkMxMDE4MzlEQTAw
QkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FBMzY1RUQxMkU3MjY1NDAwRENBMjQy
IC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QUIwQjFCRTEyMTFBNjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JE
YXRhYmFzZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FCMEIxQkYx
MjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFiYXNlQWdlbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QURFNzIyNTEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1l
bnVQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZXh0TWVu
dVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBRjExQTU5MTJFNzI3
NDkwMDYxRjIzQyAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yUnVudGltZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEJyZWFrcG9pbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRDRGRjMxMTMyNzdCNjAwMzVCODgzIC8q
IFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NyaXB0RGVidWdMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTMz
Q0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQdXJnZVByaW9yaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMjk4Miw2ICsxMjk4Niw4IEBACiAJCQkJOUYwRDZCMkQxMjFCRkVCQTAwNkMwMjg4
IC8qIEluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCAqLywKIAkJCQk4MkFCMTc3MTEyNUM4MjY3MDBD
NTA2OUQgLyogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgKi8sCiAJCQkJODJBQjE3NzIxMjVD
ODI2NzAwQzUwNjlEIC8qIEluc3BlY3RvclJlc291cmNlQWdlbnQuaCAqLywKKwkJCQk3QUEzNjVF
RDEyRTcyNjU0MDBEQ0EyNDIgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCAqLywKKwkJCQk3
QUYxMUE1OTEyRTcyNzQ5MDA2MUYyM0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggKi8sCiAJ
CQkJNEZBM0I5MDgxMjVDRDEyMTAwMzAwQkFEIC8qIEluc3BlY3RvclN0YXRlLmNwcCAqLywKIAkJ
CQk0RkEzQjkwOTEyNUNEMTIyMDAzMDBCQUQgLyogSW5zcGVjdG9yU3RhdGUuaCAqLywKIAkJCQk4
MkFCMTc2RjEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgKi8sCkBA
IC0yMjM2Nyw2ICsyMjM3Myw3IEBACiAJCQkJMkUzN0UwMDYxMkRCQzVBNDAwQTZCMjMzIC8qIEpT
RE9NVVJMLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTU2NDBDMDEyREY5RTVFMDBGNDUzNkQgLyog
SW5zcGVjdG9yU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzRDRDNDc5MTJFMDc2NjMw
MDNEQTE1MCAvKiBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJN0FGMTFBNUExMkU3Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yNTA1Niw2ICsyNTA2Myw3IEBACiAJCQkJMkUzN0UwMDUxMkRC
QzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBNTY0MEJG
MTJERjlFNUUwMEY0NTM2RCAvKiBJbnNwZWN0b3JTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGM0Q0QzQ3ODEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2Vy
QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0FBMzY1RUUxMkU3MjY1NDAwRENBMjQyIC8q
IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KaW5kZXggMTZhNjA3
MC4uZWE5OGQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5l
cmF0b3JJbnNwZWN0b3IucG0KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5l
cmF0b3JJbnNwZWN0b3IucG0KQEAgLTczLDYgKzczLDExIEBAICR0eXBlVHJhbnNmb3JteyJQcm9m
aWxlciJ9ID0gewogICAgICJoZWFkZXIiID0+ICJJbnNwZWN0b3JQcm9maWxlckFnZW50LmgiLAog
ICAgICJkb21haW5BY2Nlc3NvciIgPT4gIm1faW5zcGVjdG9yQ29udHJvbGxlci0+bV9wcm9maWxl
ckFnZW50IiwKIH07CiskdHlwZVRyYW5zZm9ybXsiUnVudGltZSJ9ID0geworICAgICJmb3J3YXJk
IiA9PiAiSW5zcGVjdG9yUnVudGltZUFnZW50IiwKKyAgICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9y
UnVudGltZUFnZW50LmgiLAorICAgICJkb21haW5BY2Nlc3NvciIgPT4gIm1faW5zcGVjdG9yQ29u
dHJvbGxlci0+bV9ydW50aW1lQWdlbnQiLAorfTsKIAogJHR5cGVUcmFuc2Zvcm17IkZyb250ZW5k
In0gPSB7CiAgICAgImZvcndhcmQiID0+ICJJbnNwZWN0b3JGcm9udGVuZCIsCkBAIC0xMTcsNyAr
MTIyLDcgQEAgJHR5cGVUcmFuc2Zvcm17IlN0cmluZyJ9ID0gewogICAgICJ2YXJpYWJsZSIgPT4g
IlN0cmluZyIsCiAgICAgInJldHVybiIgPT4gIlN0cmluZyIsCiAgICAgImRlZmF1bHRWYWx1ZSIg
PT4gIlwiXCIiLAotICAgICJmb3J3YXJkSGVhZGVyIiA9PiAid3RmL0ZvcndhcmQuaCIsCisgICAg
ImZvcndhcmRIZWFkZXIiID0+ICJQbGF0Zm9ybVN0cmluZy5oIiwKICAgICAiaGVhZGVyIiA9PiAi
UGxhdGZvcm1TdHJpbmcuaCIsCiAgICAgIkpTT05UeXBlIiA9PiAiU3RyaW5nIiwKICAgICAiSlNU
eXBlIiA9PiAic3RyaW5nIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dC5jcHAKaW5kZXggZjI4NDYyNy4uYzg2NDMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC01MiwxMCArNTIsMTAgQEAgdm9pZCBJbmplY3RlZFNj
cmlwdDo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9i
amVjdEdyb3UKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgcmVzdWx0KTsKIH0KIAotdm9pZCBJbmpl
Y3RlZFNjcmlwdDo6ZXZhbHVhdGVJbkNhbGxGcmFtZShsb25nIGNhbGxGcmFtZSwgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+KiByZXN1bHQpCit2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZy
YW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+KiByZXN1bHQpCiB7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5q
ZWN0ZWRTY3JpcHRPYmplY3QsICJldmFsdWF0ZUluQ2FsbEZyYW1lIik7Ci0gICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChj
YWxsRnJhbWVJZC0+dG9KU09OU3RyaW5nKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGV4cHJlc3Npb24pOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdEdyb3VwKTsK
ICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgcmVzdWx0KTsKQEAgLTY5LDEyICs2OSwyMCBAQCB2b2lk
IEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uU2VsZihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uQm9k
eSwgUGFzc1JlZlB0cjxJbnNwZQogICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCByZXN1bHQpOwogfQog
Ci12b2lkIEluamVjdGVkU2NyaXB0OjpnZXRDb21wbGV0aW9ucyhjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24sIGJvb2wgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCBsb25nIGNhbGxGcmFt
ZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit2b2lkIEluamVjdGVkU2NyaXB0
OjpnZXRDb21wbGV0aW9ucyhjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGJvb2wgaW5jbHVkZUlu
c3BlY3RvckNvbW1hbmRMaW5lQVBJLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCiB7
CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Qs
ICJnZXRDb21wbGV0aW9ucyIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Np
b24pOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGluY2x1ZGVJbnNwZWN0b3JDb21tYW5k
TGluZUFQSSk7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lSWQpOworICAg
IG1ha2VDYWxsKGZ1bmN0aW9uLCByZXN1bHQpOworfQorCit2b2lkIEluamVjdGVkU2NyaXB0Ojpn
ZXRDb21wbGV0aW9uc09uQ2FsbEZyYW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYWxs
RnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBib29sIGluY2x1ZGVJbnNwZWN0b3JD
b21tYW5kTGluZUFQSSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQoreworICAgIFNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAiZ2V0Q29t
cGxldGlvbnMiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVJZC0+dG9K
U09OU3RyaW5nKCkpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Npb24pOwor
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQ
SSk7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24sIHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggOWZiNGM1MC4uMGEzZjI0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKQEAgLTUxLDkgKzUxLDEwIEBA
IHB1YmxpYzoKICAgICBib29sIGhhc05vVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVk
U2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUoKTsgfQogCiAgICAgdm9pZCBldmFsdWF0ZShjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBldmFsdWF0ZUluQ2FsbEZyYW1lKGxvbmcg
Y2FsbEZyYW1lLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0
R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAgdm9pZCBldmFsdWF0
ZU9uQ2FsbEZyYW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYWxsRnJhbWVJZCwgY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwogICAgIHZvaWQgZXZhbHVhdGVPblNlbGYoY29uc3Qg
U3RyaW5nJiBmdW5jdGlvbkJvZHksIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3VtZW50
c0FycmF5LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQgZ2V0Q29t
cGxldGlvbnMoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBib29sIGluY2x1ZGVJbnNwZWN0b3JD
b21tYW5kTGluZUFQSSwgbG9uZyBjYWxsRnJhbWVJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiog
cmVzdWx0KTsKKyAgICB2b2lkIGdldENvbXBsZXRpb25zKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgYm9vbCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4qIHJlc3VsdCk7CisgICAgdm9pZCBnZXRDb21wbGV0aW9uc09uQ2FsbEZyYW1lKFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLCBib29sIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSwgUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiogcmVzdWx0KTsKICAgICB2b2lkIGdldFByb3BlcnRpZXMoUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IG9iamVjdElkLCBib29sIGlnbm9yZUhhc093blByb3BlcnR5LCBib29sIGFi
YnJldmlhdGUsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CiAgICAgdm9pZCBwdXNo
Tm9kZVRvRnJvbnRlbmQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElkLCBSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwogICAgIHZvaWQgcmVzb2x2ZU5vZGUobG9uZyBu
b2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IGYyM2Q4ZWMuLjkwNWFm
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhv
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwCkBAIC04MCwyMCArODAsNiBAQCBJbmplY3RlZFNjcmlwdEhvc3Q6On5JbmplY3RlZFNjcmlw
dEhvc3QoKQogewogfQogCi12b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGUoY29uc3Qg
U3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+KiByZXN1bHQpCi17Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHQgPSBpbmplY3RlZFNjcmlwdEZvck1haW5Xb3JsZCgpOwotICAgIGlmICghaW5qZWN0ZWRTY3Jp
cHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0ZShleHByZXNz
aW9uLCBvYmplY3RHcm91cCwgcmVzdWx0KTsKLX0KLQotdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6
OmV2YWx1YXRlSW5DYWxsRnJhbWUobG9uZyBpbmplY3RlZFNjcmlwdElkLCBsb25nIGNhbGxGcmFt
ZSwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCi17Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5q
ZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdElkID8gbV9pZFRvSW5qZWN0ZWRTY3JpcHQuZ2V0
KGluamVjdGVkU2NyaXB0SWQpIDogaW5qZWN0ZWRTY3JpcHRGb3JNYWluV29ybGQoKTsKLSAgICBp
ZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgaW5qZWN0ZWRTY3JpcHQu
ZXZhbHVhdGVJbkNhbGxGcmFtZShjYWxsRnJhbWUsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBy
ZXN1bHQpOwotfQotCiB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVPblNlbGYoY29u
c3QgU3RyaW5nJiBmdW5jdGlvbkJvZHksIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3Vt
ZW50c0FycmF5LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCiB7CiAgICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvck1haW5Xb3JsZCgpOwpA
QCAtMTAxLDU1ICs4Nyw2IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZU9uU2Vs
Zihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uQm9keSwgUGFzc1JlZlB0cjxJCiAgICAgICAgIGluamVj
dGVkU2NyaXB0LmV2YWx1YXRlT25TZWxmKGZ1bmN0aW9uQm9keSwgYXJndW1lbnRzQXJyYXksIHJl
c3VsdCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRDb21wbGV0aW9ucyhsb25n
IGluamVjdGVkU2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRl
SW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIGxvbmcgY2FsbEZyYW1lSWQsIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4qIHJlc3VsdCkKLXsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9
IGluamVjdGVkU2NyaXB0SWQgPyBtX2lkVG9JbmplY3RlZFNjcmlwdC5nZXQoaW5qZWN0ZWRTY3Jp
cHRJZCkgOiBpbmplY3RlZFNjcmlwdEZvck1haW5Xb3JsZCgpOwotICAgIGlmICghaW5qZWN0ZWRT
Y3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICBpbmplY3RlZFNjcmlwdC5nZXRDb21wbGV0aW9u
cyhleHByZXNzaW9uLCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIGNhbGxGcmFtZUlk
LCByZXN1bHQpOwotfQotCi12b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6Z2V0UHJvcGVydGllcyhQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIGJvb2wgaWdub3JlSGFzT3duUHJv
cGVydHksIGJvb2wgYWJicmV2aWF0ZSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQot
ewotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JP
YmplY3RJZChvYmplY3RJZC5nZXQoKSk7Ci0gICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1Zh
bHVlKCkpCi0gICAgICAgIGluamVjdGVkU2NyaXB0LmdldFByb3BlcnRpZXMob2JqZWN0SWQsIGln
bm9yZUhhc093blByb3BlcnR5LCBhYmJyZXZpYXRlLCByZXN1bHQpOwotfQotCi12b2lkIEluamVj
dGVkU2NyaXB0SG9zdDo6cHVzaE5vZGVUb0Zyb250ZW5kKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBvYmplY3RJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQotewotICAgIElu
amVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChv
YmplY3RJZC5nZXQoKSk7Ci0gICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCi0g
ICAgICAgIGluamVjdGVkU2NyaXB0LnB1c2hOb2RlVG9Gcm9udGVuZChvYmplY3RJZCwgcmVzdWx0
KTsKLX0KLQotdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OnJlc29sdmVOb2RlKGxvbmcgbm9kZUlk
LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCi17Ci0gICAgSW5qZWN0ZWRTY3JpcHQg
aW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvck5vZGVJZChub2RlSWQpOwotICAgIGlm
ICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICBpbmplY3RlZFNjcmlwdC5y
ZXNvbHZlTm9kZShub2RlSWQsIHJlc3VsdCk7Ci19Ci0KLXZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0
OjpnZXROb2RlUHJvcGVydGllcyhsb25nIG5vZGVJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJh
eT4gcHJvcGVydGllc0FycmF5LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCi17Ci0g
ICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvck5vZGVJ
ZChub2RlSWQpOwotICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAg
ICBpbmplY3RlZFNjcmlwdC5nZXROb2RlUHJvcGVydGllcyhub2RlSWQsIHByb3BlcnRpZXNBcnJh
eSwgcmVzdWx0KTsKLX0KLQotdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmdldE5vZGVQcm90b3R5
cGVzKGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCi17Ci0gICAg
SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvck5vZGVJZChu
b2RlSWQpOwotICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICBp
bmplY3RlZFNjcmlwdC5nZXROb2RlUHJvdG90eXBlcyhub2RlSWQsIHJlc3VsdCk7Ci19Ci0KLXZv
aWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpzZXRQcm9wZXJ0eVZhbHVlKFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0
cmluZyYgZXhwcmVzc2lvbiwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQotewotICAg
IEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJ
ZChvYmplY3RJZC5nZXQoKSk7Ci0gICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkp
Ci0gICAgICAgIGluamVjdGVkU2NyaXB0LnNldFByb3BlcnR5VmFsdWUob2JqZWN0SWQsIHByb3Bl
cnR5TmFtZSwgZXhwcmVzc2lvbiwgcmVzdWx0KTsKLX0KLQogdm9pZCBJbmplY3RlZFNjcmlwdEhv
c3Q6OmNsZWFyQ29uc29sZU1lc3NhZ2VzKCkKIHsKICAgICBpZiAobV9pbnNwZWN0b3JDb250cm9s
bGVyKQpAQCAtMjEyLDEyICsxNDksMTcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OnNlbGVj
dERPTVN0b3JhZ2UoU3RvcmFnZSogc3RvcmFnZSkKICAgICAgICAgbV9pbnNwZWN0b3JDb250cm9s
bGVyLT5tX2RvbVN0b3JhZ2VBZ2VudC0+c2VsZWN0RE9NU3RvcmFnZShzdG9yYWdlKTsKIH0KICNl
bmRpZgotCisgCiBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdEhvc3Q6OmluamVjdGVkU2Ny
aXB0Rm9ySWQobG9uZyBpZCkKIHsKICAgICByZXR1cm4gbV9pZFRvSW5qZWN0ZWRTY3JpcHQuZ2V0
KGlkKTsKIH0KIAorSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRIb3N0OjppbmplY3RlZFNj
cmlwdEZvck1haW5Xb3JsZCgpCit7CisgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0Rm9yKG1haW5X
b3JsZFNjcmlwdFN0YXRlKG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLT5t
YWluRnJhbWUoKSkpOworfQorCiB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6ZGlzY2FyZEluamVj
dGVkU2NyaXB0cygpCiB7CiAgICAgSWRUb0luamVjdGVkU2NyaXB0TWFwOjppdGVyYXRvciBlbmQg
PSBtX2lkVG9JbmplY3RlZFNjcmlwdC5lbmQoKTsKQEAgLTI4Myw0MyArMjI1LDYgQEAgdm9pZCBJ
bmplY3RlZFNjcmlwdEhvc3Q6OmRpZERlc3Ryb3lXb3JrZXIobG9uZyBpZCkKIH0KICNlbmRpZiAv
LyBFTkFCTEUoV09SS0VSUykKIAotSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRIb3N0Ojpp
bmplY3RlZFNjcmlwdEZvck9iamVjdElkKEluc3BlY3Rvck9iamVjdCogb2JqZWN0SWQpCi17Ci0g
ICAgbG9uZyBpbmplY3RlZFNjcmlwdElkID0gMDsKLSAgICBib29sIHN1Y2Nlc3MgPSBvYmplY3RJ
ZC0+Z2V0TnVtYmVyKCJpbmplY3RlZFNjcmlwdElkIiwgJmluamVjdGVkU2NyaXB0SWQpOwotICAg
IGlmIChzdWNjZXNzKQotICAgICAgICByZXR1cm4gbV9pZFRvSW5qZWN0ZWRTY3JpcHQuZ2V0KGlu
amVjdGVkU2NyaXB0SWQpOwotICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwotfQotCi1Jbmpl
Y3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdEhvc3Q6OmluamVjdGVkU2NyaXB0Rm9yTm9kZUlkKGxv
bmcgbm9kZUlkKQotewotICAgIGlmICghbV9pbnNwZWN0b3JDb250cm9sbGVyKQotICAgICAgICBy
ZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKLQotICAgIEZyYW1lKiBmcmFtZSA9IDA7Ci0gICAgaWYg
KG5vZGVJZCkgewotICAgICAgICBBU1NFUlQobV9pbnNwZWN0b3JDb250cm9sbGVyLT5kb21BZ2Vu
dCgpKTsKLSAgICAgICAgTm9kZSogbm9kZSA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZG9tQWdl
bnQoKS0+bm9kZUZvcklkKG5vZGVJZCk7Ci0gICAgICAgIGlmIChub2RlKSB7Ci0gICAgICAgICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBub2RlLT5vd25lckRvY3VtZW50KCk7Ci0gICAgICAgICAg
ICBpZiAoZG9jdW1lbnQpCi0gICAgICAgICAgICAgICAgZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUo
KTsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICBmcmFtZSA9IG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLT5tYWluRnJhbWUoKTsKLQotICAgIGlmIChmcmFtZSkK
LSAgICAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0Rm9yKG1haW5Xb3JsZFNjcmlwdFN0YXRlKGZy
YW1lKSk7Ci0KLSAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKLX0KLQotSW5qZWN0ZWRTY3Jp
cHQgSW5qZWN0ZWRTY3JpcHRIb3N0OjppbmplY3RlZFNjcmlwdEZvck1haW5Xb3JsZCgpCi17Ci0g
ICAgcmV0dXJuIGluamVjdGVkU2NyaXB0Rm9yKG1haW5Xb3JsZFNjcmlwdFN0YXRlKG1faW5zcGVj
dG9yQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLT5tYWluRnJhbWUoKSkpOwotfQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCmluZGV4IDRjYjYyMmQu
LmRjNGZhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRI
b3N0LmgKQEAgLTU5LDE2ICs1OSw3IEBAIHB1YmxpYzoKICAgICB+SW5qZWN0ZWRTY3JpcHRIb3N0
KCk7CiAKICAgICAvLyBQYXJ0IG9mIHRoZSBwcm90b2NvbC4KLSAgICB2b2lkIGV2YWx1YXRlKGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgUmVmUHRy
PEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKLSAgICB2b2lkIGV2YWx1YXRlSW5DYWxsRnJhbWUo
bG9uZyBpbmplY3RlZFNjcmlwdElkLCBsb25nIGNhbGxGcmFtZSwgY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
KiByZXN1bHQpOwogICAgIHZvaWQgZXZhbHVhdGVPblNlbGYoY29uc3QgU3RyaW5nJiBmdW5jdGlv
bkJvZHksIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3VtZW50c0FycmF5LCBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQgZ2V0Q29tcGxldGlvbnMobG9uZyBp
bmplY3RlZFNjcmlwdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGJvb2wgaW5jbHVkZUlu
c3BlY3RvckNvbW1hbmRMaW5lQVBJLCBsb25nIGNhbGxGcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQgZ2V0UHJvcGVydGllcyhQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gb2JqZWN0SWQsIGJvb2wgaWdub3JlSGFzT3duUHJvcGVydHksIGJvb2wgYWJi
cmV2aWF0ZSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKLSAgICB2b2lkIHB1c2hO
b2RlVG9Gcm9udGVuZChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCByZXNvbHZlTm9kZShsb25nIG5v
ZGVJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKLSAgICB2b2lkIGdldE5vZGVQ
cm9wZXJ0aWVzKGxvbmcgbm9kZUlkLCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBwcm9wZXJ0
aWVzQXJyYXksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRO
b2RlUHJvdG90eXBlcyhsb25nIG5vZGVJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0
KTsKLSAgICB2b2lkIHNldFByb3BlcnR5VmFsdWUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IG9iamVjdElkLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwogCiAgICAgSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcigpIHsgcmV0dXJuIG1faW5zcGVjdG9yQ29u
dHJvbGxlcjsgfQogICAgIHZvaWQgZGlzY29ubmVjdENvbnRyb2xsZXIoKSB7IG1faW5zcGVjdG9y
Q29udHJvbGxlciA9IDA7IH0KQEAgLTk2LDYgKzg3LDcgQEAgcHVibGljOgogICAgIHBhaXI8bG9u
ZywgU2NyaXB0T2JqZWN0PiBpbmplY3RTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFNjcmlw
dFN0YXRlKik7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3IoU2NyaXB0U3Rh
dGUqKTsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvcklkKGxvbmcpOworICAg
IEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yTWFpbldvcmxkKCk7CiAgICAgdm9pZCBk
aXNjYXJkSW5qZWN0ZWRTY3JpcHRzKCk7CiAgICAgdm9pZCByZWxlYXNlV3JhcHBlck9iamVjdEdy
b3VwKGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCk7CiAK
QEAgLTEwOSwxMCArMTAxLDYgQEAgcHJpdmF0ZToKICAgICBTY3JpcHRPYmplY3QgY3JlYXRlSW5q
ZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0
ZSwgbG9uZyBpZCk7CiAgICAgdm9pZCBkaXNjYXJkSW5qZWN0ZWRTY3JpcHQoU2NyaXB0U3RhdGUq
KTsKIAotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoSW5zcGVj
dG9yT2JqZWN0KiBvYmplY3RJZCk7Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRG
b3JOb2RlSWQobG9uZyBub2RlSWQpOwotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0
Rm9yTWFpbldvcmxkKCk7Ci0KICAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBtX2luc3BlY3RvckNv
bnRyb2xsZXI7CiAgICAgbG9uZyBtX25leHRJbmplY3RlZFNjcmlwdElkOwogICAgIGxvbmcgbV9s
YXN0V29ya2VySWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UuanMKaW5kZXggNDY4Mzk5Ny4uM2FhMjRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwpAQCAtMTg2LDI5ICsxODYsMTQg
QEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gT2JqZWN0Lmtl
eXMocHJvcGVydHlOYW1lU2V0KTsKICAgICB9LAogCi0gICAgZ2V0Q29tcGxldGlvbnM6IGZ1bmN0
aW9uKGV4cHJlc3Npb24sIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSwgY2FsbEZyYW1l
SWQpCisgICAgZ2V0Q29tcGxldGlvbnM6IGZ1bmN0aW9uKGV4cHJlc3Npb24sIGluY2x1ZGVJbnNw
ZWN0b3JDb21tYW5kTGluZUFQSSkKICAgICB7CiAgICAgICAgIHZhciBwcm9wcyA9IHt9OwogICAg
ICAgICB0cnkgewotICAgICAgICAgICAgdmFyIGV4cHJlc3Npb25SZXN1bHQ7Ci0gICAgICAgICAg
ICAvLyBFdmFsdWF0ZSBvbiBjYWxsIGZyYW1lIGlmIGNhbGwgZnJhbWUgaWQgaXMgYXZhaWxhYmxl
LgotICAgICAgICAgICAgaWYgKGNhbGxGcmFtZUlkICE9PSAtMSkgewotICAgICAgICAgICAgICAg
IHZhciBjYWxsRnJhbWUgPSB0aGlzLl9jYWxsRnJhbWVGb3JJZChjYWxsRnJhbWVJZCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjYWxsRnJhbWUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBw
cm9wczsKLSAgICAgICAgICAgICAgICBpZiAoZXhwcmVzc2lvbikKLSAgICAgICAgICAgICAgICAg
ICAgZXhwcmVzc2lvblJlc3VsdCA9IHRoaXMuX2V2YWx1YXRlT24oY2FsbEZyYW1lLmV2YWx1YXRl
LCBjYWxsRnJhbWUsIGV4cHJlc3Npb24sIHRydWUpOwotICAgICAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICAvLyBFdmFsdWF0ZSBpbnRvIHByb3BlcnRpZXMgaW4gc2NvcGUg
b2YgdGhlIHNlbGVjdGVkIGNhbGwgZnJhbWUuCi0gICAgICAgICAgICAgICAgICAgIHZhciBzY29w
ZUNoYWluID0gY2FsbEZyYW1lLnNjb3BlQ2hhaW47Ci0gICAgICAgICAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgc2NvcGVDaGFpbi5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuX3BvcHVsYXRlUHJvcGVydHlOYW1lcyhzY29wZUNoYWluW2ldLCBwcm9wcyk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBpZiAoIWV4cHJlc3Npb24pCi0gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gPSAidGhp
cyI7Ci0gICAgICAgICAgICAgICAgZXhwcmVzc2lvblJlc3VsdCA9IHRoaXMuX2V2YWx1YXRlT24o
aW5zcGVjdGVkV2luZG93LmV2YWwsIGluc3BlY3RlZFdpbmRvdywgZXhwcmVzc2lvbiwgZmFsc2Up
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFleHByZXNzaW9uKQorICAgICAgICAg
ICAgICAgIGV4cHJlc3Npb24gPSAidGhpcyI7CisgICAgICAgICAgICB2YXIgZXhwcmVzc2lvblJl
c3VsdCA9IHRoaXMuX2V2YWx1YXRlT24oaW5zcGVjdGVkV2luZG93LmV2YWwsIGluc3BlY3RlZFdp
bmRvdywgZXhwcmVzc2lvbiwgZmFsc2UpOworCiAgICAgICAgICAgICBpZiAodHlwZW9mIGV4cHJl
c3Npb25SZXN1bHQgPT09ICJvYmplY3QiKQogICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRl
UHJvcGVydHlOYW1lcyhleHByZXNzaW9uUmVzdWx0LCBwcm9wcyk7CiAgICAgCkBAIC0yMjEsNiAr
MjA2LDM0IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHBy
b3BzOwogICAgIH0sCiAKKyAgICBnZXRDb21wbGV0aW9uc09uQ2FsbEZyYW1lOiBmdW5jdGlvbihj
YWxsRnJhbWVJZCwgZXhwcmVzc2lvbiwgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJKQor
ICAgIHsKKyAgICAgICAgdmFyIHByb3BzID0ge307CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICB2YXIgY2FsbEZyYW1lID0gdGhpcy5fY2FsbEZyYW1lRm9ySWQoY2FsbEZyYW1lSWQpOworICAg
ICAgICAgICAgaWYgKCFjYWxsRnJhbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzOwor
CisgICAgICAgICAgICBpZiAoZXhwcmVzc2lvbikgeworICAgICAgICAgICAgICAgIHZhciBleHBy
ZXNzaW9uUmVzdWx0ID0gdGhpcy5fZXZhbHVhdGVPbihjYWxsRnJhbWUuZXZhbHVhdGUsIGNhbGxG
cmFtZSwgZXhwcmVzc2lvbiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBleHBy
ZXNzaW9uUmVzdWx0ID09PSAib2JqZWN0IikKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fcG9w
dWxhdGVQcm9wZXJ0eU5hbWVzKGV4cHJlc3Npb25SZXN1bHQsIHByb3BzKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gRXZhbHVhdGUgaW50byBwcm9wZXJ0aWVzIGlu
IHNjb3BlIG9mIHRoZSBzZWxlY3RlZCBjYWxsIGZyYW1lLgorICAgICAgICAgICAgICAgIHZhciBz
Y29wZUNoYWluID0gY2FsbEZyYW1lLnNjb3BlQ2hhaW47CisgICAgICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBzY29wZUNoYWluLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgICAg
ICB0aGlzLl9wb3B1bGF0ZVByb3BlcnR5TmFtZXMoc2NvcGVDaGFpbltpXSwgcHJvcHMpOworICAg
ICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgaWYgKGluY2x1ZGVJbnNwZWN0b3JDb21tYW5k
TGluZUFQSSkgeworICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gdGhpcy5fY29tbWFu
ZExpbmVBUEkpCisgICAgICAgICAgICAgICAgICAgIHByb3BzW3Byb3BdID0gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHByb3BzOworICAgIH0sCisKICAgICBldmFsdWF0ZTogZnVuY3Rpb24oZXhwcmVzc2lvbiwgb2Jq
ZWN0R3JvdXApCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVBbmRXcmFwKGlu
c3BlY3RlZFdpbmRvdy5ldmFsLCBpbnNwZWN0ZWRXaW5kb3csIGV4cHJlc3Npb24sIG9iamVjdEdy
b3VwLCBmYWxzZSk7CkBAIC0yNzgsNyArMjkxLDcgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBl
ID0gewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0sCiAKLSAgICBldmFsdWF0ZUluQ2Fs
bEZyYW1lOiBmdW5jdGlvbihjYWxsRnJhbWVJZCwgY29kZSwgb2JqZWN0R3JvdXApCisgICAgZXZh
bHVhdGVPbkNhbGxGcmFtZTogZnVuY3Rpb24oY2FsbEZyYW1lSWQsIGNvZGUsIG9iamVjdEdyb3Vw
KQogICAgIHsKICAgICAgICAgdmFyIGNhbGxGcmFtZSA9IHRoaXMuX2NhbGxGcmFtZUZvcklkKGNh
bGxGcmFtZUlkKTsKICAgICAgICAgaWYgKCFjYWxsRnJhbWUpCkBAIC0yODYsMTAgKzI5OSwxMiBA
QCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ldmFs
dWF0ZUFuZFdyYXAoY2FsbEZyYW1lLmV2YWx1YXRlLCBjYWxsRnJhbWUsIGNvZGUsIG9iamVjdEdy
b3VwLCB0cnVlKTsKICAgICB9LAogCi0gICAgX2NhbGxGcmFtZUZvcklkOiBmdW5jdGlvbihpZCkK
KyAgICBfY2FsbEZyYW1lRm9ySWQ6IGZ1bmN0aW9uKGNhbGxGcmFtZUlkKQogICAgIHsKKyAgICAg
ICAgdmFyIHBhcnNlZENhbGxGcmFtZUlkID0gZXZhbCgiKCIgKyBjYWxsRnJhbWVJZCArICIpIik7
CisgICAgICAgIHZhciBvcmRpbmFsID0gcGFyc2VkQ2FsbEZyYW1lSWQub3JkaW5hbDsKICAgICAg
ICAgdmFyIGNhbGxGcmFtZSA9IEluamVjdGVkU2NyaXB0SG9zdC5jdXJyZW50Q2FsbEZyYW1lKCk7
Ci0gICAgICAgIHdoaWxlICgtLWlkID49IDAgJiYgY2FsbEZyYW1lKQorICAgICAgICB3aGlsZSAo
LS1vcmRpbmFsID49IDAgJiYgY2FsbEZyYW1lKQogICAgICAgICAgICAgY2FsbEZyYW1lID0gY2Fs
bEZyYW1lLmNhbGxlcjsKICAgICAgICAgcmV0dXJuIGNhbGxGcmFtZTsKICAgICB9LApAQCAtNTMx
LDE2ICs1NDYsMTUgQEAgSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0LmZyb21PYmplY3QgPSBm
dW5jdGlvbihvYmplY3QsIG9iamVjdElkLCBhYmJyZXZpYXRlKQogICAgIH0KIH0KIAotSW5qZWN0
ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkgPSBmdW5jdGlvbihpZCwgY2FsbEZyYW1lKQorSW5qZWN0
ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkgPSBmdW5jdGlvbihvcmRpbmFsLCBjYWxsRnJhbWUpCiB7
Ci0gICAgdGhpcy5pZCA9IGlkOworICAgIHRoaXMuaWQgPSB7IG9yZGluYWw6IG9yZGluYWwsIGlu
amVjdGVkU2NyaXB0SWQ6IGluamVjdGVkU2NyaXB0SWQgfTsKICAgICB0aGlzLnR5cGUgPSBjYWxs
RnJhbWUudHlwZTsKICAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9ICh0aGlzLnR5cGUgPT09ICJmdW5j
dGlvbiIgPyBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lIDogIiIpOwogICAgIHRoaXMuc291cmNlSUQg
PSBjYWxsRnJhbWUuc291cmNlSUQ7CiAgICAgdGhpcy5saW5lID0gY2FsbEZyYW1lLmxpbmU7CiAg
ICAgdGhpcy5jb2x1bW4gPSBjYWxsRnJhbWUuY29sdW1uOwogICAgIHRoaXMuc2NvcGVDaGFpbiA9
IHRoaXMuX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSk7Ci0gICAgdGhpcy53b3JsZElkID0gaW5q
ZWN0ZWRTY3JpcHRJZDsKIH0KIAogSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkucHJvdG90
eXBlID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCA3MzljMzM2
Li4zODJiNmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbApAQCAtNzEs
MTkgKzcxLDIwIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZv
aWQgZGVsZXRlQ29va2llKGluIFN0cmluZyBjb29raWVOYW1lLCBpbiBTdHJpbmcgZG9tYWluKTsK
IAogICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICAgICAgICAvLyBSdW50aW1lCisgICAgICAgIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCisKKyAgICAgICAgW2RvbWFpbj1SdW50aW1lXSB2b2lkIGV2YWx1YXRlKGlu
IFN0cmluZyBleHByZXNzaW9uLCBpbiBTdHJpbmcgb2JqZWN0R3JvdXAsIG91dCBWYWx1ZSByZXN1
bHQpOworICAgICAgICBbZG9tYWluPVJ1bnRpbWVdIHZvaWQgZ2V0Q29tcGxldGlvbnMoaW4gU3Ry
aW5nIGV4cHJlc3Npb24sIGluIGJvb2xlYW4gaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJ
LCBvdXQgVmFsdWUgcmVzdWx0KTsKKyAgICAgICAgW2RvbWFpbj1SdW50aW1lXSB2b2lkIGdldFBy
b3BlcnRpZXMoaW4gT2JqZWN0IG9iamVjdElkLCBpbiBib29sZWFuIGlnbm9yZUhhc093blByb3Bl
cnR5LCBpbiBib29sZWFuIGFiYnJldmlhdGUsIG91dCBWYWx1ZSByZXN1bHQpOworICAgICAgICBb
ZG9tYWluPVJ1bnRpbWVdIHZvaWQgc2V0UHJvcGVydHlWYWx1ZShpbiBPYmplY3Qgb2JqZWN0SWQs
IGluIFN0cmluZyBwcm9wZXJ0eU5hbWUsIGluIFN0cmluZyBleHByZXNzaW9uLCBvdXQgVmFsdWUg
cmVzdWx0KTsKKyAgICAgICAgW2RvbWFpbj1SdW50aW1lXSB2b2lkIHB1c2hOb2RlVG9Gcm9udGVu
ZChpbiBPYmplY3Qgb2JqZWN0SWQsIG91dCBWYWx1ZSByZXN1bHQpOworCisgICAgICAgIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCiAgICAgICAgIC8vIEluamVjdGVkIFNjcmlwdAogICAgICAgICAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwogCi0gICAgICAgIFtkb21haW49SW5qZWN0ZWRTY3JpcHRdIHZvaWQgZXZhbHVhdGUoaW4g
U3RyaW5nIGV4cHJlc3Npb24sIGluIFN0cmluZyBvYmplY3RHcm91cCwgb3V0IFZhbHVlIHJlc3Vs
dCk7Ci0gICAgICAgIFtkb21haW49SW5qZWN0ZWRTY3JpcHRdIHZvaWQgZXZhbHVhdGVJbkNhbGxG
cmFtZShpbiBsb25nIGluamVjdGVkU2NyaXB0SWQsIGluIGxvbmcgY2FsbEZyYW1lLCBpbiBTdHJp
bmcgZXhwcmVzc2lvbiwgaW4gU3RyaW5nIG9iamVjdEdyb3VwLCBvdXQgVmFsdWUgcmVzdWx0KTsK
ICAgICAgICAgW2RvbWFpbj1JbmplY3RlZFNjcmlwdF0gdm9pZCBldmFsdWF0ZU9uU2VsZihpbiBT
dHJpbmcgZnVuY3Rpb25Cb2R5LCBpbiBBcnJheSBhcmd1bWVudHNBcnJheSwgb3V0IFZhbHVlIHJl
c3VsdCk7Ci0gICAgICAgIFtkb21haW49SW5qZWN0ZWRTY3JpcHRdIHZvaWQgZ2V0Q29tcGxldGlv
bnMoaW4gbG9uZyBpbmplY3RlZFNjcmlwdElkLCBpbiBTdHJpbmcgZXhwcmVzc2lvbiwgaW4gYm9v
bGVhbiBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIGluIGxvbmcgY2FsbEZyYW1lSWQs
IG91dCBWYWx1ZSByZXN1bHQpOwotICAgICAgICBbZG9tYWluPUluamVjdGVkU2NyaXB0XSB2b2lk
IGdldFByb3BlcnRpZXMoaW4gT2JqZWN0IG9iamVjdElkLCBpbiBib29sZWFuIGlnbm9yZUhhc093
blByb3BlcnR5LCBpbiBib29sZWFuIGFiYnJldmlhdGUsIG91dCBWYWx1ZSByZXN1bHQpOwotICAg
ICAgICBbZG9tYWluPUluamVjdGVkU2NyaXB0XSB2b2lkIHB1c2hOb2RlVG9Gcm9udGVuZChpbiBP
YmplY3Qgb2JqZWN0SWQsIG91dCBWYWx1ZSByZXN1bHQpOwotICAgICAgICBbZG9tYWluPUluamVj
dGVkU2NyaXB0XSB2b2lkIHJlc29sdmVOb2RlKGluIGxvbmcgbm9kZUlkLCBvdXQgVmFsdWUgcmVz
dWx0KTsKLSAgICAgICAgW2RvbWFpbj1JbmplY3RlZFNjcmlwdF0gdm9pZCBnZXROb2RlUHJvcGVy
dGllcyhpbiBsb25nIG5vZGVJZCwgaW4gQXJyYXkgcHJvcGVydGllc0FycmF5LCBvdXQgVmFsdWUg
cmVzdWx0KTsKLSAgICAgICAgW2RvbWFpbj1JbmplY3RlZFNjcmlwdF0gdm9pZCBnZXROb2RlUHJv
dG90eXBlcyhpbiBsb25nIG5vZGVJZCwgb3V0IFZhbHVlIHJlc3VsdCk7Ci0gICAgICAgIFtkb21h
aW49SW5qZWN0ZWRTY3JpcHRdIHZvaWQgc2V0UHJvcGVydHlWYWx1ZShpbiBPYmplY3Qgb2JqZWN0
SWQsIGluIFN0cmluZyBwcm9wZXJ0eU5hbWUsIGluIFN0cmluZyBleHByZXNzaW9uLCBvdXQgVmFs
dWUgcmVzdWx0KTsKIAogICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgICAgICAvLyBDb25zb2xl
IEFQSQpAQCAtMTkwLDYgKzE5MSw5IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW2RvbWFpbj1E
T01dIHZvaWQgcGVyZm9ybVNlYXJjaChpbiBTdHJpbmcgcXVlcnksIGluIGJvb2xlYW4gcnVuU3lu
Y2hyb25vdXNseSk7CiAgICAgICAgIFtkb21haW49RE9NXSB2b2lkIHNlYXJjaENhbmNlbGVkKCk7
CiAgICAgICAgIFtkb21haW49RE9NXSB2b2lkIHB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChpbiBT
dHJpbmcgcGF0aCwgb3V0IGxvbmcgbm9kZUlkKTsKKyAgICAgICAgW2RvbWFpbj1ET01dIHZvaWQg
cmVzb2x2ZU5vZGUoaW4gbG9uZyBub2RlSWQsIG91dCBWYWx1ZSByZXN1bHQpOworICAgICAgICBb
ZG9tYWluPURPTV0gdm9pZCBnZXROb2RlUHJvcGVydGllcyhpbiBsb25nIG5vZGVJZCwgaW4gQXJy
YXkgcHJvcGVydGllc0FycmF5LCBvdXQgVmFsdWUgcmVzdWx0KTsKKyAgICAgICAgW2RvbWFpbj1E
T01dIHZvaWQgZ2V0Tm9kZVByb3RvdHlwZXMoaW4gbG9uZyBub2RlSWQsIG91dCBWYWx1ZSByZXN1
bHQpOwogCiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1ET01dIHZvaWQgc2V0RG9jdW1lbnQob3V0
IFZhbHVlIHJvb3QpOyAvLyBGSVhNRTogc2hvdWxkIGJlIHJlcXVlc3RlZCBmcm9tIHRoZSBmcm9u
dC1lbmQgYXMgZ2V0RG9jdW1lbnQuCiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1ET01dIHZvaWQg
YXR0cmlidXRlc1VwZGF0ZWQob3V0IGxvbmcgaWQsIG91dCBBcnJheSBhdHRyaWJ1dGVzKTsKQEAg
LTI2NiwxMSArMjcwLDE0IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW2RvbWFpbj1EZWJ1Z2dl
cl0gdm9pZCByZXN1bWUoKTsKICAgICAgICAgW25vdGlmeSwgZG9tYWluPURlYnVnZ2VyXSB2b2lk
IHJlc3VtZWRTY3JpcHQoKTsgLy8gRklYTUU6IE1ha2UgdGhpcyBvdXQgcGFyYW1ldGVyIGZvIHJl
c3VtZSBpZiBwb3NzaWJsZS4KIAotICAgICAgICBbZG9tYWluPURlYnVnZ2VyXSB2b2lkIHNldFBh
dXNlT25FeGNlcHRpb25zU3RhdGUoaW4gbG9uZyBwYXVzZU9uRXhjZXB0aW9uc1N0YXRlLCBvdXQg
bG9uZyBuZXdTdGF0ZSk7Ci0KICAgICAgICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBlZGl0U2Ny
aXB0U291cmNlKGluIFN0cmluZyBzb3VyY2VJRCwgaW4gU3RyaW5nIG5ld0NvbnRlbnQsIG91dCBi
b29sZWFuIHN1Y2Nlc3MsIG91dCBTdHJpbmcgcmVzdWx0LCBvdXQgVmFsdWUgbmV3Q2FsbEZyYW1l
cyk7CiAgICAgICAgIFtkb21haW49RGVidWdnZXJdIHZvaWQgZ2V0U2NyaXB0U291cmNlKGluIFN0
cmluZyBzb3VyY2VJRCwgb3V0IFN0cmluZyBzY3JpcHRTb3VyY2UpOwogCisgICAgICAgIFtkb21h
aW49RGVidWdnZXJdIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShpbiBsb25nIHBhdXNl
T25FeGNlcHRpb25zU3RhdGUsIG91dCBsb25nIG5ld1N0YXRlKTsKKworICAgICAgICBbZG9tYWlu
PURlYnVnZ2VyXSB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUoaW4gT2JqZWN0IGNhbGxGcmFtZUlk
LCBpbiBTdHJpbmcgZXhwcmVzc2lvbiwgaW4gU3RyaW5nIG9iamVjdEdyb3VwLCBvdXQgVmFsdWUg
cmVzdWx0KTsKKyAgICAgICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBnZXRDb21wbGV0aW9uc09u
Q2FsbEZyYW1lKGluIE9iamVjdCBjYWxsRnJhbWVJZCwgaW4gU3RyaW5nIGV4cHJlc3Npb24sIGlu
IGJvb2xlYW4gaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCBvdXQgVmFsdWUgcmVzdWx0
KTsKKwogICAgICAgICBbbm90aWZ5LCBkb21haW49RGVidWdnZXJdIHZvaWQgYnJlYWtwb2ludFJl
c29sdmVkKG91dCBTdHJpbmcgYnJlYWtwb2ludElkLCBvdXQgU3RyaW5nIHNvdXJjZUlELCBvdXQg
dW5zaWduZWQgaW50IGxpbmVOdW1iZXIsIG91dCBTdHJpbmcgY29uZGl0aW9uLCBvdXQgYm9vbGVh
biBlbmFibGVkLCBvdXQgdW5zaWduZWQgaW50IG9yaWdpbmFsTGluZU51bWJlcik7CiAKICNpZiBk
ZWZpbmVkKEVOQUJMRV9XT1JLRVJTKSAmJiBFTkFCTEVfV09SS0VSUwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDM4MGMwNTcuLjhi
NmI2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKQEAgLTcwLDYgKzcwLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQcm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclNldHRpbmdzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
U3RhdGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCkBAIC0zODksOCAr
MzkwLDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQogICAg
IG1fb3BlbmluZ0Zyb250ZW5kID0gZmFsc2U7CiAgICAgcmVsZWFzZUZyb250ZW5kTGlmZXRpbWVB
Z2VudHMoKTsKICAgICBtX2Zyb250ZW5kID0gbmV3IEluc3BlY3RvckZyb250ZW5kKG1fY2xpZW50
KTsKLSAgICBtX2RvbUFnZW50ID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmNyZWF0ZShtX2Zyb250ZW5k
LmdldCgpKTsKKyAgICBtX2RvbUFnZW50ID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmNyZWF0ZShtX2lu
amVjdGVkU2NyaXB0SG9zdC5nZXQoKSwgbV9mcm9udGVuZC5nZXQoKSk7CiAgICAgbV9yZXNvdXJj
ZUFnZW50ID0gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y3JlYXRlKG1faW5zcGVjdGVkUGFnZSwg
bV9mcm9udGVuZC5nZXQoKSk7CisgICAgbV9ydW50aW1lQWdlbnQgPSBJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmNyZWF0ZShtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSk7CiAKICAgICBtX2Nzc0Fn
ZW50LT5zZXRET01BZ2VudChtX2RvbUFnZW50LmdldCgpKTsKIApAQCAtNTAwLDYgKzUwMiw3IEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKCkKIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6cmVsZWFzZUZyb250ZW5kTGlmZXRpbWVBZ2VudHMoKQogewogICAg
IG1fcmVzb3VyY2VBZ2VudC5jbGVhcigpOworICAgIG1fcnVudGltZUFnZW50LmNsZWFyKCk7CiAK
ICAgICAvLyBUaGlzIHNob3VsZCBiZSBpbnZva2VkIHByaW9yIHRvIG1fZG9tQWdlbnQgZGVzdHJ1
Y3Rpb24uCiAgICAgbV9jc3NBZ2VudC0+c2V0RE9NQWdlbnQoMCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA0MDUxMzljLi5hYjgzNzdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgK
QEAgLTcyLDYgKzcyLDcgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JQcm9maWxlckFnZW50OwogY2xhc3MgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDsKK2NsYXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudDsKIGNsYXNz
IEluc3BlY3RvclNldHRpbmdzOwogY2xhc3MgSW5zcGVjdG9yU3RhdGU7CiBjbGFzcyBJbnNwZWN0
b3JTdG9yYWdlQWdlbnQ7CkBAIC0zMTEsNiArMzEyLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0
cjxOb2RlPiBtX25vZGVUb0ZvY3VzOwogICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZUFnZW50
PiBtX3Jlc291cmNlQWdlbnQ7CisgICAgT3duUHRyPEluc3BlY3RvclJ1bnRpbWVBZ2VudD4gbV9y
dW50aW1lQWdlbnQ7CiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAgICAgdHlwZWRlZiBIYXNoTWFw
PGludCwgUmVmUHRyPEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U+ID4gRGF0YWJhc2VSZXNvdXJj
ZXNNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cAppbmRleCAxOWFlMzBkLi45MDYxNDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJGcmFt
ZVRyZWUuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93
bmVyRWxlbWVudC5oIgorI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2luY2x1
ZGUgIk5vZGUuaCIKQEAgLTIwNiw4ICsyMDcsOSBAQCBwdWJsaWM6CiAKIH0KIAotSW5zcGVjdG9y
RE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkK
K0luc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJbmplY3RlZFNjcmlwdEhvc3Qq
IGluamVjdGVkU2NyaXB0SG9zdCwgSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogICAgIDog
RXZlbnRMaXN0ZW5lcihJbnNwZWN0b3JET01BZ2VudFR5cGUpCisgICAgLCBtX2luamVjdGVkU2Ny
aXB0SG9zdChpbmplY3RlZFNjcmlwdEhvc3QpCiAgICAgLCBtX2Zyb250ZW5kKGZyb250ZW5kKQog
ICAgICwgbV9kb21MaXN0ZW5lcigwKQogICAgICwgbV9sYXN0Tm9kZUlkKDEpCkBAIC03NTgsNiAr
NzYwLDI3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNlYXJjaENhbmNlbGVkKCkKICAgICBt
X3NlYXJjaFJlc3VsdHMuY2xlYXIoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVz
b2x2ZU5vZGUobG9uZyBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sK
KyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yTm9k
ZUlkKG5vZGVJZCk7CisgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCisgICAg
ICAgIGluamVjdGVkU2NyaXB0LnJlc29sdmVOb2RlKG5vZGVJZCwgcmVzdWx0KTsKK30KKwordm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0Tm9kZVByb3BlcnRpZXMobG9uZyBub2RlSWQsIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHByb3BlcnRpZXNBcnJheSwgUmVmUHRyPEluc3BlY3RvclZh
bHVlPiogcmVzdWx0KQoreworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5q
ZWN0ZWRTY3JpcHRGb3JOb2RlSWQobm9kZUlkKTsKKyAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkKKyAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0Tm9kZVByb3BlcnRpZXMobm9k
ZUlkLCBwcm9wZXJ0aWVzQXJyYXksIHJlc3VsdCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OmdldE5vZGVQcm90b3R5cGVzKGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
KiByZXN1bHQpCit7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3Rl
ZFNjcmlwdEZvck5vZGVJZChub2RlSWQpOworICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9W
YWx1ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5nZXROb2RlUHJvdG90eXBlcyhub2RlSWQs
IHJlc3VsdCk7Cit9CisKIFN0cmluZyBJbnNwZWN0b3JET01BZ2VudDo6ZG9jdW1lbnRVUkxTdHJp
bmcoRG9jdW1lbnQqIGRvY3VtZW50KSBjb25zdAogewogICAgIGlmICghZG9jdW1lbnQgfHwgZG9j
dW1lbnQtPnVybCgpLmlzTnVsbCgpKQpAQCAtMTExMiw2ICsxMTM1LDI2IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OnB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIHBhdGgs
IGxvbmcqIG5vZGVJCiAgICAgICAgICpub2RlSWQgPSBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKG5v
ZGUpOwogfQogCitJbmplY3RlZFNjcmlwdCBJbnNwZWN0b3JET01BZ2VudDo6aW5qZWN0ZWRTY3Jp
cHRGb3JOb2RlSWQobG9uZyBub2RlSWQpCit7CisgICAgRnJhbWUqIGZyYW1lID0gMDsKKyAgICBp
ZiAobm9kZUlkKSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKTsKKyAg
ICAgICAgaWYgKG5vZGUpIHsKKyAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUt
Pm93bmVyRG9jdW1lbnQoKTsKKyAgICAgICAgICAgIGlmIChkb2N1bWVudCkKKyAgICAgICAgICAg
ICAgICBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOworICAgICAgICB9CisgICAgfSBlbHNlCisg
ICAgICAgIGZyYW1lID0gbWFpbkZyYW1lRG9jdW1lbnQoKS0+ZnJhbWUoKTsKKworICAgIGlmIChm
cmFtZSkKKyAgICAgICAgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlw
dEZvcihtYWluV29ybGRTY3JpcHRTdGF0ZShmcmFtZSkpOworCisgICAgcmV0dXJuIEluamVjdGVk
U2NyaXB0KCk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmgKaW5kZXggOTcxNzVmZS4uODBlZGQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTMyLDYgKzMyLDggQEAKIAogI2luY2x1ZGUgIkV2
ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJUaW1l
ci5oIgpAQCAtNDUsMTY0ICs0NywxNjggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIENvbnRhaW5lck5vZGU7Ci0g
ICAgY2xhc3MgQ1NTUnVsZTsKLSAgICBjbGFzcyBDU1NSdWxlTGlzdDsKLSAgICBjbGFzcyBDU1NT
dHlsZURlY2xhcmF0aW9uOwotICAgIGNsYXNzIENTU1N0eWxlUnVsZTsKLSAgICBjbGFzcyBDU1NT
dHlsZVNoZWV0OwotICAgIGNsYXNzIENoYXJhY3RlckRhdGE7Ci0gICAgY2xhc3MgRG9jdW1lbnQ7
Ci0gICAgY2xhc3MgRWxlbWVudDsKLSAgICBjbGFzcyBFdmVudDsKLSAgICBjbGFzcyBJbnNwZWN0
b3JET01BZ2VudDsKLSAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKLSAgICBjbGFzcyBNYXRj
aEpvYjsKLSAgICBjbGFzcyBOYW1lTm9kZU1hcDsKLSAgICBjbGFzcyBOb2RlOwotICAgIGNsYXNz
IFBhZ2U7CitjbGFzcyBDb250YWluZXJOb2RlOworY2xhc3MgQ1NTUnVsZTsKK2NsYXNzIENTU1J1
bGVMaXN0OworY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKK2NsYXNzIENTU1N0eWxlUnVsZTsK
K2NsYXNzIENTU1N0eWxlU2hlZXQ7CitjbGFzcyBDaGFyYWN0ZXJEYXRhOworY2xhc3MgRG9jdW1l
bnQ7CitjbGFzcyBFbGVtZW50OworY2xhc3MgRXZlbnQ7CitjbGFzcyBJbnNwZWN0b3JET01BZ2Vu
dDsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kOworY2xhc3MgTWF0Y2hKb2I7CitjbGFzcyBOYW1l
Tm9kZU1hcDsKK2NsYXNzIE5vZGU7CitjbGFzcyBQYWdlOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKIAotICAgIHN0cnVjdCBFdmVudExpc3RlbmVySW5mbyB7Ci0gICAgICAgIEV2ZW50TGlzdGVu
ZXJJbmZvKE5vZGUqIG5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBF
dmVudExpc3RlbmVyVmVjdG9yJiBldmVudExpc3RlbmVyVmVjdG9yKQotICAgICAgICAgICAgOiBu
b2RlKG5vZGUpCi0gICAgICAgICAgICAsIGV2ZW50VHlwZShldmVudFR5cGUpCi0gICAgICAgICAg
ICAsIGV2ZW50TGlzdGVuZXJWZWN0b3IoZXZlbnRMaXN0ZW5lclZlY3RvcikKK3N0cnVjdCBFdmVu
dExpc3RlbmVySW5mbyB7CisgICAgRXZlbnRMaXN0ZW5lckluZm8oTm9kZSogbm9kZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEV2ZW50TGlzdGVuZXJWZWN0b3ImIGV2ZW50
TGlzdGVuZXJWZWN0b3IpCisgICAgICAgIDogbm9kZShub2RlKQorICAgICAgICAsIGV2ZW50VHlw
ZShldmVudFR5cGUpCisgICAgICAgICwgZXZlbnRMaXN0ZW5lclZlY3RvcihldmVudExpc3RlbmVy
VmVjdG9yKQorICAgIHsKKyAgICB9CisKKyAgICBOb2RlKiBub2RlOworICAgIGNvbnN0IEF0b21p
Y1N0cmluZyBldmVudFR5cGU7CisgICAgY29uc3QgRXZlbnRMaXN0ZW5lclZlY3RvciBldmVudExp
c3RlbmVyVmVjdG9yOworfTsKKworY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQgOiBwdWJsaWMgRXZl
bnRMaXN0ZW5lciB7CitwdWJsaWM6CisgICAgc3RydWN0IERPTUxpc3RlbmVyIHsKKyAgICAgICAg
dmlydHVhbCB+RE9NTGlzdGVuZXIoKQogICAgICAgICB7CiAgICAgICAgIH0KLQotICAgICAgICBO
b2RlKiBub2RlOwotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcgZXZlbnRUeXBlOwotICAgICAg
ICBjb25zdCBFdmVudExpc3RlbmVyVmVjdG9yIGV2ZW50TGlzdGVuZXJWZWN0b3I7Ci0gICAgfTsK
LQotICAgIGNsYXNzIEluc3BlY3RvckRPTUFnZW50IDogcHVibGljIEV2ZW50TGlzdGVuZXIgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgc3RydWN0IERPTUxpc3RlbmVyIHsKLSAgICAgICAgICAgIHZp
cnR1YWwgfkRPTUxpc3RlbmVyKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVEb2N1bWVudChEb2N1bWVudCopID0gMDsKLSAg
ICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUqKSA9IDA7Ci0gICAg
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50KikgPSAwOwotICAg
ICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckRPTUFnZW50PiBj
cmVhdGUoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3RvckRPTUFnZW50KGZyb250ZW5kKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBzdGF0aWMgY29uc3QgSW5zcGVjdG9yRE9NQWdlbnQqIGNhc3QoY29u
c3QgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBsaXN0ZW5lci0+dHlwZSgpID09IEluc3BlY3RvckRPTUFnZW50VHlwZQotICAgICAgICAgICAg
ICAgID8gc3RhdGljX2Nhc3Q8Y29uc3QgSW5zcGVjdG9yRE9NQWdlbnQqPihsaXN0ZW5lcikKLSAg
ICAgICAgICAgICAgICA6IDA7Ci0gICAgICAgIH0KLQotICAgICAgICBJbnNwZWN0b3JET01BZ2Vu
dChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpOwotICAgICAgICB+SW5zcGVjdG9yRE9NQWdl
bnQoKTsKLQotICAgICAgICB2b2lkIHJlc2V0KCk7Ci0KLSAgICAgICAgdmlydHVhbCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpOwotCi0gICAgICAgIC8vIE1ldGhv
ZHMgY2FsbGVkIGZyb20gdGhlIGZyb250ZW5kIGZvciBET00gbm9kZXMgaW5zcGVjdGlvbi4KLSAg
ICAgICAgdm9pZCBnZXRDaGlsZE5vZGVzKGxvbmcgbm9kZUlkKTsKLSAgICAgICAgdm9pZCBzZXRB
dHRyaWJ1dGUobG9uZyBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgYm9vbCogc3VjY2Vzcyk7Ci0gICAgICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGxv
bmcgZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHN1Y2Nlc3MpOwotICAgICAg
ICB2b2lkIHJlbW92ZU5vZGUobG9uZyBub2RlSWQsIGxvbmcqIG91dE5vZGVJZCk7Ci0gICAgICAg
IHZvaWQgY2hhbmdlVGFnTmFtZShsb25nIG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0YWdOYW1lLCBs
b25nKiBuZXdJZCk7Ci0gICAgICAgIHZvaWQgZ2V0T3V0ZXJIVE1MKGxvbmcgbm9kZUlkLCBXVEY6
OlN0cmluZyogb3V0ZXJIVE1MKTsKLSAgICAgICAgdm9pZCBzZXRPdXRlckhUTUwobG9uZyBub2Rl
SWQsIGNvbnN0IFN0cmluZyYgb3V0ZXJIVE1MLCBsb25nKiBuZXdJZCk7Ci0gICAgICAgIHZvaWQg
c2V0VGV4dE5vZGVWYWx1ZShsb25nIG5vZGVJZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCog
c3VjY2Vzcyk7Ci0gICAgICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKGxvbmcgbm9k
ZUlkLCBsb25nKiBvdXROb2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGxpc3RlbmVyc0Fy
cmF5KTsKLSAgICAgICAgdm9pZCBhZGRJbnNwZWN0ZWROb2RlKGxvbmcgbm9kZUlkKTsKLSAgICAg
ICAgdm9pZCBwZXJmb3JtU2VhcmNoKGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVy
eSwgYm9vbCBydW5TeW5jaHJvbm91c2x5KTsKLSAgICAgICAgdm9pZCBzZWFyY2hDYW5jZWxlZCgp
OwotICAgICAgICBib29sIHNob3VsZEJyZWFrT25Ob2RlSW5zZXJ0aW9uKE5vZGUqIG5vZGUsIE5v
ZGUqIHBhcmVudCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRldGFpbHMpOwotICAgICAg
ICBib29sIHNob3VsZEJyZWFrT25Ob2RlUmVtb3ZhbChOb2RlKiBub2RlLCBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gZGV0YWlscyk7Ci0gICAgICAgIGJvb2wgc2hvdWxkQnJlYWtPbkF0dHJp
YnV0ZU1vZGlmaWNhdGlvbihFbGVtZW50KiBlbGVtZW50LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gZGV0YWlscyk7Ci0KLSAgICAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLgotICAgICAgICB2b2lkIHNldERvY3VtZW50KERvY3VtZW50
KiBkb2N1bWVudCk7Ci0gICAgICAgIHZvaWQgcmVsZWFzZURhbmdsaW5nTm9kZXMoKTsKLQotICAg
ICAgICB2b2lkIGRpZEluc2VydERPTU5vZGUoTm9kZSopOwotICAgICAgICB2b2lkIGRpZFJlbW92
ZURPTU5vZGUoTm9kZSopOwotICAgICAgICB2b2lkIGRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCop
OwotICAgICAgICB2b2lkIGNoYXJhY3RlckRhdGFNb2RpZmllZChDaGFyYWN0ZXJEYXRhKik7Ci0K
LSAgICAgICAgTm9kZSogbm9kZUZvcklkKGxvbmcgbm9kZUlkKTsKLSAgICAgICAgbG9uZyBwdXNo
Tm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqIG5vZGUpOwotICAgICAgICB2b2lkIHB1c2hDaGlsZE5v
ZGVzVG9Gcm9udGVuZChsb25nIG5vZGVJZCk7Ci0gICAgICAgIHZvaWQgcHVzaE5vZGVCeVBhdGhU
b0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyogbm9kZUlkKTsKLSAgICAgICAgbG9u
ZyBpbnNwZWN0ZWROb2RlKHVuc2lnbmVkIGxvbmcgbnVtKTsKLSAgICAgICAgdm9pZCBjb3B5Tm9k
ZShsb25nIG5vZGVJZCk7Ci0gICAgICAgIGNvbnN0IExpc3RIYXNoU2V0PFJlZlB0cjxEb2N1bWVu
dD4gPiYgZG9jdW1lbnRzKCkgeyByZXR1cm4gbV9kb2N1bWVudHM7IH0KLSAgICAgICAgdm9pZCBz
ZXRET01MaXN0ZW5lcihET01MaXN0ZW5lciopOwotCi0gICAgICAgIFN0cmluZyBkb2N1bWVudFVS
TFN0cmluZyhEb2N1bWVudCogZG9jdW1lbnQpIGNvbnN0OwotCi0gICAgICAgIC8vIFdlIHJlcHJl
c2VudCBlbWJlZGRlZCBkb21zIGFzIGEgcGFydCBvZiB0aGUgc2FtZSBoaWVyYXJjaHkuIEhlbmNl
IHdlIHRyZWF0IGNoaWxkcmVuIG9mIGZyYW1lIG93bmVycyBkaWZmZXJlbnRseS4KLSAgICAgICAg
Ly8gV2UgYWxzbyBza2lwIHdoaXRlc3BhY2UgdGV4dCBub2RlcyBjb25kaXRpb25hbGx5LiBGb2xs
b3dpbmcgbWV0aG9kcyBlbmNhcHN1bGF0ZSB0aGVzZSBzcGVjaWZpY3MuCi0gICAgICAgIHN0YXRp
YyBOb2RlKiBpbm5lckZpcnN0Q2hpbGQoTm9kZSopOwotICAgICAgICBzdGF0aWMgTm9kZSogaW5u
ZXJOZXh0U2libGluZyhOb2RlKik7Ci0gICAgICAgIHN0YXRpYyBOb2RlKiBpbm5lclByZXZpb3Vz
U2libGluZyhOb2RlKik7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBpbm5lckNoaWxkTm9kZUNv
dW50KE5vZGUqKTsKLSAgICAgICAgc3RhdGljIE5vZGUqIGlubmVyUGFyZW50Tm9kZShOb2RlKik7
Ci0gICAgICAgIHN0YXRpYyBib29sIGlzV2hpdGVzcGFjZShOb2RlKik7Ci0KLSAgICBwcml2YXRl
OgotICAgICAgICB2b2lkIHN0YXJ0TGlzdGVuaW5nRnJhbWVEb2N1bWVudChOb2RlKiBmcmFtZU93
bmVyTm9kZSk7Ci0gICAgICAgIHZvaWQgc3RhcnRMaXN0ZW5pbmcoRG9jdW1lbnQqIGRvY3VtZW50
KTsKLSAgICAgICAgdm9pZCBzdG9wTGlzdGVuaW5nKERvY3VtZW50KiBkb2N1bWVudCk7Ci0KLSAg
ICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBF
dmVudCogZXZlbnQpOwotCi0gICAgICAgIC8vIE5vZGUtcmVsYXRlZCBtZXRob2RzLgotICAgICAg
ICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBsb25nPiBOb2RlVG9JZE1hcDsKLSAgICAg
ICAgbG9uZyBiaW5kKE5vZGUqIG5vZGUsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7Ci0gICAgICAg
IHZvaWQgdW5iaW5kKE5vZGUqIG5vZGUsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7Ci0KLSAgICAg
ICAgYm9vbCBwdXNoRG9jdW1lbnRUb0Zyb250ZW5kKCk7Ci0KLSAgICAgICAgYm9vbCBoYXNCcmVh
a3BvaW50KE5vZGUqIG5vZGUsIGxvbmcgdHlwZSk7Ci0gICAgICAgIHZvaWQgdXBkYXRlU3VidHJl
ZUJyZWFrcG9pbnRzKE5vZGUqIHJvb3QsIHVpbnQzMl90IHJvb3RNYXNrLCBib29sIHZhbHVlKTsK
LSAgICAgICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwgbG9uZyBi
cmVha3BvaW50VHlwZSwgYm9vbCBpbnNlcnRpb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBkZXNjcmlwdGlvbik7Ci0KLSAgICAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1
aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rl
c01hcCk7Ci0gICAgICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJ1aWxkQXJyYXlGb3JF
bGVtZW50QXR0cmlidXRlcyhFbGVtZW50KiBlbGVtZW50KTsKLSAgICAgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKE5vZGUqIGNvbnRh
aW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOwotICAgICAgICBQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJl
Z2lzdGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciwgY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIG5vZGUpOwotCi0gICAgICAgIERvY3VtZW50KiBt
YWluRnJhbWVEb2N1bWVudCgpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgb25NYXRjaEpvYnNUaW1l
cihUaW1lcjxJbnNwZWN0b3JET01BZ2VudD4qKTsKLSAgICAgICAgdm9pZCByZXBvcnROb2Rlc0Fz
U2VhcmNoUmVzdWx0cyhMaXN0SGFzaFNldDxOb2RlKj4mIHJlc3VsdENvbGxlY3Rvcik7Ci0KLSAg
ICAgICAgTm9kZSogbm9kZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICAgICAgUGFz
c1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gdG9BcnJheShjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGF0
YSk7Ci0KLSAgICAgICAgdm9pZCBkaXNjYXJkQmluZGluZ3MoKTsKLQotICAgICAgICBJbnNwZWN0
b3JGcm9udGVuZCogbV9mcm9udGVuZDsKLSAgICAgICAgRE9NTGlzdGVuZXIqIG1fZG9tTGlzdGVu
ZXI7Ci0gICAgICAgIE5vZGVUb0lkTWFwIG1fZG9jdW1lbnROb2RlVG9JZE1hcDsKLSAgICAgICAg
Ly8gT3ducyBub2RlIG1hcHBpbmdzIGZvciBkYW5nbGluZyBub2Rlcy4KLSAgICAgICAgVmVjdG9y
PE5vZGVUb0lkTWFwKj4gbV9kYW5nbGluZ05vZGVUb0lkTWFwczsKLSAgICAgICAgSGFzaE1hcDxs
b25nLCBOb2RlKj4gbV9pZFRvTm9kZTsKLSAgICAgICAgSGFzaE1hcDxsb25nLCBOb2RlVG9JZE1h
cCo+IG1faWRUb05vZGVzTWFwOwotICAgICAgICBIYXNoU2V0PGxvbmc+IG1fY2hpbGRyZW5SZXF1
ZXN0ZWQ7Ci0gICAgICAgIGxvbmcgbV9sYXN0Tm9kZUlkOwotICAgICAgICBMaXN0SGFzaFNldDxS
ZWZQdHI8RG9jdW1lbnQ+ID4gbV9kb2N1bWVudHM7Ci0gICAgICAgIERlcXVlPE1hdGNoSm9iKj4g
bV9wZW5kaW5nTWF0Y2hKb2JzOwotICAgICAgICBUaW1lcjxJbnNwZWN0b3JET01BZ2VudD4gbV9t
YXRjaEpvYnNUaW1lcjsKLSAgICAgICAgSGFzaFNldDxSZWZQdHI8Tm9kZT4gPiBtX3NlYXJjaFJl
c3VsdHM7Ci0gICAgICAgIFZlY3Rvcjxsb25nPiBtX2luc3BlY3RlZE5vZGVzOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlRG9jdW1lbnQoRG9jdW1lbnQqKSA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUqKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqKSA9IDA7CiAgICAgfTsKIAotI2VuZGlmCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yRE9NQWdlbnQ+IGNyZWF0ZShJbmplY3RlZFNj
cmlwdEhvc3QqIGluamVjdGVkU2NyaXB0SG9zdCwgSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5k
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JET01BZ2VudChp
bmplY3RlZFNjcmlwdEhvc3QsIGZyb250ZW5kKSk7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0
IEluc3BlY3RvckRPTUFnZW50KiBjYXN0KGNvbnN0IEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGxpc3RlbmVyLT50eXBlKCkgPT0gSW5zcGVjdG9yRE9NQWdl
bnRUeXBlCisgICAgICAgICAgICA/IHN0YXRpY19jYXN0PGNvbnN0IEluc3BlY3RvckRPTUFnZW50
Kj4obGlzdGVuZXIpCisgICAgICAgICAgICA6IDA7CisgICAgfQorCisgICAgSW5zcGVjdG9yRE9N
QWdlbnQoSW5qZWN0ZWRTY3JpcHRIb3N0KiwgSW5zcGVjdG9yRnJvbnRlbmQqKTsKKyAgICB+SW5z
cGVjdG9yRE9NQWdlbnQoKTsKKworICAgIHZvaWQgcmVzZXQoKTsKKworICAgIHZpcnR1YWwgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKTsKKworICAgIC8vIE1ldGhv
ZHMgY2FsbGVkIGZyb20gdGhlIGZyb250ZW5kIGZvciBET00gbm9kZXMgaW5zcGVjdGlvbi4KKyAg
ICB2b2lkIGdldENoaWxkTm9kZXMobG9uZyBub2RlSWQpOworICAgIHZvaWQgc2V0QXR0cmlidXRl
KGxvbmcgZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUs
IGJvb2wqIHN1Y2Nlc3MpOworICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGxvbmcgZWxlbWVudElk
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHN1Y2Nlc3MpOworICAgIHZvaWQgcmVtb3ZlTm9k
ZShsb25nIG5vZGVJZCwgbG9uZyogb3V0Tm9kZUlkKTsKKyAgICB2b2lkIGNoYW5nZVRhZ05hbWUo
bG9uZyBub2RlSWQsIGNvbnN0IFN0cmluZyYgdGFnTmFtZSwgbG9uZyogbmV3SWQpOworICAgIHZv
aWQgZ2V0T3V0ZXJIVE1MKGxvbmcgbm9kZUlkLCBXVEY6OlN0cmluZyogb3V0ZXJIVE1MKTsKKyAg
ICB2b2lkIHNldE91dGVySFRNTChsb25nIG5vZGVJZCwgY29uc3QgU3RyaW5nJiBvdXRlckhUTUws
IGxvbmcqIG5ld0lkKTsKKyAgICB2b2lkIHNldFRleHROb2RlVmFsdWUobG9uZyBub2RlSWQsIGNv
bnN0IFN0cmluZyYgdmFsdWUsIGJvb2wqIHN1Y2Nlc3MpOworICAgIHZvaWQgZ2V0RXZlbnRMaXN0
ZW5lcnNGb3JOb2RlKGxvbmcgbm9kZUlkLCBsb25nKiBvdXROb2RlSWQsIFJlZlB0cjxJbnNwZWN0
b3JBcnJheT4qIGxpc3RlbmVyc0FycmF5KTsKKyAgICB2b2lkIGFkZEluc3BlY3RlZE5vZGUobG9u
ZyBub2RlSWQpOworICAgIHZvaWQgcGVyZm9ybVNlYXJjaChjb25zdCBTdHJpbmcmIHdoaXRlc3Bh
Y2VUcmltbWVkUXVlcnksIGJvb2wgcnVuU3luY2hyb25vdXNseSk7CisgICAgdm9pZCBzZWFyY2hD
YW5jZWxlZCgpOworICAgIHZvaWQgcmVzb2x2ZU5vZGUobG9uZyBub2RlSWQsIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAgdm9pZCBnZXROb2RlUHJvcGVydGllcyhsb25nIG5v
ZGVJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gcHJvcGVydGllc0FycmF5LCBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOworICAgIHZvaWQgZ2V0Tm9kZVByb3RvdHlwZXMobG9u
ZyBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisKKworICAgIC8vIE1l
dGhvZHMgY2FsbGVkIGZyb20gdGhlIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi4KKyAgICB2b2lk
IHNldERvY3VtZW50KERvY3VtZW50Kik7CisgICAgdm9pZCByZWxlYXNlRGFuZ2xpbmdOb2Rlcygp
OworCisgICAgdm9pZCBkaWRJbnNlcnRET01Ob2RlKE5vZGUqKTsKKyAgICB2b2lkIGRpZFJlbW92
ZURPTU5vZGUoTm9kZSopOworICAgIHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50Kik7Cisg
ICAgdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWQoQ2hhcmFjdGVyRGF0YSopOworCisgICAgTm9k
ZSogbm9kZUZvcklkKGxvbmcgbm9kZUlkKTsKKyAgICBsb25nIHB1c2hOb2RlUGF0aFRvRnJvbnRl
bmQoTm9kZSopOworICAgIHZvaWQgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGxvbmcgbm9kZUlk
KTsKKyAgICB2b2lkIHB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIHBhdGgs
IGxvbmcqIG5vZGVJZCk7CisgICAgbG9uZyBpbnNwZWN0ZWROb2RlKHVuc2lnbmVkIGxvbmcgbnVt
KTsKKyAgICB2b2lkIGNvcHlOb2RlKGxvbmcgbm9kZUlkKTsKKyAgICBjb25zdCBMaXN0SGFzaFNl
dDxSZWZQdHI8RG9jdW1lbnQ+ID4mIGRvY3VtZW50cygpIHsgcmV0dXJuIG1fZG9jdW1lbnRzOyB9
CisgICAgdm9pZCBzZXRET01MaXN0ZW5lcihET01MaXN0ZW5lciopOworCisgICAgU3RyaW5nIGRv
Y3VtZW50VVJMU3RyaW5nKERvY3VtZW50KikgY29uc3Q7CisKKyAgICAvLyBXZSByZXByZXNlbnQg
ZW1iZWRkZWQgZG9tcyBhcyBhIHBhcnQgb2YgdGhlIHNhbWUgaGllcmFyY2h5LiBIZW5jZSB3ZSB0
cmVhdCBjaGlsZHJlbiBvZiBmcmFtZSBvd25lcnMgZGlmZmVyZW50bHkuCisgICAgLy8gV2UgYWxz
byBza2lwIHdoaXRlc3BhY2UgdGV4dCBub2RlcyBjb25kaXRpb25hbGx5LiBGb2xsb3dpbmcgbWV0
aG9kcyBlbmNhcHN1bGF0ZSB0aGVzZSBzcGVjaWZpY3MuCisgICAgc3RhdGljIE5vZGUqIGlubmVy
Rmlyc3RDaGlsZChOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIGlubmVyTmV4dFNpYmxpbmcoTm9k
ZSopOworICAgIHN0YXRpYyBOb2RlKiBpbm5lclByZXZpb3VzU2libGluZyhOb2RlKik7CisgICAg
c3RhdGljIHVuc2lnbmVkIGlubmVyQ2hpbGROb2RlQ291bnQoTm9kZSopOworICAgIHN0YXRpYyBO
b2RlKiBpbm5lclBhcmVudE5vZGUoTm9kZSopOworICAgIHN0YXRpYyBib29sIGlzV2hpdGVzcGFj
ZShOb2RlKik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzdGFydExpc3RlbmluZ0ZyYW1lRG9jdW1l
bnQoTm9kZSogZnJhbWVPd25lck5vZGUpOworICAgIHZvaWQgc3RhcnRMaXN0ZW5pbmcoRG9jdW1l
bnQqKTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmcoRG9jdW1lbnQqKTsKKworICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKTsKKworICAg
IC8vIE5vZGUtcmVsYXRlZCBtZXRob2RzLgorICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9k
ZT4sIGxvbmc+IE5vZGVUb0lkTWFwOworICAgIGxvbmcgYmluZChOb2RlKiwgTm9kZVRvSWRNYXAq
KTsKKyAgICB2b2lkIHVuYmluZChOb2RlKiwgTm9kZVRvSWRNYXAqKTsKKworICAgIGJvb2wgcHVz
aERvY3VtZW50VG9Gcm9udGVuZCgpOworCisgICAgYm9vbCBoYXNCcmVha3BvaW50KE5vZGUqLCBs
b25nIHR5cGUpOworICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUqIHJvb3Qs
IHVpbnQzMl90IHJvb3RNYXNrLCBib29sIHZhbHVlKTsKKyAgICB2b2lkIGRlc2NyaXB0aW9uRm9y
RE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBsb25nIGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlv
biwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRlc2NyaXB0aW9uKTsKKworICAgIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvck5vZGUoTm9kZSosIGludCBkZXB0
aCwgTm9kZVRvSWRNYXAqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZEFy
cmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCopOworICAgIFBhc3NSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIs
IGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKKyAgICBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRF
dmVudExpc3RlbmVyJiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqKTsKKwor
ICAgIERvY3VtZW50KiBtYWluRnJhbWVEb2N1bWVudCgpIGNvbnN0OworCisgICAgdm9pZCBvbk1h
dGNoSm9ic1RpbWVyKFRpbWVyPEluc3BlY3RvckRPTUFnZW50PiopOworICAgIHZvaWQgcmVwb3J0
Tm9kZXNBc1NlYXJjaFJlc3VsdHMoTGlzdEhhc2hTZXQ8Tm9kZSo+JiByZXN1bHRDb2xsZWN0b3Ip
OworCisgICAgTm9kZSogbm9kZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBQYXNz
UmVmUHRyPEluc3BlY3RvckFycmF5PiB0b0FycmF5KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRh
KTsKKworICAgIHZvaWQgZGlzY2FyZEJpbmRpbmdzKCk7CisKKyAgICBJbmplY3RlZFNjcmlwdCBp
bmplY3RlZFNjcmlwdEZvck5vZGVJZChsb25nIG5vZGVJZCk7CisKKyAgICBJbmplY3RlZFNjcmlw
dEhvc3QqIG1faW5qZWN0ZWRTY3JpcHRIb3N0OworICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zy
b250ZW5kOworICAgIERPTUxpc3RlbmVyKiBtX2RvbUxpc3RlbmVyOworICAgIE5vZGVUb0lkTWFw
IG1fZG9jdW1lbnROb2RlVG9JZE1hcDsKKyAgICAvLyBPd25zIG5vZGUgbWFwcGluZ3MgZm9yIGRh
bmdsaW5nIG5vZGVzLgorICAgIFZlY3RvcjxOb2RlVG9JZE1hcCo+IG1fZGFuZ2xpbmdOb2RlVG9J
ZE1hcHM7CisgICAgSGFzaE1hcDxsb25nLCBOb2RlKj4gbV9pZFRvTm9kZTsKKyAgICBIYXNoTWFw
PGxvbmcsIE5vZGVUb0lkTWFwKj4gbV9pZFRvTm9kZXNNYXA7CisgICAgSGFzaFNldDxsb25nPiBt
X2NoaWxkcmVuUmVxdWVzdGVkOworICAgIGxvbmcgbV9sYXN0Tm9kZUlkOworICAgIExpc3RIYXNo
U2V0PFJlZlB0cjxEb2N1bWVudD4gPiBtX2RvY3VtZW50czsKKyAgICBEZXF1ZTxNYXRjaEpvYio+
IG1fcGVuZGluZ01hdGNoSm9iczsKKyAgICBUaW1lcjxJbnNwZWN0b3JET01BZ2VudD4gbV9tYXRj
aEpvYnNUaW1lcjsKKyAgICBIYXNoU2V0PFJlZlB0cjxOb2RlPiA+IG1fc2VhcmNoUmVzdWx0czsK
KyAgICBWZWN0b3I8bG9uZz4gbV9pbnNwZWN0ZWROb2RlczsKK307CisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA1NzUx
MzYzLi4wMWExODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xNzMsNiArMTczLDIwIEBAIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShsb25nIHBhdXNlU3RhdGUs
IGxvbmcqIG5lCiAgICAgKm5ld1N0YXRlID0gU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnBh
dXNlT25FeGNlcHRpb25zU3RhdGUoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYWxsRnJh
bWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3Vw
LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit7CisgICAgSW5qZWN0ZWRTY3JpcHQg
aW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvckNhbGxGcmFtZUlkKGNhbGxGcmFtZUlk
LmdldCgpKTsKKyAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAgICAg
aW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGVPbkNhbGxGcmFtZShjYWxsRnJhbWVJZCwgZXhwcmVzc2lv
biwgb2JqZWN0R3JvdXAsIHJlc3VsdCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6Z2V0Q29tcGxldGlvbnNPbkNhbGxGcmFtZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
Y2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRlSW5zcGVj
dG9yQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAg
ICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yQ2FsbEZy
YW1lSWQoY2FsbEZyYW1lSWQuZ2V0KCkpOworICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9W
YWx1ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5nZXRDb21wbGV0aW9uc09uQ2FsbEZyYW1l
KGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEks
IHJlc3VsdCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJGb3JQYWdl
TmF2aWdhdGlvbigpCiB7CiAgICAgbV9zY3JpcHRJRFRvQ29udGVudC5jbGVhcigpOwpAQCAtMjUz
LDYgKzI2NywxNSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbShE
ZWJ1Z2dlckV2ZW50VHlwZSB0eXBlLCBQYXNzUmVmUHRyPElucwogICAgIFNjcmlwdERlYnVnU2Vy
dmVyOjpzaGFyZWQoKS5icmVha1Byb2dyYW0oKTsKIH0KIAorSW5qZWN0ZWRTY3JpcHQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JDYWxsRnJhbWVJZChJbnNwZWN0b3JP
YmplY3QqIGNhbGxGcmFtZUlkKQoreworICAgIGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCA9IDA7Cisg
ICAgYm9vbCBzdWNjZXNzID0gY2FsbEZyYW1lSWQtPmdldE51bWJlcigiaW5qZWN0ZWRTY3JpcHRJ
ZCIsICZpbmplY3RlZFNjcmlwdElkKTsKKyAgICBpZiAoc3VjY2VzcykKKyAgICAgICAgcmV0dXJu
IG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmluamVjdGVkU2Ny
aXB0Rm9ySWQoaW5qZWN0ZWRTY3JpcHRJZCk7CisgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NS
SVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggMGE2ZmQzYi4uNWU1NjZi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5oCkBAIC0zMSw2ICszMSw3IEBACiAjZGVmaW5lIEluc3BlY3RvckRlYnVnZ2VyQWdlbnRf
aAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1Ip
CisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJTY3JpcHREZWJ1Z0xpc3Rl
bmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgpAQCAtNTksMTUgKzYwLDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGlzRGVidWdn
ZXJBbHdheXNFbmFibGVkKCk7CiAKKyAgICAvLyBQYXJ0IG9mIHRoZSBwcm90b2NvbC4KICAgICB2
b2lkIGFjdGl2YXRlQnJlYWtwb2ludHMoKTsKICAgICB2b2lkIGRlYWN0aXZhdGVCcmVha3BvaW50
cygpOwogICAgIHZvaWQgc2V0U3RpY2t5QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgdW5z
aWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIGJvb2wgZW5hYmxlZCk7
CiAgICAgdm9pZCBzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29sIGVuYWJsZWQsIFN0cmlu
ZyogYnJlYWtwb2ludElkLCB1bnNpZ25lZCBpbnQqIGFjdHVhbExpbmVOdW1iZXIpOwogICAgIHZv
aWQgcmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCk7Ci0KICAgICB2
b2lkIGVkaXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5n
JiBuZXdDb250ZW50LCBib29sKiBzdWNjZXNzLCBTdHJpbmcqIHJlc3VsdCwgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiogbmV3Q2FsbEZyYW1lcyk7CiAgICAgdm9pZCBnZXRTY3JpcHRTb3VyY2UoY29u
c3QgU3RyaW5nJiBzb3VyY2VJRCwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpOwotCiAgICAgdm9pZCBz
Y2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KERlYnVnZ2VyRXZlbnRUeXBlIHR5cGUsIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGRhdGEpOwogICAgIHZvaWQgY2FuY2VsUGF1c2VPbk5leHRT
dGF0ZW1lbnQoKTsKICAgICB2b2lkIGJyZWFrUHJvZ3JhbShEZWJ1Z2dlckV2ZW50VHlwZSB0eXBl
LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBkYXRhKTsKQEAgLTc2LDggKzc2LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgc3RlcE92ZXIoKTsKICAgICB2b2lkIHN0ZXBJbnRvKCk7CiAgICAgdm9p
ZCBzdGVwT3V0KCk7Ci0KICAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobG9uZyBw
YXVzZVN0YXRlLCBsb25nKiBuZXdTdGF0ZSk7CisgICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1l
KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+KiByZXN1bHQpOworICAgIHZvaWQgZ2V0Q29tcGxldGlvbnNPbkNhbGxGcmFtZShQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgYm9vbCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4qIHJlc3VsdCk7CiAKICAgICB2b2lkIGNsZWFyRm9yUGFnZU5hdmlnYXRpb24oKTsKIApA
QCAtOTIsNiArOTMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZSgp
OwogCiAgICAgdm9pZCByZXN0b3JlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCB1
bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgYm9vbCBlbmFibGVk
KTsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckNhbGxGcmFtZUlkKEluc3Bl
Y3Rvck9iamVjdCogY2FsbEZyYW1lSWQpOwogCiAgICAgSW5zcGVjdG9yQ29udHJvbGxlciogbV9p
bnNwZWN0b3JDb250cm9sbGVyOwogICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGMwMzkwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5j
cHAKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JSdW50aW1lQWdlbnQuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNpbmNsdWRlICJJ
bmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Okluc3BlY3RvclJ1bnRp
bWVBZ2VudChJbmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0SG9zdCkKKyAgICA6IG1f
aW5qZWN0ZWRTY3JpcHRIb3N0KGluamVjdGVkU2NyaXB0SG9zdCkKK3sKK30KKworSW5zcGVjdG9y
UnVudGltZUFnZW50Ojp+SW5zcGVjdG9yUnVudGltZUFnZW50KCkgeyB9CisKK3ZvaWQgSW5zcGVj
dG9yUnVudGltZUFnZW50OjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0
IFN0cmluZyYgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sK
KyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRIb3N0
LT5pbmplY3RlZFNjcmlwdEZvck1haW5Xb3JsZCgpOworICAgIGlmICghaW5qZWN0ZWRTY3JpcHQu
aGFzTm9WYWx1ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0ZShleHByZXNzaW9u
LCBvYmplY3RHcm91cCwgcmVzdWx0KTsKK30KKwordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6
OmdldENvbXBsZXRpb25zKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRlSW5z
cGVjdG9yQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sK
KyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRIb3N0
LT5pbmplY3RlZFNjcmlwdEZvck1haW5Xb3JsZCgpOworICAgIGlmICghaW5qZWN0ZWRTY3JpcHQu
aGFzTm9WYWx1ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5nZXRDb21wbGV0aW9ucyhleHBy
ZXNzaW9uLCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIHJlc3VsdCk7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBvYmplY3RJZCwgYm9vbCBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgYm9vbCBhYmJy
ZXZpYXRlLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit7CisgICAgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElk
LmdldCgpKTsKKyAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAgICAg
aW5qZWN0ZWRTY3JpcHQuZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgaWdub3JlSGFzT3duUHJvcGVy
dHksIGFiYnJldmlhdGUsIHJlc3VsdCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50
OjpzZXRQcm9wZXJ0eVZhbHVlKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwg
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQoreworICAgIEluamVjdGVkU2NyaXB0IGluamVj
dGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZC5nZXQoKSk7Cisg
ICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCisgICAgICAgIGluamVjdGVkU2Ny
aXB0LnNldFByb3BlcnR5VmFsdWUob2JqZWN0SWQsIHByb3BlcnR5TmFtZSwgZXhwcmVzc2lvbiwg
cmVzdWx0KTsKK30KKwordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnB1c2hOb2RlVG9Gcm9u
dGVuZChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9
IGluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQuZ2V0KCkpOworICAgIGlmICghaW5q
ZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5wdXNoTm9k
ZVRvRnJvbnRlbmQob2JqZWN0SWQsIHJlc3VsdCk7Cit9CisKK0luamVjdGVkU2NyaXB0IEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChJbnNwZWN0b3JPYmpl
Y3QqIG9iamVjdElkKQoreworICAgIGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCA9IDA7CisgICAgYm9v
bCBzdWNjZXNzID0gb2JqZWN0SWQtPmdldE51bWJlcigiaW5qZWN0ZWRTY3JpcHRJZCIsICZpbmpl
Y3RlZFNjcmlwdElkKTsKKyAgICBpZiAoc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIG1faW5qZWN0
ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvcklkKGluamVjdGVkU2NyaXB0SWQpOworICAg
IHJldHVybiBJbmplY3RlZFNjcmlwdCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUnVudGltZUFnZW50LmgKc2ltaWxhcml0eSBpbmRleCA1OSUKY29weSBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCmNvcHkgdG8gU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IDlmYjRjNTAuLjFjZTQ4
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
MjgsNTcgKzI4LDQ5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgSW5qZWN0ZWRT
Y3JpcHRfaAotI2RlZmluZSBJbmplY3RlZFNjcmlwdF9oCisjaWZuZGVmIEluc3BlY3RvclJ1bnRp
bWVBZ2VudF9oCisjZGVmaW5lIEluc3BlY3RvclJ1bnRpbWVBZ2VudF9oCisKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQorCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgogCi0jaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVk
ZSAiU2NyaXB0T2JqZWN0LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsKK2NsYXNzIEluc3BlY3Rvck9i
amVjdDsKIGNsYXNzIEluc3BlY3RvclZhbHVlOwotY2xhc3MgU2NyaXB0RnVuY3Rpb25DYWxsOwog
Ci1jbGFzcyBJbmplY3RlZFNjcmlwdCB7CitjbGFzcyBJbnNwZWN0b3JSdW50aW1lQWdlbnQgOiBw
dWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgotICAgIEluamVjdGVkU2NyaXB0KCkgeyB9Ci0g
ICAgfkluamVjdGVkU2NyaXB0KCkgeyB9CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9y
UnVudGltZUFnZW50PiBjcmVhdGUoSW5qZWN0ZWRTY3JpcHRIb3N0KiBpbmplY3RlZFNjcmlwdEhv
c3QpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvclJ1bnRpbWVB
Z2VudChpbmplY3RlZFNjcmlwdEhvc3QpKTsKKyAgICB9CiAKLSAgICBib29sIGhhc05vVmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkU2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUoKTsgfQor
ICAgIH5JbnNwZWN0b3JSdW50aW1lQWdlbnQoKTsKIAorICAgIC8vIFBhcnQgb2YgdGhlIHByb3Rv
Y29sLgogICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBT
dHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAg
IHZvaWQgZXZhbHVhdGVJbkNhbGxGcmFtZShsb25nIGNhbGxGcmFtZSwgY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+KiByZXN1bHQpOwotICAgIHZvaWQgZXZhbHVhdGVPblNlbGYoY29uc3QgU3RyaW5nJiBmdW5j
dGlvbkJvZHksIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3VtZW50c0FycmF5LCBSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQgZ2V0Q29tcGxldGlvbnMoY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBib29sIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQ
SSwgbG9uZyBjYWxsRnJhbWVJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKyAg
ICB2b2lkIGdldENvbXBsZXRpb25zKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNs
dWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3Vs
dCk7CiAgICAgdm9pZCBnZXRQcm9wZXJ0aWVzKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBv
YmplY3RJZCwgYm9vbCBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgYm9vbCBhYmJyZXZpYXRlLCBSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQgcHVzaE5vZGVUb0Zyb250ZW5k
KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgUmVmUHRyPEluc3BlY3RvclZh
bHVlPiogcmVzdWx0KTsKLSAgICB2b2lkIHJlc29sdmVOb2RlKGxvbmcgbm9kZUlkLCBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQgZ2V0Tm9kZVByb3BlcnRpZXMobG9u
ZyBub2RlSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHByb3BlcnRpZXNBcnJheSwgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKLSAgICB2b2lkIGdldE5vZGVQcm90b3R5cGVz
KGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwogICAgIHZvaWQg
c2V0UHJvcGVydHlWYWx1ZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7Ci0KLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBjYWxsRnJhbWVzKCk7Ci0jZW5k
aWYKLQotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHdyYXBGb3JDb25zb2xlKFNjcmlw
dFZhbHVlKTsKLSAgICB2b2lkIHJlbGVhc2VXcmFwcGVyT2JqZWN0R3JvdXAoY29uc3QgU3RyaW5n
Jik7Ci0gICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9pbmpl
Y3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpOyB9CisgICAgdm9pZCBwdXNoTm9kZVRvRnJv
bnRlbmQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElkLCBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+KiByZXN1bHQpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBJbmplY3RlZFNjcmlw
dCBJbmplY3RlZFNjcmlwdEhvc3Q6OmluamVjdGVkU2NyaXB0Rm9yKFNjcmlwdFN0YXRlKik7Ci0g
ICAgZXhwbGljaXQgSW5qZWN0ZWRTY3JpcHQoU2NyaXB0T2JqZWN0KTsKLSAgICBib29sIGNhbkFj
Y2Vzc0luc3BlY3RlZFdpbmRvdygpOworICAgIEluc3BlY3RvclJ1bnRpbWVBZ2VudChJbmplY3Rl
ZFNjcmlwdEhvc3QqKTsKIAotICAgIHZvaWQgbWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25DYWxsJiwg
UmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdEZvck9iamVjdElkKEluc3BlY3Rvck9iamVjdCogb2JqZWN0SWQpOwogCi0gICAg
U2NyaXB0T2JqZWN0IG1faW5qZWN0ZWRTY3JpcHRPYmplY3Q7CisgICAgSW5qZWN0ZWRTY3JpcHRI
b3N0KiBtX2luamVjdGVkU2NyaXB0SG9zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKyNlbmRpZiAvLyBJbnNwZWN0
b3JSdW50aW1lQWdlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Db25zb2xlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ29uc29sZVZpZXcuanMKaW5kZXggODQzYzJiMy4uYWJjMDg0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBAIC0zNTUsMTQg
KzM1NSwxMSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICAvLyBDb2xsZWN0IGNvbW1hIHNlcGFyYXRlZCBvYmplY3QgcHJvcGVydGllcyBmb3IgdGhlIGNv
bXBsZXRpb24uCiAKICAgICAgICAgdmFyIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSA9
ICghZG90Tm90YXRpb24gJiYgIWJyYWNrZXROb3RhdGlvbik7Ci0gICAgICAgIHZhciBjYWxsRnJh
bWVJZCA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5zZWxlY3RlZENhbGxGcmFtZUlkKCkg
fHwgLTE7CiAgICAgICAgIHZhciBpbmplY3RlZFNjcmlwdEFjY2VzczsKLSAgICAgICAgaWYgKFdl
Ykluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cyAmJiBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMu
cGF1c2VkKSB7Ci0gICAgICAgICAgICB2YXIgc2VsZWN0ZWRDYWxsRnJhbWUgPSBXZWJJbnNwZWN0
b3IucGFuZWxzLnNjcmlwdHMuc2lkZWJhclBhbmVzLmNhbGxzdGFjay5zZWxlY3RlZENhbGxGcmFt
ZTsKLSAgICAgICAgICAgIHZhciBpbmplY3RlZFNjcmlwdElkID0gc2VsZWN0ZWRDYWxsRnJhbWUu
d29ybGRJZDsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB2YXIgaW5qZWN0ZWRTY3JpcHRJ
ZCA9IDA7Ci0gICAgICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0Q29tcGxldGlvbnMoaW5qZWN0ZWRT
Y3JpcHRJZCwgZXhwcmVzc2lvblN0cmluZywgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJ
LCBjYWxsRnJhbWVJZCwgcmVwb3J0Q29tcGxldGlvbnMpOworICAgICAgICBpZiAoV2ViSW5zcGVj
dG9yLnBhbmVscy5zY3JpcHRzICYmIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5wYXVzZWQp
CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldENvbXBsZXRpb25zT25DYWxsRnJhbWUo
V2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLnNlbGVjdGVkQ2FsbEZyYW1lSWQoKSwgZXhwcmVz
c2lvblN0cmluZywgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCByZXBvcnRDb21wbGV0
aW9ucyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0Q29t
cGxldGlvbnMoZXhwcmVzc2lvblN0cmluZywgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJ
LCByZXBvcnRDb21wbGV0aW9ucyk7CiAgICAgfSwKIAogICAgIF9yZXBvcnRDb21wbGV0aW9uczog
ZnVuY3Rpb24oYmVzdE1hdGNoT25seSwgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrLCBkb3ROb3Rh
dGlvbiwgYnJhY2tldE5vdGF0aW9uLCBwcmVmaXgsIHJlc3VsdCwgaXNFeGNlcHRpb24pIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVs
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMK
aW5kZXggNmFmMTI0Yi4uM2UxYjE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTM2Niw3ICszNjYsNyBAQCBXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChyZXN1bHQp
CiAgICAgICAgICAgICAgICAgY2FsbGJhY2soV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9t
UGF5bG9hZChyZXN1bHQpKTsKICAgICAgICAgfQotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmV2
YWx1YXRlSW5DYWxsRnJhbWUoY2FsbEZyYW1lLndvcmxkSWQsIGNhbGxGcmFtZS5pZCwgY29kZSwg
b2JqZWN0R3JvdXAsIGV2YWxDYWxsYmFjayk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZXZh
bHVhdGVPbkNhbGxGcmFtZShjYWxsRnJhbWUuaWQsIGNvZGUsIG9iamVjdEdyb3VwLCBldmFsQ2Fs
bGJhY2spOwogICAgIH0sCiAKICAgICBfZGVidWdnZXJQYXVzZWQ6IGZ1bmN0aW9uKGV2ZW50KQo=
</data>
<flag name="review"
          id="70831"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79419</attachid>
            <date>2011-01-19 07:09:31 -0800</date>
            <delta_ts>2011-01-19 07:17:16 -0800</delta_ts>
            <desc>[PATCH] Review comments addressed, for landing.</desc>
            <filename>runtime_agent_3</filename>
            <type>text/plain</type>
            <size>66725</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzY1ZTQxMy4uYTllOWZhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTExNjksNiArMTE2OSw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCiAgICAgaW5zcGVj
dG9yL0luc3BlY3RvclNldHRpbmdzLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5j
cHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZDFiOTI3Li4xYmZhNjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTEtMDEtMTkg
IFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBtZXRo
b2RzIGZyb20gSW5qZWN0ZWRTY3JpcHQgZG9tYWluIGludG8gRE9NLAorICAgICAgICBSdW50aW1l
IGFuZCBEZWJ1Z2dlciBkb21haW5zLiBJbnRyb2R1Y2UgSW5zcGVjdG9yUnVudGltZUFnZW50Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI3MTcKKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNw
ZWN0b3IucG06CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpnZXRDb21wbGV0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Z2V0Q29tcGxldGlvbnNPbkNhbGxGcmFtZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhv
c3Q6OmluamVjdGVkU2NyaXB0Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291
cmNlLmpzOgorICAgICAgICAoLik6CisgICAgICAgICgpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZWxlYXNlRnJvbnRl
bmRMaWZldGltZUFnZW50cyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0Tm9kZVByb3BlcnRpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldE5vZGVQcm90b3R5cGVzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjppbmplY3RlZFNjcmlwdEZvck5vZGVJZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudExpc3RlbmVySW5mbzo6RXZlbnRMaXN0ZW5lckluZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OkRPTUxpc3RlbmVyOjp+RE9NTGlzdGVuZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6Y2FzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6ZG9jdW1lbnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpl
dmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmdldENvbXBsZXRpb25zT25DYWxsRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JDYWxsRnJhbWVJZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Okluc3BlY3RvclJ1bnRpbWVBZ2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6On5JbnNwZWN0b3JSdW50aW1lQWdlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldENvbXBsZXRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNldFByb3BlcnR5VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpwdXNoTm9kZVRv
RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50Ojppbmpl
Y3RlZFNjcmlwdEZvck9iamVjdElkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVu
dGltZUFnZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdC5oLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpjcmVh
dGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLmNvbXBsZXRpb25zKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLmRvRXZhbEluQ2FsbEZyYW1lKToKKwog
MjAxMS0wMS0xOSAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0Bnb29nbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMjQ3Zjg4
MC4uOTM1Zjc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysr
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE5ODIsNiArMTk4Miw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBy
b2ZpbGVyQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcCBcCisJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2V0dGluZ3MuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2V0dGluZ3MuaCBcCiAJU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggODk3NThjYi4uOGEwMmM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjAzNSw2ICsyMDM1LDgg
QEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oJywKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgnLAorICAgICAgICAgICAg
J2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwJywKKyAgICAgICAgICAgICdpbnNw
ZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9J
bnNwZWN0b3JTdGF0ZS5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JTZXR0
aW5ncy5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yU2V0dGluZ3MuY3BwJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8KaW5kZXggYTg1NzI0Mi4uMmY0MmE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTEw
NjAsNiArMTA2MCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5j
cHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBcCisgICAgaW5z
cGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JTZXR0aW5ncy5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHAgXAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBcCkBAIC0xOTU2LDYgKzE5NTcsNyBA
QCBIRUFERVJTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgg
XAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggXAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggXAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclNldHRpbmdzLmggXAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
aW5kZXggOGJhM2M0Yy4uNGRmNDAzYyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY1MTYyLDYgKzY1MTYyLDE0IEBACiAJCQkJPgogCQkJPC9G
aWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JS
dW50aW1lQWdlbnQuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yUnVudGltZUFnZW50LmgiCisJCQkJPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0
b3JTZXR0aW5ncy5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmMDE1MzQuLmE2ZWM3MTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE2NjQsOSArMTY2NCwxMSBAQAogCQk3QTc0RUNCQTEwMTgzOUE2MDBCRjkzOUUgLyog
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0I4MTAxODM5QTUwMEJGOTM5RSAvKiBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwICovOyB9OwogCQk3QTc0RUNCQjEwMTgzOUE2MDBCRjkzOUUgLyog
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTc0RUNCOTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmggKi87IH07CiAJCTdBNzRFQ0JEMTAxODM5REEwMEJGOTM5RSAvKiBKU0lu
c3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc0RUNCQzEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0
b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwICovOyB9OworCQk3QUEzNjVFRTEyRTcyNjU0MDBEQ0Ey
NDIgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQTM2NUVEMTJFNzI2NTQwMERDQTI0MiAvKiBJbnNwZWN0
b3JSdW50aW1lQWdlbnQuY3BwICovOyB9OwogCQk3QUIwQjFDMDEyMTFBNjIyMDBBNzY5NDAgLyog
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QUIwQjFCRTEyMTFBNjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudC5jcHAgKi87IH07CiAJCTdBQjBCMUMxMTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QUIwQjFCRjEyMTFBNjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudC5oICovOyB9OwogCQk3QURFNzIyNjEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0FERTcyMjUxMENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLzsgfTsK
KwkJN0FGMTFBNUExMkU3Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGMTFBNTkxMkU3
Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oICovOyB9OwogCQk3QUZENEE4
QjExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGRDRBOEExMTMxQzI3NjAwMzVCODgzIC8q
IFNjcmlwdEJyZWFrcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QUZENEZGNDExMzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0
ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FG
RDRGRjMxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RTMzQ0QwMTEyN0YzNDBE
MDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3Jp
dHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
ODA4OSw5ICs4MDkxLDExIEBACiAJCTdBNzRFQ0I4MTAxODM5QTUwMEJGOTM5RSAvKiBJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0E3NEVDQjkxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E3NEVDQkMxMDE4MzlEQTAw
QkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FBMzY1RUQxMkU3MjY1NDAwRENBMjQy
IC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QUIwQjFCRTEyMTFBNjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JE
YXRhYmFzZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FCMEIxQkYx
MjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFiYXNlQWdlbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QURFNzIyNTEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1l
bnVQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZXh0TWVu
dVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBRjExQTU5MTJFNzI3
NDkwMDYxRjIzQyAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yUnVudGltZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEJyZWFrcG9pbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRDRGRjMxMTMyNzdCNjAwMzVCODgzIC8q
IFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NyaXB0RGVidWdMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTMz
Q0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQdXJnZVByaW9yaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMjk4Miw2ICsxMjk4Niw4IEBACiAJCQkJOUYwRDZCMkQxMjFCRkVCQTAwNkMwMjg4
IC8qIEluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCAqLywKIAkJCQk4MkFCMTc3MTEyNUM4MjY3MDBD
NTA2OUQgLyogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgKi8sCiAJCQkJODJBQjE3NzIxMjVD
ODI2NzAwQzUwNjlEIC8qIEluc3BlY3RvclJlc291cmNlQWdlbnQuaCAqLywKKwkJCQk3QUEzNjVF
RDEyRTcyNjU0MDBEQ0EyNDIgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCAqLywKKwkJCQk3
QUYxMUE1OTEyRTcyNzQ5MDA2MUYyM0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggKi8sCiAJ
CQkJNEZBM0I5MDgxMjVDRDEyMTAwMzAwQkFEIC8qIEluc3BlY3RvclN0YXRlLmNwcCAqLywKIAkJ
CQk0RkEzQjkwOTEyNUNEMTIyMDAzMDBCQUQgLyogSW5zcGVjdG9yU3RhdGUuaCAqLywKIAkJCQk4
MkFCMTc2RjEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgKi8sCkBA
IC0yMjM2Nyw2ICsyMjM3Myw3IEBACiAJCQkJMkUzN0UwMDYxMkRCQzVBNDAwQTZCMjMzIC8qIEpT
RE9NVVJMLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTU2NDBDMDEyREY5RTVFMDBGNDUzNkQgLyog
SW5zcGVjdG9yU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzRDRDNDc5MTJFMDc2NjMw
MDNEQTE1MCAvKiBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJN0FGMTFBNUExMkU3Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yNTA1Niw2ICsyNTA2Myw3IEBACiAJCQkJMkUzN0UwMDUxMkRC
QzVBNDAwQTZCMjMzIC8qIEpTRE9NVVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBNTY0MEJG
MTJERjlFNUUwMEY0NTM2RCAvKiBJbnNwZWN0b3JTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGM0Q0QzQ3ODEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2Vy
QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0FBMzY1RUUxMkU3MjY1NDAwRENBMjQyIC8q
IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KaW5kZXggMTZhNjA3
MC4uZWE5OGQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5l
cmF0b3JJbnNwZWN0b3IucG0KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5l
cmF0b3JJbnNwZWN0b3IucG0KQEAgLTczLDYgKzczLDExIEBAICR0eXBlVHJhbnNmb3JteyJQcm9m
aWxlciJ9ID0gewogICAgICJoZWFkZXIiID0+ICJJbnNwZWN0b3JQcm9maWxlckFnZW50LmgiLAog
ICAgICJkb21haW5BY2Nlc3NvciIgPT4gIm1faW5zcGVjdG9yQ29udHJvbGxlci0+bV9wcm9maWxl
ckFnZW50IiwKIH07CiskdHlwZVRyYW5zZm9ybXsiUnVudGltZSJ9ID0geworICAgICJmb3J3YXJk
IiA9PiAiSW5zcGVjdG9yUnVudGltZUFnZW50IiwKKyAgICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9y
UnVudGltZUFnZW50LmgiLAorICAgICJkb21haW5BY2Nlc3NvciIgPT4gIm1faW5zcGVjdG9yQ29u
dHJvbGxlci0+bV9ydW50aW1lQWdlbnQiLAorfTsKIAogJHR5cGVUcmFuc2Zvcm17IkZyb250ZW5k
In0gPSB7CiAgICAgImZvcndhcmQiID0+ICJJbnNwZWN0b3JGcm9udGVuZCIsCkBAIC0xMTcsNyAr
MTIyLDcgQEAgJHR5cGVUcmFuc2Zvcm17IlN0cmluZyJ9ID0gewogICAgICJ2YXJpYWJsZSIgPT4g
IlN0cmluZyIsCiAgICAgInJldHVybiIgPT4gIlN0cmluZyIsCiAgICAgImRlZmF1bHRWYWx1ZSIg
PT4gIlwiXCIiLAotICAgICJmb3J3YXJkSGVhZGVyIiA9PiAid3RmL0ZvcndhcmQuaCIsCisgICAg
ImZvcndhcmRIZWFkZXIiID0+ICJQbGF0Zm9ybVN0cmluZy5oIiwKICAgICAiaGVhZGVyIiA9PiAi
UGxhdGZvcm1TdHJpbmcuaCIsCiAgICAgIkpTT05UeXBlIiA9PiAiU3RyaW5nIiwKICAgICAiSlNU
eXBlIiA9PiAic3RyaW5nIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dC5jcHAKaW5kZXggZjI4NDYyNy4uMTk2OWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC01MiwxMCArNTIsMTAgQEAgdm9pZCBJbmplY3RlZFNj
cmlwdDo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9i
amVjdEdyb3UKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgcmVzdWx0KTsKIH0KIAotdm9pZCBJbmpl
Y3RlZFNjcmlwdDo6ZXZhbHVhdGVJbkNhbGxGcmFtZShsb25nIGNhbGxGcmFtZSwgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+KiByZXN1bHQpCit2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZy
YW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+KiByZXN1bHQpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5q
ZWN0ZWRTY3JpcHRPYmplY3QsICJldmFsdWF0ZUluQ2FsbEZyYW1lIik7Ci0gICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImV2YWx1YXRlT25DYWxsRnJhbWUiKTsKKyAgICBm
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVJZC0+dG9KU09OU3RyaW5nKCkpOwogICAg
IGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Npb24pOwogICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KG9iamVjdEdyb3VwKTsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgcmVzdWx0KTsK
QEAgLTY5LDEyICs2OSwyMCBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uU2VsZihj
b25zdCBTdHJpbmcmIGZ1bmN0aW9uQm9keSwgUGFzc1JlZlB0cjxJbnNwZQogICAgIG1ha2VDYWxs
KGZ1bmN0aW9uLCByZXN1bHQpOwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0OjpnZXRDb21wbGV0
aW9ucyhjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGJvb2wgaW5jbHVkZUluc3BlY3RvckNvbW1h
bmRMaW5lQVBJLCBsb25nIGNhbGxGcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1
bHQpCit2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRDb21wbGV0aW9ucyhjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sIGJvb2wgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCBSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+KiByZXN1bHQpCiB7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9u
KG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJnZXRDb21wbGV0aW9ucyIpOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Npb24pOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSk7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQoY2FsbEZyYW1lSWQpOworICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCByZXN1bHQpOworfQor
Cit2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRDb21wbGV0aW9uc09uQ2FsbEZyYW1lKFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBib29sIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSwgUmVmUHRyPEluc3BlY3RvclZh
bHVlPiogcmVzdWx0KQoreworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVj
dGVkU2NyaXB0T2JqZWN0LCAiZ2V0Q29tcGxldGlvbnNPbkNhbGxGcmFtZSIpOworICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZUlkLT50b0pTT05TdHJpbmcoKSk7CisgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQoaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJKTsKICAgICBtYWtlQ2FsbChmdW5j
dGlvbiwgcmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuaAppbmRleCA5ZmI0YzUwLi4wYTNmMjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHQuaApAQCAtNTEsOSArNTEsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFz
Tm9WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRPYmplY3QuaGFzTm9WYWx1
ZSgpOyB9CiAKICAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29u
c3QgU3RyaW5nJiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsK
LSAgICB2b2lkIGV2YWx1YXRlSW5DYWxsRnJhbWUobG9uZyBjYWxsRnJhbWUsIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUoUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24s
IGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3Vs
dCk7CiAgICAgdm9pZCBldmFsdWF0ZU9uU2VsZihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uQm9keSwg
UGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJndW1lbnRzQXJyYXksIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRDb21wbGV0aW9ucyhjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sIGJvb2wgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCBsb25nIGNh
bGxGcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOworICAgIHZvaWQgZ2V0
Q29tcGxldGlvbnMoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBib29sIGluY2x1ZGVJbnNwZWN0
b3JDb21tYW5kTGluZUFQSSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKyAgICB2
b2lkIGdldENvbXBsZXRpb25zT25DYWxsRnJhbWUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGJvb2wgaW5jbHVkZUluc3Bl
Y3RvckNvbW1hbmRMaW5lQVBJLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwogICAg
IHZvaWQgZ2V0UHJvcGVydGllcyhQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQs
IGJvb2wgaWdub3JlSGFzT3duUHJvcGVydHksIGJvb2wgYWJicmV2aWF0ZSwgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiogcmVzdWx0KTsKICAgICB2b2lkIHB1c2hOb2RlVG9Gcm9udGVuZChQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJl
c3VsdCk7CiAgICAgdm9pZCByZXNvbHZlTm9kZShsb25nIG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiogcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0SG9zdC5jcHAKaW5kZXggZjIzZDhlYy4uYmU1YjEyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTgwLDc2ICs4MCwxMyBA
QCBJbmplY3RlZFNjcmlwdEhvc3Q6On5JbmplY3RlZFNjcmlwdEhvc3QoKQogewogfQogCi12b2lk
IEluamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBj
b25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQp
Ci17Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZv
ck1haW5Xb3JsZCgpOwotICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAg
ICAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0ZShleHByZXNzaW9uLCBvYmplY3RHcm91cCwgcmVz
dWx0KTsKLX0KLQotdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmV2YWx1YXRlSW5DYWxsRnJhbWUo
bG9uZyBpbmplY3RlZFNjcmlwdElkLCBsb25nIGNhbGxGcmFtZSwgY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
KiByZXN1bHQpCi17Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3Rl
ZFNjcmlwdElkID8gbV9pZFRvSW5qZWN0ZWRTY3JpcHQuZ2V0KGluamVjdGVkU2NyaXB0SWQpIDog
aW5qZWN0ZWRTY3JpcHRGb3JNYWluV29ybGQoKTsKLSAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkKLSAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGVJbkNhbGxGcmFtZShj
YWxsRnJhbWUsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCByZXN1bHQpOwotfQotCiB2b2lkIElu
amVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVPblNlbGYoY29uc3QgU3RyaW5nJiBmdW5jdGlvbkJv
ZHksIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3VtZW50c0FycmF5LCBSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+KiByZXN1bHQpCiB7Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHQgPSBpbmplY3RlZFNjcmlwdEZvck1haW5Xb3JsZCgpOworICAgIEluamVjdGVkU2NyaXB0IGlu
amVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JNYWluRnJhbWUoKTsKICAgICBpZiAoIWlu
amVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVh
dGVPblNlbGYoZnVuY3Rpb25Cb2R5LCBhcmd1bWVudHNBcnJheSwgcmVzdWx0KTsKIH0KIAotdm9p
ZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmdldENvbXBsZXRpb25zKGxvbmcgaW5qZWN0ZWRTY3JpcHRJ
ZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBib29sIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5k
TGluZUFQSSwgbG9uZyBjYWxsRnJhbWVJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0
KQotewotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRJ
ZCA/IG1faWRUb0luamVjdGVkU2NyaXB0LmdldChpbmplY3RlZFNjcmlwdElkKSA6IGluamVjdGVk
U2NyaXB0Rm9yTWFpbldvcmxkKCk7Ci0gICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVl
KCkpCi0gICAgICAgIGluamVjdGVkU2NyaXB0LmdldENvbXBsZXRpb25zKGV4cHJlc3Npb24sIGlu
Y2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSwgY2FsbEZyYW1lSWQsIHJlc3VsdCk7Ci19Ci0K
LXZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRQcm9wZXJ0aWVzKFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBvYmplY3RJZCwgYm9vbCBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgYm9vbCBhYmJy
ZXZpYXRlLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCi17Ci0gICAgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElk
LmdldCgpKTsKLSAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAg
aW5qZWN0ZWRTY3JpcHQuZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgaWdub3JlSGFzT3duUHJvcGVy
dHksIGFiYnJldmlhdGUsIHJlc3VsdCk7Ci19Ci0KLXZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0Ojpw
dXNoTm9kZVRvRnJvbnRlbmQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElkLCBS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCi17Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5q
ZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkLmdldCgpKTsK
LSAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgaW5qZWN0ZWRT
Y3JpcHQucHVzaE5vZGVUb0Zyb250ZW5kKG9iamVjdElkLCByZXN1bHQpOwotfQotCi12b2lkIElu
amVjdGVkU2NyaXB0SG9zdDo6cmVzb2x2ZU5vZGUobG9uZyBub2RlSWQsIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4qIHJlc3VsdCkKLXsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9
IGluamVjdGVkU2NyaXB0Rm9yTm9kZUlkKG5vZGVJZCk7Ci0gICAgaWYgKCFpbmplY3RlZFNjcmlw
dC5oYXNOb1ZhbHVlKCkpCi0gICAgICAgIGluamVjdGVkU2NyaXB0LnJlc29sdmVOb2RlKG5vZGVJ
ZCwgcmVzdWx0KTsKLX0KLQotdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmdldE5vZGVQcm9wZXJ0
aWVzKGxvbmcgbm9kZUlkLCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBwcm9wZXJ0aWVzQXJy
YXksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKLXsKLSAgICBJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yTm9kZUlkKG5vZGVJZCk7Ci0gICAg
aWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCi0gICAgICAgIGluamVjdGVkU2NyaXB0
LmdldE5vZGVQcm9wZXJ0aWVzKG5vZGVJZCwgcHJvcGVydGllc0FycmF5LCByZXN1bHQpOwotfQot
Ci12b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6Z2V0Tm9kZVByb3RvdHlwZXMobG9uZyBub2RlSWQs
IFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKLXsKLSAgICBJbmplY3RlZFNjcmlwdCBp
bmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yTm9kZUlkKG5vZGVJZCk7Ci0gICAgaWYg
KCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCi0gICAgICAgIGluamVjdGVkU2NyaXB0Lmdl
dE5vZGVQcm90b3R5cGVzKG5vZGVJZCwgcmVzdWx0KTsKLX0KLQotdm9pZCBJbmplY3RlZFNjcmlw
dEhvc3Q6OnNldFByb3BlcnR5VmFsdWUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVj
dElkLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCi17Ci0gICAgSW5qZWN0ZWRTY3JpcHQg
aW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkLmdldCgp
KTsKLSAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgaW5qZWN0
ZWRTY3JpcHQuc2V0UHJvcGVydHlWYWx1ZShvYmplY3RJZCwgcHJvcGVydHlOYW1lLCBleHByZXNz
aW9uLCByZXN1bHQpOwotfQotCiB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6Y2xlYXJDb25zb2xl
TWVzc2FnZXMoKQogewogICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCkBAIC0yMTgsNiAr
MTU1LDIwIEBAIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0SG9zdDo6aW5qZWN0ZWRTY3Jp
cHRGb3JJZChsb25nIGlkKQogICAgIHJldHVybiBtX2lkVG9JbmplY3RlZFNjcmlwdC5nZXQoaWQp
OwogfQogCitJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdEhvc3Q6OmluamVjdGVkU2NyaXB0
Rm9yT2JqZWN0SWQoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3RJZCkKK3sKKyAgICBsb25nIGluamVj
dGVkU2NyaXB0SWQgPSAwOworICAgIGJvb2wgc3VjY2VzcyA9IG9iamVjdElkLT5nZXROdW1iZXIo
ImluamVjdGVkU2NyaXB0SWQiLCAmaW5qZWN0ZWRTY3JpcHRJZCk7CisgICAgaWYgKHN1Y2Nlc3Mp
CisgICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdEZvcklkKGluamVjdGVkU2NyaXB0SWQpOwor
ICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOworfQorCitJbmplY3RlZFNjcmlwdCBJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmluamVjdGVkU2NyaXB0Rm9yTWFpbkZyYW1lKCkKK3sKKyAgICByZXR1cm4g
aW5qZWN0ZWRTY3JpcHRGb3IobWFpbldvcmxkU2NyaXB0U3RhdGUobV9pbnNwZWN0b3JDb250cm9s
bGVyLT5pbnNwZWN0ZWRQYWdlKCktPm1haW5GcmFtZSgpKSk7Cit9CisKIHZvaWQgSW5qZWN0ZWRT
Y3JpcHRIb3N0OjpkaXNjYXJkSW5qZWN0ZWRTY3JpcHRzKCkKIHsKICAgICBJZFRvSW5qZWN0ZWRT
Y3JpcHRNYXA6Oml0ZXJhdG9yIGVuZCA9IG1faWRUb0luamVjdGVkU2NyaXB0LmVuZCgpOwpAQCAt
MjgzLDQzICsyMzQsNiBAQCB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6ZGlkRGVzdHJveVdvcmtl
cihsb25nIGlkKQogfQogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQogCi1JbmplY3RlZFNjcmlw
dCBJbmplY3RlZFNjcmlwdEhvc3Q6OmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoSW5zcGVjdG9y
T2JqZWN0KiBvYmplY3RJZCkKLXsKLSAgICBsb25nIGluamVjdGVkU2NyaXB0SWQgPSAwOwotICAg
IGJvb2wgc3VjY2VzcyA9IG9iamVjdElkLT5nZXROdW1iZXIoImluamVjdGVkU2NyaXB0SWQiLCAm
aW5qZWN0ZWRTY3JpcHRJZCk7Ci0gICAgaWYgKHN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBtX2lk
VG9JbmplY3RlZFNjcmlwdC5nZXQoaW5qZWN0ZWRTY3JpcHRJZCk7Ci0gICAgcmV0dXJuIEluamVj
dGVkU2NyaXB0KCk7Ci19Ci0KLUluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0SG9zdDo6aW5q
ZWN0ZWRTY3JpcHRGb3JOb2RlSWQobG9uZyBub2RlSWQpCi17Ci0gICAgaWYgKCFtX2luc3BlY3Rv
ckNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwotCi0gICAgRnJh
bWUqIGZyYW1lID0gMDsKLSAgICBpZiAobm9kZUlkKSB7Ci0gICAgICAgIEFTU0VSVChtX2luc3Bl
Y3RvckNvbnRyb2xsZXItPmRvbUFnZW50KCkpOwotICAgICAgICBOb2RlKiBub2RlID0gbV9pbnNw
ZWN0b3JDb250cm9sbGVyLT5kb21BZ2VudCgpLT5ub2RlRm9ySWQobm9kZUlkKTsKLSAgICAgICAg
aWYgKG5vZGUpIHsKLSAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUtPm93bmVy
RG9jdW1lbnQoKTsKLSAgICAgICAgICAgIGlmIChkb2N1bWVudCkKLSAgICAgICAgICAgICAgICBm
cmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAg
IGZyYW1lID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCktPm1haW5GcmFt
ZSgpOwotCi0gICAgaWYgKGZyYW1lKQotICAgICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRGb3Io
bWFpbldvcmxkU2NyaXB0U3RhdGUoZnJhbWUpKTsKLQotICAgIHJldHVybiBJbmplY3RlZFNjcmlw
dCgpOwotfQotCi1JbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdEhvc3Q6OmluamVjdGVkU2Ny
aXB0Rm9yTWFpbldvcmxkKCkKLXsKLSAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRGb3IobWFpbldv
cmxkU2NyaXB0U3RhdGUobV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCktPm1h
aW5GcmFtZSgpKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmgKaW5kZXggNGNiNjIyZC4uMTA4ZjExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBEYXRh
YmFzZTsKIGNsYXNzIEluamVjdGVkU2NyaXB0OwogY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQ7CiBj
bGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIE5v
ZGU7CiBjbGFzcyBTY3JpcHRPYmplY3Q7CiBjbGFzcyBTdG9yYWdlOwpAQCAtNTksMTYgKzYwLDcg
QEAgcHVibGljOgogICAgIH5JbmplY3RlZFNjcmlwdEhvc3QoKTsKIAogICAgIC8vIFBhcnQgb2Yg
dGhlIHByb3RvY29sLgotICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1
bHQpOwotICAgIHZvaWQgZXZhbHVhdGVJbkNhbGxGcmFtZShsb25nIGluamVjdGVkU2NyaXB0SWQs
IGxvbmcgY2FsbEZyYW1lLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYg
b2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CiAgICAgdm9pZCBl
dmFsdWF0ZU9uU2VsZihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uQm9keSwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gYXJndW1lbnRzQXJyYXksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3Vs
dCk7Ci0gICAgdm9pZCBnZXRDb21wbGV0aW9ucyhsb25nIGluamVjdGVkU2NyaXB0SWQsIGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEks
IGxvbmcgY2FsbEZyYW1lSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAg
dm9pZCBnZXRQcm9wZXJ0aWVzKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwg
Ym9vbCBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgYm9vbCBhYmJyZXZpYXRlLCBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQgcHVzaE5vZGVUb0Zyb250ZW5kKFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVz
dWx0KTsKLSAgICB2b2lkIHJlc29sdmVOb2RlKGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQgZ2V0Tm9kZVByb3BlcnRpZXMobG9uZyBub2RlSWQs
IFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHByb3BlcnRpZXNBcnJheSwgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiogcmVzdWx0KTsKLSAgICB2b2lkIGdldE5vZGVQcm90b3R5cGVzKGxvbmcgbm9k
ZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQgc2V0UHJvcGVy
dHlWYWx1ZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIGNvbnN0IFN0cmlu
ZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4qIHJlc3VsdCk7CiAKICAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JD
b250cm9sbGVyKCkgeyByZXR1cm4gbV9pbnNwZWN0b3JDb250cm9sbGVyOyB9CiAgICAgdm9pZCBk
aXNjb25uZWN0Q29udHJvbGxlcigpIHsgbV9pbnNwZWN0b3JDb250cm9sbGVyID0gMDsgfQpAQCAt
OTYsNiArODgsOCBAQCBwdWJsaWM6CiAgICAgcGFpcjxsb25nLCBTY3JpcHRPYmplY3Q+IGluamVj
dFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgU2NyaXB0U3RhdGUqKTsKICAgICBJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvcihTY3JpcHRTdGF0ZSopOwogICAgIEluamVjdGVkU2Ny
aXB0IGluamVjdGVkU2NyaXB0Rm9ySWQobG9uZyk7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0
ZWRTY3JpcHRGb3JPYmplY3RJZChJbnNwZWN0b3JPYmplY3QqIG9iamVjdElkKTsKKyAgICBJbmpl
Y3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvck1haW5GcmFtZSgpOwogICAgIHZvaWQgZGlzY2Fy
ZEluamVjdGVkU2NyaXB0cygpOwogICAgIHZvaWQgcmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cChs
b25nIGluamVjdGVkU2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOwogCkBAIC0x
MDksMTAgKzEwMyw2IEBAIHByaXZhdGU6CiAgICAgU2NyaXB0T2JqZWN0IGNyZWF0ZUluamVjdGVk
U2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGxv
bmcgaWQpOwogICAgIHZvaWQgZGlzY2FyZEluamVjdGVkU2NyaXB0KFNjcmlwdFN0YXRlKik7CiAK
LSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvck9iamVjdElkKEluc3BlY3Rvck9i
amVjdCogb2JqZWN0SWQpOwotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yTm9k
ZUlkKGxvbmcgbm9kZUlkKTsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvck1h
aW5Xb3JsZCgpOwotCiAgICAgSW5zcGVjdG9yQ29udHJvbGxlciogbV9pbnNwZWN0b3JDb250cm9s
bGVyOwogICAgIGxvbmcgbV9uZXh0SW5qZWN0ZWRTY3JpcHRJZDsKICAgICBsb25nIG1fbGFzdFdv
cmtlcklkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0U291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291
cmNlLmpzCmluZGV4IDQ2ODM5OTcuLjNhYTI0YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTE4NiwyOSArMTg2LDE0IEBAIElu
amVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHBy
b3BlcnR5TmFtZVNldCk7CiAgICAgfSwKIAotICAgIGdldENvbXBsZXRpb25zOiBmdW5jdGlvbihl
eHByZXNzaW9uLCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIGNhbGxGcmFtZUlkKQor
ICAgIGdldENvbXBsZXRpb25zOiBmdW5jdGlvbihleHByZXNzaW9uLCBpbmNsdWRlSW5zcGVjdG9y
Q29tbWFuZExpbmVBUEkpCiAgICAgewogICAgICAgICB2YXIgcHJvcHMgPSB7fTsKICAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgIHZhciBleHByZXNzaW9uUmVzdWx0OwotICAgICAgICAgICAgLy8g
RXZhbHVhdGUgb24gY2FsbCBmcmFtZSBpZiBjYWxsIGZyYW1lIGlkIGlzIGF2YWlsYWJsZS4KLSAg
ICAgICAgICAgIGlmIChjYWxsRnJhbWVJZCAhPT0gLTEpIHsKLSAgICAgICAgICAgICAgICB2YXIg
Y2FsbEZyYW1lID0gdGhpcy5fY2FsbEZyYW1lRm9ySWQoY2FsbEZyYW1lSWQpOwotICAgICAgICAg
ICAgICAgIGlmICghY2FsbEZyYW1lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHM7
Ci0gICAgICAgICAgICAgICAgaWYgKGV4cHJlc3Npb24pCi0gICAgICAgICAgICAgICAgICAgIGV4
cHJlc3Npb25SZXN1bHQgPSB0aGlzLl9ldmFsdWF0ZU9uKGNhbGxGcmFtZS5ldmFsdWF0ZSwgY2Fs
bEZyYW1lLCBleHByZXNzaW9uLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgLy8gRXZhbHVhdGUgaW50byBwcm9wZXJ0aWVzIGluIHNjb3BlIG9mIHRo
ZSBzZWxlY3RlZCBjYWxsIGZyYW1lLgotICAgICAgICAgICAgICAgICAgICB2YXIgc2NvcGVDaGFp
biA9IGNhbGxGcmFtZS5zY29wZUNoYWluOwotICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHNjb3BlQ2hhaW4ubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLl9wb3B1bGF0ZVByb3BlcnR5TmFtZXMoc2NvcGVDaGFpbltpXSwgcHJvcHMpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCFleHByZXNzaW9uKQotICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uID0gInRoaXMiOwot
ICAgICAgICAgICAgICAgIGV4cHJlc3Npb25SZXN1bHQgPSB0aGlzLl9ldmFsdWF0ZU9uKGluc3Bl
Y3RlZFdpbmRvdy5ldmFsLCBpbnNwZWN0ZWRXaW5kb3csIGV4cHJlc3Npb24sIGZhbHNlKTsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghZXhwcmVzc2lvbikKKyAgICAgICAgICAgICAg
ICBleHByZXNzaW9uID0gInRoaXMiOworICAgICAgICAgICAgdmFyIGV4cHJlc3Npb25SZXN1bHQg
PSB0aGlzLl9ldmFsdWF0ZU9uKGluc3BlY3RlZFdpbmRvdy5ldmFsLCBpbnNwZWN0ZWRXaW5kb3cs
IGV4cHJlc3Npb24sIGZhbHNlKTsKKwogICAgICAgICAgICAgaWYgKHR5cGVvZiBleHByZXNzaW9u
UmVzdWx0ID09PSAib2JqZWN0IikKICAgICAgICAgICAgICAgICB0aGlzLl9wb3B1bGF0ZVByb3Bl
cnR5TmFtZXMoZXhwcmVzc2lvblJlc3VsdCwgcHJvcHMpOwogICAgIApAQCAtMjIxLDYgKzIwNiwz
NCBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBwcm9wczsK
ICAgICB9LAogCisgICAgZ2V0Q29tcGxldGlvbnNPbkNhbGxGcmFtZTogZnVuY3Rpb24oY2FsbEZy
YW1lSWQsIGV4cHJlc3Npb24sIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSkKKyAgICB7
CisgICAgICAgIHZhciBwcm9wcyA9IHt9OworICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFy
IGNhbGxGcmFtZSA9IHRoaXMuX2NhbGxGcmFtZUZvcklkKGNhbGxGcmFtZUlkKTsKKyAgICAgICAg
ICAgIGlmICghY2FsbEZyYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiBwcm9wczsKKworICAg
ICAgICAgICAgaWYgKGV4cHJlc3Npb24pIHsKKyAgICAgICAgICAgICAgICB2YXIgZXhwcmVzc2lv
blJlc3VsdCA9IHRoaXMuX2V2YWx1YXRlT24oY2FsbEZyYW1lLmV2YWx1YXRlLCBjYWxsRnJhbWUs
IGV4cHJlc3Npb24sIHRydWUpOworICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZXhwcmVzc2lv
blJlc3VsdCA9PT0gIm9iamVjdCIpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRl
UHJvcGVydHlOYW1lcyhleHByZXNzaW9uUmVzdWx0LCBwcm9wcyk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIC8vIEV2YWx1YXRlIGludG8gcHJvcGVydGllcyBpbiBzY29w
ZSBvZiB0aGUgc2VsZWN0ZWQgY2FsbCBmcmFtZS4KKyAgICAgICAgICAgICAgICB2YXIgc2NvcGVD
aGFpbiA9IGNhbGxGcmFtZS5zY29wZUNoYWluOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgc2NvcGVDaGFpbi5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy5fcG9wdWxhdGVQcm9wZXJ0eU5hbWVzKHNjb3BlQ2hhaW5baV0sIHByb3BzKTsKKyAgICAgICAg
ICAgIH0KKyAgICAKKyAgICAgICAgICAgIGlmIChpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVB
UEkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIHRoaXMuX2NvbW1hbmRMaW5l
QVBJKQorICAgICAgICAgICAgICAgICAgICBwcm9wc1twcm9wXSA9IHRydWU7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICB9CisgICAgICAgIHJldHVybiBwcm9w
czsKKyAgICB9LAorCiAgICAgZXZhbHVhdGU6IGZ1bmN0aW9uKGV4cHJlc3Npb24sIG9iamVjdEdy
b3VwKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlQW5kV3JhcChpbnNwZWN0
ZWRXaW5kb3cuZXZhbCwgaW5zcGVjdGVkV2luZG93LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwg
ZmFsc2UpOwpAQCAtMjc4LDcgKzI5MSw3IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9LAogCi0gICAgZXZhbHVhdGVJbkNhbGxGcmFt
ZTogZnVuY3Rpb24oY2FsbEZyYW1lSWQsIGNvZGUsIG9iamVjdEdyb3VwKQorICAgIGV2YWx1YXRl
T25DYWxsRnJhbWU6IGZ1bmN0aW9uKGNhbGxGcmFtZUlkLCBjb2RlLCBvYmplY3RHcm91cCkKICAg
ICB7CiAgICAgICAgIHZhciBjYWxsRnJhbWUgPSB0aGlzLl9jYWxsRnJhbWVGb3JJZChjYWxsRnJh
bWVJZCk7CiAgICAgICAgIGlmICghY2FsbEZyYW1lKQpAQCAtMjg2LDEwICsyOTksMTIgQEAgSW5q
ZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVB
bmRXcmFwKGNhbGxGcmFtZS5ldmFsdWF0ZSwgY2FsbEZyYW1lLCBjb2RlLCBvYmplY3RHcm91cCwg
dHJ1ZSk7CiAgICAgfSwKIAotICAgIF9jYWxsRnJhbWVGb3JJZDogZnVuY3Rpb24oaWQpCisgICAg
X2NhbGxGcmFtZUZvcklkOiBmdW5jdGlvbihjYWxsRnJhbWVJZCkKICAgICB7CisgICAgICAgIHZh
ciBwYXJzZWRDYWxsRnJhbWVJZCA9IGV2YWwoIigiICsgY2FsbEZyYW1lSWQgKyAiKSIpOworICAg
ICAgICB2YXIgb3JkaW5hbCA9IHBhcnNlZENhbGxGcmFtZUlkLm9yZGluYWw7CiAgICAgICAgIHZh
ciBjYWxsRnJhbWUgPSBJbmplY3RlZFNjcmlwdEhvc3QuY3VycmVudENhbGxGcmFtZSgpOwotICAg
ICAgICB3aGlsZSAoLS1pZCA+PSAwICYmIGNhbGxGcmFtZSkKKyAgICAgICAgd2hpbGUgKC0tb3Jk
aW5hbCA+PSAwICYmIGNhbGxGcmFtZSkKICAgICAgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFt
ZS5jYWxsZXI7CiAgICAgICAgIHJldHVybiBjYWxsRnJhbWU7CiAgICAgfSwKQEAgLTUzMSwxNiAr
NTQ2LDE1IEBAIEluamVjdGVkU2NyaXB0LlJlbW90ZU9iamVjdC5mcm9tT2JqZWN0ID0gZnVuY3Rp
b24ob2JqZWN0LCBvYmplY3RJZCwgYWJicmV2aWF0ZSkKICAgICB9CiB9CiAKLUluamVjdGVkU2Ny
aXB0LkNhbGxGcmFtZVByb3h5ID0gZnVuY3Rpb24oaWQsIGNhbGxGcmFtZSkKK0luamVjdGVkU2Ny
aXB0LkNhbGxGcmFtZVByb3h5ID0gZnVuY3Rpb24ob3JkaW5hbCwgY2FsbEZyYW1lKQogewotICAg
IHRoaXMuaWQgPSBpZDsKKyAgICB0aGlzLmlkID0geyBvcmRpbmFsOiBvcmRpbmFsLCBpbmplY3Rl
ZFNjcmlwdElkOiBpbmplY3RlZFNjcmlwdElkIH07CiAgICAgdGhpcy50eXBlID0gY2FsbEZyYW1l
LnR5cGU7CiAgICAgdGhpcy5mdW5jdGlvbk5hbWUgPSAodGhpcy50eXBlID09PSAiZnVuY3Rpb24i
ID8gY2FsbEZyYW1lLmZ1bmN0aW9uTmFtZSA6ICIiKTsKICAgICB0aGlzLnNvdXJjZUlEID0gY2Fs
bEZyYW1lLnNvdXJjZUlEOwogICAgIHRoaXMubGluZSA9IGNhbGxGcmFtZS5saW5lOwogICAgIHRo
aXMuY29sdW1uID0gY2FsbEZyYW1lLmNvbHVtbjsKICAgICB0aGlzLnNjb3BlQ2hhaW4gPSB0aGlz
Ll93cmFwU2NvcGVDaGFpbihjYWxsRnJhbWUpOwotICAgIHRoaXMud29ybGRJZCA9IGluamVjdGVk
U2NyaXB0SWQ7CiB9CiAKIEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5LnByb3RvdHlwZSA9
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKaW5kZXggNzM5YzMzNi4uMGRi
YTUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTcxLDE5ICs3
MSwxOSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lkIGRl
bGV0ZUNvb2tpZShpbiBTdHJpbmcgY29va2llTmFtZSwgaW4gU3RyaW5nIGRvbWFpbik7CiAKICAg
ICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAgICAgLy8gUnVudGltZQorICAgICAgICAvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLworCisgICAgICAgIFtkb21haW49UnVudGltZV0gdm9pZCBldmFsdWF0ZShpbiBTdHJp
bmcgZXhwcmVzc2lvbiwgaW4gU3RyaW5nIG9iamVjdEdyb3VwLCBvdXQgVmFsdWUgcmVzdWx0KTsK
KyAgICAgICAgW2RvbWFpbj1SdW50aW1lXSB2b2lkIGdldENvbXBsZXRpb25zKGluIFN0cmluZyBl
eHByZXNzaW9uLCBpbiBib29sZWFuIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSwgb3V0
IFZhbHVlIHJlc3VsdCk7CisgICAgICAgIFtkb21haW49UnVudGltZV0gdm9pZCBnZXRQcm9wZXJ0
aWVzKGluIE9iamVjdCBvYmplY3RJZCwgaW4gYm9vbGVhbiBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwg
aW4gYm9vbGVhbiBhYmJyZXZpYXRlLCBvdXQgVmFsdWUgcmVzdWx0KTsKKyAgICAgICAgW2RvbWFp
bj1SdW50aW1lXSB2b2lkIHNldFByb3BlcnR5VmFsdWUoaW4gT2JqZWN0IG9iamVjdElkLCBpbiBT
dHJpbmcgcHJvcGVydHlOYW1lLCBpbiBTdHJpbmcgZXhwcmVzc2lvbiwgb3V0IFZhbHVlIHJlc3Vs
dCk7CisKKyAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICAgICAgLy8gSW5qZWN0ZWQgU2NyaXB0
CiAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKLSAgICAgICAgW2RvbWFpbj1JbmplY3RlZFNjcmlw
dF0gdm9pZCBldmFsdWF0ZShpbiBTdHJpbmcgZXhwcmVzc2lvbiwgaW4gU3RyaW5nIG9iamVjdEdy
b3VwLCBvdXQgVmFsdWUgcmVzdWx0KTsKLSAgICAgICAgW2RvbWFpbj1JbmplY3RlZFNjcmlwdF0g
dm9pZCBldmFsdWF0ZUluQ2FsbEZyYW1lKGluIGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCwgaW4gbG9u
ZyBjYWxsRnJhbWUsIGluIFN0cmluZyBleHByZXNzaW9uLCBpbiBTdHJpbmcgb2JqZWN0R3JvdXAs
IG91dCBWYWx1ZSByZXN1bHQpOwogICAgICAgICBbZG9tYWluPUluamVjdGVkU2NyaXB0XSB2b2lk
IGV2YWx1YXRlT25TZWxmKGluIFN0cmluZyBmdW5jdGlvbkJvZHksIGluIEFycmF5IGFyZ3VtZW50
c0FycmF5LCBvdXQgVmFsdWUgcmVzdWx0KTsKLSAgICAgICAgW2RvbWFpbj1JbmplY3RlZFNjcmlw
dF0gdm9pZCBnZXRDb21wbGV0aW9ucyhpbiBsb25nIGluamVjdGVkU2NyaXB0SWQsIGluIFN0cmlu
ZyBleHByZXNzaW9uLCBpbiBib29sZWFuIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSwg
aW4gbG9uZyBjYWxsRnJhbWVJZCwgb3V0IFZhbHVlIHJlc3VsdCk7Ci0gICAgICAgIFtkb21haW49
SW5qZWN0ZWRTY3JpcHRdIHZvaWQgZ2V0UHJvcGVydGllcyhpbiBPYmplY3Qgb2JqZWN0SWQsIGlu
IGJvb2xlYW4gaWdub3JlSGFzT3duUHJvcGVydHksIGluIGJvb2xlYW4gYWJicmV2aWF0ZSwgb3V0
IFZhbHVlIHJlc3VsdCk7Ci0gICAgICAgIFtkb21haW49SW5qZWN0ZWRTY3JpcHRdIHZvaWQgcHVz
aE5vZGVUb0Zyb250ZW5kKGluIE9iamVjdCBvYmplY3RJZCwgb3V0IFZhbHVlIHJlc3VsdCk7Ci0g
ICAgICAgIFtkb21haW49SW5qZWN0ZWRTY3JpcHRdIHZvaWQgcmVzb2x2ZU5vZGUoaW4gbG9uZyBu
b2RlSWQsIG91dCBWYWx1ZSByZXN1bHQpOwotICAgICAgICBbZG9tYWluPUluamVjdGVkU2NyaXB0
XSB2b2lkIGdldE5vZGVQcm9wZXJ0aWVzKGluIGxvbmcgbm9kZUlkLCBpbiBBcnJheSBwcm9wZXJ0
aWVzQXJyYXksIG91dCBWYWx1ZSByZXN1bHQpOwotICAgICAgICBbZG9tYWluPUluamVjdGVkU2Ny
aXB0XSB2b2lkIGdldE5vZGVQcm90b3R5cGVzKGluIGxvbmcgbm9kZUlkLCBvdXQgVmFsdWUgcmVz
dWx0KTsKLSAgICAgICAgW2RvbWFpbj1JbmplY3RlZFNjcmlwdF0gdm9pZCBzZXRQcm9wZXJ0eVZh
bHVlKGluIE9iamVjdCBvYmplY3RJZCwgaW4gU3RyaW5nIHByb3BlcnR5TmFtZSwgaW4gU3RyaW5n
IGV4cHJlc3Npb24sIG91dCBWYWx1ZSByZXN1bHQpOwogCiAgICAgICAgIC8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CiAgICAgICAgIC8vIENvbnNvbGUgQVBJCkBAIC0xOTAsNiArMTkwLDEwIEBAIG1vZHVsZSBjb3Jl
IHsKICAgICAgICAgW2RvbWFpbj1ET01dIHZvaWQgcGVyZm9ybVNlYXJjaChpbiBTdHJpbmcgcXVl
cnksIGluIGJvb2xlYW4gcnVuU3luY2hyb25vdXNseSk7CiAgICAgICAgIFtkb21haW49RE9NXSB2
b2lkIHNlYXJjaENhbmNlbGVkKCk7CiAgICAgICAgIFtkb21haW49RE9NXSB2b2lkIHB1c2hOb2Rl
QnlQYXRoVG9Gcm9udGVuZChpbiBTdHJpbmcgcGF0aCwgb3V0IGxvbmcgbm9kZUlkKTsKKyAgICAg
ICAgW2RvbWFpbj1ET01dIHZvaWQgcmVzb2x2ZU5vZGUoaW4gbG9uZyBub2RlSWQsIG91dCBWYWx1
ZSByZXN1bHQpOworICAgICAgICBbZG9tYWluPURPTV0gdm9pZCBnZXROb2RlUHJvcGVydGllcyhp
biBsb25nIG5vZGVJZCwgaW4gQXJyYXkgcHJvcGVydGllc0FycmF5LCBvdXQgVmFsdWUgcmVzdWx0
KTsKKyAgICAgICAgW2RvbWFpbj1ET01dIHZvaWQgZ2V0Tm9kZVByb3RvdHlwZXMoaW4gbG9uZyBu
b2RlSWQsIG91dCBWYWx1ZSByZXN1bHQpOworICAgICAgICBbZG9tYWluPURPTV0gdm9pZCBwdXNo
Tm9kZVRvRnJvbnRlbmQoaW4gT2JqZWN0IG9iamVjdElkLCBvdXQgVmFsdWUgcmVzdWx0KTsKIAog
ICAgICAgICBbbm90aWZ5LCBkb21haW49RE9NXSB2b2lkIHNldERvY3VtZW50KG91dCBWYWx1ZSBy
b290KTsgLy8gRklYTUU6IHNob3VsZCBiZSByZXF1ZXN0ZWQgZnJvbSB0aGUgZnJvbnQtZW5kIGFz
IGdldERvY3VtZW50LgogICAgICAgICBbbm90aWZ5LCBkb21haW49RE9NXSB2b2lkIGF0dHJpYnV0
ZXNVcGRhdGVkKG91dCBsb25nIGlkLCBvdXQgQXJyYXkgYXR0cmlidXRlcyk7CkBAIC0yNjYsMTEg
KzI3MCwxNCBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtkb21haW49RGVidWdnZXJdIHZvaWQg
cmVzdW1lKCk7CiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1EZWJ1Z2dlcl0gdm9pZCByZXN1bWVk
U2NyaXB0KCk7IC8vIEZJWE1FOiBNYWtlIHRoaXMgb3V0IHBhcmFtZXRlciBmbyByZXN1bWUgaWYg
cG9zc2libGUuCiAKLSAgICAgICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBzZXRQYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlKGluIGxvbmcgcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSwgb3V0IGxvbmcgbmV3
U3RhdGUpOwotCiAgICAgICAgIFtkb21haW49RGVidWdnZXJdIHZvaWQgZWRpdFNjcmlwdFNvdXJj
ZShpbiBTdHJpbmcgc291cmNlSUQsIGluIFN0cmluZyBuZXdDb250ZW50LCBvdXQgYm9vbGVhbiBz
dWNjZXNzLCBvdXQgU3RyaW5nIHJlc3VsdCwgb3V0IFZhbHVlIG5ld0NhbGxGcmFtZXMpOwogICAg
ICAgICBbZG9tYWluPURlYnVnZ2VyXSB2b2lkIGdldFNjcmlwdFNvdXJjZShpbiBTdHJpbmcgc291
cmNlSUQsIG91dCBTdHJpbmcgc2NyaXB0U291cmNlKTsKIAorICAgICAgICBbZG9tYWluPURlYnVn
Z2VyXSB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoaW4gbG9uZyBwYXVzZU9uRXhjZXB0
aW9uc1N0YXRlLCBvdXQgbG9uZyBuZXdTdGF0ZSk7CisKKyAgICAgICAgW2RvbWFpbj1EZWJ1Z2dl
cl0gdm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKGluIE9iamVjdCBjYWxsRnJhbWVJZCwgaW4gU3Ry
aW5nIGV4cHJlc3Npb24sIGluIFN0cmluZyBvYmplY3RHcm91cCwgb3V0IFZhbHVlIHJlc3VsdCk7
CisgICAgICAgIFtkb21haW49RGVidWdnZXJdIHZvaWQgZ2V0Q29tcGxldGlvbnNPbkNhbGxGcmFt
ZShpbiBPYmplY3QgY2FsbEZyYW1lSWQsIGluIFN0cmluZyBleHByZXNzaW9uLCBpbiBib29sZWFu
IGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSwgb3V0IFZhbHVlIHJlc3VsdCk7CisKICAg
ICAgICAgW25vdGlmeSwgZG9tYWluPURlYnVnZ2VyXSB2b2lkIGJyZWFrcG9pbnRSZXNvbHZlZChv
dXQgU3RyaW5nIGJyZWFrcG9pbnRJZCwgb3V0IFN0cmluZyBzb3VyY2VJRCwgb3V0IHVuc2lnbmVk
IGludCBsaW5lTnVtYmVyLCBvdXQgU3RyaW5nIGNvbmRpdGlvbiwgb3V0IGJvb2xlYW4gZW5hYmxl
ZCwgb3V0IHVuc2lnbmVkIGludCBvcmlnaW5hbExpbmVOdW1iZXIpOwogCiAjaWYgZGVmaW5lZChF
TkFCTEVfV09SS0VSUykgJiYgRU5BQkxFX1dPUktFUlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCAzODBjMDU3Li44YjZiNmJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CkBAIC03MCw2ICs3MCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
clJlc291cmNlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JTZXR0aW5ncy5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgpAQCAtMzg5LDggKzM5MCw5IEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKCkKICAgICBtX29wZW5p
bmdGcm9udGVuZCA9IGZhbHNlOwogICAgIHJlbGVhc2VGcm9udGVuZExpZmV0aW1lQWdlbnRzKCk7
CiAgICAgbV9mcm9udGVuZCA9IG5ldyBJbnNwZWN0b3JGcm9udGVuZChtX2NsaWVudCk7Ci0gICAg
bV9kb21BZ2VudCA9IEluc3BlY3RvckRPTUFnZW50OjpjcmVhdGUobV9mcm9udGVuZC5nZXQoKSk7
CisgICAgbV9kb21BZ2VudCA9IEluc3BlY3RvckRPTUFnZW50OjpjcmVhdGUobV9pbmplY3RlZFNj
cmlwdEhvc3QuZ2V0KCksIG1fZnJvbnRlbmQuZ2V0KCkpOwogICAgIG1fcmVzb3VyY2VBZ2VudCA9
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNyZWF0ZShtX2luc3BlY3RlZFBhZ2UsIG1fZnJvbnRl
bmQuZ2V0KCkpOworICAgIG1fcnVudGltZUFnZW50ID0gSW5zcGVjdG9yUnVudGltZUFnZW50Ojpj
cmVhdGUobV9pbmplY3RlZFNjcmlwdEhvc3QuZ2V0KCkpOwogCiAgICAgbV9jc3NBZ2VudC0+c2V0
RE9NQWdlbnQobV9kb21BZ2VudC5nZXQoKSk7CiAKQEAgLTUwMCw2ICs1MDIsNyBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCgpCiB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OnJlbGVhc2VGcm9udGVuZExpZmV0aW1lQWdlbnRzKCkKIHsKICAgICBtX3Jlc291
cmNlQWdlbnQuY2xlYXIoKTsKKyAgICBtX3J1bnRpbWVBZ2VudC5jbGVhcigpOwogCiAgICAgLy8g
VGhpcyBzaG91bGQgYmUgaW52b2tlZCBwcmlvciB0byBtX2RvbUFnZW50IGRlc3RydWN0aW9uLgog
ICAgIG1fY3NzQWdlbnQtPnNldERPTUFnZW50KDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggNDA1MTM5Yy4uYWI4Mzc3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC03Miw2
ICs3Miw3IEBAIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9y
T2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDsKIGNsYXNzIEluc3BlY3RvclJl
c291cmNlQWdlbnQ7CitjbGFzcyBJbnNwZWN0b3JSdW50aW1lQWdlbnQ7CiBjbGFzcyBJbnNwZWN0
b3JTZXR0aW5nczsKIGNsYXNzIEluc3BlY3RvclN0YXRlOwogY2xhc3MgSW5zcGVjdG9yU3RvcmFn
ZUFnZW50OwpAQCAtMzExLDYgKzMxMiw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8Tm9kZT4g
bV9ub2RlVG9Gb2N1czsKICAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4gbV9yZXNv
dXJjZUFnZW50OworICAgIE93blB0cjxJbnNwZWN0b3JSdW50aW1lQWdlbnQ+IG1fcnVudGltZUFn
ZW50OwogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJl
ZlB0cjxJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlPiA+IERhdGFiYXNlUmVzb3VyY2VzTWFwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXgg
MTlhZTMwZC4uNmUxMGYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgi
CiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1l
bnQuaCIKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJOb2Rl
LmgiCkBAIC0yMDYsOCArMjA3LDkgQEAgcHVibGljOgogCiB9CiAKLUluc3BlY3RvckRPTUFnZW50
OjpJbnNwZWN0b3JET01BZ2VudChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCitJbnNwZWN0
b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQoSW5qZWN0ZWRTY3JpcHRIb3N0KiBpbmplY3Rl
ZFNjcmlwdEhvc3QsIEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKICAgICA6IEV2ZW50TGlz
dGVuZXIoSW5zcGVjdG9yRE9NQWdlbnRUeXBlKQorICAgICwgbV9pbmplY3RlZFNjcmlwdEhvc3Qo
aW5qZWN0ZWRTY3JpcHRIb3N0KQogICAgICwgbV9mcm9udGVuZChmcm9udGVuZCkKICAgICAsIG1f
ZG9tTGlzdGVuZXIoMCkKICAgICAsIG1fbGFzdE5vZGVJZCgxKQpAQCAtNzU4LDYgKzc2MCwzNCBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZWFyY2hDYW5jZWxlZCgpCiAgICAgbV9zZWFyY2hS
ZXN1bHRzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2Rl
KGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit7CisgICAgSW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvck5vZGVJZChub2Rl
SWQpOworICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICBpbmpl
Y3RlZFNjcmlwdC5yZXNvbHZlTm9kZShub2RlSWQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmdldE5vZGVQcm9wZXJ0aWVzKGxvbmcgbm9kZUlkLCBQYXNzUmVmUHRyPElu
c3BlY3RvckFycmF5PiBwcm9wZXJ0aWVzQXJyYXksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJl
c3VsdCkKK3sKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2Ny
aXB0Rm9yTm9kZUlkKG5vZGVJZCk7CisgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVl
KCkpCisgICAgICAgIGluamVjdGVkU2NyaXB0LmdldE5vZGVQcm9wZXJ0aWVzKG5vZGVJZCwgcHJv
cGVydGllc0FycmF5LCByZXN1bHQpOworfQorCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRO
b2RlUHJvdG90eXBlcyhsb25nIG5vZGVJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0
KQoreworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRG
b3JOb2RlSWQobm9kZUlkKTsKKyAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkK
KyAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0Tm9kZVByb3RvdHlwZXMobm9kZUlkLCByZXN1bHQp
OworfQorCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVRvRnJvbnRlbmQoUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiBy
ZXN1bHQpCit7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVk
U2NyaXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZC5nZXQoKSk7Cisg
ICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCisgICAgICAgIGluamVjdGVkU2Ny
aXB0LnB1c2hOb2RlVG9Gcm9udGVuZChvYmplY3RJZCwgcmVzdWx0KTsKK30KKwogU3RyaW5nIElu
c3BlY3RvckRPTUFnZW50Ojpkb2N1bWVudFVSTFN0cmluZyhEb2N1bWVudCogZG9jdW1lbnQpIGNv
bnN0CiB7CiAgICAgaWYgKCFkb2N1bWVudCB8fCBkb2N1bWVudC0+dXJsKCkuaXNOdWxsKCkpCkBA
IC0xMTEyLDYgKzExNDIsMjYgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVCeVBh
dGhUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyogbm9kZUkKICAgICAgICAgKm5v
ZGVJZCA9IHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQobm9kZSk7CiB9CiAKK0luamVjdGVkU2NyaXB0
IEluc3BlY3RvckRPTUFnZW50OjppbmplY3RlZFNjcmlwdEZvck5vZGVJZChsb25nIG5vZGVJZCkK
K3sKKyAgICBGcmFtZSogZnJhbWUgPSAwOworICAgIGlmIChub2RlSWQpIHsKKyAgICAgICAgTm9k
ZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpOworICAgICAgICBpZiAobm9kZSkgeworICAgICAg
ICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbm9kZS0+b3duZXJEb2N1bWVudCgpOworICAgICAg
ICAgICAgaWYgKGRvY3VtZW50KQorICAgICAgICAgICAgICAgIGZyYW1lID0gZG9jdW1lbnQtPmZy
YW1lKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgZnJhbWUgPSBtYWluRnJhbWVE
b2N1bWVudCgpLT5mcmFtZSgpOworCisgICAgaWYgKGZyYW1lKQorICAgICAgICByZXR1cm4gbV9p
bmplY3RlZFNjcmlwdEhvc3QtPmluamVjdGVkU2NyaXB0Rm9yKG1haW5Xb3JsZFNjcmlwdFN0YXRl
KGZyYW1lKSk7CisKKyAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKK30KKworCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA5NzE3NWZlLi5lNGVk
ZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApA
QCAtMzIsNiArMzIsOCBAQAogCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUg
IkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKKyNpbmNsdWRlICJJ
bmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNs
dWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC00NSwxNjQgKzQ3LDE2OCBA
QAogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0gICAgY2xhc3MgQ29udGFpbmVyTm9kZTsKLSAgICBjbGFzcyBDU1NSdWxlOwotICAgIGNs
YXNzIENTU1J1bGVMaXN0OwotICAgIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247Ci0gICAgY2xh
c3MgQ1NTU3R5bGVSdWxlOwotICAgIGNsYXNzIENTU1N0eWxlU2hlZXQ7Ci0gICAgY2xhc3MgQ2hh
cmFjdGVyRGF0YTsKLSAgICBjbGFzcyBEb2N1bWVudDsKLSAgICBjbGFzcyBFbGVtZW50OwotICAg
IGNsYXNzIEV2ZW50OwotICAgIGNsYXNzIEluc3BlY3RvckRPTUFnZW50OwotICAgIGNsYXNzIElu
c3BlY3RvckZyb250ZW5kOwotICAgIGNsYXNzIE1hdGNoSm9iOwotICAgIGNsYXNzIE5hbWVOb2Rl
TWFwOwotICAgIGNsYXNzIE5vZGU7Ci0gICAgY2xhc3MgUGFnZTsKK2NsYXNzIENvbnRhaW5lck5v
ZGU7CitjbGFzcyBDU1NSdWxlOworY2xhc3MgQ1NTUnVsZUxpc3Q7CitjbGFzcyBDU1NTdHlsZURl
Y2xhcmF0aW9uOworY2xhc3MgQ1NTU3R5bGVSdWxlOworY2xhc3MgQ1NTU3R5bGVTaGVldDsKK2Ns
YXNzIENoYXJhY3RlckRhdGE7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEVsZW1lbnQ7CitjbGFz
cyBFdmVudDsKK2NsYXNzIEluc3BlY3RvckRPTUFnZW50OworY2xhc3MgSW5zcGVjdG9yRnJvbnRl
bmQ7CitjbGFzcyBNYXRjaEpvYjsKK2NsYXNzIE5hbWVOb2RlTWFwOworY2xhc3MgTm9kZTsKK2Ns
YXNzIFBhZ2U7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0gICAgc3RydWN0IEV2ZW50TGlz
dGVuZXJJbmZvIHsKLSAgICAgICAgRXZlbnRMaXN0ZW5lckluZm8oTm9kZSogbm9kZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEV2ZW50TGlzdGVuZXJWZWN0b3ImIGV2ZW50
TGlzdGVuZXJWZWN0b3IpCi0gICAgICAgICAgICA6IG5vZGUobm9kZSkKLSAgICAgICAgICAgICwg
ZXZlbnRUeXBlKGV2ZW50VHlwZSkKLSAgICAgICAgICAgICwgZXZlbnRMaXN0ZW5lclZlY3Rvcihl
dmVudExpc3RlbmVyVmVjdG9yKQorc3RydWN0IEV2ZW50TGlzdGVuZXJJbmZvIHsKKyAgICBFdmVu
dExpc3RlbmVySW5mbyhOb2RlKiBub2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
Y29uc3QgRXZlbnRMaXN0ZW5lclZlY3RvciYgZXZlbnRMaXN0ZW5lclZlY3RvcikKKyAgICAgICAg
OiBub2RlKG5vZGUpCisgICAgICAgICwgZXZlbnRUeXBlKGV2ZW50VHlwZSkKKyAgICAgICAgLCBl
dmVudExpc3RlbmVyVmVjdG9yKGV2ZW50TGlzdGVuZXJWZWN0b3IpCisgICAgeworICAgIH0KKwor
ICAgIE5vZGUqIG5vZGU7CisgICAgY29uc3QgQXRvbWljU3RyaW5nIGV2ZW50VHlwZTsKKyAgICBj
b25zdCBFdmVudExpc3RlbmVyVmVjdG9yIGV2ZW50TGlzdGVuZXJWZWN0b3I7Cit9OworCitjbGFz
cyBJbnNwZWN0b3JET01BZ2VudCA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKK3B1YmxpYzoKKyAg
ICBzdHJ1Y3QgRE9NTGlzdGVuZXIgeworICAgICAgICB2aXJ0dWFsIH5ET01MaXN0ZW5lcigpCiAg
ICAgICAgIHsKICAgICAgICAgfQotCi0gICAgICAgIE5vZGUqIG5vZGU7Ci0gICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyBldmVudFR5cGU7Ci0gICAgICAgIGNvbnN0IEV2ZW50TGlzdGVuZXJWZWN0
b3IgZXZlbnRMaXN0ZW5lclZlY3RvcjsKLSAgICB9OwotCi0gICAgY2xhc3MgSW5zcGVjdG9yRE9N
QWdlbnQgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7Ci0gICAgcHVibGljOgotICAgICAgICBzdHJ1
Y3QgRE9NTGlzdGVuZXIgewotICAgICAgICAgICAgdmlydHVhbCB+RE9NTGlzdGVuZXIoKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJl
bW92ZURvY3VtZW50KERvY3VtZW50KikgPSAwOwotICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlbW92ZURPTU5vZGUoTm9kZSopID0gMDsKLSAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRN
b2RpZnlET01BdHRyKEVsZW1lbnQqKSA9IDA7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yRE9NQWdlbnQ+IGNyZWF0ZShJbnNwZWN0b3JGcm9udGVuZCog
ZnJvbnRlbmQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5z
cGVjdG9yRE9NQWdlbnQoZnJvbnRlbmQpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBj
b25zdCBJbnNwZWN0b3JET01BZ2VudCogY2FzdChjb25zdCBFdmVudExpc3RlbmVyKiBsaXN0ZW5l
cikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGxpc3RlbmVyLT50eXBlKCkgPT0gSW5z
cGVjdG9yRE9NQWdlbnRUeXBlCi0gICAgICAgICAgICAgICAgPyBzdGF0aWNfY2FzdDxjb25zdCBJ
bnNwZWN0b3JET01BZ2VudCo+KGxpc3RlbmVyKQotICAgICAgICAgICAgICAgIDogMDsKLSAgICAg
ICAgfQotCi0gICAgICAgIEluc3BlY3RvckRPTUFnZW50KEluc3BlY3RvckZyb250ZW5kKiBmcm9u
dGVuZCk7Ci0gICAgICAgIH5JbnNwZWN0b3JET01BZ2VudCgpOwotCi0gICAgICAgIHZvaWQgcmVz
ZXQoKTsKLQotICAgICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3Rl
bmVyJiBvdGhlcik7Ci0KLSAgICAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUgZnJvbnRl
bmQgZm9yIERPTSBub2RlcyBpbnNwZWN0aW9uLgotICAgICAgICB2b2lkIGdldENoaWxkTm9kZXMo
bG9uZyBub2RlSWQpOwotICAgICAgICB2b2lkIHNldEF0dHJpYnV0ZShsb25nIGVsZW1lbnRJZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sKiBzdWNjZXNzKTsK
LSAgICAgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUobG9uZyBlbGVtZW50SWQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgYm9vbCogc3VjY2Vzcyk7Ci0gICAgICAgIHZvaWQgcmVtb3ZlTm9kZShsb25nIG5v
ZGVJZCwgbG9uZyogb3V0Tm9kZUlkKTsKLSAgICAgICAgdm9pZCBjaGFuZ2VUYWdOYW1lKGxvbmcg
bm9kZUlkLCBjb25zdCBTdHJpbmcmIHRhZ05hbWUsIGxvbmcqIG5ld0lkKTsKLSAgICAgICAgdm9p
ZCBnZXRPdXRlckhUTUwobG9uZyBub2RlSWQsIFdURjo6U3RyaW5nKiBvdXRlckhUTUwpOwotICAg
ICAgICB2b2lkIHNldE91dGVySFRNTChsb25nIG5vZGVJZCwgY29uc3QgU3RyaW5nJiBvdXRlckhU
TUwsIGxvbmcqIG5ld0lkKTsKLSAgICAgICAgdm9pZCBzZXRUZXh0Tm9kZVZhbHVlKGxvbmcgbm9k
ZUlkLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sKiBzdWNjZXNzKTsKLSAgICAgICAgdm9pZCBn
ZXRFdmVudExpc3RlbmVyc0Zvck5vZGUobG9uZyBub2RlSWQsIGxvbmcqIG91dE5vZGVJZCwgUmVm
UHRyPEluc3BlY3RvckFycmF5PiogbGlzdGVuZXJzQXJyYXkpOwotICAgICAgICB2b2lkIGFkZElu
c3BlY3RlZE5vZGUobG9uZyBub2RlSWQpOwotICAgICAgICB2b2lkIHBlcmZvcm1TZWFyY2goY29u
c3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBib29sIHJ1blN5bmNocm9ub3VzbHkp
OwotICAgICAgICB2b2lkIHNlYXJjaENhbmNlbGVkKCk7Ci0gICAgICAgIGJvb2wgc2hvdWxkQnJl
YWtPbk5vZGVJbnNlcnRpb24oTm9kZSogbm9kZSwgTm9kZSogcGFyZW50LCBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gZGV0YWlscyk7Ci0gICAgICAgIGJvb2wgc2hvdWxkQnJlYWtPbk5vZGVS
ZW1vdmFsKE5vZGUqIG5vZGUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkZXRhaWxzKTsK
LSAgICAgICAgYm9vbCBzaG91bGRCcmVha09uQXR0cmlidXRlTW9kaWZpY2F0aW9uKEVsZW1lbnQq
IGVsZW1lbnQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkZXRhaWxzKTsKLQotICAgICAg
ICAvLyBNZXRob2RzIGNhbGxlZCBmcm9tIHRoZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uCi0g
ICAgICAgIHZvaWQgc2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KTsKLSAgICAgICAgdm9p
ZCByZWxlYXNlRGFuZ2xpbmdOb2RlcygpOwotCi0gICAgICAgIHZvaWQgZGlkSW5zZXJ0RE9NTm9k
ZShOb2RlKik7Ci0gICAgICAgIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZShOb2RlKik7Ci0gICAgICAg
IHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50Kik7Ci0gICAgICAgIHZvaWQgY2hhcmFjdGVy
RGF0YU1vZGlmaWVkKENoYXJhY3RlckRhdGEqKTsKLQotICAgICAgICBOb2RlKiBub2RlRm9ySWQo
bG9uZyBub2RlSWQpOwotICAgICAgICBsb25nIHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSog
bm9kZSk7Ci0gICAgICAgIHZvaWQgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGxvbmcgbm9kZUlk
KTsKLSAgICAgICAgdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBw
YXRoLCBsb25nKiBub2RlSWQpOwotICAgICAgICBsb25nIGluc3BlY3RlZE5vZGUodW5zaWduZWQg
bG9uZyBudW0pOwotICAgICAgICB2b2lkIGNvcHlOb2RlKGxvbmcgbm9kZUlkKTsKLSAgICAgICAg
Y29uc3QgTGlzdEhhc2hTZXQ8UmVmUHRyPERvY3VtZW50PiA+JiBkb2N1bWVudHMoKSB7IHJldHVy
biBtX2RvY3VtZW50czsgfQotICAgICAgICB2b2lkIHNldERPTUxpc3RlbmVyKERPTUxpc3RlbmVy
Kik7Ci0KLSAgICAgICAgU3RyaW5nIGRvY3VtZW50VVJMU3RyaW5nKERvY3VtZW50KiBkb2N1bWVu
dCkgY29uc3Q7Ci0KLSAgICAgICAgLy8gV2UgcmVwcmVzZW50IGVtYmVkZGVkIGRvbXMgYXMgYSBw
YXJ0IG9mIHRoZSBzYW1lIGhpZXJhcmNoeS4gSGVuY2Ugd2UgdHJlYXQgY2hpbGRyZW4gb2YgZnJh
bWUgb3duZXJzIGRpZmZlcmVudGx5LgotICAgICAgICAvLyBXZSBhbHNvIHNraXAgd2hpdGVzcGFj
ZSB0ZXh0IG5vZGVzIGNvbmRpdGlvbmFsbHkuIEZvbGxvd2luZyBtZXRob2RzIGVuY2Fwc3VsYXRl
IHRoZXNlIHNwZWNpZmljcy4KLSAgICAgICAgc3RhdGljIE5vZGUqIGlubmVyRmlyc3RDaGlsZChO
b2RlKik7Ci0gICAgICAgIHN0YXRpYyBOb2RlKiBpbm5lck5leHRTaWJsaW5nKE5vZGUqKTsKLSAg
ICAgICAgc3RhdGljIE5vZGUqIGlubmVyUHJldmlvdXNTaWJsaW5nKE5vZGUqKTsKLSAgICAgICAg
c3RhdGljIHVuc2lnbmVkIGlubmVyQ2hpbGROb2RlQ291bnQoTm9kZSopOwotICAgICAgICBzdGF0
aWMgTm9kZSogaW5uZXJQYXJlbnROb2RlKE5vZGUqKTsKLSAgICAgICAgc3RhdGljIGJvb2wgaXNX
aGl0ZXNwYWNlKE5vZGUqKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgc3RhcnRMaXN0
ZW5pbmdGcmFtZURvY3VtZW50KE5vZGUqIGZyYW1lT3duZXJOb2RlKTsKLSAgICAgICAgdm9pZCBz
dGFydExpc3RlbmluZyhEb2N1bWVudCogZG9jdW1lbnQpOwotICAgICAgICB2b2lkIHN0b3BMaXN0
ZW5pbmcoRG9jdW1lbnQqIGRvY3VtZW50KTsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
RXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCk7Ci0KLSAgICAgICAg
Ly8gTm9kZS1yZWxhdGVkIG1ldGhvZHMuCi0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
Tm9kZT4sIGxvbmc+IE5vZGVUb0lkTWFwOwotICAgICAgICBsb25nIGJpbmQoTm9kZSogbm9kZSwg
Tm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKLSAgICAgICAgdm9pZCB1bmJpbmQoTm9kZSogbm9kZSwg
Tm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKLQotICAgICAgICBib29sIHB1c2hEb2N1bWVudFRvRnJv
bnRlbmQoKTsKLQotICAgICAgICBib29sIGhhc0JyZWFrcG9pbnQoTm9kZSogbm9kZSwgbG9uZyB0
eXBlKTsKLSAgICAgICAgdm9pZCB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoTm9kZSogcm9vdCwg
dWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgdmFsdWUpOwotICAgICAgICB2b2lkIGRlc2NyaXB0aW9u
Rm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBsb25nIGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2Vy
dGlvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRlc2NyaXB0aW9uKTsKLQotICAgICAg
ICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqIG5v
ZGUsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKLSAgICAgICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3JBcnJheT4gYnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKEVsZW1lbnQq
IGVsZW1lbnQpOwotICAgICAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZEFycmF5
Rm9yQ29udGFpbmVyQ2hpbGRyZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lk
TWFwKiBub2Rlc01hcCk7Ci0gICAgICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWls
ZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImIHJl
Z2lzdGVyZWRFdmVudExpc3RlbmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9k
ZSogbm9kZSk7Ci0KLSAgICAgICAgRG9jdW1lbnQqIG1haW5GcmFtZURvY3VtZW50KCkgY29uc3Q7
Ci0KLSAgICAgICAgdm9pZCBvbk1hdGNoSm9ic1RpbWVyKFRpbWVyPEluc3BlY3RvckRPTUFnZW50
PiopOwotICAgICAgICB2b2lkIHJlcG9ydE5vZGVzQXNTZWFyY2hSZXN1bHRzKExpc3RIYXNoU2V0
PE5vZGUqPiYgcmVzdWx0Q29sbGVjdG9yKTsKLQotICAgICAgICBOb2RlKiBub2RlRm9yUGF0aChj
b25zdCBTdHJpbmcmIHBhdGgpOwotICAgICAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiB0
b0FycmF5KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhKTsKLQotICAgICAgICB2b2lkIGRpc2Nh
cmRCaW5kaW5ncygpOwotCi0gICAgICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOwot
ICAgICAgICBET01MaXN0ZW5lciogbV9kb21MaXN0ZW5lcjsKLSAgICAgICAgTm9kZVRvSWRNYXAg
bV9kb2N1bWVudE5vZGVUb0lkTWFwOwotICAgICAgICAvLyBPd25zIG5vZGUgbWFwcGluZ3MgZm9y
IGRhbmdsaW5nIG5vZGVzLgotICAgICAgICBWZWN0b3I8Tm9kZVRvSWRNYXAqPiBtX2RhbmdsaW5n
Tm9kZVRvSWRNYXBzOwotICAgICAgICBIYXNoTWFwPGxvbmcsIE5vZGUqPiBtX2lkVG9Ob2RlOwot
ICAgICAgICBIYXNoTWFwPGxvbmcsIE5vZGVUb0lkTWFwKj4gbV9pZFRvTm9kZXNNYXA7Ci0gICAg
ICAgIEhhc2hTZXQ8bG9uZz4gbV9jaGlsZHJlblJlcXVlc3RlZDsKLSAgICAgICAgbG9uZyBtX2xh
c3ROb2RlSWQ7Ci0gICAgICAgIExpc3RIYXNoU2V0PFJlZlB0cjxEb2N1bWVudD4gPiBtX2RvY3Vt
ZW50czsKLSAgICAgICAgRGVxdWU8TWF0Y2hKb2IqPiBtX3BlbmRpbmdNYXRjaEpvYnM7Ci0gICAg
ICAgIFRpbWVyPEluc3BlY3RvckRPTUFnZW50PiBtX21hdGNoSm9ic1RpbWVyOwotICAgICAgICBI
YXNoU2V0PFJlZlB0cjxOb2RlPiA+IG1fc2VhcmNoUmVzdWx0czsKLSAgICAgICAgVmVjdG9yPGxv
bmc+IG1faW5zcGVjdGVkTm9kZXM7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVEb2N1
bWVudChEb2N1bWVudCopID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZURPTU5v
ZGUoTm9kZSopID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZE1vZGlmeURPTUF0dHIoRWxl
bWVudCopID0gMDsKICAgICB9OwogCi0jZW5kaWYKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JET01BZ2VudD4gY3JlYXRlKEluamVjdGVkU2NyaXB0SG9zdCogaW5qZWN0ZWRTY3JpcHRI
b3N0LCBJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEluc3BlY3RvckRPTUFnZW50KGluamVjdGVkU2NyaXB0SG9zdCwgZnJvbnRl
bmQpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgSW5zcGVjdG9yRE9NQWdlbnQqIGNhc3Qo
Y29uc3QgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIpCisgICAgeworICAgICAgICByZXR1cm4gbGlz
dGVuZXItPnR5cGUoKSA9PSBJbnNwZWN0b3JET01BZ2VudFR5cGUKKyAgICAgICAgICAgID8gc3Rh
dGljX2Nhc3Q8Y29uc3QgSW5zcGVjdG9yRE9NQWdlbnQqPihsaXN0ZW5lcikKKyAgICAgICAgICAg
IDogMDsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JET01BZ2VudChJbmplY3RlZFNjcmlwdEhvc3Qq
LCBJbnNwZWN0b3JGcm9udGVuZCopOworICAgIH5JbnNwZWN0b3JET01BZ2VudCgpOworCisgICAg
dm9pZCByZXNldCgpOworCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRM
aXN0ZW5lciYgb3RoZXIpOworCisgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUgZnJvbnRl
bmQgZm9yIERPTSBub2RlcyBpbnNwZWN0aW9uLgorICAgIHZvaWQgZ2V0Q2hpbGROb2Rlcyhsb25n
IG5vZGVJZCk7CisgICAgdm9pZCBzZXRBdHRyaWJ1dGUobG9uZyBlbGVtZW50SWQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCogc3VjY2Vzcyk7CisgICAgdm9p
ZCByZW1vdmVBdHRyaWJ1dGUobG9uZyBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9v
bCogc3VjY2Vzcyk7CisgICAgdm9pZCByZW1vdmVOb2RlKGxvbmcgbm9kZUlkLCBsb25nKiBvdXRO
b2RlSWQpOworICAgIHZvaWQgY2hhbmdlVGFnTmFtZShsb25nIG5vZGVJZCwgY29uc3QgU3RyaW5n
JiB0YWdOYW1lLCBsb25nKiBuZXdJZCk7CisgICAgdm9pZCBnZXRPdXRlckhUTUwobG9uZyBub2Rl
SWQsIFdURjo6U3RyaW5nKiBvdXRlckhUTUwpOworICAgIHZvaWQgc2V0T3V0ZXJIVE1MKGxvbmcg
bm9kZUlkLCBjb25zdCBTdHJpbmcmIG91dGVySFRNTCwgbG9uZyogbmV3SWQpOworICAgIHZvaWQg
c2V0VGV4dE5vZGVWYWx1ZShsb25nIG5vZGVJZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCog
c3VjY2Vzcyk7CisgICAgdm9pZCBnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUobG9uZyBub2RlSWQs
IGxvbmcqIG91dE5vZGVJZCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiogbGlzdGVuZXJzQXJyYXkp
OworICAgIHZvaWQgYWRkSW5zcGVjdGVkTm9kZShsb25nIG5vZGVJZCk7CisgICAgdm9pZCBwZXJm
b3JtU2VhcmNoKGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgYm9vbCBydW5T
eW5jaHJvbm91c2x5KTsKKyAgICB2b2lkIHNlYXJjaENhbmNlbGVkKCk7CisgICAgdm9pZCByZXNv
bHZlTm9kZShsb25nIG5vZGVJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKyAg
ICB2b2lkIGdldE5vZGVQcm9wZXJ0aWVzKGxvbmcgbm9kZUlkLCBQYXNzUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBwcm9wZXJ0aWVzQXJyYXksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7
CisgICAgdm9pZCBnZXROb2RlUHJvdG90eXBlcyhsb25nIG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIHB1c2hOb2RlVG9Gcm9udGVuZChQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3Vs
dCk7CisKKyAgICAvLyBNZXRob2RzIGNhbGxlZCBmcm9tIHRoZSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uCisgICAgdm9pZCBzZXREb2N1bWVudChEb2N1bWVudCopOworICAgIHZvaWQgcmVsZWFz
ZURhbmdsaW5nTm9kZXMoKTsKKworICAgIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZShOb2RlKik7Cisg
ICAgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUqKTsKKyAgICB2b2lkIGRpZE1vZGlmeURPTUF0
dHIoRWxlbWVudCopOworICAgIHZvaWQgY2hhcmFjdGVyRGF0YU1vZGlmaWVkKENoYXJhY3RlckRh
dGEqKTsKKworICAgIE5vZGUqIG5vZGVGb3JJZChsb25nIG5vZGVJZCk7CisgICAgbG9uZyBwdXNo
Tm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqKTsKKyAgICB2b2lkIHB1c2hDaGlsZE5vZGVzVG9Gcm9u
dGVuZChsb25nIG5vZGVJZCk7CisgICAgdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoY29u
c3QgU3RyaW5nJiBwYXRoLCBsb25nKiBub2RlSWQpOworICAgIGxvbmcgaW5zcGVjdGVkTm9kZSh1
bnNpZ25lZCBsb25nIG51bSk7CisgICAgdm9pZCBjb3B5Tm9kZShsb25nIG5vZGVJZCk7CisgICAg
Y29uc3QgTGlzdEhhc2hTZXQ8UmVmUHRyPERvY3VtZW50PiA+JiBkb2N1bWVudHMoKSB7IHJldHVy
biBtX2RvY3VtZW50czsgfQorICAgIHZvaWQgc2V0RE9NTGlzdGVuZXIoRE9NTGlzdGVuZXIqKTsK
KworICAgIFN0cmluZyBkb2N1bWVudFVSTFN0cmluZyhEb2N1bWVudCopIGNvbnN0OworCisgICAg
Ly8gV2UgcmVwcmVzZW50IGVtYmVkZGVkIGRvbXMgYXMgYSBwYXJ0IG9mIHRoZSBzYW1lIGhpZXJh
cmNoeS4gSGVuY2Ugd2UgdHJlYXQgY2hpbGRyZW4gb2YgZnJhbWUgb3duZXJzIGRpZmZlcmVudGx5
LgorICAgIC8vIFdlIGFsc28gc2tpcCB3aGl0ZXNwYWNlIHRleHQgbm9kZXMgY29uZGl0aW9uYWxs
eS4gRm9sbG93aW5nIG1ldGhvZHMgZW5jYXBzdWxhdGUgdGhlc2Ugc3BlY2lmaWNzLgorICAgIHN0
YXRpYyBOb2RlKiBpbm5lckZpcnN0Q2hpbGQoTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiBpbm5l
ck5leHRTaWJsaW5nKE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogaW5uZXJQcmV2aW91c1NpYmxp
bmcoTm9kZSopOworICAgIHN0YXRpYyB1bnNpZ25lZCBpbm5lckNoaWxkTm9kZUNvdW50KE5vZGUq
KTsKKyAgICBzdGF0aWMgTm9kZSogaW5uZXJQYXJlbnROb2RlKE5vZGUqKTsKKyAgICBzdGF0aWMg
Ym9vbCBpc1doaXRlc3BhY2UoTm9kZSopOworCitwcml2YXRlOgorICAgIHZvaWQgc3RhcnRMaXN0
ZW5pbmdGcmFtZURvY3VtZW50KE5vZGUqIGZyYW1lT3duZXJOb2RlKTsKKyAgICB2b2lkIHN0YXJ0
TGlzdGVuaW5nKERvY3VtZW50Kik7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nKERvY3VtZW50Kik7
CisKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV2ZW50Kik7CisKKyAgICAvLyBOb2RlLXJlbGF0ZWQgbWV0aG9kcy4KKyAgICB0eXBlZGVmIEhh
c2hNYXA8UmVmUHRyPE5vZGU+LCBsb25nPiBOb2RlVG9JZE1hcDsKKyAgICBsb25nIGJpbmQoTm9k
ZSosIE5vZGVUb0lkTWFwKik7CisgICAgdm9pZCB1bmJpbmQoTm9kZSosIE5vZGVUb0lkTWFwKik7
CisKKyAgICBib29sIHB1c2hEb2N1bWVudFRvRnJvbnRlbmQoKTsKKworICAgIGJvb2wgaGFzQnJl
YWtwb2ludChOb2RlKiwgbG9uZyB0eXBlKTsKKyAgICB2b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3Bv
aW50cyhOb2RlKiByb290LCB1aW50MzJfdCByb290TWFzaywgYm9vbCB2YWx1ZSk7CisgICAgdm9p
ZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwgbG9uZyBicmVha3BvaW50VHlw
ZSwgYm9vbCBpbnNlcnRpb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkZXNjcmlwdGlv
bik7CisKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JOb2Rl
KE5vZGUqLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0
b3JBcnJheT4gYnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKEVsZW1lbnQqKTsKKyAgICBQ
YXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4o
Tm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7CisgICAg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihj
b25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBOb2RlKik7CisKKyAgICBEb2N1bWVudCogbWFpbkZyYW1lRG9jdW1lbnQoKSBjb25zdDsK
KworICAgIHZvaWQgb25NYXRjaEpvYnNUaW1lcihUaW1lcjxJbnNwZWN0b3JET01BZ2VudD4qKTsK
KyAgICB2b2lkIHJlcG9ydE5vZGVzQXNTZWFyY2hSZXN1bHRzKExpc3RIYXNoU2V0PE5vZGUqPiYg
cmVzdWx0Q29sbGVjdG9yKTsKKworICAgIE5vZGUqIG5vZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gdG9BcnJheShjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZGF0YSk7CisKKyAgICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOworCisgICAg
SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JOb2RlSWQobG9uZyBub2RlSWQpOworCisg
ICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBtX2luamVjdGVkU2NyaXB0SG9zdDsKKyAgICBJbnNwZWN0
b3JGcm9udGVuZCogbV9mcm9udGVuZDsKKyAgICBET01MaXN0ZW5lciogbV9kb21MaXN0ZW5lcjsK
KyAgICBOb2RlVG9JZE1hcCBtX2RvY3VtZW50Tm9kZVRvSWRNYXA7CisgICAgLy8gT3ducyBub2Rl
IG1hcHBpbmdzIGZvciBkYW5nbGluZyBub2Rlcy4KKyAgICBWZWN0b3I8Tm9kZVRvSWRNYXAqPiBt
X2RhbmdsaW5nTm9kZVRvSWRNYXBzOworICAgIEhhc2hNYXA8bG9uZywgTm9kZSo+IG1faWRUb05v
ZGU7CisgICAgSGFzaE1hcDxsb25nLCBOb2RlVG9JZE1hcCo+IG1faWRUb05vZGVzTWFwOworICAg
IEhhc2hTZXQ8bG9uZz4gbV9jaGlsZHJlblJlcXVlc3RlZDsKKyAgICBsb25nIG1fbGFzdE5vZGVJ
ZDsKKyAgICBMaXN0SGFzaFNldDxSZWZQdHI8RG9jdW1lbnQ+ID4gbV9kb2N1bWVudHM7CisgICAg
RGVxdWU8TWF0Y2hKb2IqPiBtX3BlbmRpbmdNYXRjaEpvYnM7CisgICAgVGltZXI8SW5zcGVjdG9y
RE9NQWdlbnQ+IG1fbWF0Y2hKb2JzVGltZXI7CisgICAgSGFzaFNldDxSZWZQdHI8Tm9kZT4gPiBt
X3NlYXJjaFJlc3VsdHM7CisgICAgVmVjdG9yPGxvbmc+IG1faW5zcGVjdGVkTm9kZXM7Cit9Owor
CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKaW5kZXggNTc1MTM2My4uNTQ3OTZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMTczLDYgKzE3MywyMCBA
QCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUo
bG9uZyBwYXVzZVN0YXRlLCBsb25nKiBuZQogICAgICpuZXdTdGF0ZSA9IFNjcmlwdERlYnVnU2Vy
dmVyOjpzaGFyZWQoKS5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCk7CiB9CiAKK3ZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3Ry
aW5nJiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQoreworICAg
IEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdEhvc3QtPmlu
amVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoY2FsbEZyYW1lSWQuZ2V0KCkpOworICAgIGlmICghaW5q
ZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0
ZU9uQ2FsbEZyYW1lKGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgcmVzdWx0
KTsKK30KKwordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRDb21wbGV0aW9uc09uQ2Fs
bEZyYW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYWxsRnJhbWVJZCwgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBib29sIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSwgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQoreworICAgIEluamVjdGVkU2NyaXB0IGluamVj
dGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdEhvc3QtPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0
SWQoY2FsbEZyYW1lSWQuZ2V0KCkpOworICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1
ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5nZXRDb21wbGV0aW9uc09uQ2FsbEZyYW1lKGNh
bGxGcmFtZUlkLCBleHByZXNzaW9uLCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIHJl
c3VsdCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJGb3JQYWdlTmF2
aWdhdGlvbigpCiB7CiAgICAgbV9zY3JpcHRJRFRvQ29udGVudC5jbGVhcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggMGE2
ZmQzYi4uOThhYzFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5oCkBAIC0zMSw2ICszMSw3IEBACiAjZGVmaW5lIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnRfaAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJM
RShJTlNQRUNUT1IpCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJTY3Jp
cHREZWJ1Z0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgpAQCAtNTksMTUgKzYwLDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBi
b29sIGlzRGVidWdnZXJBbHdheXNFbmFibGVkKCk7CiAKKyAgICAvLyBQYXJ0IG9mIHRoZSBwcm90
b2NvbC4KICAgICB2b2lkIGFjdGl2YXRlQnJlYWtwb2ludHMoKTsKICAgICB2b2lkIGRlYWN0aXZh
dGVCcmVha3BvaW50cygpOwogICAgIHZvaWQgc2V0U3RpY2t5QnJlYWtwb2ludChjb25zdCBTdHJp
bmcmIHVybCwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIGJv
b2wgZW5hYmxlZCk7CiAgICAgdm9pZCBzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNl
SUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29sIGVu
YWJsZWQsIFN0cmluZyogYnJlYWtwb2ludElkLCB1bnNpZ25lZCBpbnQqIGFjdHVhbExpbmVOdW1i
ZXIpOwogICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJ
ZCk7Ci0KICAgICB2b2lkIGVkaXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwg
Y29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBib29sKiBzdWNjZXNzLCBTdHJpbmcqIHJlc3VsdCwg
UmVmUHRyPEluc3BlY3RvclZhbHVlPiogbmV3Q2FsbEZyYW1lcyk7CiAgICAgdm9pZCBnZXRTY3Jp
cHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpOwot
CiAgICAgdm9pZCBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KERlYnVnZ2VyRXZlbnRUeXBl
IHR5cGUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGRhdGEpOwogICAgIHZvaWQgY2FuY2Vs
UGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKICAgICB2b2lkIGJyZWFrUHJvZ3JhbShEZWJ1Z2dlckV2
ZW50VHlwZSB0eXBlLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBkYXRhKTsKQEAgLTc2LDgg
Kzc2LDkgQEAgcHVibGljOgogICAgIHZvaWQgc3RlcE92ZXIoKTsKICAgICB2b2lkIHN0ZXBJbnRv
KCk7CiAgICAgdm9pZCBzdGVwT3V0KCk7Ci0KICAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25z
U3RhdGUobG9uZyBwYXVzZVN0YXRlLCBsb25nKiBuZXdTdGF0ZSk7CisgICAgdm9pZCBldmFsdWF0
ZU9uQ2FsbEZyYW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYWxsRnJhbWVJZCwgY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOworICAgIHZvaWQgZ2V0Q29tcGxldGlvbnNPbkNhbGxG
cmFtZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CiAKICAgICB2b2lkIGNsZWFyRm9yUGFnZU5hdmln
YXRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVu
dGltZUFnZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWViNjU5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisK
KyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1
ZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Oklu
c3BlY3RvclJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0SG9z
dCkKKyAgICA6IG1faW5qZWN0ZWRTY3JpcHRIb3N0KGluamVjdGVkU2NyaXB0SG9zdCkKK3sKK30K
KworSW5zcGVjdG9yUnVudGltZUFnZW50Ojp+SW5zcGVjdG9yUnVudGltZUFnZW50KCkgeyB9CisK
K3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4q
IHJlc3VsdCkKK3sKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0
ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvck1haW5GcmFtZSgpOworICAgIGlmICghaW5q
ZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0
ZShleHByZXNzaW9uLCBvYmplY3RHcm91cCwgcmVzdWx0KTsKK30KKwordm9pZCBJbnNwZWN0b3JS
dW50aW1lQWdlbnQ6OmdldENvbXBsZXRpb25zKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgYm9v
bCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4q
IHJlc3VsdCkKK3sKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0
ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvck1haW5GcmFtZSgpOworICAgIGlmICghaW5q
ZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5nZXRDb21w
bGV0aW9ucyhleHByZXNzaW9uLCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIHJlc3Vs
dCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgYm9vbCBpZ25vcmVIYXNPd25Qcm9wZXJ0
eSwgYm9vbCBhYmJyZXZpYXRlLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit7Cisg
ICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0SG9zdC0+
aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZC5nZXQoKSk7CisgICAgaWYgKCFpbmpl
Y3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCisgICAgICAgIGluamVjdGVkU2NyaXB0LmdldFByb3Bl
cnRpZXMob2JqZWN0SWQsIGlnbm9yZUhhc093blByb3BlcnR5LCBhYmJyZXZpYXRlLCByZXN1bHQp
OworfQorCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6c2V0UHJvcGVydHlWYWx1ZShQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJl
c3VsdCkKK3sKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRT
Y3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkLmdldCgpKTsKKyAg
ICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAgICAgaW5qZWN0ZWRTY3Jp
cHQuc2V0UHJvcGVydHlWYWx1ZShvYmplY3RJZCwgcHJvcGVydHlOYW1lLCBleHByZXNzaW9uLCBy
ZXN1bHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50
LmgKc2ltaWxhcml0eSBpbmRleCA1NiUKY29weSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdC5oCmNvcHkgdG8gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IDlmYjRjNTAuLmExM2ViNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsNTcgKzI4LDQ2IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgSW5qZWN0ZWRTY3JpcHRfaAotI2RlZmluZSBJ
bmplY3RlZFNjcmlwdF9oCisjaWZuZGVmIEluc3BlY3RvclJ1bnRpbWVBZ2VudF9oCisjZGVmaW5l
IEluc3BlY3RvclJ1bnRpbWVBZ2VudF9oCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5j
bHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCi0j
aW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0Lmgi
Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IEluamVjdGVkU2NyaXB0SG9zdDsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3Bl
Y3RvclZhbHVlOwotY2xhc3MgU2NyaXB0RnVuY3Rpb25DYWxsOwogCi1jbGFzcyBJbmplY3RlZFNj
cmlwdCB7CitjbGFzcyBJbnNwZWN0b3JSdW50aW1lQWdlbnQgOiBwdWJsaWMgTm9uY29weWFibGUg
ewogcHVibGljOgotICAgIEluamVjdGVkU2NyaXB0KCkgeyB9Ci0gICAgfkluamVjdGVkU2NyaXB0
KCkgeyB9CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yUnVudGltZUFnZW50PiBjcmVh
dGUoSW5qZWN0ZWRTY3JpcHRIb3N0KiBpbmplY3RlZFNjcmlwdEhvc3QpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvclJ1bnRpbWVBZ2VudChpbmplY3RlZFNjcmlw
dEhvc3QpKTsKKyAgICB9CiAKLSAgICBib29sIGhhc05vVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X2luamVjdGVkU2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUoKTsgfQorICAgIH5JbnNwZWN0b3JSdW50
aW1lQWdlbnQoKTsKIAorICAgIC8vIFBhcnQgb2YgdGhlIHByb3RvY29sLgogICAgIHZvaWQgZXZh
bHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3Vw
LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQgZXZhbHVhdGVJbkNh
bGxGcmFtZShsb25nIGNhbGxGcmFtZSwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBT
dHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAg
IHZvaWQgZXZhbHVhdGVPblNlbGYoY29uc3QgU3RyaW5nJiBmdW5jdGlvbkJvZHksIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3VtZW50c0FycmF5LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
KiByZXN1bHQpOwotICAgIHZvaWQgZ2V0Q29tcGxldGlvbnMoY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLCBib29sIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSwgbG9uZyBjYWxsRnJhbWVJ
ZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIGdldENvbXBsZXRp
b25zKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFu
ZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRQ
cm9wZXJ0aWVzKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgYm9vbCBpZ25v
cmVIYXNPd25Qcm9wZXJ0eSwgYm9vbCBhYmJyZXZpYXRlLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
KiByZXN1bHQpOwotICAgIHZvaWQgcHVzaE5vZGVUb0Zyb250ZW5kKFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBvYmplY3RJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKLSAg
ICB2b2lkIHJlc29sdmVOb2RlKGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiBy
ZXN1bHQpOwotICAgIHZvaWQgZ2V0Tm9kZVByb3BlcnRpZXMobG9uZyBub2RlSWQsIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+IHByb3BlcnRpZXNBcnJheSwgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiogcmVzdWx0KTsKLSAgICB2b2lkIGdldE5vZGVQcm90b3R5cGVzKGxvbmcgbm9kZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwogICAgIHZvaWQgc2V0UHJvcGVydHlWYWx1ZShQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgcHJvcGVy
dHlOYW1lLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4q
IHJlc3VsdCk7CiAKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBQYXNzUmVm
UHRyPEluc3BlY3RvclZhbHVlPiBjYWxsRnJhbWVzKCk7Ci0jZW5kaWYKLQotICAgIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IHdyYXBGb3JDb25zb2xlKFNjcmlwdFZhbHVlKTsKLSAgICB2b2lk
IHJlbGVhc2VXcmFwcGVyT2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJik7Ci0gICAgU2NyaXB0U3Rh
dGUqIHNjcmlwdFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE9iamVjdC5z
Y3JpcHRTdGF0ZSgpOyB9Ci0KIHByaXZhdGU6Ci0gICAgZnJpZW5kIEluamVjdGVkU2NyaXB0IElu
amVjdGVkU2NyaXB0SG9zdDo6aW5qZWN0ZWRTY3JpcHRGb3IoU2NyaXB0U3RhdGUqKTsKLSAgICBl
eHBsaWNpdCBJbmplY3RlZFNjcmlwdChTY3JpcHRPYmplY3QpOwotICAgIGJvb2wgY2FuQWNjZXNz
SW5zcGVjdGVkV2luZG93KCk7Ci0KLSAgICB2b2lkIG1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2Fs
bCYsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAgSW5zcGVjdG9yUnVudGlt
ZUFnZW50KEluamVjdGVkU2NyaXB0SG9zdCopOwogCi0gICAgU2NyaXB0T2JqZWN0IG1faW5qZWN0
ZWRTY3JpcHRPYmplY3Q7CisgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBtX2luamVjdGVkU2NyaXB0
SG9zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUikKKyNlbmRpZiAvLyBJbnNwZWN0b3JSdW50aW1lQWdlbnRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKaW5k
ZXggODQzYzJiMy4uYWJjMDg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Db25zb2xlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBAIC0zNTUsMTQgKzM1NSwxMSBAQCBXZWJJbnNwZWN0
b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAvLyBDb2xsZWN0IGNvbW1hIHNl
cGFyYXRlZCBvYmplY3QgcHJvcGVydGllcyBmb3IgdGhlIGNvbXBsZXRpb24uCiAKICAgICAgICAg
dmFyIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSA9ICghZG90Tm90YXRpb24gJiYgIWJy
YWNrZXROb3RhdGlvbik7Ci0gICAgICAgIHZhciBjYWxsRnJhbWVJZCA9IFdlYkluc3BlY3Rvci5w
YW5lbHMuc2NyaXB0cy5zZWxlY3RlZENhbGxGcmFtZUlkKCkgfHwgLTE7CiAgICAgICAgIHZhciBp
bmplY3RlZFNjcmlwdEFjY2VzczsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMuc2Ny
aXB0cyAmJiBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMucGF1c2VkKSB7Ci0gICAgICAgICAg
ICB2YXIgc2VsZWN0ZWRDYWxsRnJhbWUgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuc2lk
ZWJhclBhbmVzLmNhbGxzdGFjay5zZWxlY3RlZENhbGxGcmFtZTsKLSAgICAgICAgICAgIHZhciBp
bmplY3RlZFNjcmlwdElkID0gc2VsZWN0ZWRDYWxsRnJhbWUud29ybGRJZDsKLSAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICB2YXIgaW5qZWN0ZWRTY3JpcHRJZCA9IDA7Ci0gICAgICAgIEluc3Bl
Y3RvckJhY2tlbmQuZ2V0Q29tcGxldGlvbnMoaW5qZWN0ZWRTY3JpcHRJZCwgZXhwcmVzc2lvblN0
cmluZywgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCBjYWxsRnJhbWVJZCwgcmVwb3J0
Q29tcGxldGlvbnMpOworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzICYm
IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5wYXVzZWQpCisgICAgICAgICAgICBJbnNwZWN0
b3JCYWNrZW5kLmdldENvbXBsZXRpb25zT25DYWxsRnJhbWUoV2ViSW5zcGVjdG9yLnBhbmVscy5z
Y3JpcHRzLnNlbGVjdGVkQ2FsbEZyYW1lSWQoKSwgZXhwcmVzc2lvblN0cmluZywgaW5jbHVkZUlu
c3BlY3RvckNvbW1hbmRMaW5lQVBJLCByZXBvcnRDb21wbGV0aW9ucyk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0Q29tcGxldGlvbnMoZXhwcmVzc2lvblN0
cmluZywgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCByZXBvcnRDb21wbGV0aW9ucyk7
CiAgICAgfSwKIAogICAgIF9yZXBvcnRDb21wbGV0aW9uczogZnVuY3Rpb24oYmVzdE1hdGNoT25s
eSwgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrLCBkb3ROb3RhdGlvbiwgYnJhY2tldE5vdGF0aW9u
LCBwcmVmaXgsIHJlc3VsdCwgaXNFeGNlcHRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5kZXggNmFmMTI0Yi4uM2UxYjE0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRz
UGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRz
UGFuZWwuanMKQEAgLTM2Niw3ICszNjYsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAgICAgY2Fs
bGJhY2soV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChyZXN1bHQpKTsKICAg
ICAgICAgfQotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmV2YWx1YXRlSW5DYWxsRnJhbWUoY2Fs
bEZyYW1lLndvcmxkSWQsIGNhbGxGcmFtZS5pZCwgY29kZSwgb2JqZWN0R3JvdXAsIGV2YWxDYWxs
YmFjayk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZXZhbHVhdGVPbkNhbGxGcmFtZShjYWxs
RnJhbWUuaWQsIGNvZGUsIG9iamVjdEdyb3VwLCBldmFsQ2FsbGJhY2spOwogICAgIH0sCiAKICAg
ICBfZGVidWdnZXJQYXVzZWQ6IGZ1bmN0aW9uKGV2ZW50KQo=
</data>
<flag name="review"
          id="70832"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79422</attachid>
            <date>2011-01-19 07:17:16 -0800</date>
            <delta_ts>2011-01-19 07:17:16 -0800</delta_ts>
            <desc>[PATCH] Patch for landing.</desc>
            <filename>runtime_agent_4</filename>
            <type>text/plain</type>
            <size>66773</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzY1ZTQxMy4uYTllOWZhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTExNjksNiArMTE2OSw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCiAgICAgaW5zcGVj
dG9yL0luc3BlY3RvclNldHRpbmdzLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5j
cHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZDFiOTI3Li5hZDIyYjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTEtMDEtMTkg
IFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBtb3ZlIG1l
dGhvZHMgZnJvbSBJbmplY3RlZFNjcmlwdCBkb21haW4gaW50byBET00sCisgICAgICAgIFJ1bnRp
bWUgYW5kIERlYnVnZ2VyIGRvbWFpbnMuIEludHJvZHVjZSBJbnNwZWN0b3JSdW50aW1lQWdlbnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjcxNwor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvcklu
c3BlY3Rvci5wbToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmdldENvbXBsZXRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpnZXRDb21wbGV0aW9uc09uQ2FsbEZyYW1lKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0
SG9zdDo6aW5qZWN0ZWRTY3JpcHRGb3JNYWluV29ybGQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuanM6CisgICAgICAgICguKToKKyAgICAgICAgKCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvci5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnJlbGVhc2VGcm9u
dGVuZExpZmV0aW1lQWdlbnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXROb2RlUHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0Tm9kZVByb3RvdHlwZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yTm9kZUlkKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50TGlzdGVuZXJJbmZvOjpFdmVudExpc3RlbmVySW5mbyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXI6On5ET01MaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTUFnZW50OjpjYXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50Ojpkb2N1bWVudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmV2YWx1YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6Z2V0Q29tcGxldGlvbnNPbkNhbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckNhbGxGcmFtZUlkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6fkluc3BlY3RvclJ1bnRpbWVBZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0Q29tcGxldGlvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVz
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6c2V0UHJvcGVydHlW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnB1c2hOb2Rl
VG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JS
dW50aW1lQWdlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0LmguCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmNy
ZWF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuY29tcGxldGlvbnMpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuZG9FdmFsSW5DYWxsRnJhbWUpOgor
CiAyMDExLTAxLTE5ICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAyNDdm
ODgwLi45MzVmNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTk4Miw2ICsxOTgyLDggQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1l
QWdlbnQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTZXR0aW5ncy5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTZXR0aW5ncy5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCA4OTc1OGNiLi44YTAyYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMDM1LDYgKzIwMzUs
OCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCcsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCcsCisgICAgICAgICAg
ICAnaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAnLAorICAgICAgICAgICAgJ2lu
c3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L0luc3BlY3RvclN0YXRlLmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclNl
dHRpbmdzLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JTZXR0aW5ncy5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnBybwppbmRleCBhODU3MjQyLi4yZjQyYTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAt
MTA2MCw2ICsxMDYwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50
LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIFwKKyAgICBp
bnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3Bl
Y3RvclNldHRpbmdzLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcCBcCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIFwKQEAgLTE5NTYsNiArMTk1Nyw3
IEBAIEhFQURFUlMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaCBcCiAgICAgaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yU2V0dGluZ3MuaCBcCiAgICAg
aW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCA4YmEzYzRjLi40ZGY0MDNjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNjUxNjIsNiArNjUxNjIsMTQgQEAKIAkJCQk+CiAJCQk8
L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
clJ1bnRpbWVBZ2VudC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCIKKwkJCQk+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3Bl
Y3RvclNldHRpbmdzLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGYwMTUzNC4uYTZlYzcx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTY2NCw5ICsxNjY0LDExIEBACiAJCTdBNzRFQ0JBMTAxODM5QTYwMEJGOTM5RSAv
KiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3NEVDQjgxMDE4MzlBNTAwQkY5MzlFIC8qIEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5jcHAgKi87IH07CiAJCTdBNzRFQ0JCMTAxODM5QTYwMEJGOTM5RSAv
KiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0I5MTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuaCAqLzsgfTsKIAkJN0E3NEVDQkQxMDE4MzlEQTAwQkY5MzlFIC8qIEpT
SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0JDMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3Bl
Y3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgKi87IH07CisJCTdBQTM2NUVFMTJFNzI2NTQwMERD
QTI0MiAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FBMzY1RUQxMkU3MjY1NDAwRENBMjQyIC8qIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAgKi87IH07CiAJCTdBQjBCMUMwMTIxMUE2MjIwMEE3Njk0MCAv
KiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdBQjBCMUJFMTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JE
YXRhYmFzZUFnZW50LmNwcCAqLzsgfTsKIAkJN0FCMEIxQzExMjExQTYyMjAwQTc2OTQwIC8qIElu
c3BlY3RvckRhdGFiYXNlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdBQjBCMUJGMTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50LmggKi87IH07CiAJCTdBREU3MjI2MTBDQkJCOUIwMDZCM0IzQSAvKiBDb250ZXh0TWVu
dVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QURFNzIyNTEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5oICovOyB9
OworCQk3QUYxMUE1QTEyRTcyNzQ5MDA2MUYyM0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUYxMUE1OTEy
RTcyNzQ5MDA2MUYyM0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggKi87IH07CiAJCTdBRkQ0
QThCMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMg
LyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTdBRkQ0RkY0MTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xp
c3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QUZENEZGMzExMzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFMzNDRDAxMTI3RjM0
MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlv
cml0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC04MDg5LDkgKzgwOTEsMTEgQEAKIAkJN0E3NEVDQjgxMDE4MzlBNTAwQkY5MzlFIC8qIEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QTc0RUNCOTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc0RUNCQzEwMTgzOURB
MDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QUEzNjVFRDEyRTcyNjU0MDBEQ0Ey
NDIgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdBQjBCMUJFMTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUIwQjFC
RjEyMTFBNjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBREU3MjI1MTBDQkJCOUIwMDZCM0IzQSAvKiBDb250ZXh0
TWVudVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRleHRN
ZW51UHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FGMTFBNTkxMkU3
Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0FGRDRBOEExMTMxQzI3NjAwMzVCODgzIC8qIFNjcmlwdEJyZWFrcG9p
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0QnJlYWtwb2ludC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZENEZGMzExMzI3N0I2MDAzNUI4ODMg
LyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY3JpcHREZWJ1Z0xpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdF
MzNDRDAwMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFB1cmdlUHJpb3JpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEyOTgyLDYgKzEyOTg2LDggQEAKIAkJCQk5RjBENkIyRDEyMUJGRUJBMDA2QzAy
ODggLyogSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oICovLAogCQkJCTgyQUIxNzcxMTI1QzgyNjcw
MEM1MDY5RCAvKiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCAqLywKIAkJCQk4MkFCMTc3MjEy
NUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oICovLAorCQkJCTdBQTM2
NUVEMTJFNzI2NTQwMERDQTI0MiAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwICovLAorCQkJ
CTdBRjExQTU5MTJFNzI3NDkwMDYxRjIzQyAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCAqLywK
IAkJCQk0RkEzQjkwODEyNUNEMTIxMDAzMDBCQUQgLyogSW5zcGVjdG9yU3RhdGUuY3BwICovLAog
CQkJCTRGQTNCOTA5MTI1Q0QxMjIwMDMwMEJBRCAvKiBJbnNwZWN0b3JTdGF0ZS5oICovLAogCQkJ
CTgyQUIxNzZGMTI1QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCAqLywK
QEAgLTIyMzY3LDYgKzIyMzczLDcgQEAKIAkJCQkyRTM3RTAwNjEyREJDNUE0MDBBNkIyMzMgLyog
SlNET01VUkwuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBNTY0MEMwMTJERjlFNUUwMEY0NTM2RCAv
KiBJbnNwZWN0b3JTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjNENEM0NzkxMkUwNzY2
MzAwM0RBMTUwIC8qIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQk3QUYxMUE1QTEyRTcyNzQ5MDA2MUYyM0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1MDU2LDYgKzI1MDYzLDcgQEAKIAkJCQkyRTM3RTAwNTEy
REJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E1NjQw
QkYxMkRGOUU1RTAwRjQ1MzZEIC8qIEluc3BlY3RvclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUYzRDRDNDc4MTJFMDc2NjMwMDNEQTE1MCAvKiBJbnNwZWN0b3JCcm93c2VyRGVidWdn
ZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QUEzNjVFRTEyRTcyNjU0MDBEQ0EyNDIg
LyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQppbmRleCAxNmE2
MDcwLi5lYTk4ZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdl
bmVyYXRvckluc3BlY3Rvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdl
bmVyYXRvckluc3BlY3Rvci5wbQpAQCAtNzMsNiArNzMsMTEgQEAgJHR5cGVUcmFuc2Zvcm17IlBy
b2ZpbGVyIn0gPSB7CiAgICAgImhlYWRlciIgPT4gIkluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCIs
CiAgICAgImRvbWFpbkFjY2Vzc29yIiA9PiAibV9pbnNwZWN0b3JDb250cm9sbGVyLT5tX3Byb2Zp
bGVyQWdlbnQiLAogfTsKKyR0eXBlVHJhbnNmb3JteyJSdW50aW1lIn0gPSB7CisgICAgImZvcndh
cmQiID0+ICJJbnNwZWN0b3JSdW50aW1lQWdlbnQiLAorICAgICJoZWFkZXIiID0+ICJJbnNwZWN0
b3JSdW50aW1lQWdlbnQuaCIsCisgICAgImRvbWFpbkFjY2Vzc29yIiA9PiAibV9pbnNwZWN0b3JD
b250cm9sbGVyLT5tX3J1bnRpbWVBZ2VudCIsCit9OwogCiAkdHlwZVRyYW5zZm9ybXsiRnJvbnRl
bmQifSA9IHsKICAgICAiZm9yd2FyZCIgPT4gIkluc3BlY3RvckZyb250ZW5kIiwKQEAgLTExNyw3
ICsxMjIsNyBAQCAkdHlwZVRyYW5zZm9ybXsiU3RyaW5nIn0gPSB7CiAgICAgInZhcmlhYmxlIiA9
PiAiU3RyaW5nIiwKICAgICAicmV0dXJuIiA9PiAiU3RyaW5nIiwKICAgICAiZGVmYXVsdFZhbHVl
IiA9PiAiXCJcIiIsCi0gICAgImZvcndhcmRIZWFkZXIiID0+ICJ3dGYvRm9yd2FyZC5oIiwKKyAg
ICAiZm9yd2FyZEhlYWRlciIgPT4gIlBsYXRmb3JtU3RyaW5nLmgiLAogICAgICJoZWFkZXIiID0+
ICJQbGF0Zm9ybVN0cmluZy5oIiwKICAgICAiSlNPTlR5cGUiID0+ICJTdHJpbmciLAogICAgICJK
U1R5cGUiID0+ICJzdHJpbmciCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0LmNwcAppbmRleCBmMjg0NjI3Li4xOTY5ZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKQEAgLTUyLDEwICs1MiwxMCBAQCB2b2lkIEluamVjdGVk
U2NyaXB0OjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYg
b2JqZWN0R3JvdQogICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCByZXN1bHQpOwogfQogCi12b2lkIElu
amVjdGVkU2NyaXB0OjpldmFsdWF0ZUluQ2FsbEZyYW1lKGxvbmcgY2FsbEZyYW1lLCBjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxs
RnJhbWUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNhbGxGcmFtZUlkLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4qIHJlc3VsdCkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9p
bmplY3RlZFNjcmlwdE9iamVjdCwgImV2YWx1YXRlSW5DYWxsRnJhbWUiKTsKLSAgICBmdW5jdGlv
bi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWUpOworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAiZXZhbHVhdGVPbkNhbGxGcmFtZSIpOworICAg
IGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZUlkLT50b0pTT05TdHJpbmcoKSk7CiAg
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CiAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQob2JqZWN0R3JvdXApOwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCByZXN1bHQp
OwpAQCAtNjksMTIgKzY5LDIwIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25TZWxm
KGNvbnN0IFN0cmluZyYgZnVuY3Rpb25Cb2R5LCBQYXNzUmVmUHRyPEluc3BlCiAgICAgbWFrZUNh
bGwoZnVuY3Rpb24sIHJlc3VsdCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldENvbXBs
ZXRpb25zKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRlSW5zcGVjdG9yQ29t
bWFuZExpbmVBUEksIGxvbmcgY2FsbEZyYW1lSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJl
c3VsdCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldENvbXBsZXRpb25zKGNvbnN0IFN0cmluZyYg
ZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKIHsKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImdldENvbXBsZXRpb25zIik7CiAgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQoaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJKTsKLSAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChjYWxsRnJhbWVJZCk7CisgICAgbWFrZUNhbGwoZnVuY3Rpb24sIHJlc3VsdCk7Cit9
CisKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldENvbXBsZXRpb25zT25DYWxsRnJhbWUoUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIGJvb2wgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+KiByZXN1bHQpCit7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5q
ZWN0ZWRTY3JpcHRPYmplY3QsICJnZXRDb21wbGV0aW9uc09uQ2FsbEZyYW1lIik7CisgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lSWQtPnRvSlNPTlN0cmluZygpKTsKKyAgICBm
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEkpOwogICAgIG1ha2VDYWxsKGZ1
bmN0aW9uLCByZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5oCmluZGV4IDlmYjRjNTAuLjBhM2YyNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdC5oCkBAIC01MSw5ICs1MSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNOb1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE9iamVjdC5oYXNOb1Zh
bHVlKCk7IH0KIAogICAgIHZvaWQgZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBj
b25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQp
OwotICAgIHZvaWQgZXZhbHVhdGVJbkNhbGxGcmFtZShsb25nIGNhbGxGcmFtZSwgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+KiByZXN1bHQpOworICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFtZShQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVz
dWx0KTsKICAgICB2b2lkIGV2YWx1YXRlT25TZWxmKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25Cb2R5
LCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmd1bWVudHNBcnJheSwgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiogcmVzdWx0KTsKLSAgICB2b2lkIGdldENvbXBsZXRpb25zKGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIGxvbmcg
Y2FsbEZyYW1lSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAgdm9pZCBn
ZXRDb21wbGV0aW9ucyhjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGJvb2wgaW5jbHVkZUluc3Bl
Y3RvckNvbW1hbmRMaW5lQVBJLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOworICAg
IHZvaWQgZ2V0Q29tcGxldGlvbnNPbkNhbGxGcmFtZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRlSW5z
cGVjdG9yQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CiAg
ICAgdm9pZCBnZXRQcm9wZXJ0aWVzKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJ
ZCwgYm9vbCBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgYm9vbCBhYmJyZXZpYXRlLCBSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+KiByZXN1bHQpOwogICAgIHZvaWQgcHVzaE5vZGVUb0Zyb250ZW5kKFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiog
cmVzdWx0KTsKICAgICB2b2lkIHJlc29sdmVOb2RlKGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+KiByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0SG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcAppbmRleCBmMjNkOGVjLi5iZTViMTIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApAQCAtODAsNzYgKzgwLDEz
IEBAIEluamVjdGVkU2NyaXB0SG9zdDo6fkluamVjdGVkU2NyaXB0SG9zdCgpCiB7CiB9CiAKLXZv
aWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24s
IGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3Vs
dCkKLXsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0
Rm9yTWFpbldvcmxkKCk7Ci0gICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCi0g
ICAgICAgIGluamVjdGVkU2NyaXB0LmV2YWx1YXRlKGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBy
ZXN1bHQpOwotfQotCi12b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVJbkNhbGxGcmFt
ZShsb25nIGluamVjdGVkU2NyaXB0SWQsIGxvbmcgY2FsbEZyYW1lLCBjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4qIHJlc3VsdCkKLXsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVj
dGVkU2NyaXB0SWQgPyBtX2lkVG9JbmplY3RlZFNjcmlwdC5nZXQoaW5qZWN0ZWRTY3JpcHRJZCkg
OiBpbmplY3RlZFNjcmlwdEZvck1haW5Xb3JsZCgpOwotICAgIGlmICghaW5qZWN0ZWRTY3JpcHQu
aGFzTm9WYWx1ZSgpKQotICAgICAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0ZUluQ2FsbEZyYW1l
KGNhbGxGcmFtZSwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIHJlc3VsdCk7Ci19Ci0KIHZvaWQg
SW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZU9uU2VsZihjb25zdCBTdHJpbmcmIGZ1bmN0aW9u
Qm9keSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJndW1lbnRzQXJyYXksIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKIHsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNj
cmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yTWFpbldvcmxkKCk7CisgICAgSW5qZWN0ZWRTY3JpcHQg
aW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvck1haW5GcmFtZSgpOwogICAgIGlmICgh
aW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICBpbmplY3RlZFNjcmlwdC5ldmFs
dWF0ZU9uU2VsZihmdW5jdGlvbkJvZHksIGFyZ3VtZW50c0FycmF5LCByZXN1bHQpOwogfQogCi12
b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6Z2V0Q29tcGxldGlvbnMobG9uZyBpbmplY3RlZFNjcmlw
dElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGJvb2wgaW5jbHVkZUluc3BlY3RvckNvbW1h
bmRMaW5lQVBJLCBsb25nIGNhbGxGcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1
bHQpCi17Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlw
dElkID8gbV9pZFRvSW5qZWN0ZWRTY3JpcHQuZ2V0KGluamVjdGVkU2NyaXB0SWQpIDogaW5qZWN0
ZWRTY3JpcHRGb3JNYWluV29ybGQoKTsKLSAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFs
dWUoKSkKLSAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0Q29tcGxldGlvbnMoZXhwcmVzc2lvbiwg
aW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCBjYWxsRnJhbWVJZCwgcmVzdWx0KTsKLX0K
LQotdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmdldFByb3BlcnRpZXMoUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IG9iamVjdElkLCBib29sIGlnbm9yZUhhc093blByb3BlcnR5LCBib29sIGFi
YnJldmlhdGUsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKLXsKLSAgICBJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0
SWQuZ2V0KCkpOwotICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAg
ICBpbmplY3RlZFNjcmlwdC5nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBpZ25vcmVIYXNPd25Qcm9w
ZXJ0eSwgYWJicmV2aWF0ZSwgcmVzdWx0KTsKLX0KLQotdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6
OnB1c2hOb2RlVG9Gcm9udGVuZChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQs
IFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKLXsKLSAgICBJbmplY3RlZFNjcmlwdCBp
bmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQuZ2V0KCkp
OwotICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICBpbmplY3Rl
ZFNjcmlwdC5wdXNoTm9kZVRvRnJvbnRlbmQob2JqZWN0SWQsIHJlc3VsdCk7Ci19Ci0KLXZvaWQg
SW5qZWN0ZWRTY3JpcHRIb3N0OjpyZXNvbHZlTm9kZShsb25nIG5vZGVJZCwgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiogcmVzdWx0KQotewotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0
ID0gaW5qZWN0ZWRTY3JpcHRGb3JOb2RlSWQobm9kZUlkKTsKLSAgICBpZiAoIWluamVjdGVkU2Ny
aXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgaW5qZWN0ZWRTY3JpcHQucmVzb2x2ZU5vZGUobm9k
ZUlkLCByZXN1bHQpOwotfQotCi12b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6Z2V0Tm9kZVByb3Bl
cnRpZXMobG9uZyBub2RlSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHByb3BlcnRpZXNB
cnJheSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQotewotICAgIEluamVjdGVkU2Ny
aXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JOb2RlSWQobm9kZUlkKTsKLSAg
ICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgaW5qZWN0ZWRTY3Jp
cHQuZ2V0Tm9kZVByb3BlcnRpZXMobm9kZUlkLCBwcm9wZXJ0aWVzQXJyYXksIHJlc3VsdCk7Ci19
Ci0KLXZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXROb2RlUHJvdG90eXBlcyhsb25nIG5vZGVJ
ZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQotewotICAgIEluamVjdGVkU2NyaXB0
IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JOb2RlSWQobm9kZUlkKTsKLSAgICBp
ZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgaW5qZWN0ZWRTY3JpcHQu
Z2V0Tm9kZVByb3RvdHlwZXMobm9kZUlkLCByZXN1bHQpOwotfQotCi12b2lkIEluamVjdGVkU2Ny
aXB0SG9zdDo6c2V0UHJvcGVydHlWYWx1ZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2Jq
ZWN0SWQsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKLXsKLSAgICBJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQuZ2V0
KCkpOwotICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICBpbmpl
Y3RlZFNjcmlwdC5zZXRQcm9wZXJ0eVZhbHVlKG9iamVjdElkLCBwcm9wZXJ0eU5hbWUsIGV4cHJl
c3Npb24sIHJlc3VsdCk7Ci19Ci0KIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjbGVhckNvbnNv
bGVNZXNzYWdlcygpCiB7CiAgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikKQEAgLTIxOCw2
ICsxNTUsMjAgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRIb3N0OjppbmplY3RlZFNj
cmlwdEZvcklkKGxvbmcgaWQpCiAgICAgcmV0dXJuIG1faWRUb0luamVjdGVkU2NyaXB0LmdldChp
ZCk7CiB9CiAKK0luamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0SG9zdDo6aW5qZWN0ZWRTY3Jp
cHRGb3JPYmplY3RJZChJbnNwZWN0b3JPYmplY3QqIG9iamVjdElkKQoreworICAgIGxvbmcgaW5q
ZWN0ZWRTY3JpcHRJZCA9IDA7CisgICAgYm9vbCBzdWNjZXNzID0gb2JqZWN0SWQtPmdldE51bWJl
cigiaW5qZWN0ZWRTY3JpcHRJZCIsICZpbmplY3RlZFNjcmlwdElkKTsKKyAgICBpZiAoc3VjY2Vz
cykKKyAgICAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0Rm9ySWQoaW5qZWN0ZWRTY3JpcHRJZCk7
CisgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7Cit9CisKK0luamVjdGVkU2NyaXB0IEluamVj
dGVkU2NyaXB0SG9zdDo6aW5qZWN0ZWRTY3JpcHRGb3JNYWluRnJhbWUoKQoreworICAgIHJldHVy
biBpbmplY3RlZFNjcmlwdEZvcihtYWluV29ybGRTY3JpcHRTdGF0ZShtX2luc3BlY3RvckNvbnRy
b2xsZXItPmluc3BlY3RlZFBhZ2UoKS0+bWFpbkZyYW1lKCkpKTsKK30KKwogdm9pZCBJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmRpc2NhcmRJbmplY3RlZFNjcmlwdHMoKQogewogICAgIElkVG9JbmplY3Rl
ZFNjcmlwdE1hcDo6aXRlcmF0b3IgZW5kID0gbV9pZFRvSW5qZWN0ZWRTY3JpcHQuZW5kKCk7CkBA
IC0yODMsNDMgKzIzNCw2IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpkaWREZXN0cm95V29y
a2VyKGxvbmcgaWQpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCiAKLUluamVjdGVkU2Ny
aXB0IEluamVjdGVkU2NyaXB0SG9zdDo6aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChJbnNwZWN0
b3JPYmplY3QqIG9iamVjdElkKQotewotICAgIGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCA9IDA7Ci0g
ICAgYm9vbCBzdWNjZXNzID0gb2JqZWN0SWQtPmdldE51bWJlcigiaW5qZWN0ZWRTY3JpcHRJZCIs
ICZpbmplY3RlZFNjcmlwdElkKTsKLSAgICBpZiAoc3VjY2VzcykKLSAgICAgICAgcmV0dXJuIG1f
aWRUb0luamVjdGVkU2NyaXB0LmdldChpbmplY3RlZFNjcmlwdElkKTsKLSAgICByZXR1cm4gSW5q
ZWN0ZWRTY3JpcHQoKTsKLX0KLQotSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRIb3N0Ojpp
bmplY3RlZFNjcmlwdEZvck5vZGVJZChsb25nIG5vZGVJZCkKLXsKLSAgICBpZiAoIW1faW5zcGVj
dG9yQ29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7Ci0KLSAgICBG
cmFtZSogZnJhbWUgPSAwOwotICAgIGlmIChub2RlSWQpIHsKLSAgICAgICAgQVNTRVJUKG1faW5z
cGVjdG9yQ29udHJvbGxlci0+ZG9tQWdlbnQoKSk7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBtX2lu
c3BlY3RvckNvbnRyb2xsZXItPmRvbUFnZW50KCktPm5vZGVGb3JJZChub2RlSWQpOwotICAgICAg
ICBpZiAobm9kZSkgewotICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbm9kZS0+b3du
ZXJEb2N1bWVudCgpOwotICAgICAgICAgICAgaWYgKGRvY3VtZW50KQotICAgICAgICAgICAgICAg
IGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAg
ICAgZnJhbWUgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS0+bWFpbkZy
YW1lKCk7Ci0KLSAgICBpZiAoZnJhbWUpCi0gICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdEZv
cihtYWluV29ybGRTY3JpcHRTdGF0ZShmcmFtZSkpOwotCi0gICAgcmV0dXJuIEluamVjdGVkU2Ny
aXB0KCk7Ci19Ci0KLUluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0SG9zdDo6aW5qZWN0ZWRT
Y3JpcHRGb3JNYWluV29ybGQoKQotewotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdEZvcihtYWlu
V29ybGRTY3JpcHRTdGF0ZShtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS0+
bWFpbkZyYW1lKCkpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEhvc3QuaAppbmRleCA0Y2I2MjJkLi4xMDhmMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIERh
dGFiYXNlOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHQ7CiBjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsK
IGNsYXNzIEluc3BlY3RvckZyb250ZW5kOworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3Mg
Tm9kZTsKIGNsYXNzIFNjcmlwdE9iamVjdDsKIGNsYXNzIFN0b3JhZ2U7CkBAIC01OSwxNiArNjAs
NyBAQCBwdWJsaWM6CiAgICAgfkluamVjdGVkU2NyaXB0SG9zdCgpOwogCiAgICAgLy8gUGFydCBv
ZiB0aGUgcHJvdG9jb2wuCi0gICAgdm9pZCBldmFsdWF0ZShjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJl
c3VsdCk7Ci0gICAgdm9pZCBldmFsdWF0ZUluQ2FsbEZyYW1lKGxvbmcgaW5qZWN0ZWRTY3JpcHRJ
ZCwgbG9uZyBjYWxsRnJhbWUsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5n
JiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKICAgICB2b2lk
IGV2YWx1YXRlT25TZWxmKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25Cb2R5LCBQYXNzUmVmUHRyPElu
c3BlY3RvckFycmF5PiBhcmd1bWVudHNBcnJheSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVz
dWx0KTsKLSAgICB2b2lkIGdldENvbXBsZXRpb25zKGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCwgY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBib29sIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQ
SSwgbG9uZyBjYWxsRnJhbWVJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKLSAg
ICB2b2lkIGdldFByb3BlcnRpZXMoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElk
LCBib29sIGlnbm9yZUhhc093blByb3BlcnR5LCBib29sIGFiYnJldmlhdGUsIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBwdXNoTm9kZVRvRnJvbnRlbmQoUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiBy
ZXN1bHQpOwotICAgIHZvaWQgcmVzb2x2ZU5vZGUobG9uZyBub2RlSWQsIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXROb2RlUHJvcGVydGllcyhsb25nIG5vZGVJ
ZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gcHJvcGVydGllc0FycmF5LCBSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQgZ2V0Tm9kZVByb3RvdHlwZXMobG9uZyBu
b2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBzZXRQcm9w
ZXJ0eVZhbHVlKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgY29uc3QgU3Ry
aW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiogcmVzdWx0KTsKIAogICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xsZXI7IH0KICAgICB2b2lk
IGRpc2Nvbm5lY3RDb250cm9sbGVyKCkgeyBtX2luc3BlY3RvckNvbnRyb2xsZXIgPSAwOyB9CkBA
IC05Niw2ICs4OCw4IEBAIHB1YmxpYzoKICAgICBwYWlyPGxvbmcsIFNjcmlwdE9iamVjdD4gaW5q
ZWN0U2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBTY3JpcHRTdGF0ZSopOwogICAgIEluamVj
dGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yKFNjcmlwdFN0YXRlKik7CiAgICAgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JJZChsb25nKTsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdEZvck9iamVjdElkKEluc3BlY3Rvck9iamVjdCogb2JqZWN0SWQpOworICAgIElu
amVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yTWFpbkZyYW1lKCk7CiAgICAgdm9pZCBkaXNj
YXJkSW5qZWN0ZWRTY3JpcHRzKCk7CiAgICAgdm9pZCByZWxlYXNlV3JhcHBlck9iamVjdEdyb3Vw
KGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCk7CiAKQEAg
LTEwOSwxMCArMTAzLDYgQEAgcHJpdmF0ZToKICAgICBTY3JpcHRPYmplY3QgY3JlYXRlSW5qZWN0
ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwg
bG9uZyBpZCk7CiAgICAgdm9pZCBkaXNjYXJkSW5qZWN0ZWRTY3JpcHQoU2NyaXB0U3RhdGUqKTsK
IAotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoSW5zcGVjdG9y
T2JqZWN0KiBvYmplY3RJZCk7Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JO
b2RlSWQobG9uZyBub2RlSWQpOwotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9y
TWFpbldvcmxkKCk7Ci0KICAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBtX2luc3BlY3RvckNvbnRy
b2xsZXI7CiAgICAgbG9uZyBtX25leHRJbmplY3RlZFNjcmlwdElkOwogICAgIGxvbmcgbV9sYXN0
V29ya2VySWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuanMKaW5kZXggNDY4Mzk5Ny4uM2FhMjRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwpAQCAtMTg2LDI5ICsxODYsMTQgQEAg
SW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMo
cHJvcGVydHlOYW1lU2V0KTsKICAgICB9LAogCi0gICAgZ2V0Q29tcGxldGlvbnM6IGZ1bmN0aW9u
KGV4cHJlc3Npb24sIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSwgY2FsbEZyYW1lSWQp
CisgICAgZ2V0Q29tcGxldGlvbnM6IGZ1bmN0aW9uKGV4cHJlc3Npb24sIGluY2x1ZGVJbnNwZWN0
b3JDb21tYW5kTGluZUFQSSkKICAgICB7CiAgICAgICAgIHZhciBwcm9wcyA9IHt9OwogICAgICAg
ICB0cnkgewotICAgICAgICAgICAgdmFyIGV4cHJlc3Npb25SZXN1bHQ7Ci0gICAgICAgICAgICAv
LyBFdmFsdWF0ZSBvbiBjYWxsIGZyYW1lIGlmIGNhbGwgZnJhbWUgaWQgaXMgYXZhaWxhYmxlLgot
ICAgICAgICAgICAgaWYgKGNhbGxGcmFtZUlkICE9PSAtMSkgewotICAgICAgICAgICAgICAgIHZh
ciBjYWxsRnJhbWUgPSB0aGlzLl9jYWxsRnJhbWVGb3JJZChjYWxsRnJhbWVJZCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFjYWxsRnJhbWUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9w
czsKLSAgICAgICAgICAgICAgICBpZiAoZXhwcmVzc2lvbikKLSAgICAgICAgICAgICAgICAgICAg
ZXhwcmVzc2lvblJlc3VsdCA9IHRoaXMuX2V2YWx1YXRlT24oY2FsbEZyYW1lLmV2YWx1YXRlLCBj
YWxsRnJhbWUsIGV4cHJlc3Npb24sIHRydWUpOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAvLyBFdmFsdWF0ZSBpbnRvIHByb3BlcnRpZXMgaW4gc2NvcGUgb2Yg
dGhlIHNlbGVjdGVkIGNhbGwgZnJhbWUuCi0gICAgICAgICAgICAgICAgICAgIHZhciBzY29wZUNo
YWluID0gY2FsbEZyYW1lLnNjb3BlQ2hhaW47Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgc2NvcGVDaGFpbi5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMuX3BvcHVsYXRlUHJvcGVydHlOYW1lcyhzY29wZUNoYWluW2ldLCBwcm9wcyk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBp
ZiAoIWV4cHJlc3Npb24pCi0gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gPSAidGhpcyI7
Ci0gICAgICAgICAgICAgICAgZXhwcmVzc2lvblJlc3VsdCA9IHRoaXMuX2V2YWx1YXRlT24oaW5z
cGVjdGVkV2luZG93LmV2YWwsIGluc3BlY3RlZFdpbmRvdywgZXhwcmVzc2lvbiwgZmFsc2UpOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFleHByZXNzaW9uKQorICAgICAgICAgICAg
ICAgIGV4cHJlc3Npb24gPSAidGhpcyI7CisgICAgICAgICAgICB2YXIgZXhwcmVzc2lvblJlc3Vs
dCA9IHRoaXMuX2V2YWx1YXRlT24oaW5zcGVjdGVkV2luZG93LmV2YWwsIGluc3BlY3RlZFdpbmRv
dywgZXhwcmVzc2lvbiwgZmFsc2UpOworCiAgICAgICAgICAgICBpZiAodHlwZW9mIGV4cHJlc3Np
b25SZXN1bHQgPT09ICJvYmplY3QiKQogICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlUHJv
cGVydHlOYW1lcyhleHByZXNzaW9uUmVzdWx0LCBwcm9wcyk7CiAgICAgCkBAIC0yMjEsNiArMjA2
LDM0IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHByb3Bz
OwogICAgIH0sCiAKKyAgICBnZXRDb21wbGV0aW9uc09uQ2FsbEZyYW1lOiBmdW5jdGlvbihjYWxs
RnJhbWVJZCwgZXhwcmVzc2lvbiwgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJKQorICAg
IHsKKyAgICAgICAgdmFyIHByb3BzID0ge307CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB2
YXIgY2FsbEZyYW1lID0gdGhpcy5fY2FsbEZyYW1lRm9ySWQoY2FsbEZyYW1lSWQpOworICAgICAg
ICAgICAgaWYgKCFjYWxsRnJhbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzOworCisg
ICAgICAgICAgICBpZiAoZXhwcmVzc2lvbikgeworICAgICAgICAgICAgICAgIHZhciBleHByZXNz
aW9uUmVzdWx0ID0gdGhpcy5fZXZhbHVhdGVPbihjYWxsRnJhbWUuZXZhbHVhdGUsIGNhbGxGcmFt
ZSwgZXhwcmVzc2lvbiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBleHByZXNz
aW9uUmVzdWx0ID09PSAib2JqZWN0IikKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fcG9wdWxh
dGVQcm9wZXJ0eU5hbWVzKGV4cHJlc3Npb25SZXN1bHQsIHByb3BzKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gRXZhbHVhdGUgaW50byBwcm9wZXJ0aWVzIGluIHNj
b3BlIG9mIHRoZSBzZWxlY3RlZCBjYWxsIGZyYW1lLgorICAgICAgICAgICAgICAgIHZhciBzY29w
ZUNoYWluID0gY2FsbEZyYW1lLnNjb3BlQ2hhaW47CisgICAgICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBzY29wZUNoYWluLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgICAgICB0
aGlzLl9wb3B1bGF0ZVByb3BlcnR5TmFtZXMoc2NvcGVDaGFpbltpXSwgcHJvcHMpOworICAgICAg
ICAgICAgfQorICAgIAorICAgICAgICAgICAgaWYgKGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGlu
ZUFQSSkgeworICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gdGhpcy5fY29tbWFuZExp
bmVBUEkpCisgICAgICAgICAgICAgICAgICAgIHByb3BzW3Byb3BdID0gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBy
b3BzOworICAgIH0sCisKICAgICBldmFsdWF0ZTogZnVuY3Rpb24oZXhwcmVzc2lvbiwgb2JqZWN0
R3JvdXApCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVBbmRXcmFwKGluc3Bl
Y3RlZFdpbmRvdy5ldmFsLCBpbnNwZWN0ZWRXaW5kb3csIGV4cHJlc3Npb24sIG9iamVjdEdyb3Vw
LCBmYWxzZSk7CkBAIC0yNzgsNyArMjkxLDcgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0g
ewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0sCiAKLSAgICBldmFsdWF0ZUluQ2FsbEZy
YW1lOiBmdW5jdGlvbihjYWxsRnJhbWVJZCwgY29kZSwgb2JqZWN0R3JvdXApCisgICAgZXZhbHVh
dGVPbkNhbGxGcmFtZTogZnVuY3Rpb24oY2FsbEZyYW1lSWQsIGNvZGUsIG9iamVjdEdyb3VwKQog
ICAgIHsKICAgICAgICAgdmFyIGNhbGxGcmFtZSA9IHRoaXMuX2NhbGxGcmFtZUZvcklkKGNhbGxG
cmFtZUlkKTsKICAgICAgICAgaWYgKCFjYWxsRnJhbWUpCkBAIC0yODYsMTAgKzI5OSwxMiBAQCBJ
bmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ldmFsdWF0
ZUFuZFdyYXAoY2FsbEZyYW1lLmV2YWx1YXRlLCBjYWxsRnJhbWUsIGNvZGUsIG9iamVjdEdyb3Vw
LCB0cnVlKTsKICAgICB9LAogCi0gICAgX2NhbGxGcmFtZUZvcklkOiBmdW5jdGlvbihpZCkKKyAg
ICBfY2FsbEZyYW1lRm9ySWQ6IGZ1bmN0aW9uKGNhbGxGcmFtZUlkKQogICAgIHsKKyAgICAgICAg
dmFyIHBhcnNlZENhbGxGcmFtZUlkID0gZXZhbCgiKCIgKyBjYWxsRnJhbWVJZCArICIpIik7Cisg
ICAgICAgIHZhciBvcmRpbmFsID0gcGFyc2VkQ2FsbEZyYW1lSWQub3JkaW5hbDsKICAgICAgICAg
dmFyIGNhbGxGcmFtZSA9IEluamVjdGVkU2NyaXB0SG9zdC5jdXJyZW50Q2FsbEZyYW1lKCk7Ci0g
ICAgICAgIHdoaWxlICgtLWlkID49IDAgJiYgY2FsbEZyYW1lKQorICAgICAgICB3aGlsZSAoLS1v
cmRpbmFsID49IDAgJiYgY2FsbEZyYW1lKQogICAgICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZy
YW1lLmNhbGxlcjsKICAgICAgICAgcmV0dXJuIGNhbGxGcmFtZTsKICAgICB9LApAQCAtNTMxLDE2
ICs1NDYsMTUgQEAgSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0LmZyb21PYmplY3QgPSBmdW5j
dGlvbihvYmplY3QsIG9iamVjdElkLCBhYmJyZXZpYXRlKQogICAgIH0KIH0KIAotSW5qZWN0ZWRT
Y3JpcHQuQ2FsbEZyYW1lUHJveHkgPSBmdW5jdGlvbihpZCwgY2FsbEZyYW1lKQorSW5qZWN0ZWRT
Y3JpcHQuQ2FsbEZyYW1lUHJveHkgPSBmdW5jdGlvbihvcmRpbmFsLCBjYWxsRnJhbWUpCiB7Ci0g
ICAgdGhpcy5pZCA9IGlkOworICAgIHRoaXMuaWQgPSB7IG9yZGluYWw6IG9yZGluYWwsIGluamVj
dGVkU2NyaXB0SWQ6IGluamVjdGVkU2NyaXB0SWQgfTsKICAgICB0aGlzLnR5cGUgPSBjYWxsRnJh
bWUudHlwZTsKICAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9ICh0aGlzLnR5cGUgPT09ICJmdW5jdGlv
biIgPyBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lIDogIiIpOwogICAgIHRoaXMuc291cmNlSUQgPSBj
YWxsRnJhbWUuc291cmNlSUQ7CiAgICAgdGhpcy5saW5lID0gY2FsbEZyYW1lLmxpbmU7CiAgICAg
dGhpcy5jb2x1bW4gPSBjYWxsRnJhbWUuY29sdW1uOwogICAgIHRoaXMuc2NvcGVDaGFpbiA9IHRo
aXMuX3dyYXBTY29wZUNoYWluKGNhbGxGcmFtZSk7Ci0gICAgdGhpcy53b3JsZElkID0gaW5qZWN0
ZWRTY3JpcHRJZDsKIH0KIAogSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkucHJvdG90eXBl
ID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCA3MzljMzM2Li4w
ZGJhNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbApAQCAtNzEsMTkg
KzcxLDE5IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQg
ZGVsZXRlQ29va2llKGluIFN0cmluZyBjb29raWVOYW1lLCBpbiBTdHJpbmcgZG9tYWluKTsKIAog
ICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworICAgICAgICAvLyBSdW50aW1lCisgICAgICAgIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCisKKyAgICAgICAgW2RvbWFpbj1SdW50aW1lXSB2b2lkIGV2YWx1YXRlKGluIFN0
cmluZyBleHByZXNzaW9uLCBpbiBTdHJpbmcgb2JqZWN0R3JvdXAsIG91dCBWYWx1ZSByZXN1bHQp
OworICAgICAgICBbZG9tYWluPVJ1bnRpbWVdIHZvaWQgZ2V0Q29tcGxldGlvbnMoaW4gU3RyaW5n
IGV4cHJlc3Npb24sIGluIGJvb2xlYW4gaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCBv
dXQgVmFsdWUgcmVzdWx0KTsKKyAgICAgICAgW2RvbWFpbj1SdW50aW1lXSB2b2lkIGdldFByb3Bl
cnRpZXMoaW4gT2JqZWN0IG9iamVjdElkLCBpbiBib29sZWFuIGlnbm9yZUhhc093blByb3BlcnR5
LCBpbiBib29sZWFuIGFiYnJldmlhdGUsIG91dCBWYWx1ZSByZXN1bHQpOworICAgICAgICBbZG9t
YWluPVJ1bnRpbWVdIHZvaWQgc2V0UHJvcGVydHlWYWx1ZShpbiBPYmplY3Qgb2JqZWN0SWQsIGlu
IFN0cmluZyBwcm9wZXJ0eU5hbWUsIGluIFN0cmluZyBleHByZXNzaW9uLCBvdXQgVmFsdWUgcmVz
dWx0KTsKKworICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgICAgICAvLyBJbmplY3RlZCBTY3Jp
cHQKICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAotICAgICAgICBbZG9tYWluPUluamVjdGVkU2Ny
aXB0XSB2b2lkIGV2YWx1YXRlKGluIFN0cmluZyBleHByZXNzaW9uLCBpbiBTdHJpbmcgb2JqZWN0
R3JvdXAsIG91dCBWYWx1ZSByZXN1bHQpOwotICAgICAgICBbZG9tYWluPUluamVjdGVkU2NyaXB0
XSB2b2lkIGV2YWx1YXRlSW5DYWxsRnJhbWUoaW4gbG9uZyBpbmplY3RlZFNjcmlwdElkLCBpbiBs
b25nIGNhbGxGcmFtZSwgaW4gU3RyaW5nIGV4cHJlc3Npb24sIGluIFN0cmluZyBvYmplY3RHcm91
cCwgb3V0IFZhbHVlIHJlc3VsdCk7CiAgICAgICAgIFtkb21haW49SW5qZWN0ZWRTY3JpcHRdIHZv
aWQgZXZhbHVhdGVPblNlbGYoaW4gU3RyaW5nIGZ1bmN0aW9uQm9keSwgaW4gQXJyYXkgYXJndW1l
bnRzQXJyYXksIG91dCBWYWx1ZSByZXN1bHQpOwotICAgICAgICBbZG9tYWluPUluamVjdGVkU2Ny
aXB0XSB2b2lkIGdldENvbXBsZXRpb25zKGluIGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCwgaW4gU3Ry
aW5nIGV4cHJlc3Npb24sIGluIGJvb2xlYW4gaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJ
LCBpbiBsb25nIGNhbGxGcmFtZUlkLCBvdXQgVmFsdWUgcmVzdWx0KTsKLSAgICAgICAgW2RvbWFp
bj1JbmplY3RlZFNjcmlwdF0gdm9pZCBnZXRQcm9wZXJ0aWVzKGluIE9iamVjdCBvYmplY3RJZCwg
aW4gYm9vbGVhbiBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgaW4gYm9vbGVhbiBhYmJyZXZpYXRlLCBv
dXQgVmFsdWUgcmVzdWx0KTsKLSAgICAgICAgW2RvbWFpbj1JbmplY3RlZFNjcmlwdF0gdm9pZCBw
dXNoTm9kZVRvRnJvbnRlbmQoaW4gT2JqZWN0IG9iamVjdElkLCBvdXQgVmFsdWUgcmVzdWx0KTsK
LSAgICAgICAgW2RvbWFpbj1JbmplY3RlZFNjcmlwdF0gdm9pZCByZXNvbHZlTm9kZShpbiBsb25n
IG5vZGVJZCwgb3V0IFZhbHVlIHJlc3VsdCk7Ci0gICAgICAgIFtkb21haW49SW5qZWN0ZWRTY3Jp
cHRdIHZvaWQgZ2V0Tm9kZVByb3BlcnRpZXMoaW4gbG9uZyBub2RlSWQsIGluIEFycmF5IHByb3Bl
cnRpZXNBcnJheSwgb3V0IFZhbHVlIHJlc3VsdCk7Ci0gICAgICAgIFtkb21haW49SW5qZWN0ZWRT
Y3JpcHRdIHZvaWQgZ2V0Tm9kZVByb3RvdHlwZXMoaW4gbG9uZyBub2RlSWQsIG91dCBWYWx1ZSBy
ZXN1bHQpOwotICAgICAgICBbZG9tYWluPUluamVjdGVkU2NyaXB0XSB2b2lkIHNldFByb3BlcnR5
VmFsdWUoaW4gT2JqZWN0IG9iamVjdElkLCBpbiBTdHJpbmcgcHJvcGVydHlOYW1lLCBpbiBTdHJp
bmcgZXhwcmVzc2lvbiwgb3V0IFZhbHVlIHJlc3VsdCk7CiAKICAgICAgICAgLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KICAgICAgICAgLy8gQ29uc29sZSBBUEkKQEAgLTE5MCw2ICsxOTAsMTAgQEAgbW9kdWxlIGNv
cmUgewogICAgICAgICBbZG9tYWluPURPTV0gdm9pZCBwZXJmb3JtU2VhcmNoKGluIFN0cmluZyBx
dWVyeSwgaW4gYm9vbGVhbiBydW5TeW5jaHJvbm91c2x5KTsKICAgICAgICAgW2RvbWFpbj1ET01d
IHZvaWQgc2VhcmNoQ2FuY2VsZWQoKTsKICAgICAgICAgW2RvbWFpbj1ET01dIHZvaWQgcHVzaE5v
ZGVCeVBhdGhUb0Zyb250ZW5kKGluIFN0cmluZyBwYXRoLCBvdXQgbG9uZyBub2RlSWQpOworICAg
ICAgICBbZG9tYWluPURPTV0gdm9pZCByZXNvbHZlTm9kZShpbiBsb25nIG5vZGVJZCwgb3V0IFZh
bHVlIHJlc3VsdCk7CisgICAgICAgIFtkb21haW49RE9NXSB2b2lkIGdldE5vZGVQcm9wZXJ0aWVz
KGluIGxvbmcgbm9kZUlkLCBpbiBBcnJheSBwcm9wZXJ0aWVzQXJyYXksIG91dCBWYWx1ZSByZXN1
bHQpOworICAgICAgICBbZG9tYWluPURPTV0gdm9pZCBnZXROb2RlUHJvdG90eXBlcyhpbiBsb25n
IG5vZGVJZCwgb3V0IFZhbHVlIHJlc3VsdCk7CisgICAgICAgIFtkb21haW49RE9NXSB2b2lkIHB1
c2hOb2RlVG9Gcm9udGVuZChpbiBPYmplY3Qgb2JqZWN0SWQsIG91dCBWYWx1ZSByZXN1bHQpOwog
CiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1ET01dIHZvaWQgc2V0RG9jdW1lbnQob3V0IFZhbHVl
IHJvb3QpOyAvLyBGSVhNRTogc2hvdWxkIGJlIHJlcXVlc3RlZCBmcm9tIHRoZSBmcm9udC1lbmQg
YXMgZ2V0RG9jdW1lbnQuCiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1ET01dIHZvaWQgYXR0cmli
dXRlc1VwZGF0ZWQob3V0IGxvbmcgaWQsIG91dCBBcnJheSBhdHRyaWJ1dGVzKTsKQEAgLTI2Niwx
MSArMjcwLDE0IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9p
ZCByZXN1bWUoKTsKICAgICAgICAgW25vdGlmeSwgZG9tYWluPURlYnVnZ2VyXSB2b2lkIHJlc3Vt
ZWRTY3JpcHQoKTsgLy8gRklYTUU6IE1ha2UgdGhpcyBvdXQgcGFyYW1ldGVyIGZvIHJlc3VtZSBp
ZiBwb3NzaWJsZS4KIAotICAgICAgICBbZG9tYWluPURlYnVnZ2VyXSB2b2lkIHNldFBhdXNlT25F
eGNlcHRpb25zU3RhdGUoaW4gbG9uZyBwYXVzZU9uRXhjZXB0aW9uc1N0YXRlLCBvdXQgbG9uZyBu
ZXdTdGF0ZSk7Ci0KICAgICAgICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBlZGl0U2NyaXB0U291
cmNlKGluIFN0cmluZyBzb3VyY2VJRCwgaW4gU3RyaW5nIG5ld0NvbnRlbnQsIG91dCBib29sZWFu
IHN1Y2Nlc3MsIG91dCBTdHJpbmcgcmVzdWx0LCBvdXQgVmFsdWUgbmV3Q2FsbEZyYW1lcyk7CiAg
ICAgICAgIFtkb21haW49RGVidWdnZXJdIHZvaWQgZ2V0U2NyaXB0U291cmNlKGluIFN0cmluZyBz
b3VyY2VJRCwgb3V0IFN0cmluZyBzY3JpcHRTb3VyY2UpOwogCisgICAgICAgIFtkb21haW49RGVi
dWdnZXJdIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShpbiBsb25nIHBhdXNlT25FeGNl
cHRpb25zU3RhdGUsIG91dCBsb25nIG5ld1N0YXRlKTsKKworICAgICAgICBbZG9tYWluPURlYnVn
Z2VyXSB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUoaW4gT2JqZWN0IGNhbGxGcmFtZUlkLCBpbiBT
dHJpbmcgZXhwcmVzc2lvbiwgaW4gU3RyaW5nIG9iamVjdEdyb3VwLCBvdXQgVmFsdWUgcmVzdWx0
KTsKKyAgICAgICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBnZXRDb21wbGV0aW9uc09uQ2FsbEZy
YW1lKGluIE9iamVjdCBjYWxsRnJhbWVJZCwgaW4gU3RyaW5nIGV4cHJlc3Npb24sIGluIGJvb2xl
YW4gaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCBvdXQgVmFsdWUgcmVzdWx0KTsKKwog
ICAgICAgICBbbm90aWZ5LCBkb21haW49RGVidWdnZXJdIHZvaWQgYnJlYWtwb2ludFJlc29sdmVk
KG91dCBTdHJpbmcgYnJlYWtwb2ludElkLCBvdXQgU3RyaW5nIHNvdXJjZUlELCBvdXQgdW5zaWdu
ZWQgaW50IGxpbmVOdW1iZXIsIG91dCBTdHJpbmcgY29uZGl0aW9uLCBvdXQgYm9vbGVhbiBlbmFi
bGVkLCBvdXQgdW5zaWduZWQgaW50IG9yaWdpbmFsTGluZU51bWJlcik7CiAKICNpZiBkZWZpbmVk
KEVOQUJMRV9XT1JLRVJTKSAmJiBFTkFCTEVfV09SS0VSUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDM4MGMwNTcuLjhiNmI2YmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKQEAgLTcwLDYgKzcwLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JQcm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvclNldHRpbmdzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCkBAIC0zODksOCArMzkwLDkg
QEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQogICAgIG1fb3Bl
bmluZ0Zyb250ZW5kID0gZmFsc2U7CiAgICAgcmVsZWFzZUZyb250ZW5kTGlmZXRpbWVBZ2VudHMo
KTsKICAgICBtX2Zyb250ZW5kID0gbmV3IEluc3BlY3RvckZyb250ZW5kKG1fY2xpZW50KTsKLSAg
ICBtX2RvbUFnZW50ID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmNyZWF0ZShtX2Zyb250ZW5kLmdldCgp
KTsKKyAgICBtX2RvbUFnZW50ID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmNyZWF0ZShtX2luamVjdGVk
U2NyaXB0SG9zdC5nZXQoKSwgbV9mcm9udGVuZC5nZXQoKSk7CiAgICAgbV9yZXNvdXJjZUFnZW50
ID0gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y3JlYXRlKG1faW5zcGVjdGVkUGFnZSwgbV9mcm9u
dGVuZC5nZXQoKSk7CisgICAgbV9ydW50aW1lQWdlbnQgPSBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6
OmNyZWF0ZShtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSk7CiAKICAgICBtX2Nzc0FnZW50LT5z
ZXRET01BZ2VudChtX2RvbUFnZW50LmdldCgpKTsKIApAQCAtNTAwLDYgKzUwMiw3IEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKCkKIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6cmVsZWFzZUZyb250ZW5kTGlmZXRpbWVBZ2VudHMoKQogewogICAgIG1fcmVz
b3VyY2VBZ2VudC5jbGVhcigpOworICAgIG1fcnVudGltZUFnZW50LmNsZWFyKCk7CiAKICAgICAv
LyBUaGlzIHNob3VsZCBiZSBpbnZva2VkIHByaW9yIHRvIG1fZG9tQWdlbnQgZGVzdHJ1Y3Rpb24u
CiAgICAgbV9jc3NBZ2VudC0+c2V0RE9NQWdlbnQoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA0MDUxMzljLi5hYjgzNzdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTcy
LDYgKzcyLDcgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiBjbGFzcyBJbnNwZWN0
b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JQcm9maWxlckFnZW50OwogY2xhc3MgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDsKK2NsYXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudDsKIGNsYXNzIEluc3Bl
Y3RvclNldHRpbmdzOwogY2xhc3MgSW5zcGVjdG9yU3RhdGU7CiBjbGFzcyBJbnNwZWN0b3JTdG9y
YWdlQWdlbnQ7CkBAIC0zMTEsNiArMzEyLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxOb2Rl
PiBtX25vZGVUb0ZvY3VzOwogICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZUFnZW50PiBtX3Jl
c291cmNlQWdlbnQ7CisgICAgT3duUHRyPEluc3BlY3RvclJ1bnRpbWVBZ2VudD4gbV9ydW50aW1l
QWdlbnQ7CiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwg
UmVmUHRyPEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U+ID4gRGF0YWJhc2VSZXNvdXJjZXNNYXA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRl
eCAxOWFlMzBkLi42ZTEwZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJGcmFtZVRyZWUu
aCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxl
bWVudC5oIgorI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIk5v
ZGUuaCIKQEAgLTIwNiw4ICsyMDcsOSBAQCBwdWJsaWM6CiAKIH0KIAotSW5zcGVjdG9yRE9NQWdl
bnQ6Okluc3BlY3RvckRPTUFnZW50KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK0luc3Bl
Y3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJbmplY3RlZFNjcmlwdEhvc3QqIGluamVj
dGVkU2NyaXB0SG9zdCwgSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogICAgIDogRXZlbnRM
aXN0ZW5lcihJbnNwZWN0b3JET01BZ2VudFR5cGUpCisgICAgLCBtX2luamVjdGVkU2NyaXB0SG9z
dChpbmplY3RlZFNjcmlwdEhvc3QpCiAgICAgLCBtX2Zyb250ZW5kKGZyb250ZW5kKQogICAgICwg
bV9kb21MaXN0ZW5lcigwKQogICAgICwgbV9sYXN0Tm9kZUlkKDEpCkBAIC03NTgsNiArNzYwLDM0
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNlYXJjaENhbmNlbGVkKCkKICAgICBtX3NlYXJj
aFJlc3VsdHMuY2xlYXIoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5v
ZGUobG9uZyBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yTm9kZUlkKG5v
ZGVJZCk7CisgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCisgICAgICAgIGlu
amVjdGVkU2NyaXB0LnJlc29sdmVOb2RlKG5vZGVJZCwgcmVzdWx0KTsKK30KKwordm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6Z2V0Tm9kZVByb3BlcnRpZXMobG9uZyBub2RlSWQsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+IHByb3BlcnRpZXNBcnJheSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiog
cmVzdWx0KQoreworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRT
Y3JpcHRGb3JOb2RlSWQobm9kZUlkKTsKKyAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFs
dWUoKSkKKyAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0Tm9kZVByb3BlcnRpZXMobm9kZUlkLCBw
cm9wZXJ0aWVzQXJyYXksIHJlc3VsdCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Omdl
dE5vZGVQcm90b3R5cGVzKGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1
bHQpCit7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlw
dEZvck5vZGVJZChub2RlSWQpOworICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgp
KQorICAgICAgICBpbmplY3RlZFNjcmlwdC5nZXROb2RlUHJvdG90eXBlcyhub2RlSWQsIHJlc3Vs
dCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlVG9Gcm9udGVuZChQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4q
IHJlc3VsdCkKK3sKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0
ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkLmdldCgpKTsK
KyAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAgICAgaW5qZWN0ZWRT
Y3JpcHQucHVzaE5vZGVUb0Zyb250ZW5kKG9iamVjdElkLCByZXN1bHQpOworfQorCiBTdHJpbmcg
SW5zcGVjdG9yRE9NQWdlbnQ6OmRvY3VtZW50VVJMU3RyaW5nKERvY3VtZW50KiBkb2N1bWVudCkg
Y29uc3QKIHsKICAgICBpZiAoIWRvY3VtZW50IHx8IGRvY3VtZW50LT51cmwoKS5pc051bGwoKSkK
QEAgLTExMTIsNiArMTE0MiwyNiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZUJ5
UGF0aFRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nKiBub2RlSQogICAgICAgICAq
bm9kZUlkID0gcHVzaE5vZGVQYXRoVG9Gcm9udGVuZChub2RlKTsKIH0KIAorSW5qZWN0ZWRTY3Jp
cHQgSW5zcGVjdG9yRE9NQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yTm9kZUlkKGxvbmcgbm9kZUlk
KQoreworICAgIEZyYW1lKiBmcmFtZSA9IDA7CisgICAgaWYgKG5vZGVJZCkgeworICAgICAgICBO
b2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCk7CisgICAgICAgIGlmIChub2RlKSB7CisgICAg
ICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBub2RlLT5vd25lckRvY3VtZW50KCk7CisgICAg
ICAgICAgICBpZiAoZG9jdW1lbnQpCisgICAgICAgICAgICAgICAgZnJhbWUgPSBkb2N1bWVudC0+
ZnJhbWUoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBmcmFtZSA9IG1haW5GcmFt
ZURvY3VtZW50KCktPmZyYW1lKCk7CisKKyAgICBpZiAoZnJhbWUpCisgICAgICAgIHJldHVybiBt
X2luamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3IobWFpbldvcmxkU2NyaXB0U3Rh
dGUoZnJhbWUpKTsKKworICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOworfQorCisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDk3MTc1ZmUuLmU0
ZWRmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5o
CkBAIC0zMiw2ICszMiw4IEBACiAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVk
ZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgorI2luY2x1ZGUg
IkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2lu
Y2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTQ1LDE2NCArNDcsMTY4
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKLSAgICBjbGFzcyBDb250YWluZXJOb2RlOwotICAgIGNsYXNzIENTU1J1bGU7Ci0gICAg
Y2xhc3MgQ1NTUnVsZUxpc3Q7Ci0gICAgY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKLSAgICBj
bGFzcyBDU1NTdHlsZVJ1bGU7Ci0gICAgY2xhc3MgQ1NTU3R5bGVTaGVldDsKLSAgICBjbGFzcyBD
aGFyYWN0ZXJEYXRhOwotICAgIGNsYXNzIERvY3VtZW50OwotICAgIGNsYXNzIEVsZW1lbnQ7Ci0g
ICAgY2xhc3MgRXZlbnQ7Ci0gICAgY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQ7Ci0gICAgY2xhc3Mg
SW5zcGVjdG9yRnJvbnRlbmQ7Ci0gICAgY2xhc3MgTWF0Y2hKb2I7Ci0gICAgY2xhc3MgTmFtZU5v
ZGVNYXA7Ci0gICAgY2xhc3MgTm9kZTsKLSAgICBjbGFzcyBQYWdlOworY2xhc3MgQ29udGFpbmVy
Tm9kZTsKK2NsYXNzIENTU1J1bGU7CitjbGFzcyBDU1NSdWxlTGlzdDsKK2NsYXNzIENTU1N0eWxl
RGVjbGFyYXRpb247CitjbGFzcyBDU1NTdHlsZVJ1bGU7CitjbGFzcyBDU1NTdHlsZVNoZWV0Owor
Y2xhc3MgQ2hhcmFjdGVyRGF0YTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRWxlbWVudDsKK2Ns
YXNzIEV2ZW50OworY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQ7CitjbGFzcyBJbnNwZWN0b3JGcm9u
dGVuZDsKK2NsYXNzIE1hdGNoSm9iOworY2xhc3MgTmFtZU5vZGVNYXA7CitjbGFzcyBOb2RlOwor
Y2xhc3MgUGFnZTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSAgICBzdHJ1Y3QgRXZlbnRM
aXN0ZW5lckluZm8gewotICAgICAgICBFdmVudExpc3RlbmVySW5mbyhOb2RlKiBub2RlLCBjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgRXZlbnRMaXN0ZW5lclZlY3RvciYgZXZl
bnRMaXN0ZW5lclZlY3RvcikKLSAgICAgICAgICAgIDogbm9kZShub2RlKQotICAgICAgICAgICAg
LCBldmVudFR5cGUoZXZlbnRUeXBlKQotICAgICAgICAgICAgLCBldmVudExpc3RlbmVyVmVjdG9y
KGV2ZW50TGlzdGVuZXJWZWN0b3IpCitzdHJ1Y3QgRXZlbnRMaXN0ZW5lckluZm8geworICAgIEV2
ZW50TGlzdGVuZXJJbmZvKE5vZGUqIG5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBjb25zdCBFdmVudExpc3RlbmVyVmVjdG9yJiBldmVudExpc3RlbmVyVmVjdG9yKQorICAgICAg
ICA6IG5vZGUobm9kZSkKKyAgICAgICAgLCBldmVudFR5cGUoZXZlbnRUeXBlKQorICAgICAgICAs
IGV2ZW50TGlzdGVuZXJWZWN0b3IoZXZlbnRMaXN0ZW5lclZlY3RvcikKKyAgICB7CisgICAgfQor
CisgICAgTm9kZSogbm9kZTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcgZXZlbnRUeXBlOworICAg
IGNvbnN0IEV2ZW50TGlzdGVuZXJWZWN0b3IgZXZlbnRMaXN0ZW5lclZlY3RvcjsKK307CisKK2Ns
YXNzIEluc3BlY3RvckRPTUFnZW50IDogcHVibGljIEV2ZW50TGlzdGVuZXIgeworcHVibGljOgor
ICAgIHN0cnVjdCBET01MaXN0ZW5lciB7CisgICAgICAgIHZpcnR1YWwgfkRPTUxpc3RlbmVyKCkK
ICAgICAgICAgewogICAgICAgICB9Ci0KLSAgICAgICAgTm9kZSogbm9kZTsKLSAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nIGV2ZW50VHlwZTsKLSAgICAgICAgY29uc3QgRXZlbnRMaXN0ZW5lclZl
Y3RvciBldmVudExpc3RlbmVyVmVjdG9yOwotICAgIH07Ci0KLSAgICBjbGFzcyBJbnNwZWN0b3JE
T01BZ2VudCA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0
cnVjdCBET01MaXN0ZW5lciB7Ci0gICAgICAgICAgICB2aXJ0dWFsIH5ET01MaXN0ZW5lcigpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVtb3ZlRG9jdW1lbnQoRG9jdW1lbnQqKSA9IDA7Ci0gICAgICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVtb3ZlRE9NTm9kZShOb2RlKikgPSAwOwotICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZE1vZGlmeURPTUF0dHIoRWxlbWVudCopID0gMDsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JET01BZ2VudD4gY3JlYXRlKEluc3BlY3RvckZyb250ZW5k
KiBmcm9udGVuZCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
bnNwZWN0b3JET01BZ2VudChmcm9udGVuZCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGlj
IGNvbnN0IEluc3BlY3RvckRPTUFnZW50KiBjYXN0KGNvbnN0IEV2ZW50TGlzdGVuZXIqIGxpc3Rl
bmVyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdGVuZXItPnR5cGUoKSA9PSBJ
bnNwZWN0b3JET01BZ2VudFR5cGUKLSAgICAgICAgICAgICAgICA/IHN0YXRpY19jYXN0PGNvbnN0
IEluc3BlY3RvckRPTUFnZW50Kj4obGlzdGVuZXIpCi0gICAgICAgICAgICAgICAgOiAwOwotICAg
ICAgICB9Ci0KLSAgICAgICAgSW5zcGVjdG9yRE9NQWdlbnQoSW5zcGVjdG9yRnJvbnRlbmQqIGZy
b250ZW5kKTsKLSAgICAgICAgfkluc3BlY3RvckRPTUFnZW50KCk7Ci0KLSAgICAgICAgdm9pZCBy
ZXNldCgpOwotCi0gICAgICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlz
dGVuZXImIG90aGVyKTsKLQotICAgICAgICAvLyBNZXRob2RzIGNhbGxlZCBmcm9tIHRoZSBmcm9u
dGVuZCBmb3IgRE9NIG5vZGVzIGluc3BlY3Rpb24uCi0gICAgICAgIHZvaWQgZ2V0Q2hpbGROb2Rl
cyhsb25nIG5vZGVJZCk7Ci0gICAgICAgIHZvaWQgc2V0QXR0cmlidXRlKGxvbmcgZWxlbWVudElk
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wqIHN1Y2Nlc3Mp
OwotICAgICAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShsb25nIGVsZW1lbnRJZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBib29sKiBzdWNjZXNzKTsKLSAgICAgICAgdm9pZCByZW1vdmVOb2RlKGxvbmcg
bm9kZUlkLCBsb25nKiBvdXROb2RlSWQpOwotICAgICAgICB2b2lkIGNoYW5nZVRhZ05hbWUobG9u
ZyBub2RlSWQsIGNvbnN0IFN0cmluZyYgdGFnTmFtZSwgbG9uZyogbmV3SWQpOwotICAgICAgICB2
b2lkIGdldE91dGVySFRNTChsb25nIG5vZGVJZCwgV1RGOjpTdHJpbmcqIG91dGVySFRNTCk7Ci0g
ICAgICAgIHZvaWQgc2V0T3V0ZXJIVE1MKGxvbmcgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG91dGVy
SFRNTCwgbG9uZyogbmV3SWQpOwotICAgICAgICB2b2lkIHNldFRleHROb2RlVmFsdWUobG9uZyBu
b2RlSWQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wqIHN1Y2Nlc3MpOwotICAgICAgICB2b2lk
IGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShsb25nIG5vZGVJZCwgbG9uZyogb3V0Tm9kZUlkLCBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBsaXN0ZW5lcnNBcnJheSk7Ci0gICAgICAgIHZvaWQgYWRk
SW5zcGVjdGVkTm9kZShsb25nIG5vZGVJZCk7Ci0gICAgICAgIHZvaWQgcGVyZm9ybVNlYXJjaChj
b25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnksIGJvb2wgcnVuU3luY2hyb25vdXNs
eSk7Ci0gICAgICAgIHZvaWQgc2VhcmNoQ2FuY2VsZWQoKTsKLSAgICAgICAgYm9vbCBzaG91bGRC
cmVha09uTm9kZUluc2VydGlvbihOb2RlKiBub2RlLCBOb2RlKiBwYXJlbnQsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBkZXRhaWxzKTsKLSAgICAgICAgYm9vbCBzaG91bGRCcmVha09uTm9k
ZVJlbW92YWwoTm9kZSogbm9kZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRldGFpbHMp
OwotICAgICAgICBib29sIHNob3VsZEJyZWFrT25BdHRyaWJ1dGVNb2RpZmljYXRpb24oRWxlbWVu
dCogZWxlbWVudCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRldGFpbHMpOwotCi0gICAg
ICAgIC8vIE1ldGhvZHMgY2FsbGVkIGZyb20gdGhlIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi4K
LSAgICAgICAgdm9pZCBzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpOwotICAgICAgICB2
b2lkIHJlbGVhc2VEYW5nbGluZ05vZGVzKCk7Ci0KLSAgICAgICAgdm9pZCBkaWRJbnNlcnRET01O
b2RlKE5vZGUqKTsKLSAgICAgICAgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUqKTsKLSAgICAg
ICAgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqKTsKLSAgICAgICAgdm9pZCBjaGFyYWN0
ZXJEYXRhTW9kaWZpZWQoQ2hhcmFjdGVyRGF0YSopOwotCi0gICAgICAgIE5vZGUqIG5vZGVGb3JJ
ZChsb25nIG5vZGVJZCk7Ci0gICAgICAgIGxvbmcgcHVzaE5vZGVQYXRoVG9Gcm9udGVuZChOb2Rl
KiBub2RlKTsKLSAgICAgICAgdm9pZCBwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQobG9uZyBub2Rl
SWQpOwotICAgICAgICB2b2lkIHB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChjb25zdCBTdHJpbmcm
IHBhdGgsIGxvbmcqIG5vZGVJZCk7Ci0gICAgICAgIGxvbmcgaW5zcGVjdGVkTm9kZSh1bnNpZ25l
ZCBsb25nIG51bSk7Ci0gICAgICAgIHZvaWQgY29weU5vZGUobG9uZyBub2RlSWQpOwotICAgICAg
ICBjb25zdCBMaXN0SGFzaFNldDxSZWZQdHI8RG9jdW1lbnQ+ID4mIGRvY3VtZW50cygpIHsgcmV0
dXJuIG1fZG9jdW1lbnRzOyB9Ci0gICAgICAgIHZvaWQgc2V0RE9NTGlzdGVuZXIoRE9NTGlzdGVu
ZXIqKTsKLQotICAgICAgICBTdHJpbmcgZG9jdW1lbnRVUkxTdHJpbmcoRG9jdW1lbnQqIGRvY3Vt
ZW50KSBjb25zdDsKLQotICAgICAgICAvLyBXZSByZXByZXNlbnQgZW1iZWRkZWQgZG9tcyBhcyBh
IHBhcnQgb2YgdGhlIHNhbWUgaGllcmFyY2h5LiBIZW5jZSB3ZSB0cmVhdCBjaGlsZHJlbiBvZiBm
cmFtZSBvd25lcnMgZGlmZmVyZW50bHkuCi0gICAgICAgIC8vIFdlIGFsc28gc2tpcCB3aGl0ZXNw
YWNlIHRleHQgbm9kZXMgY29uZGl0aW9uYWxseS4gRm9sbG93aW5nIG1ldGhvZHMgZW5jYXBzdWxh
dGUgdGhlc2Ugc3BlY2lmaWNzLgotICAgICAgICBzdGF0aWMgTm9kZSogaW5uZXJGaXJzdENoaWxk
KE5vZGUqKTsKLSAgICAgICAgc3RhdGljIE5vZGUqIGlubmVyTmV4dFNpYmxpbmcoTm9kZSopOwot
ICAgICAgICBzdGF0aWMgTm9kZSogaW5uZXJQcmV2aW91c1NpYmxpbmcoTm9kZSopOwotICAgICAg
ICBzdGF0aWMgdW5zaWduZWQgaW5uZXJDaGlsZE5vZGVDb3VudChOb2RlKik7Ci0gICAgICAgIHN0
YXRpYyBOb2RlKiBpbm5lclBhcmVudE5vZGUoTm9kZSopOwotICAgICAgICBzdGF0aWMgYm9vbCBp
c1doaXRlc3BhY2UoTm9kZSopOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBzdGFydExp
c3RlbmluZ0ZyYW1lRG9jdW1lbnQoTm9kZSogZnJhbWVPd25lck5vZGUpOwotICAgICAgICB2b2lk
IHN0YXJ0TGlzdGVuaW5nKERvY3VtZW50KiBkb2N1bWVudCk7Ci0gICAgICAgIHZvaWQgc3RvcExp
c3RlbmluZyhEb2N1bWVudCogZG9jdW1lbnQpOwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KTsKLQotICAgICAg
ICAvLyBOb2RlLXJlbGF0ZWQgbWV0aG9kcy4KLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxOb2RlPiwgbG9uZz4gTm9kZVRvSWRNYXA7Ci0gICAgICAgIGxvbmcgYmluZChOb2RlKiBub2Rl
LCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOwotICAgICAgICB2b2lkIHVuYmluZChOb2RlKiBub2Rl
LCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOwotCi0gICAgICAgIGJvb2wgcHVzaERvY3VtZW50VG9G
cm9udGVuZCgpOwotCi0gICAgICAgIGJvb2wgaGFzQnJlYWtwb2ludChOb2RlKiBub2RlLCBsb25n
IHR5cGUpOwotICAgICAgICB2b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2RlKiByb290
LCB1aW50MzJfdCByb290TWFzaywgYm9vbCB2YWx1ZSk7Ci0gICAgICAgIHZvaWQgZGVzY3JpcHRp
b25Gb3JET01FdmVudChOb2RlKiB0YXJnZXQsIGxvbmcgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5z
ZXJ0aW9uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGVzY3JpcHRpb24pOwotCi0gICAg
ICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvck5vZGUoTm9kZSog
bm9kZSwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOwotICAgICAgICBQYXNzUmVm
UHRyPEluc3BlY3RvckFycmF5PiBidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVu
dCogZWxlbWVudCk7Ci0gICAgICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJ1aWxkQXJy
YXlGb3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRv
SWRNYXAqIG5vZGVzTWFwKTsKLSAgICAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1
aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYg
cmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBO
b2RlKiBub2RlKTsKLQotICAgICAgICBEb2N1bWVudCogbWFpbkZyYW1lRG9jdW1lbnQoKSBjb25z
dDsKLQotICAgICAgICB2b2lkIG9uTWF0Y2hKb2JzVGltZXIoVGltZXI8SW5zcGVjdG9yRE9NQWdl
bnQ+Kik7Ci0gICAgICAgIHZvaWQgcmVwb3J0Tm9kZXNBc1NlYXJjaFJlc3VsdHMoTGlzdEhhc2hT
ZXQ8Tm9kZSo+JiByZXN1bHRDb2xsZWN0b3IpOwotCi0gICAgICAgIE5vZGUqIG5vZGVGb3JQYXRo
KGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0gICAgICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
IHRvQXJyYXkoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRhdGEpOwotCi0gICAgICAgIHZvaWQgZGlz
Y2FyZEJpbmRpbmdzKCk7Ci0KLSAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmQqIG1fZnJvbnRlbmQ7
Ci0gICAgICAgIERPTUxpc3RlbmVyKiBtX2RvbUxpc3RlbmVyOwotICAgICAgICBOb2RlVG9JZE1h
cCBtX2RvY3VtZW50Tm9kZVRvSWRNYXA7Ci0gICAgICAgIC8vIE93bnMgbm9kZSBtYXBwaW5ncyBm
b3IgZGFuZ2xpbmcgbm9kZXMuCi0gICAgICAgIFZlY3RvcjxOb2RlVG9JZE1hcCo+IG1fZGFuZ2xp
bmdOb2RlVG9JZE1hcHM7Ci0gICAgICAgIEhhc2hNYXA8bG9uZywgTm9kZSo+IG1faWRUb05vZGU7
Ci0gICAgICAgIEhhc2hNYXA8bG9uZywgTm9kZVRvSWRNYXAqPiBtX2lkVG9Ob2Rlc01hcDsKLSAg
ICAgICAgSGFzaFNldDxsb25nPiBtX2NoaWxkcmVuUmVxdWVzdGVkOwotICAgICAgICBsb25nIG1f
bGFzdE5vZGVJZDsKLSAgICAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPERvY3VtZW50PiA+IG1fZG9j
dW1lbnRzOwotICAgICAgICBEZXF1ZTxNYXRjaEpvYio+IG1fcGVuZGluZ01hdGNoSm9iczsKLSAg
ICAgICAgVGltZXI8SW5zcGVjdG9yRE9NQWdlbnQ+IG1fbWF0Y2hKb2JzVGltZXI7Ci0gICAgICAg
IEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4gbV9zZWFyY2hSZXN1bHRzOwotICAgICAgICBWZWN0b3I8
bG9uZz4gbV9pbnNwZWN0ZWROb2RlczsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZURv
Y3VtZW50KERvY3VtZW50KikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlRE9N
Tm9kZShOb2RlKikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihF
bGVtZW50KikgPSAwOwogICAgIH07CiAKLSNlbmRpZgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3RvckRPTUFnZW50PiBjcmVhdGUoSW5qZWN0ZWRTY3JpcHRIb3N0KiBpbmplY3RlZFNjcmlw
dEhvc3QsIEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSW5zcGVjdG9yRE9NQWdlbnQoaW5qZWN0ZWRTY3JpcHRIb3N0LCBmcm9u
dGVuZCkpOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBJbnNwZWN0b3JET01BZ2VudCogY2Fz
dChjb25zdCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lcikKKyAgICB7CisgICAgICAgIHJldHVybiBs
aXN0ZW5lci0+dHlwZSgpID09IEluc3BlY3RvckRPTUFnZW50VHlwZQorICAgICAgICAgICAgPyBz
dGF0aWNfY2FzdDxjb25zdCBJbnNwZWN0b3JET01BZ2VudCo+KGxpc3RlbmVyKQorICAgICAgICAg
ICAgOiAwOworICAgIH0KKworICAgIEluc3BlY3RvckRPTUFnZW50KEluamVjdGVkU2NyaXB0SG9z
dCosIEluc3BlY3RvckZyb250ZW5kKik7CisgICAgfkluc3BlY3RvckRPTUFnZW50KCk7CisKKyAg
ICB2b2lkIHJlc2V0KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVu
dExpc3RlbmVyJiBvdGhlcik7CisKKyAgICAvLyBNZXRob2RzIGNhbGxlZCBmcm9tIHRoZSBmcm9u
dGVuZCBmb3IgRE9NIG5vZGVzIGluc3BlY3Rpb24uCisgICAgdm9pZCBnZXRDaGlsZE5vZGVzKGxv
bmcgbm9kZUlkKTsKKyAgICB2b2lkIHNldEF0dHJpYnV0ZShsb25nIGVsZW1lbnRJZCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sKiBzdWNjZXNzKTsKKyAgICB2
b2lkIHJlbW92ZUF0dHJpYnV0ZShsb25nIGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBi
b29sKiBzdWNjZXNzKTsKKyAgICB2b2lkIHJlbW92ZU5vZGUobG9uZyBub2RlSWQsIGxvbmcqIG91
dE5vZGVJZCk7CisgICAgdm9pZCBjaGFuZ2VUYWdOYW1lKGxvbmcgbm9kZUlkLCBjb25zdCBTdHJp
bmcmIHRhZ05hbWUsIGxvbmcqIG5ld0lkKTsKKyAgICB2b2lkIGdldE91dGVySFRNTChsb25nIG5v
ZGVJZCwgV1RGOjpTdHJpbmcqIG91dGVySFRNTCk7CisgICAgdm9pZCBzZXRPdXRlckhUTUwobG9u
ZyBub2RlSWQsIGNvbnN0IFN0cmluZyYgb3V0ZXJIVE1MLCBsb25nKiBuZXdJZCk7CisgICAgdm9p
ZCBzZXRUZXh0Tm9kZVZhbHVlKGxvbmcgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29s
KiBzdWNjZXNzKTsKKyAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShsb25nIG5vZGVJ
ZCwgbG9uZyogb3V0Tm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBsaXN0ZW5lcnNBcnJh
eSk7CisgICAgdm9pZCBhZGRJbnNwZWN0ZWROb2RlKGxvbmcgbm9kZUlkKTsKKyAgICB2b2lkIHBl
cmZvcm1TZWFyY2goY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBib29sIHJ1
blN5bmNocm9ub3VzbHkpOworICAgIHZvaWQgc2VhcmNoQ2FuY2VsZWQoKTsKKyAgICB2b2lkIHJl
c29sdmVOb2RlKGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwor
ICAgIHZvaWQgZ2V0Tm9kZVByb3BlcnRpZXMobG9uZyBub2RlSWQsIFBhc3NSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IHByb3BlcnRpZXNBcnJheSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0
KTsKKyAgICB2b2lkIGdldE5vZGVQcm90b3R5cGVzKGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+KiByZXN1bHQpOworICAgIHZvaWQgcHVzaE5vZGVUb0Zyb250ZW5kKFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVz
dWx0KTsKKworICAgIC8vIE1ldGhvZHMgY2FsbGVkIGZyb20gdGhlIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi4KKyAgICB2b2lkIHNldERvY3VtZW50KERvY3VtZW50Kik7CisgICAgdm9pZCByZWxl
YXNlRGFuZ2xpbmdOb2RlcygpOworCisgICAgdm9pZCBkaWRJbnNlcnRET01Ob2RlKE5vZGUqKTsK
KyAgICB2b2lkIGRpZFJlbW92ZURPTU5vZGUoTm9kZSopOworICAgIHZvaWQgZGlkTW9kaWZ5RE9N
QXR0cihFbGVtZW50Kik7CisgICAgdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWQoQ2hhcmFjdGVy
RGF0YSopOworCisgICAgTm9kZSogbm9kZUZvcklkKGxvbmcgbm9kZUlkKTsKKyAgICBsb25nIHB1
c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSopOworICAgIHZvaWQgcHVzaENoaWxkTm9kZXNUb0Zy
b250ZW5kKGxvbmcgbm9kZUlkKTsKKyAgICB2b2lkIHB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChj
b25zdCBTdHJpbmcmIHBhdGgsIGxvbmcqIG5vZGVJZCk7CisgICAgbG9uZyBpbnNwZWN0ZWROb2Rl
KHVuc2lnbmVkIGxvbmcgbnVtKTsKKyAgICB2b2lkIGNvcHlOb2RlKGxvbmcgbm9kZUlkKTsKKyAg
ICBjb25zdCBMaXN0SGFzaFNldDxSZWZQdHI8RG9jdW1lbnQ+ID4mIGRvY3VtZW50cygpIHsgcmV0
dXJuIG1fZG9jdW1lbnRzOyB9CisgICAgdm9pZCBzZXRET01MaXN0ZW5lcihET01MaXN0ZW5lciop
OworCisgICAgU3RyaW5nIGRvY3VtZW50VVJMU3RyaW5nKERvY3VtZW50KikgY29uc3Q7CisKKyAg
ICAvLyBXZSByZXByZXNlbnQgZW1iZWRkZWQgZG9tcyBhcyBhIHBhcnQgb2YgdGhlIHNhbWUgaGll
cmFyY2h5LiBIZW5jZSB3ZSB0cmVhdCBjaGlsZHJlbiBvZiBmcmFtZSBvd25lcnMgZGlmZmVyZW50
bHkuCisgICAgLy8gV2UgYWxzbyBza2lwIHdoaXRlc3BhY2UgdGV4dCBub2RlcyBjb25kaXRpb25h
bGx5LiBGb2xsb3dpbmcgbWV0aG9kcyBlbmNhcHN1bGF0ZSB0aGVzZSBzcGVjaWZpY3MuCisgICAg
c3RhdGljIE5vZGUqIGlubmVyRmlyc3RDaGlsZChOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIGlu
bmVyTmV4dFNpYmxpbmcoTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiBpbm5lclByZXZpb3VzU2li
bGluZyhOb2RlKik7CisgICAgc3RhdGljIHVuc2lnbmVkIGlubmVyQ2hpbGROb2RlQ291bnQoTm9k
ZSopOworICAgIHN0YXRpYyBOb2RlKiBpbm5lclBhcmVudE5vZGUoTm9kZSopOworICAgIHN0YXRp
YyBib29sIGlzV2hpdGVzcGFjZShOb2RlKik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzdGFydExp
c3RlbmluZ0ZyYW1lRG9jdW1lbnQoTm9kZSogZnJhbWVPd25lck5vZGUpOworICAgIHZvaWQgc3Rh
cnRMaXN0ZW5pbmcoRG9jdW1lbnQqKTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmcoRG9jdW1lbnQq
KTsKKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgRXZlbnQqKTsKKworICAgIC8vIE5vZGUtcmVsYXRlZCBtZXRob2RzLgorICAgIHR5cGVkZWYg
SGFzaE1hcDxSZWZQdHI8Tm9kZT4sIGxvbmc+IE5vZGVUb0lkTWFwOworICAgIGxvbmcgYmluZChO
b2RlKiwgTm9kZVRvSWRNYXAqKTsKKyAgICB2b2lkIHVuYmluZChOb2RlKiwgTm9kZVRvSWRNYXAq
KTsKKworICAgIGJvb2wgcHVzaERvY3VtZW50VG9Gcm9udGVuZCgpOworCisgICAgYm9vbCBoYXNC
cmVha3BvaW50KE5vZGUqLCBsb25nIHR5cGUpOworICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFr
cG9pbnRzKE5vZGUqIHJvb3QsIHVpbnQzMl90IHJvb3RNYXNrLCBib29sIHZhbHVlKTsKKyAgICB2
b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBsb25nIGJyZWFrcG9pbnRU
eXBlLCBib29sIGluc2VydGlvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRlc2NyaXB0
aW9uKTsKKworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvck5v
ZGUoTm9kZSosIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqKTsKKyAgICBQYXNzUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiBidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCopOworICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJl
bihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKKyAg
ICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVy
KGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIE5vZGUqKTsKKworICAgIERvY3VtZW50KiBtYWluRnJhbWVEb2N1bWVudCgpIGNvbnN0
OworCisgICAgdm9pZCBvbk1hdGNoSm9ic1RpbWVyKFRpbWVyPEluc3BlY3RvckRPTUFnZW50Piop
OworICAgIHZvaWQgcmVwb3J0Tm9kZXNBc1NlYXJjaFJlc3VsdHMoTGlzdEhhc2hTZXQ8Tm9kZSo+
JiByZXN1bHRDb2xsZWN0b3IpOworCisgICAgTm9kZSogbm9kZUZvclBhdGgoY29uc3QgU3RyaW5n
JiBwYXRoKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiB0b0FycmF5KGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkYXRhKTsKKworICAgIHZvaWQgZGlzY2FyZEJpbmRpbmdzKCk7CisKKyAg
ICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvck5vZGVJZChsb25nIG5vZGVJZCk7CisK
KyAgICBJbmplY3RlZFNjcmlwdEhvc3QqIG1faW5qZWN0ZWRTY3JpcHRIb3N0OworICAgIEluc3Bl
Y3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOworICAgIERPTUxpc3RlbmVyKiBtX2RvbUxpc3RlbmVy
OworICAgIE5vZGVUb0lkTWFwIG1fZG9jdW1lbnROb2RlVG9JZE1hcDsKKyAgICAvLyBPd25zIG5v
ZGUgbWFwcGluZ3MgZm9yIGRhbmdsaW5nIG5vZGVzLgorICAgIFZlY3RvcjxOb2RlVG9JZE1hcCo+
IG1fZGFuZ2xpbmdOb2RlVG9JZE1hcHM7CisgICAgSGFzaE1hcDxsb25nLCBOb2RlKj4gbV9pZFRv
Tm9kZTsKKyAgICBIYXNoTWFwPGxvbmcsIE5vZGVUb0lkTWFwKj4gbV9pZFRvTm9kZXNNYXA7Cisg
ICAgSGFzaFNldDxsb25nPiBtX2NoaWxkcmVuUmVxdWVzdGVkOworICAgIGxvbmcgbV9sYXN0Tm9k
ZUlkOworICAgIExpc3RIYXNoU2V0PFJlZlB0cjxEb2N1bWVudD4gPiBtX2RvY3VtZW50czsKKyAg
ICBEZXF1ZTxNYXRjaEpvYio+IG1fcGVuZGluZ01hdGNoSm9iczsKKyAgICBUaW1lcjxJbnNwZWN0
b3JET01BZ2VudD4gbV9tYXRjaEpvYnNUaW1lcjsKKyAgICBIYXNoU2V0PFJlZlB0cjxOb2RlPiA+
IG1fc2VhcmNoUmVzdWx0czsKKyAgICBWZWN0b3I8bG9uZz4gbV9pbnNwZWN0ZWROb2RlczsKK307
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcAppbmRleCA1NzUxMzYzLi5hY2ZiYjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xNzMsNiArMTczLDIw
IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZShsb25nIHBhdXNlU3RhdGUsIGxvbmcqIG5lCiAgICAgKm5ld1N0YXRlID0gU2NyaXB0RGVidWdT
ZXJ2ZXI6OnNoYXJlZCgpLnBhdXNlT25FeGNlcHRpb25zU3RhdGUoKTsKIH0KIAordm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBT
dHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit7Cisg
ICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luc3BlY3RvckNvbnRyb2xsZXIt
PmluamVjdGVkU2NyaXB0SG9zdCgpLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKGNhbGxGcmFt
ZUlkLmdldCgpKTsKKyAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAg
ICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGVPbkNhbGxGcmFtZShjYWxsRnJhbWVJZCwgZXhwcmVz
c2lvbiwgb2JqZWN0R3JvdXAsIHJlc3VsdCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6Z2V0Q29tcGxldGlvbnNPbkNhbGxGcmFtZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRlSW5z
cGVjdG9yQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sK
KyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5zcGVjdG9yQ29udHJvbGxl
ci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoY2FsbEZy
YW1lSWQuZ2V0KCkpOworICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQorICAg
ICAgICBpbmplY3RlZFNjcmlwdC5nZXRDb21wbGV0aW9uc09uQ2FsbEZyYW1lKGNhbGxGcmFtZUlk
LCBleHByZXNzaW9uLCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIHJlc3VsdCk7Cit9
CisKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJGb3JQYWdlTmF2aWdhdGlvbigp
CiB7CiAgICAgbV9zY3JpcHRJRFRvQ29udGVudC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggMGE2ZmQzYi4uOThh
YzFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oCkBAIC0zMSw2ICszMSw3IEBACiAjZGVmaW5lIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnRfaAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNU
T1IpCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJTY3JpcHREZWJ1Z0xp
c3RlbmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgpAQCAtNTksMTUgKzYwLDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGlzRGVi
dWdnZXJBbHdheXNFbmFibGVkKCk7CiAKKyAgICAvLyBQYXJ0IG9mIHRoZSBwcm90b2NvbC4KICAg
ICB2b2lkIGFjdGl2YXRlQnJlYWtwb2ludHMoKTsKICAgICB2b2lkIGRlYWN0aXZhdGVCcmVha3Bv
aW50cygpOwogICAgIHZvaWQgc2V0U3RpY2t5QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwg
dW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIGJvb2wgZW5hYmxl
ZCk7CiAgICAgdm9pZCBzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29sIGVuYWJsZWQsIFN0
cmluZyogYnJlYWtwb2ludElkLCB1bnNpZ25lZCBpbnQqIGFjdHVhbExpbmVOdW1iZXIpOwogICAg
IHZvaWQgcmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCk7Ci0KICAg
ICB2b2lkIGVkaXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3Ry
aW5nJiBuZXdDb250ZW50LCBib29sKiBzdWNjZXNzLCBTdHJpbmcqIHJlc3VsdCwgUmVmUHRyPElu
c3BlY3RvclZhbHVlPiogbmV3Q2FsbEZyYW1lcyk7CiAgICAgdm9pZCBnZXRTY3JpcHRTb3VyY2Uo
Y29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpOwotCiAgICAgdm9p
ZCBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KERlYnVnZ2VyRXZlbnRUeXBlIHR5cGUsIFBh
c3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGRhdGEpOwogICAgIHZvaWQgY2FuY2VsUGF1c2VPbk5l
eHRTdGF0ZW1lbnQoKTsKICAgICB2b2lkIGJyZWFrUHJvZ3JhbShEZWJ1Z2dlckV2ZW50VHlwZSB0
eXBlLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBkYXRhKTsKQEAgLTc2LDggKzc2LDkgQEAg
cHVibGljOgogICAgIHZvaWQgc3RlcE92ZXIoKTsKICAgICB2b2lkIHN0ZXBJbnRvKCk7CiAgICAg
dm9pZCBzdGVwT3V0KCk7Ci0KICAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobG9u
ZyBwYXVzZVN0YXRlLCBsb25nKiBuZXdTdGF0ZSk7CisgICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZy
YW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+KiByZXN1bHQpOworICAgIHZvaWQgZ2V0Q29tcGxldGlvbnNPbkNhbGxGcmFtZShQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbiwgYm9vbCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4qIHJlc3VsdCk7CiAKICAgICB2b2lkIGNsZWFyRm9yUGFnZU5hdmlnYXRpb24oKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWViNjU5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNpbmNsdWRl
ICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitJbnNwZWN0b3JSdW50aW1lQWdlbnQ6Okluc3BlY3RvclJ1
bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0SG9zdCkKKyAgICA6
IG1faW5qZWN0ZWRTY3JpcHRIb3N0KGluamVjdGVkU2NyaXB0SG9zdCkKK3sKK30KKworSW5zcGVj
dG9yUnVudGltZUFnZW50Ojp+SW5zcGVjdG9yUnVudGltZUFnZW50KCkgeyB9CisKK3ZvaWQgSW5z
cGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNv
bnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkK
K3sKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRI
b3N0LT5pbmplY3RlZFNjcmlwdEZvck1haW5GcmFtZSgpOworICAgIGlmICghaW5qZWN0ZWRTY3Jp
cHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0ZShleHByZXNz
aW9uLCBvYmplY3RHcm91cCwgcmVzdWx0KTsKK30KKwordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdl
bnQ6OmdldENvbXBsZXRpb25zKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRl
SW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkK
K3sKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRI
b3N0LT5pbmplY3RlZFNjcmlwdEZvck1haW5GcmFtZSgpOworICAgIGlmICghaW5qZWN0ZWRTY3Jp
cHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5nZXRDb21wbGV0aW9ucyhl
eHByZXNzaW9uLCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIHJlc3VsdCk7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgYm9vbCBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgYm9vbCBh
YmJyZXZpYXRlLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit7CisgICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRT
Y3JpcHRGb3JPYmplY3RJZChvYmplY3RJZC5nZXQoKSk7CisgICAgaWYgKCFpbmplY3RlZFNjcmlw
dC5oYXNOb1ZhbHVlKCkpCisgICAgICAgIGluamVjdGVkU2NyaXB0LmdldFByb3BlcnRpZXMob2Jq
ZWN0SWQsIGlnbm9yZUhhc093blByb3BlcnR5LCBhYmJyZXZpYXRlLCByZXN1bHQpOworfQorCit2
b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6c2V0UHJvcGVydHlWYWx1ZShQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25z
dCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sK
KyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRIb3N0
LT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkLmdldCgpKTsKKyAgICBpZiAoIWlu
amVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAgICAgaW5qZWN0ZWRTY3JpcHQuc2V0UHJv
cGVydHlWYWx1ZShvYmplY3RJZCwgcHJvcGVydHlOYW1lLCBleHByZXNzaW9uLCByZXN1bHQpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9S
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKc2ltaWxh
cml0eSBpbmRleCA1NiUKY29weSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdC5oCmNvcHkgdG8gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRp
bWVBZ2VudC5oCmluZGV4IDlmYjRjNTAuLmExM2ViNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsNTcgKzI4LDQ2IEBACiAgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgSW5qZWN0ZWRTY3JpcHRfaAotI2RlZmluZSBJbmplY3RlZFNj
cmlwdF9oCisjaWZuZGVmIEluc3BlY3RvclJ1bnRpbWVBZ2VudF9oCisjZGVmaW5lIEluc3BlY3Rv
clJ1bnRpbWVBZ2VudF9oCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiSW5q
ZWN0ZWRTY3JpcHQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCi0jaW5jbHVkZSAi
SW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCi0jaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEluamVjdGVk
U2NyaXB0SG9zdDsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclZhbHVl
OwotY2xhc3MgU2NyaXB0RnVuY3Rpb25DYWxsOwogCi1jbGFzcyBJbmplY3RlZFNjcmlwdCB7Citj
bGFzcyBJbnNwZWN0b3JSdW50aW1lQWdlbnQgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGlj
OgotICAgIEluamVjdGVkU2NyaXB0KCkgeyB9Ci0gICAgfkluamVjdGVkU2NyaXB0KCkgeyB9Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yUnVudGltZUFnZW50PiBjcmVhdGUoSW5qZWN0
ZWRTY3JpcHRIb3N0KiBpbmplY3RlZFNjcmlwdEhvc3QpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IEluc3BlY3RvclJ1bnRpbWVBZ2VudChpbmplY3RlZFNjcmlwdEhvc3QpKTsK
KyAgICB9CiAKLSAgICBib29sIGhhc05vVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVk
U2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUoKTsgfQorICAgIH5JbnNwZWN0b3JSdW50aW1lQWdlbnQo
KTsKIAorICAgIC8vIFBhcnQgb2YgdGhlIHByb3RvY29sLgogICAgIHZvaWQgZXZhbHVhdGUoY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQgZXZhbHVhdGVJbkNhbGxGcmFtZShs
b25nIGNhbGxGcmFtZSwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9i
amVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQgZXZh
bHVhdGVPblNlbGYoY29uc3QgU3RyaW5nJiBmdW5jdGlvbkJvZHksIFBhc3NSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IGFyZ3VtZW50c0FycmF5LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQp
OwotICAgIHZvaWQgZ2V0Q29tcGxldGlvbnMoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBib29s
IGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSwgbG9uZyBjYWxsRnJhbWVJZCwgUmVmUHRy
PEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIGdldENvbXBsZXRpb25zKGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEks
IFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRQcm9wZXJ0aWVz
KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgYm9vbCBpZ25vcmVIYXNPd25Q
cm9wZXJ0eSwgYm9vbCBhYmJyZXZpYXRlLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQp
OwotICAgIHZvaWQgcHVzaE5vZGVUb0Zyb250ZW5kKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBvYmplY3RJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKLSAgICB2b2lkIHJl
c29sdmVOb2RlKGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwot
ICAgIHZvaWQgZ2V0Tm9kZVByb3BlcnRpZXMobG9uZyBub2RlSWQsIFBhc3NSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IHByb3BlcnRpZXNBcnJheSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0
KTsKLSAgICB2b2lkIGdldE5vZGVQcm90b3R5cGVzKGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+KiByZXN1bHQpOwogICAgIHZvaWQgc2V0UHJvcGVydHlWYWx1ZShQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7
CiAKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBQYXNzUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiBjYWxsRnJhbWVzKCk7Ci0jZW5kaWYKLQotICAgIFBhc3NSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+IHdyYXBGb3JDb25zb2xlKFNjcmlwdFZhbHVlKTsKLSAgICB2b2lkIHJlbGVhc2VX
cmFwcGVyT2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJik7Ci0gICAgU2NyaXB0U3RhdGUqIHNjcmlw
dFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0
ZSgpOyB9Ci0KIHByaXZhdGU6Ci0gICAgZnJpZW5kIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2Ny
aXB0SG9zdDo6aW5qZWN0ZWRTY3JpcHRGb3IoU2NyaXB0U3RhdGUqKTsKLSAgICBleHBsaWNpdCBJ
bmplY3RlZFNjcmlwdChTY3JpcHRPYmplY3QpOwotICAgIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVk
V2luZG93KCk7Ci0KLSAgICB2b2lkIG1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAgSW5zcGVjdG9yUnVudGltZUFnZW50KElu
amVjdGVkU2NyaXB0SG9zdCopOwogCi0gICAgU2NyaXB0T2JqZWN0IG1faW5qZWN0ZWRTY3JpcHRP
YmplY3Q7CisgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBtX2luamVjdGVkU2NyaXB0SG9zdDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUikKKyNlbmRpZiAvLyBJbnNwZWN0b3JSdW50aW1lQWdlbnRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKaW5kZXggODQzYzJi
My4uYWJjMDg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db25zb2xlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NvbnNvbGVWaWV3LmpzCkBAIC0zNTUsMTQgKzM1NSwxMSBAQCBXZWJJbnNwZWN0b3IuQ29uc29s
ZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAvLyBDb2xsZWN0IGNvbW1hIHNlcGFyYXRlZCBv
YmplY3QgcHJvcGVydGllcyBmb3IgdGhlIGNvbXBsZXRpb24uCiAKICAgICAgICAgdmFyIGluY2x1
ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSA9ICghZG90Tm90YXRpb24gJiYgIWJyYWNrZXROb3Rh
dGlvbik7Ci0gICAgICAgIHZhciBjYWxsRnJhbWVJZCA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2Ny
aXB0cy5zZWxlY3RlZENhbGxGcmFtZUlkKCkgfHwgLTE7CiAgICAgICAgIHZhciBpbmplY3RlZFNj
cmlwdEFjY2VzczsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cyAmJiBX
ZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMucGF1c2VkKSB7Ci0gICAgICAgICAgICB2YXIgc2Vs
ZWN0ZWRDYWxsRnJhbWUgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuc2lkZWJhclBhbmVz
LmNhbGxzdGFjay5zZWxlY3RlZENhbGxGcmFtZTsKLSAgICAgICAgICAgIHZhciBpbmplY3RlZFNj
cmlwdElkID0gc2VsZWN0ZWRDYWxsRnJhbWUud29ybGRJZDsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICB2YXIgaW5qZWN0ZWRTY3JpcHRJZCA9IDA7Ci0gICAgICAgIEluc3BlY3RvckJhY2tl
bmQuZ2V0Q29tcGxldGlvbnMoaW5qZWN0ZWRTY3JpcHRJZCwgZXhwcmVzc2lvblN0cmluZywgaW5j
bHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCBjYWxsRnJhbWVJZCwgcmVwb3J0Q29tcGxldGlv
bnMpOworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzICYmIFdlYkluc3Bl
Y3Rvci5wYW5lbHMuc2NyaXB0cy5wYXVzZWQpCisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5k
LmdldENvbXBsZXRpb25zT25DYWxsRnJhbWUoV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLnNl
bGVjdGVkQ2FsbEZyYW1lSWQoKSwgZXhwcmVzc2lvblN0cmluZywgaW5jbHVkZUluc3BlY3RvckNv
bW1hbmRMaW5lQVBJLCByZXBvcnRDb21wbGV0aW9ucyk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0Q29tcGxldGlvbnMoZXhwcmVzc2lvblN0cmluZywgaW5j
bHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCByZXBvcnRDb21wbGV0aW9ucyk7CiAgICAgfSwK
IAogICAgIF9yZXBvcnRDb21wbGV0aW9uczogZnVuY3Rpb24oYmVzdE1hdGNoT25seSwgY29tcGxl
dGlvbnNSZWFkeUNhbGxiYWNrLCBkb3ROb3RhdGlvbiwgYnJhY2tldE5vdGF0aW9uLCBwcmVmaXgs
IHJlc3VsdCwgaXNFeGNlcHRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5kZXggNmFmMTI0Yi4uM2UxYjE0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMK
QEAgLTM2Niw3ICszNjYsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2soV2Vi
SW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChyZXN1bHQpKTsKICAgICAgICAgfQot
ICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmV2YWx1YXRlSW5DYWxsRnJhbWUoY2FsbEZyYW1lLndv
cmxkSWQsIGNhbGxGcmFtZS5pZCwgY29kZSwgb2JqZWN0R3JvdXAsIGV2YWxDYWxsYmFjayk7Cisg
ICAgICAgIEluc3BlY3RvckJhY2tlbmQuZXZhbHVhdGVPbkNhbGxGcmFtZShjYWxsRnJhbWUuaWQs
IGNvZGUsIG9iamVjdEdyb3VwLCBldmFsQ2FsbGJhY2spOwogICAgIH0sCiAKICAgICBfZGVidWdn
ZXJQYXVzZWQ6IGZ1bmN0aW9uKGV2ZW50KQo=
</data>
<flag name="review"
          id="70833"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>