<?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>42983</bug_id>
          
          <creation_ts>2010-07-26 11:19:32 -0700</creation_ts>
          <short_desc>Web Inspector: migrate WebCore from InspectorBackend binding to InspectorBackendDispatcher</short_desc>
          <delta_ts>2010-07-27 07:32:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>256124</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-07-26 11:19:32 -0700</bug_when>
    <thetext>%subj%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256134</commentid>
    <comment_count>1</comment_count>
      <attachid>62589</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-07-26 11:34:40 -0700</bug_when>
    <thetext>Created attachment 62589
[patch] initial version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256138</commentid>
    <comment_count>2</comment_count>
      <attachid>62589</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-26 11:50:37 -0700</bug_when>
    <thetext>Comment on attachment 62589
[patch] initial version.

&gt; +++ b/WebCore/inspector/Inspector.idl
&gt; +        [notify] void didDispatch(out long callId, out String e);

WebKit typically doesn&apos;t abbreviate variable names.
&quot;e&quot; should be &quot;exception&quot;.

The rest of this looked good to me =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256151</commentid>
    <comment_count>3</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-07-26 12:02:36 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 62589 [details])
&gt; &gt; +++ b/WebCore/inspector/Inspector.idl
&gt; &gt; +        [notify] void didDispatch(out long callId, out String e);
&gt; 
&gt; WebKit typically doesn&apos;t abbreviate variable names.
&gt; &quot;e&quot; should be &quot;exception&quot;.

Unfortunately exception is a reserved word of IDLParser.

&gt; 
&gt; The rest of this looked good to me =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256168</commentid>
    <comment_count>4</comment_count>
      <attachid>62595</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-07-26 12:31:08 -0700</bug_when>
    <thetext>Created attachment 62595
[patch] second iteration. fixed windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256176</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-26 12:43:10 -0700</bug_when>
    <thetext>&gt; &gt; WebKit typically doesn&apos;t abbreviate variable names.
&gt; &gt; &quot;e&quot; should be &quot;exception&quot;.
&gt; 
&gt; Unfortunately exception is a reserved word of IDLParser.

How about &quot;exceptionMessage&quot; or &quot;exceptionString&quot; than? =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256406</commentid>
    <comment_count>6</comment_count>
      <attachid>62595</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-26 23:44:27 -0700</bug_when>
    <thetext>Comment on attachment 62595
[patch] second iteration. fixed windows build.

WebCore/inspector/Inspector.idl:42
 +          [notify] void didDispatch(out long callId, out String e);
Also, we should not have a generic ack / failure reporting. Each of the backend methods should ack (either with the results or with failure reporting). The protocol should say that request with type &apos;foo&apos; and sequence number &apos;bar&apos; has failed.

WebCore/inspector/InspectorController.cpp:2210
 +      m_inspectorBackendDispatcher-&gt;dispatch(message, &amp;exception);
Nit: should this guy be static and receive backend instance as an argument to emphasize its stateless nature?

WebCore/inspector/InspectorController.h:125
 +      void dispatchOnBackend(long callId, const String&amp; message);
This should be dispatchOnBackend(const String&amp; message). We should serialize all the call data into a single message.

WebCore/inspector/front-end/InspectorBackendStub.js:35
 +      this._registerDelegate(&quot;addInspectedNode&quot;);
Can you generate these?

WebCore/inspector/front-end/InspectorBackendStub.js:124
 +          var callbackId = WebInspector.Callback.wrap(function(){});
You don&apos;t need this artificial call id / empty response callback anymore. Just send the message.

WebKit/chromium/src/InspectorFrontendClientImpl.cpp:132
 +      WebVector&lt;WebString&gt; args((size_t)2);
We only allow static_cast&lt;&gt; in such places.

WebKit/chromium/src/InspectorFrontendClientImpl.cpp:136
 +      m_client-&gt;sendMessageToAgent(messageData);
I&apos;d introduce new sendWebKitMessageToBackend(string) and use it here. It will eventually become the main transport for the interaction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256407</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-26 23:47:11 -0700</bug_when>
    <thetext>I understand that this patch is growing and you&apos;d like to land it. Please address everything in the follow up patches, but following I&apos;d like to see fixed prior to landing this one:

&gt; WebCore/inspector/Inspector.idl:42
&gt;  +          [notify] void didDispatch(out long callId, out String e);
&gt; Also, we should not have a generic ack / failure reporting. Each of the backend methods should ack (either with the results or with failure reporting). The protocol should say that request with type &apos;foo&apos; and sequence number &apos;bar&apos; has failed.

Please fix this ^^.

&gt; WebCore/inspector/InspectorController.h:125
&gt;  +      void dispatchOnBackend(long callId, const String&amp; message);
&gt; This should be dispatchOnBackend(const String&amp; message). We should serialize all the call data into a single message.

Please fix this ^^.

&gt; WebCore/inspector/front-end/InspectorBackendStub.js:124
&gt;  +          var callbackId = WebInspector.Callback.wrap(function(){});
&gt; You don&apos;t need this artificial call id / empty response callback anymore. Just send the message.

Please fix this ^^.

&gt; WebKit/chromium/src/InspectorFrontendClientImpl.cpp:132
&gt;  +      WebVector&lt;WebString&gt; args((size_t)2);
&gt; We only allow static_cast&lt;&gt; in such places.

Please fix this ^^.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256498</commentid>
    <comment_count>8</comment_count>
      <attachid>62675</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-07-27 03:36:12 -0700</bug_when>
    <thetext>Created attachment 62675
[patch] third iteration.

generic callId and related things were removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256573</commentid>
    <comment_count>9</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-07-27 07:32:43 -0700</bug_when>
    <thetext>Committed r64124
	M	WebKit/chromium/ChangeLog
	M	WebKit/chromium/src/WebDevToolsAgentImpl.cpp
	M	WebKit/chromium/src/InspectorFrontendClientImpl.cpp
	D	WebKit/chromium/src/js/InspectorControllerImpl.js
	M	WebKit/chromium/src/WebDevToolsAgentImpl.h
	M	WebKit/chromium/src/ToolsAgent.h
	M	WebKit/chromium/src/InspectorFrontendClientImpl.h
	M	WebKit/chromium/WebKit.gypi
	M	WebCore/WebCore.exp.in
	M	WebCore/DerivedSources.cpp
	M	WebCore/WebCore.pri
	M	WebCore/Android.derived.v8bindings.mk
	M	WebCore/ChangeLog
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/GNUmakefile.am
	M	WebCore/WebCore.gypi
	M	WebCore/bindings/js/ScriptObject.h
	M	WebCore/bindings/js/ScriptObject.cpp
	M	WebCore/bindings/v8/ScriptObject.h
	M	WebCore/bindings/v8/ScriptObject.cpp
	M	WebCore/DerivedSources.make
	D	WebCore/inspector/InspectorBackend.idl
	M	WebCore/inspector/CodeGeneratorInspector.pm
	M	WebCore/inspector/InspectorFrontendHost.cpp
	M	WebCore/inspector/InspectorFrontendClient.h
	M	WebCore/inspector/InspectorFrontendClientLocal.cpp
	M	WebCore/inspector/InspectorFrontendHost.h
	M	WebCore/inspector/front-end/InspectorBackendStub.js
	M	WebCore/inspector/InspectorFrontendClientLocal.h
	M	WebCore/inspector/InspectorFrontendHost.idl
	M	WebCore/CMakeLists.txt
	M	WebCore/WebCore.xcodeproj/project.pbxproj
W: -empty_dir: trunk/WebCore/inspector/InspectorBackend.idl
W: -empty_dir: trunk/WebKit/chromium/src/js/InspectorControllerImpl.js
r64124 = a471a4cc0749dddd35a779ad3abff89150aa6cce (refs/remotes/trunk)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62589</attachid>
            <date>2010-07-26 11:34:40 -0700</date>
            <delta_ts>2010-07-26 12:31:08 -0700</delta_ts>
            <desc>[patch] initial version.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>54582</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLnY4YmluZGluZ3MubWsgYi9XZWJD
b3JlL0FuZHJvaWQuZGVyaXZlZC52OGJpbmRpbmdzLm1rCmluZGV4IDFlN2ZhMzcuLmNmYThkYzkg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLnY4YmluZGluZ3MubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLmRlcml2ZWQudjhiaW5kaW5ncy5tawpAQCAtNTcxLDcgKzU3MSw2IEBA
ICQocGF0c3Vic3QgJS5oLCUuY3BwLCQoR0VOKSk6ICQoaW50ZXJtZWRpYXRlcykvYmluZGluZ3Mv
JS5jcHAgOiAkKGludGVybWVkaWF0ZXMpCiAjIFRoZXNlIGhlYWRlcnMgYXJlIHJlcXVpcmVkIGJ5
IHRoZSBWOCBiaW5kaW5ncyBldmVuIHdoZW4gSW5zcGVjdG9yIGlzIGRpc2FibGVkCiBHRU4gOj0g
XAogICAgICQoaW50ZXJtZWRpYXRlcykvYmluZGluZ3MvVjhJbmplY3RlZFNjcmlwdEhvc3QuaCBc
Ci0gICAgJChpbnRlcm1lZGlhdGVzKS9iaW5kaW5ncy9WOEluc3BlY3RvckJhY2tlbmQuaCBcCiAg
ICAgJChpbnRlcm1lZGlhdGVzKS9iaW5kaW5ncy9WOEluc3BlY3RvckZyb250ZW5kSG9zdC5oCiAK
ICQoR0VOKTogUFJJVkFURV9QQVRIIDo9ICQoTE9DQUxfUEFUSCkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGQ2OTU2MzYu
LjNiZmEwYTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtMjkzLDcgKzI5Myw2IEBAIFNFVChXZWJDb3JlX0lETF9GSUxF
UwogICAgIGh0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsCiAKICAgICBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmlkbAotICAgIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCiAgICAgaW5zcGVjdG9yL0phdmFT
Y3JpcHRDYWxsRnJhbWUuaWRsCiAgICAgaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGUuaWRsCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQxOTY4
MzkuLmNjOTUzZDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTAtMDctMjYgIElseWEgVGlraG9ub3Zza3kg
IDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBt
ZXNzYWdlIGJhc2VkIGluc3BlY3RvcgorICAgICAgICB0cmFuc3BvcnQgZ2VuZXJhdGVkIGJ5IENv
ZGVHZW5lcmF0b3JJbnNwZWN0b3Igc2hvdWxkIGJlIHVwc3RyZWFtZWQKKyAgICAgICAgZnJvbSBX
ZWJLaXQvY2hyb21pdW0gdG8gV2ViQ29yZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQyOTgzCisKKyAgICAgICAgKiBBbmRyb2lkLmRlcml2ZWQudjhi
aW5kaW5ncy5tazoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5jcHA6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcmk6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVj
dC5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0Lmg6CisgICAgICAgICog
YmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3Jp
cHRPYmplY3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmlkbDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hPbkJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDo6d2luZG93T2JqZWN0Q2xlYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsOjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kSG9zdDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxiYWNrLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DYWxsYmFjay5wcm90b3R5cGUucHJvY2Vzc0NhbGxiYWNrKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0luc3BlY3RvckJhY2tlbmRTdHViLmpzOgorICAgICAgICAoLldlYkluc3Bl
Y3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yik6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3Bl
Y3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5fcmVnaXN0ZXJEZWxlZ2F0ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl90b2dnbGVUaW1lbGluZUJ1dHRvbkNsaWNrZWQp
OgorCiAyMDEwLTA3LTI2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFNoaW5pY2hpcm8gSGFtYWppLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5jcHAgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAppbmRl
eCA3OGM1MjNmLi5lYTZlNDdlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNw
cAorKysgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtMTkwLDcgKzE5MCw2IEBACiAj
aW5jbHVkZSAiSlNJbWFnZURhdGEuY3BwIgogI2luY2x1ZGUgIkpTSW5kZXhlZERhdGFiYXNlUmVx
dWVzdC5jcHAiCiAjaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwIgotI2luY2x1ZGUg
IkpTSW5zcGVjdG9yQmFja2VuZC5jcHAiCiAjaW5jbHVkZSAiSlNJbnNwZWN0b3JGcm9udGVuZEhv
c3QuY3BwIgogI2luY2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAiCiAjaW5jbHVkZSAi
SlNLZXlib2FyZEV2ZW50LmNwcCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZSBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA3YzUzZTg2Li44Y2VjYzJi
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMzMsNyArMjMzLDYgQEAgRE9NX0NMQVNTRVMgPSBcCiAg
ICAgSW1hZ2VEYXRhIFwKICAgICBJbmRleGVkRGF0YWJhc2VSZXF1ZXN0IFwKICAgICBJbmplY3Rl
ZFNjcmlwdEhvc3QgXAotICAgIEluc3BlY3RvckJhY2tlbmQgXAogICAgIEluc3BlY3RvckZyb250
ZW5kSG9zdCBcCiAgICAgS2V5Ym9hcmRFdmVudCBcCiAgICAgTG9jYXRpb24gXApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXgg
N2E1MTNlMi4uMjliYTlmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zOTYsOCArMzk2LDYgQEAgd2ViY29yZV9idWls
dF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW1hZ2VEYXRhLmggXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmggXAotCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNJbnNwZWN0b3JCYWNrZW5kLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0luc3BlY3RvckJhY2tlbmQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0lu
c3BlY3RvckZyb250ZW5kSG9zdC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbnNw
ZWN0b3JGcm9udGVuZEhvc3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ludDE2QXJy
YXkuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCmluZGV4IDM4OTliZjUuLjBjOGU0ZTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KKysrIGIvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTE5Myw2ICsx
MTkzLDcgQEAgX19aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsMTdzZXRB
dHRhY2hlZFdpbmRvd0ViCiBfX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwxOXJlcXVlc3RBdHRhY2hXaW5kb3dFdgogX19aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsMTlyZXF1ZXN0RGV0YWNoV2luZG93RXYKIF9fWk43V2ViQ29yZTI4SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDE5d2luZG93T2JqZWN0Q2xlYXJlZEV2CitfX1pON1dlYkNv
cmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwyMHNlbmRNZXNzYWdlVG9CYWNrZW5kRWxS
S05TXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwy
NmNoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0RWoKIF9fWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbDI3cmVzdG9yZUF0dGFjaGVkV2luZG93SGVpZ2h0RXYKIF9fWk43V2Vi
Q29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEMyRVBOU18xOUluc3BlY3RvckNvbnRy
b2xsZXJFUE5TXzRQYWdlRQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmNTNmNDU2Li44OTFlZjk3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTk2LDcgKzE5
Niw2IEBACiAgICAgICAgICAgICAnaHRtbC9WYWxpZGl0eVN0YXRlLmlkbCcsCiAgICAgICAgICAg
ICAnaHRtbC9Wb2lkQ2FsbGJhY2suaWRsJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmlkbCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmQuaWRsJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmlk
bCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRsJywKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0UHJvZmlsZS5pZGwnLApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnByaSBiL1dlYkNvcmUvV2ViQ29yZS5wcmkKaW5kZXggMThhNzZhMC4uZTU5
Y2M5OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnByaQorKysgYi9XZWJDb3JlL1dlYkNv
cmUucHJpCkBAIC00NDgsNyArNDQ4LDYgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBodG1sL1Zh
bGlkaXR5U3RhdGUuaWRsIFwKICAgICBodG1sL1ZvaWRDYWxsYmFjay5pZGwgXAogICAgIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsIFwKLSAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZC5pZGwgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsIFwKICAg
ICBpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGwgXAogICAgIGluc3BlY3Rvci9TY3Jp
cHRQcm9maWxlLmlkbCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGFiODhkYTMuLjgzYjI4OWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC04MzIsOCArODMyLDYgQEAKIAkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2
QjNCIC8qIEFic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIu
aCAqLzsgfTsKIAkJNDFFMUIxRDMwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDRDBG
RjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNwcCAqLzsgfTsKIAkJNDFFMUIxRDQwRkY1
OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0UwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdv
cmtlci5oICovOyB9OwotCQk0MUYwNjBDRDBGNUVFQjJCMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JC
YWNrZW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRjA2MENCMEY1RUVCMkIwMEEwN0VBQyAvKiBKU0luc3BlY3RvckJhY2tlbmQuY3BwICovOyB9
OwotCQk0MUYwNjBDRTBGNUVFQjJCMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JCYWNrZW5kLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjBDQzBGNUVF
QjJCMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JCYWNrZW5kLmggKi87IH07CiAJCTQxRjA2MTc0MEY1
RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2MTcyMEY1RjAwQUMwMEEw
N0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCAqLzsgfTsKIAkJNDFGMDYxNzUw
RjVGMDBBQzAwQTA3RUFDIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjE3MzBGNUYwMEFD
MDBBMDdFQUMgLyogSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCAqLzsgfTsKIAkJNDFG
MDYxOEUwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjE4QzBGNUYwNjk4MDBBMDdFQUMg
LyogQ29uc29sZU1lc3NhZ2UuaCAqLzsgfTsKQEAgLTY1NDAsOCArNjUzOCw2IEBACiAJCTQxRTFC
MUNEMEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gU2hhcmVkV29ya2VyLmNwcDsgcGF0aCA9IHdvcmtlcnMvU2hh
cmVkV29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMUIxQ0UwRkY1
OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBTaGFyZWRXb3JrZXIuaDsgcGF0aCA9IHdvcmtlcnMvU2hhcmVkV29ya2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTFCMUNGMEZGNTk4NjkwMDU3NkIzQiAvKiBT
aGFyZWRXb3JrZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFNoYXJlZFdvcmtlci5pZGw7
IHBhdGggPSB3b3JrZXJzL1NoYXJlZFdvcmtlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTQxRjA2MENCMEY1RUVCMkIwMEEwN0VBQyAvKiBKU0luc3BlY3RvckJhY2tlbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnNwZWN0b3JCYWNrZW5k
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFGMDYwQ0MwRjVFRUIyQjAwQTA3
RUFDIC8qIEpTSW5zcGVjdG9yQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0luc3BlY3RvckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFGMDYxNzIwRjVGMDBBQzAwQTA3RUFDIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JET01TdG9yYWdlUmVz
b3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYxNzMwRjVGMDBBQzAw
QTA3RUFDIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYwNjE4QzBGNUYwNjk4MDBBMDdFQUMgLyog
Q29uc29sZU1lc3NhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc29s
ZU1lc3NhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxNzIsNyArNzE2OCw2
IEBACiAJCTdBMjQ1ODdBMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JET01BZ2VudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTY3NEJEOTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFn
ZUdyb3VwTG9hZERlZmVycmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBhZ2VHcm91cExvYWREZWZlcnJlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdBNjc0QkRBMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZUdyb3VwTG9hZERlZmVycmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdBNzRFQ0I2MTAxODM5OUEwMEJGOTM5RSAv
KiBJbnNwZWN0b3JCYWNrZW5kLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbnNwZWN0b3JC
YWNrZW5kLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E3NEVDQjgxMDE4MzlB
NTAwQkY5MzlFIC8qIEluc3BlY3RvckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdBNzRFQ0I5MTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JCYWNrZW5kLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckJhY2tlbmQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E3NEVDQkMxMDE4MzlEQTAwQkY5MzlFIC8qIEpT
SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNDMzLDggKzExNDI4LDYgQEAKIAkJCWNoaWxkcmVuID0g
KAogCQkJCTdBMEU3NkQ4MTBCRjA1OTgwMEEwMjc2RSAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5j
cHAgKi8sCiAJCQkJN0EwRTc2RDkxMEJGMDU5ODAwQTAyNzZFIC8qIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0LmggKi8sCi0JCQkJNDFGMDYwQ0IwRjVFRUIyQjAwQTA3RUFDIC8qIEpTSW5zcGVjdG9yQmFj
a2VuZC5jcHAgKi8sCi0JCQkJNDFGMDYwQ0MwRjVFRUIyQjAwQTA3RUFDIC8qIEpTSW5zcGVjdG9y
QmFja2VuZC5oICovLAogCQkJCTdBMEU3NzFDMTBDMDBEQjEwMEEwMjc2RSAvKiBKU0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5jcHAgKi8sCiAJCQkJN0EwRTc3MUQxMEMwMERCMTAwQTAyNzZFIC8qIEpT
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggKi8sCiAJCQkJMUM1RkFFQ0YwRENGRDkwMTAwRDU4Rjc4
IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi8sCkBAIC0xMTQ2Niw3ICsxMTQ1OSw2IEBA
CiAJCQkJQjg4NUU4RDMxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5oICovLAogCQkJCTdBNzRFQ0I4MTAxODM5QTUwMEJGOTM5RSAvKiBJbnNwZWN0b3JC
YWNrZW5kLmNwcCAqLywKIAkJCQk3QTc0RUNCOTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9y
QmFja2VuZC5oICovLAotCQkJCTdBNzRFQ0I2MTAxODM5OUEwMEJGOTM5RSAvKiBJbnNwZWN0b3JC
YWNrZW5kLmlkbCAqLywKIAkJCQkxQzgxQjk1ODBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9y
Q2xpZW50LmggKi8sCiAJCQkJMUM4MUI5NTcwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNv
bnRyb2xsZXIuY3BwICovLAogCQkJCTFDODFCOTU2MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0
b3JDb250cm9sbGVyLmggKi8sCkBAIC0xODczNiw3ICsxODcyOCw2IEBACiAJCQkJQTc3OTc5Mjkw
RDZCOUU2NDAwMzg1MUI5IC8qIEpTSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTg1
QTY5NzExRDRGQjEzMDA0QzNFNEIgLyogSlNJbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3QTBFNzZEQjEwQkYwNTk4MDBBMDI3NkUgLyogSlNJbmplY3RlZFNjcmlw
dEhvc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxRjA2MENFMEY1RUVCMkIwMEEwN0VBQyAvKiBK
U0luc3BlY3RvckJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMEU3NzFGMTBDMDBEQjEw
MEEwMjc2RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDlFRUNGMDcxMDUwNzBDNDAwMDk5RkFCIC8qIEpTSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDlFRUNGMDUxMDUwNzBDNDAwMDk5RkFCIC8qIEpTSW50MzJBcnJheS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yMTIwMSw3ICsyMTE5Miw2IEBACiAJCQkJQzU4NUE2OTYxMUQ0RkIxMzAwNEMz
RTRCIC8qIEpTSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
QTBFNzZEQTEwQkYwNTk4MDBBMDI3NkUgLyogSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0EwRTc2RDUxMEJGMDUwNzAwQTAyNzZFIC8qIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxRjA2MENEMEY1RUVCMkIwMEEw
N0VBQyAvKiBKU0luc3BlY3RvckJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0EwRTc3
MUUxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdBNzRFQ0JEMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250
ZW5kSG9zdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVFQ0YwNjEwNTA3MEM0MDAw
OTlGQUIgLyogSlNJbnQxNkFycmF5LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRPYmplY3QuY3BwCmluZGV4IDE2YjlmMDEuLmRlMzk3ZjcgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdE9iamVjdC5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiAjaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhvc3QuaCIKLSNpbmNsdWRlICJKU0luc3Bl
Y3RvckJhY2tlbmQuaCIKICNpbmNsdWRlICJKU0luc3BlY3RvckZyb250ZW5kSG9zdC5oIgogI2Vu
ZGlmCiAKQEAgLTE1OCwxNCArMTU3LDYgQEAgYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChT
Y3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFMKIH0KIAog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi1ib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KFNjcmlw
dFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yQmFja2VuZCog
dmFsdWUpCi17Ci0gICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICBnbG9iYWxP
YmplY3QtPnB1dERpcmVjdChJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSwgdG9KUyhzY3Jp
cHRTdGF0ZSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwotICAgIHJldHVybiBoYW5kbGVFeGNlcHRp
b24oc2NyaXB0U3RhdGUpOwotfQotCiBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KFNjcmlw
dFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0KiB2YWx1ZSkKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaCBiL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmgKaW5kZXggMGM5OTNlMS4uOTg4MDk3NiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oCkBAIC0zOSw3ICszOSw2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBJbmplY3RlZFNjcmlwdEhvc3Q7Ci0gICAgY2xhc3MgSW5zcGVj
dG9yQmFja2VuZDsKICAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q7CiAKICAgICBjbGFz
cyBTY3JpcHRPYmplY3QgOiBwdWJsaWMgU2NyaXB0VmFsdWUgewpAQCAtNzAsNyArNjksNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgYm9vbCBzZXQo
U2NyaXB0U3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTY3JpcHRPYmplY3QmKTsKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBzdGF0aWMgYm9vbCBzZXQoU2NyaXB0U3RhdGUq
LCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0b3JCYWNrZW5kKik7CiAgICAgICAgIHN0YXRpYyBi
b29sIHNldChTY3JpcHRTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIEluc3BlY3RvckZyb250ZW5k
SG9zdCopOwogICAgICAgICBzdGF0aWMgYm9vbCBzZXQoU2NyaXB0U3RhdGUqLCBjb25zdCBjaGFy
KiBuYW1lLCBJbmplY3RlZFNjcmlwdEhvc3QqKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRPYmplY3QuY3BwCmluZGV4IDUyMGM1N2IuLjhmODE1MzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdE9iamVjdC5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4SW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0j
aW5jbHVkZSAiVjhJbnNwZWN0b3JCYWNrZW5kLmgiCiAjaW5jbHVkZSAiVjhJbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKQEAgLTE0NiwxMyArMTQ1LDYgQEAg
Ym9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IFMKIH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi1ib29s
IFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3Qg
Y2hhciogbmFtZSwgSW5zcGVjdG9yQmFja2VuZCogdmFsdWUpCi17Ci0gICAgU2NyaXB0U2NvcGUg
c2NvcGUoc2NyaXB0U3RhdGUpOwotICAgIHNjb3BlLmdsb2JhbCgpLT5TZXQodjg6OlN0cmluZzo6
TmV3KG5hbWUpLCB0b1Y4KHZhbHVlKSk7Ci0gICAgcmV0dXJuIHNjb3BlLnN1Y2Nlc3MoKTsKLX0K
LQogYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUs
IGNvbnN0IGNoYXIqIG5hbWUsIEluc3BlY3RvckZyb250ZW5kSG9zdCogdmFsdWUpCiB7CiAgICAg
U2NyaXB0U2NvcGUgc2NvcGUoc2NyaXB0U3RhdGUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRPYmplY3QuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0
LmgKaW5kZXggYTYwZjJhOC4uYmVlMDc5YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRPYmplY3QuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5o
CkBAIC0zNyw3ICszNyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbmpl
Y3RlZFNjcmlwdEhvc3Q7Ci0gICAgY2xhc3MgSW5zcGVjdG9yQmFja2VuZDsKICAgICBjbGFzcyBJ
bnNwZWN0b3JGcm9udGVuZEhvc3Q7CiAgICAgY2xhc3MgU2NyaXB0U3RhdGU7CiAKQEAgLTY5LDcg
KzY4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdEdsb2JhbE9iamVj
dCB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgYm9vbCBzZXQoU2NyaXB0U3RhdGUqLCBj
b25zdCBjaGFyKiBuYW1lLCBjb25zdCBTY3JpcHRPYmplY3QmKTsKLSAgICAgICAgc3RhdGljIGJv
b2wgc2V0KFNjcmlwdFN0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yQmFja2VuZCop
OwogICAgICAgICBzdGF0aWMgYm9vbCBzZXQoU2NyaXB0U3RhdGUqLCBjb25zdCBjaGFyKiBuYW1l
LCBJbnNwZWN0b3JGcm9udGVuZEhvc3QqKTsKICAgICAgICAgc3RhdGljIGJvb2wgc2V0KFNjcmlw
dFN0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5qZWN0ZWRTY3JpcHRIb3N0Kik7CiAgICAgICAg
IHN0YXRpYyBib29sIGdldChTY3JpcHRTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIFNjcmlwdE9i
amVjdCYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKaW5kZXggMTU1YmZjZC4uOWY5ZjBmYSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAorKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuaWRsCkBAIC0zOSw2ICszOSw3IEBAIG1vZHVsZSBjb3JlIHsKICAg
ICAgICAgW25vdGlmeV0gdm9pZCBjaGlsZE5vZGVDb3VudFVwZGF0ZWQob3V0IGxvbmcgaWQsIG91
dCBpbnQgbmV3VmFsdWUpOwogICAgICAgICBbbm90aWZ5XSB2b2lkIGNoaWxkTm9kZUluc2VydGVk
KG91dCBsb25nIHBhcmVudElkLCBvdXQgbG9uZyBwcmV2SWQsIG91dCBPYmplY3Qgbm9kZSk7CiAg
ICAgICAgIFtub3RpZnldIHZvaWQgY2hpbGROb2RlUmVtb3ZlZChvdXQgbG9uZyBwYXJlbnRJZCwg
b3V0IGxvbmcgaWQpOworICAgICAgICBbbm90aWZ5XSB2b2lkIGRpZERpc3BhdGNoKG91dCBsb25n
IGNhbGxJZCwgb3V0IFN0cmluZyBlKTsKICAgICAgICAgW25vdGlmeV0gdm9pZCBzZXRDaGlsZE5v
ZGVzKG91dCBsb25nIHBhcmVudElkLCBvdXQgQXJyYXkgbm9kZXMpOwogICAgICAgICBbbm90aWZ5
XSB2b2lkIHNldERldGFjaGVkUm9vdChvdXQgT2JqZWN0IHJvb3QpOwogICAgICAgICBbbm90aWZ5
XSB2b2lkIHNldERvY3VtZW50KG91dCBWYWx1ZSByb290KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5NDEzNTguLjAw
MDAwMDAKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgg
TWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1tb2R1bGUgY29yZSB7Ci0gICAgaW50ZXJmYWNl
IFtDb25kaXRpb25hbD1JTlNQRUNUT1JdIEluc3BlY3RvckJhY2tlbmQgewotICAgICAgICB2b2lk
IHN0b3JlTGFzdEFjdGl2ZVBhbmVsKGluIERPTVN0cmluZyBwYW5lbE5hbWUpOwotCi0gICAgICAg
IHZvaWQgc2F2ZUFwcGxpY2F0aW9uU2V0dGluZ3MoaW4gRE9NU3RyaW5nIHNldHRpbmdzKTsKLSAg
ICAgICAgdm9pZCBzYXZlU2Vzc2lvblNldHRpbmdzKGluIERPTVN0cmluZyBzZXR0aW5ncyk7Ci0K
LSAgICAgICAgdm9pZCBlbmFibGVTZWFyY2hpbmdGb3JOb2RlKCk7Ci0gICAgICAgIHZvaWQgZGlz
YWJsZVNlYXJjaGluZ0Zvck5vZGUoKTsKLQotICAgICAgICB2b2lkIGVuYWJsZU1vbml0b3JpbmdY
SFIoKTsKLSAgICAgICAgdm9pZCBkaXNhYmxlTW9uaXRvcmluZ1hIUigpOwotCi0gICAgICAgIHZv
aWQgZW5hYmxlUmVzb3VyY2VUcmFja2luZyhpbiBib29sZWFuIGFsd2F5cyk7Ci0gICAgICAgIHZv
aWQgZGlzYWJsZVJlc291cmNlVHJhY2tpbmcoaW4gYm9vbGVhbiBhbHdheXMpOwotICAgICAgICB2
b2lkIGdldFJlc291cmNlQ29udGVudChpbiBsb25nIGNhbGxJZCwgaW4gdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyKTsKLSAgICAgICAgdm9pZCByZWxvYWRQYWdlKCk7Ci0KLSAgICAgICAgdm9pZCBz
dGFydFRpbWVsaW5lUHJvZmlsZXIoKTsKLSAgICAgICAgdm9pZCBzdG9wVGltZWxpbmVQcm9maWxl
cigpOwotCi0jaWYgZGVmaW5lZChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxF
X0pBVkFTQ1JJUFRfREVCVUdHRVIKLSAgICAgICAgdm9pZCBlbmFibGVEZWJ1Z2dlcihpbiBib29s
ZWFuIGFsd2F5cyk7Ci0gICAgICAgIHZvaWQgZGlzYWJsZURlYnVnZ2VyKGluIGJvb2xlYW4gYWx3
YXlzKTsKLQotICAgICAgICB2b2lkIHNldEJyZWFrcG9pbnQoaW4gbG9uZyBjYWxsSWQsIGluIERP
TVN0cmluZyBzb3VyY2VJRCwgaW4gdW5zaWduZWQgbG9uZyBsaW5lTnVtYmVyLCBpbiBib29sZWFu
IGVuYWJsZWQsIGluIERPTVN0cmluZyBjb25kaXRpb24pOwotICAgICAgICB2b2lkIHJlbW92ZUJy
ZWFrcG9pbnQoaW4gRE9NU3RyaW5nIHNvdXJjZUlELCBpbiB1bnNpZ25lZCBsb25nIGxpbmVOdW1i
ZXIpOwotICAgICAgICB2b2lkIGFjdGl2YXRlQnJlYWtwb2ludHMoKTsKLSAgICAgICAgdm9pZCBk
ZWFjdGl2YXRlQnJlYWtwb2ludHMoKTsKLQotICAgICAgICB2b2lkIHBhdXNlKCk7Ci0gICAgICAg
IHZvaWQgcmVzdW1lKCk7Ci0KLSAgICAgICAgdm9pZCBzdGVwT3ZlclN0YXRlbWVudCgpOwotICAg
ICAgICB2b2lkIHN0ZXBJbnRvU3RhdGVtZW50KCk7Ci0gICAgICAgIHZvaWQgc3RlcE91dE9mRnVu
Y3Rpb24oKTsKLQotICAgICAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoaW4gbG9u
ZyBwYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKLQotICAgICAgICB2b2lkIGVkaXRTY3JpcHRTb3Vy
Y2UoaW4gbG9uZyBjYWxsSWQsIGluIERPTVN0cmluZyBzb3VyY2VJRCwgaW4gRE9NU3RyaW5nIG5l
d0NvbnRlbnQpOwotICAgICAgICB2b2lkIGdldFNjcmlwdFNvdXJjZShpbiBsb25nIGNhbGxJZCwg
aW4gRE9NU3RyaW5nIHNvdXJjZUlEKTsKLQotICAgICAgICB2b2lkIGVuYWJsZVByb2ZpbGVyKGlu
IGJvb2xlYW4gYWx3YXlzKTsKLSAgICAgICAgdm9pZCBkaXNhYmxlUHJvZmlsZXIoaW4gYm9vbGVh
biBhbHdheXMpOwotCi0gICAgICAgIHZvaWQgc3RhcnRQcm9maWxpbmcoKTsKLSAgICAgICAgdm9p
ZCBzdG9wUHJvZmlsaW5nKCk7Ci0KLSAgICAgICAgdm9pZCBnZXRQcm9maWxlSGVhZGVycyhpbiBs
b25nIGNhbGxJZCk7Ci0gICAgICAgIHZvaWQgZ2V0UHJvZmlsZShpbiBsb25nIGNhbGxJZCwgaW4g
dW5zaWduZWQgbG9uZyB1aWQpOwotCi0gICAgICAgIHZvaWQgcmVtb3ZlUHJvZmlsZShpbiB1bnNp
Z25lZCBsb25nIHVpZCk7Ci0gICAgICAgIHZvaWQgY2xlYXJQcm9maWxlcygpOwotCi0gICAgICAg
IHZvaWQgdGFrZUhlYXBTbmFwc2hvdCgpOwotI2VuZGlmCi0gICAgICAgIHZvaWQgc2V0SW5qZWN0
ZWRTY3JpcHRTb3VyY2UoaW4gRE9NU3RyaW5nIHNjcmlwdFNvdXJjZSk7Ci0gICAgICAgIHZvaWQg
ZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGluIGxvbmcgY2FsbElkLCBpbiBsb25nIGluamVjdGVk
U2NyaXB0SWQsIGluIERPTVN0cmluZyBtZXRob2ROYW1lLCBpbiBET01TdHJpbmcgYXJndW1lbnRz
LCBpbiBib29sZWFuIGFzeW5jKTsKLQotICAgICAgICB2b2lkIGFkZFNjcmlwdFRvRXZhbHVhdGVP
bkxvYWQoaW4gRE9NU3RyaW5nIHNjcmlwdFNvdXJjZSk7Ci0gICAgICAgIHZvaWQgcmVtb3ZlQWxs
U2NyaXB0c1RvRXZhbHVhdGVPbkxvYWQoKTsKLQotICAgICAgICB2b2lkIGdldENoaWxkTm9kZXMo
aW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgbm9kZUlkKTsKLSAgICAgICAgdm9pZCBzZXRBdHRyaWJ1
dGUoaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgZWxlbWVudElkLCBpbiBET01TdHJpbmcgbmFtZSwg
aW4gRE9NU3RyaW5nIHZhbHVlKTsKLSAgICAgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoaW4gbG9u
ZyBjYWxsSWQsIGluIGxvbmcgZWxlbWVudElkLCBpbiBET01TdHJpbmcgbmFtZSk7Ci0gICAgICAg
IHZvaWQgc2V0VGV4dE5vZGVWYWx1ZShpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBub2RlSWQsIGlu
IERPTVN0cmluZyB2YWx1ZSk7Ci0gICAgICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2Rl
KGluIGxvbmcgY2FsbElkLCBpbiBsb25nIG5vZGVJZCk7Ci0gICAgICAgIHZvaWQgY29weU5vZGUo
aW4gbG9uZyBub2RlSWQpOwotICAgICAgICB2b2lkIHJlbW92ZU5vZGUoaW4gbG9uZyBjYWxsSWQs
IGluIGxvbmcgbm9kZUlkKTsKLSAgICAgICAgdm9pZCBjaGFuZ2VUYWdOYW1lKGluIGxvbmcgY2Fs
bElkLCBpbiBsb25nIG5vZGVJZCwgaW4gRE9NU3RyaW5nIG5ld1RhZ05hbWUpOwotICAgICAgICB2
b2lkIGdldE91dGVySFRNTChpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBub2RlSWQpOwotICAgICAg
ICB2b2lkIHNldE91dGVySFRNTChpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBub2RlSWQsIGluIERP
TVN0cmluZyBvdXRlckhUTUwpOwotICAgICAgICB2b2lkIGFkZEluc3BlY3RlZE5vZGUoaW4gbG9u
ZyBub2RlSWQpOwotICAgICAgICB2b2lkIHBlcmZvcm1TZWFyY2goaW4gRE9NU3RyaW5nIHF1ZXJ5
LCBpbiBib29sZWFuIHJ1blN5bmNocm9ub3VzbHkpOwotICAgICAgICB2b2lkIHNlYXJjaENhbmNl
bGVkKCk7Ci0gICAgICAgIHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKGluIGxvbmcgY2Fs
bElkLCBpbiBET01TdHJpbmcgcGF0aCk7Ci0KLSAgICAgICAgdm9pZCBjbGVhckNvbnNvbGVNZXNz
YWdlcyhpbiBsb25nIGNhbGxJZCk7Ci0KLSAgICAgICAgdm9pZCBoaWdobGlnaHRET01Ob2RlKGlu
IGxvbmcgbm9kZUlkKTsKLSAgICAgICAgdm9pZCBoaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwotCi0g
ICAgICAgIHZvaWQgZ2V0U3R5bGVzKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIG5vZGVJZCwgaW4g
Ym9vbGVhbiBhdXRoT25seSk7Ci0gICAgICAgIHZvaWQgZ2V0QWxsU3R5bGVzKGluIGxvbmcgY2Fs
bElkKTsKLSAgICAgICAgdm9pZCBnZXRJbmxpbmVTdHlsZShpbiBsb25nIGNhbGxJZCwgaW4gbG9u
ZyBub2RlSWQpOwotICAgICAgICB2b2lkIGdldENvbXB1dGVkU3R5bGUoaW4gbG9uZyBjYWxsSWQs
IGluIGxvbmcgbm9kZUlkKTsKLSAgICAgICAgdm9pZCBnZXRTdHlsZVNoZWV0KGluIGxvbmcgY2Fs
bElkLCBpbiBsb25nIHN0eWxlU2hlZXRJZCk7Ci0gICAgICAgIHZvaWQgZ2V0UnVsZVJhbmdlcyhp
biBsb25nIGNhbGxJZCwgaW4gbG9uZyBzdHlsZVNoZWV0SWQpOwotICAgICAgICB2b2lkIGFwcGx5
U3R5bGVUZXh0KGluIGxvbmcgY2FsbElkLCBpbiBsb25nIHN0eWxlSWQsIGluIERPTVN0cmluZyBz
dHlsZVRleHQsIGluIERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwotICAgICAgICB2b2lkIHNldFN0
eWxlVGV4dChpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBzdHlsZUlkLCBpbiBET01TdHJpbmcgc3R5
bGVUZXh0KTsKLSAgICAgICAgdm9pZCBzZXRTdHlsZVByb3BlcnR5KGluIGxvbmcgY2FsbElkLCBp
biBsb25nIHN0eWxlSWQsIGluIERPTVN0cmluZyBuYW1lLCBpbiBET01TdHJpbmcgdmFsdWUpOwot
ICAgICAgICB2b2lkIHRvZ2dsZVN0eWxlRW5hYmxlZChpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBz
dHlsZUlkLCBpbiBET01TdHJpbmcgcHJvcGVydHlOYW1lLCBpbiBib29sZWFuIGRpc2FibGVkKTsK
LSAgICAgICAgdm9pZCBzZXRSdWxlU2VsZWN0b3IoaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgcnVs
ZUlkLCBpbiBET01TdHJpbmcgc2VsZWN0b3IsIGluIGxvbmcgc2VsZWN0ZWROb2RlSWQpOwotICAg
ICAgICB2b2lkIGFkZFJ1bGUoaW4gbG9uZyBjYWxsSWQsIGluIERPTVN0cmluZyBzZWxlY3Rvciwg
aW4gbG9uZyBzZWxlY3RlZE5vZGVJZCk7Ci0KLSAgICAgICAgdm9pZCBnZXRDb29raWVzKGluIGxv
bmcgY2FsbElkKTsKLSAgICAgICAgdm9pZCBkZWxldGVDb29raWUoaW4gRE9NU3RyaW5nIGNvb2tp
ZU5hbWUsIGluIERPTVN0cmluZyBkb21haW4pOwotCi0jaWYgZGVmaW5lZChFTkFCTEVfT0ZGTElO
RV9XRUJfQVBQTElDQVRJT05TKQotICAgICAgICB2b2lkIGdldEFwcGxpY2F0aW9uQ2FjaGVzKGlu
IGxvbmcgY2FsbElkKTsKLSNlbmRpZgotCi0gICAgICAgIHZvaWQgcmVsZWFzZVdyYXBwZXJPYmpl
Y3RHcm91cChpbiBsb25nIGluamVjdGVkU2NyaXB0SWQsIGluIERPTVN0cmluZyBvYmplY3RHcm91
cCk7Ci0gICAgICAgIHZvaWQgZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChpbiBsb25nIGNh
bGxJZCwgaW4gRE9NU3RyaW5nIGpzb25SZXN1bHQpOwotCi0jaWYgZGVmaW5lZChFTkFCTEVfREFU
QUJBU0UpICYmIEVOQUJMRV9EQVRBQkFTRQotICAgICAgICB2b2lkIGdldERhdGFiYXNlVGFibGVO
YW1lcyhpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBkYXRhYmFzZUlkKTsKLSNlbmRpZgotCi0jaWYg
ZGVmaW5lZChFTkFCTEVfRE9NX1NUT1JBR0UpICYmIEVOQUJMRV9ET01fU1RPUkFHRQotICAgICAg
ICB2b2lkIGdldERPTVN0b3JhZ2VFbnRyaWVzKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIHN0b3Jh
Z2VJZCk7Ci0gICAgICAgIHZvaWQgc2V0RE9NU3RvcmFnZUl0ZW0oaW4gbG9uZyBjYWxsSWQsIGlu
IGxvbmcgc3RvcmFnZUlkLCBpbiBET01TdHJpbmcga2V5LCBpbiBET01TdHJpbmcgdmFsdWUpOwot
ICAgICAgICB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKGluIGxvbmcgY2FsbElkLCBpbiBsb25n
IHN0b3JhZ2VJZCwgaW4gRE9NU3RyaW5nIGtleSk7Ci0jZW5kaWYKLSAgICB9OwotfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBlMjljN2FlLi5kMTY4YjAy
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMjIwNCw2
ICsyMjA0LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVsb2FkUGFnZSgpCiAgICAg
bV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1
bGVSZWZyZXNoKHRydWUpOwogfQogCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNo
T25CYWNrZW5kKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgU3Ry
aW5nIGV4Y2VwdGlvbjsKKyAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRj
aChtZXNzYWdlLCAmZXhjZXB0aW9uKTsKKyAgICBpZiAobV9yZW1vdGVGcm9udGVuZC5nZXQoKSkK
KyAgICAgICAgbV9yZW1vdGVGcm9udGVuZC0+ZGlkRGlzcGF0Y2goY2FsbElkLCBleGNlcHRpb24p
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDE3NmRkMTEu
LmU1ODEyYzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTEy
MSw4ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgfkluc3BlY3RvckNvbnRyb2xsZXIoKTsKIAogICAg
IEluc3BlY3RvckJhY2tlbmQqIGluc3BlY3RvckJhY2tlbmQoKSB7IHJldHVybiBtX2luc3BlY3Rv
ckJhY2tlbmQuZ2V0KCk7IH0KLSAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogaW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIoKSB7IHJldHVybiBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmdldCgpOyB9CiAgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBpbmplY3RlZFNjcmlwdEhvc3Qo
KSB7IHJldHVybiBtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKTsgfQorICAgIHZvaWQgZGlzcGF0
Y2hPbkJhY2tlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKICAgICB2
b2lkIGluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmgKaW5kZXggNTE1Mzg4Yy4uZmMxYjhjOSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAorKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCkBAIC01OSw2ICs1OSw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlQXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWdu
ZWQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0
cmluZyYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChsb25n
IGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuY3BwCmluZGV4IGI5ODI0NTkuLmI4ZWVhMTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kSG9zdC5oIgpAQCAtNzIsNyArNzMs
NiBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OndpbmRvd09iamVjdENsZWFy
ZWQoKQogewogICAgIC8vIEZJWE1FOiBkb24ndCBrZWVwIHJlZmVyZW5jZSB0byB0aGUgc2NyaXB0
IHN0YXRlCiAgICAgbV9mcm9udGVuZFNjcmlwdFN0YXRlID0gc2NyaXB0U3RhdGVGcm9tUGFnZShk
ZWJ1Z2dlcldvcmxkKCksIG1fZnJvbnRlbmRQYWdlKTsKLSAgICBTY3JpcHRHbG9iYWxPYmplY3Q6
OnNldChtX2Zyb250ZW5kU2NyaXB0U3RhdGUsICJJbnNwZWN0b3JCYWNrZW5kIiwgbV9pbnNwZWN0
b3JDb250cm9sbGVyLT5pbnNwZWN0b3JCYWNrZW5kKCkpOwogICAgIG1fZnJvbnRlbmRIb3N0ID0g
SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpjcmVhdGUodGhpcywgbV9mcm9udGVuZFBhZ2UpOwogICAg
IFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KG1fZnJvbnRlbmRTY3JpcHRTdGF0ZSwgIkluc3BlY3Rv
ckZyb250ZW5kSG9zdCIsIG1fZnJvbnRlbmRIb3N0LmdldCgpKTsKIH0KQEAgLTE1OSw3ICsxNTks
MTIgQEAgdW5zaWduZWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y29uc3RyYWluZWRB
dHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZAogICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAg
ICAgcmV0dXJuIHJvdW5kZihtYXgobWluaW11bUF0dGFjaGVkSGVpZ2h0LCBtaW48ZmxvYXQ+KHBy
ZWZlcnJlZEhlaWdodCwgdG90YWxXaW5kb3dIZWlnaHQgKiBtYXhpbXVtQXR0YWNoZWRIZWlnaHRS
YXRpbykpKTsKIH0KLSAgICAKKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpz
ZW5kTWVzc2FnZVRvQmFja2VuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQor
eworICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGlzcGF0Y2hPbkJhY2tlbmQoY2FsbElkLCBt
ZXNzYWdlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAppbmRleCBjZTY2
MWZlLi5kNjI5NGIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5oCkBAIC01OSw2ICs1OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGV0YWNoV2luZG93KCkgPSAwOwogICAgIGJvb2wgY2FuQXR0YWNoV2luZG93KCk7CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSk7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0YWNo
ZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpID0gMDsKICAgICB2b2lkIHNldEF0dGFjaGVkV2luZG93
KGJvb2wpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5k
ZXggNzBmYzNhZC4uMzQwYmQ4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwCkBAIC0yMDcsNiArMjA3LDExIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0Ojpjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgUGFzdGVib2FyZDo6Z2VuZXJh
bFBhc3RlYm9hcmQoKS0+d3JpdGVQbGFpblRleHQodGV4dCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9y
RnJvbnRlbmRIb3N0OjpzZW5kTWVzc2FnZVRvQmFja2VuZChsb25nIGNhbGxJZCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQoreworICAgIG1fY2xpZW50LT5zZW5kTWVzc2FnZVRvQmFja2VuZChjYWxs
SWQsIG1lc3NhZ2UpOworfQorCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiB2b2lkIEluc3Bl
Y3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KEV2ZW50KiBldmVudCwgY29uc3QgVmVj
dG9yPENvbnRleHRNZW51SXRlbSo+JiBpdGVtcykKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmgKaW5kZXggNGQzZTBkMS4uZDk0ZDI4YSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKQEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgog
CiAgICAgLy8gQ2FsbGVkIGZyb20gW0N1c3RvbV0gaW1wbGVtZW50YXRpb25zLgogICAgIHZvaWQg
c2hvd0NvbnRleHRNZW51KEV2ZW50KiwgY29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRlbSo+JiBp
dGVtcyk7CisgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChsb25nIGNhbGxJZCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCmluZGV4IDExMzlh
MWMuLjIyMzQ1YTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kSG9zdC5pZGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmlkbApAQCAtNTAsNSArNTAsNiBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtDdXN0b21dIERP
TVN0cmluZyBwbGF0Zm9ybSgpOwogICAgICAgICBbQ3VzdG9tXSBET01TdHJpbmcgcG9ydCgpOwog
ICAgICAgICBbQ3VzdG9tXSB2b2lkIHNob3dDb250ZXh0TWVudShpbiBNb3VzZUV2ZW50IGV2ZW50
LCBpbiBET01PYmplY3QgaXRlbXMpOworICAgICAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5k
KGluIGxvbmcgY2FsbElkLCBpbiBET01TdHJpbmcgbWVzc2FnZSk7CiAgICAgfTsKIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxsYmFjay5qcyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9DYWxsYmFjay5qcwppbmRleCA4YWU3Zjk1Li4yYmQwM2FkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbGJhY2suanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxiYWNrLmpzCkBAIC01NCwzICs1NCw0IEBA
IFdlYkluc3BlY3Rvci5DYWxsYmFjay5wcm90b3R5cGUgPSB7CiBXZWJJbnNwZWN0b3IuQ2FsbGJh
Y2suX0lOU1RBTkNFID0gbmV3IFdlYkluc3BlY3Rvci5DYWxsYmFjaygpOwogV2ViSW5zcGVjdG9y
LkNhbGxiYWNrLndyYXAgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2suX0lOU1RBTkNFLndyYXAuYmlu
ZChXZWJJbnNwZWN0b3IuQ2FsbGJhY2suX0lOU1RBTkNFKTsKIFdlYkluc3BlY3Rvci5DYWxsYmFj
ay5wcm9jZXNzQ2FsbGJhY2sgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2suX0lOU1RBTkNFLnByb2Nl
c3NDYWxsYmFjay5iaW5kKFdlYkluc3BlY3Rvci5DYWxsYmFjay5fSU5TVEFOQ0UpOworV2ViSW5z
cGVjdG9yLmRpZERpc3BhdGNoID0gV2ViSW5zcGVjdG9yLkNhbGxiYWNrLnByb2Nlc3NDYWxsYmFj
azsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNr
ZW5kU3R1Yi5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5k
U3R1Yi5qcwppbmRleCA4NTdlMDI2Li43OTRmZjNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZFN0dWIuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckJhY2tlbmRTdHViLmpzCkBAIC0zMiwyNjMgKzMyLDk2
IEBAIGlmICghd2luZG93Lkluc3BlY3RvckJhY2tlbmQpIHsKIAogV2ViSW5zcGVjdG9yLkluc3Bl
Y3RvckJhY2tlbmRTdHViID0gZnVuY3Rpb24oKQogewotICAgIHRoaXMuX2F0dGFjaGVkV2luZG93
SGVpZ2h0ID0gMDsKLSAgICB0aGlzLl90aW1lbGluZUVuYWJsZWQgPSBmYWxzZTsKKyAgICB0aGlz
Ll9yZWdpc3RlckRlbGVnYXRlKCJhZGRJbnNwZWN0ZWROb2RlIik7CisgICAgdGhpcy5fcmVnaXN0
ZXJEZWxlZ2F0ZSgiYWRkU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCIpOworICAgIHRoaXMuX3JlZ2lz
dGVyRGVsZWdhdGUoImNoYW5nZVRhZ05hbWUiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRl
KCJjbGVhckNvbnNvbGVNZXNzYWdlcyIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImNv
cHlOb2RlIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiZGVsZXRlQ29va2llIik7Cisg
ICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCIp
OworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImRpc2FibGVNb25pdG9yaW5nWEhSIik7Cisg
ICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiZGlzYWJsZVJlc291cmNlVHJhY2tpbmciKTsKKyAg
ICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJkaXNhYmxlU2VhcmNoaW5nRm9yTm9kZSIpOworICAg
IHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImRpc2FibGVUaW1lbGluZSIpOworICAgIHRoaXMuX3Jl
Z2lzdGVyRGVsZWdhdGUoImRpc3BhdGNoT25JbmplY3RlZFNjcmlwdCIpOworICAgIHRoaXMuX3Jl
Z2lzdGVyRGVsZWdhdGUoImVuYWJsZU1vbml0b3JpbmdYSFIiKTsKKyAgICB0aGlzLl9yZWdpc3Rl
ckRlbGVnYXRlKCJlbmFibGVSZXNvdXJjZVRyYWNraW5nIik7CisgICAgdGhpcy5fcmVnaXN0ZXJE
ZWxlZ2F0ZSgiZW5hYmxlU2VhcmNoaW5nRm9yTm9kZSIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVs
ZWdhdGUoImVuYWJsZVRpbWVsaW5lIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiZ2V0
Q2hpbGROb2RlcyIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImdldENvb2tpZXMiKTsK
KyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJnZXREYXRhYmFzZVRhYmxlTmFtZXMiKTsKKyAg
ICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJnZXRET01TdG9yYWdlRW50cmllcyIpOworICAgIHRo
aXMuX3JlZ2lzdGVyRGVsZWdhdGUoImdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZSIpOworICAgIHRo
aXMuX3JlZ2lzdGVyRGVsZWdhdGUoImdldE91dGVySFRNTCIpOworICAgIHRoaXMuX3JlZ2lzdGVy
RGVsZWdhdGUoImdldFByb2ZpbGUiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJnZXRQ
cm9maWxlSGVhZGVycyIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInJlbW92ZVByb2Zp
bGUiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJjbGVhclByb2ZpbGVzIik7CisgICAg
dGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiZ2V0UmVzb3VyY2VDb250ZW50Iik7CisgICAgdGhpcy5f
cmVnaXN0ZXJEZWxlZ2F0ZSgiaGlnaGxpZ2h0RE9NTm9kZSIpOworICAgIHRoaXMuX3JlZ2lzdGVy
RGVsZWdhdGUoImhpZGVET01Ob2RlSGlnaGxpZ2h0Iik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxl
Z2F0ZSgicGVyZm9ybVNlYXJjaCIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInB1c2hO
b2RlQnlQYXRoVG9Gcm9udGVuZCIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInJlbGVh
c2VXcmFwcGVyT2JqZWN0R3JvdXAiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJyZW1v
dmVBbGxTY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZCIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdh
dGUoInJlbG9hZFBhZ2UiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJyZW1vdmVBdHRy
aWJ1dGUiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJyZW1vdmVET01TdG9yYWdlSXRl
bSIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInJlbW92ZU5vZGUiKTsKKyAgICB0aGlz
Ll9yZWdpc3RlckRlbGVnYXRlKCJzYXZlQXBwbGljYXRpb25TZXR0aW5ncyIpOworICAgIHRoaXMu
X3JlZ2lzdGVyRGVsZWdhdGUoInNhdmVTZXNzaW9uU2V0dGluZ3MiKTsKKyAgICB0aGlzLl9yZWdp
c3RlckRlbGVnYXRlKCJzZWFyY2hDYW5jZWxlZCIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdh
dGUoInNldEF0dHJpYnV0ZSIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInNldERPTVN0
b3JhZ2VJdGVtIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic2V0SW5qZWN0ZWRTY3Jp
cHRTb3VyY2UiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJzZXRPdXRlckhUTUwiKTsK
KyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJzZXRUZXh0Tm9kZVZhbHVlIik7CisgICAgdGhp
cy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic3RhcnRQcm9maWxpbmciKTsKKyAgICB0aGlzLl9yZWdpc3Rl
ckRlbGVnYXRlKCJzdGFydFRpbWVsaW5lUHJvZmlsZXIiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRl
bGVnYXRlKCJzdG9wUHJvZmlsaW5nIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic3Rv
cFRpbWVsaW5lUHJvZmlsZXIiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJzdG9yZUxh
c3RBY3RpdmVQYW5lbCIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInRha2VIZWFwU25h
cHNob3QiKTsKKworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImdldEFsbFN0eWxlcyIpOwor
ICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImdldFN0eWxlcyIpOworICAgIHRoaXMuX3JlZ2lz
dGVyRGVsZWdhdGUoImdldENvbXB1dGVkU3R5bGUiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVn
YXRlKCJnZXRJbmxpbmVTdHlsZSIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImdldFN0
eWxlU2hlZXQiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJnZXRSdWxlUmFuZ2VzIik7
CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiYXBwbHlTdHlsZVRleHQiKTsKKyAgICB0aGlz
Ll9yZWdpc3RlckRlbGVnYXRlKCJzZXRTdHlsZVRleHQiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRl
bGVnYXRlKCJzZXRTdHlsZVByb3BlcnR5Iik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgi
dG9nZ2xlU3R5bGVFbmFibGVkIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic2V0UnVs
ZVNlbGVjdG9yIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiYWRkUnVsZSIpOworCisg
ICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiZGlzYWJsZURlYnVnZ2VyIik7CisgICAgdGhpcy5f
cmVnaXN0ZXJEZWxlZ2F0ZSgiZWRpdFNjcmlwdFNvdXJjZSIpOworICAgIHRoaXMuX3JlZ2lzdGVy
RGVsZWdhdGUoImdldFNjcmlwdFNvdXJjZSIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUo
ImVuYWJsZURlYnVnZ2VyIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic2V0QnJlYWtw
b2ludCIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInJlbW92ZUJyZWFrcG9pbnQiKTsK
KyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJhY3RpdmF0ZUJyZWFrcG9pbnRzIik7CisgICAg
dGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiZGVhY3RpdmF0ZUJyZWFrcG9pbnRzIik7CisgICAgdGhp
cy5fcmVnaXN0ZXJEZWxlZ2F0ZSgicmVzdW1lIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0
ZSgic3RlcEludG9TdGF0ZW1lbnQiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJzdGVw
T3V0T2ZGdW5jdGlvbiIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInN0ZXBPdmVyU3Rh
dGVtZW50Iik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic2V0UGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSIpOwogfQogCiBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90
eXBlID0gewotICAgIHdyYXBDYWxsYmFjazogZnVuY3Rpb24oZnVuYykKKyAgICBfcmVnaXN0ZXJE
ZWxlZ2F0ZTogZnVuY3Rpb24obWV0aG9kTmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBmdW5j
OworICAgICAgICB0aGlzW21ldGhvZE5hbWVdID0gdGhpcy5zZW5kTWVzc2FnZVRvQmFja2VuZC5i
aW5kKHRoaXMsIG1ldGhvZE5hbWUpOwogICAgIH0sCiAKLSAgICBjbG9zZVdpbmRvdzogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fd2luZG93VmlzaWJsZSA9IGZhbHNlOwotICAgIH0s
Ci0KLSAgICBhdHRhY2g6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIGRldGFjaDog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAgc3RvcmVMYXN0QWN0aXZlUGFuZWw6IGZ1
bmN0aW9uKHBhbmVsKQotICAgIHsKLSAgICB9LAotCi0gICAgY2xlYXJDb25zb2xlTWVzc2FnZXM6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIGdldE91dGVySFRNTDogZnVuY3Rpb24o
KQotICAgIHsKLSAgICB9LAotCi0gICAgc2V0T3V0ZXJIVE1MOiBmdW5jdGlvbigpCi0gICAgewot
ICAgIH0sCi0KLSAgICBhZGRJbnNwZWN0ZWROb2RlOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0s
Ci0KLSAgICBzZWFyY2g6IGZ1bmN0aW9uKHNvdXJjZVJvdywgcXVlcnkpCi0gICAgewotICAgIH0s
Ci0KLSAgICBtb3ZlQnlVbnJlc3RyaWN0ZWQ6IGZ1bmN0aW9uKHgsIHkpCi0gICAgewotICAgIH0s
Ci0KLSAgICBnZXRSZXNvdXJjZUNvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxJZCwgaWRlbnRpZmllcikK
LSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5kaWRHZXRSZXNvdXJjZUNvbnRlbnQoY2FsbElk
LCAiIik7Ci0gICAgfSwKLQotICAgIGhpZ2hsaWdodERPTU5vZGU6IGZ1bmN0aW9uKG5vZGUpCi0g
ICAgewotICAgIH0sCi0KLSAgICBoaWRlRE9NTm9kZUhpZ2hsaWdodDogZnVuY3Rpb24oKQotICAg
IHsKLSAgICB9LAotCi0gICAgaW5zcGVjdGVkV2luZG93OiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICByZXR1cm4gd2luZG93OwotICAgIH0sCi0KLSAgICBsb2FkZWQ6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgfSwKLQotICAgIGxvY2FsaXplZFN0cmluZ3NVUkw6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiB1bmRlZmluZWQ7Ci0gICAgfSwKLQotICAgIHdpbmRvd1VubG9hZGlu
ZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCi0KLSAg
ICBoaWRkZW5QYW5lbHM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAiIjsKLSAg
ICB9LAotCi0gICAgZW5hYmxlUmVzb3VyY2VUcmFja2luZzogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJhY2tpbmdXYXNFbmFibGVkKCk7Ci0gICAgfSwK
LQotICAgIGRpc2FibGVSZXNvdXJjZVRyYWNraW5nOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmFja2luZ1dhc0Rpc2FibGVkKCk7Ci0gICAgfSwKLQot
Ci0gICAgZW5hYmxlU2VhcmNoaW5nRm9yTm9kZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
V2ViSW5zcGVjdG9yLnNlYXJjaGluZ0Zvck5vZGVXYXNFbmFibGVkKCk7Ci0gICAgfSwKLQotICAg
IGRpc2FibGVTZWFyY2hpbmdGb3JOb2RlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBXZWJJ
bnNwZWN0b3Iuc2VhcmNoaW5nRm9yTm9kZVdhc0Rpc2FibGVkKCk7Ci0gICAgfSwKLQotICAgIGVu
YWJsZU1vbml0b3JpbmdYSFI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rv
ci5tb25pdG9yaW5nWEhSV2FzRW5hYmxlZCgpOwotICAgIH0sCi0KLSAgICBkaXNhYmxlTW9uaXRv
cmluZ1hIUjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLm1vbml0b3Jp
bmdYSFJXYXNEaXNhYmxlZCgpOwotICAgIH0sCi0KLSAgICByZWxvYWRQYWdlOiBmdW5jdGlvbigp
Ci0gICAgewotICAgIH0sCi0KLSAgICBlbmFibGVEZWJ1Z2dlcjogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyV2FzRW5hYmxlZCgpOwotICAgIH0sCi0KLSAg
ICBkaXNhYmxlRGVidWdnZXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rv
ci5kZWJ1Z2dlcldhc0Rpc2FibGVkKCk7Ci0gICAgfSwKLQotICAgIHNldEJyZWFrcG9pbnQ6IGZ1
bmN0aW9uKGNhbGxJZCwgc291cmNlSUQsIGxpbmUsIGVuYWJsZWQsIGNvbmRpdGlvbikKLSAgICB7
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5kaWRTZXRCcmVha3BvaW50KGNhbGxJZCwgdHJ1ZSwgbGlu
ZSk7Ci0gICAgfSwKLQotICAgIHJlbW92ZUJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHNvdXJjZUlELCBs
aW5lKQotICAgIHsKLSAgICB9LAotCi0gICAgYWN0aXZhdGVCcmVha3BvaW50czogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludHNBY3RpdmF0ZWQgPSB0cnVlOwotICAg
IH0sCi0KLSAgICBkZWFjdGl2YXRlQnJlYWtwb2ludHM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHRoaXMuX2JyZWFrcG9pbnRzQWN0aXZhdGVkID0gZmFsc2U7Ci0gICAgfSwKLQotICAgIHBh
dXNlOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBzZXRQYXVzZU9uRXhjZXB0aW9u
c1N0YXRlOiBmdW5jdGlvbih2YWx1ZSkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci51cGRh
dGVQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKHZhbHVlKTsKLSAgICB9LAotCi0gICAgZWRpdFNjcmlw
dFNvdXJjZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmRpZEVkaXRT
Y3JpcHRTb3VyY2UoY2FsbElkLCBmYWxzZSk7Ci0gICAgfSwKLQotICAgIGdldFNjcmlwdFNvdXJj
ZTogZnVuY3Rpb24oY2FsbElkLCBzb3VyY2VJRCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rv
ci5kaWRHZXRTY3JpcHRTb3VyY2UoY2FsbElkLCBudWxsKTsKLSAgICB9LAotCi0gICAgcmVzdW1l
OiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBlbmFibGVQcm9maWxlcjogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnByb2ZpbGVyV2FzRW5hYmxlZCgpOwot
ICAgIH0sCi0KLSAgICBkaXNhYmxlUHJvZmlsZXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IFdlYkluc3BlY3Rvci5wcm9maWxlcldhc0Rpc2FibGVkKCk7Ci0gICAgfSwKLQotICAgIHN0YXJ0
UHJvZmlsaW5nOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBzdG9wUHJvZmlsaW5n
OiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBnZXRQcm9maWxlSGVhZGVyczogZnVu
Y3Rpb24oY2FsbElkKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmRpZEdldFByb2ZpbGVI
ZWFkZXJzKGNhbGxJZCwgW10pOwotICAgIH0sCi0KLSAgICBnZXRQcm9maWxlOiBmdW5jdGlvbihj
YWxsSWQsIHVpZCkKLSAgICB7Ci0gICAgfSwKLQotICAgIHRha2VIZWFwU25hcHNob3Q6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIGRhdGFiYXNlVGFibGVOYW1lczogZnVuY3Rpb24o
ZGF0YWJhc2UpCi0gICAgewotICAgICAgICByZXR1cm4gW107Ci0gICAgfSwKLQotICAgIHN0ZXBJ
bnRvU3RhdGVtZW50OiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBzdGVwT3V0T2ZG
dW5jdGlvbjogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAgc3RlcE92ZXJTdGF0ZW1l
bnQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIHNhdmVBcHBsaWNhdGlvblNldHRp
bmdzOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBzYXZlU2Vzc2lvblNldHRpbmdz
OiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBkaXNwYXRjaE9uSW5qZWN0ZWRTY3Jp
cHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIHJlbGVhc2VXcmFwcGVyT2JqZWN0
R3JvdXA6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIHNldEluamVjdGVkU2NyaXB0
U291cmNlOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0gICAgCi0gICAgYWRkU2NyaXB0VG9F
dmFsdWF0ZU9uTG9hZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAgcmVtb3ZlQWxs
U2NyaXB0c1RvRXZhbHVhdGVPbkxvYWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAg
IHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIHNlYXJjaENh
bmNlbGVkOiBmdW5jdGlvbigpCisgICAgc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6IGZ1bmN0aW9uKCkK
ICAgICB7CisgICAgICAgIHZhciBjYWxsYmFja0lkID0gV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndy
YXAoZnVuY3Rpb24oKXt9KTsKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNlbmRNZXNz
YWdlVG9CYWNrZW5kKGNhbGxiYWNrSWQsIEpTT04uc3RyaW5naWZ5KEFycmF5LnByb3RvdHlwZS5z
bGljZS5jYWxsKGFyZ3VtZW50cykpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGU1ZGNj
MTUuLjM4NDE0YTUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0IEBACiAyMDEwLTA3LTI2ICBJ
bHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IEN1cnJlbnQgaW1w
bGVtZW50YXRpb24gb2YgbWVzc2FnZSBiYXNlZCBpbnNwZWN0b3IKKyAgICAgICAgdHJhbnNwb3J0
IGdlbmVyYXRlZCBieSBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yIHNob3VsZCBiZSB1cHN0cmVhbWVk
CisgICAgICAgIGZyb20gV2ViS2l0L2Nocm9taXVtIHRvIFdlYkNvcmUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjk4MworCisgICAgICAgICogV2Vi
S2l0Lmd5cGk6CisgICAgICAgICogc3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbDo6c2VuZE1lc3Nh
Z2VUb0JhY2tlbmQpOgorICAgICAgICAqIHNyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwu
aDoKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlzcGF0Y2hPbkluc3BlY3RvckNvbnRyb2xsZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6aW5pdERldlRvb2xzQWdl
bnRIb3N0KToKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaDoKKyAgICAgICAg
KiBzcmMvanMvSW5zcGVjdG9yQ29udHJvbGxlckltcGwuanM6IFJlbW92ZWQuCisKKzIwMTAtMDct
MjYgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFJl
dmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCiAKICAgICAgICAgQ2hyb21pdW0gRGV2VG9vbHM6IHJl
ZmFjdG9yIHF1ZXJ5IHBhcmFtcywgYWRkIGJhc2ljCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cGkgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggN2Q3YjE5
Yy4uYjQ1ZTNlNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtMzMsNyArMzMsNiBAQAogICAgICAgICAj
IExpc3Qgb2YgRGV2VG9vbHMgc291cmNlIGZpbGVzLCBvcmRlcmVkIGJ5IGRlcGVuZGVuY2llcy4g
SXQgaXMgdXNlZCBib3RoCiAgICAgICAgICMgZm9yIGNvcHlpbmcgdGhlbSB0byByZXNvdXJjZSBk
aXIsIGFuZCBmb3IgZ2VuZXJhdGluZyAnZGV2dG9vbHMuaHRtbCcgZmlsZS4KICAgICAgICAgJ2Rl
dnRvb2xzX2pzX2ZpbGVzJzogWwotICAgICAgICAgICAgJ3NyYy9qcy9JbnNwZWN0b3JDb250cm9s
bGVySW1wbC5qcycsCiAgICAgICAgICAgICAnc3JjL2pzL1Byb2ZpbGVyQWdlbnQuanMnLAogICAg
ICAgICAgICAgJ3NyYy9qcy9Qcm9maWxlclByb2Nlc3Nvci5qcycsCiAgICAgICAgICAgICAnc3Jj
L2pzL0hlYXBQcm9maWxlclBhbmVsLmpzJywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmNwcAppbmRleCA3M2NlZGZhLi4yMTM4MWEzIDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50SW1w
bC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudElt
cGwuY3BwCkBAIC0xMjQsNCArMTI0LDE2IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJ
bXBsOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIG1fZnJvbnRl
bmRQYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2V0VGl0bGUoIkRldmVsb3BlciBUb29s
cyAtICIgKyB1cmwpOwogfQogCit2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbDo6c2Vu
ZE1lc3NhZ2VUb0JhY2tlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sK
KyAgICBXZWJEZXZUb29sc01lc3NhZ2VEYXRhIG1lc3NhZ2VEYXRhOworICAgIG1lc3NhZ2VEYXRh
LmNsYXNzTmFtZSA9ICJUb29sc0FnZW50IjsKKyAgICBtZXNzYWdlRGF0YS5tZXRob2ROYW1lID0g
ImRpc3BhdGNoT25JbnNwZWN0b3JDb250cm9sbGVyIjsKKyAgICBXZWJWZWN0b3I8V2ViU3RyaW5n
PiBhcmdzKChzaXplX3QpMik7CisgICAgYXJnc1swXSA9IFN0cmluZzo6bnVtYmVyKGNhbGxJZCk7
CisgICAgYXJnc1sxXSA9IG1lc3NhZ2U7CisgICAgbWVzc2FnZURhdGEuYXJndW1lbnRzLnN3YXAo
YXJncyk7CisgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlVG9BZ2VudChtZXNzYWdlRGF0YSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmgKaW5kZXggZjg2OWFjMy4uYmFlNDZjMyAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuaAor
KysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbC5oCkBA
IC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRVUkxD
aGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOwogCisgICAgdmlydHVhbCB2b2lkIHNlbmRN
ZXNzYWdlVG9CYWNrZW5kKGxvbmcgY2FsbElkLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7CiAgICAgV2ViRGV2VG9v
bHNGcm9udGVuZENsaWVudCogbV9jbGllbnQ7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2
VG9vbHNBZ2VudEltcGwuY3BwCmluZGV4IDNkNzllMGMuLjYxM2NmODMgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCkBAIC01NSw3ICs1NSw2IEBACiAj
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4SW5zcGVjdG9yQmFja2VuZC5oIgogI2luY2x1
ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIldlYkRh
dGFTb3VyY2UuaCIKQEAgLTkzLDcgKzkyLDYgQEAgdXNpbmcgV2ViQ29yZTo6U2NyaXB0U3RhdGU7
CiB1c2luZyBXZWJDb3JlOjpTY3JpcHRWYWx1ZTsKIHVzaW5nIFdlYkNvcmU6OlN0cmluZzsKIHVz
aW5nIFdlYkNvcmU6OlY4RE9NV3JhcHBlcjsKLXVzaW5nIFdlYkNvcmU6OlY4SW5zcGVjdG9yQmFj
a2VuZDsKIHVzaW5nIFdlYkNvcmU6OlY4UHJveHk7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
MzExLDkgKzMwOSw3IEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmZvcmNlUmVwYWludCgp
CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpc3BhdGNoT25JbnNwZWN0b3JDb250cm9s
bGVyKGludCBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBTdHJpbmcgZXhj
ZXB0aW9uOwotICAgIGluc3BlY3RvckNvbnRyb2xsZXIoKS0+aW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIoKS0+ZGlzcGF0Y2gobWVzc2FnZSwgJmV4Y2VwdGlvbik7Ci0gICAgbV90b29sc0FnZW50
RGVsZWdhdGVTdHViLT5kaWREaXNwYXRjaE9uKGNhbGxJZCwgIiIsIGV4Y2VwdGlvbik7CisgICAg
aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNwYXRjaE9uQmFja2VuZChjYWxsSWQsIG1lc3NhZ2Up
OwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJv
bnRlbmQoY29uc3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0YSYgZGF0YSkKQEAgLTM3NSwzOCArMzcx
LDYgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6aW5pdERldlRvb2xzQWdlbnRIb3N0KCkK
ICAgICAgICAgImRpc3BhdGNoIiwKICAgICAgICAgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmpzRGlz
cGF0Y2hPbkNsaWVudCk7CiAgICAgZGV2dG9vbHNBZ2VudEhvc3QuYnVpbGQoKTsKLQotICAgIHY4
OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgdXRpbGl0eVNjb3Bl
KG1fdXRpbGl0eUNvbnRleHQpOwotICAgIC8vIENhbGwgY3VzdG9tIGNvZGUgdG8gY3JlYXRlIGlu
c3BlY3RvciBiYWNrZW5kIHdyYXBwZXIgaW4gdGhlIHV0aWxpdHkgY29udGV4dAotICAgIC8vIGlu
c3RlYWQgb2YgY2FsbGluZyBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0IHRoYXQgd291
bGQgY3JlYXRlIHRoZQotICAgIC8vIHdyYXBwZXIgaW4gdGhlIFBhZ2UgbWFpbiBmcmFtZSBjb250
ZXh0LgotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gYmFja2VuZFdyYXBwZXIgPSBjcmVhdGVJ
bnNwZWN0b3JCYWNrZW5kVjhXcmFwcGVyKCk7Ci0gICAgaWYgKGJhY2tlbmRXcmFwcGVyLklzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fdXRpbGl0eUNvbnRleHQtPkdsb2JhbCgpLT5T
ZXQodjg6OlN0cmluZzo6TmV3KCJJbnNwZWN0b3JCYWNrZW5kIiksIGJhY2tlbmRXcmFwcGVyKTsK
LX0KLQotdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFdlYkRldlRvb2xzQWdlbnRJbXBsOjpjcmVhdGVJ
bnNwZWN0b3JCYWNrZW5kVjhXcmFwcGVyKCkKLXsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
bj4gZnVuY3Rpb24gPSBWOEluc3BlY3RvckJhY2tlbmQ6OkdldFRlbXBsYXRlKCktPkdldEZ1bmN0
aW9uKCk7Ci0gICAgaWYgKGZ1bmN0aW9uLklzRW1wdHkoKSkgewotICAgICAgICAvLyBSZXR1cm4g
aWYgYWxsb2NhdGlvbiBmYWlsZWQuCi0gICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVj
dD4oKTsKLSAgICB9Ci0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGluc3RhbmNlID0gU2FmZUFs
bG9jYXRpb246Om5ld0luc3RhbmNlKGZ1bmN0aW9uKTsKLSAgICBpZiAoaW5zdGFuY2UuSXNFbXB0
eSgpKSB7Ci0gICAgICAgIC8vIEF2b2lkIHNldHRpbmcgdGhlIHdyYXBwZXIgaWYgYWxsb2NhdGlv
biBmYWlsZWQuCi0gICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKLSAgICB9
Ci0gICAgSW5zcGVjdG9yQmFja2VuZCogYmFja2VuZCA9IG1fd2ViVmlld0ltcGwtPnBhZ2UoKS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLT5pbnNwZWN0b3JCYWNrZW5kKCk7Ci0gICAgVjhET01XcmFw
cGVyOjpzZXRET01XcmFwcGVyKGluc3RhbmNlLCAmVjhJbnNwZWN0b3JCYWNrZW5kOjppbmZvLCBi
YWNrZW5kKTsKLSAgICAvLyBDcmVhdGUgYSB3ZWFrIHJlZmVyZW5jZSB0byB0aGUgdjggd3JhcHBl
ciBvZiBJbnNwZWN0b3JCYWNrZW5kIHRvIGRlcmVmCi0gICAgLy8gSW5zcGVjdG9yQmFja2VuZCB3
aGVuIHRoZSB3cmFwcGVyIGlzIGdhcmJhZ2UgY29sbGVjdGVkLgotICAgIGJhY2tlbmQtPnJlZigp
OwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdlYWtIYW5kbGUgPSB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0Pjo6TmV3KGluc3RhbmNlKTsKLSAgICB3ZWFrSGFuZGxlLk1ha2VXZWFr
KGJhY2tlbmQsICZJbnNwZWN0b3JCYWNrZW5kV2Vha1JlZmVyZW5jZUNhbGxiYWNrKTsKLSAgICBy
ZXR1cm4gaW5zdGFuY2U7CiB9CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmNyZWF0ZUlu
c3BlY3RvckZyb250ZW5kUHJveHkoKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJEZXZUb29sc0FnZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Fn
ZW50SW1wbC5oCmluZGV4IDFiYjcxYTMuLjkzZWFmNTUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKQEAgLTEyNywxMiArMTI3LDYgQEAgcHJpdmF0ZToKIAog
ICAgIFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIoKTsK
IAotICAgIC8vIENyZWF0ZXMgSW5zcGVjdG9yQmFja2VuZCB2OCB3cmFwcGVyIGluIHRoZSB1dGls
aXR5IGNvbnRleHQgc28gdGhhdCBpdCdzCi0gICAgLy8gbWV0aG9kcyBwcm90b3R5cGUgaXMgRnVu
Y3Rpb24ucHJvdG95cGUgb2JqZWN0IGZyb20gdGhlIHV0aWxpdHkgY29udGV4dC4KLSAgICAvLyBP
dGhlcndpc2Ugc29tZSB1c2VmdWwgbWV0aG9kcyAgZGVmaW5lZCBvbiBGdW5jdGlvbi5wcm90b3R5
cGUoc3VjaCBhcyBiaW5kKQotICAgIC8vIGFyZSBtaXNzaW5nIGZvciBJbnNwZWN0b3JDb250cm9s
bGVyIG5hdGl2ZSBtZXRob2RzLgotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVJbnNw
ZWN0b3JCYWNrZW5kVjhXcmFwcGVyKCk7Ci0KICAgICBpbnQgbV9ob3N0SWQ7CiAgICAgV2ViRGV2
VG9vbHNBZ2VudENsaWVudCogbV9jbGllbnQ7CiAgICAgV2ViVmlld0ltcGwqIG1fd2ViVmlld0lt
cGw7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0luc3BlY3RvckNvbnRyb2xs
ZXJJbXBsLmpzIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9JbnNwZWN0b3JDb250cm9sbGVySW1w
bC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDhlZTFlNC4uMDAwMDAwMAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0luc3BlY3RvckNvbnRyb2xsZXJJbXBsLmpzCisrKyAv
ZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vKioKLSAqIEBmaWxlb3ZlcnZpZXcgRGV2VG9vbHMn
IGltcGxlbWVudGF0aW9uIG9mIHRoZSBJbnNwZWN0b3JDb250cm9sbGVyIEFQSS4KLSAqLwotCi1p
ZiAoIXRoaXMuZGV2dG9vbHMpCi0gICAgZGV2dG9vbHMgPSB7fTsKLQotZGV2dG9vbHMuSW5zcGVj
dG9yQmFja2VuZEltcGwgPSBmdW5jdGlvbigpCi17Ci0gICAgV2ViSW5zcGVjdG9yLkluc3BlY3Rv
ckJhY2tlbmRTdHViLmNhbGwodGhpcyk7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJv
bGxlckRlbGVnYXRlXygiYWRkSW5zcGVjdGVkTm9kZSIpOwotICAgIHRoaXMuaW5zdGFsbEluc3Bl
Y3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImFkZFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQiKTsKLSAg
ICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJjaGFuZ2VUYWdOYW1l
Iik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygiY2xlYXJD
b25zb2xlTWVzc2FnZXMiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVs
ZWdhdGVfKCJjb3B5Tm9kZSIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJE
ZWxlZ2F0ZV8oImRlbGV0ZUNvb2tpZSIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRy
b2xsZXJEZWxlZ2F0ZV8oImRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQiKTsKLSAgICB0aGlz
Lmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJkaXNhYmxlTW9uaXRvcmluZ1hI
UiIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImRpc2Fi
bGVSZXNvdXJjZVRyYWNraW5nIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxl
ckRlbGVnYXRlXygiZGlzYWJsZVNlYXJjaGluZ0Zvck5vZGUiKTsKLSAgICB0aGlzLmluc3RhbGxJ
bnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJkaXNhYmxlVGltZWxpbmUiKTsKLSAgICB0aGlz
Lmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJkaXNwYXRjaE9uSW5qZWN0ZWRT
Y3JpcHQiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJl
bmFibGVNb25pdG9yaW5nWEhSIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxl
ckRlbGVnYXRlXygiZW5hYmxlUmVzb3VyY2VUcmFja2luZyIpOwotICAgIHRoaXMuaW5zdGFsbElu
c3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImVuYWJsZVNlYXJjaGluZ0Zvck5vZGUiKTsKLSAg
ICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJlbmFibGVUaW1lbGlu
ZSIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImdldENo
aWxkTm9kZXMiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVf
KCJnZXRDb29raWVzIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVn
YXRlXygiZ2V0QXBwbGljYXRpb25DYWNoZXMiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JD
b250cm9sbGVyRGVsZWdhdGVfKCJnZXREYXRhYmFzZVRhYmxlTmFtZXMiKTsKLSAgICB0aGlzLmlu
c3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJnZXRET01TdG9yYWdlRW50cmllcyIp
OwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImdldEV2ZW50
TGlzdGVuZXJzRm9yTm9kZSIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJE
ZWxlZ2F0ZV8oImdldE91dGVySFRNTCIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRy
b2xsZXJEZWxlZ2F0ZV8oImdldFByb2ZpbGUiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JD
b250cm9sbGVyRGVsZWdhdGVfKCJnZXRQcm9maWxlSGVhZGVycyIpOwotICAgIHRoaXMuaW5zdGFs
bEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInJlbW92ZVByb2ZpbGUiKTsKLSAgICB0aGlz
Lmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJjbGVhclByb2ZpbGVzIik7Ci0g
ICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygiZ2V0UmVzb3VyY2VD
b250ZW50Iik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygi
aGlnaGxpZ2h0RE9NTm9kZSIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJE
ZWxlZ2F0ZV8oImhpZGVET01Ob2RlSGlnaGxpZ2h0Iik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVj
dG9yQ29udHJvbGxlckRlbGVnYXRlXygicGVyZm9ybVNlYXJjaCIpOwotICAgIHRoaXMuaW5zdGFs
bEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZCIp
OwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInJlbGVhc2VX
cmFwcGVyT2JqZWN0R3JvdXAiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVy
RGVsZWdhdGVfKCJyZW1vdmVBbGxTY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZCIpOwotICAgIHRoaXMu
aW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInJlbG9hZFBhZ2UiKTsKLSAgICB0
aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJyZW1vdmVBdHRyaWJ1dGUi
KTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJyZW1vdmVE
T01TdG9yYWdlSXRlbSIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxl
Z2F0ZV8oInJlbW92ZU5vZGUiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVy
RGVsZWdhdGVfKCJzYXZlQXBwbGljYXRpb25TZXR0aW5ncyIpOwotICAgIHRoaXMuaW5zdGFsbElu
c3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInNhdmVTZXNzaW9uU2V0dGluZ3MiKTsKLSAgICB0
aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzZWFyY2hDYW5jZWxlZCIp
OwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInNldEF0dHJp
YnV0ZSIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInNl
dERPTVN0b3JhZ2VJdGVtIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRl
bGVnYXRlXygic2V0SW5qZWN0ZWRTY3JpcHRTb3VyY2UiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNw
ZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzZXRPdXRlckhUTUwiKTsKLSAgICB0aGlzLmluc3Rh
bGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzZXRUZXh0Tm9kZVZhbHVlIik7Ci0gICAg
dGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic3RhcnRQcm9maWxpbmci
KTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzdGFydFRp
bWVsaW5lUHJvZmlsZXIiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVs
ZWdhdGVfKCJzdG9wUHJvZmlsaW5nIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJv
bGxlckRlbGVnYXRlXygic3RvcFRpbWVsaW5lUHJvZmlsZXIiKTsKLSAgICB0aGlzLmluc3RhbGxJ
bnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzdG9yZUxhc3RBY3RpdmVQYW5lbCIpOwotICAg
IHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInRha2VIZWFwU25hcHNo
b3QiKTsKLQotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImdl
dEFsbFN0eWxlcyIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0
ZV8oImdldFN0eWxlcyIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxl
Z2F0ZV8oImdldENvbXB1dGVkU3R5bGUiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250
cm9sbGVyRGVsZWdhdGVfKCJnZXRJbmxpbmVTdHlsZSIpOwotICAgIHRoaXMuaW5zdGFsbEluc3Bl
Y3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImdldFN0eWxlU2hlZXQiKTsKLSAgICB0aGlzLmluc3Rh
bGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJnZXRSdWxlUmFuZ2VzIik7Ci0gICAgdGhp
cy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygiYXBwbHlTdHlsZVRleHQiKTsK
LSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzZXRTdHlsZVRl
eHQiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzZXRT
dHlsZVByb3BlcnR5Iik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVn
YXRlXygidG9nZ2xlU3R5bGVFbmFibGVkIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29u
dHJvbGxlckRlbGVnYXRlXygic2V0UnVsZVNlbGVjdG9yIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5z
cGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygiYWRkUnVsZSIpOwotCi0gICAgdGhpcy5pbnN0YWxs
SW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygiZGlzYWJsZURlYnVnZ2VyIik7Ci0gICAgdGhp
cy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygiZWRpdFNjcmlwdFNvdXJjZSIp
OwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImdldFNjcmlw
dFNvdXJjZSIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8o
ImVuYWJsZURlYnVnZ2VyIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRl
bGVnYXRlXygic2V0QnJlYWtwb2ludCIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRy
b2xsZXJEZWxlZ2F0ZV8oInJlbW92ZUJyZWFrcG9pbnQiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNw
ZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJhY3RpdmF0ZUJyZWFrcG9pbnRzIik7Ci0gICAgdGhp
cy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygiZGVhY3RpdmF0ZUJyZWFrcG9p
bnRzIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygicmVz
dW1lIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic3Rl
cEludG9TdGF0ZW1lbnQiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVs
ZWdhdGVfKCJzdGVwT3V0T2ZGdW5jdGlvbiIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNv
bnRyb2xsZXJEZWxlZ2F0ZV8oInN0ZXBPdmVyU3RhdGVtZW50Iik7Ci0gICAgdGhpcy5pbnN0YWxs
SW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIp
OwotfTsKLWRldnRvb2xzLkluc3BlY3RvckJhY2tlbmRJbXBsLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlOwotCi0KLWRldnRv
b2xzLkluc3BlY3RvckJhY2tlbmRJbXBsLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uKCkKLXsK
LSAgICBSZW1vdGVEZWJ1Z2dlckNvbW1hbmRFeGVjdXRvci5EZWJ1Z2dlclBhdXNlU2NyaXB0KCk7
Ci19OwotCi0KLS8qKgotICogSW5zdGFsbHMgZGVsZWdhdGluZyBoYW5kbGVyIGludG8gdGhlIGlu
c3BlY3RvciBjb250cm9sbGVyLgotICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZE5hbWUgTWV0aG9k
IHRvIGluc3RhbGwgZGVsZWdhdGluZyBoYW5kbGVyIGZvci4KLSAqLwotZGV2dG9vbHMuSW5zcGVj
dG9yQmFja2VuZEltcGwucHJvdG90eXBlLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdh
dGVfID0gZnVuY3Rpb24obWV0aG9kTmFtZSkKLXsKLSAgICB0aGlzW21ldGhvZE5hbWVdID0gdGhp
cy5jYWxsSW5zcGVjdG9yQ29udHJvbGxlcl8uYmluZCh0aGlzLCBtZXRob2ROYW1lKTsKLX07Ci0K
LQotLyoqCi0gKiBCb3VuZCBmdW5jdGlvbiB3aXRoIHRoZSBpbnN0YWxsSW5qZWN0ZWRTY3JpcHRE
ZWxlZ2F0ZV8gYWN0dWFsCi0gKiBpbXBsZW1lbnRhdGlvbi4KLSAqLwotZGV2dG9vbHMuSW5zcGVj
dG9yQmFja2VuZEltcGwucHJvdG90eXBlLmNhbGxJbnNwZWN0b3JDb250cm9sbGVyXyA9IGZ1bmN0
aW9uKCkKLXsKLSAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3Vt
ZW50cyk7Ci0gICAgdmFyIG1lc3NhZ2UgPSBKU09OLnN0cmluZ2lmeShhcmdzKTsKLSAgICB2YXIg
Y2FsbGJhY2tJZCA9IFdlYkluc3BlY3Rvci5DYWxsYmFjay53cmFwKGZ1bmN0aW9uKCl7fSk7Ci0g
ICAgaWYgKCJwYWdlIiBpbiBXZWJJbnNwZWN0b3IuX3BhcmFtc09iamVjdCkKLSAgICAgICAgV2Vi
SW5zcGVjdG9yLnNvY2tldC5zZW5kKGNhbGxiYWNrSWQgKyAiICIgKyBtZXNzYWdlKTsKLSAgICBl
bHNlCi0gICAgICAgIFJlbW90ZVRvb2xzQWdlbnQuZGlzcGF0Y2hPbkluc3BlY3RvckNvbnRyb2xs
ZXIoY2FsbGJhY2tJZCwgbWVzc2FnZSk7Ci19OwotCi0KLUluc3BlY3RvckJhY2tlbmQgPSBuZXcg
ZGV2dG9vbHMuSW5zcGVjdG9yQmFja2VuZEltcGwoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62595</attachid>
            <date>2010-07-26 12:31:08 -0700</date>
            <delta_ts>2010-07-27 03:36:12 -0700</delta_ts>
            <desc>[patch] second iteration. fixed windows build.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>56493</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLnY4YmluZGluZ3MubWsgYi9XZWJD
b3JlL0FuZHJvaWQuZGVyaXZlZC52OGJpbmRpbmdzLm1rCmluZGV4IDFlN2ZhMzcuLmNmYThkYzkg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLnY4YmluZGluZ3MubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLmRlcml2ZWQudjhiaW5kaW5ncy5tawpAQCAtNTcxLDcgKzU3MSw2IEBA
ICQocGF0c3Vic3QgJS5oLCUuY3BwLCQoR0VOKSk6ICQoaW50ZXJtZWRpYXRlcykvYmluZGluZ3Mv
JS5jcHAgOiAkKGludGVybWVkaWF0ZXMpCiAjIFRoZXNlIGhlYWRlcnMgYXJlIHJlcXVpcmVkIGJ5
IHRoZSBWOCBiaW5kaW5ncyBldmVuIHdoZW4gSW5zcGVjdG9yIGlzIGRpc2FibGVkCiBHRU4gOj0g
XAogICAgICQoaW50ZXJtZWRpYXRlcykvYmluZGluZ3MvVjhJbmplY3RlZFNjcmlwdEhvc3QuaCBc
Ci0gICAgJChpbnRlcm1lZGlhdGVzKS9iaW5kaW5ncy9WOEluc3BlY3RvckJhY2tlbmQuaCBcCiAg
ICAgJChpbnRlcm1lZGlhdGVzKS9iaW5kaW5ncy9WOEluc3BlY3RvckZyb250ZW5kSG9zdC5oCiAK
ICQoR0VOKTogUFJJVkFURV9QQVRIIDo9ICQoTE9DQUxfUEFUSCkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGQ2OTU2MzYu
LjNiZmEwYTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtMjkzLDcgKzI5Myw2IEBAIFNFVChXZWJDb3JlX0lETF9GSUxF
UwogICAgIGh0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsCiAKICAgICBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmlkbAotICAgIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCiAgICAgaW5zcGVjdG9yL0phdmFT
Y3JpcHRDYWxsRnJhbWUuaWRsCiAgICAgaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGUuaWRsCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGVlMDZh
MTIuLjQwYjYwMTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTAtMDctMjYgIElseWEgVGlraG9ub3Zza3kg
IDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBt
ZXNzYWdlIGJhc2VkIGluc3BlY3RvcgorICAgICAgICB0cmFuc3BvcnQgZ2VuZXJhdGVkIGJ5IENv
ZGVHZW5lcmF0b3JJbnNwZWN0b3Igc2hvdWxkIGJlIHVwc3RyZWFtZWQKKyAgICAgICAgZnJvbSBX
ZWJLaXQvY2hyb21pdW0gdG8gV2ViQ29yZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQyOTgzCisKKyAgICAgICAgKiBBbmRyb2lkLmRlcml2ZWQudjhi
aW5kaW5ncy5tazoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5jcHA6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcmk6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVj
dC5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0Lmg6CisgICAgICAgICog
YmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3Jp
cHRPYmplY3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmlkbDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hPbkJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDo6d2luZG93T2JqZWN0Q2xlYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsOjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kSG9zdDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxiYWNrLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DYWxsYmFjay5wcm90b3R5cGUucHJvY2Vzc0NhbGxiYWNrKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0luc3BlY3RvckJhY2tlbmRTdHViLmpzOgorICAgICAgICAoLldlYkluc3Bl
Y3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yik6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3Bl
Y3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5fcmVnaXN0ZXJEZWxlZ2F0ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl90b2dnbGVUaW1lbGluZUJ1dHRvbkNsaWNrZWQp
OgorCiAyMDEwLTA3LTI2ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAg
ICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvNDI5ODI+IFN0cmVhbWxpbmUgSW5zcGVjdG9yIFNv
dXJjZSBidWlsZCBwaGFzZSBzY3JpcHQgc2hvdWxkIHVzZSBDT05GSUdVUkFUSU9OIG5vdCBCVUlM
RF9TVFlMRQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAgYi9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLmNwcAppbmRleCA3OGM1MjNmLi5lYTZlNDdlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAorKysgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNw
cApAQCAtMTkwLDcgKzE5MCw2IEBACiAjaW5jbHVkZSAiSlNJbWFnZURhdGEuY3BwIgogI2luY2x1
ZGUgIkpTSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5jcHAiCiAjaW5jbHVkZSAiSlNJbmplY3RlZFNj
cmlwdEhvc3QuY3BwIgotI2luY2x1ZGUgIkpTSW5zcGVjdG9yQmFja2VuZC5jcHAiCiAjaW5jbHVk
ZSAiSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIgogI2luY2x1ZGUgIkpTSmF2YVNjcmlwdENh
bGxGcmFtZS5jcHAiCiAjaW5jbHVkZSAiSlNLZXlib2FyZEV2ZW50LmNwcCIKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQppbmRleCA3YzUzZTg2Li44Y2VjYzJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMzMsNyArMjMz
LDYgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgSW1hZ2VEYXRhIFwKICAgICBJbmRleGVkRGF0YWJh
c2VSZXF1ZXN0IFwKICAgICBJbmplY3RlZFNjcmlwdEhvc3QgXAotICAgIEluc3BlY3RvckJhY2tl
bmQgXAogICAgIEluc3BlY3RvckZyb250ZW5kSG9zdCBcCiAgICAgS2V5Ym9hcmRFdmVudCBcCiAg
ICAgTG9jYXRpb24gXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNWIxOTUwZi4uZjZjNTlhNiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zOTYs
OCArMzk2LDYgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTSW1hZ2VEYXRhLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbmplY3Rl
ZFNjcmlwdEhvc3QuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW5qZWN0ZWRTY3Jp
cHRIb3N0LmggXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbnNwZWN0b3JCYWNrZW5kLmNw
cCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0luc3BlY3RvckJhY2tlbmQuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0ludDE2QXJyYXkuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4gYi9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDcxMjgyNjQuLjI3ODBk
YmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgpAQCAtMTE5Myw2ICsxMTkzLDcgQEAgX19aTjdXZWJDb3JlMjhJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsMTdzZXRBdHRhY2hlZFdpbmRvd0ViCiBfX1pON1dlYkNvcmUyOElu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwxOXJlcXVlc3RBdHRhY2hXaW5kb3dFdgogX19aTjdX
ZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsMTlyZXF1ZXN0RGV0YWNoV2luZG93
RXYKIF9fWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDE5d2luZG93T2Jq
ZWN0Q2xlYXJlZEV2CitfX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwy
MHNlbmRNZXNzYWdlVG9CYWNrZW5kRWxSS05TXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUyOEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwyNmNoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0RWoKIF9f
Wk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDI3cmVzdG9yZUF0dGFjaGVk
V2luZG93SGVpZ2h0RXYKIF9fWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bEMyRVBOU18xOUluc3BlY3RvckNvbnRyb2xsZXJFUE5TXzRQYWdlRQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiODMyNTZlLi41
YzBiNTIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtMTk2LDcgKzE5Niw2IEBACiAgICAgICAgICAgICAnaHRtbC9WYWxpZGl0
eVN0YXRlLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9Wb2lkQ2FsbGJhY2suaWRsJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCcsCi0gICAgICAgICAgICAn
aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsJywKICAgICAgICAgICAgICdpbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0phdmFT
Y3JpcHRDYWxsRnJhbWUuaWRsJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0UHJvZmls
ZS5pZGwnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnByaSBiL1dlYkNvcmUvV2ViQ29y
ZS5wcmkKaW5kZXggMThhNzZhMC4uZTU5Y2M5OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
LnByaQorKysgYi9XZWJDb3JlL1dlYkNvcmUucHJpCkBAIC00NDgsNyArNDQ4LDYgQEAgSURMX0JJ
TkRJTkdTICs9IFwKICAgICBodG1sL1ZhbGlkaXR5U3RhdGUuaWRsIFwKICAgICBodG1sL1ZvaWRD
YWxsYmFjay5pZGwgXAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsIFwKLSAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuaWRsIFwKICAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5p
ZGwgXAogICAgIGluc3BlY3Rvci9TY3JpcHRQcm9maWxlLmlkbCBcCmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagppbmRleCBhOTdmZmE3Li42NGNlNWZjIDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTg3ODEsNjIgKzg3ODEsNiBAQAogCQkJCT4NCiAJCQk8
L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilc
b2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSW5zcGVjdG9yQmFja2VuZC5jcHAi
DQotCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4z
MiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wN
Ci0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNl
fFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8
VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRl
YnVnX0ludGVybmFsfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJ
CQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkv
Pg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0J
CQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
DQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQotCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIg0KLQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0K
LQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0
RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJbnNwZWN0b3JCYWNrZW5k
LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIk
KFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24N
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZjYzVhMDgu
LjRiNThlOGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC04MzIsOCArODMyLDYgQEAKIAkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0
V29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAqLzsgfTsKIAkJNDFF
MUIxRDMwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDRDBGRjU5ODY5MDA1NzZCM0Ig
LyogU2hhcmVkV29ya2VyLmNwcCAqLzsgfTsKIAkJNDFFMUIxRDQwRkY1OTg2OTAwNTc2QjNCIC8q
IFNoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFFMUIxQ0UwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5oICovOyB9Owot
CQk0MUYwNjBDRDBGNUVFQjJCMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JCYWNrZW5kLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2MENCMEY1RUVC
MkIwMEEwN0VBQyAvKiBKU0luc3BlY3RvckJhY2tlbmQuY3BwICovOyB9OwotCQk0MUYwNjBDRTBG
NUVFQjJCMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjBDQzBGNUVFQjJCMDBBMDdFQUMgLyog
SlNJbnNwZWN0b3JCYWNrZW5kLmggKi87IH07CiAJCTQxRjA2MTc0MEY1RjAwQUMwMEEwN0VBQyAv
KiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2MTcyMEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0
b3JET01TdG9yYWdlUmVzb3VyY2UuaCAqLzsgfTsKIAkJNDFGMDYxNzUwRjVGMDBBQzAwQTA3RUFD
IC8qIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjE3MzBGNUYwMEFDMDBBMDdFQUMgLyogSW5z
cGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCAqLzsgfTsKIAkJNDFGMDYxOEUwRjVGMDY5ODAw
QTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjE4QzBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3Nh
Z2UuaCAqLzsgfTsKQEAgLTY1NDEsOCArNjUzOSw2IEBACiAJCTQxRTFCMUNEMEZGNTk4NjkwMDU3
NkIzQiAvKiBTaGFyZWRXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gU2hhcmVkV29ya2VyLmNwcDsgcGF0aCA9IHdvcmtlcnMvU2hhcmVkV29ya2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMUIxQ0UwRkY1OTg2OTAwNTc2QjNCIC8q
IFNoYXJlZFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTaGFyZWRX
b3JrZXIuaDsgcGF0aCA9IHdvcmtlcnMvU2hhcmVkV29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxRTFCMUNGMEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFNoYXJlZFdvcmtlci5pZGw7IHBhdGggPSB3b3JrZXJz
L1NoYXJlZFdvcmtlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxRjA2MENC
MEY1RUVCMkIwMEEwN0VBQyAvKiBKU0luc3BlY3RvckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnNwZWN0b3JCYWNrZW5kLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFGMDYwQ0MwRjVFRUIyQjAwQTA3RUFDIC8qIEpTSW5zcGVj
dG9yQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0luc3BlY3Rv
ckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYxNzIwRjVGMDBB
QzAwQTA3RUFDIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYxNzMwRjVGMDBBQzAwQTA3RUFDIC8qIEluc3Bl
Y3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUYwNjE4QzBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc29sZU1lc3NhZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxNzMsNyArNzE2OSw2IEBACiAJCTdBMjQ1ODdB
MTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JET01BZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QTY3NEJEOTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVy
cmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VHcm91cExv
YWREZWZlcnJlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNjc0QkRBMEY5
RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGFnZUdyb3VwTG9hZERlZmVycmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTdBNzRFQ0I2MTAxODM5OUEwMEJGOTM5RSAvKiBJbnNwZWN0b3JCYWNr
ZW5kLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbnNwZWN0b3JCYWNrZW5kLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E3NEVDQjgxMDE4MzlBNTAwQkY5MzlFIC8qIElu
c3BlY3RvckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5zcGVjdG9yQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNzRF
Q0I5MTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0E3NEVDQkMxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRl
bmRIb3N0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTExNDM1LDggKzExNDMwLDYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdBMEU3NkQ4
MTBCRjA1OTgwMEEwMjc2RSAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5jcHAgKi8sCiAJCQkJN0Ew
RTc2RDkxMEJGMDU5ODAwQTAyNzZFIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi8sCi0JCQkJ
NDFGMDYwQ0IwRjVFRUIyQjAwQTA3RUFDIC8qIEpTSW5zcGVjdG9yQmFja2VuZC5jcHAgKi8sCi0J
CQkJNDFGMDYwQ0MwRjVFRUIyQjAwQTA3RUFDIC8qIEpTSW5zcGVjdG9yQmFja2VuZC5oICovLAog
CQkJCTdBMEU3NzFDMTBDMDBEQjEwMEEwMjc2RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5j
cHAgKi8sCiAJCQkJN0EwRTc3MUQxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmggKi8sCiAJCQkJMUM1RkFFQ0YwRENGRDkwMTAwRDU4Rjc4IC8qIEpTSmF2YVNjcmlw
dENhbGxGcmFtZS5jcHAgKi8sCkBAIC0xMTQ2OCw3ICsxMTQ2MSw2IEBACiAJCQkJQjg4NUU4RDMx
MUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oICovLAog
CQkJCTdBNzRFQ0I4MTAxODM5QTUwMEJGOTM5RSAvKiBJbnNwZWN0b3JCYWNrZW5kLmNwcCAqLywK
IAkJCQk3QTc0RUNCOTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yQmFja2VuZC5oICovLAot
CQkJCTdBNzRFQ0I2MTAxODM5OUEwMEJGOTM5RSAvKiBJbnNwZWN0b3JCYWNrZW5kLmlkbCAqLywK
IAkJCQkxQzgxQjk1ODBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggKi8sCiAJ
CQkJMUM4MUI5NTcwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuY3BwICov
LAogCQkJCTFDODFCOTU2MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmgg
Ki8sCkBAIC0xODczOSw3ICsxODczMSw2IEBACiAJCQkJQTc3OTc5MjkwRDZCOUU2NDAwMzg1MUI5
IC8qIEpTSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTg1QTY5NzExRDRGQjEzMDA0
QzNFNEIgLyogSlNJbmRleGVkRGF0YWJhc2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
QTBFNzZEQjEwQkYwNTk4MDBBMDI3NkUgLyogSlNJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTQxRjA2MENFMEY1RUVCMkIwMEEwN0VBQyAvKiBKU0luc3BlY3RvckJhY2tl
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMEU3NzFGMTBDMDBEQjEwMEEwMjc2RSAvKiBKU0lu
c3BlY3RvckZyb250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFRUNGMDcxMDUwNzBD
NDAwMDk5RkFCIC8qIEpTSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFRUNGMDUx
MDUwNzBDNDAwMDk5RkFCIC8qIEpTSW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMTIw
NSw3ICsyMTE5Niw2IEBACiAJCQkJQzU4NUE2OTYxMUQ0RkIxMzAwNEMzRTRCIC8qIEpTSW5kZXhl
ZERhdGFiYXNlUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTBFNzZEQTEwQkYwNTk4
MDBBMDI3NkUgLyogSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0EwRTc2RDUxMEJGMDUwNzAwQTAyNzZFIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTQxRjA2MENEMEY1RUVCMkIwMEEwN0VBQyAvKiBKU0luc3Bl
Y3RvckJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0EwRTc3MUUxMEMwMERCMTAwQTAy
NzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdB
NzRFQ0JEMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVFQ0YwNjEwNTA3MEM0MDAwOTlGQUIgLyogSlNJbnQx
NkFycmF5LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRPYmplY3QuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3Bw
CmluZGV4IDE2YjlmMDEuLmRlMzk3ZjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0T2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5j
cHAKQEAgLTM3LDcgKzM3LDYgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAjaW5jbHVkZSAi
SlNJbmplY3RlZFNjcmlwdEhvc3QuaCIKLSNpbmNsdWRlICJKU0luc3BlY3RvckJhY2tlbmQuaCIK
ICNpbmNsdWRlICJKU0luc3BlY3RvckZyb250ZW5kSG9zdC5oIgogI2VuZGlmCiAKQEAgLTE1OCwx
NCArMTU3LDYgQEAgYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChTY3JpcHRTdGF0ZSogc2Ny
aXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFMKIH0KIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi1ib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRT
dGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yQmFja2VuZCogdmFsdWUpCi17Ci0gICAg
SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRT
dGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVj
dChJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBuYW1lKSwgdG9KUyhzY3JpcHRTdGF0ZSwgZ2xvYmFs
T2JqZWN0LCB2YWx1ZSkpOwotICAgIHJldHVybiBoYW5kbGVFeGNlcHRpb24oc2NyaXB0U3RhdGUp
OwotfQotCiBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRT
dGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0KiB2YWx1ZSkKIHsK
ICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0T2JqZWN0LmgKaW5kZXggMGM5OTNlMS4uOTg4MDk3NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE9iamVjdC5oCkBAIC0zOSw3ICszOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBJbmplY3RlZFNjcmlwdEhvc3Q7Ci0gICAgY2xhc3MgSW5zcGVjdG9yQmFja2VuZDsKICAg
ICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q7CiAKICAgICBjbGFzcyBTY3JpcHRPYmplY3Qg
OiBwdWJsaWMgU2NyaXB0VmFsdWUgewpAQCAtNzAsNyArNjksNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgYm9vbCBzZXQoU2NyaXB0U3RhdGUqLCBj
b25zdCBjaGFyKiBuYW1lLCBjb25zdCBTY3JpcHRPYmplY3QmKTsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotICAgICAgICBzdGF0aWMgYm9vbCBzZXQoU2NyaXB0U3RhdGUqLCBjb25zdCBjaGFyKiBu
YW1lLCBJbnNwZWN0b3JCYWNrZW5kKik7CiAgICAgICAgIHN0YXRpYyBib29sIHNldChTY3JpcHRT
dGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIEluc3BlY3RvckZyb250ZW5kSG9zdCopOwogICAgICAg
ICBzdGF0aWMgYm9vbCBzZXQoU2NyaXB0U3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJbmplY3Rl
ZFNjcmlwdEhvc3QqKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRPYmplY3QuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwCmlu
ZGV4IDUyMGM1N2IuLjhmODE1MzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0T2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5jcHAK
QEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgogI2luY2x1ZGUgIlY4SW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiVjhJbnNw
ZWN0b3JCYWNrZW5kLmgiCiAjaW5jbHVkZSAiVjhJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCIKICNp
bmNsdWRlICJWOFByb3h5LmgiCiAKQEAgLTE0NiwxMyArMTQ1LDYgQEAgYm9vbCBTY3JpcHRHbG9i
YWxPYmplY3Q6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUs
IGNvbnN0IFMKIH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi1ib29sIFNjcmlwdEdsb2JhbE9i
amVjdDo6c2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5z
cGVjdG9yQmFja2VuZCogdmFsdWUpCi17Ci0gICAgU2NyaXB0U2NvcGUgc2NvcGUoc2NyaXB0U3Rh
dGUpOwotICAgIHNjb3BlLmdsb2JhbCgpLT5TZXQodjg6OlN0cmluZzo6TmV3KG5hbWUpLCB0b1Y4
KHZhbHVlKSk7Ci0gICAgcmV0dXJuIHNjb3BlLnN1Y2Nlc3MoKTsKLX0KLQogYm9vbCBTY3JpcHRH
bG9iYWxPYmplY3Q6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5h
bWUsIEluc3BlY3RvckZyb250ZW5kSG9zdCogdmFsdWUpCiB7CiAgICAgU2NyaXB0U2NvcGUgc2Nv
cGUoc2NyaXB0U3RhdGUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRP
YmplY3QuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmgKaW5kZXggYTYwZjJh
OC4uYmVlMDc5YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3Qu
aAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5oCkBAIC0zNyw3ICszNyw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbmplY3RlZFNjcmlwdEhvc3Q7
Ci0gICAgY2xhc3MgSW5zcGVjdG9yQmFja2VuZDsKICAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVu
ZEhvc3Q7CiAgICAgY2xhc3MgU2NyaXB0U3RhdGU7CiAKQEAgLTY5LDcgKzY4LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdEdsb2JhbE9iamVjdCB7CiAgICAgcHVibGlj
OgogICAgICAgICBzdGF0aWMgYm9vbCBzZXQoU2NyaXB0U3RhdGUqLCBjb25zdCBjaGFyKiBuYW1l
LCBjb25zdCBTY3JpcHRPYmplY3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgc2V0KFNjcmlwdFN0
YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yQmFja2VuZCopOwogICAgICAgICBzdGF0
aWMgYm9vbCBzZXQoU2NyaXB0U3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0b3JGcm9u
dGVuZEhvc3QqKTsKICAgICAgICAgc3RhdGljIGJvb2wgc2V0KFNjcmlwdFN0YXRlKiwgY29uc3Qg
Y2hhciogbmFtZSwgSW5qZWN0ZWRTY3JpcHRIb3N0Kik7CiAgICAgICAgIHN0YXRpYyBib29sIGdl
dChTY3JpcHRTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIFNjcmlwdE9iamVjdCYpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5pZGwKaW5kZXggMTU1YmZjZC4uOWY5ZjBmYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuaWRsCkBAIC0zOSw2ICszOSw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW25vdGlmeV0g
dm9pZCBjaGlsZE5vZGVDb3VudFVwZGF0ZWQob3V0IGxvbmcgaWQsIG91dCBpbnQgbmV3VmFsdWUp
OwogICAgICAgICBbbm90aWZ5XSB2b2lkIGNoaWxkTm9kZUluc2VydGVkKG91dCBsb25nIHBhcmVu
dElkLCBvdXQgbG9uZyBwcmV2SWQsIG91dCBPYmplY3Qgbm9kZSk7CiAgICAgICAgIFtub3RpZnld
IHZvaWQgY2hpbGROb2RlUmVtb3ZlZChvdXQgbG9uZyBwYXJlbnRJZCwgb3V0IGxvbmcgaWQpOwor
ICAgICAgICBbbm90aWZ5XSB2b2lkIGRpZERpc3BhdGNoKG91dCBsb25nIGNhbGxJZCwgb3V0IFN0
cmluZyBlKTsKICAgICAgICAgW25vdGlmeV0gdm9pZCBzZXRDaGlsZE5vZGVzKG91dCBsb25nIHBh
cmVudElkLCBvdXQgQXJyYXkgbm9kZXMpOwogICAgICAgICBbbm90aWZ5XSB2b2lkIHNldERldGFj
aGVkUm9vdChvdXQgT2JqZWN0IHJvb3QpOwogICAgICAgICBbbm90aWZ5XSB2b2lkIHNldERvY3Vt
ZW50KG91dCBWYWx1ZSByb290KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmQuaWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5NDEzNTguLjAwMDAwMDAKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwx
NDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Vi
a2l0QG1hdHRsaWxlay5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi1tb2R1bGUgY29yZSB7Ci0gICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1J
TlNQRUNUT1JdIEluc3BlY3RvckJhY2tlbmQgewotICAgICAgICB2b2lkIHN0b3JlTGFzdEFjdGl2
ZVBhbmVsKGluIERPTVN0cmluZyBwYW5lbE5hbWUpOwotCi0gICAgICAgIHZvaWQgc2F2ZUFwcGxp
Y2F0aW9uU2V0dGluZ3MoaW4gRE9NU3RyaW5nIHNldHRpbmdzKTsKLSAgICAgICAgdm9pZCBzYXZl
U2Vzc2lvblNldHRpbmdzKGluIERPTVN0cmluZyBzZXR0aW5ncyk7Ci0KLSAgICAgICAgdm9pZCBl
bmFibGVTZWFyY2hpbmdGb3JOb2RlKCk7Ci0gICAgICAgIHZvaWQgZGlzYWJsZVNlYXJjaGluZ0Zv
ck5vZGUoKTsKLQotICAgICAgICB2b2lkIGVuYWJsZU1vbml0b3JpbmdYSFIoKTsKLSAgICAgICAg
dm9pZCBkaXNhYmxlTW9uaXRvcmluZ1hIUigpOwotCi0gICAgICAgIHZvaWQgZW5hYmxlUmVzb3Vy
Y2VUcmFja2luZyhpbiBib29sZWFuIGFsd2F5cyk7Ci0gICAgICAgIHZvaWQgZGlzYWJsZVJlc291
cmNlVHJhY2tpbmcoaW4gYm9vbGVhbiBhbHdheXMpOwotICAgICAgICB2b2lkIGdldFJlc291cmNl
Q29udGVudChpbiBsb25nIGNhbGxJZCwgaW4gdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAg
ICAgICAgdm9pZCByZWxvYWRQYWdlKCk7Ci0KLSAgICAgICAgdm9pZCBzdGFydFRpbWVsaW5lUHJv
ZmlsZXIoKTsKLSAgICAgICAgdm9pZCBzdG9wVGltZWxpbmVQcm9maWxlcigpOwotCi0jaWYgZGVm
aW5lZChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFX0pBVkFTQ1JJUFRfREVC
VUdHRVIKLSAgICAgICAgdm9pZCBlbmFibGVEZWJ1Z2dlcihpbiBib29sZWFuIGFsd2F5cyk7Ci0g
ICAgICAgIHZvaWQgZGlzYWJsZURlYnVnZ2VyKGluIGJvb2xlYW4gYWx3YXlzKTsKLQotICAgICAg
ICB2b2lkIHNldEJyZWFrcG9pbnQoaW4gbG9uZyBjYWxsSWQsIGluIERPTVN0cmluZyBzb3VyY2VJ
RCwgaW4gdW5zaWduZWQgbG9uZyBsaW5lTnVtYmVyLCBpbiBib29sZWFuIGVuYWJsZWQsIGluIERP
TVN0cmluZyBjb25kaXRpb24pOwotICAgICAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoaW4gRE9N
U3RyaW5nIHNvdXJjZUlELCBpbiB1bnNpZ25lZCBsb25nIGxpbmVOdW1iZXIpOwotICAgICAgICB2
b2lkIGFjdGl2YXRlQnJlYWtwb2ludHMoKTsKLSAgICAgICAgdm9pZCBkZWFjdGl2YXRlQnJlYWtw
b2ludHMoKTsKLQotICAgICAgICB2b2lkIHBhdXNlKCk7Ci0gICAgICAgIHZvaWQgcmVzdW1lKCk7
Ci0KLSAgICAgICAgdm9pZCBzdGVwT3ZlclN0YXRlbWVudCgpOwotICAgICAgICB2b2lkIHN0ZXBJ
bnRvU3RhdGVtZW50KCk7Ci0gICAgICAgIHZvaWQgc3RlcE91dE9mRnVuY3Rpb24oKTsKLQotICAg
ICAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoaW4gbG9uZyBwYXVzZU9uRXhjZXB0
aW9uc1N0YXRlKTsKLQotICAgICAgICB2b2lkIGVkaXRTY3JpcHRTb3VyY2UoaW4gbG9uZyBjYWxs
SWQsIGluIERPTVN0cmluZyBzb3VyY2VJRCwgaW4gRE9NU3RyaW5nIG5ld0NvbnRlbnQpOwotICAg
ICAgICB2b2lkIGdldFNjcmlwdFNvdXJjZShpbiBsb25nIGNhbGxJZCwgaW4gRE9NU3RyaW5nIHNv
dXJjZUlEKTsKLQotICAgICAgICB2b2lkIGVuYWJsZVByb2ZpbGVyKGluIGJvb2xlYW4gYWx3YXlz
KTsKLSAgICAgICAgdm9pZCBkaXNhYmxlUHJvZmlsZXIoaW4gYm9vbGVhbiBhbHdheXMpOwotCi0g
ICAgICAgIHZvaWQgc3RhcnRQcm9maWxpbmcoKTsKLSAgICAgICAgdm9pZCBzdG9wUHJvZmlsaW5n
KCk7Ci0KLSAgICAgICAgdm9pZCBnZXRQcm9maWxlSGVhZGVycyhpbiBsb25nIGNhbGxJZCk7Ci0g
ICAgICAgIHZvaWQgZ2V0UHJvZmlsZShpbiBsb25nIGNhbGxJZCwgaW4gdW5zaWduZWQgbG9uZyB1
aWQpOwotCi0gICAgICAgIHZvaWQgcmVtb3ZlUHJvZmlsZShpbiB1bnNpZ25lZCBsb25nIHVpZCk7
Ci0gICAgICAgIHZvaWQgY2xlYXJQcm9maWxlcygpOwotCi0gICAgICAgIHZvaWQgdGFrZUhlYXBT
bmFwc2hvdCgpOwotI2VuZGlmCi0gICAgICAgIHZvaWQgc2V0SW5qZWN0ZWRTY3JpcHRTb3VyY2Uo
aW4gRE9NU3RyaW5nIHNjcmlwdFNvdXJjZSk7Ci0gICAgICAgIHZvaWQgZGlzcGF0Y2hPbkluamVj
dGVkU2NyaXB0KGluIGxvbmcgY2FsbElkLCBpbiBsb25nIGluamVjdGVkU2NyaXB0SWQsIGluIERP
TVN0cmluZyBtZXRob2ROYW1lLCBpbiBET01TdHJpbmcgYXJndW1lbnRzLCBpbiBib29sZWFuIGFz
eW5jKTsKLQotICAgICAgICB2b2lkIGFkZFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoaW4gRE9NU3Ry
aW5nIHNjcmlwdFNvdXJjZSk7Ci0gICAgICAgIHZvaWQgcmVtb3ZlQWxsU2NyaXB0c1RvRXZhbHVh
dGVPbkxvYWQoKTsKLQotICAgICAgICB2b2lkIGdldENoaWxkTm9kZXMoaW4gbG9uZyBjYWxsSWQs
IGluIGxvbmcgbm9kZUlkKTsKLSAgICAgICAgdm9pZCBzZXRBdHRyaWJ1dGUoaW4gbG9uZyBjYWxs
SWQsIGluIGxvbmcgZWxlbWVudElkLCBpbiBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIHZh
bHVlKTsKLSAgICAgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoaW4gbG9uZyBjYWxsSWQsIGluIGxv
bmcgZWxlbWVudElkLCBpbiBET01TdHJpbmcgbmFtZSk7Ci0gICAgICAgIHZvaWQgc2V0VGV4dE5v
ZGVWYWx1ZShpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBub2RlSWQsIGluIERPTVN0cmluZyB2YWx1
ZSk7Ci0gICAgICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKGluIGxvbmcgY2FsbElk
LCBpbiBsb25nIG5vZGVJZCk7Ci0gICAgICAgIHZvaWQgY29weU5vZGUoaW4gbG9uZyBub2RlSWQp
OwotICAgICAgICB2b2lkIHJlbW92ZU5vZGUoaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgbm9kZUlk
KTsKLSAgICAgICAgdm9pZCBjaGFuZ2VUYWdOYW1lKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIG5v
ZGVJZCwgaW4gRE9NU3RyaW5nIG5ld1RhZ05hbWUpOwotICAgICAgICB2b2lkIGdldE91dGVySFRN
TChpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBub2RlSWQpOwotICAgICAgICB2b2lkIHNldE91dGVy
SFRNTChpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBub2RlSWQsIGluIERPTVN0cmluZyBvdXRlckhU
TUwpOwotICAgICAgICB2b2lkIGFkZEluc3BlY3RlZE5vZGUoaW4gbG9uZyBub2RlSWQpOwotICAg
ICAgICB2b2lkIHBlcmZvcm1TZWFyY2goaW4gRE9NU3RyaW5nIHF1ZXJ5LCBpbiBib29sZWFuIHJ1
blN5bmNocm9ub3VzbHkpOwotICAgICAgICB2b2lkIHNlYXJjaENhbmNlbGVkKCk7Ci0gICAgICAg
IHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKGluIGxvbmcgY2FsbElkLCBpbiBET01TdHJp
bmcgcGF0aCk7Ci0KLSAgICAgICAgdm9pZCBjbGVhckNvbnNvbGVNZXNzYWdlcyhpbiBsb25nIGNh
bGxJZCk7Ci0KLSAgICAgICAgdm9pZCBoaWdobGlnaHRET01Ob2RlKGluIGxvbmcgbm9kZUlkKTsK
LSAgICAgICAgdm9pZCBoaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwotCi0gICAgICAgIHZvaWQgZ2V0
U3R5bGVzKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIG5vZGVJZCwgaW4gYm9vbGVhbiBhdXRoT25s
eSk7Ci0gICAgICAgIHZvaWQgZ2V0QWxsU3R5bGVzKGluIGxvbmcgY2FsbElkKTsKLSAgICAgICAg
dm9pZCBnZXRJbmxpbmVTdHlsZShpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBub2RlSWQpOwotICAg
ICAgICB2b2lkIGdldENvbXB1dGVkU3R5bGUoaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgbm9kZUlk
KTsKLSAgICAgICAgdm9pZCBnZXRTdHlsZVNoZWV0KGluIGxvbmcgY2FsbElkLCBpbiBsb25nIHN0
eWxlU2hlZXRJZCk7Ci0gICAgICAgIHZvaWQgZ2V0UnVsZVJhbmdlcyhpbiBsb25nIGNhbGxJZCwg
aW4gbG9uZyBzdHlsZVNoZWV0SWQpOwotICAgICAgICB2b2lkIGFwcGx5U3R5bGVUZXh0KGluIGxv
bmcgY2FsbElkLCBpbiBsb25nIHN0eWxlSWQsIGluIERPTVN0cmluZyBzdHlsZVRleHQsIGluIERP
TVN0cmluZyBwcm9wZXJ0eU5hbWUpOwotICAgICAgICB2b2lkIHNldFN0eWxlVGV4dChpbiBsb25n
IGNhbGxJZCwgaW4gbG9uZyBzdHlsZUlkLCBpbiBET01TdHJpbmcgc3R5bGVUZXh0KTsKLSAgICAg
ICAgdm9pZCBzZXRTdHlsZVByb3BlcnR5KGluIGxvbmcgY2FsbElkLCBpbiBsb25nIHN0eWxlSWQs
IGluIERPTVN0cmluZyBuYW1lLCBpbiBET01TdHJpbmcgdmFsdWUpOwotICAgICAgICB2b2lkIHRv
Z2dsZVN0eWxlRW5hYmxlZChpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBzdHlsZUlkLCBpbiBET01T
dHJpbmcgcHJvcGVydHlOYW1lLCBpbiBib29sZWFuIGRpc2FibGVkKTsKLSAgICAgICAgdm9pZCBz
ZXRSdWxlU2VsZWN0b3IoaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgcnVsZUlkLCBpbiBET01TdHJp
bmcgc2VsZWN0b3IsIGluIGxvbmcgc2VsZWN0ZWROb2RlSWQpOwotICAgICAgICB2b2lkIGFkZFJ1
bGUoaW4gbG9uZyBjYWxsSWQsIGluIERPTVN0cmluZyBzZWxlY3RvciwgaW4gbG9uZyBzZWxlY3Rl
ZE5vZGVJZCk7Ci0KLSAgICAgICAgdm9pZCBnZXRDb29raWVzKGluIGxvbmcgY2FsbElkKTsKLSAg
ICAgICAgdm9pZCBkZWxldGVDb29raWUoaW4gRE9NU3RyaW5nIGNvb2tpZU5hbWUsIGluIERPTVN0
cmluZyBkb21haW4pOwotCi0jaWYgZGVmaW5lZChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJ
T05TKQotICAgICAgICB2b2lkIGdldEFwcGxpY2F0aW9uQ2FjaGVzKGluIGxvbmcgY2FsbElkKTsK
LSNlbmRpZgotCi0gICAgICAgIHZvaWQgcmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cChpbiBsb25n
IGluamVjdGVkU2NyaXB0SWQsIGluIERPTVN0cmluZyBvYmplY3RHcm91cCk7Ci0gICAgICAgIHZv
aWQgZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChpbiBsb25nIGNhbGxJZCwgaW4gRE9NU3Ry
aW5nIGpzb25SZXN1bHQpOwotCi0jaWYgZGVmaW5lZChFTkFCTEVfREFUQUJBU0UpICYmIEVOQUJM
RV9EQVRBQkFTRQotICAgICAgICB2b2lkIGdldERhdGFiYXNlVGFibGVOYW1lcyhpbiBsb25nIGNh
bGxJZCwgaW4gbG9uZyBkYXRhYmFzZUlkKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChFTkFCTEVf
RE9NX1NUT1JBR0UpICYmIEVOQUJMRV9ET01fU1RPUkFHRQotICAgICAgICB2b2lkIGdldERPTVN0
b3JhZ2VFbnRyaWVzKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIHN0b3JhZ2VJZCk7Ci0gICAgICAg
IHZvaWQgc2V0RE9NU3RvcmFnZUl0ZW0oaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgc3RvcmFnZUlk
LCBpbiBET01TdHJpbmcga2V5LCBpbiBET01TdHJpbmcgdmFsdWUpOwotICAgICAgICB2b2lkIHJl
bW92ZURPTVN0b3JhZ2VJdGVtKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIHN0b3JhZ2VJZCwgaW4g
RE9NU3RyaW5nIGtleSk7Ci0jZW5kaWYKLSAgICB9OwotfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBlMjljN2FlLi5kMTY4YjAyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMjIwNCw2ICsyMjA0LDE0IEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVsb2FkUGFnZSgpCiAgICAgbV9pbnNwZWN0ZWRQYWdl
LT5tYWluRnJhbWUoKS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVSZWZyZXNoKHRydWUp
OwogfQogCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoT25CYWNrZW5kKGxvbmcg
Y2FsbElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgU3RyaW5nIGV4Y2VwdGlvbjsK
KyAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlLCAmZXhj
ZXB0aW9uKTsKKyAgICBpZiAobV9yZW1vdGVGcm9udGVuZC5nZXQoKSkKKyAgICAgICAgbV9yZW1v
dGVGcm9udGVuZC0+ZGlkRGlzcGF0Y2goY2FsbElkLCBleGNlcHRpb24pOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDE3NmRkMTEuLmU1ODEyYzcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTEyMSw4ICsxMjEsOCBAQCBw
dWJsaWM6CiAgICAgfkluc3BlY3RvckNvbnRyb2xsZXIoKTsKIAogICAgIEluc3BlY3RvckJhY2tl
bmQqIGluc3BlY3RvckJhY2tlbmQoKSB7IHJldHVybiBtX2luc3BlY3RvckJhY2tlbmQuZ2V0KCk7
IH0KLSAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogaW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIoKSB7IHJldHVybiBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiAg
ICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBpbmplY3RlZFNjcmlwdEhvc3QoKSB7IHJldHVybiBtX2lu
amVjdGVkU2NyaXB0SG9zdC5nZXQoKTsgfQorICAgIHZvaWQgZGlzcGF0Y2hPbkJhY2tlbmQobG9u
ZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKICAgICB2b2lkIGluc3BlY3RlZFBh
Z2VEZXN0cm95ZWQoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmgKaW5kZXggNTE1Mzg4Yy4uZmMxYjhjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudC5oCkBAIC01OSw2ICs1OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgY2hhbmdlQXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpID0gMDsKKwor
ICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChsb25nIGNhbGxJZCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCmlu
ZGV4IGI5ODI0NTkuLmI4ZWVhMTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAi
RmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kSG9zdC5oIgpAQCAtNzIsNyArNzMsNiBAQCB2b2lkIEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OndpbmRvd09iamVjdENsZWFyZWQoKQogewogICAgIC8v
IEZJWE1FOiBkb24ndCBrZWVwIHJlZmVyZW5jZSB0byB0aGUgc2NyaXB0IHN0YXRlCiAgICAgbV9m
cm9udGVuZFNjcmlwdFN0YXRlID0gc2NyaXB0U3RhdGVGcm9tUGFnZShkZWJ1Z2dlcldvcmxkKCks
IG1fZnJvbnRlbmRQYWdlKTsKLSAgICBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChtX2Zyb250ZW5k
U2NyaXB0U3RhdGUsICJJbnNwZWN0b3JCYWNrZW5kIiwgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5p
bnNwZWN0b3JCYWNrZW5kKCkpOwogICAgIG1fZnJvbnRlbmRIb3N0ID0gSW5zcGVjdG9yRnJvbnRl
bmRIb3N0OjpjcmVhdGUodGhpcywgbV9mcm9udGVuZFBhZ2UpOwogICAgIFNjcmlwdEdsb2JhbE9i
amVjdDo6c2V0KG1fZnJvbnRlbmRTY3JpcHRTdGF0ZSwgIkluc3BlY3RvckZyb250ZW5kSG9zdCIs
IG1fZnJvbnRlbmRIb3N0LmdldCgpKTsKIH0KQEAgLTE1OSw3ICsxNTksMTIgQEAgdW5zaWduZWQg
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y29uc3RyYWluZWRBdHRhY2hlZFdpbmRvd0hl
aWdodCh1bnNpZ25lZAogICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAgICAgcmV0dXJuIHJvdW5k
ZihtYXgobWluaW11bUF0dGFjaGVkSGVpZ2h0LCBtaW48ZmxvYXQ+KHByZWZlcnJlZEhlaWdodCwg
dG90YWxXaW5kb3dIZWlnaHQgKiBtYXhpbXVtQXR0YWNoZWRIZWlnaHRSYXRpbykpKTsKIH0KLSAg
ICAKKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpzZW5kTWVzc2FnZVRvQmFj
a2VuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIG1faW5zcGVj
dG9yQ29udHJvbGxlci0+ZGlzcGF0Y2hPbkJhY2tlbmQoY2FsbElkLCBtZXNzYWdlKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAppbmRleCBjZTY2MWZlLi5kNjI5NGIyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5o
CkBAIC01OSw2ICs1OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93
KCkgPSAwOwogICAgIGJvb2wgY2FuQXR0YWNoV2luZG93KCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQg
c2VuZE1lc3NhZ2VUb0JhY2tlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7
CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQo
dW5zaWduZWQpID0gMDsKICAgICB2b2lkIHNldEF0dGFjaGVkV2luZG93KGJvb2wpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXggNzBmYzNhZC4uMzQw
YmQ4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBA
IC0yMDcsNiArMjA3LDExIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpjb3B5VGV4dChj
b25zdCBTdHJpbmcmIHRleHQpCiAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+
d3JpdGVQbGFpblRleHQodGV4dCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpz
ZW5kTWVzc2FnZVRvQmFja2VuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQor
eworICAgIG1fY2xpZW50LT5zZW5kTWVzc2FnZVRvQmFja2VuZChjYWxsSWQsIG1lc3NhZ2UpOwor
fQorCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9z
dDo6c2hvd0NvbnRleHRNZW51KEV2ZW50KiBldmVudCwgY29uc3QgVmVjdG9yPENvbnRleHRNZW51
SXRlbSo+JiBpdGVtcykKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmgKaW5kZXggNGQzZTBkMS4uZDk0ZDI4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmgKQEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbGVk
IGZyb20gW0N1c3RvbV0gaW1wbGVtZW50YXRpb25zLgogICAgIHZvaWQgc2hvd0NvbnRleHRNZW51
KEV2ZW50KiwgY29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRlbSo+JiBpdGVtcyk7CisgICAgdm9p
ZCBzZW5kTWVzc2FnZVRvQmFja2VuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KTsKIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCmluZGV4IDExMzlhMWMuLjIyMzQ1YTcgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbApAQCAtNTAsNSAr
NTAsNiBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtDdXN0b21dIERPTVN0cmluZyBwbGF0Zm9y
bSgpOwogICAgICAgICBbQ3VzdG9tXSBET01TdHJpbmcgcG9ydCgpOwogICAgICAgICBbQ3VzdG9t
XSB2b2lkIHNob3dDb250ZXh0TWVudShpbiBNb3VzZUV2ZW50IGV2ZW50LCBpbiBET01PYmplY3Qg
aXRlbXMpOworICAgICAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGluIGxvbmcgY2FsbElk
LCBpbiBET01TdHJpbmcgbWVzc2FnZSk7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9DYWxsYmFjay5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9DYWxsYmFjay5qcwppbmRleCA4YWU3Zjk1Li4yYmQwM2FkIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbGJhY2suanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NhbGxiYWNrLmpzCkBAIC01NCwzICs1NCw0IEBAIFdlYkluc3BlY3Rvci5D
YWxsYmFjay5wcm90b3R5cGUgPSB7CiBXZWJJbnNwZWN0b3IuQ2FsbGJhY2suX0lOU1RBTkNFID0g
bmV3IFdlYkluc3BlY3Rvci5DYWxsYmFjaygpOwogV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAg
PSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2suX0lOU1RBTkNFLndyYXAuYmluZChXZWJJbnNwZWN0b3Iu
Q2FsbGJhY2suX0lOU1RBTkNFKTsKIFdlYkluc3BlY3Rvci5DYWxsYmFjay5wcm9jZXNzQ2FsbGJh
Y2sgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2suX0lOU1RBTkNFLnByb2Nlc3NDYWxsYmFjay5iaW5k
KFdlYkluc3BlY3Rvci5DYWxsYmFjay5fSU5TVEFOQ0UpOworV2ViSW5zcGVjdG9yLmRpZERpc3Bh
dGNoID0gV2ViSW5zcGVjdG9yLkNhbGxiYWNrLnByb2Nlc3NDYWxsYmFjazsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcwppbmRleCA4
NTdlMDI2Li42YjA2MzA3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
SW5zcGVjdG9yQmFja2VuZFN0dWIuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0luc3BlY3RvckJhY2tlbmRTdHViLmpzCkBAIC0zMiwyNjMgKzMyLDEwMCBAQCBpZiAoIXdpbmRv
dy5JbnNwZWN0b3JCYWNrZW5kKSB7CiAKIFdlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1
YiA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0aGlzLl9hdHRhY2hlZFdpbmRvd0hlaWdodCA9IDA7Ci0g
ICAgdGhpcy5fdGltZWxpbmVFbmFibGVkID0gZmFsc2U7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxl
Z2F0ZSgiYWRkSW5zcGVjdGVkTm9kZSIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImFk
ZFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJj
aGFuZ2VUYWdOYW1lIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiY2xlYXJDb25zb2xl
TWVzc2FnZXMiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJjb3B5Tm9kZSIpOworICAg
IHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImRlbGV0ZUNvb2tpZSIpOworICAgIHRoaXMuX3JlZ2lz
dGVyRGVsZWdhdGUoImRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQiKTsKKyAgICB0aGlzLl9y
ZWdpc3RlckRlbGVnYXRlKCJkaXNhYmxlTW9uaXRvcmluZ1hIUiIpOworICAgIHRoaXMuX3JlZ2lz
dGVyRGVsZWdhdGUoImRpc2FibGVSZXNvdXJjZVRyYWNraW5nIik7CisgICAgdGhpcy5fcmVnaXN0
ZXJEZWxlZ2F0ZSgiZGlzYWJsZVNlYXJjaGluZ0Zvck5vZGUiKTsKKyAgICB0aGlzLl9yZWdpc3Rl
ckRlbGVnYXRlKCJkaXNhYmxlVGltZWxpbmUiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRl
KCJkaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRl
KCJlbmFibGVNb25pdG9yaW5nWEhSIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiZW5h
YmxlUmVzb3VyY2VUcmFja2luZyIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImVuYWJs
ZVNlYXJjaGluZ0Zvck5vZGUiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJlbmFibGVU
aW1lbGluZSIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImdldENoaWxkTm9kZXMiKTsK
KyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJnZXRDb29raWVzIik7CisgICAgdGhpcy5fcmVn
aXN0ZXJEZWxlZ2F0ZSgiZ2V0RGF0YWJhc2VUYWJsZU5hbWVzIik7CisgICAgdGhpcy5fcmVnaXN0
ZXJEZWxlZ2F0ZSgiZ2V0RE9NU3RvcmFnZUVudHJpZXMiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRl
bGVnYXRlKCJnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRl
bGVnYXRlKCJnZXRPdXRlckhUTUwiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJnZXRQ
cm9maWxlIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiZ2V0UHJvZmlsZUhlYWRlcnMi
KTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJyZW1vdmVQcm9maWxlIik7CisgICAgdGhp
cy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiY2xlYXJQcm9maWxlcyIpOworICAgIHRoaXMuX3JlZ2lzdGVy
RGVsZWdhdGUoImdldFJlc291cmNlQ29udGVudCIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdh
dGUoImhpZ2hsaWdodERPTU5vZGUiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJoaWRl
RE9NTm9kZUhpZ2hsaWdodCIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInBlcmZvcm1T
ZWFyY2giKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJwdXNoTm9kZUJ5UGF0aFRvRnJv
bnRlbmQiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJyZWxlYXNlV3JhcHBlck9iamVj
dEdyb3VwIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgicmVtb3ZlQWxsU2NyaXB0c1Rv
RXZhbHVhdGVPbkxvYWQiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJyZWxvYWRQYWdl
Iik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgicmVtb3ZlQXR0cmlidXRlIik7CisgICAg
dGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgicmVtb3ZlRE9NU3RvcmFnZUl0ZW0iKTsKKyAgICB0aGlz
Ll9yZWdpc3RlckRlbGVnYXRlKCJyZW1vdmVOb2RlIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxl
Z2F0ZSgic2F2ZUFwcGxpY2F0aW9uU2V0dGluZ3MiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVn
YXRlKCJzYXZlU2Vzc2lvblNldHRpbmdzIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgi
c2VhcmNoQ2FuY2VsZWQiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJzZXRBdHRyaWJ1
dGUiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJzZXRET01TdG9yYWdlSXRlbSIpOwor
ICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInNldEluamVjdGVkU2NyaXB0U291cmNlIik7Cisg
ICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic2V0T3V0ZXJIVE1MIik7CisgICAgdGhpcy5fcmVn
aXN0ZXJEZWxlZ2F0ZSgic2V0VGV4dE5vZGVWYWx1ZSIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVs
ZWdhdGUoInN0YXJ0UHJvZmlsaW5nIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic3Rh
cnRUaW1lbGluZVByb2ZpbGVyIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic3RvcFBy
b2ZpbGluZyIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInN0b3BUaW1lbGluZVByb2Zp
bGVyIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic3RvcmVMYXN0QWN0aXZlUGFuZWwi
KTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJ0YWtlSGVhcFNuYXBzaG90Iik7CisKKyAg
ICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJnZXRBbGxTdHlsZXMiKTsKKyAgICB0aGlzLl9yZWdp
c3RlckRlbGVnYXRlKCJnZXRTdHlsZXMiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJn
ZXRDb21wdXRlZFN0eWxlIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiZ2V0SW5saW5l
U3R5bGUiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJnZXRTdHlsZVNoZWV0Iik7Cisg
ICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiZ2V0UnVsZVJhbmdlcyIpOworICAgIHRoaXMuX3Jl
Z2lzdGVyRGVsZWdhdGUoImFwcGx5U3R5bGVUZXh0Iik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxl
Z2F0ZSgic2V0U3R5bGVUZXh0Iik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic2V0U3R5
bGVQcm9wZXJ0eSIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInRvZ2dsZVN0eWxlRW5h
YmxlZCIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInNldFJ1bGVTZWxlY3RvciIpOwor
ICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImFkZFJ1bGUiKTsKKworICAgIHRoaXMuX3JlZ2lz
dGVyRGVsZWdhdGUoImRpc2FibGVEZWJ1Z2dlciIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdh
dGUoImVkaXRTY3JpcHRTb3VyY2UiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJnZXRT
Y3JpcHRTb3VyY2UiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJlbmFibGVEZWJ1Z2dl
ciIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInNldEJyZWFrcG9pbnQiKTsKKyAgICB0
aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJyZW1vdmVCcmVha3BvaW50Iik7CisgICAgdGhpcy5fcmVn
aXN0ZXJEZWxlZ2F0ZSgiYWN0aXZhdGVCcmVha3BvaW50cyIpOworICAgIHRoaXMuX3JlZ2lzdGVy
RGVsZWdhdGUoImRlYWN0aXZhdGVCcmVha3BvaW50cyIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVs
ZWdhdGUoInJlc3VtZSIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInN0ZXBJbnRvU3Rh
dGVtZW50Iik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic3RlcE91dE9mRnVuY3Rpb24i
KTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJzdGVwT3ZlclN0YXRlbWVudCIpOworICAg
IHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUiKTsKIH0K
IAogV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZSA9IHsKLSAgICB3
cmFwQ2FsbGJhY2s6IGZ1bmN0aW9uKGZ1bmMpCisgICAgX3JlZ2lzdGVyRGVsZWdhdGU6IGZ1bmN0
aW9uKG1ldGhvZE5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gZnVuYzsKKyAgICAgICAgdGhp
c1ttZXRob2ROYW1lXSA9IHRoaXMuc2VuZE1lc3NhZ2VUb0JhY2tlbmQuYmluZCh0aGlzLCBtZXRo
b2ROYW1lKTsKICAgICB9LAogCi0gICAgY2xvc2VXaW5kb3c6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIHRoaXMuX3dpbmRvd1Zpc2libGUgPSBmYWxzZTsKLSAgICB9LAotCi0gICAgYXR0YWNo
OiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBkZXRhY2g6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgfSwKLQotICAgIHN0b3JlTGFzdEFjdGl2ZVBhbmVsOiBmdW5jdGlvbihwYW5lbCkK
LSAgICB7Ci0gICAgfSwKLQotICAgIGNsZWFyQ29uc29sZU1lc3NhZ2VzOiBmdW5jdGlvbigpCi0g
ICAgewotICAgIH0sCi0KLSAgICBnZXRPdXRlckhUTUw6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
fSwKLQotICAgIHNldE91dGVySFRNTDogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAg
YWRkSW5zcGVjdGVkTm9kZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAgc2VhcmNo
OiBmdW5jdGlvbihzb3VyY2VSb3csIHF1ZXJ5KQotICAgIHsKLSAgICB9LAotCi0gICAgbW92ZUJ5
VW5yZXN0cmljdGVkOiBmdW5jdGlvbih4LCB5KQotICAgIHsKLSAgICB9LAotCi0gICAgZ2V0UmVz
b3VyY2VDb250ZW50OiBmdW5jdGlvbihjYWxsSWQsIGlkZW50aWZpZXIpCi0gICAgewotICAgICAg
ICBXZWJJbnNwZWN0b3IuZGlkR2V0UmVzb3VyY2VDb250ZW50KGNhbGxJZCwgIiIpOwotICAgIH0s
Ci0KLSAgICBoaWdobGlnaHRET01Ob2RlOiBmdW5jdGlvbihub2RlKQotICAgIHsKLSAgICB9LAot
Ci0gICAgaGlkZURPTU5vZGVIaWdobGlnaHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQot
ICAgIGluc3BlY3RlZFdpbmRvdzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHdp
bmRvdzsKLSAgICB9LAotCi0gICAgbG9hZGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0K
LSAgICBsb2NhbGl6ZWRTdHJpbmdzVVJMOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1
cm4gdW5kZWZpbmVkOwotICAgIH0sCi0KLSAgICB3aW5kb3dVbmxvYWRpbmc6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCi0gICAgaGlkZGVuUGFuZWxz
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gIiI7Ci0gICAgfSwKLQotICAgIGVu
YWJsZVJlc291cmNlVHJhY2tpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5yZXNvdXJjZVRyYWNraW5nV2FzRW5hYmxlZCgpOwotICAgIH0sCi0KLSAgICBkaXNhYmxl
UmVzb3VyY2VUcmFja2luZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9y
LnJlc291cmNlVHJhY2tpbmdXYXNEaXNhYmxlZCgpOwotICAgIH0sCi0KLQotICAgIGVuYWJsZVNl
YXJjaGluZ0Zvck5vZGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5z
ZWFyY2hpbmdGb3JOb2RlV2FzRW5hYmxlZCgpOwotICAgIH0sCi0KLSAgICBkaXNhYmxlU2VhcmNo
aW5nRm9yTm9kZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNlYXJj
aGluZ0Zvck5vZGVXYXNEaXNhYmxlZCgpOwotICAgIH0sCi0KLSAgICBlbmFibGVNb25pdG9yaW5n
WEhSOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IubW9uaXRvcmluZ1hI
Uldhc0VuYWJsZWQoKTsKLSAgICB9LAotCi0gICAgZGlzYWJsZU1vbml0b3JpbmdYSFI6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5tb25pdG9yaW5nWEhSV2FzRGlzYWJs
ZWQoKTsKLSAgICB9LAotCi0gICAgcmVsb2FkUGFnZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9
LAotCi0gICAgZW5hYmxlRGVidWdnZXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIFdlYklu
c3BlY3Rvci5kZWJ1Z2dlcldhc0VuYWJsZWQoKTsKLSAgICB9LAotCi0gICAgZGlzYWJsZURlYnVn
Z2VyOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJXYXNE
aXNhYmxlZCgpOwotICAgIH0sCi0KLSAgICBzZXRCcmVha3BvaW50OiBmdW5jdGlvbihjYWxsSWQs
IHNvdXJjZUlELCBsaW5lLCBlbmFibGVkLCBjb25kaXRpb24pCi0gICAgewotICAgICAgICBXZWJJ
bnNwZWN0b3IuZGlkU2V0QnJlYWtwb2ludChjYWxsSWQsIHRydWUsIGxpbmUpOwotICAgIH0sCi0K
LSAgICByZW1vdmVCcmVha3BvaW50OiBmdW5jdGlvbihzb3VyY2VJRCwgbGluZSkKLSAgICB7Ci0g
ICAgfSwKLQotICAgIGFjdGl2YXRlQnJlYWtwb2ludHM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHRoaXMuX2JyZWFrcG9pbnRzQWN0aXZhdGVkID0gdHJ1ZTsKLSAgICB9LAotCi0gICAgZGVh
Y3RpdmF0ZUJyZWFrcG9pbnRzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9icmVh
a3BvaW50c0FjdGl2YXRlZCA9IGZhbHNlOwotICAgIH0sCi0KLSAgICBwYXVzZTogZnVuY3Rpb24o
KQotICAgIHsKLSAgICB9LAotCi0gICAgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZTogZnVuY3Rp
b24odmFsdWUpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IudXBkYXRlUGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZSh2YWx1ZSk7Ci0gICAgfSwKLQotICAgIGVkaXRTY3JpcHRTb3VyY2U6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5kaWRFZGl0U2NyaXB0U291cmNlKGNh
bGxJZCwgZmFsc2UpOwotICAgIH0sCi0KLSAgICBnZXRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKGNh
bGxJZCwgc291cmNlSUQpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuZGlkR2V0U2NyaXB0
U291cmNlKGNhbGxJZCwgbnVsbCk7Ci0gICAgfSwKLQotICAgIHJlc3VtZTogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICB9LAotCi0gICAgZW5hYmxlUHJvZmlsZXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5wcm9maWxlcldhc0VuYWJsZWQoKTsKLSAgICB9LAotCi0gICAg
ZGlzYWJsZVByb2ZpbGVyOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3Iu
cHJvZmlsZXJXYXNEaXNhYmxlZCgpOwotICAgIH0sCi0KLSAgICBzdGFydFByb2ZpbGluZzogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAgc3RvcFByb2ZpbGluZzogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICB9LAotCi0gICAgZ2V0UHJvZmlsZUhlYWRlcnM6IGZ1bmN0aW9uKGNhbGxJZCkK
LSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5kaWRHZXRQcm9maWxlSGVhZGVycyhjYWxsSWQs
IFtdKTsKLSAgICB9LAotCi0gICAgZ2V0UHJvZmlsZTogZnVuY3Rpb24oY2FsbElkLCB1aWQpCi0g
ICAgewotICAgIH0sCi0KLSAgICB0YWtlSGVhcFNuYXBzaG90OiBmdW5jdGlvbigpCi0gICAgewot
ICAgIH0sCi0KLSAgICBkYXRhYmFzZVRhYmxlTmFtZXM6IGZ1bmN0aW9uKGRhdGFiYXNlKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIFtdOwotICAgIH0sCi0KLSAgICBzdGVwSW50b1N0YXRlbWVudDog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAgc3RlcE91dE9mRnVuY3Rpb246IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIHN0ZXBPdmVyU3RhdGVtZW50OiBmdW5jdGlvbigp
Ci0gICAgewotICAgIH0sCi0KLSAgICBzYXZlQXBwbGljYXRpb25TZXR0aW5nczogZnVuY3Rpb24o
KQotICAgIHsKLSAgICB9LAotCi0gICAgc2F2ZVNlc3Npb25TZXR0aW5nczogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICB9LAotCi0gICAgZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0OiBmdW5jdGlvbigp
Ci0gICAgewotICAgIH0sCi0KLSAgICByZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwOiBmdW5jdGlv
bigpCi0gICAgewotICAgIH0sCi0KLSAgICBzZXRJbmplY3RlZFNjcmlwdFNvdXJjZTogZnVuY3Rp
b24oKQotICAgIHsKLSAgICB9LAotICAgIAotICAgIGFkZFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQ6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIHJlbW92ZUFsbFNjcmlwdHNUb0V2YWx1
YXRlT25Mb2FkOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBwZXJmb3JtU2VhcmNo
OiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBzZWFyY2hDYW5jZWxlZDogZnVuY3Rp
b24oKQorICAgIHNlbmRNZXNzYWdlVG9CYWNrZW5kOiBmdW5jdGlvbigpCiAgICAgeworICAgICAg
ICB2YXIgbWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxs
KGFyZ3VtZW50cykpOworICAgICAgICB2YXIgY2FsbGJhY2tJZCA9IFdlYkluc3BlY3Rvci5DYWxs
YmFjay53cmFwKGZ1bmN0aW9uKCl7fSk7CisgICAgICAgIGlmICgicGFnZSIgaW4gV2ViSW5zcGVj
dG9yLl9wYXJhbXNPYmplY3QpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc29ja2V0LnNlbmQo
Y2FsbGJhY2tJZCArICIgIiArIG1lc3NhZ2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBJ
bnNwZWN0b3JGcm9udGVuZEhvc3Quc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY2FsbGJhY2tJZCwgbWVz
c2FnZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwMzA5OTUyLi4yNzczNDM5IDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wNy0yNiAgSWx5YSBUaWtob25vdnNreSAg
PGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBDdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIG1l
c3NhZ2UgYmFzZWQgaW5zcGVjdG9yCisgICAgICAgIHRyYW5zcG9ydCBnZW5lcmF0ZWQgYnkgQ29k
ZUdlbmVyYXRvckluc3BlY3RvciBzaG91bGQgYmUgdXBzdHJlYW1lZAorICAgICAgICBmcm9tIFdl
YktpdC9jaHJvbWl1bSB0byBXZWJDb3JlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDI5ODMKKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAg
ICAqIHNyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGw6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKToKKyAg
ICAgICAgKiBzcmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmg6CisgICAgICAgICogc3Jj
L1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNB
Z2VudEltcGw6OmRpc3BhdGNoT25JbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OmluaXREZXZUb29sc0FnZW50SG9zdCk6CisgICAgICAg
ICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmg6CisgICAgICAgICogc3JjL2pzL0luc3BlY3Rv
ckNvbnRyb2xsZXJJbXBsLmpzOiBSZW1vdmVkLgorCiAyMDEwLTA3LTI2ICBTYXRpc2ggU2FtcGF0
aCAgPHNhdGlzaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU3RldmUgQmxv
Y2suCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggN2Q3YjE5Yy4uYjQ1ZTNlNyAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
aQpAQCAtMzMsNyArMzMsNiBAQAogICAgICAgICAjIExpc3Qgb2YgRGV2VG9vbHMgc291cmNlIGZp
bGVzLCBvcmRlcmVkIGJ5IGRlcGVuZGVuY2llcy4gSXQgaXMgdXNlZCBib3RoCiAgICAgICAgICMg
Zm9yIGNvcHlpbmcgdGhlbSB0byByZXNvdXJjZSBkaXIsIGFuZCBmb3IgZ2VuZXJhdGluZyAnZGV2
dG9vbHMuaHRtbCcgZmlsZS4KICAgICAgICAgJ2RldnRvb2xzX2pzX2ZpbGVzJzogWwotICAgICAg
ICAgICAgJ3NyYy9qcy9JbnNwZWN0b3JDb250cm9sbGVySW1wbC5qcycsCiAgICAgICAgICAgICAn
c3JjL2pzL1Byb2ZpbGVyQWdlbnQuanMnLAogICAgICAgICAgICAgJ3NyYy9qcy9Qcm9maWxlclBy
b2Nlc3Nvci5qcycsCiAgICAgICAgICAgICAnc3JjL2pzL0hlYXBQcm9maWxlclBhbmVsLmpzJywK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJ
bXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBs
LmNwcAppbmRleCA3M2NlZGZhLi4yMTM4MWEzIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuY3BwCkBAIC0xMjQsNCArMTI0LDE2IEBA
IHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNv
bnN0IFN0cmluZyYgdXJsKQogICAgIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1l
bnQoKS0+c2V0VGl0bGUoIkRldmVsb3BlciBUb29scyAtICIgKyB1cmwpOwogfQogCit2b2lkIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQobG9uZyBjYWxs
SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBXZWJEZXZUb29sc01lc3NhZ2VEYXRh
IG1lc3NhZ2VEYXRhOworICAgIG1lc3NhZ2VEYXRhLmNsYXNzTmFtZSA9ICJUb29sc0FnZW50IjsK
KyAgICBtZXNzYWdlRGF0YS5tZXRob2ROYW1lID0gImRpc3BhdGNoT25JbnNwZWN0b3JDb250cm9s
bGVyIjsKKyAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBhcmdzKChzaXplX3QpMik7CisgICAgYXJn
c1swXSA9IFN0cmluZzo6bnVtYmVyKGNhbGxJZCk7CisgICAgYXJnc1sxXSA9IG1lc3NhZ2U7Cisg
ICAgbWVzc2FnZURhdGEuYXJndW1lbnRzLnN3YXAoYXJncyk7CisgICAgbV9jbGllbnQtPnNlbmRN
ZXNzYWdlVG9BZ2VudChtZXNzYWdlRGF0YSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudElt
cGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmgK
aW5kZXggZjg2OWFjMy4uYmFlNDZjMyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9J
bnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbC5oCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlN0cmlu
ZyYpOwogCisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGxvbmcgY2FsbElk
LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UGFnZSog
bV9mcm9udGVuZFBhZ2U7CiAgICAgV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudCogbV9jbGllbnQ7
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNw
cCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCmluZGV4IDNk
NzllMGMuLjYxM2NmODMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9v
bHNBZ2VudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2Vu
dEltcGwuY3BwCkBAIC01NSw3ICs1NSw2IEBACiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNp
bmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUg
IlY4SW5zcGVjdG9yQmFja2VuZC5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJW
OFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2UuaCIKQEAgLTkzLDcgKzkyLDYg
QEAgdXNpbmcgV2ViQ29yZTo6U2NyaXB0U3RhdGU7CiB1c2luZyBXZWJDb3JlOjpTY3JpcHRWYWx1
ZTsKIHVzaW5nIFdlYkNvcmU6OlN0cmluZzsKIHVzaW5nIFdlYkNvcmU6OlY4RE9NV3JhcHBlcjsK
LXVzaW5nIFdlYkNvcmU6OlY4SW5zcGVjdG9yQmFja2VuZDsKIHVzaW5nIFdlYkNvcmU6OlY4UHJv
eHk7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzExLDkgKzMwOSw3IEBAIHZvaWQgV2ViRGV2
VG9vbHNBZ2VudEltcGw6OmZvcmNlUmVwYWludCgpCiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudElt
cGw6OmRpc3BhdGNoT25JbnNwZWN0b3JDb250cm9sbGVyKGludCBjYWxsSWQsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKLSAgICBTdHJpbmcgZXhjZXB0aW9uOwotICAgIGluc3BlY3RvckNvbnRy
b2xsZXIoKS0+aW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIoKS0+ZGlzcGF0Y2gobWVzc2FnZSwg
JmV4Y2VwdGlvbik7Ci0gICAgbV90b29sc0FnZW50RGVsZWdhdGVTdHViLT5kaWREaXNwYXRjaE9u
KGNhbGxJZCwgIiIsIGV4Y2VwdGlvbik7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNw
YXRjaE9uQmFja2VuZChjYWxsSWQsIG1lc3NhZ2UpOwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdl
bnRJbXBsOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgV2ViRGV2VG9vbHNNZXNz
YWdlRGF0YSYgZGF0YSkKQEAgLTM3NSwzOCArMzcxLDYgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50
SW1wbDo6aW5pdERldlRvb2xzQWdlbnRIb3N0KCkKICAgICAgICAgImRpc3BhdGNoIiwKICAgICAg
ICAgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmpzRGlzcGF0Y2hPbkNsaWVudCk7CiAgICAgZGV2dG9v
bHNBZ2VudEhvc3QuYnVpbGQoKTsKLQotICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICB2
ODo6Q29udGV4dDo6U2NvcGUgdXRpbGl0eVNjb3BlKG1fdXRpbGl0eUNvbnRleHQpOwotICAgIC8v
IENhbGwgY3VzdG9tIGNvZGUgdG8gY3JlYXRlIGluc3BlY3RvciBiYWNrZW5kIHdyYXBwZXIgaW4g
dGhlIHV0aWxpdHkgY29udGV4dAotICAgIC8vIGluc3RlYWQgb2YgY2FsbGluZyBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRUb1Y4T2JqZWN0IHRoYXQgd291bGQgY3JlYXRlIHRoZQotICAgIC8vIHdyYXBw
ZXIgaW4gdGhlIFBhZ2UgbWFpbiBmcmFtZSBjb250ZXh0LgotICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gYmFja2VuZFdyYXBwZXIgPSBjcmVhdGVJbnNwZWN0b3JCYWNrZW5kVjhXcmFwcGVyKCk7
Ci0gICAgaWYgKGJhY2tlbmRXcmFwcGVyLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IG1fdXRpbGl0eUNvbnRleHQtPkdsb2JhbCgpLT5TZXQodjg6OlN0cmluZzo6TmV3KCJJbnNwZWN0
b3JCYWNrZW5kIiksIGJhY2tlbmRXcmFwcGVyKTsKLX0KLQotdjg6OkxvY2FsPHY4OjpPYmplY3Q+
IFdlYkRldlRvb2xzQWdlbnRJbXBsOjpjcmVhdGVJbnNwZWN0b3JCYWNrZW5kVjhXcmFwcGVyKCkK
LXsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSBWOEluc3BlY3RvckJh
Y2tlbmQ6OkdldFRlbXBsYXRlKCktPkdldEZ1bmN0aW9uKCk7Ci0gICAgaWYgKGZ1bmN0aW9uLklz
RW1wdHkoKSkgewotICAgICAgICAvLyBSZXR1cm4gaWYgYWxsb2NhdGlvbiBmYWlsZWQuCi0gICAg
ICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKLSAgICB9Ci0gICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IGluc3RhbmNlID0gU2FmZUFsbG9jYXRpb246Om5ld0luc3RhbmNlKGZ1bmN0
aW9uKTsKLSAgICBpZiAoaW5zdGFuY2UuSXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIEF2b2lkIHNl
dHRpbmcgdGhlIHdyYXBwZXIgaWYgYWxsb2NhdGlvbiBmYWlsZWQuCi0gICAgICAgIHJldHVybiB2
ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKLSAgICB9Ci0gICAgSW5zcGVjdG9yQmFja2VuZCogYmFj
a2VuZCA9IG1fd2ViVmlld0ltcGwtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5pbnNw
ZWN0b3JCYWNrZW5kKCk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGluc3RhbmNl
LCAmVjhJbnNwZWN0b3JCYWNrZW5kOjppbmZvLCBiYWNrZW5kKTsKLSAgICAvLyBDcmVhdGUgYSB3
ZWFrIHJlZmVyZW5jZSB0byB0aGUgdjggd3JhcHBlciBvZiBJbnNwZWN0b3JCYWNrZW5kIHRvIGRl
cmVmCi0gICAgLy8gSW5zcGVjdG9yQmFja2VuZCB3aGVuIHRoZSB3cmFwcGVyIGlzIGdhcmJhZ2Ug
Y29sbGVjdGVkLgotICAgIGJhY2tlbmQtPnJlZigpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+IHdlYWtIYW5kbGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGluc3Rh
bmNlKTsKLSAgICB3ZWFrSGFuZGxlLk1ha2VXZWFrKGJhY2tlbmQsICZJbnNwZWN0b3JCYWNrZW5k
V2Vha1JlZmVyZW5jZUNhbGxiYWNrKTsKLSAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKIHZvaWQg
V2ViRGV2VG9vbHNBZ2VudEltcGw6OmNyZWF0ZUluc3BlY3RvckZyb250ZW5kUHJveHkoKQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCmluZGV4IDFiYjcxYTMuLjkz
ZWFmNTUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudElt
cGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKQEAg
LTEyNywxMiArMTI3LDYgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIoKTsKIAotICAgIC8vIENyZWF0ZXMgSW5zcGVjdG9y
QmFja2VuZCB2OCB3cmFwcGVyIGluIHRoZSB1dGlsaXR5IGNvbnRleHQgc28gdGhhdCBpdCdzCi0g
ICAgLy8gbWV0aG9kcyBwcm90b3R5cGUgaXMgRnVuY3Rpb24ucHJvdG95cGUgb2JqZWN0IGZyb20g
dGhlIHV0aWxpdHkgY29udGV4dC4KLSAgICAvLyBPdGhlcndpc2Ugc29tZSB1c2VmdWwgbWV0aG9k
cyAgZGVmaW5lZCBvbiBGdW5jdGlvbi5wcm90b3R5cGUoc3VjaCBhcyBiaW5kKQotICAgIC8vIGFy
ZSBtaXNzaW5nIGZvciBJbnNwZWN0b3JDb250cm9sbGVyIG5hdGl2ZSBtZXRob2RzLgotICAgIHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVJbnNwZWN0b3JCYWNrZW5kVjhXcmFwcGVyKCk7Ci0K
ICAgICBpbnQgbV9ob3N0SWQ7CiAgICAgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogbV9jbGllbnQ7
CiAgICAgV2ViVmlld0ltcGwqIG1fd2ViVmlld0ltcGw7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL2pzL0luc3BlY3RvckNvbnRyb2xsZXJJbXBsLmpzIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9qcy9JbnNwZWN0b3JDb250cm9sbGVySW1wbC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZDhlZTFlNC4uMDAwMDAwMAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0lu
c3BlY3RvckNvbnRyb2xsZXJJbXBsLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0v
KioKLSAqIEBmaWxlb3ZlcnZpZXcgRGV2VG9vbHMnIGltcGxlbWVudGF0aW9uIG9mIHRoZSBJbnNw
ZWN0b3JDb250cm9sbGVyIEFQSS4KLSAqLwotCi1pZiAoIXRoaXMuZGV2dG9vbHMpCi0gICAgZGV2
dG9vbHMgPSB7fTsKLQotZGV2dG9vbHMuSW5zcGVjdG9yQmFja2VuZEltcGwgPSBmdW5jdGlvbigp
Ci17Ci0gICAgV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLmNhbGwodGhpcyk7Ci0g
ICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygiYWRkSW5zcGVjdGVk
Tm9kZSIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImFk
ZFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250
cm9sbGVyRGVsZWdhdGVfKCJjaGFuZ2VUYWdOYW1lIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVj
dG9yQ29udHJvbGxlckRlbGVnYXRlXygiY2xlYXJDb25zb2xlTWVzc2FnZXMiKTsKLSAgICB0aGlz
Lmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJjb3B5Tm9kZSIpOwotICAgIHRo
aXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImRlbGV0ZUNvb2tpZSIpOwot
ICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImRpZEV2YWx1YXRl
Rm9yVGVzdEluRnJvbnRlbmQiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVy
RGVsZWdhdGVfKCJkaXNhYmxlTW9uaXRvcmluZ1hIUiIpOwotICAgIHRoaXMuaW5zdGFsbEluc3Bl
Y3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImRpc2FibGVSZXNvdXJjZVRyYWNraW5nIik7Ci0gICAg
dGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygiZGlzYWJsZVNlYXJjaGlu
Z0Zvck5vZGUiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVf
KCJkaXNhYmxlVGltZWxpbmUiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVy
RGVsZWdhdGVfKCJkaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQiKTsKLSAgICB0aGlzLmluc3RhbGxJ
bnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJlbmFibGVNb25pdG9yaW5nWEhSIik7Ci0gICAg
dGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygiZW5hYmxlUmVzb3VyY2VU
cmFja2luZyIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8o
ImVuYWJsZVNlYXJjaGluZ0Zvck5vZGUiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250
cm9sbGVyRGVsZWdhdGVfKCJlbmFibGVUaW1lbGluZSIpOwotICAgIHRoaXMuaW5zdGFsbEluc3Bl
Y3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImdldENoaWxkTm9kZXMiKTsKLSAgICB0aGlzLmluc3Rh
bGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJnZXRDb29raWVzIik7Ci0gICAgdGhpcy5p
bnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygiZ2V0QXBwbGljYXRpb25DYWNoZXMi
KTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJnZXREYXRh
YmFzZVRhYmxlTmFtZXMiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVs
ZWdhdGVfKCJnZXRET01TdG9yYWdlRW50cmllcyIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3Rv
ckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZSIpOwotICAgIHRo
aXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImdldE91dGVySFRNTCIpOwot
ICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImdldFByb2ZpbGUi
KTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJnZXRQcm9m
aWxlSGVhZGVycyIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0
ZV8oInJlbW92ZVByb2ZpbGUiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVy
RGVsZWdhdGVfKCJjbGVhclByb2ZpbGVzIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29u
dHJvbGxlckRlbGVnYXRlXygiZ2V0UmVzb3VyY2VDb250ZW50Iik7Ci0gICAgdGhpcy5pbnN0YWxs
SW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygiaGlnaGxpZ2h0RE9NTm9kZSIpOwotICAgIHRo
aXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImhpZGVET01Ob2RlSGlnaGxp
Z2h0Iik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygicGVy
Zm9ybVNlYXJjaCIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0
ZV8oInB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZCIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3Rv
ckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInJlbGVhc2VXcmFwcGVyT2JqZWN0R3JvdXAiKTsKLSAgICB0
aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJyZW1vdmVBbGxTY3JpcHRz
VG9FdmFsdWF0ZU9uTG9hZCIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJE
ZWxlZ2F0ZV8oInJlbG9hZFBhZ2UiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9s
bGVyRGVsZWdhdGVfKCJyZW1vdmVBdHRyaWJ1dGUiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0
b3JDb250cm9sbGVyRGVsZWdhdGVfKCJyZW1vdmVET01TdG9yYWdlSXRlbSIpOwotICAgIHRoaXMu
aW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInJlbW92ZU5vZGUiKTsKLSAgICB0
aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzYXZlQXBwbGljYXRpb25T
ZXR0aW5ncyIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8o
InNhdmVTZXNzaW9uU2V0dGluZ3MiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9s
bGVyRGVsZWdhdGVfKCJzZWFyY2hDYW5jZWxlZCIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3Rv
ckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInNldEF0dHJpYnV0ZSIpOwotICAgIHRoaXMuaW5zdGFsbElu
c3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInNldERPTVN0b3JhZ2VJdGVtIik7Ci0gICAgdGhp
cy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic2V0SW5qZWN0ZWRTY3JpcHRT
b3VyY2UiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJz
ZXRPdXRlckhUTUwiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdh
dGVfKCJzZXRUZXh0Tm9kZVZhbHVlIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJv
bGxlckRlbGVnYXRlXygic3RhcnRQcm9maWxpbmciKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0
b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzdGFydFRpbWVsaW5lUHJvZmlsZXIiKTsKLSAgICB0aGlz
Lmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzdG9wUHJvZmlsaW5nIik7Ci0g
ICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic3RvcFRpbWVsaW5l
UHJvZmlsZXIiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVf
KCJzdG9yZUxhc3RBY3RpdmVQYW5lbCIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRy
b2xsZXJEZWxlZ2F0ZV8oInRha2VIZWFwU25hcHNob3QiKTsKLQotICAgIHRoaXMuaW5zdGFsbElu
c3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImdldEFsbFN0eWxlcyIpOwotICAgIHRoaXMuaW5z
dGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImdldFN0eWxlcyIpOwotICAgIHRoaXMu
aW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImdldENvbXB1dGVkU3R5bGUiKTsK
LSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJnZXRJbmxpbmVT
dHlsZSIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImdl
dFN0eWxlU2hlZXQiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdh
dGVfKCJnZXRSdWxlUmFuZ2VzIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxl
ckRlbGVnYXRlXygiYXBwbHlTdHlsZVRleHQiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JD
b250cm9sbGVyRGVsZWdhdGVfKCJzZXRTdHlsZVRleHQiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNw
ZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzZXRTdHlsZVByb3BlcnR5Iik7Ci0gICAgdGhpcy5p
bnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygidG9nZ2xlU3R5bGVFbmFibGVkIik7
Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic2V0UnVsZVNl
bGVjdG9yIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygi
YWRkUnVsZSIpOwotCi0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRl
XygiZGlzYWJsZURlYnVnZ2VyIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxl
ckRlbGVnYXRlXygiZWRpdFNjcmlwdFNvdXJjZSIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3Rv
ckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImdldFNjcmlwdFNvdXJjZSIpOwotICAgIHRoaXMuaW5zdGFs
bEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImVuYWJsZURlYnVnZ2VyIik7Ci0gICAgdGhp
cy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic2V0QnJlYWtwb2ludCIpOwot
ICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInJlbW92ZUJyZWFr
cG9pbnQiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJh
Y3RpdmF0ZUJyZWFrcG9pbnRzIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxl
ckRlbGVnYXRlXygiZGVhY3RpdmF0ZUJyZWFrcG9pbnRzIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5z
cGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygicmVzdW1lIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5z
cGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic3RlcEludG9TdGF0ZW1lbnQiKTsKLSAgICB0aGlz
Lmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzdGVwT3V0T2ZGdW5jdGlvbiIp
OwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInN0ZXBPdmVy
U3RhdGVtZW50Iik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRl
Xygic2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIpOwotfTsKLWRldnRvb2xzLkluc3BlY3RvckJh
Y2tlbmRJbXBsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFj
a2VuZFN0dWIucHJvdG90eXBlOwotCi0KLWRldnRvb2xzLkluc3BlY3RvckJhY2tlbmRJbXBsLnBy
b3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uKCkKLXsKLSAgICBSZW1vdGVEZWJ1Z2dlckNvbW1hbmRF
eGVjdXRvci5EZWJ1Z2dlclBhdXNlU2NyaXB0KCk7Ci19OwotCi0KLS8qKgotICogSW5zdGFsbHMg
ZGVsZWdhdGluZyBoYW5kbGVyIGludG8gdGhlIGluc3BlY3RvciBjb250cm9sbGVyLgotICogQHBh
cmFtIHtzdHJpbmd9IG1ldGhvZE5hbWUgTWV0aG9kIHRvIGluc3RhbGwgZGVsZWdhdGluZyBoYW5k
bGVyIGZvci4KLSAqLwotZGV2dG9vbHMuSW5zcGVjdG9yQmFja2VuZEltcGwucHJvdG90eXBlLmlu
c3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfID0gZnVuY3Rpb24obWV0aG9kTmFtZSkK
LXsKLSAgICB0aGlzW21ldGhvZE5hbWVdID0gdGhpcy5jYWxsSW5zcGVjdG9yQ29udHJvbGxlcl8u
YmluZCh0aGlzLCBtZXRob2ROYW1lKTsKLX07Ci0KLQotLyoqCi0gKiBCb3VuZCBmdW5jdGlvbiB3
aXRoIHRoZSBpbnN0YWxsSW5qZWN0ZWRTY3JpcHREZWxlZ2F0ZV8gYWN0dWFsCi0gKiBpbXBsZW1l
bnRhdGlvbi4KLSAqLwotZGV2dG9vbHMuSW5zcGVjdG9yQmFja2VuZEltcGwucHJvdG90eXBlLmNh
bGxJbnNwZWN0b3JDb250cm9sbGVyXyA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgYXJncyA9IEFy
cmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7Ci0gICAgdmFyIG1lc3NhZ2UgPSBK
U09OLnN0cmluZ2lmeShhcmdzKTsKLSAgICB2YXIgY2FsbGJhY2tJZCA9IFdlYkluc3BlY3Rvci5D
YWxsYmFjay53cmFwKGZ1bmN0aW9uKCl7fSk7Ci0gICAgaWYgKCJwYWdlIiBpbiBXZWJJbnNwZWN0
b3IuX3BhcmFtc09iamVjdCkKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNvY2tldC5zZW5kKGNhbGxi
YWNrSWQgKyAiICIgKyBtZXNzYWdlKTsKLSAgICBlbHNlCi0gICAgICAgIFJlbW90ZVRvb2xzQWdl
bnQuZGlzcGF0Y2hPbkluc3BlY3RvckNvbnRyb2xsZXIoY2FsbGJhY2tJZCwgbWVzc2FnZSk7Ci19
OwotCi0KLUluc3BlY3RvckJhY2tlbmQgPSBuZXcgZGV2dG9vbHMuSW5zcGVjdG9yQmFja2VuZElt
cGwoKTsK
</data>
<flag name="review"
          id="50823"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62675</attachid>
            <date>2010-07-27 03:36:12 -0700</date>
            <delta_ts>2010-07-27 05:02:16 -0700</delta_ts>
            <desc>[patch] third iteration.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>59381</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLnY4YmluZGluZ3MubWsgYi9XZWJD
b3JlL0FuZHJvaWQuZGVyaXZlZC52OGJpbmRpbmdzLm1rCmluZGV4IDFlN2ZhMzcuLmNmYThkYzkg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLnY4YmluZGluZ3MubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLmRlcml2ZWQudjhiaW5kaW5ncy5tawpAQCAtNTcxLDcgKzU3MSw2IEBA
ICQocGF0c3Vic3QgJS5oLCUuY3BwLCQoR0VOKSk6ICQoaW50ZXJtZWRpYXRlcykvYmluZGluZ3Mv
JS5jcHAgOiAkKGludGVybWVkaWF0ZXMpCiAjIFRoZXNlIGhlYWRlcnMgYXJlIHJlcXVpcmVkIGJ5
IHRoZSBWOCBiaW5kaW5ncyBldmVuIHdoZW4gSW5zcGVjdG9yIGlzIGRpc2FibGVkCiBHRU4gOj0g
XAogICAgICQoaW50ZXJtZWRpYXRlcykvYmluZGluZ3MvVjhJbmplY3RlZFNjcmlwdEhvc3QuaCBc
Ci0gICAgJChpbnRlcm1lZGlhdGVzKS9iaW5kaW5ncy9WOEluc3BlY3RvckJhY2tlbmQuaCBcCiAg
ICAgJChpbnRlcm1lZGlhdGVzKS9iaW5kaW5ncy9WOEluc3BlY3RvckZyb250ZW5kSG9zdC5oCiAK
ICQoR0VOKTogUFJJVkFURV9QQVRIIDo9ICQoTE9DQUxfUEFUSCkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGQ2OTU2MzYu
LjNiZmEwYTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtMjkzLDcgKzI5Myw2IEBAIFNFVChXZWJDb3JlX0lETF9GSUxF
UwogICAgIGh0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsCiAKICAgICBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmlkbAotICAgIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCiAgICAgaW5zcGVjdG9yL0phdmFT
Y3JpcHRDYWxsRnJhbWUuaWRsCiAgICAgaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGUuaWRsCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGVlZWMx
MWYuLmUzNGYzMGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTAtMDctMjcgIElseWEgVGlraG9ub3Zza3kg
IDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBt
ZXNzYWdlIGJhc2VkIGluc3BlY3RvcgorICAgICAgICB0cmFuc3BvcnQgZ2VuZXJhdGVkIGJ5IENv
ZGVHZW5lcmF0b3JJbnNwZWN0b3Igc2hvdWxkIGJlIHVwc3RyZWFtZWQKKyAgICAgICAgZnJvbSBX
ZWJLaXQvY2hyb21pdW0gdG8gV2ViQ29yZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQyOTgzCisKKyAgICAgICAgKiBBbmRyb2lkLmRlcml2ZWQudjhi
aW5kaW5ncy5tazoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5jcHA6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcmk6CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHA6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvU2Ny
aXB0T2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbDo6d2luZG93T2JqZWN0Q2xlYXJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0luc3BlY3RvckJhY2tlbmRTdHViLmpzOgorICAgICAgICAoLldlYkluc3BlY3Rvci5J
bnNwZWN0b3JCYWNrZW5kU3R1Yik6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJh
Y2tlbmRTdHViLnByb3RvdHlwZS5fcmVnaXN0ZXJEZWxlZ2F0ZSk6CisgICAgICAgICguV2ViSW5z
cGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5zZW5kTWVzc2FnZVRvQmFja2Vu
ZCk6CisKIDIwMTAtMDctMjcgIFNhdGlzaCBTYW1wYXRoICA8c2F0aXNoQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMuY3BwIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggNzhj
NTIzZi4uZWE2ZTQ3ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysr
IGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKQEAgLTE5MCw3ICsxOTAsNiBAQAogI2luY2x1
ZGUgIkpTSW1hZ2VEYXRhLmNwcCIKICNpbmNsdWRlICJKU0luZGV4ZWREYXRhYmFzZVJlcXVlc3Qu
Y3BwIgogI2luY2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCIKLSNpbmNsdWRlICJKU0lu
c3BlY3RvckJhY2tlbmQuY3BwIgogI2luY2x1ZGUgIkpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNw
cCIKICNpbmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwIgogI2luY2x1ZGUgIkpTS2V5
Ym9hcmRFdmVudC5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggN2M1M2U4Ni4uOGNlY2MyYiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQpAQCAtMjMzLDcgKzIzMyw2IEBAIERPTV9DTEFTU0VTID0gXAogICAgIElt
YWdlRGF0YSBcCiAgICAgSW5kZXhlZERhdGFiYXNlUmVxdWVzdCBcCiAgICAgSW5qZWN0ZWRTY3Jp
cHRIb3N0IFwKLSAgICBJbnNwZWN0b3JCYWNrZW5kIFwKICAgICBJbnNwZWN0b3JGcm9udGVuZEhv
c3QgXAogICAgIEtleWJvYXJkRXZlbnQgXAogICAgIExvY2F0aW9uIFwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGY3MjE3
YWMuLjZmZWZjOGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzkyLDggKzM5Miw2IEBAIHdlYmNvcmVfYnVpbHRfc291
cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ltYWdlRGF0YS5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0luamVjdGVkU2NyaXB0SG9zdC5oIFwKLQlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTSW5zcGVjdG9yQmFja2VuZC5jcHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNJbnNwZWN0b3JCYWNrZW5kLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbnQxNkFycmF5LmNw
cCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCA2NjVkYWI0Li5kZmJkMTUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTExOTUsNiArMTE5NSw3
IEBAIF9fWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDE3c2V0QXR0YWNo
ZWRXaW5kb3dFYgogX19aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsMTly
ZXF1ZXN0QXR0YWNoV2luZG93RXYKIF9fWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbDE5cmVxdWVzdERldGFjaFdpbmRvd0V2CiBfX1pON1dlYkNvcmUyOEluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWwxOXdpbmRvd09iamVjdENsZWFyZWRFdgorX19aTjdXZWJDb3JlMjhJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsMjBzZW5kTWVzc2FnZVRvQmFja2VuZEVSS05TXzZT
dHJpbmdFCiBfX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwyNmNoYW5n
ZUF0dGFjaGVkV2luZG93SGVpZ2h0RWoKIF9fWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbDI3cmVzdG9yZUF0dGFjaGVkV2luZG93SGVpZ2h0RXYKIF9fWk43V2ViQ29yZTI4
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEMyRVBOU18xOUluc3BlY3RvckNvbnRyb2xsZXJF
UE5TXzRQYWdlRQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCA3ZDdjZmY1Li5hYWZiMjIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTk2LDcgKzE5Niw2IEBA
CiAgICAgICAgICAgICAnaHRtbC9WYWxpZGl0eVN0YXRlLmlkbCcsCiAgICAgICAgICAgICAnaHRt
bC9Wb2lkQ2FsbGJhY2suaWRsJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmlkbCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRs
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRsJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvU2NyaXB0UHJvZmlsZS5pZGwnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnByaSBiL1dlYkNvcmUvV2ViQ29yZS5wcmkKaW5kZXggMThhNzZhMC4uZTU5Y2M5OCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnByaQorKysgYi9XZWJDb3JlL1dlYkNvcmUucHJp
CkBAIC00NDgsNyArNDQ4LDYgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBodG1sL1ZhbGlkaXR5
U3RhdGUuaWRsIFwKICAgICBodG1sL1ZvaWRDYWxsYmFjay5pZGwgXAogICAgIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEhvc3QuaWRsIFwKLSAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5p
ZGwgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsIFwKICAgICBpbnNw
ZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGwgXAogICAgIGluc3BlY3Rvci9TY3JpcHRQcm9m
aWxlLmlkbCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA4MTk1NDM5
Li44OWMwN2Q1IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTg3ODEs
NjIgKzg3ODEsNiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRp
dmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTSW5zcGVjdG9yQmFja2VuZC5jcHAiDQotCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0
aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1
cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnX0ludGVybmFsfFdpbjMyIg0KLQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0K
LQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0K
LQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2VfQ2Fp
cm98V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJ
CTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0i
RGVidWdfQWxsfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+
DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0K
LQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlS
ZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNJbnNwZWN0b3JCYWNrZW5kLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJ
PEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCINCiAJCQkJ
Pg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0yMDc0MSw3ICsyMDY4NSw3IEBACiAJCQkJ
Pg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0
cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2Jq
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzRkZTY4MS4uOTQ1YWE1ZCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgzMiw4ICs4MzIsNiBAQAog
CQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTFCMUNCMEZGNTk4NjkwMDU3
NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oICovOyB9OwogCQk0MUUxQjFEMzBGRjU5ODY5MDA1NzZC
M0IgLyogU2hhcmVkV29ya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRTFCMUNEMEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuY3Bw
ICovOyB9OwogCQk0MUUxQjFENDBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDRTBGRjU5
ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmggKi87IH07Ci0JCTQxRjA2MENEMEY1RUVCMkIw
MEEwN0VBQyAvKiBKU0luc3BlY3RvckJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDYwQ0IwRjVFRUIyQjAwQTA3RUFDIC8qIEpTSW5z
cGVjdG9yQmFja2VuZC5jcHAgKi87IH07Ci0JCTQxRjA2MENFMEY1RUVCMkIwMEEwN0VBQyAvKiBK
U0luc3BlY3RvckJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxRjA2MENDMEY1RUVCMkIwMEEwN0VBQyAvKiBKU0luc3BlY3RvckJhY2tlbmQu
aCAqLzsgfTsKIAkJNDFGMDYxNzQwRjVGMDBBQzAwQTA3RUFDIC8qIEluc3BlY3RvckRPTVN0b3Jh
Z2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFGMDYxNzIwRjVGMDBBQzAwQTA3RUFDIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJj
ZS5oICovOyB9OwogCQk0MUYwNjE3NTBGNUYwMEFDMDBBMDdFQUMgLyogSW5zcGVjdG9yRE9NU3Rv
cmFnZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxRjA2MTczMEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVz
b3VyY2UuY3BwICovOyB9OwogCQk0MUYwNjE4RTBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1l
c3NhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RjA2MThDMEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2FnZS5oICovOyB9OwpAQCAtNjU0
MCw4ICs2NTM4LDYgQEAKIAkJNDFFMUIxQ0QwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTaGFyZWRXb3JrZXIu
Y3BwOyBwYXRoID0gd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MUUxQjFDRTBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNoYXJlZFdvcmtlci5oOyBwYXRoID0gd29y
a2Vycy9TaGFyZWRXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMUIx
Q0YwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBu
YW1lID0gU2hhcmVkV29ya2VyLmlkbDsgcGF0aCA9IHdvcmtlcnMvU2hhcmVkV29ya2VyLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFGMDYwQ0IwRjVFRUIyQjAwQTA3RUFDIC8q
IEpTSW5zcGVjdG9yQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0luc3BlY3RvckJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk0MUYwNjBDQzBGNUVFQjJCMDBBMDdFQUMgLyogSlNJbnNwZWN0b3JCYWNrZW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW5zcGVjdG9yQmFja2VuZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYwNjE3MjBGNUYwMEFDMDBBMDdFQUMgLyogSW5zcGVj
dG9yRE9NU3RvcmFnZVJlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUYwNjE3MzBGNUYwMEFDMDBBMDdFQUMgLyogSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291
cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckRP
TVN0b3JhZ2VSZXNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjA2
MThDMEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2FnZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb25zb2xlTWVzc2FnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzE3MSw3ICs3MTY3LDYgQEAKIAkJN0EyNDU4N0ExMDIxRUFGNDAwMEEwMEFBIC8q
IEluc3BlY3RvckRPTUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
c3BlY3RvckRPTUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNjc0QkQ5
MEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E2NzRCREEwRjlFQkY0RTAwNkNGMDk5IC8qIFBh
Z2VHcm91cExvYWREZWZlcnJlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
YWdlR3JvdXBMb2FkRGVmZXJyZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0E3
NEVDQjYxMDE4Mzk5QTAwQkY5MzlFIC8qIEluc3BlY3RvckJhY2tlbmQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEluc3BlY3RvckJhY2tlbmQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QTc0RUNCODEwMTgzOUE1MDBCRjkzOUUgLyogSW5zcGVjdG9yQmFja2VuZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JCYWNrZW5kLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E3NEVDQjkxMDE4MzlBNjAwQkY5MzlF
IC8qIEluc3BlY3RvckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5zcGVjdG9yQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc0RUNC
QzEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnNwZWN0b3JGcm9udGVuZEhv
c3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE0MzUsOCArMTE0
MzAsNiBAQAogCQkJCTRGNzA3QTk4MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5oICovLAogCQkJCTdBMEU3NkQ4MTBCRjA1OTgwMEEwMjc2RSAvKiBKU0luamVj
dGVkU2NyaXB0SG9zdC5jcHAgKi8sCiAJCQkJN0EwRTc2RDkxMEJGMDU5ODAwQTAyNzZFIC8qIEpT
SW5qZWN0ZWRTY3JpcHRIb3N0LmggKi8sCi0JCQkJNDFGMDYwQ0IwRjVFRUIyQjAwQTA3RUFDIC8q
IEpTSW5zcGVjdG9yQmFja2VuZC5jcHAgKi8sCi0JCQkJNDFGMDYwQ0MwRjVFRUIyQjAwQTA3RUFD
IC8qIEpTSW5zcGVjdG9yQmFja2VuZC5oICovLAogCQkJCTdBMEU3NzFDMTBDMDBEQjEwMEEwMjc2
RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgKi8sCiAJCQkJN0EwRTc3MUQxMEMwMERC
MTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggKi8sCiAJCQkJMUM1RkFFQ0Yw
RENGRDkwMTAwRDU4Rjc4IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi8sCkBAIC0xMTQ2
Niw3ICsxMTQ1OSw2IEBACiAJCQkJQjg4NUU4RDMxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oICovLAogCQkJCTdBNzRFQ0I4MTAxODM5QTUwMEJGOTM5
RSAvKiBJbnNwZWN0b3JCYWNrZW5kLmNwcCAqLywKIAkJCQk3QTc0RUNCOTEwMTgzOUE2MDBCRjkz
OUUgLyogSW5zcGVjdG9yQmFja2VuZC5oICovLAotCQkJCTdBNzRFQ0I2MTAxODM5OUEwMEJGOTM5
RSAvKiBJbnNwZWN0b3JCYWNrZW5kLmlkbCAqLywKIAkJCQkxQzgxQjk1ODBFOTczMzA4MDAyNjZF
MDcgLyogSW5zcGVjdG9yQ2xpZW50LmggKi8sCiAJCQkJMUM4MUI5NTcwRTk3MzMwODAwMjY2RTA3
IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuY3BwICovLAogCQkJCTFDODFCOTU2MEU5NzMzMDgwMDI2
NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmggKi8sCkBAIC0xODczOCw3ICsxODczMCw2IEBA
CiAJCQkJQTc3OTc5MjkwRDZCOUU2NDAwMzg1MUI5IC8qIEpTSW1hZ2VEYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDNTg1QTY5NzExRDRGQjEzMDA0QzNFNEIgLyogSlNJbmRleGVkRGF0YWJhc2VS
ZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTBFNzZEQjEwQkYwNTk4MDBBMDI3NkUgLyog
SlNJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxRjA2MENFMEY1RUVC
MkIwMEEwN0VBQyAvKiBKU0luc3BlY3RvckJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdB
MEU3NzFGMTBDMDBEQjEwMEEwMjc2RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDlFRUNGMDcxMDUwNzBDNDAwMDk5RkFCIC8qIEpTSW50MTZBcnJheS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFRUNGMDUxMDUwNzBDNDAwMDk5RkFCIC8qIEpTSW50MzJB
cnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMTIwMiw3ICsyMTE5Myw2IEBACiAJCQkJQzU4NUE2
OTYxMUQ0RkIxMzAwNEMzRTRCIC8qIEpTSW5kZXhlZERhdGFiYXNlUmVxdWVzdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3QTBFNzZEQTEwQkYwNTk4MDBBMDI3NkUgLyogSlNJbmplY3RlZFNjcmlw
dEhvc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0EwRTc2RDUxMEJGMDUwNzAwQTAyNzZFIC8q
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxRjA2
MENEMEY1RUVCMkIwMEEwN0VBQyAvKiBKU0luc3BlY3RvckJhY2tlbmQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0EwRTc3MUUxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBNzRFQ0JEMTAxODM5REEwMEJGOTM5RSAvKiBK
U0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVF
Q0YwNjEwNTA3MEM0MDAwOTlGQUIgLyogSlNJbnQxNkFycmF5LmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCmluZGV4IDE2YjlmMDEuLmRlMzk3ZjcgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKIAogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAjaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhvc3QuaCIKLSNp
bmNsdWRlICJKU0luc3BlY3RvckJhY2tlbmQuaCIKICNpbmNsdWRlICJKU0luc3BlY3RvckZyb250
ZW5kSG9zdC5oIgogI2VuZGlmCiAKQEAgLTE1OCwxNCArMTU3LDYgQEAgYm9vbCBTY3JpcHRHbG9i
YWxPYmplY3Q6OnNldChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUs
IGNvbnN0IFMKIH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi1ib29sIFNjcmlwdEdsb2JhbE9i
amVjdDo6c2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5z
cGVjdG9yQmFja2VuZCogdmFsdWUpCi17Ci0gICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlv
bnNPbmx5KTsKLSAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KTsKLSAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChJZGVudGlmaWVyKHNjcmlwdFN0YXRlLCBu
YW1lKSwgdG9KUyhzY3JpcHRTdGF0ZSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwotICAgIHJldHVy
biBoYW5kbGVFeGNlcHRpb24oc2NyaXB0U3RhdGUpOwotfQotCiBib29sIFNjcmlwdEdsb2JhbE9i
amVjdDo6c2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0KiB2YWx1ZSkKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNz
ZXJ0aW9uc09ubHkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmpl
Y3QuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmgKaW5kZXggMGM5OTNlMS4u
OTg4MDk3NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oCkBAIC0zOSw3ICszOSw2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbmplY3RlZFNjcmlwdEhvc3Q7Ci0g
ICAgY2xhc3MgSW5zcGVjdG9yQmFja2VuZDsKICAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZEhv
c3Q7CiAKICAgICBjbGFzcyBTY3JpcHRPYmplY3QgOiBwdWJsaWMgU2NyaXB0VmFsdWUgewpAQCAt
NzAsNyArNjksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBz
dGF0aWMgYm9vbCBzZXQoU2NyaXB0U3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTY3Jp
cHRPYmplY3QmKTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBzdGF0aWMgYm9vbCBz
ZXQoU2NyaXB0U3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0b3JCYWNrZW5kKik7CiAg
ICAgICAgIHN0YXRpYyBib29sIHNldChTY3JpcHRTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIElu
c3BlY3RvckZyb250ZW5kSG9zdCopOwogICAgICAgICBzdGF0aWMgYm9vbCBzZXQoU2NyaXB0U3Rh
dGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJbmplY3RlZFNjcmlwdEhvc3QqKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwCmluZGV4IDUyMGM1N2IuLjhmODE1MzcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4SW5qZWN0ZWRT
Y3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiVjhJbnNwZWN0b3JCYWNrZW5kLmgiCiAjaW5jbHVkZSAi
VjhJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKQEAgLTE0
NiwxMyArMTQ1LDYgQEAgYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChTY3JpcHRTdGF0ZSog
c2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFMKIH0KIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCi1ib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KFNjcmlwdFN0YXRlKiBzY3Jp
cHRTdGF0ZSwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yQmFja2VuZCogdmFsdWUpCi17Ci0g
ICAgU2NyaXB0U2NvcGUgc2NvcGUoc2NyaXB0U3RhdGUpOwotICAgIHNjb3BlLmdsb2JhbCgpLT5T
ZXQodjg6OlN0cmluZzo6TmV3KG5hbWUpLCB0b1Y4KHZhbHVlKSk7Ci0gICAgcmV0dXJuIHNjb3Bl
LnN1Y2Nlc3MoKTsKLX0KLQogYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChTY3JpcHRTdGF0
ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIEluc3BlY3RvckZyb250ZW5kSG9zdCog
dmFsdWUpCiB7CiAgICAgU2NyaXB0U2NvcGUgc2NvcGUoc2NyaXB0U3RhdGUpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuaCBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0T2JqZWN0LmgKaW5kZXggYTYwZjJhOC4uYmVlMDc5YyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdE9iamVjdC5oCkBAIC0zNyw3ICszNyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBJbmplY3RlZFNjcmlwdEhvc3Q7Ci0gICAgY2xhc3MgSW5zcGVjdG9yQmFja2Vu
ZDsKICAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q7CiAgICAgY2xhc3MgU2NyaXB0U3Rh
dGU7CiAKQEAgLTY5LDcgKzY4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNj
cmlwdEdsb2JhbE9iamVjdCB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgYm9vbCBzZXQo
U2NyaXB0U3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTY3JpcHRPYmplY3QmKTsKLSAg
ICAgICAgc3RhdGljIGJvb2wgc2V0KFNjcmlwdFN0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5z
cGVjdG9yQmFja2VuZCopOwogICAgICAgICBzdGF0aWMgYm9vbCBzZXQoU2NyaXB0U3RhdGUqLCBj
b25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0b3JGcm9udGVuZEhvc3QqKTsKICAgICAgICAgc3RhdGlj
IGJvb2wgc2V0KFNjcmlwdFN0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5qZWN0ZWRTY3JpcHRI
b3N0Kik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldChTY3JpcHRTdGF0ZSosIGNvbnN0IGNoYXIq
IG5hbWUsIFNjcmlwdE9iamVjdCYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29k
ZUdlbmVyYXRvckluc3BlY3Rvci5wbSBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucG0KaW5kZXggZjU1NDAyNi4uNTQ4OGRiZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCkBAIC0xNjQsNyArMTY0LDcgQEAgc3ViIEdlbmVy
YXRlSW50ZXJmYWNlCiAgICAgJGJhY2tlbmRDbGFzc05hbWUgPSAkY2xhc3NOYW1lIC4gIkJhY2tl
bmREaXNwYXRjaGVyIjsKICAgICBteSBAYmFja2VuZEhlYWQ7CiAgICAgcHVzaChAYmFja2VuZEhl
YWQsICIgICAgJHtiYWNrZW5kQ2xhc3NOYW1lfShJbnNwZWN0b3JCYWNrZW5kKiBpbnNwZWN0b3JC
YWNrZW5kKSA6IG1faW5zcGVjdG9yQmFja2VuZChpbnNwZWN0b3JCYWNrZW5kKSB7IH0iKTsKLSAg
ICBwdXNoKEBiYWNrZW5kSGVhZCwgIiAgICB2b2lkIGRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgU3RyaW5nKiBleGNlcHRpb24pOyIpOworICAgIHB1c2goQGJhY2tlbmRIZWFkLCAiICAg
IHZvaWQgZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsiKTsKICAgICBwdXNoKEBiYWNr
ZW5kSGVhZCwgInByaXZhdGU6Iik7CiAgICAgJGJhY2tlbmRDb25zdHJ1Y3RvciA9IGpvaW4oIlxu
IiwgQGJhY2tlbmRIZWFkKTsKICAgICAkYmFja2VuZEZvb3RlciA9ICIgICAgSW5zcGVjdG9yQmFj
a2VuZCogbV9pbnNwZWN0b3JCYWNrZW5kOyI7CkBAIC0yODgsOCArMjg4LDkgQEAgc3ViIGdlbmVy
YXRlQmFja2VuZERpc3BhdGNoZXIKICAgICBteSBAbWV0aG9kcyA9IG1hcCgkYmFja2VuZE1ldGhv
ZHN7JF99LCBrZXlzICViYWNrZW5kTWV0aG9kcyk7CiAgICAgbXkgQG1hcEVudHJpZXMgPSBtYXAo
ImRpc3BhdGNoTWFwLmFkZChcIiRfXCIsICYke2JhY2tlbmRDbGFzc05hbWV9OjokXyk7IiwgQG1l
dGhvZHMpOwogCi0gICAgcHVzaChAYm9keSwgInZvaWQgJHtiYWNrZW5kQ2xhc3NOYW1lfTo6ZGlz
cGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBTdHJpbmcqIGV4Y2VwdGlvbikiKTsKKyAgICBw
dXNoKEBib2R5LCAidm9pZCAke2JhY2tlbmRDbGFzc05hbWV9OjpkaXNwYXRjaChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpIik7CiAgICAgcHVzaChAYm9keSwgInsiKTsKKyAgICBwdXNoKEBib2R5LCAi
ICAgIFN0cmluZyBleGNlcHRpb247Iik7CiAgICAgcHVzaChAYm9keSwgIiAgICB0eXBlZGVmIHZv
aWQgKCR7YmFja2VuZENsYXNzTmFtZX06OipDYWxsSGFuZGxlcikoUGFzc1JlZlB0cjxJbnNwZWN0
b3JBcnJheT4gYXJncywgU3RyaW5nKiBleGNlcHRpb24pOyIpOwogICAgIHB1c2goQGJvZHksICIg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+IERpc3BhdGNoTWFwOyIpOwog
ICAgIHB1c2goQGJvZHksICIgICAgREVGSU5FX1NUQVRJQ19MT0NBTChEaXNwYXRjaE1hcCwgZGlz
cGF0Y2hNYXAsICk7Iik7CkBAIC0zMDAsMzggKzMwMSwzOCBAQCBzdWIgZ2VuZXJhdGVCYWNrZW5k
RGlzcGF0Y2hlcgogICAgIHB1c2goQGJvZHksICIgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBw
YXJzZWRNZXNzYWdlID0gSW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTihtZXNzYWdlKTsiKTsKICAg
ICBwdXNoKEBib2R5LCAiICAgIGlmICghcGFyc2VkTWVzc2FnZSkgeyIpOwogICAgIHB1c2goQGJv
ZHksICIgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyIpOwotICAgIHB1c2goQGJvZHksICIg
ICAgICAgICpleGNlcHRpb24gPSBcIkVycm9yOiBJbnZhbGlkIG1lc3NhZ2UgZm9ybWF0LiBNZXNz
YWdlIHNob3VsZCBiZSBpbiBKU09OIGZvcm1hdC5cIjsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAg
ICAgICBleGNlcHRpb24gPSBcIkVycm9yOiBJbnZhbGlkIG1lc3NhZ2UgZm9ybWF0LiBNZXNzYWdl
IHNob3VsZCBiZSBpbiBKU09OIGZvcm1hdC5cIjsiKTsKICAgICBwdXNoKEBib2R5LCAiICAgICAg
ICByZXR1cm47Iik7CiAgICAgcHVzaChAYm9keSwgIiAgICB9Iik7CiAgICAgcHVzaChAYm9keSwg
IiIpOwogICAgIHB1c2goQGJvZHksICIgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBtZXNzYWdl
QXJyYXkgPSBwYXJzZWRNZXNzYWdlLT5hc0FycmF5KCk7Iik7CiAgICAgcHVzaChAYm9keSwgIiAg
ICBpZiAoIW1lc3NhZ2VBcnJheSkgeyIpOwogICAgIHB1c2goQGJvZHksICIgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyIpOwotICAgIHB1c2goQGJvZHksICIgICAgICAgICpleGNlcHRpb24g
PSBcIkVycm9yOiBJbnZhbGlkIG1lc3NhZ2UgZm9ybWF0LiBUaGUgbWVzc2FnZSBzaG91bGQgYmUg
YSBKU09OaWZpZWQgYXJyYXkgb2YgYXJndW1lbnRzLlwiOyIpOworICAgIHB1c2goQGJvZHksICIg
ICAgICAgIGV4Y2VwdGlvbiA9IFwiRXJyb3I6IEludmFsaWQgbWVzc2FnZSBmb3JtYXQuIFRoZSBt
ZXNzYWdlIHNob3VsZCBiZSBhIEpTT05pZmllZCBhcnJheSBvZiBhcmd1bWVudHMuXCI7Iik7CiAg
ICAgcHVzaChAYm9keSwgIiAgICAgICAgcmV0dXJuOyIpOwogICAgIHB1c2goQGJvZHksICIgICAg
fSIpOwogICAgIHB1c2goQGJvZHksICIiKTsKICAgICBwdXNoKEBib2R5LCAiICAgIGlmICghbWVz
c2FnZUFycmF5LT5sZW5ndGgoKSkgeyIpOwogICAgIHB1c2goQGJvZHksICIgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyIpOwotICAgIHB1c2goQGJvZHksICIgICAgICAgICpleGNlcHRpb24g
PSBcIkVycm9yOiBJbnZhbGlkIG1lc3NhZ2UgZm9ybWF0LiBFbXB0eSBtZXNzYWdlIHdhcyByZWNl
aXZlZC5cIjsiKTsKKyAgICBwdXNoKEBib2R5LCAiICAgICAgICBleGNlcHRpb24gPSBcIkVycm9y
OiBJbnZhbGlkIG1lc3NhZ2UgZm9ybWF0LiBFbXB0eSBtZXNzYWdlIHdhcyByZWNlaXZlZC5cIjsi
KTsKICAgICBwdXNoKEBib2R5LCAiICAgICAgICByZXR1cm47Iik7CiAgICAgcHVzaChAYm9keSwg
IiAgICB9Iik7CiAgICAgcHVzaChAYm9keSwgIiIpOwogICAgIHB1c2goQGJvZHksICIgICAgU3Ry
aW5nIG1ldGhvZE5hbWU7Iik7CiAgICAgcHVzaChAYm9keSwgIiAgICBpZiAoIW1lc3NhZ2VBcnJh
eS0+Z2V0KDApLT5hc1N0cmluZygmbWV0aG9kTmFtZSkpIHsiKTsKICAgICBwdXNoKEBib2R5LCAi
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsiKTsKLSAgICBwdXNoKEBib2R5LCAiICAgICAg
ICAqZXhjZXB0aW9uID0gXCJFcnJvcjogSW52YWxpZCBtZXNzYWdlIGZvcm1hdC4gVGhlIGZpcnN0
IGVsZW1lbnQgb2YgdGhlIG1lc3NhZ2Ugc2hvdWxkIGJlIG1ldGhvZCBuYW1lLlwiOyIpOworICAg
IHB1c2goQGJvZHksICIgICAgICAgIGV4Y2VwdGlvbiA9IFwiRXJyb3I6IEludmFsaWQgbWVzc2Fn
ZSBmb3JtYXQuIFRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBtZXNzYWdlIHNob3VsZCBiZSBtZXRo
b2QgbmFtZS5cIjsiKTsKICAgICBwdXNoKEBib2R5LCAiICAgICAgICByZXR1cm47Iik7CiAgICAg
cHVzaChAYm9keSwgIiAgICB9Iik7CiAgICAgcHVzaChAYm9keSwgIiIpOwogICAgIHB1c2goQGJv
ZHksICIgICAgSGFzaE1hcDxTdHJpbmcsIENhbGxIYW5kbGVyPjo6aXRlcmF0b3IgaXQgPSBkaXNw
YXRjaE1hcC5maW5kKG1ldGhvZE5hbWUpOyIpOwogICAgIHB1c2goQGJvZHksICIgICAgaWYgKGl0
ID09IGRpc3BhdGNoTWFwLmVuZCgpKSB7Iik7CiAgICAgcHVzaChAYm9keSwgIiAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Iik7Ci0gICAgcHVzaChAYm9keSwgIiAgICAgICAgKmV4Y2VwdGlv
biA9IFN0cmluZzo6Zm9ybWF0KFwiRXJyb3I6IEludmFsaWQgbWV0aG9kIG5hbWUuICclcycgd2Fz
bid0IGZvdW5kLlwiLCBtZXRob2ROYW1lLnV0ZjgoKS5kYXRhKCkpOyIpOworICAgIHB1c2goQGJv
ZHksICIgICAgICAgIGV4Y2VwdGlvbiA9IFN0cmluZzo6Zm9ybWF0KFwiRXJyb3I6IEludmFsaWQg
bWV0aG9kIG5hbWUuICclcycgd2Fzbid0IGZvdW5kLlwiLCBtZXRob2ROYW1lLnV0ZjgoKS5kYXRh
KCkpOyIpOwogICAgIHB1c2goQGJvZHksICIgICAgICAgIHJldHVybjsiKTsKICAgICBwdXNoKEBi
b2R5LCAiICAgIH0iKTsKICAgICBwdXNoKEBib2R5LCAiIik7Ci0gICAgcHVzaChAYm9keSwgIiAg
ICAoKCp0aGlzKS4qaXQtPnNlY29uZCkobWVzc2FnZUFycmF5LCBleGNlcHRpb24pOyIpOworICAg
IHB1c2goQGJvZHksICIgICAgKCgqdGhpcykuKml0LT5zZWNvbmQpKG1lc3NhZ2VBcnJheSwgJmV4
Y2VwdGlvbik7Iik7CiAgICAgcHVzaChAYm9keSwgIn0iKTsKICAgICByZXR1cm4gQGJvZHk7CiB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1OTQxMzU4Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmQuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDA4IE1hdHQgTGlsZWsgPHdlYmtpdEBtYXR0bGlsZWsuY29tPgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxl
IGNvcmUgewotICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SXSBJbnNwZWN0b3JC
YWNrZW5kIHsKLSAgICAgICAgdm9pZCBzdG9yZUxhc3RBY3RpdmVQYW5lbChpbiBET01TdHJpbmcg
cGFuZWxOYW1lKTsKLQotICAgICAgICB2b2lkIHNhdmVBcHBsaWNhdGlvblNldHRpbmdzKGluIERP
TVN0cmluZyBzZXR0aW5ncyk7Ci0gICAgICAgIHZvaWQgc2F2ZVNlc3Npb25TZXR0aW5ncyhpbiBE
T01TdHJpbmcgc2V0dGluZ3MpOwotCi0gICAgICAgIHZvaWQgZW5hYmxlU2VhcmNoaW5nRm9yTm9k
ZSgpOwotICAgICAgICB2b2lkIGRpc2FibGVTZWFyY2hpbmdGb3JOb2RlKCk7Ci0KLSAgICAgICAg
dm9pZCBlbmFibGVNb25pdG9yaW5nWEhSKCk7Ci0gICAgICAgIHZvaWQgZGlzYWJsZU1vbml0b3Jp
bmdYSFIoKTsKLQotICAgICAgICB2b2lkIGVuYWJsZVJlc291cmNlVHJhY2tpbmcoaW4gYm9vbGVh
biBhbHdheXMpOwotICAgICAgICB2b2lkIGRpc2FibGVSZXNvdXJjZVRyYWNraW5nKGluIGJvb2xl
YW4gYWx3YXlzKTsKLSAgICAgICAgdm9pZCBnZXRSZXNvdXJjZUNvbnRlbnQoaW4gbG9uZyBjYWxs
SWQsIGluIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7Ci0gICAgICAgIHZvaWQgcmVsb2FkUGFn
ZSgpOwotCi0gICAgICAgIHZvaWQgc3RhcnRUaW1lbGluZVByb2ZpbGVyKCk7Ci0gICAgICAgIHZv
aWQgc3RvcFRpbWVsaW5lUHJvZmlsZXIoKTsKLQotI2lmIGRlZmluZWQoRU5BQkxFX0pBVkFTQ1JJ
UFRfREVCVUdHRVIpICYmIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSCi0gICAgICAgIHZvaWQg
ZW5hYmxlRGVidWdnZXIoaW4gYm9vbGVhbiBhbHdheXMpOwotICAgICAgICB2b2lkIGRpc2FibGVE
ZWJ1Z2dlcihpbiBib29sZWFuIGFsd2F5cyk7Ci0KLSAgICAgICAgdm9pZCBzZXRCcmVha3BvaW50
KGluIGxvbmcgY2FsbElkLCBpbiBET01TdHJpbmcgc291cmNlSUQsIGluIHVuc2lnbmVkIGxvbmcg
bGluZU51bWJlciwgaW4gYm9vbGVhbiBlbmFibGVkLCBpbiBET01TdHJpbmcgY29uZGl0aW9uKTsK
LSAgICAgICAgdm9pZCByZW1vdmVCcmVha3BvaW50KGluIERPTVN0cmluZyBzb3VyY2VJRCwgaW4g
dW5zaWduZWQgbG9uZyBsaW5lTnVtYmVyKTsKLSAgICAgICAgdm9pZCBhY3RpdmF0ZUJyZWFrcG9p
bnRzKCk7Ci0gICAgICAgIHZvaWQgZGVhY3RpdmF0ZUJyZWFrcG9pbnRzKCk7Ci0KLSAgICAgICAg
dm9pZCBwYXVzZSgpOwotICAgICAgICB2b2lkIHJlc3VtZSgpOwotCi0gICAgICAgIHZvaWQgc3Rl
cE92ZXJTdGF0ZW1lbnQoKTsKLSAgICAgICAgdm9pZCBzdGVwSW50b1N0YXRlbWVudCgpOwotICAg
ICAgICB2b2lkIHN0ZXBPdXRPZkZ1bmN0aW9uKCk7Ci0KLSAgICAgICAgdm9pZCBzZXRQYXVzZU9u
RXhjZXB0aW9uc1N0YXRlKGluIGxvbmcgcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7Ci0KLSAgICAg
ICAgdm9pZCBlZGl0U2NyaXB0U291cmNlKGluIGxvbmcgY2FsbElkLCBpbiBET01TdHJpbmcgc291
cmNlSUQsIGluIERPTVN0cmluZyBuZXdDb250ZW50KTsKLSAgICAgICAgdm9pZCBnZXRTY3JpcHRT
b3VyY2UoaW4gbG9uZyBjYWxsSWQsIGluIERPTVN0cmluZyBzb3VyY2VJRCk7Ci0KLSAgICAgICAg
dm9pZCBlbmFibGVQcm9maWxlcihpbiBib29sZWFuIGFsd2F5cyk7Ci0gICAgICAgIHZvaWQgZGlz
YWJsZVByb2ZpbGVyKGluIGJvb2xlYW4gYWx3YXlzKTsKLQotICAgICAgICB2b2lkIHN0YXJ0UHJv
ZmlsaW5nKCk7Ci0gICAgICAgIHZvaWQgc3RvcFByb2ZpbGluZygpOwotCi0gICAgICAgIHZvaWQg
Z2V0UHJvZmlsZUhlYWRlcnMoaW4gbG9uZyBjYWxsSWQpOwotICAgICAgICB2b2lkIGdldFByb2Zp
bGUoaW4gbG9uZyBjYWxsSWQsIGluIHVuc2lnbmVkIGxvbmcgdWlkKTsKLQotICAgICAgICB2b2lk
IHJlbW92ZVByb2ZpbGUoaW4gdW5zaWduZWQgbG9uZyB1aWQpOwotICAgICAgICB2b2lkIGNsZWFy
UHJvZmlsZXMoKTsKLQotICAgICAgICB2b2lkIHRha2VIZWFwU25hcHNob3QoKTsKLSNlbmRpZgot
ICAgICAgICB2b2lkIHNldEluamVjdGVkU2NyaXB0U291cmNlKGluIERPTVN0cmluZyBzY3JpcHRT
b3VyY2UpOwotICAgICAgICB2b2lkIGRpc3BhdGNoT25JbmplY3RlZFNjcmlwdChpbiBsb25nIGNh
bGxJZCwgaW4gbG9uZyBpbmplY3RlZFNjcmlwdElkLCBpbiBET01TdHJpbmcgbWV0aG9kTmFtZSwg
aW4gRE9NU3RyaW5nIGFyZ3VtZW50cywgaW4gYm9vbGVhbiBhc3luYyk7Ci0KLSAgICAgICAgdm9p
ZCBhZGRTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKGluIERPTVN0cmluZyBzY3JpcHRTb3VyY2UpOwot
ICAgICAgICB2b2lkIHJlbW92ZUFsbFNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkKCk7Ci0KLSAgICAg
ICAgdm9pZCBnZXRDaGlsZE5vZGVzKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIG5vZGVJZCk7Ci0g
ICAgICAgIHZvaWQgc2V0QXR0cmlidXRlKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIGVsZW1lbnRJ
ZCwgaW4gRE9NU3RyaW5nIG5hbWUsIGluIERPTVN0cmluZyB2YWx1ZSk7Ci0gICAgICAgIHZvaWQg
cmVtb3ZlQXR0cmlidXRlKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIGVsZW1lbnRJZCwgaW4gRE9N
U3RyaW5nIG5hbWUpOwotICAgICAgICB2b2lkIHNldFRleHROb2RlVmFsdWUoaW4gbG9uZyBjYWxs
SWQsIGluIGxvbmcgbm9kZUlkLCBpbiBET01TdHJpbmcgdmFsdWUpOwotICAgICAgICB2b2lkIGdl
dEV2ZW50TGlzdGVuZXJzRm9yTm9kZShpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBub2RlSWQpOwot
ICAgICAgICB2b2lkIGNvcHlOb2RlKGluIGxvbmcgbm9kZUlkKTsKLSAgICAgICAgdm9pZCByZW1v
dmVOb2RlKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIG5vZGVJZCk7Ci0gICAgICAgIHZvaWQgY2hh
bmdlVGFnTmFtZShpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBub2RlSWQsIGluIERPTVN0cmluZyBu
ZXdUYWdOYW1lKTsKLSAgICAgICAgdm9pZCBnZXRPdXRlckhUTUwoaW4gbG9uZyBjYWxsSWQsIGlu
IGxvbmcgbm9kZUlkKTsKLSAgICAgICAgdm9pZCBzZXRPdXRlckhUTUwoaW4gbG9uZyBjYWxsSWQs
IGluIGxvbmcgbm9kZUlkLCBpbiBET01TdHJpbmcgb3V0ZXJIVE1MKTsKLSAgICAgICAgdm9pZCBh
ZGRJbnNwZWN0ZWROb2RlKGluIGxvbmcgbm9kZUlkKTsKLSAgICAgICAgdm9pZCBwZXJmb3JtU2Vh
cmNoKGluIERPTVN0cmluZyBxdWVyeSwgaW4gYm9vbGVhbiBydW5TeW5jaHJvbm91c2x5KTsKLSAg
ICAgICAgdm9pZCBzZWFyY2hDYW5jZWxlZCgpOwotICAgICAgICB2b2lkIHB1c2hOb2RlQnlQYXRo
VG9Gcm9udGVuZChpbiBsb25nIGNhbGxJZCwgaW4gRE9NU3RyaW5nIHBhdGgpOwotCi0gICAgICAg
IHZvaWQgY2xlYXJDb25zb2xlTWVzc2FnZXMoaW4gbG9uZyBjYWxsSWQpOwotCi0gICAgICAgIHZv
aWQgaGlnaGxpZ2h0RE9NTm9kZShpbiBsb25nIG5vZGVJZCk7Ci0gICAgICAgIHZvaWQgaGlkZURP
TU5vZGVIaWdobGlnaHQoKTsKLQotICAgICAgICB2b2lkIGdldFN0eWxlcyhpbiBsb25nIGNhbGxJ
ZCwgaW4gbG9uZyBub2RlSWQsIGluIGJvb2xlYW4gYXV0aE9ubHkpOwotICAgICAgICB2b2lkIGdl
dEFsbFN0eWxlcyhpbiBsb25nIGNhbGxJZCk7Ci0gICAgICAgIHZvaWQgZ2V0SW5saW5lU3R5bGUo
aW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgbm9kZUlkKTsKLSAgICAgICAgdm9pZCBnZXRDb21wdXRl
ZFN0eWxlKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIG5vZGVJZCk7Ci0gICAgICAgIHZvaWQgZ2V0
U3R5bGVTaGVldChpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBzdHlsZVNoZWV0SWQpOwotICAgICAg
ICB2b2lkIGdldFJ1bGVSYW5nZXMoaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgc3R5bGVTaGVldElk
KTsKLSAgICAgICAgdm9pZCBhcHBseVN0eWxlVGV4dChpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBz
dHlsZUlkLCBpbiBET01TdHJpbmcgc3R5bGVUZXh0LCBpbiBET01TdHJpbmcgcHJvcGVydHlOYW1l
KTsKLSAgICAgICAgdm9pZCBzZXRTdHlsZVRleHQoaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgc3R5
bGVJZCwgaW4gRE9NU3RyaW5nIHN0eWxlVGV4dCk7Ci0gICAgICAgIHZvaWQgc2V0U3R5bGVQcm9w
ZXJ0eShpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBzdHlsZUlkLCBpbiBET01TdHJpbmcgbmFtZSwg
aW4gRE9NU3RyaW5nIHZhbHVlKTsKLSAgICAgICAgdm9pZCB0b2dnbGVTdHlsZUVuYWJsZWQoaW4g
bG9uZyBjYWxsSWQsIGluIGxvbmcgc3R5bGVJZCwgaW4gRE9NU3RyaW5nIHByb3BlcnR5TmFtZSwg
aW4gYm9vbGVhbiBkaXNhYmxlZCk7Ci0gICAgICAgIHZvaWQgc2V0UnVsZVNlbGVjdG9yKGluIGxv
bmcgY2FsbElkLCBpbiBsb25nIHJ1bGVJZCwgaW4gRE9NU3RyaW5nIHNlbGVjdG9yLCBpbiBsb25n
IHNlbGVjdGVkTm9kZUlkKTsKLSAgICAgICAgdm9pZCBhZGRSdWxlKGluIGxvbmcgY2FsbElkLCBp
biBET01TdHJpbmcgc2VsZWN0b3IsIGluIGxvbmcgc2VsZWN0ZWROb2RlSWQpOwotCi0gICAgICAg
IHZvaWQgZ2V0Q29va2llcyhpbiBsb25nIGNhbGxJZCk7Ci0gICAgICAgIHZvaWQgZGVsZXRlQ29v
a2llKGluIERPTVN0cmluZyBjb29raWVOYW1lLCBpbiBET01TdHJpbmcgZG9tYWluKTsKLQotI2lm
IGRlZmluZWQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKLSAgICAgICAgdm9pZCBn
ZXRBcHBsaWNhdGlvbkNhY2hlcyhpbiBsb25nIGNhbGxJZCk7Ci0jZW5kaWYKLQotICAgICAgICB2
b2lkIHJlbGVhc2VXcmFwcGVyT2JqZWN0R3JvdXAoaW4gbG9uZyBpbmplY3RlZFNjcmlwdElkLCBp
biBET01TdHJpbmcgb2JqZWN0R3JvdXApOwotICAgICAgICB2b2lkIGRpZEV2YWx1YXRlRm9yVGVz
dEluRnJvbnRlbmQoaW4gbG9uZyBjYWxsSWQsIGluIERPTVN0cmluZyBqc29uUmVzdWx0KTsKLQot
I2lmIGRlZmluZWQoRU5BQkxFX0RBVEFCQVNFKSAmJiBFTkFCTEVfREFUQUJBU0UKLSAgICAgICAg
dm9pZCBnZXREYXRhYmFzZVRhYmxlTmFtZXMoaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgZGF0YWJh
c2VJZCk7Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoRU5BQkxFX0RPTV9TVE9SQUdFKSAmJiBFTkFC
TEVfRE9NX1NUT1JBR0UKLSAgICAgICAgdm9pZCBnZXRET01TdG9yYWdlRW50cmllcyhpbiBsb25n
IGNhbGxJZCwgaW4gbG9uZyBzdG9yYWdlSWQpOwotICAgICAgICB2b2lkIHNldERPTVN0b3JhZ2VJ
dGVtKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIHN0b3JhZ2VJZCwgaW4gRE9NU3RyaW5nIGtleSwg
aW4gRE9NU3RyaW5nIHZhbHVlKTsKLSAgICAgICAgdm9pZCByZW1vdmVET01TdG9yYWdlSXRlbShp
biBsb25nIGNhbGxJZCwgaW4gbG9uZyBzdG9yYWdlSWQsIGluIERPTVN0cmluZyBrZXkpOwotI2Vu
ZGlmCi0gICAgfTsKLX0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dC5oCmluZGV4IDUxNTM4OGMuLmMyMGViMTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQuaApAQCAtNTksNiArNTksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGNoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkKSA9IDA7CiAKICAgICB2
aXJ0dWFsIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJikgPSAwOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCBiOTgyNDU5Li5mNmY3ODExIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZEhv
c3QuaCIKQEAgLTcyLDcgKzczLDYgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
Ojp3aW5kb3dPYmplY3RDbGVhcmVkKCkKIHsKICAgICAvLyBGSVhNRTogZG9uJ3Qga2VlcCByZWZl
cmVuY2UgdG8gdGhlIHNjcmlwdCBzdGF0ZQogICAgIG1fZnJvbnRlbmRTY3JpcHRTdGF0ZSA9IHNj
cmlwdFN0YXRlRnJvbVBhZ2UoZGVidWdnZXJXb3JsZCgpLCBtX2Zyb250ZW5kUGFnZSk7Ci0gICAg
U2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQobV9mcm9udGVuZFNjcmlwdFN0YXRlLCAiSW5zcGVjdG9y
QmFja2VuZCIsIG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdG9yQmFja2VuZCgpKTsKICAg
ICBtX2Zyb250ZW5kSG9zdCA9IEluc3BlY3RvckZyb250ZW5kSG9zdDo6Y3JlYXRlKHRoaXMsIG1f
ZnJvbnRlbmRQYWdlKTsKICAgICBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChtX2Zyb250ZW5kU2Ny
aXB0U3RhdGUsICJJbnNwZWN0b3JGcm9udGVuZEhvc3QiLCBtX2Zyb250ZW5kSG9zdC5nZXQoKSk7
CiB9CkBAIC0xNTksNyArMTU5LDEyIEBAIHVuc2lnbmVkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OmNvbnN0cmFpbmVkQXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQKICAgICB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwogICAgIHJldHVybiByb3VuZGYobWF4KG1pbmltdW1BdHRhY2hlZEhl
aWdodCwgbWluPGZsb2F0PihwcmVmZXJyZWRIZWlnaHQsIHRvdGFsV2luZG93SGVpZ2h0ICogbWF4
aW11bUF0dGFjaGVkSGVpZ2h0UmF0aW8pKSk7CiB9Ci0gICAgCisKK3ZvaWQgSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQoreworICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIoKS0+ZGlzcGF0Y2gobWVzc2FnZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLmgKaW5kZXggY2U2NjFmZS4uOWRjYWE1YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaApAQCAtNTksNiArNTksOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpID0gMDsKICAgICBib29sIGNhbkF0
dGFjaFdpbmRvdygpOwogCisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpID0gMDsKICAgICB2b2lkIHNldEF0dGFjaGVk
V2luZG93KGJvb2wpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5j
cHAKaW5kZXggNzBmYzNhZC4uNjk1N2RkMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwCkBAIC0yMDcsNiArMjA3LDExIEBAIHZvaWQgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0Ojpjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgUGFzdGVib2FyZDo6
Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVQbGFpblRleHQodGV4dCk7CiB9CiAKK3ZvaWQgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0OjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCit7CisgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2UpOwor
fQorCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9z
dDo6c2hvd0NvbnRleHRNZW51KEV2ZW50KiBldmVudCwgY29uc3QgVmVjdG9yPENvbnRleHRNZW51
SXRlbSo+JiBpdGVtcykKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmgKaW5kZXggNGQzZTBkMS4uN2ZiNGExZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmgKQEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbGVk
IGZyb20gW0N1c3RvbV0gaW1wbGVtZW50YXRpb25zLgogICAgIHZvaWQgc2hvd0NvbnRleHRNZW51
KEV2ZW50KiwgY29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRlbSo+JiBpdGVtcyk7CisgICAgdm9p
ZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiBwcml2YXRl
OgogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5pZGwKaW5kZXggMTEzOWExYy4uZDFiMzYwNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAorKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCkBAIC01MCw1ICs1MCw2IEBAIG1vZHVs
ZSBjb3JlIHsKICAgICAgICAgW0N1c3RvbV0gRE9NU3RyaW5nIHBsYXRmb3JtKCk7CiAgICAgICAg
IFtDdXN0b21dIERPTVN0cmluZyBwb3J0KCk7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgc2hvd0Nv
bnRleHRNZW51KGluIE1vdXNlRXZlbnQgZXZlbnQsIGluIERPTU9iamVjdCBpdGVtcyk7CisgICAg
ICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoaW4gRE9NU3RyaW5nIG1lc3NhZ2UpOwogICAg
IH07CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9y
QmFja2VuZFN0dWIuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFj
a2VuZFN0dWIuanMKaW5kZXggODU3ZTAyNi4uYmMzNDRmOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckJhY2tlbmRTdHViLmpzCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzIsMjYz
ICszMiw5OSBAQCBpZiAoIXdpbmRvdy5JbnNwZWN0b3JCYWNrZW5kKSB7CiAKIFdlYkluc3BlY3Rv
ci5JbnNwZWN0b3JCYWNrZW5kU3R1YiA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0aGlzLl9hdHRhY2hl
ZFdpbmRvd0hlaWdodCA9IDA7Ci0gICAgdGhpcy5fdGltZWxpbmVFbmFibGVkID0gZmFsc2U7Cisg
ICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiYWRkSW5zcGVjdGVkTm9kZSIpOworICAgIHRoaXMu
X3JlZ2lzdGVyRGVsZWdhdGUoImFkZFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQiKTsKKyAgICB0aGlz
Ll9yZWdpc3RlckRlbGVnYXRlKCJjaGFuZ2VUYWdOYW1lIik7CisgICAgdGhpcy5fcmVnaXN0ZXJE
ZWxlZ2F0ZSgiY2xlYXJDb25zb2xlTWVzc2FnZXMiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVn
YXRlKCJjb3B5Tm9kZSIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImRlbGV0ZUNvb2tp
ZSIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImRpZEV2YWx1YXRlRm9yVGVzdEluRnJv
bnRlbmQiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJkaXNhYmxlTW9uaXRvcmluZ1hI
UiIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImRpc2FibGVSZXNvdXJjZVRyYWNraW5n
Iik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiZGlzYWJsZVNlYXJjaGluZ0Zvck5vZGUi
KTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJkaXNhYmxlVGltZWxpbmUiKTsKKyAgICB0
aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJkaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQiKTsKKyAgICB0
aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJlbmFibGVNb25pdG9yaW5nWEhSIik7CisgICAgdGhpcy5f
cmVnaXN0ZXJEZWxlZ2F0ZSgiZW5hYmxlUmVzb3VyY2VUcmFja2luZyIpOworICAgIHRoaXMuX3Jl
Z2lzdGVyRGVsZWdhdGUoImVuYWJsZVNlYXJjaGluZ0Zvck5vZGUiKTsKKyAgICB0aGlzLl9yZWdp
c3RlckRlbGVnYXRlKCJlbmFibGVUaW1lbGluZSIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdh
dGUoImdldENoaWxkTm9kZXMiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJnZXRDb29r
aWVzIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiZ2V0RGF0YWJhc2VUYWJsZU5hbWVz
Iik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiZ2V0RE9NU3RvcmFnZUVudHJpZXMiKTsK
KyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUiKTsK
KyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJnZXRPdXRlckhUTUwiKTsKKyAgICB0aGlzLl9y
ZWdpc3RlckRlbGVnYXRlKCJnZXRQcm9maWxlIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0
ZSgiZ2V0UHJvZmlsZUhlYWRlcnMiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJyZW1v
dmVQcm9maWxlIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiY2xlYXJQcm9maWxlcyIp
OworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImdldFJlc291cmNlQ29udGVudCIpOworICAg
IHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImhpZ2hsaWdodERPTU5vZGUiKTsKKyAgICB0aGlzLl9y
ZWdpc3RlckRlbGVnYXRlKCJoaWRlRE9NTm9kZUhpZ2hsaWdodCIpOworICAgIHRoaXMuX3JlZ2lz
dGVyRGVsZWdhdGUoInBlcmZvcm1TZWFyY2giKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRl
KCJwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRl
KCJyZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0
ZSgicmVtb3ZlQWxsU2NyaXB0c1RvRXZhbHVhdGVPbkxvYWQiKTsKKyAgICB0aGlzLl9yZWdpc3Rl
ckRlbGVnYXRlKCJyZWxvYWRQYWdlIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgicmVt
b3ZlQXR0cmlidXRlIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgicmVtb3ZlRE9NU3Rv
cmFnZUl0ZW0iKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJyZW1vdmVOb2RlIik7Cisg
ICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic2F2ZUFwcGxpY2F0aW9uU2V0dGluZ3MiKTsKKyAg
ICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJzYXZlU2Vzc2lvblNldHRpbmdzIik7CisgICAgdGhp
cy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic2VhcmNoQ2FuY2VsZWQiKTsKKyAgICB0aGlzLl9yZWdpc3Rl
ckRlbGVnYXRlKCJzZXRBdHRyaWJ1dGUiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJz
ZXRET01TdG9yYWdlSXRlbSIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInNldEluamVj
dGVkU2NyaXB0U291cmNlIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic2V0T3V0ZXJI
VE1MIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic2V0VGV4dE5vZGVWYWx1ZSIpOwor
ICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInN0YXJ0UHJvZmlsaW5nIik7CisgICAgdGhpcy5f
cmVnaXN0ZXJEZWxlZ2F0ZSgic3RhcnRUaW1lbGluZVByb2ZpbGVyIik7CisgICAgdGhpcy5fcmVn
aXN0ZXJEZWxlZ2F0ZSgic3RvcFByb2ZpbGluZyIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdh
dGUoInN0b3BUaW1lbGluZVByb2ZpbGVyIik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgi
c3RvcmVMYXN0QWN0aXZlUGFuZWwiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJ0YWtl
SGVhcFNuYXBzaG90Iik7CisKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJnZXRBbGxTdHls
ZXMiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJnZXRTdHlsZXMiKTsKKyAgICB0aGlz
Ll9yZWdpc3RlckRlbGVnYXRlKCJnZXRDb21wdXRlZFN0eWxlIik7CisgICAgdGhpcy5fcmVnaXN0
ZXJEZWxlZ2F0ZSgiZ2V0SW5saW5lU3R5bGUiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRl
KCJnZXRTdHlsZVNoZWV0Iik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiZ2V0UnVsZVJh
bmdlcyIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImFwcGx5U3R5bGVUZXh0Iik7Cisg
ICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgic2V0U3R5bGVUZXh0Iik7CisgICAgdGhpcy5fcmVn
aXN0ZXJEZWxlZ2F0ZSgic2V0U3R5bGVQcm9wZXJ0eSIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVs
ZWdhdGUoInRvZ2dsZVN0eWxlRW5hYmxlZCIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUo
InNldFJ1bGVTZWxlY3RvciIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImFkZFJ1bGUi
KTsKKworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImRpc2FibGVEZWJ1Z2dlciIpOworICAg
IHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImVkaXRTY3JpcHRTb3VyY2UiKTsKKyAgICB0aGlzLl9y
ZWdpc3RlckRlbGVnYXRlKCJnZXRTY3JpcHRTb3VyY2UiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRl
bGVnYXRlKCJlbmFibGVEZWJ1Z2dlciIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInNl
dEJyZWFrcG9pbnQiKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJyZW1vdmVCcmVha3Bv
aW50Iik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0ZSgiYWN0aXZhdGVCcmVha3BvaW50cyIp
OworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoImRlYWN0aXZhdGVCcmVha3BvaW50cyIpOwor
ICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInJlc3VtZSIpOworICAgIHRoaXMuX3JlZ2lzdGVy
RGVsZWdhdGUoInN0ZXBJbnRvU3RhdGVtZW50Iik7CisgICAgdGhpcy5fcmVnaXN0ZXJEZWxlZ2F0
ZSgic3RlcE91dE9mRnVuY3Rpb24iKTsKKyAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCJzdGVw
T3ZlclN0YXRlbWVudCIpOworICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoInNldFBhdXNlT25F
eGNlcHRpb25zU3RhdGUiKTsKIH0KIAogV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHVi
LnByb3RvdHlwZSA9IHsKLSAgICB3cmFwQ2FsbGJhY2s6IGZ1bmN0aW9uKGZ1bmMpCisgICAgX3Jl
Z2lzdGVyRGVsZWdhdGU6IGZ1bmN0aW9uKG1ldGhvZE5hbWUpCiAgICAgewotICAgICAgICByZXR1
cm4gZnVuYzsKKyAgICAgICAgdGhpc1ttZXRob2ROYW1lXSA9IHRoaXMuc2VuZE1lc3NhZ2VUb0Jh
Y2tlbmQuYmluZCh0aGlzLCBtZXRob2ROYW1lKTsKICAgICB9LAogCi0gICAgY2xvc2VXaW5kb3c6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3dpbmRvd1Zpc2libGUgPSBmYWxzZTsK
LSAgICB9LAotCi0gICAgYXR0YWNoOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBk
ZXRhY2g6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIHN0b3JlTGFzdEFjdGl2ZVBh
bmVsOiBmdW5jdGlvbihwYW5lbCkKLSAgICB7Ci0gICAgfSwKLQotICAgIGNsZWFyQ29uc29sZU1l
c3NhZ2VzOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBnZXRPdXRlckhUTUw6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIHNldE91dGVySFRNTDogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICB9LAotCi0gICAgYWRkSW5zcGVjdGVkTm9kZTogZnVuY3Rpb24oKQotICAgIHsK
LSAgICB9LAotCi0gICAgc2VhcmNoOiBmdW5jdGlvbihzb3VyY2VSb3csIHF1ZXJ5KQotICAgIHsK
LSAgICB9LAotCi0gICAgbW92ZUJ5VW5yZXN0cmljdGVkOiBmdW5jdGlvbih4LCB5KQotICAgIHsK
LSAgICB9LAotCi0gICAgZ2V0UmVzb3VyY2VDb250ZW50OiBmdW5jdGlvbihjYWxsSWQsIGlkZW50
aWZpZXIpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuZGlkR2V0UmVzb3VyY2VDb250ZW50
KGNhbGxJZCwgIiIpOwotICAgIH0sCi0KLSAgICBoaWdobGlnaHRET01Ob2RlOiBmdW5jdGlvbihu
b2RlKQotICAgIHsKLSAgICB9LAotCi0gICAgaGlkZURPTU5vZGVIaWdobGlnaHQ6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgfSwKLQotICAgIGluc3BlY3RlZFdpbmRvdzogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHdpbmRvdzsKLSAgICB9LAotCi0gICAgbG9hZGVkOiBmdW5jdGlv
bigpCi0gICAgewotICAgIH0sCi0KLSAgICBsb2NhbGl6ZWRTdHJpbmdzVVJMOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAgIH0sCi0KLSAgICB3aW5kb3dV
bmxvYWRpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
LAotCi0gICAgaGlkZGVuUGFuZWxzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4g
IiI7Ci0gICAgfSwKLQotICAgIGVuYWJsZVJlc291cmNlVHJhY2tpbmc6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyYWNraW5nV2FzRW5hYmxlZCgpOwot
ICAgIH0sCi0KLSAgICBkaXNhYmxlUmVzb3VyY2VUcmFja2luZzogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJhY2tpbmdXYXNEaXNhYmxlZCgpOwotICAg
IH0sCi0KLQotICAgIGVuYWJsZVNlYXJjaGluZ0Zvck5vZGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5zZWFyY2hpbmdGb3JOb2RlV2FzRW5hYmxlZCgpOwotICAgIH0s
Ci0KLSAgICBkaXNhYmxlU2VhcmNoaW5nRm9yTm9kZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgV2ViSW5zcGVjdG9yLnNlYXJjaGluZ0Zvck5vZGVXYXNEaXNhYmxlZCgpOwotICAgIH0sCi0K
LSAgICBlbmFibGVNb25pdG9yaW5nWEhSOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBXZWJJ
bnNwZWN0b3IubW9uaXRvcmluZ1hIUldhc0VuYWJsZWQoKTsKLSAgICB9LAotCi0gICAgZGlzYWJs
ZU1vbml0b3JpbmdYSFI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5t
b25pdG9yaW5nWEhSV2FzRGlzYWJsZWQoKTsKLSAgICB9LAotCi0gICAgcmVsb2FkUGFnZTogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAgZW5hYmxlRGVidWdnZXI6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlcldhc0VuYWJsZWQoKTsKLSAgICB9
LAotCi0gICAgZGlzYWJsZURlYnVnZ2VyOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBXZWJJ
bnNwZWN0b3IuZGVidWdnZXJXYXNEaXNhYmxlZCgpOwotICAgIH0sCi0KLSAgICBzZXRCcmVha3Bv
aW50OiBmdW5jdGlvbihjYWxsSWQsIHNvdXJjZUlELCBsaW5lLCBlbmFibGVkLCBjb25kaXRpb24p
Ci0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuZGlkU2V0QnJlYWtwb2ludChjYWxsSWQsIHRy
dWUsIGxpbmUpOwotICAgIH0sCi0KLSAgICByZW1vdmVCcmVha3BvaW50OiBmdW5jdGlvbihzb3Vy
Y2VJRCwgbGluZSkKLSAgICB7Ci0gICAgfSwKLQotICAgIGFjdGl2YXRlQnJlYWtwb2ludHM6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzQWN0aXZhdGVkID0gdHJ1
ZTsKLSAgICB9LAotCi0gICAgZGVhY3RpdmF0ZUJyZWFrcG9pbnRzOiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICB0aGlzLl9icmVha3BvaW50c0FjdGl2YXRlZCA9IGZhbHNlOwotICAgIH0sCi0K
LSAgICBwYXVzZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAgc2V0UGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZTogZnVuY3Rpb24odmFsdWUpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0
b3IudXBkYXRlUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSh2YWx1ZSk7Ci0gICAgfSwKLQotICAgIGVk
aXRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5k
aWRFZGl0U2NyaXB0U291cmNlKGNhbGxJZCwgZmFsc2UpOwotICAgIH0sCi0KLSAgICBnZXRTY3Jp
cHRTb3VyY2U6IGZ1bmN0aW9uKGNhbGxJZCwgc291cmNlSUQpCi0gICAgewotICAgICAgICBXZWJJ
bnNwZWN0b3IuZGlkR2V0U2NyaXB0U291cmNlKGNhbGxJZCwgbnVsbCk7Ci0gICAgfSwKLQotICAg
IHJlc3VtZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAgZW5hYmxlUHJvZmlsZXI6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wcm9maWxlcldhc0VuYWJs
ZWQoKTsKLSAgICB9LAotCi0gICAgZGlzYWJsZVByb2ZpbGVyOiBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICBXZWJJbnNwZWN0b3IucHJvZmlsZXJXYXNEaXNhYmxlZCgpOwotICAgIH0sCi0KLSAg
ICBzdGFydFByb2ZpbGluZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAgc3RvcFBy
b2ZpbGluZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAgZ2V0UHJvZmlsZUhlYWRl
cnM6IGZ1bmN0aW9uKGNhbGxJZCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5kaWRHZXRQ
cm9maWxlSGVhZGVycyhjYWxsSWQsIFtdKTsKLSAgICB9LAotCi0gICAgZ2V0UHJvZmlsZTogZnVu
Y3Rpb24oY2FsbElkLCB1aWQpCi0gICAgewotICAgIH0sCi0KLSAgICB0YWtlSGVhcFNuYXBzaG90
OiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBkYXRhYmFzZVRhYmxlTmFtZXM6IGZ1
bmN0aW9uKGRhdGFiYXNlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFtdOwotICAgIH0sCi0KLSAg
ICBzdGVwSW50b1N0YXRlbWVudDogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAgc3Rl
cE91dE9mRnVuY3Rpb246IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIHN0ZXBPdmVy
U3RhdGVtZW50OiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBzYXZlQXBwbGljYXRp
b25TZXR0aW5nczogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAgc2F2ZVNlc3Npb25T
ZXR0aW5nczogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotCi0gICAgZGlzcGF0Y2hPbkluamVj
dGVkU2NyaXB0OiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICByZWxlYXNlV3JhcHBl
ck9iamVjdEdyb3VwOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBzZXRJbmplY3Rl
ZFNjcmlwdFNvdXJjZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9LAotICAgIAotICAgIGFkZFNj
cmlwdFRvRXZhbHVhdGVPbkxvYWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLQotICAgIHJl
bW92ZUFsbFNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0s
Ci0KLSAgICBwZXJmb3JtU2VhcmNoOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBz
ZWFyY2hDYW5jZWxlZDogZnVuY3Rpb24oKQorICAgIHNlbmRNZXNzYWdlVG9CYWNrZW5kOiBmdW5j
dGlvbigpCiAgICAgeworICAgICAgICB2YXIgbWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KEFycmF5
LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpOworICAgICAgICBpZiAoV2ViSW5zcGVj
dG9yLl9wYXJhbXNPYmplY3QgJiYgInBhZ2UiIGluIFdlYkluc3BlY3Rvci5fcGFyYW1zT2JqZWN0
KQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNvY2tldC5zZW5kKG1lc3NhZ2UpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2VuZE1lc3NhZ2VUb0Jh
Y2tlbmQobWVzc2FnZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5Y2MxODIzLi40MmU3
MDgxIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wNy0yNyAgSWx5YSBUaWto
b25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBDdXJyZW50IGltcGxlbWVudGF0
aW9uIG9mIG1lc3NhZ2UgYmFzZWQgaW5zcGVjdG9yCisgICAgICAgIHRyYW5zcG9ydCBnZW5lcmF0
ZWQgYnkgQ29kZUdlbmVyYXRvckluc3BlY3RvciBzaG91bGQgYmUgdXBzdHJlYW1lZAorICAgICAg
ICBmcm9tIFdlYktpdC9jaHJvbWl1bSB0byBXZWJDb3JlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI5ODMKKworICAgICAgICAqIFdlYktpdC5neXBp
OgorICAgICAgICAqIHNyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGw6OnNlbmRNZXNzYWdlVG9CYWNr
ZW5kKToKKyAgICAgICAgKiBzcmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmg6CisgICAg
ICAgICogc3JjL1Rvb2xzQWdlbnQuaDoKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2VudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlzcGF0Y2hP
bkluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50
SW1wbDo6aW5pdERldlRvb2xzQWdlbnRIb3N0KToKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNB
Z2VudEltcGwuaDoKKyAgICAgICAgKiBzcmMvanMvSW5zcGVjdG9yQ29udHJvbGxlckltcGwuanM6
IFJlbW92ZWQuCisKIDIwMTAtMDctMjcgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cGkKaW5kZXggN2Q3YjE5Yy4uYjQ1ZTNlNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXBpCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtMzMsNyArMzMs
NiBAQAogICAgICAgICAjIExpc3Qgb2YgRGV2VG9vbHMgc291cmNlIGZpbGVzLCBvcmRlcmVkIGJ5
IGRlcGVuZGVuY2llcy4gSXQgaXMgdXNlZCBib3RoCiAgICAgICAgICMgZm9yIGNvcHlpbmcgdGhl
bSB0byByZXNvdXJjZSBkaXIsIGFuZCBmb3IgZ2VuZXJhdGluZyAnZGV2dG9vbHMuaHRtbCcgZmls
ZS4KICAgICAgICAgJ2RldnRvb2xzX2pzX2ZpbGVzJzogWwotICAgICAgICAgICAgJ3NyYy9qcy9J
bnNwZWN0b3JDb250cm9sbGVySW1wbC5qcycsCiAgICAgICAgICAgICAnc3JjL2pzL1Byb2ZpbGVy
QWdlbnQuanMnLAogICAgICAgICAgICAgJ3NyYy9qcy9Qcm9maWxlclByb2Nlc3Nvci5qcycsCiAg
ICAgICAgICAgICAnc3JjL2pzL0hlYXBQcm9maWxlclBhbmVsLmpzJywKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmNwcCBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmNwcAppbmRleCA3M2Nl
ZGZhLi44NzBiZGVlIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JG
cm9udGVuZENsaWVudEltcGwuY3BwCkBAIC0xMjQsNCArMTI0LDE1IEBAIHZvaWQgSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRJbXBsOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJs
KQogICAgIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2V0VGl0bGUo
IkRldmVsb3BlciBUb29scyAtICIgKyB1cmwpOwogfQogCit2b2lkIEluc3BlY3RvckZyb250ZW5k
Q2xpZW50SW1wbDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQor
eworICAgIFdlYkRldlRvb2xzTWVzc2FnZURhdGEgbWVzc2FnZURhdGE7CisgICAgbWVzc2FnZURh
dGEuY2xhc3NOYW1lID0gIlRvb2xzQWdlbnQiOworICAgIG1lc3NhZ2VEYXRhLm1ldGhvZE5hbWUg
PSAiZGlzcGF0Y2hPbkluc3BlY3RvckNvbnRyb2xsZXIiOworICAgIFdlYlZlY3RvcjxXZWJTdHJp
bmc+IGFyZ3Moc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSk7CisgICAgYXJnc1swXSA9IG1lc3NhZ2U7
CisgICAgbWVzc2FnZURhdGEuYXJndW1lbnRzLnN3YXAoYXJncyk7CisgICAgbV9jbGllbnQtPnNl
bmRNZXNzYWdlVG9BZ2VudChtZXNzYWdlRGF0YSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBs
LmgKaW5kZXggZjg2OWFjMy4uZjcxNzRjZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbC5oCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYpOwogCisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYpOwogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpQYWdlKiBtX2Zyb250ZW5k
UGFnZTsKICAgICBXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50KiBtX2NsaWVudDsKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvVG9vbHNBZ2VudC5oIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Ub29sc0FnZW50LmgKaW5kZXggYzlhMTVkNS4uOTM3ZmNmMCAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9Ub29sc0FnZW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9Ub29s
c0FnZW50LmgKQEAgLTM5LDggKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAvLyBBUEkgZm9y
IGF1eGlsaWFyeSBVSSBmdW5jdGlvbnMgc3VjaCBhcyBkb20gZWxlbWVudHMgaGlnaGxpZ2h0aW5n
LgogI2RlZmluZSBUT09MU19BR0VOVF9TVFJVQ1QoTUVUSE9EMCwgTUVUSE9EMSwgTUVUSE9EMiwg
TUVUSE9EMywgTUVUSE9ENCwgTUVUSE9ENSkgXAogICAgIC8qIERpc3BhdGNoZXMgZ2l2ZW4gZnVu
Y3Rpb24gb24gdGhlIEluc3BlY3RvckNvbnRyb2xsZXIgb2JqZWN0ICovIFwKLSAgICBNRVRIT0Qy
KGRpc3BhdGNoT25JbnNwZWN0b3JDb250cm9sbGVyLCBpbnQgLyogY2FsbF9pZCAqLywgXAotICAg
ICAgICBTdHJpbmcgLyogbWVzc2FnZSAqLykgXAorICAgIE1FVEhPRDEoZGlzcGF0Y2hPbkluc3Bl
Y3RvckNvbnRyb2xsZXIsIFN0cmluZyAvKiBtZXNzYWdlICovKSBcCiAKIERFRklORV9SUENfQ0xB
U1MoVG9vbHNBZ2VudCwgVE9PTFNfQUdFTlRfU1RSVUNUKQogCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCmluZGV4IDNkNzllMGMuLjFhNjViZmUgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCkBAIC01NSw3ICs1
NSw2IEBACiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5o
IgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4SW5zcGVjdG9yQmFja2VuZC5o
IgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgogI2luY2x1
ZGUgIldlYkRhdGFTb3VyY2UuaCIKQEAgLTkzLDcgKzkyLDYgQEAgdXNpbmcgV2ViQ29yZTo6U2Ny
aXB0U3RhdGU7CiB1c2luZyBXZWJDb3JlOjpTY3JpcHRWYWx1ZTsKIHVzaW5nIFdlYkNvcmU6OlN0
cmluZzsKIHVzaW5nIFdlYkNvcmU6OlY4RE9NV3JhcHBlcjsKLXVzaW5nIFdlYkNvcmU6OlY4SW5z
cGVjdG9yQmFja2VuZDsKIHVzaW5nIFdlYkNvcmU6OlY4UHJveHk7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtMzA5LDExICszMDcsOSBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpmb3Jj
ZVJlcGFpbnQoKQogICAgIG1fY2xpZW50LT5mb3JjZVJlcGFpbnQoKTsKIH0KIAotdm9pZCBXZWJE
ZXZUb29sc0FnZW50SW1wbDo6ZGlzcGF0Y2hPbkluc3BlY3RvckNvbnRyb2xsZXIoaW50IGNhbGxJ
ZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlz
cGF0Y2hPbkluc3BlY3RvckNvbnRyb2xsZXIoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAg
IFN0cmluZyBleGNlcHRpb247Ci0gICAgaW5zcGVjdG9yQ29udHJvbGxlcigpLT5pbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcigpLT5kaXNwYXRjaChtZXNzYWdlLCAmZXhjZXB0aW9uKTsKLSAgICBt
X3Rvb2xzQWdlbnREZWxlZ2F0ZVN0dWItPmRpZERpc3BhdGNoT24oY2FsbElkLCAiIiwgZXhjZXB0
aW9uKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyKCktPmluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKCktPmRpc3BhdGNoKG1lc3NhZ2UpOwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBs
OjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0
YSYgZGF0YSkKQEAgLTM3NSwzOCArMzcxLDYgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6
aW5pdERldlRvb2xzQWdlbnRIb3N0KCkKICAgICAgICAgImRpc3BhdGNoIiwKICAgICAgICAgV2Vi
RGV2VG9vbHNBZ2VudEltcGw6OmpzRGlzcGF0Y2hPbkNsaWVudCk7CiAgICAgZGV2dG9vbHNBZ2Vu
dEhvc3QuYnVpbGQoKTsKLQotICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICB2ODo6Q29u
dGV4dDo6U2NvcGUgdXRpbGl0eVNjb3BlKG1fdXRpbGl0eUNvbnRleHQpOwotICAgIC8vIENhbGwg
Y3VzdG9tIGNvZGUgdG8gY3JlYXRlIGluc3BlY3RvciBiYWNrZW5kIHdyYXBwZXIgaW4gdGhlIHV0
aWxpdHkgY29udGV4dAotICAgIC8vIGluc3RlYWQgb2YgY2FsbGluZyBWOERPTVdyYXBwZXI6OmNv
bnZlcnRUb1Y4T2JqZWN0IHRoYXQgd291bGQgY3JlYXRlIHRoZQotICAgIC8vIHdyYXBwZXIgaW4g
dGhlIFBhZ2UgbWFpbiBmcmFtZSBjb250ZXh0LgotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
YmFja2VuZFdyYXBwZXIgPSBjcmVhdGVJbnNwZWN0b3JCYWNrZW5kVjhXcmFwcGVyKCk7Ci0gICAg
aWYgKGJhY2tlbmRXcmFwcGVyLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fdXRp
bGl0eUNvbnRleHQtPkdsb2JhbCgpLT5TZXQodjg6OlN0cmluZzo6TmV3KCJJbnNwZWN0b3JCYWNr
ZW5kIiksIGJhY2tlbmRXcmFwcGVyKTsKLX0KLQotdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFdlYkRl
dlRvb2xzQWdlbnRJbXBsOjpjcmVhdGVJbnNwZWN0b3JCYWNrZW5kVjhXcmFwcGVyKCkKLXsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSBWOEluc3BlY3RvckJhY2tlbmQ6
OkdldFRlbXBsYXRlKCktPkdldEZ1bmN0aW9uKCk7Ci0gICAgaWYgKGZ1bmN0aW9uLklzRW1wdHko
KSkgewotICAgICAgICAvLyBSZXR1cm4gaWYgYWxsb2NhdGlvbiBmYWlsZWQuCi0gICAgICAgIHJl
dHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKLSAgICB9Ci0gICAgdjg6OkxvY2FsPHY4OjpP
YmplY3Q+IGluc3RhbmNlID0gU2FmZUFsbG9jYXRpb246Om5ld0luc3RhbmNlKGZ1bmN0aW9uKTsK
LSAgICBpZiAoaW5zdGFuY2UuSXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIEF2b2lkIHNldHRpbmcg
dGhlIHdyYXBwZXIgaWYgYWxsb2NhdGlvbiBmYWlsZWQuCi0gICAgICAgIHJldHVybiB2ODo6TG9j
YWw8djg6Ok9iamVjdD4oKTsKLSAgICB9Ci0gICAgSW5zcGVjdG9yQmFja2VuZCogYmFja2VuZCA9
IG1fd2ViVmlld0ltcGwtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5pbnNwZWN0b3JC
YWNrZW5kKCk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGluc3RhbmNlLCAmVjhJ
bnNwZWN0b3JCYWNrZW5kOjppbmZvLCBiYWNrZW5kKTsKLSAgICAvLyBDcmVhdGUgYSB3ZWFrIHJl
ZmVyZW5jZSB0byB0aGUgdjggd3JhcHBlciBvZiBJbnNwZWN0b3JCYWNrZW5kIHRvIGRlcmVmCi0g
ICAgLy8gSW5zcGVjdG9yQmFja2VuZCB3aGVuIHRoZSB3cmFwcGVyIGlzIGdhcmJhZ2UgY29sbGVj
dGVkLgotICAgIGJhY2tlbmQtPnJlZigpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IHdlYWtIYW5kbGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGluc3RhbmNlKTsK
LSAgICB3ZWFrSGFuZGxlLk1ha2VXZWFrKGJhY2tlbmQsICZJbnNwZWN0b3JCYWNrZW5kV2Vha1Jl
ZmVyZW5jZUNhbGxiYWNrKTsKLSAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKIHZvaWQgV2ViRGV2
VG9vbHNBZ2VudEltcGw6OmNyZWF0ZUluc3BlY3RvckZyb250ZW5kUHJveHkoKQpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCmluZGV4IDFiYjcxYTMuLmM4ZTIyYjAg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaAor
KysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKQEAgLTcyLDcg
KzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYkRldlRvb2xzQWdlbnRJbXBsKCk7CiAK
ICAgICAvLyBUb29sc0FnZW50IGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaE9uSW5zcGVjdG9yQ29udHJvbGxlcihpbnQgY2FsbElkLCBjb25zdCBXZWJDb3JlOjpTdHJp
bmcmIG1lc3NhZ2UpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE9uSW5zcGVjdG9yQ29udHJv
bGxlcihjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG1lc3NhZ2UpOwogCiAgICAgLy8gV2ViRGV2VG9v
bHNBZ2VudFByaXZhdGUgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCB2b2lkIGRpZENsZWFy
V2luZG93T2JqZWN0KFdlYkZyYW1lSW1wbCogZnJhbWUpOwpAQCAtMTI3LDEyICsxMjcsNiBAQCBw
cml2YXRlOgogCiAgICAgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlcigpOwogCi0gICAgLy8gQ3JlYXRlcyBJbnNwZWN0b3JCYWNrZW5kIHY4IHdyYXBwZXIg
aW4gdGhlIHV0aWxpdHkgY29udGV4dCBzbyB0aGF0IGl0J3MKLSAgICAvLyBtZXRob2RzIHByb3Rv
dHlwZSBpcyBGdW5jdGlvbi5wcm90b3lwZSBvYmplY3QgZnJvbSB0aGUgdXRpbGl0eSBjb250ZXh0
LgotICAgIC8vIE90aGVyd2lzZSBzb21lIHVzZWZ1bCBtZXRob2RzICBkZWZpbmVkIG9uIEZ1bmN0
aW9uLnByb3RvdHlwZShzdWNoIGFzIGJpbmQpCi0gICAgLy8gYXJlIG1pc3NpbmcgZm9yIEluc3Bl
Y3RvckNvbnRyb2xsZXIgbmF0aXZlIG1ldGhvZHMuCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+
IGNyZWF0ZUluc3BlY3RvckJhY2tlbmRWOFdyYXBwZXIoKTsKLQogICAgIGludCBtX2hvc3RJZDsK
ICAgICBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBtX2NsaWVudDsKICAgICBXZWJWaWV3SW1wbCog
bV93ZWJWaWV3SW1wbDsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvSW5zcGVj
dG9yQ29udHJvbGxlckltcGwuanMgYi9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0luc3BlY3RvckNv
bnRyb2xsZXJJbXBsLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGVlMWU0Li4w
MDAwMDAwCi0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvSW5zcGVjdG9yQ29udHJvbGxlcklt
cGwuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8qKgotICogQGZpbGVvdmVydmll
dyBEZXZUb29scycgaW1wbGVtZW50YXRpb24gb2YgdGhlIEluc3BlY3RvckNvbnRyb2xsZXIgQVBJ
LgotICovCi0KLWlmICghdGhpcy5kZXZ0b29scykKLSAgICBkZXZ0b29scyA9IHt9OwotCi1kZXZ0
b29scy5JbnNwZWN0b3JCYWNrZW5kSW1wbCA9IGZ1bmN0aW9uKCkKLXsKLSAgICBXZWJJbnNwZWN0
b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIuY2FsbCh0aGlzKTsKLSAgICB0aGlzLmluc3RhbGxJbnNw
ZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJhZGRJbnNwZWN0ZWROb2RlIik7Ci0gICAgdGhpcy5p
bnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygiYWRkU2NyaXB0VG9FdmFsdWF0ZU9u
TG9hZCIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImNo
YW5nZVRhZ05hbWUiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdh
dGVfKCJjbGVhckNvbnNvbGVNZXNzYWdlcyIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNv
bnRyb2xsZXJEZWxlZ2F0ZV8oImNvcHlOb2RlIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9y
Q29udHJvbGxlckRlbGVnYXRlXygiZGVsZXRlQ29va2llIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5z
cGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygiZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCIp
OwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImRpc2FibGVN
b25pdG9yaW5nWEhSIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVn
YXRlXygiZGlzYWJsZVJlc291cmNlVHJhY2tpbmciKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0
b3JDb250cm9sbGVyRGVsZWdhdGVfKCJkaXNhYmxlU2VhcmNoaW5nRm9yTm9kZSIpOwotICAgIHRo
aXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImRpc2FibGVUaW1lbGluZSIp
OwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImRpc3BhdGNo
T25JbmplY3RlZFNjcmlwdCIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJE
ZWxlZ2F0ZV8oImVuYWJsZU1vbml0b3JpbmdYSFIiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0
b3JDb250cm9sbGVyRGVsZWdhdGVfKCJlbmFibGVSZXNvdXJjZVRyYWNraW5nIik7Ci0gICAgdGhp
cy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygiZW5hYmxlU2VhcmNoaW5nRm9y
Tm9kZSIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImVu
YWJsZVRpbWVsaW5lIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVn
YXRlXygiZ2V0Q2hpbGROb2RlcyIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xs
ZXJEZWxlZ2F0ZV8oImdldENvb2tpZXMiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250
cm9sbGVyRGVsZWdhdGVfKCJnZXRBcHBsaWNhdGlvbkNhY2hlcyIpOwotICAgIHRoaXMuaW5zdGFs
bEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImdldERhdGFiYXNlVGFibGVOYW1lcyIpOwot
ICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImdldERPTVN0b3Jh
Z2VFbnRyaWVzIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRl
XygiZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9y
Q29udHJvbGxlckRlbGVnYXRlXygiZ2V0T3V0ZXJIVE1MIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5z
cGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygiZ2V0UHJvZmlsZSIpOwotICAgIHRoaXMuaW5zdGFs
bEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImdldFByb2ZpbGVIZWFkZXJzIik7Ci0gICAg
dGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygicmVtb3ZlUHJvZmlsZSIp
OwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImNsZWFyUHJv
ZmlsZXMiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJn
ZXRSZXNvdXJjZUNvbnRlbnQiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVy
RGVsZWdhdGVfKCJoaWdobGlnaHRET01Ob2RlIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9y
Q29udHJvbGxlckRlbGVnYXRlXygiaGlkZURPTU5vZGVIaWdobGlnaHQiKTsKLSAgICB0aGlzLmlu
c3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJwZXJmb3JtU2VhcmNoIik7Ci0gICAg
dGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygicHVzaE5vZGVCeVBhdGhU
b0Zyb250ZW5kIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRl
XygicmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cCIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3Rv
ckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInJlbW92ZUFsbFNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkIik7
Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygicmVsb2FkUGFn
ZSIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInJlbW92
ZUF0dHJpYnV0ZSIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0
ZV8oInJlbW92ZURPTVN0b3JhZ2VJdGVtIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29u
dHJvbGxlckRlbGVnYXRlXygicmVtb3ZlTm9kZSIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3Rv
ckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInNhdmVBcHBsaWNhdGlvblNldHRpbmdzIik7Ci0gICAgdGhp
cy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic2F2ZVNlc3Npb25TZXR0aW5n
cyIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInNlYXJj
aENhbmNlbGVkIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRl
Xygic2V0QXR0cmlidXRlIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRl
bGVnYXRlXygic2V0RE9NU3RvcmFnZUl0ZW0iKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JD
b250cm9sbGVyRGVsZWdhdGVfKCJzZXRJbmplY3RlZFNjcmlwdFNvdXJjZSIpOwotICAgIHRoaXMu
aW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInNldE91dGVySFRNTCIpOwotICAg
IHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInNldFRleHROb2RlVmFs
dWUiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzdGFy
dFByb2ZpbGluZyIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0
ZV8oInN0YXJ0VGltZWxpbmVQcm9maWxlciIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNv
bnRyb2xsZXJEZWxlZ2F0ZV8oInN0b3BQcm9maWxpbmciKTsKLSAgICB0aGlzLmluc3RhbGxJbnNw
ZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzdG9wVGltZWxpbmVQcm9maWxlciIpOwotICAgIHRo
aXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInN0b3JlTGFzdEFjdGl2ZVBh
bmVsIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygidGFr
ZUhlYXBTbmFwc2hvdCIpOwotCi0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRl
bGVnYXRlXygiZ2V0QWxsU3R5bGVzIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJv
bGxlckRlbGVnYXRlXygiZ2V0U3R5bGVzIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29u
dHJvbGxlckRlbGVnYXRlXygiZ2V0Q29tcHV0ZWRTdHlsZSIpOwotICAgIHRoaXMuaW5zdGFsbElu
c3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImdldElubGluZVN0eWxlIik7Ci0gICAgdGhpcy5p
bnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygiZ2V0U3R5bGVTaGVldCIpOwotICAg
IHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImdldFJ1bGVSYW5nZXMi
KTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJhcHBseVN0
eWxlVGV4dCIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8o
InNldFN0eWxlVGV4dCIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxl
Z2F0ZV8oInNldFN0eWxlUHJvcGVydHkiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250
cm9sbGVyRGVsZWdhdGVfKCJ0b2dnbGVTdHlsZUVuYWJsZWQiKTsKLSAgICB0aGlzLmluc3RhbGxJ
bnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzZXRSdWxlU2VsZWN0b3IiKTsKLSAgICB0aGlz
Lmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJhZGRSdWxlIik7Ci0KLSAgICB0
aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJkaXNhYmxlRGVidWdnZXIi
KTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJlZGl0U2Ny
aXB0U291cmNlIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRl
XygiZ2V0U2NyaXB0U291cmNlIik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxl
ckRlbGVnYXRlXygiZW5hYmxlRGVidWdnZXIiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JD
b250cm9sbGVyRGVsZWdhdGVfKCJzZXRCcmVha3BvaW50Iik7Ci0gICAgdGhpcy5pbnN0YWxsSW5z
cGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygicmVtb3ZlQnJlYWtwb2ludCIpOwotICAgIHRoaXMu
aW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oImFjdGl2YXRlQnJlYWtwb2ludHMi
KTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJkZWFjdGl2
YXRlQnJlYWtwb2ludHMiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVs
ZWdhdGVfKCJyZXN1bWUiKTsKLSAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVs
ZWdhdGVfKCJzdGVwSW50b1N0YXRlbWVudCIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNv
bnRyb2xsZXJEZWxlZ2F0ZV8oInN0ZXBPdXRPZkZ1bmN0aW9uIik7Ci0gICAgdGhpcy5pbnN0YWxs
SW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic3RlcE92ZXJTdGF0ZW1lbnQiKTsKLSAgICB0
aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzZXRQYXVzZU9uRXhjZXB0
aW9uc1N0YXRlIik7Ci19OwotZGV2dG9vbHMuSW5zcGVjdG9yQmFja2VuZEltcGwucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGU7
Ci0KLQotZGV2dG9vbHMuSW5zcGVjdG9yQmFja2VuZEltcGwucHJvdG90eXBlLnBhdXNlID0gZnVu
Y3Rpb24oKQotewotICAgIFJlbW90ZURlYnVnZ2VyQ29tbWFuZEV4ZWN1dG9yLkRlYnVnZ2VyUGF1
c2VTY3JpcHQoKTsKLX07Ci0KLQotLyoqCi0gKiBJbnN0YWxscyBkZWxlZ2F0aW5nIGhhbmRsZXIg
aW50byB0aGUgaW5zcGVjdG9yIGNvbnRyb2xsZXIuCi0gKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9k
TmFtZSBNZXRob2QgdG8gaW5zdGFsbCBkZWxlZ2F0aW5nIGhhbmRsZXIgZm9yLgotICovCi1kZXZ0
b29scy5JbnNwZWN0b3JCYWNrZW5kSW1wbC5wcm90b3R5cGUuaW5zdGFsbEluc3BlY3RvckNvbnRy
b2xsZXJEZWxlZ2F0ZV8gPSBmdW5jdGlvbihtZXRob2ROYW1lKQotewotICAgIHRoaXNbbWV0aG9k
TmFtZV0gPSB0aGlzLmNhbGxJbnNwZWN0b3JDb250cm9sbGVyXy5iaW5kKHRoaXMsIG1ldGhvZE5h
bWUpOwotfTsKLQotCi0vKioKLSAqIEJvdW5kIGZ1bmN0aW9uIHdpdGggdGhlIGluc3RhbGxJbmpl
Y3RlZFNjcmlwdERlbGVnYXRlXyBhY3R1YWwKLSAqIGltcGxlbWVudGF0aW9uLgotICovCi1kZXZ0
b29scy5JbnNwZWN0b3JCYWNrZW5kSW1wbC5wcm90b3R5cGUuY2FsbEluc3BlY3RvckNvbnRyb2xs
ZXJfID0gZnVuY3Rpb24oKQotewotICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNl
LmNhbGwoYXJndW1lbnRzKTsKLSAgICB2YXIgbWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KGFyZ3Mp
OwotICAgIHZhciBjYWxsYmFja0lkID0gV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAoZnVuY3Rp
b24oKXt9KTsKLSAgICBpZiAoInBhZ2UiIGluIFdlYkluc3BlY3Rvci5fcGFyYW1zT2JqZWN0KQot
ICAgICAgICBXZWJJbnNwZWN0b3Iuc29ja2V0LnNlbmQoY2FsbGJhY2tJZCArICIgIiArIG1lc3Nh
Z2UpOwotICAgIGVsc2UKLSAgICAgICAgUmVtb3RlVG9vbHNBZ2VudC5kaXNwYXRjaE9uSW5zcGVj
dG9yQ29udHJvbGxlcihjYWxsYmFja0lkLCBtZXNzYWdlKTsKLX07Ci0KLQotSW5zcGVjdG9yQmFj
a2VuZCA9IG5ldyBkZXZ0b29scy5JbnNwZWN0b3JCYWNrZW5kSW1wbCgpOwo=
</data>
<flag name="review"
          id="50896"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>