<?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>99218</bug_id>
          
          <creation_ts>2012-10-12 16:42:29 -0700</creation_ts>
          <short_desc>[WK2] Add SharedWorkerProcess</short_desc>
          <delta_ts>2012-10-15 09:29:53 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>roger_fong</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>741316</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-10-12 16:42:29 -0700</bug_when>
    <thetext>Multiple web processes should share shared workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741325</commentid>
    <comment_count>1</comment_count>
      <attachid>168515</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-10-12 16:52:28 -0700</bug_when>
    <thetext>Created attachment 168515
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741328</commentid>
    <comment_count>2</comment_count>
      <attachid>168515</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-10-12 16:59:21 -0700</bug_when>
    <thetext>Comment on attachment 168515
proposed patch

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

I&apos;d love to see this share more code, but looks good.

&gt; Source/WebKit2/Shared/SharedWorkerProcessCreationParameters.h:33
&gt; +#if PLATFORM(MAC)
&gt; +#include &quot;MachPort.h&quot;
&gt; +#endif

This does not seem to be used.

&gt; Source/WebKit2/SharedWorkerProcess/mac/SharedWorkerProcessMac.mm:71
&gt; +#if __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1070
&gt; +    initializeSandbox();
&gt; +#endif

This is not an ideal place to initialize the sandbox. Instead, it should initialized directly from main as we do for the WebProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741334</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-12 17:14:29 -0700</bug_when>
    <thetext>Attachment 168515 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/SharedWorkers/SharedWorkerProcessProxy.cpp:94:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/SharedWorkers/SharedWorkerProcessManager.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebKit2/Shared/SharedWorkerProcessCreationParameters.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebKit2/UIProcess/SharedWorkers/SharedWorkerProcessProxy.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebKit2/UIProcess/SharedWorkers/SharedWorkerProcessProxy.h:74:  The parameter name &quot;parameters&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/SharedWorkerProcess/SharedWorkerProcess.h:41:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit2/SharedWorkerProcess/SharedWorkerProcess.h:48:  The parameter name &quot;webProcessConnection&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 7 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741335</commentid>
    <comment_count>4</comment_count>
      <attachid>168515</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-12 17:17:17 -0700</bug_when>
    <thetext>Comment on attachment 168515
proposed patch

Attachment 168515 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14293078</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741339</commentid>
    <comment_count>5</comment_count>
      <attachid>168515</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-12 17:25:42 -0700</bug_when>
    <thetext>Comment on attachment 168515
proposed patch

Attachment 168515 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14299062</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741347</commentid>
    <comment_count>6</comment_count>
      <attachid>168515</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-12 17:35:53 -0700</bug_when>
    <thetext>Comment on attachment 168515
proposed patch

Attachment 168515 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14286083</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741351</commentid>
    <comment_count>7</comment_count>
      <attachid>168515</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-12 17:41:43 -0700</bug_when>
    <thetext>Comment on attachment 168515
proposed patch

Attachment 168515 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14290097</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741375</commentid>
    <comment_count>8</comment_count>
      <attachid>168515</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-10-12 18:26:10 -0700</bug_when>
    <thetext>Comment on attachment 168515
proposed patch

Attachment 168515 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/14334004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741507</commentid>
    <comment_count>9</comment_count>
      <attachid>168561</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-10-13 12:12:07 -0700</bug_when>
    <thetext>Created attachment 168561
with build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741509</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-13 12:16:23 -0700</bug_when>
    <thetext>Attachment 168561 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/SharedWorkers/SharedWorkerProcessProxy.cpp:94:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/SharedWorkers/SharedWorkerProcessManager.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebKit2/Shared/SharedWorkerProcessCreationParameters.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebKit2/UIProcess/SharedWorkers/SharedWorkerProcessProxy.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebKit2/UIProcess/SharedWorkers/SharedWorkerProcessProxy.h:74:  The parameter name &quot;parameters&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/SharedWorkerProcess/SharedWorkerProcess.h:41:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit2/SharedWorkerProcess/SharedWorkerProcess.h:48:  The parameter name &quot;webProcessConnection&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 7 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741514</commentid>
    <comment_count>11</comment_count>
      <attachid>168561</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-13 12:40:14 -0700</bug_when>
    <thetext>Comment on attachment 168561
with build fix

Attachment 168561 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14291289</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742110</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-10-15 09:29:53 -0700</bug_when>
    <thetext>The Windows build failure doesn&apos;t look like something that can be resolved blindly, will have to land and work on fixing the build afterwards.

Committed &lt;http://trac.webkit.org/changeset/131308&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168515</attachid>
            <date>2012-10-12 16:52:28 -0700</date>
            <delta_ts>2012-10-13 12:12:07 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>AddProcess.txt</filename>
            <type>text/plain</type>
            <size>90135</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMTIzNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDEyLTEwLTEyICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBTaGFyZWRX
b3JrZXJQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05OTIxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vdCB5ZXQgZnVuY3Rpb25hbCwganVzdCBzb21lIGJvaWxlcnBsYXRlIGNvZGUuCisKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9TaGFyZWRXb3JrZXJQcm9jZXNzLnhjY29uZmlnOiBBZGRl
ZC4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6IEdlbmVyYXRlIG1lc3NhZ2UgZGlz
cGF0Y2ggZm9yIFNoYXJlZFdvcmtlclByb2Nlc3MgYW5kCisgICAgICAgIFNoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eS4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmg6IEFk
ZGVkIHNoYXJlZCB3b3JrZXIgbWVzc2FnZXMgY2xhc3Nlcy4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0Mi9tZXNzYWdlcy5weTogKHN0cnVjdF9vcl9jbGFzcyk6CisgICAgICAgIFNoYXJlZFdv
cmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgaXMgYSBzdHJ1Y3QuCisKKyAgICAgICAgKiBT
aGFyZWQvU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6IEFkZGVkLgor
ICAgICAgICAqIFNoYXJlZFdvcmtlclByb2Nlc3MvSW5mby5wbGlzdDogQWRkZWQuCisgICAgICAg
ICogU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcDogQWRkZWQuCisg
ICAgICAgICogU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmg6IEFkZGVk
LgorICAgICAgICAqIFNoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5tZXNz
YWdlcy5pbjogQWRkZWQuCisgICAgICAgICogU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXJQcm9jZXNzTWFpbi5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWRXb3JrZXJQcm9jZXNzL21h
Yy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWRXb3Jr
ZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbTogQWRkZWQuCisgICAg
ICAgICogU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5TaGFyZWRXb3Jr
ZXJQcm9jZXNzLnNiOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9T
aGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5j
cHA6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtl
clByb2Nlc3NQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvU2hhcmVkV29ya2Vy
cy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAq
IFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkZWQgU2hhcmVk
V29ya2VyUHJvY2VzcyBib2lsZXJwbGF0ZSwgbW9kZWxlZCBhZnRlciBQbHVnaW5Qcm9jZXNzLgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgIEFkZGVkIGdldFNoYXJlZFdvcmtlclByb2Nlc3ND
b25uZWN0aW9uKCkgbWVzc2FnZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViS2l0TWFpbi5j
cHA6IChXZWJLaXRNYWluKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xh
dW5jaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpwcm9jZXNzVHlw
ZUFzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpnZXRQcm9jZXNz
VHlwZUZyb21TdHJpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1
bmNoZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hl
ck1hYy5tbTogKFdlYktpdDo6Y3JlYXRlUHJvY2Vzcyk6CisgICAgICAgIEFkZGVkIGJyYW5jaGVz
IGZvciBTaGFyZWRXb3JrZXJQcm9jZXNzLgorCiAyMDEyLTEwLTEyICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXR1cCBiYXNpYyBOZXR3b3JrUHJvY2VzcyBt
ZXNzYWdpbmcgYW5kIGluaXRpYWxpemF0aW9uLgpJbmRleDogU291cmNlL1dlYktpdDIvRGVyaXZl
ZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNl
cy5tYWtlCShyZXZpc2lvbiAxMzEyMzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNl
cy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBAIFZQQVRIID0gXAogICAgICQo
V2ViS2l0MikvUGx1Z2luUHJvY2Vzcy9tYWMgXAogICAgICQoV2ViS2l0MikvU2hhcmVkL1BsdWdp
bnMgXAogICAgICQoV2ViS2l0MikvU2hhcmVkIFwKKyAgICAkKFdlYktpdDIpL1NoYXJlZFdvcmtl
clByb2Nlc3MgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9BcHBsaWNhdGlvbkNhY2hlIFwK
ICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvQXV0aGVudGljYXRpb24gXAogICAgICQoV2ViS2l0
MikvV2ViUHJvY2Vzcy9Db29raWVzIFwKQEAgLTQ1LDYgKzQ2LDcgQEAgVlBBVEggPSBcCiAgICAg
JChXZWJLaXQyKS9VSVByb2Nlc3MvRG93bmxvYWRzIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9QbHVnaW5zIFwKKyAg
ICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzIFwKICMKIAogTUVTU0FHRV9SRUNF
SVZFUlMgPSBcCkBAIC02MCw2ICs2Miw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uIFwKICAgICBQbHVnaW5Qcm9jZXNzUHJveHkgXAogICAgIFBs
dWdpblByb3h5IFwKKyAgICBTaGFyZWRXb3JrZXJQcm9jZXNzIFwKKyAgICBTaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHkgXAogICAgIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyIFwKICAgICBXZWJB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5IFwKICAgICBXZWJDb29raWVNYW5hZ2VyIFwKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1NoYXJlZFdvcmtlclByb2Nlc3MueGNj
b25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvU2hhcmVk
V29ya2VyUHJvY2Vzcy54Y2NvbmZpZwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL0Nv
bmZpZ3VyYXRpb25zL1NoYXJlZFdvcmtlclByb2Nlc3MueGNjb25maWcJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjkgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6
CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisvLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKy8vIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKworI2lu
Y2x1ZGUgIkJhc2VUYXJnZXQueGNjb25maWciCisKK0dDQ19FTkFCTEVfT0JKQ19HQyA9IE5POwor
UFJPRFVDVF9OQU1FID0gU2hhcmVkV29ya2VyUHJvY2VzczsKK0lORk9QTElTVF9GSUxFID0gU2hh
cmVkV29ya2VyUHJvY2Vzcy9JbmZvLnBsaXN0OworSU5TVEFMTF9QQVRIID0gJChXRUJLSVQyX0ZS
QU1FV09SS1NfRElSKS9XZWJLaXQyLmZyYW1ld29yazsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaAkocmV2aXNpb24gMTMxMjM1KQorKysgU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA1LDkgKzEwNSwxNSBAQCBlbnVtIE1lc3NhZ2VDbGFzcyB7CiAKICAgICAvLyBOUE9iamVjdCBt
ZXNzYWdlcyBzZW50IGJ5IGJvdGggdGhlIHBsdWctaW4gcHJvY2VzcyBhbmQgdGhlIHdlYiBwcm9j
ZXNzLgogICAgIE1lc3NhZ2VDbGFzc05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLAotICAgIAorCiAg
ICAgLy8gTWVzc2FnZXMgc2VudCBieSB0aGUgVUkgcHJvY2VzcyB0byB0aGUgbmV0d29yayBwcm9j
ZXNzLgogICAgIE1lc3NhZ2VDbGFzc05ldHdvcmtQcm9jZXNzLAorCisgICAgLy8gTWVzc2FnZXMg
c2VudCBieSB0aGUgVUkgcHJvY2VzcyB0byB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzLgorICAg
IE1lc3NhZ2VDbGFzc1NoYXJlZFdvcmtlclByb2Nlc3MsCisKKyAgICAvLyBNZXNzYWdlcyBzZW50
IGJ5IHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3MgdG8gdGhlIFVJIHByb2Nlc3MuCisgICAgTWVz
c2FnZUNsYXNzU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LAogfTsKIAogdGVtcGxhdGU8dHlwZW5h
bWU+IHN0cnVjdCBNZXNzYWdlS2luZFRyYWl0cyB7IH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
Y3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5CShyZXZpc2lvbiAxMzEyMzUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTIw
Myw2ICsyMDMsNyBAQCBkZWYgc3RydWN0X29yX2NsYXNzKG5hbWVzcGFjZSwgdHlwZSk6CiAgICAg
ICAgICdXZWJLaXQ6OlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMnLAogICAgICAgICAn
V2ViS2l0OjpQcmludEluZm8nLAogICAgICAgICAnV2ViS2l0OjpTZWN1cml0eU9yaWdpbkRhdGEn
LAorICAgICAgICAnV2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JywKICAgICAgICAgJ1dlYktpdDo6U3RhdGlzdGljc0RhdGEnLAogICAgICAgICAnV2ViS2l0OjpU
ZXh0Q2hlY2tlclN0YXRlJywKICAgICAgICAgJ1dlYktpdDo6V2ViTmF2aWdhdGlvbkRhdGFTdG9y
ZScsCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1No
YXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpTaGFy
ZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKCkKK3sKK30KKwordm9pZCBTaGFyZWRX
b3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRF
bmNvZGVyKiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXItPmVuY29kZShtaW5pbXVtTGlm
ZXRpbWUpOworICAgIGVuY29kZXItPmVuY29kZSh0ZXJtaW5hdGlvblRpbWVvdXQpOworCisjaWYg
UExBVEZPUk0oTUFDKQorICAgIGVuY29kZXItPmVuY29kZShwYXJlbnRQcm9jZXNzTmFtZSk7Cisj
ZW5kaWYKK30KKworYm9vbCBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBTaGFyZWRXb3JrZXJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiByZXN1bHQpCit7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNv
ZGUocmVzdWx0Lm1pbmltdW1MaWZldGltZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQudGVybWluYXRpb25UaW1lb3V0KSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIWRlY29kZXItPmRlY29k
ZShyZXN1bHQucGFyZW50UHJvY2Vzc05hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKKworICAgIHJldHVybiB0cnVlOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAoKUHJv
cGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlZFdvcmtlclByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUK
ICAgKyBuYXRpdmUKCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVkV29ya2VyUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9TaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzX2gKKyNkZWZp
bmUgU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyc19oCisKKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJNYWNo
UG9ydC5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKyAgICBjbGFzcyBBcmd1bWVu
dERlY29kZXI7CisgICAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworc3RydWN0IFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewor
ICAgIFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMoKTsKKworICAgIHZvaWQg
ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopIGNvbnN0OworICAgIHN0YXRpYyBib29s
IGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBTaGFyZWRXb3JrZXJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJik7CisKKyAgICBkb3VibGUgbWluaW11bUxpZmV0aW1lOworICAgIGRv
dWJsZSB0ZXJtaW5hdGlvblRpbWVvdXQ7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgU3RyaW5n
IHBhcmVudFByb2Nlc3NOYW1lOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnNfaAoKUHJv
cGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlZFdvcmtlclByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAg
ICsgbmF0aXZlCgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9JbmZv
LnBsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3Mv
SW5mby5wbGlzdAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclBy
b2Nlc3MvSW5mby5wbGlzdAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVy
c2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0v
L0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJv
cGVydHlMaXN0LTEuMC5kdGQiPgorPHBsaXN0IHZlcnNpb249IjEuMCI+Cis8ZGljdD4KKwk8a2V5
PkNGQnVuZGxlRXhlY3V0YWJsZTwva2V5PgorCTxzdHJpbmc+JHtQUk9EVUNUX05BTUV9PC9zdHJp
bmc+CisJPGtleT5DRkJ1bmRsZUdldEluZm9TdHJpbmc8L2tleT4KKwk8c3RyaW5nPiR7QlVORExF
X1ZFUlNJT059LCBDb3B5cmlnaHQgMjAwMy0yMDEyIEFwcGxlIEluYy48L3N0cmluZz4KKwk8a2V5
PkNGQnVuZGxlSWRlbnRpZmllcjwva2V5PgorCTxzdHJpbmc+Y29tLmFwcGxlLldlYktpdC4ke1BS
T0RVQ1RfTkFNRX08L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlSW5mb0RpY3Rpb25hcnlWZXJzaW9u
PC9rZXk+CisJPHN0cmluZz42LjA8L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlTmFtZTwva2V5Pgor
CTxzdHJpbmc+JHtQUk9EVUNUX05BTUV9PC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZVBhY2thZ2VU
eXBlPC9rZXk+CisJPHN0cmluZz5BUFBMPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZVNob3J0VmVy
c2lvblN0cmluZzwva2V5PgorCTxzdHJpbmc+JHtTSE9SVF9WRVJTSU9OX1NUUklOR308L3N0cmlu
Zz4KKwk8a2V5PkNGQnVuZGxlVmVyc2lvbjwva2V5PgorCTxzdHJpbmc+JHtCVU5ETEVfVkVSU0lP
Tn08L3N0cmluZz4KKwk8a2V5PkxTRmlsZVF1YXJhbnRpbmVFbmFibGVkPC9rZXk+CisJPHRydWUv
PgorCTxrZXk+TFNNaW5pbXVtU3lzdGVtVmVyc2lvbjwva2V5PgorCTxzdHJpbmc+JHtNQUNPU1hf
REVQTE9ZTUVOVF9UQVJHRVR9PC9zdHJpbmc+CisJPGtleT5MU1VJRWxlbWVudDwva2V5PgorCTx0
cnVlLz4KKwk8a2V5Pk5TUHJpbmNpcGFsQ2xhc3M8L2tleT4KKwk8c3RyaW5nPk5TQXBwbGljYXRp
b248L3N0cmluZz4KKzwvZGljdD4KKzwvcGxpc3Q+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL0luZm8ucGxpc3QKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRl
ZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkV29y
a2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXJQcm9jZXNzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvY2Vz
cy5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJBdHRhY2htZW50
LmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgor
I2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisj
aW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KKyNlbmRpZgorCisjaWYgVVNFKFVOSVhfRE9NQUlOX1NP
Q0tFVFMpCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUg
PHN5cy9yZXNvdXJjZS5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDx1bmlz
dGQuaD4KKworI2lmZGVmIFNPQ0tfU0VRUEFDS0VUCisjZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tf
U0VRUEFDS0VUCisjZWxzZQorI2lmIFBMQVRGT1JNKEdUSykKKyNkZWZpbmUgU09DS0VUX1RZUEUg
U09DS19TVFJFQU0KKyNlbHNlCisjZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfREdSQU0KKyNlbmRp
ZgorI2VuZGlmIC8vIFNPQ0tfU0VRUEFDS0VUCisjZW5kaWYgLy8gVVNFKFVOSVhfRE9NQUlOX1NP
Q0tFVFMpCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworU2hhcmVkV29ya2VyUHJvY2VzcyYgU2hhcmVkV29ya2VyUHJvY2Vzczo6c2hhcmVkKCkKK3sK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNoYXJlZFdvcmtlclByb2Nlc3MsIHByb2Nlc3MsICgp
KTsKKyAgICByZXR1cm4gcHJvY2VzczsKK30KKworU2hhcmVkV29ya2VyUHJvY2Vzczo6U2hhcmVk
V29ya2VyUHJvY2VzcygpCisgICAgOiBtX21pbmltdW1MaWZldGltZVRpbWVyKFJ1bkxvb3A6Om1h
aW4oKSwgdGhpcywgJlNoYXJlZFdvcmtlclByb2Nlc3M6Om1pbmltdW1MaWZldGltZVRpbWVyRmly
ZWQpCit7Cit9CisKK1NoYXJlZFdvcmtlclByb2Nlc3M6On5TaGFyZWRXb3JrZXJQcm9jZXNzKCkK
K3sKK30KKwordm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjppbml0aWFsaXplKENvcmVJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIgc2VydmVySWRlbnRpZmllciwgUnVuTG9vcCogcnVuTG9vcCkK
K3sKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7CisKKyAgICBtX2Nvbm5lY3Rpb24gPSBDb3Jl
SVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKHNlcnZlcklkZW50aWZpZXIs
IHRoaXMsIHJ1bkxvb3ApOworICAgIG1fY29ubmVjdGlvbi0+c2V0RGlkQ2xvc2VPbkNvbm5lY3Rp
b25Xb3JrUXVldWVDYWxsYmFjayhkaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSk7CisgICAg
bV9jb25uZWN0aW9uLT5vcGVuKCk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzczo6cmVt
b3ZlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc0Nvbm5lY3Rpb24qIHdlYlByb2Nlc3ND
b25uZWN0aW9uKQoreworICAgIHNpemVfdCB2ZWN0b3JJbmRleCA9IG1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb25zLmZpbmQod2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgIEFTU0VSVCh2ZWN0b3JJbmRl
eCAhPSBub3RGb3VuZCk7CisKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5yZW1vdmUodmVj
dG9ySW5kZXgpOworICAgIAorICAgIGVuYWJsZVRlcm1pbmF0aW9uKCk7Cit9CisKK2Jvb2wgU2hh
cmVkV29ya2VyUHJvY2Vzczo6c2hvdWxkVGVybWluYXRlKCkKK3sKKyAgICBBU1NFUlQobV93ZWJQ
cm9jZXNzQ29ubmVjdGlvbnMuaXNFbXB0eSgpKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzKQoreworICAgIGRpZFJlY2VpdmVTaGFyZWRXb3Jr
ZXJQcm9jZXNzTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7Cit9CisK
K3ZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzczo6ZGlkQ2xvc2UoQ29yZUlQQzo6Q29ubmVjdGlvbiop
Cit7CisgICAgLy8gVGhlIFVJIHByb2Nlc3MgaGFzIGNyYXNoZWQsIGp1c3QgZ28gYWhlYWQgYW5k
IHF1aXQuCisgICAgUnVuTG9vcDo6Y3VycmVudCgpLT5zdG9wKCk7Cit9CisKK3ZvaWQgU2hhcmVk
V29ya2VyUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rp
b24qLCBDb3JlSVBDOjpNZXNzYWdlSUQpCit7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyUHJvY2Vz
czo6aW5pdGlhbGl6ZVNoYXJlZFdvcmtlclByb2Nlc3MoY29uc3QgU2hhcmVkV29ya2VyUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBzZXRNaW5pbXVtTGlmZXRp
bWUocGFyYW1ldGVycy5taW5pbXVtTGlmZXRpbWUpOworICAgIHNldFRlcm1pbmF0aW9uVGltZW91
dChwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCk7CisKKyAgICBwbGF0Zm9ybUluaXRpYWxp
emUocGFyYW1ldGVycyk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzczo6Y3JlYXRlV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24oKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAvLyBDcmVhdGUg
dGhlIGxpc3RlbmluZyBwb3J0LgorICAgIG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7CisgICAg
bWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNF
SVZFLCAmbGlzdGVuaW5nUG9ydCk7CisKKyAgICAvLyBDcmVhdGUgYSBsaXN0ZW5pbmcgY29ubmVj
dGlvbi4KKyAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIo
bGlzdGVuaW5nUG9ydCkpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25u
ZWN0aW9uLnJlbGVhc2UoKSk7CisKKyAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQo
bGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOworICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQ
cm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0KSwgMCk7CisjZWxpZiBVU0UoVU5JWF9ET01BSU5f
U09DS0VUUykKKyAgICBpbnQgc29ja2V0c1syXTsKKyAgICBpZiAoc29ja2V0cGFpcihBRl9VTklY
LCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgPT0gLTEpIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBEb24ndCBleHBvc2Ug
dGhlIHNoYXJlZCB3b3JrZXIgcHJvY2VzcyBzb2NrZXQgdG8gdGhlIHdlYiBwcm9jZXNzLgorICAg
IHdoaWxlIChmY250bChzb2NrZXRzWzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsK
KyAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzBdKSA9PSAtMSAmJiBl
cnJubyA9PSBFSU5UUikgeyB9CisgICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1sxXSkg
PT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSBzaGFyZWQgd29ya2VyIHByb2Nl
c3Mgc29ja2V0IHRvIHBvc3NpYmxlIGZ1dHVyZSB3ZWIgcHJvY2Vzc2VzLgorICAgIHdoaWxlIChm
Y250bChzb2NrZXRzWzBdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSA9PSAtMSkgeworICAgICAgICBp
ZiAoZXJybm8gIT0gRUlOVFIpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMF0pID09IC0xICYmIGVycm5vID09IEVJ
TlRSKSB7IH0KKyAgICAgICAgICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzFdKSA9PSAtMSAmJiBl
cnJubyA9PSBFSU5UUikgeyB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHNvY2tldHNbMV0pOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisKKyAgICBDb3JlSVBDOjpBdHRh
Y2htZW50IGNsaWVudFNvY2tldChzb2NrZXRzWzBdKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24oY2xpZW50U29ja2V0KSwgMCk7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7
CisjZW5kaWYKKworICAgIGRpc2FibGVUZXJtaW5hdGlvbigpOworfQorCit2b2lkIFNoYXJlZFdv
cmtlclByb2Nlc3M6OnNldE1pbmltdW1MaWZldGltZShkb3VibGUgbGlmZXRpbWUpCit7CisgICAg
aWYgKGxpZmV0aW1lIDw9IDAuMCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGRpc2FibGVU
ZXJtaW5hdGlvbigpOworICAgIAorICAgIG1fbWluaW11bUxpZmV0aW1lVGltZXIuc3RhcnRPbmVT
aG90KGxpZmV0aW1lKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjptaW5pbXVtTGlm
ZXRpbWVUaW1lckZpcmVkKCkKK3sKKyAgICBlbmFibGVUZXJtaW5hdGlvbigpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQyL1No
YXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHAKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRl
ZDogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXJQcm9jZXNzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFNoYXJlZFdvcmtlclByb2Nlc3NfaAorI2RlZmluZSBTaGFyZWRXb3JrZXJQ
cm9jZXNzX2gKKworI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJ1bkxvb3A7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXRzY2FwZVBsdWdpbk1vZHVsZTsKK2NsYXNzIFdlYlBy
b2Nlc3NDb25uZWN0aW9uOworc3RydWN0IFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM7CisgICAgICAgIAorY2xhc3MgU2hhcmVkV29ya2VyUHJvY2VzcyA6IENoaWxkUHJvY2Vz
cyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2hhcmVkV29ya2VyUHJvY2Vzcyk7CitwdWJs
aWM6CisgICAgc3RhdGljIFNoYXJlZFdvcmtlclByb2Nlc3MmIHNoYXJlZCgpOworCisgICAgdm9p
ZCBpbml0aWFsaXplKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFdlYkNvcmU6OlJ1
bkxvb3AqKTsKKyAgICB2b2lkIHJlbW92ZVdlYlByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3ND
b25uZWN0aW9uKiB3ZWJQcm9jZXNzQ29ubmVjdGlvbik7CisKK3ByaXZhdGU6CisgICAgU2hhcmVk
V29ya2VyUHJvY2VzcygpOworICAgIH5TaGFyZWRXb3JrZXJQcm9jZXNzKCk7CisKKyAgICAvLyBD
aGlsZFByb2Nlc3MKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVGVybWluYXRlKCk7CisKKyAgICAv
LyBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKENvcmVJUEM6
OkNvbm5lY3Rpb24qKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQpOworCisgICAgLy8gTWVz
c2FnZSBoYW5kbGVycy4KKyAgICB2b2lkIGRpZFJlY2VpdmVTaGFyZWRXb3JrZXJQcm9jZXNzTWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpB
cmd1bWVudERlY29kZXIqKTsKKyAgICB2b2lkIGluaXRpYWxpemVTaGFyZWRXb3JrZXJQcm9jZXNz
KGNvbnN0IFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAgICB2b2lk
IGNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIHBsYXRmb3JtSW5pdGlh
bGl6ZShjb25zdCBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CisgICAg
CisgICAgdm9pZCBzZXRNaW5pbXVtTGlmZXRpbWUoZG91YmxlKTsKKyAgICB2b2lkIG1pbmltdW1M
aWZldGltZVRpbWVyRmlyZWQoKTsKKworICAgIC8vIFRoZSBjb25uZWN0aW9uIHRvIHRoZSBVSSBw
cm9jZXNzLgorICAgIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisK
KyAgICAvLyBPdXIgd2ViIHByb2Nlc3MgY29ubmVjdGlvbnMuCisgICAgVmVjdG9yPFJlZlB0cjxX
ZWJQcm9jZXNzQ29ubmVjdGlvbj4gPiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uczsKKworICAgIFdl
YkNvcmU6OlJ1bkxvb3A6OlRpbWVyPFNoYXJlZFdvcmtlclByb2Nlc3M+IG1fbWluaW11bUxpZmV0
aW1lVGltZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFNoYXJl
ZFdvcmtlclByb2Nlc3NfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdDIvU2hh
cmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmgKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDog
c3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdv
cmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3Mu
bWVzc2FnZXMuaW4JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQ
cm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworbWVzc2FnZXMgLT4gU2hhcmVkV29ya2VyUHJvY2VzcyB7CisgICAgIyBJbml0aWFsaXplcyB0
aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzLgorICAgIEluaXRpYWxpemVTaGFyZWRXb3JrZXJQcm9j
ZXNzKFdlYktpdDo6U2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzKQorICAgIAorICAgICMgQ3JlYXRlcyBhIHdlYiBwcm9jZXNzIGNv
bm5lY3Rpb24uIFdoZW4gdGhlIGNvbm5lY3Rpb24gaGFzIGJlZW4gY3JlYXRlZCwKKyAgICAjIFRo
ZSBzaGFyZWQgd29ya2VyIHByb2Nlc3Mgc2VuZHMgYmFjayBhIERpZENyZWF0ZVdlYlByb2Nlc3ND
b25uZWN0aW9uIG1lc3NhZ2Ugd2l0aAorICAgICMgYSBjb25uZWN0aW9uIGlkZW50aWZpZXIuCisg
ICAgQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQorfQoKUHJvcGVydHkgY2hhbmdlcyBvbjog
U291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLm1l
c3NhZ2VzLmluCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L3BsYWlu
CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3NNYWluLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFp
bi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9T
aGFyZWRXb3JrZXJQcm9jZXNzTWFpbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbl9oCisjZGVm
aW5lIFNoYXJlZFdvcmtlclByb2Nlc3NNYWluX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisgICAg
CitjbGFzcyBDb21tYW5kTGluZTsKKworaW50IFNoYXJlZFdvcmtlclByb2Nlc3NNYWluKGNvbnN0
IENvbW1hbmRMaW5lJik7CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFNoYXJlZFdvcmtlclByb2Nlc3NNYWluX2gKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzc01haW4uaApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFy
ZWRXb3JrZXJQcm9jZXNzTWFjLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbQkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiU2hhcmVkV29ya2VyUHJvY2Vzcy5oIgorCisjaW1wb3J0ICJTaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiU2hhcmVkV29ya2VyUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+
CisjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNpbXBvcnQgPGRsZmNuLmg+Cisj
aW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHN5c2V4aXRzLmg+CisjaW1wb3J0IDx3
dGYvSGFzaFNldC5oPgorCisvLyBXZSBoYXZlIHRvICN1bmRlZiBfX0FQUExFX0FQSV9QUklWQVRF
IHRvIHByZXZlbnQgc2FuZGJveC5oIGZyb20gbG9va2luZyBmb3IgYSBoZWFkZXIgZmlsZSB0aGF0
IGRvZXMgbm90IGV4aXN0ICg8cmRhcjovL3Byb2JsZW0vOTY3OTIxMT4pLiAKKyN1bmRlZiBfX0FQ
UExFX0FQSV9QUklWQVRFCisjaW1wb3J0IDxzYW5kYm94Lmg+CisKKyNkZWZpbmUgU0FOREJPWF9O
QU1FRF9FWFRFUk5BTCAweDAwMDMKK2V4dGVybiAiQyIgaW50IHNhbmRib3hfaW5pdF93aXRoX3Bh
cmFtZXRlcnMoY29uc3QgY2hhciAqcHJvZmlsZSwgdWludDY0X3QgZmxhZ3MsIGNvbnN0IGNoYXIg
KmNvbnN0IHBhcmFtZXRlcnNbXSwgY2hhciAqKmVycm9yYnVmKTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKK3N0YXRp
YyB2b2lkIGluaXRpYWxpemVTYW5kYm94KCkKK3sKKyAgICBOU0J1bmRsZSAqd2Via2l0MkJ1bmRs
ZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpOU0NsYXNzRnJvbVN0cmluZyhAIldLVmlldyIp
XTsKKyAgICBjb25zdCBjaGFyKiBwcm9maWxlUGF0aCA9IFtbd2Via2l0MkJ1bmRsZSBwYXRoRm9y
UmVzb3VyY2U6QCJjb20uYXBwbGUuV2ViS2l0LlNoYXJlZFdvcmtlclByb2Nlc3MiIG9mVHlwZTpA
InNiIl0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXTsKKworICAgIGNoYXIqIGVycm9yQnVmOwor
ICAgIGlmIChzYW5kYm94X2luaXRfd2l0aF9wYXJhbWV0ZXJzKHByb2ZpbGVQYXRoLCBTQU5EQk9Y
X05BTUVEX0VYVEVSTkFMLCAwLCAmZXJyb3JCdWYpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygi
U2hhcmVkV29ya2VyUHJvY2VzczogY291bGRuJ3QgaW5pdGlhbGl6ZSBzYW5kYm94IHByb2ZpbGUg
WyVzXSBlcnJvciAnJXMnXG4iLCBwcm9maWxlUGF0aCwgZXJyb3JCdWYpOworICAgICAgICBleGl0
KEVYX05PUEVSTSk7CisgICAgfQorfQorI2VuZGlmCisKK3ZvaWQgU2hhcmVkV29ya2VyUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgTlNTdHJpbmcgKmFwcGxpY2F0aW9uTmFtZSA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9TVFJJTkcoIlNoYXJlZCBXZWIgV29y
a2VyICglQCBJbnRlcm5ldCBwbHVnLWluKSIsCisgICAgICAgICJ2aXNpYmxlIG5hbWUgb2YgdGhl
IHBsdWctaW4gaG9zdCBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5h
bWUuIiksCisgICAgICAgIChOU1N0cmluZyAqKXBhcmFtZXRlcnMucGFyZW50UHJvY2Vzc05hbWVd
OworICAgIAorICAgIFdLU2V0VmlzaWJsZUFwcGxpY2F0aW9uTmFtZSgoQ0ZTdHJpbmdSZWYpYXBw
bGljYXRpb25OYW1lKTsKKworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA3MAorICAgIGluaXRpYWxpemVTYW5kYm94KCk7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3Jr
ZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFjLm1tCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6
IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtl
clByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nl
c3NNYWluTWFjLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2Vy
UHJvY2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW0JKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbi5oIgorCisjaW1wb3J0ICJDb21t
YW5kTGluZS5oIgorI2ltcG9ydCAiRW52aXJvbm1lbnRVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlNo
YXJlZFdvcmtlclByb2Nlc3MuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNVc2VyRGVmYXVsdHMu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvUnVuTG9vcC5oPgorI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50
ZXJmYWNlLmg+CisjaW1wb3J0IDxtYWNoL21hY2hfZXJyb3IuaD4KKyNpbXBvcnQgPHJ1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5oPgorI2ltcG9ydCA8c2VydmVycy9ib290c3RyYXAuaD4KKyNp
bXBvcnQgPHN0ZGlvLmg+CisjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKKyNkZWZpbmUgU0hPV19DUkFTSF9SRVBPUlRFUiAxCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gRklYTUU6
IFRoZXJlIGlzIG11Y2ggY29kZSBoZXJlIHRoYXQgaXMgZHVwbGljYXRlZCBpbiBXZWJQcm9jZXNz
TWFpbk1hYy5tbSwgd2Ugc2hvdWxkIGFkZCBhIHNoYXJlZCBiYXNlIGNsYXNzIHdoZXJlCisvLyB3
ZSBjYW4gcHV0IGV2ZXJ5dGhpbmcuCisKK2ludCBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbihjb25z
dCBDb21tYW5kTGluZSYgY29tbWFuZExpbmUpCit7CisgICAgU3RyaW5nIHNlcnZpY2VOYW1lID0g
Y29tbWFuZExpbmVbInNlcnZpY2VuYW1lIl07CisgICAgaWYgKHNlcnZpY2VOYW1lLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAKKyAgICAvLyBHZXQgdGhlIHNl
cnZlciBwb3J0LgorICAgIG1hY2hfcG9ydF90IHNlcnZlclBvcnQ7CisgICAga2Vybl9yZXR1cm5f
dCBrciA9IGJvb3RzdHJhcF9sb29rX3VwKGJvb3RzdHJhcF9wb3J0LCBzZXJ2aWNlTmFtZS51dGY4
KCkuZGF0YSgpLCAmc2VydmVyUG9ydCk7CisgICAgaWYgKGtyKSB7CisgICAgICAgIFdURkxvZ0Fs
d2F5cygiYm9vdHN0cmFwX2xvb2tfdXAgcmVzdWx0OiAlcyAoJXgpXG4iLCBtYWNoX2Vycm9yX3N0
cmluZyhrciksIGtyKTsKKyAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICB9CisKKyAg
ICBTdHJpbmcgbG9jYWxpemF0aW9uID0gY29tbWFuZExpbmVbImxvY2FsaXphdGlvbiJdOworICAg
IGlmICghbG9jYWxpemF0aW9uLmlzRW1wdHkoKSkgeworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGNmTG9jYWxpemF0aW9uKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3Rl
cnMoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4obG9jYWxpemF0aW9uLmNoYXJh
Y3RlcnMoKSksIGxvY2FsaXphdGlvbi5sZW5ndGgoKSkpOworICAgICAgICBXS1NldERlZmF1bHRM
b2NhbGl6YXRpb24oY2ZMb2NhbGl6YXRpb24uZ2V0KCkpOworICAgIH0KKworI2lmIGRlZmluZWQo
X19pMzg2X18pCisgICAgeworICAgICAgICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNB
dXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOworCisgICAgICAgIE5TRGljdGlvbmFyeSAqZGVm
YXVsdHMgPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgQCJBcHBsZU1hZ25pZmllZE1vZGUiLCBuaWxdOwor
ICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSByZWdpc3RlckRl
ZmF1bHRzOmRlZmF1bHRzXTsKKyAgICAgICAgW2RlZmF1bHRzIHJlbGVhc2VdOworCisgICAgICAg
IFtwb29sIGRyYWluXTsKKyAgICB9CisjZW5kaWYKKworI2lmICFTSE9XX0NSQVNIX1JFUE9SVEVS
CisgICAgLy8gSW5zdGFsbHMgc2lnbmFsIGhhbmRsZXJzIHRoYXQgZXhpdCBvbiBhIGNyYXNoIHNv
IHRoYXQgQ3Jhc2hSZXBvcnRlciBkb2VzIG5vdCBzaG93IHVwLgorICAgIHNpZ25hbChTSUdJTEws
IF9leGl0KTsKKyAgICBzaWduYWwoU0lHRlBFLCBfZXhpdCk7CisgICAgc2lnbmFsKFNJR0JVUywg
X2V4aXQpOworICAgIHNpZ25hbChTSUdTRUdWLCBfZXhpdCk7CisjZW5kaWYKKworICAgIEpTQzo6
aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsK
KyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIC8vIEluaXRpYWxp
emUgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2VzcyBjb25uZWN0aW9uLgorICAgIFNoYXJlZFdvcmtl
clByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllcihzZXJ2ZXJQb3J0KSwgUnVuTG9vcDo6bWFpbigpKTsKKworICAgIFtOU0FwcGxpY2F0aW9u
IHNoYXJlZEFwcGxpY2F0aW9uXTsKKworICAgIFJ1bkxvb3A6OnJ1bigpOworICAgIAorICAgIHJl
dHVybiAwOworfQorCit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbQpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWRXb3JrZXJQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LlNoYXJlZFdvcmtlclByb2Nl
c3Muc2IKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9t
YWMvY29tLmFwcGxlLldlYktpdC5TaGFyZWRXb3JrZXJQcm9jZXNzLnNiCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktp
dC5TaGFyZWRXb3JrZXJQcm9jZXNzLnNiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKKyh2
ZXJzaW9uIDEpCisoZGVueSBkZWZhdWx0ICh3aXRoIHBhcnRpYWwtc3ltYm9saWNhdGlvbikpCisK
KyhpbXBvcnQgInN5c3RlbS5zYiIpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMTMxMjM1KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Myw2ICsz
NzMsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENsZWFyUGx1Z2luU2l0ZQogCiAjZW5k
aWYKIAordm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25uZWN0
aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseT4gcmVwbHkpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudAorfQorCiB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlv
biogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCiB7CiAgICAgLy8gRklYTUU6IENvbWUgdXAgd2l0aCBh
IGJldHRlciB3YXkgdG8gY2hhaW4gdG8gdGhlIFdlYkNvbnRleHQuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAxMzEyMzUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE1MSw2ICsxNTEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlR2V0UGx1Z2lucyh1
aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgcmVmcmVzaCk7CiAgICAgdm9pZCBzZW5kRGlkR2V0UGx1
Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIFBhc3NPd25QdHI8VmVjdG9yPFdlYkNvcmU6OlBsdWdp
bkluZm8+ID4pOwogCisgICAgdm9pZCBnZXRTaGFyZWRXb3JrZXJQcm9jZXNzQ29ubmVjdGlvbihj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk+KTsKKwogI2lmIFVTRShTRUNVUklUWV9GUkFNRVdPUkspCiAgICAgdm9pZCBzZWNJ
dGVtUmVxdWVzdChDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3QgcmVxdWVzdElELCBjb25z
dCBTZWNJdGVtUmVxdWVzdERhdGEmKTsKICAgICB2b2lkIHNlY0tleWNoYWluSXRlbVJlcXVlc3Qo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU2VjS2V5Y2hh
aW5JdGVtUmVxdWVzdERhdGEmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTMxMjM1KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzUHJveHkg
ewogICAgIHZvaWQgRGlkR2V0U2l0ZXNXaXRoUGx1Z2luRGF0YShWZWN0b3I8V1RGOjpTdHJpbmc+
IHNpdGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHZvaWQgRGlkQ2xlYXJQbHVnaW5TaXRl
RGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQogI2VuZGlmCisgICAgR2V0U2hhcmVkV29ya2VyUHJv
Y2Vzc0Nvbm5lY3Rpb24oV1RGOjpTdHJpbmcgdXJsLCBXVEY6OlN0cmluZyBuYW1lKSAtPiAoQ29y
ZUlQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlKSBEZWxheWVkCiAKICNpZiBVU0UoU0VD
VVJJVFlfRlJBTUVXT1JLKQogICAgIFNlY0l0ZW1SZXF1ZXN0KHVpbnQ2NF90IHJlcXVlc3RJRCwg
V2ViS2l0OjpTZWNJdGVtUmVxdWVzdERhdGEgcmVxdWVzdCkgRGlzcGF0Y2hPbkNvbm5lY3Rpb25R
dWV1ZQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVu
Y2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVy
L1Byb2Nlc3NMYXVuY2hlci5jcHAJKHJldmlzaW9uIDEzMTIzNSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Nyw2ICs3Nyw4IEBAIGNvbnN0IGNoYXIqIFByb2Nlc3NMYXVuY2hlcjo6cHJvY2Vzc1R5cGUK
ICAgICAgICAgcmV0dXJuICJwbHVnaW5wcm9jZXNzIjsKICAgICBjYXNlIE5ldHdvcmtQcm9jZXNz
OgogICAgICAgICByZXR1cm4gIm5ldHdvcmtwcm9jZXNzIjsKKyAgICBjYXNlIFNoYXJlZFdvcmtl
clByb2Nlc3M6CisgICAgICAgIHJldHVybiAic2hhcmVkd29ya2VycHJvY2VzcyI7CiAgICAgfQog
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMDAsNiArMTAyLDExIEBAIGJvb2wgUHJv
Y2Vzc0xhdW5jaGVyOjpnZXRQcm9jZXNzVHlwZUZyb20KICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCisgICAgaWYgKCFzdHJjbXAoc3RyaW5nLCAic2hhcmVkd29ya2VycHJvY2VzcyIpKSB7
CisgICAgICAgIHByb2Nlc3NUeXBlID0gU2hhcmVkV29ya2VyUHJvY2VzczsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCShy
ZXZpc2lvbiAxMzEyMzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJv
Y2Vzc0xhdW5jaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDggQEAgcHVibGljOgog
ICAgIGVudW0gUHJvY2Vzc1R5cGUgewogICAgICAgICBXZWJQcm9jZXNzLAogICAgICAgICBQbHVn
aW5Qcm9jZXNzLAotICAgICAgICBOZXR3b3JrUHJvY2VzcworICAgICAgICBOZXR3b3JrUHJvY2Vz
cywKKyAgICAgICAgU2hhcmVkV29ya2VyUHJvY2VzcwogICAgIH07CiAKICAgICBzdHJ1Y3QgTGF1
bmNoT3B0aW9ucyB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFj
L1Byb2Nlc3NMYXVuY2hlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkocmV2aXNpb24gMTMxMjM1
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNo
ZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4MCw2ICszODAsOSBAQCBzdGF0aWMgdm9pZCBj
cmVhdGVQcm9jZXNzKGNvbnN0IFByb2Nlc3NMCiAgICAgICAgIHByb2Nlc3NQYXRoID0gW3dlYktp
dDJCdW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJOZXR3b3JrUHJvY2Vzcy5hcHAi
XTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKKyAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6U2hh
cmVkV29ya2VyUHJvY2VzczoKKyAgICAgICAgcHJvY2Vzc1BhdGggPSBbd2ViS2l0MkJ1bmRsZSBw
YXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZTpAIlNoYXJlZFdvcmtlclByb2Nlc3MuYXBwIl07Cisg
ICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIE5TU3RyaW5nICpmcmFtZXdvcmtFeGVjdXRhYmxl
UGF0aCA9IFt3ZWJLaXQyQnVuZGxlIGV4ZWN1dGFibGVQYXRoXTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9T
aGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIuaCIK
KworI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIldlYkNv
bnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTaGFyZWRXb3JrZXJQcm9j
ZXNzTWFuYWdlciYgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlciwgbWFuYWdlciwg
KCkpOworICAgIHJldHVybiBtYW5hZ2VyOworfQorCitTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdl
cjo6U2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIoKQoreworfQorCit2b2lkIFNoYXJlZFdvcmtl
clByb2Nlc3NNYW5hZ2VyOjpnZXRTaGFyZWRXb3JrZXJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHk+IHJlcGx5KQoreworICAgIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSogc2hhcmVkV29ya2Vy
UHJvY2VzcyA9IGdldE9yQ3JlYXRlU2hhcmVkV29ya2VyUHJvY2Vzcyh1cmwsIG5hbWUpOworICAg
IHNoYXJlZFdvcmtlclByb2Nlc3MtPmdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25uZWN0aW9uKHJl
cGx5KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjo6cmVtb3ZlU2hhcmVk
V29ya2VyUHJvY2Vzc1Byb3h5KFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSogc2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5KQoreworICAgIHNpemVfdCB2ZWN0b3JJbmRleCA9IG1fc2hhcmVkV29ya2Vy
UHJvY2Vzc2VzLmZpbmQoc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KTsKKyAgICBBU1NFUlQodmVj
dG9ySW5kZXggIT0gbm90Rm91bmQpOworCisgICAgbV9zaGFyZWRXb3JrZXJQcm9jZXNzZXMucmVt
b3ZlKHZlY3RvckluZGV4KTsKK30KKworU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KiBTaGFyZWRX
b3JrZXJQcm9jZXNzTWFuYWdlcjo6Z2V0T3JDcmVhdGVTaGFyZWRXb3JrZXJQcm9jZXNzKGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgLy8gRklYTUU6IEZpbmQg
YW4gZXhpc3Rpbmcgc2hhcmVkIHdvcmtlciB0aGF0IG1hdGNoZXMuCisKKyAgICBSZWZQdHI8U2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5PiBzaGFyZWRXb3JrZXJQcm9jZXNzID0gU2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5OjpjcmVhdGUodGhpcywgdXJsLCBuYW1lKTsKKyAgICBTaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHkqIHNoYXJlZFdvcmtlclByb2Nlc3NQdHIgPSBzaGFyZWRXb3JrZXJQcm9jZXNz
LmdldCgpOworCisgICAgbV9zaGFyZWRXb3JrZXJQcm9jZXNzZXMuYXBwZW5kKHNoYXJlZFdvcmtl
clByb2Nlc3MucmVsZWFzZSgpKTsKKworICAgIHJldHVybiBzaGFyZWRXb3JrZXJQcm9jZXNzUHRy
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NNYW5h
Z2VyLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJv
Y2Vzc01hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hh
cmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vz
c01hbmFnZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXJfaAorI2RlZmluZSBTaGFyZWRX
b3JrZXJQcm9jZXNzTWFuYWdlcl9oCisKKyNpbmNsdWRlICJQbHVnaW5Nb2R1bGVJbmZvLmgiCisj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBsdWdpbkluZm9TdG9yZTsKK2NsYXNzIFNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eTsKK2NsYXNzIFdlYlByb2Nlc3NQcm94eTsKK2NsYXNzIFdl
YlBsdWdpblNpdGVEYXRhTWFuYWdlcjsKKworY2xhc3MgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFn
ZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2Vy
KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXImIHNoYXJl
ZCgpOworCisgICAgdm9pZCBnZXRTaGFyZWRXb3JrZXJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHk+KTsKKyAgICB2b2lkIHJlbW92ZVNoYXJlZFdvcmtlclByb2Nlc3NQcm94eShTaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHkqKTsKKworcHJpdmF0ZToKKyAgICBTaGFyZWRXb3JrZXJQcm9jZXNzTWFu
YWdlcigpOworCisgICAgU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KiBnZXRPckNyZWF0ZVNoYXJl
ZFdvcmtlclByb2Nlc3MoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisK
KyAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eT4gPiBtX3NoYXJlZFdv
cmtlclByb2Nlc3NlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
U2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXJfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFn
ZXIuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVk
V29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1By
b3h5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxODMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5
LmgiCisKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgi
CisjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIuaCIKKyNpbmNsdWRlICJTaGFy
ZWRXb3JrZXJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgorCisjaWYgUExB
VEZPUk0oTUFDKQorI2luY2x1ZGUgIk1hY2hQb3J0LmgiCisjZW5kaWYKKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBGSVhNRTogQXJlIHRoZXNl
IHJlbGV2YW50IHRvIHNoYXJlZCB3b3JrZXIgcHJvY2VzcyBhdCBhbGw/CitzdGF0aWMgY29uc3Qg
ZG91YmxlIG1pbmltdW1MaWZldGltZSA9IDMwICogNjA7CitzdGF0aWMgY29uc3QgZG91YmxlIHNo
dXRkb3duVGltZW91dCA9IDEwICogNjA7CisKK1Bhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5PiBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OmNyZWF0ZShTaGFyZWRXb3JrZXJQcm9j
ZXNzTWFuYWdlciogc2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRX
b3JrZXJQcm9jZXNzUHJveHkoc2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIsIHVybCwgbmFtZSkp
OworfQorCitTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OlNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eShTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlciogc2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgOiBtX3NoYXJlZFdv
cmtlclByb2Nlc3NNYW5hZ2VyKHNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyKQorICAgICwgbV9u
dW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzKDApCit7CisgICAgUHJvY2Vzc0xhdW5jaGVyOjpM
YXVuY2hPcHRpb25zIGxhdW5jaE9wdGlvbnM7CisgICAgbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlw
ZSA9IFByb2Nlc3NMYXVuY2hlcjo6U2hhcmVkV29ya2VyUHJvY2VzczsKKyAgICAvLyBGSVhNRTog
UGFzcyBVUkwgZG93biB0byB0aGUgcHJvY2VzcyB0byBsb2FkLgorI2lmIFBMQVRGT1JNKE1BQykK
KyNpZiBIQVZFKFhQQykKKyAgICBsYXVuY2hPcHRpb25zLnVzZVhQQyA9IGZhbHNlOworI2VuZGlm
CisjZW5kaWYKKworICAgIG1fcHJvY2Vzc0xhdW5jaGVyID0gUHJvY2Vzc0xhdW5jaGVyOjpjcmVh
dGUodGhpcywgbGF1bmNoT3B0aW9ucyk7Cit9CisKK1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6
flNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSgpCit7Cit9CisKKy8vIEFza3MgdGhlIHNoYXJlZCB3
b3JrZXIgcHJvY2VzcyB0byBjcmVhdGUgYSBuZXcgY29ubmVjdGlvbiB0byBhIHdlYiBwcm9jZXNz
LiBUaGUgY29ubmVjdGlvbiBpZGVudGlmaWVyIHdpbGwgYmUKKy8vIGVuY29kZWQgaW4gdGhlIGdp
dmVuIGFyZ3VtZW50IGVuY29kZXIgYW5kIHNlbnQgYmFjayB0byB0aGUgY29ubmVjdGlvbiBvZiB0
aGUgZ2l2ZW4gd2ViIHByb2Nlc3MuCit2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6Z2V0
U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXRTaGFyZWRXb3JrZXJQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5
PiByZXBseSkKK3sKKyAgICBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5hcHBlbmQocmVwbHkp
OworCisgICAgaWYgKG1fcHJvY2Vzc0xhdW5jaGVyLT5pc0xhdW5jaGluZygpKSB7CisgICAgICAg
IG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cysrOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorICAgIC8vIEFzayB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzIHRvIGNyZWF0ZSBh
IGNvbm5lY3Rpb24uIFNpbmNlIHRoZSBzaGFyZWQgd29ya2VyIGNhbiBiZSB3YWl0aW5nIGZvciBh
IHN5bmNocm9ub3VzIHJlcGx5CisgICAgLy8gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGlz
IG1lc3NhZ2UgaXMgYWx3YXlzIHByb2Nlc3NlZCwgZXZlbiB3aGVuIHRoZSBzaGFyZWQgd29ya2Vy
IGlzIHdhaXRpbmcgZm9yIGEgc3luY2hyb251cyByZXBseS4KKyAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNoYXJlZFdvcmtlclByb2Nlc3M6OkNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKCksIDAsIENvcmVJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGUoKQor
eworICAgICBtX3Byb2Nlc3NMYXVuY2hlci0+dGVybWluYXRlUHJvY2VzcygpOworfQorCit2b2lk
IFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6c2hhcmVkV29ya2VyUHJvY2Vzc0NyYXNoZWRPckZh
aWxlZFRvTGF1bmNoKCkKK3sKKyAgICAvLyBUaGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzIG11c3Qg
aGF2ZSBjcmFzaGVkIG9yIGV4aXRlZCwgc2VuZCBhbnkgcGVuZGluZyBzeW5jIHJlcGxpZXMgd2Ug
bWlnaHQgaGF2ZS4KKyAgICB3aGlsZSAoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1w
dHkoKSkgeworICAgICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U2hh
cmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRp
bmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01P
VkVfU0VORCkpOworI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisgICAgICAgIHJlcGx5
LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoKSk7CisjZWxzZQorICAgICAgICBub3RJbXBsZW1l
bnRlZCgpOworI2VuZGlmCisgICAgfQorCisgICAgLy8gVGVsbCB0aGUgc2hhcmVkIHdvcmtlciBw
cm9jZXNzIG1hbmFnZXIgdG8gZm9yZ2V0IGFib3V0IHRoaXMgc2hhcmVkIHdvcmtlciBwcm9jZXNz
IHByb3h5LiBUaGlzIG1heSBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgorICAgIG1fc2hhcmVkV29y
a2VyUHJvY2Vzc01hbmFnZXItPnJlbW92ZVNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSh0aGlzKTsK
K30KKwordm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdl
SUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzKQoreworICAgIGRpZFJlY2Vp
dmVTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwg
YXJndW1lbnRzKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OmRpZENsb3Nl
KENvcmVJUEM6OkNvbm5lY3Rpb24qKQoreworICAgIC8vIEZJWE1FOiBOb3RpZnkgd2ViIHByb2Nl
c3Nlcy4KKworICAgIC8vIFRoaXMgd2lsbCBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgorICAgIHNo
YXJlZFdvcmtlclByb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpOworfQorCit2b2lkIFNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6
OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQpCit7Cit9CisKK3ZvaWQgU2hhcmVkV29y
a2VyUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKK3sKKyAg
ICBBU1NFUlQoIW1fY29ubmVjdGlvbik7CisKKyAgICBpZiAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6
aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpIHsKKyAgICAgICAgc2hhcmVk
V29ya2VyUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtX2Nvbm5lY3Rpb24gPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVT
ZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCB0aGlzLCBSdW5Mb29wOjptYWlu
KCkpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBtX2Nvbm5lY3Rpb24tPnNldFNob3VsZENsb3Nl
Q29ubmVjdGlvbk9uTWFjaEV4Y2VwdGlvbnMoKTsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIG1f
Y29ubmVjdGlvbi0+c2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9uT25Qcm9jZXNzVGVybWluYXRpb24o
bV9wcm9jZXNzTGF1bmNoZXItPnByb2Nlc3NJZGVudGlmaWVyKCkpOworI2VuZGlmCisKKyAgICBt
X2Nvbm5lY3Rpb24tPm9wZW4oKTsKKyAgICAKKyAgICBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisKKyAgICBwYXJhbWV0ZXJzLm1pbmltdW1MaWZldGlt
ZSA9IG1pbmltdW1MaWZldGltZTsKKyAgICBwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCA9
IHNodXRkb3duVGltZW91dDsKKworICAgIHBsYXRmb3JtSW5pdGlhbGl6ZVNoYXJlZFdvcmtlclBy
b2Nlc3MocGFyYW1ldGVycyk7CisKKyAgICAvLyBJbml0aWFsaXplIHRoZSBzaGFyZWQgd29ya2Vy
IGhvc3QgcHJvY2Vzcy4KKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNoYXJlZFdv
cmtlclByb2Nlc3M6OkluaXRpYWxpemVTaGFyZWRXb3JrZXJQcm9jZXNzKHBhcmFtZXRlcnMpLCAw
KTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBlbmRpbmdDb25uZWN0aW9u
UmVxdWVzdHM7ICsraSkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTaGFy
ZWRXb3JrZXJQcm9jZXNzOjpDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbigpLCAwKTsKKyAgICAK
KyAgICBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMgPSAwOworfQorCit2b2lkIFNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3Qg
Q29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50aWZpZXIpCit7CisgICAgQVNTRVJU
KCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpOworCisgICAgLy8gR3JhYiB0
aGUgZmlyc3QgcGVuZGluZyBjb25uZWN0aW9uIHJlcGx5LgorICAgIFJlZlB0cjxNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpHZXRTaGFyZWRXb3JrZXJQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXll
ZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwor
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQo
Y29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOwor
I2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisgICAgcmVwbHktPnNlbmQoY29ubmVjdGlv
bklkZW50aWZpZXIpOworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworI2VuZGlmCit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMv
U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5X2gKKyNkZWZpbmUgU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5
X2gKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIu
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgorCisvLyBGSVhNRTogVGhpcyBpcyBwbGF0Zm9ybSBzcGVjaWZpYy4KK25hbWVzcGFj
ZSBDb3JlSVBDIHsKKyAgICBjbGFzcyBNYWNoUG9ydDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyOworY2xhc3MgV2ViUHJvY2Vzc1By
b3h5Oworc3RydWN0IFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CisKK2Ns
YXNzIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZFdv
cmtlclByb2Nlc3NQcm94eT4sIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgUHJvY2Vzc0xh
dW5jaGVyOjpDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZFdv
cmtlclByb2Nlc3NQcm94eT4gY3JlYXRlKFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyKiwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgflNoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eSgpOworCisgICAgLy8gQXNrcyB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzIHRv
IGNyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIHRvIGEgd2ViIHByb2Nlc3MuIFRoZSBjb25uZWN0aW9u
IGlkZW50aWZpZXIgd2lsbCBiZQorICAgIC8vIGVuY29kZWQgaW4gdGhlIGdpdmVuIGFyZ3VtZW50
IGVuY29kZXIgYW5kIHNlbnQgYmFjayB0byB0aGUgY29ubmVjdGlvbiBvZiB0aGUgZ2l2ZW4gd2Vi
IHByb2Nlc3MuCisgICAgdm9pZCBnZXRTaGFyZWRXb3JrZXJQcm9jZXNzQ29ubmVjdGlvbihQYXNz
UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFNoYXJlZFdvcmtlclByb2Nlc3ND
b25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKKyAgICAKKyAgICAvLyBUZXJtaW5hdGVzIHRoZSBz
aGFyZWQgd29ya2VyIHByb2Nlc3MuCisgICAgdm9pZCB0ZXJtaW5hdGUoKTsKKworcHJpdmF0ZToK
KyAgICBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkoU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIq
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIHZvaWQgc2hh
cmVkV29ya2VyUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7CisKKyAgICAvLyBDb3Jl
SVBDOjpDb25uZWN0aW9uOjpDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJ
UEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQpOworCisgICAgLy8gUHJvY2Vzc0xh
dW5jaGVyOjpDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nl
c3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOworCisgICAgLy8g
TWVzc2FnZSBoYW5kbGVycworICAgIHZvaWQgZGlkUmVjZWl2ZVNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisgICAgdm9pZCBkaWRDcmVhdGVXZWJQcm9jZXNzQ29u
bmVjdGlvbihjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50Jik7CisKKyAgICB2b2lkIHBsYXRmb3Jt
SW5pdGlhbGl6ZVNoYXJlZFdvcmtlclByb2Nlc3MoU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyYgcGFyYW1ldGVycyk7CisKKyAgICAvLyBUaGUgc2hhcmVkIHdvcmtlciBob3N0
IHByb2Nlc3MgbWFuYWdlci4KKyAgICBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlciogbV9zaGFy
ZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjsKKworICAgIC8vIFRoZSBjb25uZWN0aW9uIHRvIHRoZSBw
bHVnLWluIGhvc3QgcHJvY2Vzcy4KKyAgICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9j
b25uZWN0aW9uOworCisgICAgLy8gVGhlIHByb2Nlc3MgbGF1bmNoZXIgZm9yIHRoZSBwbHVnLWlu
IGhvc3QgcHJvY2Vzcy4KKyAgICBSZWZQdHI8UHJvY2Vzc0xhdW5jaGVyPiBtX3Byb2Nlc3NMYXVu
Y2hlcjsKKworICAgIERlcXVlPFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRT
aGFyZWRXb3JrZXJQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiA+IG1fcGVuZGluZ0Nv
bm5lY3Rpb25SZXBsaWVzOworCisgICAgLy8gSWYgY3JlYXRlUGx1Z2luQ29ubmVjdGlvbiBpcyBj
YWxsZWQgd2hpbGUgdGhlIHByb2Nlc3MgaXMgc3RpbGwgbGF1bmNoaW5nIHdlJ2xsIGtlZXAgY291
bnQgb2YgaXQgYW5kIHNlbmQgYSBidW5jaCBvZiByZXF1ZXN0cworICAgIC8vIHdoZW4gdGhlIHBy
b2Nlc3MgZmluaXNoZXMgbGF1bmNoaW5nLgorICAgIHVuc2lnbmVkIG1fbnVtUGVuZGluZ0Nvbm5l
Y3Rpb25SZXF1ZXN0czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5X2gKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5o
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1No
YXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29y
a2VyUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBA
CisjIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisj
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2Vz
IC0+IFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSB7CisgICAgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24oQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikKK30KClBy
b3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJz
L1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46bWltZS10eXBlCiAgICsgdGV4dC9wbGFpbgpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExG
CgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTMxMjM1KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw2ICsxOCw3IEBACiAJ
CQlkZXBlbmRlbmNpZXMgPSAoCiAJCQkJMUE1MERCM0MxMTBBM0MxOTAwMEQzRkU1IC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8sCiAJCQkJQkNERTBBQzExMzI3MjcxMjAwMTI1OUZCIC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8sCisJCQkJRTEzQThBNEQxNjI4N0E1QjAwMzkyOTI5IC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8sCiAJCQkJNTEwQ0M4NDgxNjEzQzg1MzAwRDAzRUQzIC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8sCiAJCQkJQkNBRTlERkQxNjBDMEFCMDAwQTMzMjE3IC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8sCiAJCQkJQkNBOEQ0NjgxNUJDRTBENjAwOURDMUYxIC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8sCkBAIC05NDcsNiArOTQ4LDcgQEAKIAkJRTEzM0ZEOEExNDIzREQ3
RjAwRkM3QkZCIC8qIFdlYktpdC5pY25zIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMTMzRkQ4OTE0MjNERDdGMDBGQzdCRkIgLyogV2ViS2l0LmljbnMg
Ki87IH07CiAJCUUxMzRGMDE3MTJFQTVEMzMwMDRFQzU4RCAvKiBXS1ByaW50aW5nVmlldy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzNEYwMTUxMkVB
NUQxMTAwNEVDNThEIC8qIFdLUHJpbnRpbmdWaWV3LmggKi87IH07CiAJCUUxMzRGMDFBMTJFQTVE
OTkwMDRFQzU4RCAvKiBXS1ByaW50aW5nVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMzRGMDE5MTJFQTVEOTkwMDRFQzU4RCAvKiBXS1ByaW50
aW5nVmlldy5tbSAqLzsgfTsKKwkJRTEzQThBMzAxNjI4NzlBQzAwMzkyOTI5IC8qIENvY29hLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxM0E4QTJGMTYyODc5QUMwMDM5MjkyOSAvKiBDb2NvYS5mcmFtZXdvcmsgKi87IH07CiAJCUUx
NzlGRDlDMTM0RDM4MDYwMDE1Qjg4MyAvKiBBcmd1bWVudENvZGVyc01hYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3OUZEOUIxMzREMzgwNjAwMTVC
ODgzIC8qIEFyZ3VtZW50Q29kZXJzTWFjLmggKi87IH07CiAJCUUxNzlGRDlGMTM0RDM4MjUwMDE1
Qjg4MyAvKiBBcmd1bWVudENvZGVyc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzlGRDlFMTM0RDM4MjUwMDE1Qjg4MyAvKiBBcmd1bWVudENv
ZGVyc01hYy5tbSAqLzsgfTsKIAkJRTE3QkY5OTYxNEQwQTczRTAwQTVBMDY5IC8qIE5ldHNjYXBl
U2FuZGJveEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTE3QkY5OTUxNEQwQTczRTAwQTVBMDY5IC8qIE5ldHNjYXBlU2FuZGJveEZ1bmN0
aW9ucy5oICovOyB9OwpAQCAtOTYzLDYgKzk2NSwyMCBAQAogCQlFMUFFQTIzMDE0Njg3QkRCMDA4
MDQ1NjkgLyogV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBRUEyMkUxNDY4N0JEQjAwODA0NTY5IC8q
IFdLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5tbSAqLzsgfTsKIAkJRTFDQzFCOTAxMkQ3RUFE
RjAwNjI1ODM4IC8qIFByaW50SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTFDQzFCOEUxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oICov
OyB9OwogCQlFMUNDMUI5MTEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDQzFCOEYxMkQ3RUFE
RjAwNjI1ODM4IC8qIFByaW50SW5mb01hYy5tbSAqLzsgfTsKKwkJRTFFREZEQTYxNjI4ODY4RTAw
MzlFQ0RBIC8qIE1haW5NYWNQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBNkZBMzEwMTFFMzkyMUUwMERCMTM3MSAvKiBNYWluTWFjUHJv
Y2Vzcy5jcHAgKi87IH07CisJCUUxRURGREE3MTYyODg2OTYwMDM5RUNEQSAvKiBTaGFyZWRXb3Jr
ZXJQcm9jZXNzTWFpbk1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxRURGRDlCMTYyODdEMEIwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNz
TWFpbk1hYy5tbSAqLzsgfTsKKwkJRTFFREZEQTgxNjI4ODY5OTAwMzlFQ0RBIC8qIFNoYXJlZFdv
cmtlclByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUVERkRBMjE2Mjg4MzhDMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01h
Yy5tbSAqLzsgfTsKKwkJRTFFREZEQTkxNjI4ODZBQzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclBy
b2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFFREZEOUUxNjI4ODIxMDAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3MuY3BwICovOyB9
OworCQlFMUVERkRBRTE2Mjg4OTNCMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTFFREZEQUQxNjI4ODkzQjAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaCAqLzsgfTsKKwkJRTFFREZEQjAxNjI4ODk4MjAwMzlFQ0RBIC8qIFNo
YXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFREZEQUYxNjI4ODk4MTAwMzlFQ0RBIC8q
IFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovOyB9OworCQlFMUVE
RkRCNTE2MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVE
RkRCMTE2MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CisJCUUxRURGREI2MTYyOEFENzMwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQ
cm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxRURGREIyMTYyOEFENzMwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWVz
c2FnZXMuaCAqLzsgfTsKKwkJRTFFREZEQjcxNjI4QUQ3MzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtl
clByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVERkRCMzE2MjhBRDczMDAzOUVDREEgLyogU2hhcmVk
V29ya2VyUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJRTFFREZEQjgx
NjI4QUQ3MzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVERkRCNDE2MjhB
RDczMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCAqLzsgfTsK
KwkJRTFFREZEQkExNjI4QjA0NTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFREZEQjkx
NjI4QjA0NTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5oICovOyB9OworCQlF
MUVERkUxMjE2MjhDRkIyMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFREZFMTEx
NjI4Q0ZCMjAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmNwcCAqLzsgfTsK
KwkJRTFFREZFMTMxNjI4Q0ZCRDAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVERkUw
RjE2MjhDRjRFMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIuaCAqLzsgfTsK
KwkJRTFFREZFMTUxNjI4REQ3QTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVERkUx
NDE2MjhERDdBMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcCAqLzsgfTsK
IAkJRTFFRTUzRTMxMUY4Q0ZDMDAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFF
RTUzREMxMUY4Q0Y5RjAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
ICovOyB9OwogCQlFMUVFNTNFNzExRjhDRkZCMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxRUU1M0U2MTFGOENGRkIwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQuY3BwICovOyB9OwogCQlFRDgyQTdGMjEyOEM2RkFGMDA0NDc3QjMgLyogV0tCdW5k
bGVQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUEyMkYwRkYxMjg5RkNEOTAwODVFNzRGIC8qIFdLQnVuZGxlUGFnZU92ZXJsYXkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTA3MCw2
ICsxMDg2LDIwIEBACiAJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IEJDREUwOTMzMTMyNzI0OTYw
MDEyNTlGQjsKIAkJCXJlbW90ZUluZm8gPSAiUGx1Z2luIFByb2Nlc3MiOwogCQl9OworCQlFMTNB
OEE0QzE2Mjg3QTVCMDAzOTI5MjkgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJ
aXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2
OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0g
MTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gRTEzQThBMkIxNjI4NzlBQzAwMzkyOTI5Owor
CQkJcmVtb3RlSW5mbyA9IFNoYXJlZFdvcmtlclByb2Nlc3M7CisJCX07CisJCUUxM0E4QTRFMTYy
ODdBNjYwMDM5MjkyOSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQ
QlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQw
MjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJ
cmVtb3RlR2xvYmFsSURTdHJpbmcgPSA4REMyRUY0RjA0ODZBNjk0MDA5OEIyMTY7CisJCQlyZW1v
dGVJbmZvID0gV2ViS2l0MjsKKwkJfTsKIC8qIEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2Vj
dGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAg
LTIxMTUsNiArMjE0NSwxMyBAQAogCQlFMTMzRkQ4OTE0MjNERDdGMDBGQzdCRkIgLyogV2ViS2l0
LmljbnMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBp
bWFnZS5pY25zOyBuYW1lID0gV2ViS2l0LmljbnM7IHBhdGggPSBXZWJQcm9jZXNzL21hYy9XZWJL
aXQuaWNuczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEzNEYwMTUxMkVBNUQxMTAw
NEVDNThEIC8qIFdLUHJpbnRpbmdWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLUHJpbnRpbmdWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMzRG
MDE5MTJFQTVEOTkwMDRFQzU4RCAvKiBXS1ByaW50aW5nVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLUHJpbnRpbmdWaWV3Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMTNBOEEyQzE2Mjg3OUFDMDAzOTI5MjkgLyogU2hhcmVkV29ya2Vy
UHJvY2Vzcy5hcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IHdyYXBwZXIuYXBwbGljYXRpb247IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFNoYXJl
ZFdvcmtlclByb2Nlc3MuYXBwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQlFMTNBOEEyRjE2Mjg3OUFDMDAzOTI5MjkgLyogQ29jb2EuZnJhbWV3b3JrICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7
IG5hbWUgPSBDb2NvYS5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvY29hLmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CisJCUUxM0E4QTMyMTYy
ODc5QUMwMDM5MjkyOSAvKiBBcHBLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBBcHBL
aXQuZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJh
bWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKKwkJRTEzQThBMzMxNjI4NzlBQzAwMzky
OTI5IC8qIENvcmVEYXRhLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29yZURhdGEuZnJh
bWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRGF0YS5mcmFtZXdv
cms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworCQlFMTNBOEEzNDE2Mjg3OUFDMDAzOTI5Mjkg
LyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEZvdW5kYXRpb24uZnJh
bWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1l
d29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CisJCUUxM0E4QTM3MTYyODc5QUMwMDM5Mjky
OSAvKiBJbmZvLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IG5hbWUgPSBJbmZvLnBsaXN0OyBwYXRoID0gU2hhcmVk
V29ya2VyUHJvY2Vzcy9JbmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MTNBOEE0QjE2Mjg3QTFCMDAzOTI5MjkgLyogU2hhcmVkV29ya2VyUHJvY2Vzcy54Y2NvbmZpZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNj
b25maWc7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm9jZXNzLnhjY29uZmlnOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMTRFOTlGODE0RDg3OUI0MDAxRDIyMUYgLyogUGx1Z2luUHJvY2Vz
cy5lbnRpdGxlbWVudHMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhtbDsgcGF0aCA9IFBsdWdpblByb2Nlc3MuZW50aXRsZW1lbnRzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTRFOTlGOTE0RDg3OUM5MDAxRDIyMUYgLyogYWRk
LWVudGl0bGVtZW50cy5zaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnNoOyBwYXRoID0gImFkZC1lbnRpdGxlbWVudHMuc2giOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTc5RkQ5QjEzNEQzODA2MDAxNUI4ODMgLyog
QXJndW1lbnRDb2RlcnNNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJn
dW1lbnRDb2RlcnNNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMzUsNiAr
MjE3MiwyNCBAQAogCQlFMUFFQTIyRTE0Njg3QkRCMDA4MDQ1NjkgLyogV0tGdWxsS2V5Ym9hcmRB
Y2Nlc3NXYXRjaGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMUNDMUI4RTEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW50SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMUNDMUI4RjEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJpbnRJbmZvTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUVERkQ5ODE2Mjg3QkQxMDAzOUVDREEgLyogU2hh
cmVkV29ya2VyUHJvY2Vzc01haW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2hhcmVkV29ya2VyUHJvY2Vzc01haW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTFFREZEOUIxNjI4N0QwQjAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyUHJv
Y2Vzc01haW5NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxRURGRDlEMTYy
ODdGMTkwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTFFREZEOUUxNjI4ODIxMDAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nl
c3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2Vy
UHJvY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxRURGREEwMTYyODgz
MDMwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzLm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nlc3MubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUxRURGREEyMTYyODgzOEMwMDM5RUNEQSAvKiBTaGFyZWRXb3Jr
ZXJQcm9jZXNzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
U2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTFFREZEQTQxNjI4ODQ2NDAwMzlFQ0RBIC8qIGNvbS5hcHBsZS5XZWJLaXQuU2hhcmVkV29ya2Vy
UHJvY2Vzcy5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0LlNoYXJl
ZFdvcmtlclByb2Nlc3Muc2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxRURGREFC
MTYyODg3QjAwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUVERkRBRDE2Mjg4OTNCMDAzOUVD
REEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxRURGREFGMTYyODg5ODEwMDM5
RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUVERkRCMTE2
MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm9jZXNz
TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFFREZE
QjIxNjI4QUQ3MzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNZXNzYWdlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm9jZXNzTWVzc2FnZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFFREZEQjMxNjI4QUQ3MzAwMzlFQ0RB
IC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUVERkRCNDE2
MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWVz
c2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFFREZEQjkxNjI4QjA0NTAw
MzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTFFREZFMEYxNjI4Q0Y0RTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclBy
b2Nlc3NNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdv
cmtlclByb2Nlc3NNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxRURG
RTExMTYyOENGQjIwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm9jZXNzTWFu
YWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxRURGRTE0MTYyOEREN0Ew
MDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFRTUzREMxMUY4Q0Y5RjAwQ0NCRUU0IC8qIEluamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTFFRTUzRTYxMUY4Q0ZGQjAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGMDM2OTc4MzE1RjRCRTZCMDBDM0E4MEUgLyogV0tDb2xvclBpY2tlclJlc3VsdExp
c3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQ29sb3JQ
aWNrZXJSZXN1bHRMaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MjEwLDYgKzIyNjUsMTQgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKKwkJRTEzQThBMjkxNjI4NzlBQzAwMzkyOTI5IC8qIEZyYW1ld29y
a3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlFMTNBOEEzMDE2Mjg3OUFD
MDAzOTI5MjkgLyogQ29jb2EuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAvKiBFbmQgUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhHcm91cCBzZWN0
aW9uICovCkBAIC0yMjI0LDYgKzIyODcsNyBAQAogCQkJCUJDM0RFNDY2MTVBOTE3NjMwMDhEMjZG
QyAvKiBjb20uYXBwbGUuV2ViS2l0Mi5XZWJQcm9jZXNzU2VydmljZS54cGMgKi8sCiAJCQkJQkNB
RTlERTkxNjBDMDk3NDAwQTMzMjE3IC8qIGNvbS5hcHBsZS5XZWJLaXQyLldlYlByb2Nlc3NTZXJ2
aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnQueHBjICovLAogCQkJCTUxMENDODBFMTYxM0M3OTkwMEQw
M0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5hcHAgKi8sCisJCQkJRTEzQThBMkMxNjI4NzlBQzAwMzky
OTI5IC8qIFNoYXJlZFdvcmtlclByb2Nlc3MuYXBwICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9k
dWN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMjQyLDEyICsyMzA2LDE0IEBA
CiAJCQkJQkMwMzJENUMxMEY0MzZENTAwNThDMTVBIC8qIFdlYlByb2Nlc3MgKi8sCiAJCQkJNTEw
Q0M3REExNjEzOEUwMTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzICovLAogCQkJCTFBMEVDNkIw
MTI0QkJEMzYwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzICovLAorCQkJCUUxM0E4QTM1MTYyODc5
QUMwMDM5MjkyOSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzICovLAogCQkJCTMyQzg4REZGMDM3MUMy
NDIwMEM5MTc4MyAvKiBPdGhlciBTb3VyY2VzICovLAogCQkJCUMwQ0U3MjlEMTI0N0U3MUQwMEJD
MEVDNCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJMDg5QzE2NjVGRTg0MTE1OEMwMkFBQzA3
IC8qIFJlc291cmNlcyAqLywKIAkJCQlDMENFNzMzNTEyNDdGNzBFMDBCQzBFQzQgLyogU2NyaXB0
cyAqLywKIAkJCQkxQTRGOTc2OTEwMEU3QjY2MDA2MzdBMTggLyogQ29uZmlndXJhdGlvbnMgKi8s
CiAJCQkJMDg2N0Q2OUFGRTg0MDI4RkMwMkFBQzA3IC8qIEV4dGVybmFsIEZyYW1ld29ya3MgYW5k
IExpYnJhcmllcyAqLywKKwkJCQlFMTNBOEEyRTE2Mjg3OUFDMDAzOTI5MjkgLyogRnJhbWV3b3Jr
cyAqLywKIAkJCQkwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi8sCiAJCQkp
OwogCQkJbmFtZSA9IFdlYktpdDI7CkBAIC0yMjY5LDYgKzIzMzUsNyBAQAogCQkJY2hpbGRyZW4g
PSAoCiAJCQkJNTEwQ0M4NEExNjEzQzhBQjAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzICovLAog
CQkJCUJDMTIyRkE1MTMyNzA4NUQwMEY3RUFDMSAvKiBQbHVnaW5Qcm9jZXNzICovLAorCQkJCUUx
RURGRDk3MTYyODdBRUMwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzICovLAogCQkJCUJD
OEE1MDBFMTE3NjVBRDQwMDc1NzU3MyAvKiBXZWJLaXQyICovLAogCQkJCUJDOEE1MDBGMTE3NjVB
RTMwMDc1NzU3MyAvKiBXZWJQcm9jZXNzICovLAogCQkJCUJDQUU5REVEMTYwQzA5NzQwMEEzMzIx
NyAvKiBXZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50ICovLApAQCAtMjM3Miw2
ICsyNDM5LDcgQEAKIAkJCQkxQTRGOTc2QzEwMEU3QjY2MDA2MzdBMTggLyogRmVhdHVyZURlZmlu
ZXMueGNjb25maWcgKi8sCiAJCQkJNTEwQ0M4NDYxNjEzQzdDNjAwRDAzRUQzIC8qIE5ldHdvcmtQ
cm9jZXNzLnhjY29uZmlnICovLAogCQkJCUJDMTIyRkEzMTMyNzA3RjMwMEY3RUFDMSAvKiBQbHVn
aW5Qcm9jZXNzLnhjY29uZmlnICovLAorCQkJCUUxM0E4QTRCMTYyODdBMUIwMDM5MjkyOSAvKiBT
aGFyZWRXb3JrZXJQcm9jZXNzLnhjY29uZmlnICovLAogCQkJCTUxODNCMzkzMTM3OUY4NUMwMEU4
NzU0RSAvKiBTaGltLnhjY29uZmlnICovLAogCQkJCTFBNEY5NzZFMTAwRTdCNjYwMDYzN0ExOCAv
KiBWZXJzaW9uLnhjY29uZmlnICovLAogCQkJCUJDQjg2RjRCMTE2QUFBQ0QwMENFMjBCNyAvKiBX
ZWJLaXQyLnhjY29uZmlnICovLApAQCAtMjY0Nyw2ICsyNzE1LDggQEAKIAkJCQlCQzkwQTFEMDEy
MkRENTVFMDBDQzhDNTAgLyogV2ViVVJMUmVzcG9uc2UuaCAqLywKIAkJCQlGNjExM0UyNDEyNkNF
MTgyMDA1N0QwQTcgLyogV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggKi8sCiAJCQkJQzAzMzdE
RDAxMjdBMjk4MDAwOEZGNEY0IC8qIFdlYldoZWVsRXZlbnQuY3BwICovLAorCQkJCUUxRURGREFE
MTYyODg5M0IwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmggKi8sCisJCQkJRTFFREZEQUYxNjI4ODk4MTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovLAogCQkJCTI5MTIxNzA1MTYxQ0U3MzYwMDU3RDQ1
MSAvKiBVc2VyQ29udGVudENvbnRhaW5lci5jcHAgKi8sCiAJCQkJMjkxMjE3MDYxNjFDRTczNjAw
NTdENDUxIC8qIFVzZXJDb250ZW50Q29udGFpbmVyLmggKi8sCiAJCQkpOwpAQCAtMzE0Niw2ICsz
MjE2LDcgQEAKIAkJCQk1MTBDQzdFNzE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29yayAqLywKIAkJ
CQkzMUEyRUM0MDE0ODk5NzM3MDA4MTBENzEgLyogTm90aWZpY2F0aW9ucyAqLywKIAkJCQkxQUVG
Q0MwNTExRDAxRjM0MDA4MjE5RDMgLyogUGx1Z2lucyAqLywKKwkJCQlFMUVERkRBQTE2Mjg4NzhF
MDAzOUVDREEgLyogU2hhcmVkV29ya2VycyAqLywKIAkJCQkxQTY0MjU2NzEyREU0MkVDMDBDQUFF
MkMgLyogQmFja2luZ1N0b3JlLmNwcCAqLywKIAkJCQkxQTY0MjU2NjEyREU0MkVDMDBDQUFFMkMg
LyogQmFja2luZ1N0b3JlLmggKi8sCiAJCQkJQkMyNjUyMTIxMTgyNjA4MTAwMjQzRTEyIC8qIERy
YXdpbmdBcmVhUHJveHkuY3BwICovLApAQCAtMzkzMCw2ICs0MDAxLDEwIEBACiAJCQkJMUEwNDNC
NUMxMjRENUU5RDAwRkZCRkI1IC8qIFBsdWdpblByb2Nlc3NQcm94eU1lc3NhZ2VzLmggKi8sCiAJ
CQkJMUE4RUZBNkUxMjUyQjg0MTAwRjcwNjdGIC8qIFBsdWdpblByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKIAkJCQkxQThFRkE2RjEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNz
YWdlcy5oICovLAorCQkJCUUxRURGREIxMTYyOEFENzMwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQ
cm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlFMUVERkRCMjE2MjhBRDczMDAzOUVD
REEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01lc3NhZ2VzLmggKi8sCisJCQkJRTFFREZEQjMxNjI4
QUQ3MzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCisJCQkJRTFFREZEQjQxNjI4QUQ3MzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJNTEyRTM1NjgxMzBCNTdGMDAwQUJEMTlBIC8qIFdl
YkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQk1MTJF
MzU2OTEzMEI1N0YwMDBBQkQxOUEgLyogV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJNZXNzYWdl
cy5oICovLAogCQkJCTUxMkUzNUY2MTMwQjY0MkUwMEFCRDE5QSAvKiBXZWJBcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTQwMjgsNiArNDEwMywz
NyBAQAogCQkJcGF0aCA9IEZ1bGxTY3JlZW4vbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKIAkJfTsKKwkJRTEzQThBMkUxNjI4NzlBQzAwMzkyOTI5IC8qIEZyYW1ld29ya3MgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUUxM0E4QTJGMTYyODc5
QUMwMDM5MjkyOSAvKiBDb2NvYS5mcmFtZXdvcmsgKi8sCisJCQkJRTEzQThBMzExNjI4NzlBQzAw
MzkyOTI5IC8qIE90aGVyIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJbmFtZSA9IEZyYW1ld29y
a3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlFMTNBOEEzMTE2Mjg3OUFD
MDAzOTI5MjkgLyogT3RoZXIgRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJRTEzQThBMzIxNjI4NzlBQzAwMzkyOTI5IC8qIEFwcEtpdC5m
cmFtZXdvcmsgKi8sCisJCQkJRTEzQThBMzMxNjI4NzlBQzAwMzkyOTI5IC8qIENvcmVEYXRhLmZy
YW1ld29yayAqLywKKwkJCQlFMTNBOEEzNDE2Mjg3OUFDMDAzOTI5MjkgLyogRm91bmRhdGlvbi5m
cmFtZXdvcmsgKi8sCisJCQkpOworCQkJbmFtZSA9ICJPdGhlciBGcmFtZXdvcmtzIjsKKwkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUUxM0E4QTM1MTYyODc5QUMwMDM5MjkyOSAv
KiBTaGFyZWRXb3JrZXJQcm9jZXNzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQlFMUVERkQ5QTE2Mjg3Q0Y1MDAzOUVDREEgLyogbWFjICovLAorCQkJCUUx
RURGRDk4MTYyODdCRDEwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbi5oICovLAor
CQkJCUUxRURGRDlEMTYyODdGMTkwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzLmggKi8s
CisJCQkJRTFFREZEOUUxNjI4ODIxMDAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3MuY3Bw
ICovLAorCQkJCUUxRURGREEwMTYyODgzMDMwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNz
Lm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJCXBhdGggPSBTaGFyZWRXb3JrZXJQcm9jZXNzOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJRTE5OTg3NUIxNDJCRjlDRjAwQkIy
REU3IC8qIFBERiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBA
IC00MDM3LDYgKzQxNDMsMzYgQEAKIAkJCW5hbWUgPSBQREY7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQlFMUVERkQ5NzE2Mjg3QUVDMDAzOUVDREEgLyogU2hhcmVkV29ya2Vy
UHJvY2VzcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
RTEzQThBMzcxNjI4NzlBQzAwMzkyOTI5IC8qIEluZm8ucGxpc3QgKi8sCisJCQkpOworCQkJbmFt
ZSA9IFNoYXJlZFdvcmtlclByb2Nlc3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQlFMUVERkQ5QTE2Mjg3Q0Y1MDAzOUVDREEgLyogbWFjICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlFMUVERkQ5QjE2Mjg3RDBCMDAzOUVDREEgLyog
U2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW0gKi8sCisJCQkJRTFFREZEQTIxNjI4ODM4QzAw
MzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWMubW0gKi8sCisJCQkJRTFFREZEQTQxNjI4
ODQ2NDAwMzlFQ0RBIC8qIGNvbS5hcHBsZS5XZWJLaXQuU2hhcmVkV29ya2VyUHJvY2Vzcy5zYiAq
LywKKwkJCSk7CisJCQlwYXRoID0gbWFjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKKwkJRTFFREZEQUExNjI4ODc4RTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlcnMgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUUxRURGRTBGMTYyOENGNEUw
MDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oICovLAorCQkJCUUxRURGRTEx
MTYyOENGQjIwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5jcHAgKi8sCisJ
CQkJRTFFREZEQUIxNjI4ODdCMDAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbiAqLywKKwkJCQlFMUVERkRCOTE2MjhCMDQ1MDAzOUVDREEgLyogU2hhcmVkV29y
a2VyUHJvY2Vzc1Byb3h5LmggKi8sCisJCQkJRTFFREZFMTQxNjI4REQ3QTAwMzlFQ0RBIC8qIFNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eS5jcHAgKi8sCisJCQkpOworCQkJcGF0aCA9IFNoYXJlZFdv
cmtlcnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlGNjM4OTU1QTEzM0JG
NTdEMDA4OTQxRDUgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKQEAgLTQ1MTgsNiArNDY1NCwxMCBAQAogCQkJCTFBM0VFRDBGMTYxQTUzNTQwMEFFQjRG
NSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0VFRDEyMTYx
QTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5
RDU1REYyMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKKwkJCQlFMUVERkRBRTE2Mjg4OTNCMDAzOUVDREEgLyogU2hhcmVkV29ya2Vy
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTFFREZEQjYx
NjI4QUQ3MzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTFFREZEQjgxNjI4QUQ3MzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMUVERkRCQTE2MjhCMDQ1MDAz
OUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzAxN0QwNzE2MjYwRkY0MDA3MDU0RjUgLyogV0tET01Eb2N1bWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMwMTdEMDkxNjI2MEZGNDAwNzA1NEY1IC8qIFdLRE9NRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMwMTdEMEIxNjI2MEZGNDAwNzA1NEY1IC8qIFdLRE9NSW50ZXJuYWxzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTQ1MzQsNiArNDY3NCw3IEBACiAJCQkJNTE3OTU1NkUxNjI4NzdC
MzAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
Nzk1NTcxMTYyODc3RDIwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE2MzE5OTUxNjI4OUE2MzAwRTIyRjAwIC8qIE5ldHdv
cmtQcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxRURGRTEzMTYyOENGQkQw
MDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC00NjkyLDYgKzQ4MzMsMjQgQEAKIAkJCXByb2R1Y3RSZWZlcmVuY2UgPSBCQ0RFMDk0MjEzMjcy
NDk2MDAxMjU5RkIgLyogUGx1Z2luUHJvY2Vzcy5hcHAgKi87CiAJCQlwcm9kdWN0VHlwZSA9ICJj
b20uYXBwbGUucHJvZHVjdC10eXBlLmFwcGxpY2F0aW9uIjsKIAkJfTsKKwkJRTEzQThBMkIxNjI4
NzlBQzAwMzkyOTI5IC8qIFNoYXJlZFdvcmtlclByb2Nlc3MgKi8gPSB7CisJCQlpc2EgPSBQQlhO
YXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gRTEzQThBNEExNjI4NzlB
QzAwMzkyOTI5IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0
ICJTaGFyZWRXb3JrZXJQcm9jZXNzIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCUUxM0E4
QTI4MTYyODc5QUMwMDM5MjkyOSAvKiBTb3VyY2VzICovLAorCQkJCUUxM0E4QTI5MTYyODc5QUMw
MDM5MjkyOSAvKiBGcmFtZXdvcmtzICovLAorCQkJCUUxM0E4QTJBMTYyODc5QUMwMDM5MjkyOSAv
KiBSZXNvdXJjZXMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBl
bmRlbmNpZXMgPSAoCisJCQkJRTEzQThBNEYxNjI4N0E2NjAwMzkyOTI5IC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9IFNoYXJlZFdvcmtlclByb2Nlc3M7CisJCQlw
cm9kdWN0TmFtZSA9IFNoYXJlZFdvcmtlclByb2Nlc3M7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0g
RTEzQThBMkMxNjI4NzlBQzAwMzkyOTI5IC8qIFNoYXJlZFdvcmtlclByb2Nlc3MuYXBwICovOwor
CQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5hcHBsaWNhdGlvbiI7CisJ
CX07CiAvKiBFbmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYUHJv
amVjdCBzZWN0aW9uICovCkBAIC00NzIxLDYgKzQ4ODAsNyBAQAogCQkJCTFBNTBEQjFEMTEwQTNC
REMwMDBEM0ZFNSAvKiBXZWJQcm9jZXNzICovLAogCQkJCUJDREUwOTMzMTMyNzI0OTYwMDEyNTlG
QiAvKiBQbHVnaW5Qcm9jZXNzICovLAogCQkJCTUxMENDODBEMTYxM0M3OTkwMEQwM0VEMyAvKiBO
ZXR3b3JrUHJvY2VzcyAqLywKKwkJCQlFMTNBOEEyQjE2Mjg3OUFDMDAzOTI5MjkgLyogU2hhcmVk
V29ya2VyUHJvY2VzcyAqLywKIAkJCQlDMENFNzI4NTEyNDdFNjY4MDBCQzBFQzQgLyogRGVyaXZl
ZCBTb3VyY2VzICovLAogCQkJCTFBQzI1RkFGMTJBNDhFQTcwMEJEMjY3MSAvKiBQbHVnaW5Qcm9j
ZXNzU2hpbSAqLywKIAkJCQk1MTAwMzFFQTEzNzlDQUNCMDBDOERGRTQgLyogV2ViUHJvY2Vzc1No
aW0gKi8sCkBAIC00NzgxLDYgKzQ5NDEsMTMgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKKwkJRTEzQThBMkExNjI4NzlBQzAwMzkyOTI5
IC8qIFJlc291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFJlc291cmNlc0J1aWxkUGhhc2U7CisJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAvKiBFbmQgUEJY
UmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0
QnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC01NDI2LDYgKzU1OTMsMTIgQEAKIAkJCQlCQzk4OUQ4
MTE2MUE3RTVEMDAwRDQ2RDMgLyogV0tXZWJQcm9jZXNzUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUEzRUVEMEUxNjFBNTM1NDAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyOUQ1NURGMTE2MUJGOUYxMDAzMUEyRTMgLyogV2ViUGFnZUdy
b3VwUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTFFREZEQTcx
NjI4ODY5NjAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJRTFFREZEQTgxNjI4ODY5OTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nl
c3NNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlFMUVERkRBOTE2Mjg4NkFDMDAzOUVDREEgLyog
U2hhcmVkV29ya2VyUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMUVERkRCMDE2Mjg4
OTgyMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlFMUVERkRCNTE2MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29y
a2VyUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMUVERkRC
NzE2MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMDE3RDA4MTYyNjBGRjQwMDcwNTRGNSAvKiBX
S0RPTURvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwMTdEMEExNjI2MEZGNDAwNzA1
NEY1IC8qIFdLRE9NRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMDE3RDBDMTYyNjBG
RjQwMDcwNTRGNSAvKiBXS0RPTUludGVybmFscy5tbSBpbiBTb3VyY2VzICovLApAQCAtNTQ0Myw2
ICs1NjE2LDggQEAKIAkJCQk1MTc5NTU3MDE2Mjg3N0NGMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2MzE5OTIxNjI4
OTgwQTAwRTIyRjAwIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MTYzMTk5NDE2Mjg5QTYwMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTFFREZFMTIxNjI4Q0ZCMjAwMzlFQ0RBIC8q
IFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxRURG
RTE1MTYyOEREN0EwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkBAIC01NDcwLDYgKzU2NDUsMTQgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKKwkJRTEzQThBMjgxNjI4NzlBQzAwMzky
OTI5IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlFMUVERkRB
NjE2Mjg4NjhFMDAzOUVDREEgLyogTWFpbk1hY1Byb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAv
KiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhUYXJn
ZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KQEAgLTU1MjgsNiArNTcxMSwxNiBAQAogCQkJdGFyZ2V0
ID0gQkNERTA5MzMxMzI3MjQ5NjAwMTI1OUZCIC8qIFBsdWdpblByb2Nlc3MgKi87CiAJCQl0YXJn
ZXRQcm94eSA9IEJDREUwQUMwMTMyNzI3MTIwMDEyNTlGQiAvKiBQQlhDb250YWluZXJJdGVtUHJv
eHkgKi87CiAJCX07CisJCUUxM0E4QTREMTYyODdBNUIwMDM5MjkyOSAvKiBQQlhUYXJnZXREZXBl
bmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9
IEUxM0E4QTJCMTYyODc5QUMwMDM5MjkyOSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzICovOworCQkJ
dGFyZ2V0UHJveHkgPSBFMTNBOEE0QzE2Mjg3QTVCMDAzOTI5MjkgLyogUEJYQ29udGFpbmVySXRl
bVByb3h5ICovOworCQl9OworCQlFMTNBOEE0RjE2Mjg3QTY2MDAzOTI5MjkgLyogUEJYVGFyZ2V0
RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJn
ZXQgPSA4REMyRUY0RjA0ODZBNjk0MDA5OEIyMTYgLyogV2ViS2l0MiAqLzsKKwkJCXRhcmdldFBy
b3h5ID0gRTEzQThBNEUxNjI4N0E2NjAwMzkyOTI5IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LzsKKwkJfTsKIC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYVmFyaWFudEdyb3VwIHNlY3Rpb24gKi8KQEAgLTU4MTUsNiArNjAwOCwyNyBAQAogCQkJ
fTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OworCQlFMTNBOEE0NzE2Mjg3OUFDMDAzOTI5
MjkgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJh
c2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gRTEzQThBNEIxNjI4N0ExQjAwMzkyOTI5IC8qIFNo
YXJlZFdvcmtlclByb2Nlc3MueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
fTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJRTEzQThBNDgxNjI4NzlBQzAwMzkyOTI5IC8q
IFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VD
b25maWd1cmF0aW9uUmVmZXJlbmNlID0gRTEzQThBNEIxNjI4N0ExQjAwMzkyOTI5IC8qIFNoYXJl
ZFdvcmtlclByb2Nlc3MueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsK
KwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQlFMTNBOEE0OTE2Mjg3OUFDMDAzOTI5MjkgLyog
UHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFz
ZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBFMTNBOEE0QjE2Mjg3QTFCMDAzOTI5MjkgLyogU2hh
cmVkV29ya2VyUHJvY2Vzcy54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9
OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRp
b24gc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8K
QEAgLTU5MjgsNiArNjE0MiwxNiBAQAogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUg
PSAwOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKKwkJ
RTEzQThBNEExNjI4NzlBQzAwMzkyOTI5IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYTmF0aXZlVGFyZ2V0ICJTaGFyZWRXb3JrZXJQcm9jZXNzIiAqLyA9IHsKKwkJCWlzYSA9IFhD
Q29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCUUxM0E4
QTQ3MTYyODc5QUMwMDM5MjkyOSAvKiBEZWJ1ZyAqLywKKwkJCQlFMTNBOEE0ODE2Mjg3OUFDMDAz
OTI5MjkgLyogUmVsZWFzZSAqLywKKwkJCQlFMTNBOEE0OTE2Mjg3OUFDMDAzOTI5MjkgLyogUHJv
ZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7
CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogLyogRW5k
IFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwogCX07CiAJcm9vdE9iamVjdCA9IDA4NjdE
NjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViS2l0TWFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJLaXRNYWluLmNwcAkocmV2aXNpb24gMTMxMjM1KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJLaXRNYWluLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01haW4uaCIKICNpbmNsdWRl
ICJQcm9jZXNzTGF1bmNoZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbi5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NNYWluLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCkBAIC02NCw2ICs2NSw4IEBAIHN0YXRpYyBpbnQgV2ViS2l0TWFpbihjb25zdCBDb21t
YW5kTGluZSYKICNlbHNlCiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgorICAgICAgICBjYXNl
IFByb2Nlc3NMYXVuY2hlcjo6U2hhcmVkV29ya2VyUHJvY2VzczoKKyAgICAgICAgICAgIHJldHVy
biBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbihjb21tYW5kTGluZSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIEVYSVRfRkFJTFVSRTsK
</data>
<flag name="review"
          id="181508"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="181511"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168561</attachid>
            <date>2012-10-13 12:12:07 -0700</date>
            <delta_ts>2012-10-13 12:40:14 -0700</delta_ts>
            <desc>with build fix</desc>
            <filename>AddProcess.txt</filename>
            <type>text/plain</type>
            <size>91125</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMTI2MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDEyLTEwLTEzICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBTaGFyZWRX
b3JrZXJQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05OTIxOAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAg
Tm90IHlldCBmdW5jdGlvbmFsLCBqdXN0IHNvbWUgYm9pbGVycGxhdGUgY29kZS4KKworICAgICAg
ICAqIENvbmZpZ3VyYXRpb25zL1NoYXJlZFdvcmtlclByb2Nlc3MueGNjb25maWc6IEFkZGVkLgor
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogR2VuZXJhdGUgbWVzc2FnZSBkaXNwYXRj
aCBmb3IgU2hhcmVkV29ya2VyUHJvY2VzcyBhbmQKKyAgICAgICAgU2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5LgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaDogQWRkZWQg
c2hhcmVkIHdvcmtlciBtZXNzYWdlcyBjbGFzc2VzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQyL21lc3NhZ2VzLnB5OiAoc3RydWN0X29yX2NsYXNzKToKKyAgICAgICAgU2hhcmVkV29ya2Vy
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBpcyBhIHN0cnVjdC4KKworICAgICAgICAqIFNoYXJl
ZC9TaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDogQWRkZWQuCisgICAg
ICAgICogU2hhcmVkV29ya2VyUHJvY2Vzcy9JbmZvLnBsaXN0OiBBZGRlZC4KKyAgICAgICAgKiBT
aGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBTaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuaDogQWRkZWQuCisg
ICAgICAgICogU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLm1lc3NhZ2Vz
LmluOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclBy
b2Nlc3NNYWluLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1No
YXJlZFdvcmtlclByb2Nlc3NNYWMubW06IEFkZGVkLgorICAgICAgICAqIFNoYXJlZFdvcmtlclBy
b2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tOiBBZGRlZC4KKyAgICAgICAg
KiBTaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LlNoYXJlZFdvcmtlclBy
b2Nlc3Muc2I6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJl
ZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1No
YXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJv
Y2Vzc1Byb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1No
YXJlZFdvcmtlclByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGRlZCBTaGFyZWRXb3Jr
ZXJQcm9jZXNzIGJvaWxlcnBsYXRlLCBtb2RlbGVkIGFmdGVyIFBsdWdpblByb2Nlc3MuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgQWRkZWQgZ2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5l
Y3Rpb24oKSBtZXNzYWdlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJLaXRNYWluLmNwcDog
KFdlYktpdE1haW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNo
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OnByb2Nlc3NUeXBlQXNT
dHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmdldFByb2Nlc3NUeXBl
RnJvbVN0cmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hl
ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFj
Lm1tOiAoV2ViS2l0OjpjcmVhdGVQcm9jZXNzKToKKyAgICAgICAgQWRkZWQgYnJhbmNoZXMgZm9y
IFNoYXJlZFdvcmtlclByb2Nlc3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0hhbmRs
ZU1lc3NhZ2UuaDogKENvcmVJUEM6OmNhbGxNZW1iZXJGdW5jdGlvbik6IEFkZGVkIGEgdmVyc2lv
bgorICAgICAgICBmb3IgZGVsYXllZCByZXBseSBtZXNzYWdlcyB3aXRoIHR3byBhcmd1bWVudHMu
CisKIDIwMTItMTAtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFNldHVwIGJhc2ljIE5ldHdvcmtQcm9jZXNzIG1lc3NhZ2luZyBhbmQgaW5pdGlhbGl6YXRp
b24uCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEzMTI2MikK
KysrIFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9QbHVnaW5Qcm9jZXNzL21h
YyBcCiAgICAgJChXZWJLaXQyKS9TaGFyZWQvUGx1Z2lucyBcCiAgICAgJChXZWJLaXQyKS9TaGFy
ZWQgXAorICAgICQoV2ViS2l0MikvU2hhcmVkV29ya2VyUHJvY2VzcyBcCiAgICAgJChXZWJLaXQy
KS9XZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vz
cy9BdXRoZW50aWNhdGlvbiBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0Nvb2tpZXMgXApA
QCAtNDUsNiArNDYsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9Eb3du
bG9hZHMgXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMgXAogICAgICQo
V2ViS2l0MikvVUlQcm9jZXNzL1BsdWdpbnMgXAorICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL1No
YXJlZFdvcmtlcnMgXAogIwogCiBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKQEAgLTYwLDYgKzYyLDgg
QEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gXAog
ICAgIFBsdWdpblByb2Nlc3NQcm94eSBcCiAgICAgUGx1Z2luUHJveHkgXAorICAgIFNoYXJlZFdv
cmtlclByb2Nlc3MgXAorICAgIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSBcCiAgICAgV2ViQXBw
bGljYXRpb25DYWNoZU1hbmFnZXIgXAogICAgIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJv
eHkgXAogICAgIFdlYkNvb2tpZU1hbmFnZXIgXApJbmRleDogU291cmNlL1dlYktpdDIvQ29uZmln
dXJhdGlvbnMvU2hhcmVkV29ya2VyUHJvY2Vzcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9TaGFyZWRXb3JrZXJQcm9jZXNzLnhjY29uZmlnCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvU2hhcmVkV29ya2Vy
UHJvY2Vzcy54Y2NvbmZpZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOSBAQAorLy8gQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8v
CisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8v
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorCisjaW5jbHVkZSAiQmFzZVRhcmdldC54Y2NvbmZp
ZyIKKworR0NDX0VOQUJMRV9PQkpDX0dDID0gTk87CitQUk9EVUNUX05BTUUgPSBTaGFyZWRXb3Jr
ZXJQcm9jZXNzOworSU5GT1BMSVNUX0ZJTEUgPSBTaGFyZWRXb3JrZXJQcm9jZXNzL0luZm8ucGxp
c3Q7CitJTlNUQUxMX1BBVEggPSAkKFdFQktJVDJfRlJBTUVXT1JLU19ESVIpL1dlYktpdDIuZnJh
bWV3b3JrOwpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNz
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9IYW5k
bGVNZXNzYWdlLmgJKHJldmlzaW9uIDEzMTI2MikKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNiArMjAyLDEy
IEBAIHZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbnN0IEFyZ3VtZW50czEKICAgICAob2JqZWN0
LT4qZnVuY3Rpb24pKGFyZ3MuYXJndW1lbnQxLCBkZWxheWVkUmVwbHkpOwogfQogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBl
bmFtZSBSPgordm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oY29uc3QgQXJndW1lbnRzMjxQMSwgUDI+
JiBhcmdzLCBQYXNzUmVmUHRyPFI+IGRlbGF5ZWRSZXBseSwgQyogb2JqZWN0LCBNRiBmdW5jdGlv
bikKK3sKKyAgICAob2JqZWN0LT4qZnVuY3Rpb24pKGFyZ3MuYXJndW1lbnQxLCBhcmdzLmFyZ3Vt
ZW50MiwgZGVsYXllZFJlcGx5KTsKK30KKwogLy8gRGlzcGF0Y2ggZnVuY3Rpb25zIHdpdGggY29u
bmVjdGlvbiBwYXJhbWV0ZXIuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlw
ZW5hbWUgUDE+CiB2b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihDb25uZWN0aW9uKiBjb25uZWN0aW9u
LCBjb25zdCBBcmd1bWVudHMxPFAxPiYgYXJncywgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaAkocmV2aXNp
b24gMTMxMjYyKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDkgKzEwNSwxNSBAQCBlbnVtIE1lc3NhZ2VDbGFzcyB7
CiAKICAgICAvLyBOUE9iamVjdCBtZXNzYWdlcyBzZW50IGJ5IGJvdGggdGhlIHBsdWctaW4gcHJv
Y2VzcyBhbmQgdGhlIHdlYiBwcm9jZXNzLgogICAgIE1lc3NhZ2VDbGFzc05QT2JqZWN0TWVzc2Fn
ZVJlY2VpdmVyLAotICAgIAorCiAgICAgLy8gTWVzc2FnZXMgc2VudCBieSB0aGUgVUkgcHJvY2Vz
cyB0byB0aGUgbmV0d29yayBwcm9jZXNzLgogICAgIE1lc3NhZ2VDbGFzc05ldHdvcmtQcm9jZXNz
LAorCisgICAgLy8gTWVzc2FnZXMgc2VudCBieSB0aGUgVUkgcHJvY2VzcyB0byB0aGUgc2hhcmVk
IHdvcmtlciBwcm9jZXNzLgorICAgIE1lc3NhZ2VDbGFzc1NoYXJlZFdvcmtlclByb2Nlc3MsCisK
KyAgICAvLyBNZXNzYWdlcyBzZW50IGJ5IHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3MgdG8gdGhl
IFVJIHByb2Nlc3MuCisgICAgTWVzc2FnZUNsYXNzU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LAog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBNZXNzYWdlS2luZFRyYWl0cyB7IH07Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5CShyZXZpc2lv
biAxMzEyNjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTIwMyw2ICsyMDMsNyBAQCBkZWYgc3RydWN0X29yX2NsYXNzKG5h
bWVzcGFjZSwgdHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OlBsdWdpblByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMnLAogICAgICAgICAnV2ViS2l0OjpQcmludEluZm8nLAogICAgICAgICAnV2ViS2l0
OjpTZWN1cml0eU9yaWdpbkRhdGEnLAorICAgICAgICAnV2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJywKICAgICAgICAgJ1dlYktpdDo6U3RhdGlzdGljc0RhdGEn
LAogICAgICAgICAnV2ViS2l0OjpUZXh0Q2hlY2tlclN0YXRlJywKICAgICAgICAgJ1dlYktpdDo6
V2ViTmF2aWdhdGlvbkRhdGFTdG9yZScsCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hh
cmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlZFdvcmtlclBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50
Q29kZXJzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTaGFyZWRXb3JrZXJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKCkK
K3sKK30KKwordm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29k
ZXItPmVuY29kZShtaW5pbXVtTGlmZXRpbWUpOworICAgIGVuY29kZXItPmVuY29kZSh0ZXJtaW5h
dGlvblRpbWVvdXQpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGVuY29kZXItPmVuY29kZShw
YXJlbnRQcm9jZXNzTmFtZSk7CisjZW5kaWYKK30KKworYm9vbCBTaGFyZWRXb3JrZXJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNv
ZGVyLCBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiByZXN1bHQpCit7Cisg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0Lm1pbmltdW1MaWZldGltZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQudGVybWluYXRp
b25UaW1lb3V0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQucGFyZW50UHJvY2Vzc05hbWUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKworICAgIHJldHVybiB0cnVlOworfQorCisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdDIvU2hh
cmVkL1NoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
QWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVkV29y
a2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzX2gKKyNkZWZpbmUgU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyc19oCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIFBMQVRGT1JN
KE1BQykKKyNpbmNsdWRlICJNYWNoUG9ydC5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBDb3JlSVBD
IHsKKyAgICBjbGFzcyBBcmd1bWVudERlY29kZXI7CisgICAgY2xhc3MgQXJndW1lbnRFbmNvZGVy
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFNoYXJlZFdvcmtlclByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMgeworICAgIFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMoKTsKKworICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopIGNv
bnN0OworICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBT
aGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CisKKyAgICBkb3VibGUgbWlu
aW11bUxpZmV0aW1lOworICAgIGRvdWJsZSB0ZXJtaW5hdGlvblRpbWVvdXQ7CisKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgU3RyaW5nIHBhcmVudFByb2Nlc3NOYW1lOworI2VuZGlmCit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFNoYXJlZFdvcmtlclByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnNfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdDIvU2hh
cmVkL1NoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkV29ya2VyUHJvY2Vzcy9JbmZvLnBsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZFdvcmtlclByb2Nlc3MvSW5mby5wbGlzdAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvSW5mby5wbGlzdAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9D
VFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93
d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgorPHBsaXN0IHZlcnNpb249
IjEuMCI+Cis8ZGljdD4KKwk8a2V5PkNGQnVuZGxlRXhlY3V0YWJsZTwva2V5PgorCTxzdHJpbmc+
JHtQUk9EVUNUX05BTUV9PC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZUdldEluZm9TdHJpbmc8L2tl
eT4KKwk8c3RyaW5nPiR7QlVORExFX1ZFUlNJT059LCBDb3B5cmlnaHQgMjAwMy0yMDEyIEFwcGxl
IEluYy48L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlSWRlbnRpZmllcjwva2V5PgorCTxzdHJpbmc+
Y29tLmFwcGxlLldlYktpdC4ke1BST0RVQ1RfTkFNRX08L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxl
SW5mb0RpY3Rpb25hcnlWZXJzaW9uPC9rZXk+CisJPHN0cmluZz42LjA8L3N0cmluZz4KKwk8a2V5
PkNGQnVuZGxlTmFtZTwva2V5PgorCTxzdHJpbmc+JHtQUk9EVUNUX05BTUV9PC9zdHJpbmc+CisJ
PGtleT5DRkJ1bmRsZVBhY2thZ2VUeXBlPC9rZXk+CisJPHN0cmluZz5BUFBMPC9zdHJpbmc+CisJ
PGtleT5DRkJ1bmRsZVNob3J0VmVyc2lvblN0cmluZzwva2V5PgorCTxzdHJpbmc+JHtTSE9SVF9W
RVJTSU9OX1NUUklOR308L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlVmVyc2lvbjwva2V5PgorCTxz
dHJpbmc+JHtCVU5ETEVfVkVSU0lPTn08L3N0cmluZz4KKwk8a2V5PkxTRmlsZVF1YXJhbnRpbmVF
bmFibGVkPC9rZXk+CisJPHRydWUvPgorCTxrZXk+TFNNaW5pbXVtU3lzdGVtVmVyc2lvbjwva2V5
PgorCTxzdHJpbmc+JHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVR9PC9zdHJpbmc+CisJPGtleT5M
U1VJRWxlbWVudDwva2V5PgorCTx0cnVlLz4KKwk8a2V5Pk5TUHJpbmNpcGFsQ2xhc3M8L2tleT4K
Kwk8c3RyaW5nPk5TQXBwbGljYXRpb248L3N0cmluZz4KKzwvZGljdD4KKzwvcGxpc3Q+CgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL0luZm8u
cGxpc3QKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdv
cmtlclByb2Nlc3MuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkV29y
a2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU2hhcmVkV29ya2VyUHJvY2Vzcy5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIK
KyNpbmNsdWRlICJBdHRhY2htZW50LmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CisK
KyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KKyNlbmRpZgorCisj
aWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRl
IDxmY250bC5oPgorI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorI2luY2x1ZGUgPHN5cy9zb2Nr
ZXQuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2lmZGVmIFNPQ0tfU0VRUEFDS0VUCisjZGVm
aW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU0VRUEFDS0VUCisjZWxzZQorI2lmIFBMQVRGT1JNKEdUSykK
KyNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TVFJFQU0KKyNlbHNlCisjZGVmaW5lIFNPQ0tFVF9U
WVBFIFNPQ0tfREdSQU0KKyNlbmRpZgorI2VuZGlmIC8vIFNPQ0tfU0VRUEFDS0VUCisjZW5kaWYg
Ly8gVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworU2hhcmVkV29ya2VyUHJvY2VzcyYgU2hhcmVkV29ya2Vy
UHJvY2Vzczo6c2hhcmVkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNoYXJlZFdvcmtl
clByb2Nlc3MsIHByb2Nlc3MsICgpKTsKKyAgICByZXR1cm4gcHJvY2VzczsKK30KKworU2hhcmVk
V29ya2VyUHJvY2Vzczo6U2hhcmVkV29ya2VyUHJvY2VzcygpCisgICAgOiBtX21pbmltdW1MaWZl
dGltZVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlNoYXJlZFdvcmtlclByb2Nlc3M6Om1p
bmltdW1MaWZldGltZVRpbWVyRmlyZWQpCit7Cit9CisKK1NoYXJlZFdvcmtlclByb2Nlc3M6On5T
aGFyZWRXb3JrZXJQcm9jZXNzKCkKK3sKK30KKwordm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjpp
bml0aWFsaXplKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgc2VydmVySWRlbnRpZmll
ciwgUnVuTG9vcCogcnVuTG9vcCkKK3sKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7CisKKyAg
ICBtX2Nvbm5lY3Rpb24gPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0
aW9uKHNlcnZlcklkZW50aWZpZXIsIHRoaXMsIHJ1bkxvb3ApOworICAgIG1fY29ubmVjdGlvbi0+
c2V0RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhkaWRDbG9zZU9uQ29ubmVj
dGlvbldvcmtRdWV1ZSk7CisgICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7Cit9CisKK3ZvaWQgU2hh
cmVkV29ya2VyUHJvY2Vzczo6cmVtb3ZlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24qIHdlYlByb2Nlc3NDb25uZWN0aW9uKQoreworICAgIHNpemVfdCB2ZWN0b3JJbmRl
eCA9IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmZpbmQod2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOwor
ICAgIEFTU0VSVCh2ZWN0b3JJbmRleCAhPSBub3RGb3VuZCk7CisKKyAgICBtX3dlYlByb2Nlc3ND
b25uZWN0aW9ucy5yZW1vdmUodmVjdG9ySW5kZXgpOworICAgIAorICAgIGVuYWJsZVRlcm1pbmF0
aW9uKCk7Cit9CisKK2Jvb2wgU2hhcmVkV29ya2VyUHJvY2Vzczo6c2hvdWxkVGVybWluYXRlKCkK
K3sKKyAgICBBU1NFUlQobV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuaXNFbXB0eSgpKTsKKworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OmRpZFJlY2VpdmVN
ZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJ
RCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzKQoreworICAg
IGRpZFJlY2VpdmVTaGFyZWRXb3JrZXJQcm9jZXNzTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdl
SUQsIGFyZ3VtZW50cyk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzczo6ZGlkQ2xvc2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiopCit7CisgICAgLy8gVGhlIFVJIHByb2Nlc3MgaGFzIGNyYXNo
ZWQsIGp1c3QgZ28gYWhlYWQgYW5kIHF1aXQuCisgICAgUnVuTG9vcDo6Y3VycmVudCgpLT5zdG9w
KCk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQpCit7Cit9CisKK3Zv
aWQgU2hhcmVkV29ya2VyUHJvY2Vzczo6aW5pdGlhbGl6ZVNoYXJlZFdvcmtlclByb2Nlc3MoY29u
c3QgU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sK
KyAgICBzZXRNaW5pbXVtTGlmZXRpbWUocGFyYW1ldGVycy5taW5pbXVtTGlmZXRpbWUpOworICAg
IHNldFRlcm1pbmF0aW9uVGltZW91dChwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCk7CisK
KyAgICBwbGF0Zm9ybUluaXRpYWxpemUocGFyYW1ldGVycyk7Cit9CisKK3ZvaWQgU2hhcmVkV29y
a2VyUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQoreworI2lmIFBMQVRGT1JN
KE1BQykKKyAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgorICAgIG1hY2hfcG9ydF90
IGxpc3RlbmluZ1BvcnQ7CisgICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCks
IE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7CisKKyAgICAvLyBDcmVh
dGUgYSBsaXN0ZW5pbmcgY29ubmVjdGlvbi4KKyAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rp
b24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKENvcmVJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOworICAgIG1fd2ViUHJvY2Vzc0Nv
bm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisKKyAgICBDb3JlSVBDOjpB
dHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NF
TkQpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0KSwgMCk7Cisj
ZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICBpbnQgc29ja2V0c1syXTsKKyAgICBp
ZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgPT0gLTEpIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBEb24ndCBleHBvc2UgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2VzcyBzb2NrZXQgdG8g
dGhlIHdlYiBwcm9jZXNzLgorICAgIHdoaWxlIChmY250bChzb2NrZXRzWzFdLCBGX1NFVEZELCBG
RF9DTE9FWEVDKSAgPT0gLTEpIHsKKyAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHdoaWxlIChjbG9zZShz
b2NrZXRzWzBdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9CisgICAgICAgICAgICB3aGls
ZSAoY2xvc2Uoc29ja2V0c1sxXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRG9uJ3QgZXhwb3NlIHRo
ZSBzaGFyZWQgd29ya2VyIHByb2Nlc3Mgc29ja2V0IHRvIHBvc3NpYmxlIGZ1dHVyZSB3ZWIgcHJv
Y2Vzc2VzLgorICAgIHdoaWxlIChmY250bChzb2NrZXRzWzBdLCBGX1NFVEZELCBGRF9DTE9FWEVD
KSA9PSAtMSkgeworICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMF0p
ID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KKyAgICAgICAgICAgIHdoaWxlIChjbG9zZShz
b2NrZXRzWzFdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+
IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHNvY2tldHNbMV0pOwor
ICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7
CisKKyAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tldChzb2NrZXRzWzBdKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6
RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50U29ja2V0KSwgMCk7CisjZWxzZQor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisjZW5kaWYKKworICAgIGRpc2FibGVUZXJtaW5hdGlvbigp
OworfQorCit2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OnNldE1pbmltdW1MaWZldGltZShkb3Vi
bGUgbGlmZXRpbWUpCit7CisgICAgaWYgKGxpZmV0aW1lIDw9IDAuMCkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIGRpc2FibGVUZXJtaW5hdGlvbigpOworICAgIAorICAgIG1fbWluaW11bUxp
ZmV0aW1lVGltZXIuc3RhcnRPbmVTaG90KGxpZmV0aW1lKTsKK30KKwordm9pZCBTaGFyZWRXb3Jr
ZXJQcm9jZXNzOjptaW5pbXVtTGlmZXRpbWVUaW1lckZpcmVkKCkKK3sKKyAgICBlbmFibGVUZXJt
aW5hdGlvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKClByb3BlcnR5IGNoYW5nZXMg
b246IFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vz
cy5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVk
V29ya2VyUHJvY2Vzcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkV29y
a2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
ODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNoYXJlZFdvcmtlclByb2Nlc3NfaAor
I2RlZmluZSBTaGFyZWRXb3JrZXJQcm9jZXNzX2gKKworI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5o
IgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IFJ1bkxvb3A7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXRzY2FwZVBsdWdp
bk1vZHVsZTsKK2NsYXNzIFdlYlByb2Nlc3NDb25uZWN0aW9uOworc3RydWN0IFNoYXJlZFdvcmtl
clByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CisgICAgICAgIAorY2xhc3MgU2hhcmVkV29ya2Vy
UHJvY2VzcyA6IENoaWxkUHJvY2VzcyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2hhcmVk
V29ya2VyUHJvY2Vzcyk7CitwdWJsaWM6CisgICAgc3RhdGljIFNoYXJlZFdvcmtlclByb2Nlc3Mm
IHNoYXJlZCgpOworCisgICAgdm9pZCBpbml0aWFsaXplKENvcmVJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIsIFdlYkNvcmU6OlJ1bkxvb3AqKTsKKyAgICB2b2lkIHJlbW92ZVdlYlByb2Nlc3ND
b25uZWN0aW9uKFdlYlByb2Nlc3NDb25uZWN0aW9uKiB3ZWJQcm9jZXNzQ29ubmVjdGlvbik7CisK
K3ByaXZhdGU6CisgICAgU2hhcmVkV29ya2VyUHJvY2VzcygpOworICAgIH5TaGFyZWRXb3JrZXJQ
cm9jZXNzKCk7CisKKyAgICAvLyBDaGlsZFByb2Nlc3MKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
VGVybWluYXRlKCk7CisKKyAgICAvLyBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJ
UEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisgICAgdmlydHVhbCB2
b2lkIGRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQpOworCisgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KKyAgICB2b2lkIGRpZFJlY2VpdmVT
aGFyZWRXb3JrZXJQcm9jZXNzTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6
TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKKyAgICB2b2lkIGluaXRpYWxp
emVTaGFyZWRXb3JrZXJQcm9jZXNzKGNvbnN0IFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmKTsKKyAgICB2b2lkIGNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCk7CisKKyAg
ICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJik7CisgICAgCisgICAgdm9pZCBzZXRNaW5pbXVtTGlmZXRpbWUoZG91Ymxl
KTsKKyAgICB2b2lkIG1pbmltdW1MaWZldGltZVRpbWVyRmlyZWQoKTsKKworICAgIC8vIFRoZSBj
b25uZWN0aW9uIHRvIHRoZSBVSSBwcm9jZXNzLgorICAgIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0
aW9uPiBtX2Nvbm5lY3Rpb247CisKKyAgICAvLyBPdXIgd2ViIHByb2Nlc3MgY29ubmVjdGlvbnMu
CisgICAgVmVjdG9yPFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gPiBtX3dlYlByb2Nlc3ND
b25uZWN0aW9uczsKKworICAgIFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyPFNoYXJlZFdvcmtlclBy
b2Nlc3M+IG1fbWluaW11bUxpZmV0aW1lVGltZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFNoYXJlZFdvcmtlclByb2Nlc3NfaAoKUHJvcGVydHkgY2hhbmdlcyBv
bjogU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNz
LmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5tZXNz
YWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNz
L1NoYXJlZFdvcmtlclByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwLCAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gU2hhcmVkV29ya2VyUHJvY2VzcyB7
CisgICAgIyBJbml0aWFsaXplcyB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzLgorICAgIEluaXRp
YWxpemVTaGFyZWRXb3JrZXJQcm9jZXNzKFdlYktpdDo6U2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyBwcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKQorICAgIAorICAgICMgQ3Jl
YXRlcyBhIHdlYiBwcm9jZXNzIGNvbm5lY3Rpb24uIFdoZW4gdGhlIGNvbm5lY3Rpb24gaGFzIGJl
ZW4gY3JlYXRlZCwKKyAgICAjIFRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3Mgc2VuZHMgYmFjayBh
IERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uIG1lc3NhZ2Ugd2l0aAorICAgICMgYSBjb25u
ZWN0aW9uIGlkZW50aWZpZXIuCisgICAgQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQorfQoK
UHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9T
aGFyZWRXb3JrZXJQcm9jZXNzLm1lc3NhZ2VzLmluCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1l
LXR5cGUKICAgKyB0ZXh0L3BsYWluCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3NN
YWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9T
aGFyZWRXb3JrZXJQcm9jZXNzTWFpbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFpbi5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTaGFyZWRXb3Jr
ZXJQcm9jZXNzTWFpbl9oCisjZGVmaW5lIFNoYXJlZFdvcmtlclByb2Nlc3NNYWluX2gKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisgICAgCitjbGFzcyBDb21tYW5kTGluZTsKKworaW50IFNoYXJlZFdv
cmtlclByb2Nlc3NNYWluKGNvbnN0IENvbW1hbmRMaW5lJik7CisgICAgCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFNoYXJlZFdvcmtlclByb2Nlc3NNYWluX2gKClByb3BlcnR5
IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29y
a2VyUHJvY2Vzc01haW4uaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0
aXZlCgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVk
V29ya2VyUHJvY2Vzc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRX
b3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFjLm1tCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJv
Y2Vzc01hYy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU2hhcmVkV29ya2VyUHJvY2Vzcy5oIgor
CisjaW1wb3J0ICJTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAi
U2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2ltcG9ydCA8V2ViQ29y
ZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4K
KyNpbXBvcnQgPGRsZmNuLmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHN5
c2V4aXRzLmg+CisjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgorCisvLyBXZSBoYXZlIHRvICN1bmRl
ZiBfX0FQUExFX0FQSV9QUklWQVRFIHRvIHByZXZlbnQgc2FuZGJveC5oIGZyb20gbG9va2luZyBm
b3IgYSBoZWFkZXIgZmlsZSB0aGF0IGRvZXMgbm90IGV4aXN0ICg8cmRhcjovL3Byb2JsZW0vOTY3
OTIxMT4pLiAKKyN1bmRlZiBfX0FQUExFX0FQSV9QUklWQVRFCisjaW1wb3J0IDxzYW5kYm94Lmg+
CisKKyNkZWZpbmUgU0FOREJPWF9OQU1FRF9FWFRFUk5BTCAweDAwMDMKK2V4dGVybiAiQyIgaW50
IHNhbmRib3hfaW5pdF93aXRoX3BhcmFtZXRlcnMoY29uc3QgY2hhciAqcHJvZmlsZSwgdWludDY0
X3QgZmxhZ3MsIGNvbnN0IGNoYXIgKmNvbnN0IHBhcmFtZXRlcnNbXSwgY2hhciAqKmVycm9yYnVm
KTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwNzAKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVTYW5kYm94KCkKK3sKKyAgICBO
U0J1bmRsZSAqd2Via2l0MkJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpOU0NsYXNz
RnJvbVN0cmluZyhAIldLVmlldyIpXTsKKyAgICBjb25zdCBjaGFyKiBwcm9maWxlUGF0aCA9IFtb
d2Via2l0MkJ1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJjb20uYXBwbGUuV2ViS2l0LlNoYXJlZFdv
cmtlclByb2Nlc3MiIG9mVHlwZTpAInNiIl0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXTsKKwor
ICAgIGNoYXIqIGVycm9yQnVmOworICAgIGlmIChzYW5kYm94X2luaXRfd2l0aF9wYXJhbWV0ZXJz
KHByb2ZpbGVQYXRoLCBTQU5EQk9YX05BTUVEX0VYVEVSTkFMLCAwLCAmZXJyb3JCdWYpKSB7Cisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiU2hhcmVkV29ya2VyUHJvY2VzczogY291bGRuJ3QgaW5pdGlh
bGl6ZSBzYW5kYm94IHByb2ZpbGUgWyVzXSBlcnJvciAnJXMnXG4iLCBwcm9maWxlUGF0aCwgZXJy
b3JCdWYpOworICAgICAgICBleGl0KEVYX05PUEVSTSk7CisgICAgfQorfQorI2VuZGlmCisKK3Zv
aWQgU2hhcmVkV29ya2VyUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IFNoYXJlZFdv
cmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgTlNTdHJp
bmcgKmFwcGxpY2F0aW9uTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9T
VFJJTkcoIlNoYXJlZCBXZWIgV29ya2VyICglQCBJbnRlcm5ldCBwbHVnLWluKSIsCisgICAgICAg
ICJ2aXNpYmxlIG5hbWUgb2YgdGhlIHBsdWctaW4gaG9zdCBwcm9jZXNzLiBUaGUgYXJndW1lbnQg
aXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuIiksCisgICAgICAgIChOU1N0cmluZyAqKXBhcmFtZXRl
cnMucGFyZW50UHJvY2Vzc05hbWVdOworICAgIAorICAgIFdLU2V0VmlzaWJsZUFwcGxpY2F0aW9u
TmFtZSgoQ0ZTdHJpbmdSZWYpYXBwbGljYXRpb25OYW1lKTsKKworI2lmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAorICAgIGluaXRpYWxpemVTYW5kYm94KCk7CisjZW5k
aWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFj
Lm1tCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYWlu
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3Mv
bWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01haW5N
YWMubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTaGFyZWRXb3JrZXJQcm9jZXNzTWFp
bi5oIgorCisjaW1wb3J0ICJDb21tYW5kTGluZS5oIgorI2ltcG9ydCAiRW52aXJvbm1lbnRVdGls
aXRpZXMuaCIKKyNpbXBvcnQgIlNoYXJlZFdvcmtlclByb2Nlc3MuaCIKKyNpbXBvcnQgPEZvdW5k
YXRpb24vTlNVc2VyRGVmYXVsdHMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUnVuTG9vcC5oPgorI2lt
cG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjaW1wb3J0IDxtYWNoL21hY2hfZXJyb3Iu
aD4KKyNpbXBvcnQgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgorI2ltcG9ydCA8c2Vy
dmVycy9ib290c3RyYXAuaD4KKyNpbXBvcnQgPHN0ZGlvLmg+CisjaW1wb3J0IDx3dGYvTWFpblRo
cmVhZC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQvQ1N0
cmluZy5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNkZWZpbmUgU0hPV19D
UkFTSF9SRVBPUlRFUiAxCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworLy8gRklYTUU6IFRoZXJlIGlzIG11Y2ggY29kZSBoZXJlIHRoYXQgaXMgZHVw
bGljYXRlZCBpbiBXZWJQcm9jZXNzTWFpbk1hYy5tbSwgd2Ugc2hvdWxkIGFkZCBhIHNoYXJlZCBi
YXNlIGNsYXNzIHdoZXJlCisvLyB3ZSBjYW4gcHV0IGV2ZXJ5dGhpbmcuCisKK2ludCBTaGFyZWRX
b3JrZXJQcm9jZXNzTWFpbihjb25zdCBDb21tYW5kTGluZSYgY29tbWFuZExpbmUpCit7CisgICAg
U3RyaW5nIHNlcnZpY2VOYW1lID0gY29tbWFuZExpbmVbInNlcnZpY2VuYW1lIl07CisgICAgaWYg
KHNlcnZpY2VOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAg
ICAKKyAgICAvLyBHZXQgdGhlIHNlcnZlciBwb3J0LgorICAgIG1hY2hfcG9ydF90IHNlcnZlclBv
cnQ7CisgICAga2Vybl9yZXR1cm5fdCBrciA9IGJvb3RzdHJhcF9sb29rX3VwKGJvb3RzdHJhcF9w
b3J0LCBzZXJ2aWNlTmFtZS51dGY4KCkuZGF0YSgpLCAmc2VydmVyUG9ydCk7CisgICAgaWYgKGty
KSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiYm9vdHN0cmFwX2xvb2tfdXAgcmVzdWx0OiAlcyAo
JXgpXG4iLCBtYWNoX2Vycm9yX3N0cmluZyhrciksIGtyKTsKKyAgICAgICAgcmV0dXJuIEVYSVRf
RkFJTFVSRTsKKyAgICB9CisKKyAgICBTdHJpbmcgbG9jYWxpemF0aW9uID0gY29tbWFuZExpbmVb
ImxvY2FsaXphdGlvbiJdOworICAgIGlmICghbG9jYWxpemF0aW9uLmlzRW1wdHkoKSkgeworICAg
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmTG9jYWxpemF0aW9uKEFkb3B0Q0YsIENGU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFy
Kj4obG9jYWxpemF0aW9uLmNoYXJhY3RlcnMoKSksIGxvY2FsaXphdGlvbi5sZW5ndGgoKSkpOwor
ICAgICAgICBXS1NldERlZmF1bHRMb2NhbGl6YXRpb24oY2ZMb2NhbGl6YXRpb24uZ2V0KCkpOwor
ICAgIH0KKworI2lmIGRlZmluZWQoX19pMzg2X18pCisgICAgeworICAgICAgICBOU0F1dG9yZWxl
YXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOworCisgICAg
ICAgIE5TRGljdGlvbmFyeSAqZGVmYXVsdHMgPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdp
dGhPYmplY3RzQW5kS2V5czpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgQCJBcHBsZU1h
Z25pZmllZE1vZGUiLCBuaWxdOworICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXSByZWdpc3RlckRlZmF1bHRzOmRlZmF1bHRzXTsKKyAgICAgICAgW2RlZmF1bHRz
IHJlbGVhc2VdOworCisgICAgICAgIFtwb29sIGRyYWluXTsKKyAgICB9CisjZW5kaWYKKworI2lm
ICFTSE9XX0NSQVNIX1JFUE9SVEVSCisgICAgLy8gSW5zdGFsbHMgc2lnbmFsIGhhbmRsZXJzIHRo
YXQgZXhpdCBvbiBhIGNyYXNoIHNvIHRoYXQgQ3Jhc2hSZXBvcnRlciBkb2VzIG5vdCBzaG93IHVw
LgorICAgIHNpZ25hbChTSUdJTEwsIF9leGl0KTsKKyAgICBzaWduYWwoU0lHRlBFLCBfZXhpdCk7
CisgICAgc2lnbmFsKFNJR0JVUywgX2V4aXQpOworICAgIHNpZ25hbChTSUdTRUdWLCBfZXhpdCk7
CisjZW5kaWYKKworICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIFdURjo6aW5p
dGlhbGl6ZU1haW5UaHJlYWQoKTsKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3Ao
KTsKKworICAgIC8vIEluaXRpYWxpemUgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2VzcyBjb25uZWN0
aW9uLgorICAgIFNoYXJlZFdvcmtlclByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUoQ29yZUlQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihzZXJ2ZXJQb3J0KSwgUnVuTG9vcDo6bWFpbigpKTsK
KworICAgIFtOU0FwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXTsKKworICAgIFJ1bkxvb3A6
OnJ1bigpOworICAgIAorICAgIHJldHVybiAwOworfQorCit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9j
ZXNzTWFpbk1hYy5tbQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9jb20uYXBwbGUuV2Vi
S2l0LlNoYXJlZFdvcmtlclByb2Nlc3Muc2IKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5TaGFyZWRXb3JrZXJQcm9j
ZXNzLnNiCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vz
cy9tYWMvY29tLmFwcGxlLldlYktpdC5TaGFyZWRXb3JrZXJQcm9jZXNzLnNiCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQgQEAKKyh2ZXJzaW9uIDEpCisoZGVueSBkZWZhdWx0ICh3aXRoIHBhcnRp
YWwtc3ltYm9saWNhdGlvbikpCisKKyhpbXBvcnQgInN5c3RlbS5zYiIpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMTMxMjYy
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3Myw2ICszNzMsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENs
ZWFyUGx1Z2luU2l0ZQogCiAjZW5kaWYKIAordm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFNoYXJl
ZFdvcmtlclByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IG5hbWUsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U2hhcmVkV29y
a2VyUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkpCit7CisgICAgLy8gRklY
TUU6IEltcGxlbWVudAorfQorCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1l
c3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCiB7CiAgICAgLy8g
RklYTUU6IENvbWUgdXAgd2l0aCBhIGJldHRlciB3YXkgdG8gY2hhaW4gdG8gdGhlIFdlYkNvbnRl
eHQuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShy
ZXZpc2lvbiAxMzEyNjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgaGFuZGxlR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgcmVmcmVzaCk7CiAg
ICAgdm9pZCBzZW5kRGlkR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIFBhc3NPd25QdHI8
VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+ID4pOwogCisgICAgdm9pZCBnZXRTaGFyZWRXb3Jr
ZXJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFNoYXJlZFdvcmtlclBy
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKKwogI2lmIFVTRShTRUNVUklUWV9GUkFN
RVdPUkspCiAgICAgdm9pZCBzZWNJdGVtUmVxdWVzdChDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBTZWNJdGVtUmVxdWVzdERhdGEmKTsKICAgICB2b2lkIHNl
Y0tleWNoYWluSXRlbVJlcXVlc3QoQ29yZUlQQzo6Q29ubmVjdGlvbiosIHVpbnQ2NF90IHJlcXVl
c3RJRCwgY29uc3QgU2VjS2V5Y2hhaW5JdGVtUmVxdWVzdERhdGEmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgko
cmV2aXNpb24gMTMxMjYyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQcm9jZXNzUHJveHkgewogICAgIHZvaWQgRGlkR2V0U2l0ZXNXaXRoUGx1Z2luRGF0
YShWZWN0b3I8V1RGOjpTdHJpbmc+IHNpdGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHZv
aWQgRGlkQ2xlYXJQbHVnaW5TaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQogI2VuZGlmCisg
ICAgR2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGOjpTdHJpbmcgdXJsLCBXVEY6
OlN0cmluZyBuYW1lKSAtPiAoQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlKSBE
ZWxheWVkCiAKICNpZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQogICAgIFNlY0l0ZW1SZXF1ZXN0
KHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0OjpTZWNJdGVtUmVxdWVzdERhdGEgcmVxdWVzdCkg
RGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHAJKHJldmlzaW9uIDEzMTI2
MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3Nyw4IEBAIGNvbnN0IGNoYXIqIFByb2Nlc3NM
YXVuY2hlcjo6cHJvY2Vzc1R5cGUKICAgICAgICAgcmV0dXJuICJwbHVnaW5wcm9jZXNzIjsKICAg
ICBjYXNlIE5ldHdvcmtQcm9jZXNzOgogICAgICAgICByZXR1cm4gIm5ldHdvcmtwcm9jZXNzIjsK
KyAgICBjYXNlIFNoYXJlZFdvcmtlclByb2Nlc3M6CisgICAgICAgIHJldHVybiAic2hhcmVkd29y
a2VycHJvY2VzcyI7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMDAs
NiArMTAyLDExIEBAIGJvb2wgUHJvY2Vzc0xhdW5jaGVyOjpnZXRQcm9jZXNzVHlwZUZyb20KICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgaWYgKCFzdHJjbXAoc3RyaW5nLCAic2hh
cmVkd29ya2VycHJvY2VzcyIpKSB7CisgICAgICAgIHByb2Nlc3NUeXBlID0gU2hhcmVkV29ya2Vy
UHJvY2VzczsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xh
dW5jaGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVy
L1Byb2Nlc3NMYXVuY2hlci5oCShyZXZpc2lvbiAxMzEyNjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5
LDcgKzQ5LDggQEAgcHVibGljOgogICAgIGVudW0gUHJvY2Vzc1R5cGUgewogICAgICAgICBXZWJQ
cm9jZXNzLAogICAgICAgICBQbHVnaW5Qcm9jZXNzLAotICAgICAgICBOZXR3b3JrUHJvY2Vzcwor
ICAgICAgICBOZXR3b3JrUHJvY2VzcywKKyAgICAgICAgU2hhcmVkV29ya2VyUHJvY2VzcwogICAg
IH07CiAKICAgICBzdHJ1Y3QgTGF1bmNoT3B0aW9ucyB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1h
Yy5tbQkocmV2aXNpb24gMTMxMjYyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5j
aGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4MCw2ICsz
ODAsOSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVQcm9jZXNzKGNvbnN0IFByb2Nlc3NMCiAgICAgICAg
IHByb2Nlc3NQYXRoID0gW3dlYktpdDJCdW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6
QCJOZXR3b3JrUHJvY2Vzcy5hcHAiXTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKKyAgICBjYXNl
IFByb2Nlc3NMYXVuY2hlcjo6U2hhcmVkV29ya2VyUHJvY2VzczoKKyAgICAgICAgcHJvY2Vzc1Bh
dGggPSBbd2ViS2l0MkJ1bmRsZSBwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZTpAIlNoYXJlZFdv
cmtlclByb2Nlc3MuYXBwIl07CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIE5TU3RyaW5n
ICpmcmFtZXdvcmtFeGVjdXRhYmxlUGF0aCA9IFt3ZWJLaXQyQnVuZGxlIGV4ZWN1dGFibGVQYXRo
XTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdv
cmtlclByb2Nlc3NNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRX
b3JrZXJQcm9jZXNzTWFuYWdlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkV29y
a2VyUHJvY2Vzc01hbmFnZXIuaCIKKworI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eS5oIgorI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlciYgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFn
ZXI6OnNoYXJlZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTaGFyZWRXb3JrZXJQcm9j
ZXNzTWFuYWdlciwgbWFuYWdlciwgKCkpOworICAgIHJldHVybiBtYW5hZ2VyOworfQorCitTaGFy
ZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjo6U2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIoKQorewor
fQorCit2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyOjpnZXRTaGFyZWRXb3JrZXJQcm9j
ZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNz
UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFNoYXJlZFdvcmtlclByb2Nlc3ND
b25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5KQoreworICAgIFNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eSogc2hhcmVkV29ya2VyUHJvY2VzcyA9IGdldE9yQ3JlYXRlU2hhcmVkV29ya2VyUHJv
Y2Vzcyh1cmwsIG5hbWUpOworICAgIHNoYXJlZFdvcmtlclByb2Nlc3MtPmdldFNoYXJlZFdvcmtl
clByb2Nlc3NDb25uZWN0aW9uKHJlcGx5KTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNz
TWFuYWdlcjo6cmVtb3ZlU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KFNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eSogc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KQoreworICAgIHNpemVfdCB2ZWN0b3JJ
bmRleCA9IG1fc2hhcmVkV29ya2VyUHJvY2Vzc2VzLmZpbmQoc2hhcmVkV29ya2VyUHJvY2Vzc1By
b3h5KTsKKyAgICBBU1NFUlQodmVjdG9ySW5kZXggIT0gbm90Rm91bmQpOworCisgICAgbV9zaGFy
ZWRXb3JrZXJQcm9jZXNzZXMucmVtb3ZlKHZlY3RvckluZGV4KTsKK30KKworU2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5KiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjo6Z2V0T3JDcmVhdGVTaGFy
ZWRXb3JrZXJQcm9jZXNzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7
CisgICAgLy8gRklYTUU6IEZpbmQgYW4gZXhpc3Rpbmcgc2hhcmVkIHdvcmtlciB0aGF0IG1hdGNo
ZXMuCisKKyAgICBSZWZQdHI8U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5PiBzaGFyZWRXb3JrZXJQ
cm9jZXNzID0gU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUodGhpcywgdXJsLCBuYW1l
KTsKKyAgICBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkqIHNoYXJlZFdvcmtlclByb2Nlc3NQdHIg
PSBzaGFyZWRXb3JrZXJQcm9jZXNzLmdldCgpOworCisgICAgbV9zaGFyZWRXb3JrZXJQcm9jZXNz
ZXMuYXBwZW5kKHNoYXJlZFdvcmtlclByb2Nlc3MucmVsZWFzZSgpKTsKKworICAgIHJldHVybiBz
aGFyZWRXb3JrZXJQcm9jZXNzUHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKClByb3Bl
cnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1No
YXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0
eWxlCiAgICsgbmF0aXZlCgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdv
cmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdl
ci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtl
cnMvU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFn
ZXJfaAorI2RlZmluZSBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcl9oCisKKyNpbmNsdWRlICJQ
bHVnaW5Nb2R1bGVJbmZvLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworICAgIGNsYXNz
IEFyZ3VtZW50RW5jb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBsdWdp
bkluZm9TdG9yZTsKK2NsYXNzIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTsKK2NsYXNzIFdlYlBy
b2Nlc3NQcm94eTsKK2NsYXNzIFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlcjsKKworY2xhc3MgU2hh
cmVkV29ya2VyUHJvY2Vzc01hbmFnZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNoYXJl
ZFdvcmtlclByb2Nlc3NNYW5hZ2VyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU2hhcmVkV29ya2Vy
UHJvY2Vzc01hbmFnZXImIHNoYXJlZCgpOworCisgICAgdm9pZCBnZXRTaGFyZWRXb3JrZXJQcm9j
ZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNz
UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFNoYXJlZFdvcmtlclByb2Nlc3ND
b25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKKyAgICB2b2lkIHJlbW92ZVNoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eShTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkqKTsKKworcHJpdmF0ZToKKyAgICBT
aGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcigpOworCisgICAgU2hhcmVkV29ya2VyUHJvY2Vzc1By
b3h5KiBnZXRPckNyZWF0ZVNoYXJlZFdvcmtlclByb2Nlc3MoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eT4gPiBtX3NoYXJlZFdvcmtlclByb2Nlc3NlczsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXJfaAoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hh
cmVkV29ya2VyUHJvY2Vzc01hbmFnZXIuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxl
CiAgICsgbmF0aXZlCgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtl
cnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMv
U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxODMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5LmgiCisKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFn
ZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UnVuTG9vcC5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIk1hY2hQb3J0LmgiCisj
ZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CisvLyBGSVhNRTogQXJlIHRoZXNlIHJlbGV2YW50IHRvIHNoYXJlZCB3b3JrZXIgcHJvY2VzcyBh
dCBhbGw/CitzdGF0aWMgY29uc3QgZG91YmxlIG1pbmltdW1MaWZldGltZSA9IDMwICogNjA7Citz
dGF0aWMgY29uc3QgZG91YmxlIHNodXRkb3duVGltZW91dCA9IDEwICogNjA7CisKK1Bhc3NSZWZQ
dHI8U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5PiBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OmNy
ZWF0ZShTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlciogc2hhcmVkV29ya2VyUHJvY2Vzc01hbmFn
ZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkoc2hhcmVkV29ya2VyUHJvY2Vz
c01hbmFnZXIsIHVybCwgbmFtZSkpOworfQorCitTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OlNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eShTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlciogc2hhcmVk
V29ya2VyUHJvY2Vzc01hbmFnZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5h
bWUpCisgICAgOiBtX3NoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyKHNoYXJlZFdvcmtlclByb2Nl
c3NNYW5hZ2VyKQorICAgICwgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzKDApCit7Cisg
ICAgUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zIGxhdW5jaE9wdGlvbnM7CisgICAgbGF1
bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9IFByb2Nlc3NMYXVuY2hlcjo6U2hhcmVkV29ya2VyUHJv
Y2VzczsKKyAgICAvLyBGSVhNRTogUGFzcyBVUkwgZG93biB0byB0aGUgcHJvY2VzcyB0byBsb2Fk
LgorI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBIQVZFKFhQQykKKyAgICBsYXVuY2hPcHRpb25zLnVz
ZVhQQyA9IGZhbHNlOworI2VuZGlmCisjZW5kaWYKKworICAgIG1fcHJvY2Vzc0xhdW5jaGVyID0g
UHJvY2Vzc0xhdW5jaGVyOjpjcmVhdGUodGhpcywgbGF1bmNoT3B0aW9ucyk7Cit9CisKK1NoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eTo6flNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSgpCit7Cit9CisK
Ky8vIEFza3MgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2VzcyB0byBjcmVhdGUgYSBuZXcgY29ubmVj
dGlvbiB0byBhIHdlYiBwcm9jZXNzLiBUaGUgY29ubmVjdGlvbiBpZGVudGlmaWVyIHdpbGwgYmUK
Ky8vIGVuY29kZWQgaW4gdGhlIGdpdmVuIGFyZ3VtZW50IGVuY29kZXIgYW5kIHNlbnQgYmFjayB0
byB0aGUgY29ubmVjdGlvbiBvZiB0aGUgZ2l2ZW4gd2ViIHByb2Nlc3MuCit2b2lkIFNoYXJlZFdv
cmtlclByb2Nlc3NQcm94eTo6Z2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1Jl
ZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTaGFyZWRXb3JrZXJQcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSkKK3sKKyAgICBtX3BlbmRpbmdDb25uZWN0aW9u
UmVwbGllcy5hcHBlbmQocmVwbHkpOworCisgICAgaWYgKG1fcHJvY2Vzc0xhdW5jaGVyLT5pc0xh
dW5jaGluZygpKSB7CisgICAgICAgIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cysrOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIC8vIEFzayB0aGUgc2hhcmVkIHdvcmtl
ciBwcm9jZXNzIHRvIGNyZWF0ZSBhIGNvbm5lY3Rpb24uIFNpbmNlIHRoZSBzaGFyZWQgd29ya2Vy
IGNhbiBiZSB3YWl0aW5nIGZvciBhIHN5bmNocm9ub3VzIHJlcGx5CisgICAgLy8gd2UgbmVlZCB0
byBtYWtlIHN1cmUgdGhhdCB0aGlzIG1lc3NhZ2UgaXMgYWx3YXlzIHByb2Nlc3NlZCwgZXZlbiB3
aGVuIHRoZSBzaGFyZWQgd29ya2VyIGlzIHdhaXRpbmcgZm9yIGEgc3luY2hyb251cyByZXBseS4K
KyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNoYXJlZFdvcmtlclByb2Nlc3M6OkNy
ZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCksIDAsIENvcmVJUEM6OkRpc3BhdGNoTWVzc2FnZUV2
ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5Ojp0ZXJtaW5hdGUoKQoreworICAgICBtX3Byb2Nlc3NMYXVuY2hlci0+dGVybWluYXRl
UHJvY2VzcygpOworfQorCit2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6c2hhcmVkV29y
a2VyUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCkKK3sKKyAgICAvLyBUaGUgc2hhcmVk
IHdvcmtlciBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVkIG9yIGV4aXRlZCwgc2VuZCBhbnkgcGVu
ZGluZyBzeW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4KKyAgICB3aGlsZSAoIW1fcGVuZGluZ0Nv
bm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSkgeworICAgICAgICBSZWZQdHI8TWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRS
ZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKwor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVu
dCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOworI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NP
Q0tFVFMpCisgICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoKSk7CisjZWxz
ZQorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworI2VuZGlmCisgICAgfQorCisgICAgLy8gVGVs
bCB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzIG1hbmFnZXIgdG8gZm9yZ2V0IGFib3V0IHRoaXMg
c2hhcmVkIHdvcmtlciBwcm9jZXNzIHByb3h5LiBUaGlzIG1heSBjYXVzZSB1cyB0byBiZSBkZWxl
dGVkLgorICAgIG1fc2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXItPnJlbW92ZVNoYXJlZFdvcmtl
clByb2Nlc3NQcm94eSh0aGlzKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6
OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJ
UEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1l
bnRzKQoreworICAgIGRpZFJlY2VpdmVTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHlNZXNzYWdlKGNv
bm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHk6OmRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKQoreworICAgIC8vIEZJ
WE1FOiBOb3RpZnkgd2ViIHByb2Nlc3Nlcy4KKworICAgIC8vIFRoaXMgd2lsbCBjYXVzZSB1cyB0
byBiZSBkZWxldGVkLgorICAgIHNoYXJlZFdvcmtlclByb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xh
dW5jaCgpOworfQorCit2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQpCit7
Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmco
UHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7CisKKyAgICBpZiAo
Q29yZUlQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmll
cikpIHsKKyAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNo
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2Nvbm5lY3Rpb24gPSBDb3JlSVBD
OjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVy
LCB0aGlzLCBSdW5Mb29wOjptYWluKCkpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBtX2Nvbm5l
Y3Rpb24tPnNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uTWFjaEV4Y2VwdGlvbnMoKTsKKyNlbGlm
IFBMQVRGT1JNKFFUKQorICAgIG1fY29ubmVjdGlvbi0+c2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9u
T25Qcm9jZXNzVGVybWluYXRpb24obV9wcm9jZXNzTGF1bmNoZXItPnByb2Nlc3NJZGVudGlmaWVy
KCkpOworI2VuZGlmCisKKyAgICBtX2Nvbm5lY3Rpb24tPm9wZW4oKTsKKyAgICAKKyAgICBTaGFy
ZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisKKyAgICBwYXJh
bWV0ZXJzLm1pbmltdW1MaWZldGltZSA9IG1pbmltdW1MaWZldGltZTsKKyAgICBwYXJhbWV0ZXJz
LnRlcm1pbmF0aW9uVGltZW91dCA9IHNodXRkb3duVGltZW91dDsKKworICAgIHBsYXRmb3JtSW5p
dGlhbGl6ZVNoYXJlZFdvcmtlclByb2Nlc3MocGFyYW1ldGVycyk7CisKKyAgICAvLyBJbml0aWFs
aXplIHRoZSBzaGFyZWQgd29ya2VyIGhvc3QgcHJvY2Vzcy4KKyAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNoYXJlZFdvcmtlclByb2Nlc3M6OkluaXRpYWxpemVTaGFyZWRXb3JrZXJQ
cm9jZXNzKHBhcmFtZXRlcnMpLCAwKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHM7ICsraSkKKyAgICAgICAgbV9jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpTaGFyZWRXb3JrZXJQcm9jZXNzOjpDcmVhdGVXZWJQcm9jZXNzQ29u
bmVjdGlvbigpLCAwKTsKKyAgICAKKyAgICBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMg
PSAwOworfQorCit2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24oY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50
aWZpZXIpCit7CisgICAgQVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5
KCkpOworCisgICAgLy8gR3JhYiB0aGUgZmlyc3QgcGVuZGluZyBjb25uZWN0aW9uIHJlcGx5Lgor
ICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTaGFyZWRXb3JrZXJQcm9j
ZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25S
ZXBsaWVzLnRha2VGaXJzdCgpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHJlcGx5LT5zZW5k
KENvcmVJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01T
R19UWVBFX01PVkVfU0VORCkpOworI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisgICAg
cmVwbHktPnNlbmQoY29ubmVjdGlvbklkZW50aWZpZXIpOworI2Vsc2UKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAoKUHJvcGVydHkgY2hh
bmdlcyBvbjogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29y
a2VyUHJvY2Vzc1Byb3h5LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsg
bmF0aXZlCgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5X2gKKyNkZWZpbmUgU2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5X2gKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdl
cy5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorCisvLyBGSVhNRTogVGhpcyBpcyBwbGF0Zm9y
bSBzcGVjaWZpYy4KK25hbWVzcGFjZSBDb3JlSVBDIHsKKyAgICBjbGFzcyBNYWNoUG9ydDsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2Vy
OworY2xhc3MgV2ViUHJvY2Vzc1Byb3h5Oworc3RydWN0IFNoYXJlZFdvcmtlclByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnM7CisKK2NsYXNzIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eT4sIENvcmVJUEM6OkNvbm5lY3Rp
b246OkNsaWVudCwgUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eT4gY3JlYXRlKFNoYXJlZFdvcmtl
clByb2Nlc3NNYW5hZ2VyKiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSk7
CisgICAgflNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSgpOworCisgICAgLy8gQXNrcyB0aGUgc2hh
cmVkIHdvcmtlciBwcm9jZXNzIHRvIGNyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIHRvIGEgd2ViIHBy
b2Nlc3MuIFRoZSBjb25uZWN0aW9uIGlkZW50aWZpZXIgd2lsbCBiZQorICAgIC8vIGVuY29kZWQg
aW4gdGhlIGdpdmVuIGFyZ3VtZW50IGVuY29kZXIgYW5kIHNlbnQgYmFjayB0byB0aGUgY29ubmVj
dGlvbiBvZiB0aGUgZ2l2ZW4gd2ViIHByb2Nlc3MuCisgICAgdm9pZCBnZXRTaGFyZWRXb3JrZXJQ
cm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dFNoYXJlZFdvcmtlclByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKKyAgICAKKyAg
ICAvLyBUZXJtaW5hdGVzIHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3MuCisgICAgdm9pZCB0ZXJt
aW5hdGUoKTsKKworcHJpdmF0ZToKKyAgICBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkoU2hhcmVk
V29ya2VyUHJvY2Vzc01hbmFnZXIqLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKKworICAgIHZvaWQgc2hhcmVkV29ya2VyUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1
bmNoKCk7CisKKyAgICAvLyBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1l
c3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRp
ZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQp
OworCisgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIpOworCisgICAgLy8gTWVzc2FnZSBoYW5kbGVycworICAgIHZvaWQgZGlkUmVjZWl2
ZVNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENv
cmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisgICAgdm9pZCBk
aWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50Jik7
CisKKyAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVNoYXJlZFdvcmtlclByb2Nlc3MoU2hhcmVk
V29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycyk7CisKKyAgICAvLyBU
aGUgc2hhcmVkIHdvcmtlciBob3N0IHByb2Nlc3MgbWFuYWdlci4KKyAgICBTaGFyZWRXb3JrZXJQ
cm9jZXNzTWFuYWdlciogbV9zaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjsKKworICAgIC8vIFRo
ZSBjb25uZWN0aW9uIHRvIHRoZSBwbHVnLWluIGhvc3QgcHJvY2Vzcy4KKyAgICBSZWZQdHI8Q29y
ZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworCisgICAgLy8gVGhlIHByb2Nlc3MgbGF1
bmNoZXIgZm9yIHRoZSBwbHVnLWluIGhvc3QgcHJvY2Vzcy4KKyAgICBSZWZQdHI8UHJvY2Vzc0xh
dW5jaGVyPiBtX3Byb2Nlc3NMYXVuY2hlcjsKKworICAgIERlcXVlPFJlZlB0cjxNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpHZXRTaGFyZWRXb3JrZXJQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXll
ZFJlcGx5PiA+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOworCisgICAgLy8gSWYgY3JlYXRl
UGx1Z2luQ29ubmVjdGlvbiBpcyBjYWxsZWQgd2hpbGUgdGhlIHByb2Nlc3MgaXMgc3RpbGwgbGF1
bmNoaW5nIHdlJ2xsIGtlZXAgY291bnQgb2YgaXQgYW5kIHNlbmQgYSBidW5jaCBvZiByZXF1ZXN0
cworICAgIC8vIHdoZW4gdGhlIHByb2Nlc3MgZmluaXNoZXMgbGF1bmNoaW5nLgorICAgIHVuc2ln
bmVkIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5X2gKClByb3BlcnR5
IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAg
KyBuYXRpdmUKCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9T
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1No
YXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDI1IEBACisjIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSB7CisgICAg
RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0
aW9uSWRlbnRpZmllcikKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9wbGFpbgpBZGRlZDog
c3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTMxMjYyKQorKysgU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xOCw2ICsxOCw3IEBACiAJCQlkZXBlbmRlbmNpZXMgPSAoCiAJCQkJMUE1MERCM0MxMTBB
M0MxOTAwMEQzRkU1IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJQkNERTBBQzExMzI3
MjcxMjAwMTI1OUZCIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkJRTEzQThBNEQxNjI4
N0E1QjAwMzkyOTI5IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJNTEwQ0M4NDgxNjEz
Qzg1MzAwRDAzRUQzIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJQkNBRTlERkQxNjBD
MEFCMDAwQTMzMjE3IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJQkNBOEQ0NjgxNUJD
RTBENjAwOURDMUYxIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCkBAIC05NDcsNiArOTQ4LDcg
QEAKIAkJRTEzM0ZEOEExNDIzREQ3RjAwRkM3QkZCIC8qIFdlYktpdC5pY25zIGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTMzRkQ4OTE0MjNERDdGMDBG
QzdCRkIgLyogV2ViS2l0LmljbnMgKi87IH07CiAJCUUxMzRGMDE3MTJFQTVEMzMwMDRFQzU4RCAv
KiBXS1ByaW50aW5nVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTEzNEYwMTUxMkVBNUQxMTAwNEVDNThEIC8qIFdLUHJpbnRpbmdWaWV3LmggKi87
IH07CiAJCUUxMzRGMDFBMTJFQTVEOTkwMDRFQzU4RCAvKiBXS1ByaW50aW5nVmlldy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMzRGMDE5MTJFQTVE
OTkwMDRFQzU4RCAvKiBXS1ByaW50aW5nVmlldy5tbSAqLzsgfTsKKwkJRTEzQThBMzAxNjI4NzlB
QzAwMzkyOTI5IC8qIENvY29hLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxM0E4QTJGMTYyODc5QUMwMDM5MjkyOSAvKiBDb2NvYS5m
cmFtZXdvcmsgKi87IH07CiAJCUUxNzlGRDlDMTM0RDM4MDYwMDE1Qjg4MyAvKiBBcmd1bWVudENv
ZGVyc01hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTE3OUZEOUIxMzREMzgwNjAwMTVCODgzIC8qIEFyZ3VtZW50Q29kZXJzTWFjLmggKi87IH07CiAJ
CUUxNzlGRDlGMTM0RDM4MjUwMDE1Qjg4MyAvKiBBcmd1bWVudENvZGVyc01hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzlGRDlFMTM0RDM4MjUw
MDE1Qjg4MyAvKiBBcmd1bWVudENvZGVyc01hYy5tbSAqLzsgfTsKIAkJRTE3QkY5OTYxNEQwQTcz
RTAwQTVBMDY5IC8qIE5ldHNjYXBlU2FuZGJveEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3QkY5OTUxNEQwQTczRTAwQTVBMDY5IC8q
IE5ldHNjYXBlU2FuZGJveEZ1bmN0aW9ucy5oICovOyB9OwpAQCAtOTYzLDYgKzk2NSwyMCBAQAog
CQlFMUFFQTIzMDE0Njg3QkRCMDA4MDQ1NjkgLyogV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBRUEy
MkUxNDY4N0JEQjAwODA0NTY5IC8qIFdLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5tbSAqLzsg
fTsKIAkJRTFDQzFCOTAxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDQzFCOEUxMkQ3RUFERjAwNjI1
ODM4IC8qIFByaW50SW5mby5oICovOyB9OwogCQlFMUNDMUI5MTEyRDdFQURGMDA2MjU4MzggLyog
UHJpbnRJbmZvTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTFDQzFCOEYxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mb01hYy5tbSAqLzsgfTsK
KwkJRTFFREZEQTYxNjI4ODY4RTAwMzlFQ0RBIC8qIE1haW5NYWNQcm9jZXNzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNkZBMzEwMTFFMzkyMUUw
MERCMTM3MSAvKiBNYWluTWFjUHJvY2Vzcy5jcHAgKi87IH07CisJCUUxRURGREE3MTYyODg2OTYw
MDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRURGRDlCMTYyODdEMEIwMDM5RUNEQSAv
KiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSAqLzsgfTsKKwkJRTFFREZEQTgxNjI4ODY5
OTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVERkRBMjE2Mjg4MzhDMDAzOUVDREEgLyog
U2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbSAqLzsgfTsKKwkJRTFFREZEQTkxNjI4ODZBQzAwMzlF
Q0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFREZEOUUxNjI4ODIxMDAwMzlFQ0RBIC8qIFNoYXJlZFdv
cmtlclByb2Nlc3MuY3BwICovOyB9OworCQlFMUVERkRBRTE2Mjg4OTNCMDAzOUVDREEgLyogU2hh
cmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFREZEQUQxNjI4ODkzQjAwMzlFQ0RBIC8qIFNo
YXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsKKwkJRTFFREZEQjAx
NjI4ODk4MjAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFREZE
QUYxNjI4ODk4MTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwICovOyB9OworCQlFMUVERkRCNTE2MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2Vy
UHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMUVERkRCMTE2MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2Vy
UHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCUUxRURGREI2MTYyOEFENzMwMDM5
RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRURGREIyMTYyOEFENzMwMDM5RUNEQSAvKiBT
aGFyZWRXb3JrZXJQcm9jZXNzTWVzc2FnZXMuaCAqLzsgfTsKKwkJRTFFREZEQjcxNjI4QUQ3MzAw
MzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVERkRCMzE2MjhB
RDczMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCAqLzsgfTsKKwkJRTFFREZEQjgxNjI4QUQ3MzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUVERkRCNDE2MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1By
b3h5TWVzc2FnZXMuaCAqLzsgfTsKKwkJRTFFREZEQkExNjI4QjA0NTAwMzlFQ0RBIC8qIFNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTFFREZEQjkxNjI4QjA0NTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eS5oICovOyB9OworCQlFMUVERkUxMjE2MjhDRkIyMDAzOUVDREEgLyogU2hhcmVkV29y
a2VyUHJvY2Vzc01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTFFREZFMTExNjI4Q0ZCMjAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nl
c3NNYW5hZ2VyLmNwcCAqLzsgfTsKKwkJRTFFREZFMTMxNjI4Q0ZCRDAwMzlFQ0RBIC8qIFNoYXJl
ZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMUVERkUwRjE2MjhDRjRFMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJv
Y2Vzc01hbmFnZXIuaCAqLzsgfTsKKwkJRTFFREZFMTUxNjI4REQ3QTAwMzlFQ0RBIC8qIFNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMUVERkUxNDE2MjhERDdBMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJv
Y2Vzc1Byb3h5LmNwcCAqLzsgfTsKIAkJRTFFRTUzRTMxMUY4Q0ZDMDAwQ0NCRUU0IC8qIEluamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFFRTUzREMxMUY4Q0Y5RjAwQ0NCRUU0IC8qIEluamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5oICovOyB9OwogCQlFMUVFNTNFNzExRjhDRkZCMDBDQ0JFRTQg
LyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRUU1M0U2MTFGOENGRkIwMENDQkVFNCAvKiBJ
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwICovOyB9OwogCQlFRDgyQTdGMjEyOEM2
RkFGMDA0NDc3QjMgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyMkYwRkYxMjg5RkNEOTAwODVFNzRGIC8qIFdL
QnVuZGxlUGFnZU92ZXJsYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTA3MCw2ICsxMDg2LDIwIEBACiAJCQlyZW1vdGVHbG9iYWxJRFN0cmlu
ZyA9IEJDREUwOTMzMTMyNzI0OTYwMDEyNTlGQjsKIAkJCXJlbW90ZUluZm8gPSAiUGx1Z2luIFBy
b2Nlc3MiOwogCQl9OworCQlFMTNBOEE0QzE2Mjg3QTVCMDAzOTI5MjkgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29u
dGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0
ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gRTEzQThB
MkIxNjI4NzlBQzAwMzkyOTI5OworCQkJcmVtb3RlSW5mbyA9IFNoYXJlZFdvcmtlclByb2Nlc3M7
CisJCX07CisJCUUxM0E4QTRFMTYyODdBNjYwMDM5MjkyOSAvKiBQQlhDb250YWluZXJJdGVtUHJv
eHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQ
b3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJ
CQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA4REMyRUY0RjA0ODZB
Njk0MDA5OEIyMTY7CisJCQlyZW1vdGVJbmZvID0gV2ViS2l0MjsKKwkJfTsKIC8qIEVuZCBQQlhD
b250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTIxMTUsNiArMjE0NSwxMyBAQAogCQlFMTMzRkQ4OTE0MjNE
RDdGMDBGQzdCRkIgLyogV2ViS2l0LmljbnMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5pY25zOyBuYW1lID0gV2ViS2l0LmljbnM7IHBhdGgg
PSBXZWJQcm9jZXNzL21hYy9XZWJLaXQuaWNuczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTEzNEYwMTUxMkVBNUQxMTAwNEVDNThEIC8qIFdLUHJpbnRpbmdWaWV3LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUHJpbnRpbmdWaWV3Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxMzRGMDE5MTJFQTVEOTkwMDRFQzU4RCAvKiBXS1ByaW50aW5nVmll
dy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLUHJpbnRpbmdW
aWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMTNBOEEyQzE2Mjg3OUFDMDAz
OTI5MjkgLyogU2hhcmVkV29ya2VyUHJvY2Vzcy5hcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuYXBwbGljYXRpb247IGluY2x1ZGVJbklu
ZGV4ID0gMDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nlc3MuYXBwOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OworCQlFMTNBOEEyRjE2Mjg3OUFDMDAzOTI5MjkgLyogQ29jb2Eu
ZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb2NvYS5mcmFtZXdvcms7IHBhdGggPSBTeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvY29hLmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JP
T1Q7IH07CisJCUUxM0E4QTMyMTYyODc5QUMwMDM5MjkyOSAvKiBBcHBLaXQuZnJhbWV3b3JrICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5m
cmFtZXdvcms7IG5hbWUgPSBBcHBLaXQuZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKKwkJ
RTEzQThBMzMxNjI4NzlBQzAwMzkyOTI5IC8qIENvcmVEYXRhLmZyYW1ld29yayAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3Jr
OyBuYW1lID0gQ29yZURhdGEuZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlRGF0YS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworCQlFMTNB
OEEzNDE2Mjg3OUFDMDAzOTI5MjkgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsg
bmFtZSA9IEZvdW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CisJCUUx
M0E4QTM3MTYyODc5QUMwMDM5MjkyOSAvKiBJbmZvLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IG5hbWUgPSBJbmZv
LnBsaXN0OyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzcy9JbmZvLnBsaXN0OyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMTNBOEE0QjE2Mjg3QTFCMDAzOTI5MjkgLyogU2hhcmVkV29y
a2VyUHJvY2Vzcy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm9jZXNzLnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTRFOTlGODE0RDg3OUI0MDAx
RDIyMUYgLyogUGx1Z2luUHJvY2Vzcy5lbnRpdGxlbWVudHMgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhtbDsgcGF0aCA9IFBsdWdpblByb2Nl
c3MuZW50aXRsZW1lbnRzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTRFOTlGOTE0
RDg3OUM5MDAxRDIyMUYgLyogYWRkLWVudGl0bGVtZW50cy5zaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnNoOyBwYXRoID0gImFk
ZC1lbnRpdGxlbWVudHMuc2giOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTc5RkQ5
QjEzNEQzODA2MDAxNUI4ODMgLyogQXJndW1lbnRDb2RlcnNNYWMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXJndW1lbnRDb2RlcnNNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIxMzUsNiArMjE3MiwyNCBAQAogCQlFMUFFQTIyRTE0Njg3QkRCMDA4MDQ1
NjkgLyogV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNDMUI4RTEyRDdFQURGMDA2MjU4MzggLyogUHJp
bnRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW50SW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNDMUI4RjEyRDdFQURGMDA2MjU4MzggLyog
UHJpbnRJbmZvTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UHJpbnRJbmZvTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUVERkQ5ODE2
Mjg3QkQxMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01haW4uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc01haW4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFFREZEOUIxNjI4N0QwQjAwMzlFQ0RBIC8qIFNoYXJlZFdv
cmtlclByb2Nlc3NNYWluTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUxRURGRDlEMTYyODdGMTkwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nlc3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFFREZEOUUxNjI4ODIxMDAwMzlFQ0RB
IC8qIFNoYXJlZFdvcmtlclByb2Nlc3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUxRURGREEwMTYyODgzMDMwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nlc3MubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxRURGREEyMTYyODgzOEMw
MDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFFREZEQTQxNjI4ODQ2NDAwMzlFQ0RBIC8qIGNvbS5hcHBs
ZS5XZWJLaXQuU2hhcmVkV29ya2VyUHJvY2Vzcy5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBj
b20uYXBwbGUuV2ViS2l0LlNoYXJlZFdvcmtlclByb2Nlc3Muc2I7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUxRURGREFCMTYyODg3QjAwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MUVERkRBRDE2Mjg4OTNCMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUxRURGREFGMTYyODg5ODEwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJl
ZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMUVERkRCMTE2MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vz
c01lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTaGFyZWRXb3JrZXJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTFFREZEQjIxNjI4QUQ3MzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclBy
b2Nlc3NNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRX
b3JrZXJQcm9jZXNzTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFF
REZEQjMxNjI4QUQ3MzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRX
b3JrZXJQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMUVERkRCNDE2MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVk
V29ya2VyUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTFFREZEQjkxNjI4QjA0NTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFFREZFMEYxNjI4Q0Y0RTAwMzlF
Q0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxRURGRTExMTYyOENGQjIwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQ
cm9jZXNzTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
aGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUxRURGRTE0MTYyOEREN0EwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyUHJv
Y2Vzc1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFRTUzREMxMUY4
Q0Y5RjAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFRTUzRTYxMUY4Q0ZGQjAwQ0NCRUU0
IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMDM2OTc4MzE1RjRCRTZCMDBDM0E4MEUgLyog
V0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMjEwLDYgKzIyNjUsMTQgQEAKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKKwkJRTEzQThBMjkxNjI4NzlB
QzAwMzkyOTI5IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgK
KwkJCQlFMTNBOEEzMDE2Mjg3OUFDMDAzOTI5MjkgLyogQ29jb2EuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CisJCX07CiAvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAv
KiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCkBAIC0yMjI0LDYgKzIyODcsNyBAQAogCQkJCUJD
M0RFNDY2MTVBOTE3NjMwMDhEMjZGQyAvKiBjb20uYXBwbGUuV2ViS2l0Mi5XZWJQcm9jZXNzU2Vy
dmljZS54cGMgKi8sCiAJCQkJQkNBRTlERTkxNjBDMDk3NDAwQTMzMjE3IC8qIGNvbS5hcHBsZS5X
ZWJLaXQyLldlYlByb2Nlc3NTZXJ2aWNlRm9yV2ViS2l0RGV2ZWxvcG1lbnQueHBjICovLAogCQkJ
CTUxMENDODBFMTYxM0M3OTkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5hcHAgKi8sCisJCQkJ
RTEzQThBMkMxNjI4NzlBQzAwMzkyOTI5IC8qIFNoYXJlZFdvcmtlclByb2Nlc3MuYXBwICovLAog
CQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC0yMjQyLDEyICsyMzA2LDE0IEBACiAJCQkJQkMwMzJENUMxMEY0MzZENTAwNThDMTVBIC8qIFdl
YlByb2Nlc3MgKi8sCiAJCQkJNTEwQ0M3REExNjEzOEUwMTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9j
ZXNzICovLAogCQkJCTFBMEVDNkIwMTI0QkJEMzYwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzICov
LAorCQkJCUUxM0E4QTM1MTYyODc5QUMwMDM5MjkyOSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzICov
LAogCQkJCTMyQzg4REZGMDM3MUMyNDIwMEM5MTc4MyAvKiBPdGhlciBTb3VyY2VzICovLAogCQkJ
CUMwQ0U3MjlEMTI0N0U3MUQwMEJDMEVDNCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJMDg5
QzE2NjVGRTg0MTE1OEMwMkFBQzA3IC8qIFJlc291cmNlcyAqLywKIAkJCQlDMENFNzMzNTEyNDdG
NzBFMDBCQzBFQzQgLyogU2NyaXB0cyAqLywKIAkJCQkxQTRGOTc2OTEwMEU3QjY2MDA2MzdBMTgg
LyogQ29uZmlndXJhdGlvbnMgKi8sCiAJCQkJMDg2N0Q2OUFGRTg0MDI4RkMwMkFBQzA3IC8qIEV4
dGVybmFsIEZyYW1ld29ya3MgYW5kIExpYnJhcmllcyAqLywKKwkJCQlFMTNBOEEyRTE2Mjg3OUFD
MDAzOTI5MjkgLyogRnJhbWV3b3JrcyAqLywKIAkJCQkwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIg
LyogUHJvZHVjdHMgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFdlYktpdDI7CkBAIC0yMjY5LDYgKzIz
MzUsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTEwQ0M4NEExNjEzQzhBQjAwRDAzRUQzIC8q
IE5ldHdvcmtQcm9jZXNzICovLAogCQkJCUJDMTIyRkE1MTMyNzA4NUQwMEY3RUFDMSAvKiBQbHVn
aW5Qcm9jZXNzICovLAorCQkJCUUxRURGRDk3MTYyODdBRUMwMDM5RUNEQSAvKiBTaGFyZWRXb3Jr
ZXJQcm9jZXNzICovLAogCQkJCUJDOEE1MDBFMTE3NjVBRDQwMDc1NzU3MyAvKiBXZWJLaXQyICov
LAogCQkJCUJDOEE1MDBGMTE3NjVBRTMwMDc1NzU3MyAvKiBXZWJQcm9jZXNzICovLAogCQkJCUJD
QUU5REVEMTYwQzA5NzQwMEEzMzIxNyAvKiBXZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVs
b3BtZW50ICovLApAQCAtMjM3Miw2ICsyNDM5LDcgQEAKIAkJCQkxQTRGOTc2QzEwMEU3QjY2MDA2
MzdBMTggLyogRmVhdHVyZURlZmluZXMueGNjb25maWcgKi8sCiAJCQkJNTEwQ0M4NDYxNjEzQzdD
NjAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzLnhjY29uZmlnICovLAogCQkJCUJDMTIyRkEzMTMy
NzA3RjMwMEY3RUFDMSAvKiBQbHVnaW5Qcm9jZXNzLnhjY29uZmlnICovLAorCQkJCUUxM0E4QTRC
MTYyODdBMUIwMDM5MjkyOSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzLnhjY29uZmlnICovLAogCQkJ
CTUxODNCMzkzMTM3OUY4NUMwMEU4NzU0RSAvKiBTaGltLnhjY29uZmlnICovLAogCQkJCTFBNEY5
NzZFMTAwRTdCNjYwMDYzN0ExOCAvKiBWZXJzaW9uLnhjY29uZmlnICovLAogCQkJCUJDQjg2RjRC
MTE2QUFBQ0QwMENFMjBCNyAvKiBXZWJLaXQyLnhjY29uZmlnICovLApAQCAtMjY0Nyw2ICsyNzE1
LDggQEAKIAkJCQlCQzkwQTFEMDEyMkRENTVFMDBDQzhDNTAgLyogV2ViVVJMUmVzcG9uc2UuaCAq
LywKIAkJCQlGNjExM0UyNDEyNkNFMTgyMDA1N0QwQTcgLyogV2ViVXNlckNvbnRlbnRVUkxQYXR0
ZXJuLmggKi8sCiAJCQkJQzAzMzdERDAxMjdBMjk4MDAwOEZGNEY0IC8qIFdlYldoZWVsRXZlbnQu
Y3BwICovLAorCQkJCUUxRURGREFEMTYyODg5M0IwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8sCisJCQkJRTFFREZEQUYxNjI4ODk4MTAwMzlFQ0RB
IC8qIFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovLAogCQkJCTI5
MTIxNzA1MTYxQ0U3MzYwMDU3RDQ1MSAvKiBVc2VyQ29udGVudENvbnRhaW5lci5jcHAgKi8sCiAJ
CQkJMjkxMjE3MDYxNjFDRTczNjAwNTdENDUxIC8qIFVzZXJDb250ZW50Q29udGFpbmVyLmggKi8s
CiAJCQkpOwpAQCAtMzE0Niw2ICszMjE2LDcgQEAKIAkJCQk1MTBDQzdFNzE2MTM4RTcyMDBEMDNF
RDMgLyogTmV0d29yayAqLywKIAkJCQkzMUEyRUM0MDE0ODk5NzM3MDA4MTBENzEgLyogTm90aWZp
Y2F0aW9ucyAqLywKIAkJCQkxQUVGQ0MwNTExRDAxRjM0MDA4MjE5RDMgLyogUGx1Z2lucyAqLywK
KwkJCQlFMUVERkRBQTE2Mjg4NzhFMDAzOUVDREEgLyogU2hhcmVkV29ya2VycyAqLywKIAkJCQkx
QTY0MjU2NzEyREU0MkVDMDBDQUFFMkMgLyogQmFja2luZ1N0b3JlLmNwcCAqLywKIAkJCQkxQTY0
MjU2NjEyREU0MkVDMDBDQUFFMkMgLyogQmFja2luZ1N0b3JlLmggKi8sCiAJCQkJQkMyNjUyMTIx
MTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuY3BwICovLApAQCAtMzkzMCw2ICs0
MDAxLDEwIEBACiAJCQkJMUEwNDNCNUMxMjRENUU5RDAwRkZCRkI1IC8qIFBsdWdpblByb2Nlc3NQ
cm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMUE4RUZBNkUxMjUyQjg0MTAwRjcwNjdGIC8qIFBsdWdp
blByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQThFRkE2RjEyNTJCODQxMDBGNzA2
N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlcy5oICovLAorCQkJCUUxRURGREIxMTYyOEFENzMwMDM5
RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlF
MUVERkRCMjE2MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01lc3NhZ2VzLmgg
Ki8sCisJCQkJRTFFREZEQjMxNjI4QUQ3MzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJRTFFREZEQjQxNjI4QUQ3MzAwMzlFQ0RB
IC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJNTEyRTM1Njgx
MzBCNTdGMDAwQUJEMTlBIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLywKIAkJCQk1MTJFMzU2OTEzMEI1N0YwMDBBQkQxOUEgLyogV2ViQXBwbGljYXRp
b25DYWNoZU1hbmFnZXJNZXNzYWdlcy5oICovLAogCQkJCTUxMkUzNUY2MTMwQjY0MkUwMEFCRDE5
QSAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKQEAgLTQwMjgsNiArNDEwMywzNyBAQAogCQkJcGF0aCA9IEZ1bGxTY3JlZW4vbWFjOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRTEzQThBMkUxNjI4NzlBQzAwMzkyOTI5
IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCUUxM0E4QTJGMTYyODc5QUMwMDM5MjkyOSAvKiBDb2NvYS5mcmFtZXdvcmsgKi8sCisJ
CQkJRTEzQThBMzExNjI4NzlBQzAwMzkyOTI5IC8qIE90aGVyIEZyYW1ld29ya3MgKi8sCisJCQkp
OworCQkJbmFtZSA9IEZyYW1ld29ya3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQlFMTNBOEEzMTE2Mjg3OUFDMDAzOTI5MjkgLyogT3RoZXIgRnJhbWV3b3JrcyAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRTEzQThBMzIxNjI4NzlB
QzAwMzkyOTI5IC8qIEFwcEtpdC5mcmFtZXdvcmsgKi8sCisJCQkJRTEzQThBMzMxNjI4NzlBQzAw
MzkyOTI5IC8qIENvcmVEYXRhLmZyYW1ld29yayAqLywKKwkJCQlFMTNBOEEzNDE2Mjg3OUFDMDAz
OTI5MjkgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8sCisJCQkpOworCQkJbmFtZSA9ICJPdGhl
ciBGcmFtZXdvcmtzIjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUUxM0E4
QTM1MTYyODc5QUMwMDM5MjkyOSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlFMUVERkQ5QTE2Mjg3Q0Y1MDAzOUVD
REEgLyogbWFjICovLAorCQkJCUUxRURGRDk4MTYyODdCRDEwMDM5RUNEQSAvKiBTaGFyZWRXb3Jr
ZXJQcm9jZXNzTWFpbi5oICovLAorCQkJCUUxRURGRDlEMTYyODdGMTkwMDM5RUNEQSAvKiBTaGFy
ZWRXb3JrZXJQcm9jZXNzLmggKi8sCisJCQkJRTFFREZEOUUxNjI4ODIxMDAwMzlFQ0RBIC8qIFNo
YXJlZFdvcmtlclByb2Nlc3MuY3BwICovLAorCQkJCUUxRURGREEwMTYyODgzMDMwMDM5RUNEQSAv
KiBTaGFyZWRXb3JrZXJQcm9jZXNzLm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJCXBhdGggPSBT
aGFyZWRXb3JrZXJQcm9jZXNzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJ
RTE5OTg3NUIxNDJCRjlDRjAwQkIyREU3IC8qIFBERiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCkBAIC00MDM3LDYgKzQxNDMsMzYgQEAKIAkJCW5hbWUgPSBQREY7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlFMUVERkQ5NzE2Mjg3QUVDMDAz
OUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2VzcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJRTEzQThBMzcxNjI4NzlBQzAwMzkyOTI5IC8qIEluZm8ucGxp
c3QgKi8sCisJCQkpOworCQkJbmFtZSA9IFNoYXJlZFdvcmtlclByb2Nlc3M7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OworCQlFMUVERkQ5QTE2Mjg3Q0Y1MDAzOUVDREEgLyogbWFj
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlFMUVERkQ5
QjE2Mjg3RDBCMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW0gKi8sCisJ
CQkJRTFFREZEQTIxNjI4ODM4QzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWMubW0g
Ki8sCisJCQkJRTFFREZEQTQxNjI4ODQ2NDAwMzlFQ0RBIC8qIGNvbS5hcHBsZS5XZWJLaXQuU2hh
cmVkV29ya2VyUHJvY2Vzcy5zYiAqLywKKwkJCSk7CisJCQlwYXRoID0gbWFjOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJRTFFREZEQUExNjI4ODc4RTAwMzlFQ0RBIC8qIFNo
YXJlZFdvcmtlcnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCUUxRURGRTBGMTYyOENGNEUwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdl
ci5oICovLAorCQkJCUUxRURGRTExMTYyOENGQjIwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9j
ZXNzTWFuYWdlci5jcHAgKi8sCisJCQkJRTFFREZEQUIxNjI4ODdCMDAwMzlFQ0RBIC8qIFNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlFMUVERkRCOTE2MjhCMDQ1
MDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmggKi8sCisJCQkJRTFFREZFMTQx
NjI4REQ3QTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5jcHAgKi8sCisJCQkp
OworCQkJcGF0aCA9IFNoYXJlZFdvcmtlcnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OwogCQlGNjM4OTU1QTEzM0JGNTdEMDA4OTQxRDUgLyogbWFjICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTQ1MTgsNiArNDY1NCwxMCBAQAogCQkJCTFB
M0VFRDBGMTYxQTUzNTQwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBM0VFRDEyMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTI5RDU1REYyMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3Jv
dXBQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMUVERkRBRTE2Mjg4OTNCMDAz
OUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTFFREZEQjYxNjI4QUQ3MzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nl
c3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTFFREZEQjgxNjI4QUQ3MzAwMzlFQ0RB
IC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFMUVERkRCQTE2MjhCMDQ1MDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzAxN0QwNzE2MjYwRkY0MDA3MDU0RjUgLyogV0tET01Eb2N1
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMTdEMDkxNjI2MEZGNDAwNzA1NEY1IC8qIFdL
RE9NRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMTdEMEIxNjI2MEZGNDAwNzA1NEY1
IC8qIFdLRE9NSW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywKQEAgLTQ1MzQsNiArNDY3NCw3IEBA
CiAJCQkJNTE3OTU1NkUxNjI4NzdCMzAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxNzk1NTcxMTYyODc3RDIwMEZBNDNCNiAvKiBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE2MzE5OTUxNjI4
OUE2MzAwRTIyRjAwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAor
CQkJCUUxRURGRTEzMTYyOENGQkQwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC00NjkyLDYgKzQ4MzMsMjQgQEAKIAkJCXByb2R1Y3RSZWZl
cmVuY2UgPSBCQ0RFMDk0MjEzMjcyNDk2MDAxMjU5RkIgLyogUGx1Z2luUHJvY2Vzcy5hcHAgKi87
CiAJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmFwcGxpY2F0aW9uIjsK
IAkJfTsKKwkJRTEzQThBMkIxNjI4NzlBQzAwMzkyOTI5IC8qIFNoYXJlZFdvcmtlclByb2Nlc3Mg
Ki8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25M
aXN0ID0gRTEzQThBNEExNjI4NzlBQzAwMzkyOTI5IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJTaGFyZWRXb3JrZXJQcm9jZXNzIiAqLzsKKwkJCWJ1aWxk
UGhhc2VzID0gKAorCQkJCUUxM0E4QTI4MTYyODc5QUMwMDM5MjkyOSAvKiBTb3VyY2VzICovLAor
CQkJCUUxM0E4QTI5MTYyODc5QUMwMDM5MjkyOSAvKiBGcmFtZXdvcmtzICovLAorCQkJCUUxM0E4
QTJBMTYyODc5QUMwMDM5MjkyOSAvKiBSZXNvdXJjZXMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxl
cyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJRTEzQThBNEYxNjI4N0E2NjAw
MzkyOTI5IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9IFNoYXJl
ZFdvcmtlclByb2Nlc3M7CisJCQlwcm9kdWN0TmFtZSA9IFNoYXJlZFdvcmtlclByb2Nlc3M7CisJ
CQlwcm9kdWN0UmVmZXJlbmNlID0gRTEzQThBMkMxNjI4NzlBQzAwMzkyOTI5IC8qIFNoYXJlZFdv
cmtlclByb2Nlc3MuYXBwICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3Qt
dHlwZS5hcHBsaWNhdGlvbiI7CisJCX07CiAvKiBFbmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCkBAIC00NzIxLDYgKzQ4ODAsNyBA
QAogCQkJCTFBNTBEQjFEMTEwQTNCREMwMDBEM0ZFNSAvKiBXZWJQcm9jZXNzICovLAogCQkJCUJD
REUwOTMzMTMyNzI0OTYwMDEyNTlGQiAvKiBQbHVnaW5Qcm9jZXNzICovLAogCQkJCTUxMENDODBE
MTYxM0M3OTkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2VzcyAqLywKKwkJCQlFMTNBOEEyQjE2Mjg3
OUFDMDAzOTI5MjkgLyogU2hhcmVkV29ya2VyUHJvY2VzcyAqLywKIAkJCQlDMENFNzI4NTEyNDdF
NjY4MDBCQzBFQzQgLyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTFBQzI1RkFGMTJBNDhFQTcw
MEJEMjY3MSAvKiBQbHVnaW5Qcm9jZXNzU2hpbSAqLywKIAkJCQk1MTAwMzFFQTEzNzlDQUNCMDBD
OERGRTQgLyogV2ViUHJvY2Vzc1NoaW0gKi8sCkBAIC00NzgxLDYgKzQ5NDEsMTMgQEAKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKKwkJRTEz
QThBMkExNjI4NzlBQzAwMzkyOTI5IC8qIFJlc291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFJl
c291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJ
ZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CisJCX07CiAvKiBFbmQgUEJYUmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC01NDI2LDYgKzU1
OTMsMTIgQEAKIAkJCQlCQzk4OUQ4MTE2MUE3RTVEMDAwRDQ2RDMgLyogV0tXZWJQcm9jZXNzUGx1
Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzRUVEMEUxNjFBNTM1NDAwQUVCNEY1IC8qIE1l
c3NhZ2VSZWNlaXZlck1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOUQ1NURGMTE2MUJGOUYx
MDAzMUEyRTMgLyogV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRTFFREZEQTcxNjI4ODY5NjAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nl
c3NNYWluTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTFFREZEQTgxNjI4ODY5OTAwMzlFQ0RB
IC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlFMUVERkRB
OTE2Mjg4NkFDMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlFMUVERkRCMDE2Mjg4OTgyMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMUVERkRCNTE2MjhBRDcz
MDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlFMUVERkRCNzE2MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJv
Y2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMDE3RDA4
MTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTURvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkMwMTdEMEExNjI2MEZGNDAwNzA1NEY1IC8qIFdLRE9NRWxlbWVudC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUJDMDE3RDBDMTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTUludGVybmFscy5tbSBpbiBT
b3VyY2VzICovLApAQCAtNTQ0Myw2ICs1NjE2LDggQEAKIAkJCQk1MTc5NTU3MDE2Mjg3N0NGMDBG
QTQzQjYgLyogTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTE2MzE5OTIxNjI4OTgwQTAwRTIyRjAwIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTYzMTk5NDE2Mjg5QTYwMDBFMjJGMDAgLyogTmV0
d29ya1Byb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTFFREZF
MTIxNjI4Q0ZCMjAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUUxRURGRTE1MTYyOEREN0EwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC01NDcwLDYgKzU2NDUsMTQgQEAKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKKwkJ
RTEzQThBMjgxNjI4NzlBQzAwMzkyOTI5IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhT
b3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlm
aWxlcyA9ICgKKwkJCQlFMUVERkRBNjE2Mjg4NjhFMDAzOUVDREEgLyogTWFpbk1hY1Byb2Nlc3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCX07CiAvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KQEAgLTU1MjgsNiAr
NTcxMSwxNiBAQAogCQkJdGFyZ2V0ID0gQkNERTA5MzMxMzI3MjQ5NjAwMTI1OUZCIC8qIFBsdWdp
blByb2Nlc3MgKi87CiAJCQl0YXJnZXRQcm94eSA9IEJDREUwQUMwMTMyNzI3MTIwMDEyNTlGQiAv
KiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CiAJCX07CisJCUUxM0E4QTREMTYyODdBNUIwMDM5
MjkyOSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVw
ZW5kZW5jeTsKKwkJCXRhcmdldCA9IEUxM0E4QTJCMTYyODc5QUMwMDM5MjkyOSAvKiBTaGFyZWRX
b3JrZXJQcm9jZXNzICovOworCQkJdGFyZ2V0UHJveHkgPSBFMTNBOEE0QzE2Mjg3QTVCMDAzOTI5
MjkgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQlFMTNBOEE0RjE2Mjg3QTY2
MDAzOTI5MjkgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSA4REMyRUY0RjA0ODZBNjk0MDA5OEIyMTYgLyogV2Vi
S2l0MiAqLzsKKwkJCXRhcmdldFByb3h5ID0gRTEzQThBNEUxNjI4N0E2NjAwMzkyOTI5IC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKIC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYVmFyaWFudEdyb3VwIHNlY3Rpb24gKi8KQEAgLTU4
MTUsNiArNjAwOCwyNyBAQAogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OworCQlF
MTNBOEE0NzE2Mjg3OUFDMDAzOTI5MjkgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gRTEzQThBNEIx
NjI4N0ExQjAwMzkyOTI5IC8qIFNoYXJlZFdvcmtlclByb2Nlc3MueGNjb25maWcgKi87CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJRTEzQThB
NDgxNjI4NzlBQzAwMzkyOTI5IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gRTEzQThBNEIxNjI4
N0ExQjAwMzkyOTI5IC8qIFNoYXJlZFdvcmtlclByb2Nlc3MueGNjb25maWcgKi87CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQlFMTNBOEE0
OTE2Mjg3OUFDMDAzOTI5MjkgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBFMTNBOEE0QjE2
Mjg3QTFCMDAzOTI5MjkgLyogU2hhcmVkV29ya2VyUHJvY2Vzcy54Y2NvbmZpZyAqLzsKKwkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAvKiBF
bmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBYQ0NvbmZpZ3Vy
YXRpb25MaXN0IHNlY3Rpb24gKi8KQEAgLTU5MjgsNiArNjE0MiwxNiBAQAogCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0g
UHJvZHVjdGlvbjsKIAkJfTsKKwkJRTEzQThBNEExNjI4NzlBQzAwMzkyOTI5IC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJTaGFyZWRXb3JrZXJQcm9jZXNz
IiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3Vy
YXRpb25zID0gKAorCQkJCUUxM0E4QTQ3MTYyODc5QUMwMDM5MjkyOSAvKiBEZWJ1ZyAqLywKKwkJ
CQlFMTNBOEE0ODE2Mjg3OUFDMDAzOTI5MjkgLyogUmVsZWFzZSAqLywKKwkJCQlFMTNBOEE0OTE2
Mjg3OUFDMDAzOTI5MjkgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmln
dXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9k
dWN0aW9uOworCQl9OwogLyogRW5kIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwogCX07
CiAJcm9vdE9iamVjdCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVj
dCAqLzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViS2l0TWFpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJLaXRNYWluLmNwcAkocmV2
aXNpb24gMTMxMjYyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJLaXRNYWluLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiUGx1Z2luUHJv
Y2Vzc01haW4uaCIKICNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKKyNpbmNsdWRlICJTaGFy
ZWRXb3JrZXJQcm9jZXNzTWFpbi5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNYWluLmgiCiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC02NCw2ICs2NSw4IEBAIHN0YXRpYyBpbnQg
V2ViS2l0TWFpbihjb25zdCBDb21tYW5kTGluZSYKICNlbHNlCiAgICAgICAgICAgICBicmVhazsK
ICNlbmRpZgorICAgICAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6U2hhcmVkV29ya2VyUHJvY2Vz
czoKKyAgICAgICAgICAgIHJldHVybiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbihjb21tYW5kTGlu
ZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsK
</data>
<flag name="commit-queue"
          id="181582"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>